†モーターA,Bに左右のタイヤをつけ、モーターCにアームを取り付けた。ボールはカタパルト方式で射出する。最初に360°回転し、空き缶の位置を記録する。次に記録した方向に向き、空き缶との距離が15cmになるまで前進する。†プログラムは1)空き缶の位置(角度)の測定2)空き缶の位置を向く3)空き缶に向かって前進4)ボールの射出の順で動く。//10°回転するのにかかる時間TURN_TIME_10の決定は、ロボットを回転させ180°回転するのに要する時間を計10回測定し、それのっ平均を18で割った値である。10°ごと旋回してそのつど距離センサーの値を取得する。取得した値が保持している最小値よりも小さかった場合、保持する最小値を更新する。そのときの繰り返し回数*10°を、空き缶のある方向の暫定値として保持する。360°旋回後、暫定値を確定値として返す。//360°スキャンif(angle<=180){machine_turn_time=TURN_TIME_10*angle;go_forward;Wait(machine_turn_time);Off(OUT_AB);}else{machine_turn_time=TURN_TIME_10*angle;go_forward;Wait(machine_turn_time);Off(OUT_AB);}scan_angle()関数で空き缶のある位置(角度)が帰ってくる。その角度を180°以上か180°以下かで場合分けをして、それぞれ右旋回、左旋回をさせる。flg=0;while(flg==0){go_forward;if(SensorUS(S4)<=15){flg=1;}}Off(OUT_AB);センサーの値を取得し、15cmを切ったら停止する。電池の消耗によって、回転に要する時間が変わってくるので正確な角度まで回転できない。ボールの射出方式が悪く、ボールを遠くに飛ばせない。†センサーが100cm以下の値を返してきたらスキャンを停止し、その方向に前進するように変更する。回転操作が大幅に少なくなるので誤差も小さくできる。