シミュレータで学ぶC言語 [ミッション2:敵陣へドリブルせよ]

ボールを黄色ゴールへ入れよう

ミッション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日に修正.

コメントを残す

メールアドレスが公開されることはありません。