ミッション2の指令は「敵陣へドリブルせよ」である.
まずは,ミッション1の答えの一例.このプログラムはとても単純で,赤外線センサの値がある数値(閾値)より大きくなったら,赤外線ボールがあると判断し前進する.それ以外の場合は回転してボールを捜すというものである.
// ボールを追う簡単なプログラム #include "dm.h" #include "stdio.h" void user_main() { // CN1: ボールセンサ(赤外線)の値. 大きい値ほどボールが近い // ボールセンサは視野角が10度とほぼ正面しか見えない printf("ball sensor=%d \n", CN1); if(CN1 > 1) { motor(50,50); // 前進 } else { motor(-10, 10); // 時計周り } }
- ダウンロード:robocup2-1-110422.zip
- インストール:robocup2-1.zipを展開し,c:\ode-0.11.1\myprogの中に移動する
- タスクレベル1:このプログラムではロボットがうまく動かない.閾値(しきいち)を直し,ロボットの動作を改善せよ.
次のタスクは,「北北西に針路を取れ」である.ある目標針路へ向かってロボットが進むプログラムを作りなさい.
// 目標針路へ向かうプログラム #include "dm.h" #include "stdio.h" int target = 270; // 目標針路 void user_main() { // CN2: 地磁気センサの値 0~360度 printf("Dir=%d \n", CN2); if((-5 <= (target - CN2)) && ((target - CN2) < 5)) { motor(50,50); // 前進 } else { motor(-10, 10); // 時計周り } }
- ダウンロード:robocup2-level2.zip
- インストール:robocup2-2.zipを展開し,c:\ode-0.11.1\myprogの中に移動する
- タスクレベル2:このプログラムを改良して,ボールを黄色ゴールへドリブルで入れよ.
- タスクレベル3:robocup2-level3-110506.zipのボール配置を使い,ボールをゴールへドリブルで入れよ.回り込みが必要となる.サンプルプログラムに問題があったので2011年5月6日に修正.
コメント