- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
*課題について [#ie2cf49e]
課題1については[[2019a/Mission2]]を参照
課題2については[[2019a/Mission2]]を参照。
また、A地点から出発し、B地点へ進むコースでプログラムを考えた。
*ロボットについて [#q293edc9]
ロボットはできるだけ小さく作り、トレースをしやすくした。前に取り付けたアームで、ボールの上げ下げを行う。
&ref(1563503784882.jpg);
また、A地点から出発するコースでプログラムを考えた。
*反省点 [#i7e76704]
J地点から先のルートへ進むことができなかった。また、トレースの成功率が極めて低かったのでそこをより改善できれば良かったと思う。
&ref(1563503776849.jpg);
*プログラムについて [#x87b87cf]
**定義したプログラム [#a5f92227]
#define BLACK 32
#define WHITE 52
#define kurohai 36
#define GLAY 42
#define sirohai 47
#define SP 20 //速度
#define turn_left OnFwd(OUT_B,SP);Off(OUT_C); //左に曲がる
#define turn_right OnFwd(OUT_C,SP);Off(OUT_B); //右に曲がる
#define st OnFwd(OUT_BC,SP); // まっすぐ進む
#define senkai_left OnFwd(OUT_B,SP);OnRev(OUT_C,SP); //左に旋回
#define senkai_right OnFwd(OUT_C,35);OnRev(OUT_B,35); //右に旋回
#define mochiageu OnRev(OUT_A,SP);Wait(500); //ボールを持ち上げる
#define sageru OnFwd(OUT_A,SP);Wait(500); //ボールを落とす
**サブルーチン [#f41ad095]
sub follow_line()
{
SetSensorLight(S2);
long t0=CurrentTick();
while(CurrentTick()-t0<700){
if(SENSOR_2<BLACK){
senkai_left;
}else if(SENSOR_2<kurohai){
turn_left;
t0=CurrentTick();
}else if(SENSOR_2<GLAY){
st;
t0=CurrentTick();
}else if(SENSOR_2<sirohai){
turn_right;
t0=CurrentTick();
}else if(SENSOR_2<WHITE){
senkai_right;
t0=CurrentTick();
}
Wait(1);
}
Wait(1);
}
}
task main(){
follow_line(); //トレース
Off(OUT_BC); //少し左に曲がった状態で停止
OnFwd(OUT_C,SP);Wait(1200); //ロボットを線上に戻す
follow_line(); //トレース
Off(OUT_BC); //少し左に曲がった状態で停止
OnFwd(OUT_C,SP);Wait(1500); //ロボットが右回りに動くようにする
if(SENSOR_2<BLACK){
senkai_left;
}else if(SENSOR_2<kurohai){
turn_left;
}else if(SENSOR_2<GLAY){
st;
}else if(SENSOR_2<sirohai){
turn_right;
}else if(SENSOR_2<WHITE){
senkai_right;
}
Wait(10000); //J地点までトレース
OnFwd(OUT_C,SP);Wait(1200); //J地点を右に曲がる
follow_line(); //トレース
}
*まとめ [#w6f6b024]
J地点から先のルートへ進み、ボールの手前で止まるプログラムを作ることができなかった。また、トレースの成功率が極めて低かったのでそこをより改善できれば良かったと思う。