◇目次◇ #contents *課題2:黒い線に沿って動くロボット [#e7c41af2] -黒い線に沿って動くロボットを作成せよ。~ そして一つの周回コースを2台のロボットが走行すること想定し、以下の2種類のプログラムを作成せよ。 --前方のロボットに接触したら反転して進む --前方のロボットに接触したらそのロボットを右側から追い抜いて~ (あるいは避けて通り)、再びライン上に戻って進む --*ただし、スピードと確実性をできる限り両立させること。~ 自由課題1も参考に。光センサは2つ使用してよい。 *完成までの過程 [#pc0f8aa8] 作成者:トシ/イケス/カツヤ/ウメ 作成日時:6/14 **タッチセンサー [#ye9df8f6] ***[[タッチセンサーを使ってみる:http://yakushi.shinshu-u.ac.jp/robotics/?2006a%2FA6%2F%BA%B8]] [#wfab872f] **ライントレース [#oecc5cf4] ***チャレンジ1回目 [#afad92cb] &ref(2006a/A6/課題2左/DSC04190_1_1.JPG,34.3KB,ヨ○シー);←初めはこれでやってみたものの、90度以上のカーブは難しいため断念。~ -そのときのプログラミング #define THRESHOLD 40 // 閾値 task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); while (true) { if (SENSOR_1 < THRESHOLD) { // 黒線上にいるとき OnFwd(OUT_A); Off(OUT_C); } else { // 黒線から外れたとき Off(OUT_A); OnFwd(OUT_C); } } } -一回目は光センサーを一つ用いたキッドで↑のライントレースを試みた。 --光センサー一つより、黒い線を二つの光センサーで読み取る方が、~ ライントレースがスムーズにいくだろうという結論にたどり着いた。 -COLOR(RED):今回のキッド~ &ref(2006a/A6/課題2左/DSC04203.JPG,58.3KB,ライントレーサー旧); ←→ &ref(2006a/A6/課題2左/DSC04204_1.JPG,47.1KB,ライントレーサー旧2); -光センサーを一つ用いて線をトレースしようとしたが、急カーブに弱い事がわかり断念。 --やはり、上で述べたように、この問題は光センサーを二つ使う事で解消ができそうだ。~ あとは絵を少しかえてみようと思った。チャレンジ2回目へ。。。 ***チャレンジ2回目 [#nbb29164] &ref(2006a/A6/課題2左/DSC04194_1.JPG,31.1KB,カ○ビー);←難しいカーブを減らした。 -今回のプログラミング #define THRESHOLD 40 #define TURN_TIME 200 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while(true){ if(SENSOR_3>THRESHOLD) { Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_1>THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else(OUT_A+OUT_C); } } -光センサーを二つ用いて、線を挟む感じでトレースしていくようにした。 --また、今回のキッド&プログラミングではチャレンジ一回目の絵でもできることが判明した。 -COLOR(RED):今回のキッド~ &ref(2006a/A6/課題2左/DSC04199.JPG,44.1KB,ライントレーサー); ←→ &ref(2006a/A6/課題2左/DSC04201.JPG,52.5KB,ライントレーサー2);~ -試行錯誤した結果、ダブルバンパーをもとに、光センサーを二つ付けた。 --光センサーを付ける位置を初めRCXの下にしたところ、~ そこが陰になり、うまく光センサーがラインを読み込めず断念。~ そこで、タッチセンサーの下に付ける事により解決!!♪ **タッチセンサー&ライントレース [#xa92c684] ***前方のロボットに接触したら反転して進む [#y4755018] -プログラミング #define THRESHOLD 40 #define TURN_TIME 200 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while(true){ if(SENSOR_3>THRESHOLD) { Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_1>THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else(OUT_A+OUT_C); if(SENSOR_2==1) { OnRev(OUT_A+OUT_C); Wait(80); OnFwd(OUT_A); OnRev(OUT_C); Wait(210); } } } ***前方のロボットに接触したらそのロボットを右側から追い抜いて (あるいは避けて通り)、再びライン上に戻って進む[#wf49cbfd] -プログラミング #define THRESHOLD 40 #define TURN_TIME 200 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while(true){ if(SENSOR_3>THRESHOLD) { Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_1>THRESHOLD) { Off(OUT_C); OnFwd(OUT_A); } else(OUT_A+OUT_C); if(SENSOR_2==1) { OnRev(OUT_A+OUT_C); Wait(80); OnFwd(OUT_A); OnRev(OUT_C); Wait(210); } } } ***COLOR(RED):完成したキッド [#k2810bfd] &ref(2006a/A6/課題2左/DSC04206.JPG,54.5KB,ヘラクレス); ←→ &ref(2006a/A6/課題2左/DSC04207_1.JPG,51.9KB,ヘラクレスさん);~ [[COLOR(GREEN):おまけ♪:http://yakushi.shinshu-u.ac.jp/robotics/?2006a%2FA6%2F%A4%AA%A4%DE%A4%B1%A2%F6]] **苦労した点 [#h8dae37a] -バランス感覚 --バランスがとれてないと、まっすぐにすすまないし、光センサーでうまく線をトレースできなく、苦戦。~ しかし、前方にタッチセンサーを付ける事により、バランス感覚についての問題は解消できた。 -タッチセンサーの位置 --光センサーを二つつけると、タッチセンサーを付けるのに苦労した。~ しかし、上の写真のように付ける事によりこの問題は解消。 **工夫した点 [#hc5e44b0] -カ○ビーの絵 --ヨ○シーだと、難しいコーナーが多くて、挫折したけど、~ カービーにし、黒の線を太くする事により、うまく問題解消。 -光センサーの位置 --光センサーの位置は、タイヤから、遠すぎると小回りが利かず、~ 近すぎると、小回りが利きすぎて、試行錯誤の結果今の写真の位置になりました。 --光センサーの間隔が狭すぎるor遠すぎるとうまくトレースしなく、現在の位置になりました。 **完成後記 [#f91fe5cd] -重量のバランス --これは本当に難しかった。 -完成したぜぃ!!! --今回は課題1よりも時間はかからなかったものの、やはり苦労したことには変わらず、~ 完成したときの喜びは計り知れない♪ コメントやアドバイスお願いします(^0^) #article **今何時だろぅ? [#z327c4be] >[[あるA6Lメンバー]] (2006-06-14 (水) 03:23:49)~ ~ 現時刻3時12分。~ 眠いっしょ。。。~ 今日はこの辺でミッション終了。。。 また明日会おう!! // #comment