[[2014a/Member]] #contents *メンバー紹介 [#g4bf05a5] ・sakar ・yokkun ・sugaken *課題 [#vd6a3f3a] 図のようなコースを各自で作成した上で、次のような動作をするロボットを作成せよ。 (下の図において、黒い線の太さは20mmで、線の中央までの距離がcm表示されている)。 1.スタート地点から出発し、黒い線にそって動く。 2.一つ目の十字の交差点と二つめの十字の交差点の間に置かれたピンポン玉をつかむ。 3.さらに黒線に沿って動いてゴール地点を目指す。 4.ゴールに向けてピンポン玉をシュートする。 ただしT字路では、直進、右折、左折を正しく判断させること。また二人一組で同じロボットを使用し、互いにスタート地点とゴール地点を入れ替えること。ロボット本体は共通のものを使うとする。 さらに以下のような動作に挑戦することが望ましい。 •ゴールエリア外からピンポン玉をシュートする。 •曲線部中央の障害物に接触しないようにすること。 http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2012b%2FMember%2Ftada0%2FMission1&openfile=2012b-mission1.png *プログラム [#rae48495] このプログラムは、光センサーでトレースさせ、大体のシュートまでの時間を計り、その時間になったらシュートの動きをするというものである。ただ、シュートまでの時間がかなり長く、なかなか合わせることもできなかったし、確実性もなかった。 **定義 [#sb96a97b] #define BLACK 40 #define migi OnFwd(OUT_A);OnRev(OUT_C); //右折 #define hidari OnFwd(OUT_C);OnRev(OUT_A); //左折 #define miginimagare 40 //右に曲がる #define syuutoda- 6000 //スタートからシュートするまでの場所に行く時間 **ライントレース [#f34ad297] task main() { if(SENSOR_2 < BLACK) { OnFwd(OUT_AC); } //黒線上なら直進 else if (SENSOR_2 > BLACK) { migi; //白になったら黒線を探す ClearTimer(1); while(FastTimer(1) <= miginimagare){ //ある程度右に回って黒がなかったら停止 if (SENSOR_2 < BLACK){ Wait(15); Off(OUT_AC); } //ある程度右に回ってなかったら止まる } hidari; until (SENSOR_2 < BLACK); //右に回って見つからなかったら左回りして黒線を探す Float(OUT_AC); } **シュートのプログラム [#k0f5c882] ClearTimer(1); while (FastTimer(1) <=syuutoda-){ //シュートまでの時間60秒を計り時間になるとシュート OnFwd(OUT_AC); //シュートだーーーーーーーーー Wait(200); Off(OUT_AC);} **トレース [#vca4d08d] http://yakushi.shinshu-u.ac.jp/robotics-jr/image/line-trace-basic.png 光センサを1個使ってライントレースする主な方法としては 次の2つがある。 1. 基本的に光センサが黒線の上を動くようにする。 光センサが白い部分にさしかかったら左または右にカーブさせる。 2. 基本的に光センサが黒線と白い部分の境界上を動くようにする。 光センサが白い部分にさしかかったら黒線側へ、 黒い部分にさしかかったら白い方へは向かうように、 カーブさせる。 今回は1の方法でライントレースさせてみた。 黒線上を直進させることで、交差点を通過することができた。カーブや直角カーブは光センサーが黒線からはみ出たら右に黒線を探し、少し探してなかったら左に曲がり探しに行くプログラムにした。 引用 http://yakushi.shinshu-u.ac.jp/robotics-jr/robotics-jr.html **シュートーーーーーーーーー [#tf552161] シュートはただ単純に前に進み、押し出すようにしてシュートする。単純だが案外シンプルな方がうまくいった。 **交差点 [#f237234a] 交差点は直線を進むようにさせた。交差点はトレースだけでやると左や右に曲がってしまうので、このようにした。今回の課題で一番苦労したのはここである。 *本体 [#cd38a915] &ref(2014a/Member/yokkun/Mission1/IMG_2598.JPG,10%); **ドライブベース [#wc03c00d] このドライブベースは1番初めの授業で作ったドライブベースをそのまま利用した。最初はタイヤをキャタピラーにしたり2個にしたりといろいろ試してみたのだが、キャタピラーだと小回りがきかないし、タイヤの数を変えると、安定しなかったので1番安定してスムーズに動くこのドライブベースを使うことにした。 **センサー [#dd149b9b] 黒に反応する光センサーを用いている。最初はドライブベースの下に光センサーをつけていたのだが,ここだとアームの向きがずれ、うまくボールをいれることができなかったので光センサーをアームのすぐそばに近づけてみた。 **アーム [#g0d28a55] あへてシンプルな構造にしてアームの部分にボールが入りそのまま押して運ぶようにした。上からモーターによってリングを下して運ぶ案もあったが、モーターがうまく回らず、ロボットのパーツが取れてしまうため、このようにした。ただ、これだと確実性がなく、カーブの時などにボールが飛び出すという欠点があった。だから、アームの位置をピン球の重心より少し下にしてはこばせた。これにより少しはこの問題を解消することができた。 *反省点 [#r92f321b] こうしてプログラムとロボットを作りいざ走らせてみるとトレースはするのだが、決まった場所で曲がり切れない。交差点を通過できないという問題が発生した。ドライブベースの横幅が広すぎ,きついカーブは曲がり切れなかった。また、大きい歯車をモーターのところに使ったため車にスピ-ドがつきすぎてうまくコントロールできなかったことも原因として考えられる。小さいものをモーターにつけて組めばよかったかなと思う。ここから歯車の大きさの重要性を知った。 プログラムについては、タイマーを長い時間で使ってしまったことが失敗した原因だと思う。自分がこの時間だ!と思ってプログラムを打ち込んで成功しても、本体の電池の残量、地面の摩擦などの細かい要因により大きく位置がずれてしまい確実に成功させることができなかった。タイマーは5秒程度でないと正確性が欠けるので次回はここを気をつけようと思う。 ロボット本体についてはアームのモーターと歯車が合わずうまくまわらなかった。モーターが固定できるような工夫をすべきだったとおもう。縦の動きに弱いので、ブロックで固定したり、穴のある ブロックに棒をつけてみるべきだった。シュートするときも、ただロボットが下がり前に出てくるだ けだったのでボールが転がる場所が荒れてしまいうまくコントロールできなかった。そして最大の反 省は時間を作れず、焦りながら作ってしまったことだ。次はしっかり余裕をもって取り組んでいきたい。 *感想 [#dbf2211f] これをつくるのにかなりの時間を要しかなり大変だったが、協力してできたので良かった。タイマーをなかなか合わせることができず、交差点もうまく進めることができなかったので完璧に完成することができなかった。次回のロボコンは今回の反省を生かし、完成できるようにがんばりたい。