#contents
*ロボコンの説明 [#pf7397c5]
[[2006a/ロボコン]]に乗ってます!
*プログラム [#k803efe2]
制作者 ito
ロボットを二台使用する事にして、缶を取ってくるロボット(α)と缶を受け取りゴールするロボット(β)を作りました。
**試作1(タッチセンサーとタイマーを使用) [#c8707704]
***(α)号 [#fad48422]
 #define  turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define  turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define  go  OnFwd(OUT_A+OUT_C);
 #define  back OnRev(OUT_A+OUT_C);
 #define  stop_turn Off(OUT_A+OUT_C);
 
 task main ()
 {
  SetSensor(SENSOR_1,SENSOR_TOUCH);
  
  ClearTimer(0); 
  
  go;
  until (SENSOR_1==1)
  back;
  Wait(FastTimer(0)/2);
  
  turn_right;
  Wait(120);
  
  ClearTimer(0);
  
  go;
  until (SENSOR_1==1)
  back;
  Wait(FastTimer(0)/4);
  
  turn_right;
  Wait(120);
  go;
  until(SENSOR_1==1);
  
  back;
  Wait(50);
  turn_right;
  Wait(250);
  stop_turn;
  Wait(30);
  
  back;
  Wait(50);
  OnRev(OUT_B);
  Wait(17);
  
  ClearTimer(0);
  
  go;
  until(SENSOR_1==1);
  back;
  Wait(FastTimer(0)/2);
  
  turn_left;
  Wait(120);
  
  ClearTimer(0);
  
  go;
  until(SENSOR_1==1);
  back;
  Wait(FastTimer(0)/4);
  
  turn_right;
  Wait(250);
  back;
  Wait(30);
  
  Off(OUT_A+OUT_C);
  OnFwd(OUT_B);
  Wait(17);
  back;
  Wait(30);
  Off(OUT_A+OUT_C);
  }

***(β)号 [#r7644b5c]
 #define  turn_right OnFwd(OUT_A);OnRev(OUT_C);
 #define  turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define  go  OnFwd(OUT_A+OUT_C);
 #define  back OnRev(OUT_A+OUT_C);
 #define  stop_turn Off(OUT_A+OUT_C);
 
 task main ()
 {
  SetSensor(SENSOR_1,SENSOR_TOUCH);
  
  repeat(2){
  until(SENSOR_1==1);
  back;
  Wait(50);
  turn_right;
  Wait(250);
  stop_turn;
  Wait(30);
  back;
  Wait(50);
  OnFwd(OUT_B);
  Wait(17);
  
  ClearTimer(0);
  
  go;
  until (SENSOR_1==1);
  back;
  Wait(FastTimer(0)/2);
  
  turn_left;
  Wait(120);
  
  ClearTimer(0);
  
  go;
  until (SENSOR_1==1);
  back;
  Wait(FastTimer(0)/4);
  
  turn_right;
  Wait(120);
  Off(OUT_A+OUT_C);
  Wait(30);
  OnRev(OUT_B);
  Wait(17);
  
  back;
  Wait(70);
  Off(OUT_A+OUT_C);
  
  ClearTimer(0);
  
  go;
  until(SENSOR_1==1);
  back
  Wait(FastTimer(0)/2);
  
  turn_right;
  Wait(120);
  
  ClearTimer(0);
  
  go;
  until (SENSOR_1==1)
  back;
  Wait(FastTimer(0)/4);
  
  turn_right;
  Wait(120);
  go;
  Wait(90);
  }
 }

***試作1のプログラムの問題点 [#a1a5e90c]
-真っすぐに進む保障がない
-障害物に当たった時の解決能力が皆無


上のプログラムは試作なのでこれから改良していきます!!
**完成型 (光センサーを使用) [#r36ef13c]
制作者 takumi
***α号 [#g775a526]
[[2006a/B4/プログラムα]]
***β号 [#p6fed1b7]
[[2006a/B4/プログラムβ]]
*苦労した点 [#s85896e6]
苦労した点は、なんといってもプログラムである。~
最初は光りセンサーなしでやろうとしたが、スタート位置や缶の重さなどにより時間調整が上手くいかず断念!~
仕方なく光りセンサーを投入したところ意外とジャストミートし、即採用決定!~
それから、数々の苦難を乗り越えてついに完成~
…と思いきや、開始一時間前にプログラムに異常が発生!?~
もうだめかと思っていたが仲間の助言によりギリギリセーフで完成!!~
なんとか本番を迎えることができたのである。
*工夫した点 [#v60a4e3d]
工夫した点はまずロボットの軽量化である。~
他のチームと比べ我々はシンプルを追求した。~
特に、アーム一本で勝負に出たのは正直不安であったが本番では大活躍してくれた。~
タッチセンサーの方もアームを邪魔しないよう設置されこちらも申し分なし!~
次にプログラムの方は、マクロを最大限に活用した。~
例えば、ライントレースのプログラムや回転プログラムなどを設定しかなりの省略化に成功し、~
簡単に修正可能になったりミスを早期発見できるようになった。
*ロボット [#zeeab6b9]
今回のロボットはシンプルかつ軽量というコンセプトで開発しました。~
ロボットはできるだけシンプルにしたかったので下の土台は授業の一番最初で作ったものをそのまま使いました。今回大変だったのは缶をいかにして掴むかということでした。これを考えてつくるのにすごく時間がかかりました。ほかの班はみんな掴む部分に歯車を使っていたが僕らの班は歯車を使うことなくモーターに直結しました。~
そのほかにもロボットどうしの缶の受け渡しをどうするかというのも課題でした。これは缶を受け取る側のロボットにタッチセンサーを付け、それにあたればすぐに缶を掴むようにしました。以外にも缶を受け取るより渡すほうの正確さにかかっていることがわかりました。~
またゴールの段差をどのようにクリアするかですが、これは適当に何回も実験している間に成功しました。~
その結果として缶を入れることに成功!~
成功した点は、複雑な装置をつけるのではなく、~
今までの授業でやってきたことを参考にして作ったのが成功へとつながったと思われる。
*感想 [#d8de491b]
-始めは何を作ったらよいのか全く分からなかった。~
しかし、缶をゴールに持っていくおおまかなやり方を考えたら少しずつロボの形が出来てきた。~
缶をどうやってもう一方のロボに転がすかなどを考えるのには苦労した。~
それでも、うちの班は缶をゴールする事が出来たので良かったと思う by oga
-今回は参考にするプログラムが無く、どうしたらよいか分からなかったが試行錯誤していくうちになんとか形になり、完成に至った。~
マシンはシンプルで機体の誤作動を減らし、プログラムは微調整により正確に動くようになった。~
その結果、見事缶を入れることができたのだ。~
プログラム担当の私としてはうれしい限りである。by takumi
-やはり缶をどのように取るかが今回の課題であり、また結果にもつながったのではないかと思いました。
これを考えるのがすごく大変でした。1台目ができあがれば2台目はすぐにできると思っていましたが改良を大分したので結局時間は同じくらいかかりました。
でも成功したのでよかったです。 by kaz
-ロボコンの内容が発表されたとき正直勘弁してちょーだい、んもうおうちに帰りたいって感じだった。でも気づいたときには「いけるのかも」って思うようになってた。そして本番、、どの班も予想外に手こずっていた。そして自分たちの番がきた。できちゃった。あのときの喜びは忘れらない。この班で本当によかった! by mune
*コメントお願いします [#b455e8b1]
#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS