ロボット本体の説明

出力端子Aで左のタイヤ、Cで右のタイヤを操作する。またBでアームの操作をする。入力端子2には光センサーが取り付けてある。

アームの説明

アームはクワガタのような形をしていて、ボールを挟むようにした。またボールを放す時に同時に シュートもできるようにしてある。本体の後ろ側にあるモーターが回って、それによって本体下にある棒が押し出されてアームについている歯車が回転し、アームが開閉する。

6.jpg

タイヤの説明

タイヤはROBOTICS INVENTION SYSTEM 2.0の17頁にあるものを使用した。 またタイヤとコンピュータとの間には少し空間があり、アームを動かすための装置がある。

5.jpg
7.jpg

プログラムの説明

今回図のCからAへ向かうプログラムを作成した。

2015a-mission2.png

そのプログラムは下記のとおりである。 またこのプログラムは黒線の左側をライントレースするプログラムである。 定義の説明はプログラム内に、task mainの説明はプログラムの下に示した。

#define THRESHOLD 45
#define set_power_h SetPower(OUT_AC,7);
#define set_power_l SetPower(OUT_AC,3);
#define go_forward OnFwd(OUT_AC);
#define turn_right_w set_power_l;OnFwd(OUT_A);Off(OUT_C); //右旋回
#define turn_right_s set_power_h;OnFwd(OUT_A);OnRev(OUT_C); //右折
#define turn_left_w set_power_l;OnFwd(OUT_C);Off(OUT_A); //左旋回
#define turn_left_s set_power_h;OnFwd(OUT_C);OnRev(OUT_A); //左折
#define STEP 1
#define hasamu OnFwd(OUT_B);Wait(15);Off(OUT_B); //ボールを挟む動作
#define hanasu OnRev(OUT_B);Wait(15);Off(OUT_B); //ボールを放しシュートする動作
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int m = 0;
int n = 0;
int time = 6;
while (m < 5) 
 { if (m == 1)
  { hasamu;m++; 
}  else if (m == 2)
{   time -= 1;m++;}
   else { 
     while (n < time) { //指定された回数turn_left_sしたら交差点判断。
      if (SENSOR_2 < THRESHOLD-5) {
       turn_left_s;n++;
}     else {
       if (SENSOR_2 < THRESHOLD-2) {
        turn_left_w;
}      else if (SENSOR_2 < THRESHOLD+4) { 
        go_forward;
}      else if (SENSOR_2 < THRESHOLD+6) {
        turn_right_w;
}      else {
        turn_right_s;
}
       n = 0;
}
Wait(STEP);
}
Off(OUT_AC);Wait(200);
turn_right_s; Wait(10);
go_forward;Wait(10);//交差点判断後、方向修正して交差点を渡る。
n = 0;m ++;
}}
Off(OUT_AC);
hanasu;
}

task mainの説明

変数mは次に何をすればいいのかの判断に使われる。

mは交差点判断したとき、挟む動作をしたときに1ずつプラスされるようになっている。 mによって交差点Qを判断した後に挟む動作をし、その後ライントレースに戻ることができ、最後のシュートするタイミングも間違えることがなくなる。

変数nは交差点判断に使われる。交差点Qまでのカーブは急であるため、交差点と判断することがある。そのため交差点と判断するまでの時間を延ばしてある。しかしそのままだとT字路Pで交差点判断をしなくなるのでその時間を短くしてある。その時間調節は変数timeによって行われ、タイミングは変数mに依存する。

T字路Pで右折するのは、交差点判断した後ライントレースに戻った際、白なら右折し続けろ(else {turn_right_s;},34行目)という指示があるからである。

反省

今回はロボット本体は簡単であったが、プログラムの調節が難しかった。このプログラムはコースページにあるものを参考に作ったがこのようなプログラムを1から作るのは非常に困難であると思うので、まだまだプログラムについて学びたいと考えた。

この課題期間に一回授業を欠席してしまったため、事前に伝えてはあったものの班員に迷惑をかけてしまった。今後は欠席しないようにしたい。


添付ファイル: file7.jpg 121件 [詳細] file6.jpg 107件 [詳細] file5.jpg 103件 [詳細] file2015a-mission2.png 122件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-07-31 (金) 18:41:07