2008b/MemberOnly/進行状況A

目次

ロボコン 〜男たちの戦い〜(BGM 地上の星)

製作者:たきさ 零崎 Y田

今回我々が挑むロボコンの課題はhttp://yakushi.shinshu-u.ac.jp/robotics/?2008b%2F%A5%ED%A5%DC%A5%B3%A5%F3 である。期末テストで単位が危ないなか私たち三人の戦いは始まった。

空き缶を掴むコンセプト

まず考えられる空き缶の取り方は

  • 一つずつ掴んでもってかえる
  • 一気に四つもってかえる の二つが考えられます。

前者の利点は今回のロボコンでは時間無制限であるので何回でも取り直しが可能なのと、ロボットが大きくならないのでステージ内を細かく動くことができること、また複数個展開できることが考えられます。しかし、ロボット同士の連携やステージが複雑なことを考えるとデメリットの方が大きいと思われたので我々は後者の四つ 一気に持っていくことロボットを作る方針で制作を進めていきました。

ロボット作ります

  • ドライブベース担当零崎

ドライブベース担当しました、零崎です。車体をなるべく低くして、かつタイヤを大きく間をとった形にしギアを大きくかませ移動するスピードをわざと押さえました。これにより空き缶へのアプローチの際の誤差を減らそうという試みでした。

  • アーム担当Y田

アーム担当はY田。四つ一気に持っていけるよう安定性+高さの要求を見事にクリア。本人曰くエ○ンゲリオン初号機の足をイメージだそうです。接地面積をふやし摩擦をあげ、一番下と一番上にはタイヤを装着し少ないパーツでアームを完成させることができました。

  • アーム上昇機構+我がチームの生ける神 たきさ

この男がいなければロボコンとか絶対むりだったであろう、いつもは雲の上にいる(はず)の絶対神。上昇機構の歯車の噛み合わせに奮闘を続けた。

マシン紹介

ma.jpg こちらがマシン全体図。かなりでかくてそして重い。今大会最重量だったらしく他を圧倒するほど。ただしでかすぎてコースにつまる・・・

yoko.jpg こちらはドライブベース正面画像。これがマシン全体の重量を支えることになるので一本の長いブロックを多用した

aa.jpg こちらはドライブベースの横からの画像。ギアを大きくしてゆっくり動きかつ重い全体を支えながら走れる用にがっちりした造りに

armA.jpg こちらがアーム。ごちゃごちゃした見た目とは裏腹にかなりの精度を誇ります。

ita.jpg こちらはRCXの連携のためのひと工夫。反射板を設置することで向かい合っていなくても通信が可能に。これにより様々な場所にRCXを設置可能となる

kaiten.jpg こちらは回転センサー。ドライブベースの右後輪に取り付けられる。これがわがチームのプログラムの最大のかなめとなる

モータ・センサに対応する端子

モータ、センサについては以下の端子に接続してあります。

RCX(1)

  • 出力側
    A端子 → モータ:タイヤ(正回転:前進,逆回転:後進)
    B端子 → 使用せず
    C端子 → モータ:タイヤ(正回転:前進,逆回転:後進)
  • 入力側
    1端子 → 回転センサ(前進:値=正、後進:値=負)
    2端子 → 光センサ(左){未使用}
    3端子 → 光センサ(右){未使用}

RCX(2)

  • 出力側
    A端子 → モータ:アーム(正回転:開く,逆回転:閉じる)
    B端子 → 使用せず
    C端子 → モータ:上下機構{未使用}
  • 入力側
    1端子 → アームのタッチセンサ{未使用}
    2端子 → 使用せず
    3端子 → 使用せず

作戦ルート

これが我々のマシンの作戦ルートです(途中微調整をして若干異なりますが)。時間がなかったため、光センサなどを使用せず、 タイヤと直結した回転センサを駆使して缶、そしてゴールまで行こうと 思いましたが、その結果、初期位置が最も重要となりました。

赤線:往路 青線:復路

ロボコン_ルート.jpg|

プログラム

RCX(1)のプログラム

void move_fwd(int t){    //前進する関数:回転センサの値が入力された値
               //(t)以上になったら止まる
	ClearSensor(SENSOR_1);
	OnFwd(OUT_A + OUT_C);
	until(SENSOR_1 >= t);
	Off(OUT_A + OUT_C);
}

void move_rev(int t){    //後進する関数:回転センサの値が入力された値
               //の負の値(-t)以下になったら止まる
	ClearSensor(SENSOR_1);
	OnRev(OUT_A + OUT_C);
	until(SENSOR_1 <= -t);
	Off(OUT_A + OUT_C);
}

void move_rig(int t){    //右折する関数:回転センサの値が入力された値
               //の負の値(-t)以下になったら止まる
 	ClearSensor(SENSOR_1);
	OnFwd(OUT_A);
	OnRev(OUT_C);
	until(SENSOR_1 <= -t);
	Off(OUT_A + OUT_C);
}
 
void move_lef(int t){    //左折する関数回転センサの値が入力された値
               //(t)以上になったら止まる
	ClearSensor(SENSOR_1);
	OnFwd(OUT_C);
	OnRev(OUT_A);
	until(SENSOR_1 >= t);
	Off(OUT_A + OUT_C);
}
	
task main(){
	SetSensor(SENSOR_1,SENSOR_ROTATION);  
	ClearMessage();

	move_fwd(24);  //前進
	
	move_lef(13);  //左折
	
	move_fwd(30);  //前進
	
	move_rig(20);  //右折
	
	move_fwd(36);  //前進
	
	move_lef(8);  //左折
	
	move_fwd(25);  //前進
	
	move_lef(20);  //左折
	
	move_fwd(18);  //前進
	
	move_rig(7);  //右折
	
	SendMessage(1);  //RCX(2)にメッセージ(値:1)を送る
	until(Message() == 3); //RCX(2)からメッセージ(値:3)を送られるまで待機
	ClearMessage();
	
	move_fwd(10);  //前進
	
	SendMessage(5);  //RCX(2)にメッセージ(値:5)を送る
	until(Message() == 7); //RCX(2)からメッセージ(値:7)を送られるまで待機
	ClearMessage();
	
	move_rev(12);  //後進

	move_lef(6);  //左折
	
	move_rev(15);  //後進
	
	move_rig(6);  //右折
	
	move_rev(5);  //後進
	
	move_rig(7);  //右折
	
	move_rev(4);  //後進
	
	move_rig(7);  //右折
	
	move_rev(25);  //後進
	
	move_rig(9);  //右折
	
	move_rev(33);  //後進
	
	move_lef(20);  //左折
	
	move_rev(15);  //後進
	
	move_lef(20);  //左折
	
	move_fwd(30);  //前進
	
 	SendMessage(9);  //RCX(2)にメッセージ(値:9)を送る
	
}

RCX(2)のプログラム

task main(){
	ClearMessage(); 

	until (Message() == 1); //RCX(1)からメッセージ(値:1)を送られるまで待機
	ClearMessage();
	
	OnFwd(OUT_A);  //アームを開く
	Wait(90);
	Off(OUT_A);
	
	SendMessage(3);  //RCX(1)にメッセージ(値:3)を送る
	ClearMessage();
	until(Message() == 5); //RCX(1)からメッセージ(値:5)を送られるまで待機
	ClearMessage();
	
	OnRev(OUT_A);  //アームを閉じる
	Wait(85);
	Off(OUT_A);
	
	SendMessage(7);  //RCX(1)にメッセージ(値:7)を送る
	until(Message() == 9); //RCX(1)からメッセージ(値:9)を送られるまで待機
	ClearMessage();
	
	OnFwd(OUT_A);  //アームを開く
	Wait(90);
	Off(OUT_A);
}

ロボコン中の様子

缶が少しかぶりますが・・・ご了承ください

ロボコン1.jpg 途中まで順調に走行するものの

ロボコン2.jpg ここで引っかかってしまう!

ロボコン3.jpg しかしここで壁を登りはじめ

ロボコン4.jpg なんと立った!

ロボコン5.jpg この後マイペース(?)にもアームを開閉し

ロボコン6.jpg ウィリーを続け

ロボコン7.jpg ついに限界。着地

この間8秒もウィリーをした!!

会場は大いに盛り上がりましたが、結局缶には触れられず・・・

しかしこのパフォーマンスのおかげで

点数は10.4でなんと5位!!!!!

ロボコンが終って

  • 反省点としてはまずマシンに無駄なパーツがありすぎたこと。プログラムと一緒でロボットも最初作り上げたあとに余分なパーツを削っていった方がより良いロボットになったはず。そこまで頭が回らなかったため最後の方はパーツが足りず微調整に苦しんでしまいました。よりよいロボットに対する執着心がたりなかった。
  • 電力によってマシンのパフォーマンスが違ってくることがかなり影響を及ぼしました。特に私たちのマシンは重いためこれがかなり響いた様子。今までの課題ではこのような大型を作っていなかった為に発生したミスかと思われる。 之の対策としては1タイムに頼らずにセンサー類で決定してしまう。 2 ロボットを計量化して誤差を減らす 3電力は常にMAX付近を保つ 等が考えられました。

このような反省点が上がりました。これから先に役立てていきたいと思います!

チームからの一言

  • 零崎です!ロボットって思っていたよりもかなり幼稚できっちり人間がプログラムをしなければいけないんだなぁ、と身をもって実感しました。長いようで早かったこの授業、学ぶ所がおおく、何よりも楽しかったです。チームの皆、ふがいない俺をサポートしてくれて本当にありがとう! 
  • たきさです。アームの上下機構の制作に十数時間かけて色々、それはもう色々やりましたが、結局無駄にでかいだけの役立たず以下に終わってしまいました。正直これだけの時間を他のことに費やせば、それこそフィールドの壁を乗り越える反則ギリギリのことまでできそうでした。そのほかにも色々ありましたが、楽しくマシン製作できました。最後に、講義の先生やTAの方々、そして一番迷惑をかけたチームのみんなに感謝して終わりにしたいと思います。ありがとうございました。
  • Y田です。デザインを考えすぎて、無駄に大きなアームを製作してしまい、たきさ師匠には多大なるご迷惑をおかけしたことをこの場を借りて謝罪します。。忙しくて、みんなには色々と迷惑をかけてしまいましたが、本当に楽しい授業でした。 ありがとうございました!

コメントしてくれなくたって、さびしくなんてないんだからね!!

  • ロボットを引っかからないようにするには、プログラムのどの部分を改良すればよかったでしょうか? そのあたりが明解になるようにプログラム内のコメントを工夫しましょう。 -- 松本 2009-02-13 (金) 11:03:09
  • 書くべきことは書けています。ロボットが引っかからないようにするにはロボットかプログラムのどちらかを改良するかですが、案だけでも考えてみるとよいと思います。 -- FI? 2009-02-14 (土) 03:41:48
  • ロボの設計をどう見直せばよいか、考察があるとなお良いです。 -- なかむら? 2009-02-16 (月) 06:26:10


添付ファイル: fileyoko.jpg 256件 [詳細] fileita.jpg 256件 [詳細] filema.jpg 271件 [詳細] filekaiten.jpg 248件 [詳細] filearmA.jpg 254件 [詳細] fileaa.jpg 254件 [詳細] fileロボコン_ルート.jpg 256件 [詳細] fileロボコン7.jpg 244件 [詳細] fileロボコン6.jpg 247件 [詳細] fileロボコン5.jpg 265件 [詳細] fileロボコン4.jpg 251件 [詳細] fileロボコン3.jpg 248件 [詳細] fileロボコン2.jpg 234件 [詳細] fileロボコン1.jpg 245件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-16 (月) 06:26:10 (3836d)