2019a/Member/kimu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題について [#k66c90e8]
**課題の内容 [#n7252d32]
今回の課題は,決められたコースを進み,交差点を越え,ボ...
#ref(2019a/Member/kimu/Mission2/2019a-mission2.png,50%,コ...
(以下のリンクを参照)
[[2019a/Mission2:http://yakushi.shinshu-u.ac.jp/robotic...
**コースの内容 [#hfc7e975]
今回の課題では,私たちの班は「A地点から出発 → B → C(直...
また,コースを攻略する上で,次の図のような作戦を立てた.
#ref(2019a/Member/kimu/Mission2/course.png,50%,コース2)
AからKまではライントレースと交差点をこえるプログラムで...
*ロボットの構造について [#r5345b48]
**全体の構造 [#gf81e03c]
構造は車輪とアーム,センサーを固定した枠組みの上から本...
#ref(2019a/Member/kimu/Mission2/zentaizu_1.png,40%,left,...
#ref(2019a/Member/kimu/Mission2/bunkaizu_1.png,40%,right,...
**アームの構造 [#t15836a4]
二本のアームのうち片方を固定にし,片方のみを動かすこと...
#ref(2019a/Member/kimu/Mission2/arm_2.png,40%,アーム1)
*プログラムについて [#zf14414b]
前回と同様,最初に基本的な動作を定義したあと,サブルー...
光センサーの明るさは次の図のように,一番明るい部分,二...
#ref(2019a/Member/kimu/Mission2/sensor.png,50%,センサー)
#define MOVE_TIME 250 //交差点を判別する時間
#define SPEED_H 35 //早いスピード
#define SPEED_L 20 //遅いスピード
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_straight OnRL(SPEED_H,SPEED_H); //前に進む
#define rot_r OnRL(-SPEED_L,SPEED_L); //右回転
#define turn_r OnRL(0,SPEED_L); //右折
#define rot_l OnRL(SPEED_L,-SPEED_L); //左回転
#define turn_l OnRL(SPEED_L,0); //左折
#define B1 43 //明るさ(二番目に暗い)
#define G 53 //明るさ(真ん中)
#define W1 59 //明るさ(二番目に明るい)
#define W2 61 //明るさ(一番明るい)
#define arm_open OnRev(OUT_A,20);Wait(1000);Off(OUT_A); ...
#define arm_close OnFwd(OUT_A,30);Wait(600);Off(OUT_A); ...
**ライントレース [#y4021097]
以下の図はライントレースをするプログラムのフローチャー...
黒い線の右側,または左側の明るさによって右左折を調節し...
#ref(2019a/Member/kimu/Mission2/flowchart.png,70%,フロー...
**黒い線の右側をトレースする [#ke279ead]
sub follow_line_r()
{
SetSensorLight(S1); //光センサーに接続
long t0=CurrentTick(); //ここから時間を計る
while(CurrentTick()-t0<MOVE_TIME) //MOVE_TIMEまで動...
{
if(SENSOR_1>W1){rot_l;t0=CurrentTick();} //一番...
else if(SENSOR_1>W2){turn_l;t0=CurrentTick();} ...
else if(SENSOR_1>G){go_straight;t0=CurrentTick()...
else if(SENSOR_1>B1){turn_r;t0=CurrentTick();} ...
else{rot_r;} //上以外のときは右回転
}
}
**黒い線の左側をトレースする [#ba86b0af]
sub follow_line_l()
{
SetSensorLight(S1); //光センサーを接続する
long t0=CurrentTick(); //ここから時間を計る
while(CurrentTick()-t0<MOVE_TIME) //MOVE_TIMEまで動...
{
if(SENSOR_1>W1){rot_r;t0=CurrentTick();} //一番...
else if(SENSOR_1>W2){turn_r;t0=CurrentTick();} ...
else if(SENSOR_1>G){go_straight;t0=CurrentTick()...
else if(SENSOR_1>B1){turn_l;t0=CurrentTick();} ...
else{rot_l;} //上以外のときは左回転
}
}
**交差点を越える1 [#f3d9fa96]
sub cross_line_1()
{
while(SENSOR_1<W1){go_straight;} //白の部分に出るま...
while(SENSOR_1>G){turn_l;} //黒の線の真ん中に来るま...
Off(OUT_BC);
}
**交差点を越える2 [#a9297b61]
sub cross_line_2()
{
while(SENSOR_1<W1){go_straight;} //白い部分に出るま...
while(SENSOR_1>G){rot_l;} //黒い線の真ん中に来るま...
Off(OUT_BC);
}
**ボールをつかむ [#mde78bd9]
sub ball_catch()
{
rot_l;
Wait(350);
Off(OUT_BC); //左旋回
go_straight;
Wait(2000);
Off(OUT_BC); //前進
OnRL(-SPEED_L,0);
Wait(1000);
Off(OUT_B); //左折
OnRL(-SPEED_L,-SPEED_L);
Wait(1500);
Off(OUT_BC); //後進
arm_close; //ボールを掴む
rot_r;
Wait(1300); //右旋回
go_straight;
Wait(800);
Off(OUT_BC); //前進
}
**ボールをゴールにシュートする [#d57f1319]
sub shoot_goal()
{
rot_l;
Wait(300);
Off(OUT_BC); //左旋回
go_straight;
Wait(1300); //前進
arm_open; //アームを開く
rot_l; //左旋回
Wait(500);
Off(OUT_BC); //ボールをシュート
go_straight;
Wait(500);
Off(OUT_BC); //ゴール
}
**交差点を認識し,一時停止する [#a1fd9fc0]
sub short_break()
{
Off(OUT_BC);
Wait(1000); //一時停止
}
task main()
{
go_straight;
Wait(1000);
Off(OUT_BC); //AからBまで前進
follow_line_r(); //BからCまでライントレース
cross_line_1(); //Cの交差点を越える
follow_line_r(); //CからDまでライントレース
short_break();
cross_line_1(); //Dの交差点を越える
follow_line_r();
follow_line_r(); //DからEまでライントレース
follow_line_r();
follow_line_r(); //EからFまでライントレース
follow_line_r(); //FからHまでライントレース
cross_line_2(); //Hの交差点を越える
follow_line_r(); //HからIまでライントレース
cross_line_2(); //Iの交差点を越える
follow_line_r(); //IからJまでライントレース
follow_line_r(); //JからKまでライントレース
ball_catch(); //ボールをつかむ
follow_line_l(); //KからMまでライントレース
shoot_goal(); //ボールをシュートしてゴール
}
*考察 [#g4a3fd65]
**ロボットについて [#yaaf7e03]
ロボットの全体的な構造については自分が担当したが,前回...
最初に土台を作りその上に本体とアームを載せることによっ...
その一方で,アームの部分が長すぎてボールに当たってしま...
**プログラムについて [#w63f30b5]
自分はあまりプログラムの作成は得意ではないが,ペアの人...
**感想 [#z9638ac5]
今回は前回と比べ,質の高いロボットを作ることができた....
終了行:
#contents
*課題について [#k66c90e8]
**課題の内容 [#n7252d32]
今回の課題は,決められたコースを進み,交差点を越え,ボ...
#ref(2019a/Member/kimu/Mission2/2019a-mission2.png,50%,コ...
(以下のリンクを参照)
[[2019a/Mission2:http://yakushi.shinshu-u.ac.jp/robotic...
**コースの内容 [#hfc7e975]
今回の課題では,私たちの班は「A地点から出発 → B → C(直...
また,コースを攻略する上で,次の図のような作戦を立てた.
#ref(2019a/Member/kimu/Mission2/course.png,50%,コース2)
AからKまではライントレースと交差点をこえるプログラムで...
*ロボットの構造について [#r5345b48]
**全体の構造 [#gf81e03c]
構造は車輪とアーム,センサーを固定した枠組みの上から本...
#ref(2019a/Member/kimu/Mission2/zentaizu_1.png,40%,left,...
#ref(2019a/Member/kimu/Mission2/bunkaizu_1.png,40%,right,...
**アームの構造 [#t15836a4]
二本のアームのうち片方を固定にし,片方のみを動かすこと...
#ref(2019a/Member/kimu/Mission2/arm_2.png,40%,アーム1)
*プログラムについて [#zf14414b]
前回と同様,最初に基本的な動作を定義したあと,サブルー...
光センサーの明るさは次の図のように,一番明るい部分,二...
#ref(2019a/Member/kimu/Mission2/sensor.png,50%,センサー)
#define MOVE_TIME 250 //交差点を判別する時間
#define SPEED_H 35 //早いスピード
#define SPEED_L 20 //遅いスピード
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_straight OnRL(SPEED_H,SPEED_H); //前に進む
#define rot_r OnRL(-SPEED_L,SPEED_L); //右回転
#define turn_r OnRL(0,SPEED_L); //右折
#define rot_l OnRL(SPEED_L,-SPEED_L); //左回転
#define turn_l OnRL(SPEED_L,0); //左折
#define B1 43 //明るさ(二番目に暗い)
#define G 53 //明るさ(真ん中)
#define W1 59 //明るさ(二番目に明るい)
#define W2 61 //明るさ(一番明るい)
#define arm_open OnRev(OUT_A,20);Wait(1000);Off(OUT_A); ...
#define arm_close OnFwd(OUT_A,30);Wait(600);Off(OUT_A); ...
**ライントレース [#y4021097]
以下の図はライントレースをするプログラムのフローチャー...
黒い線の右側,または左側の明るさによって右左折を調節し...
#ref(2019a/Member/kimu/Mission2/flowchart.png,70%,フロー...
**黒い線の右側をトレースする [#ke279ead]
sub follow_line_r()
{
SetSensorLight(S1); //光センサーに接続
long t0=CurrentTick(); //ここから時間を計る
while(CurrentTick()-t0<MOVE_TIME) //MOVE_TIMEまで動...
{
if(SENSOR_1>W1){rot_l;t0=CurrentTick();} //一番...
else if(SENSOR_1>W2){turn_l;t0=CurrentTick();} ...
else if(SENSOR_1>G){go_straight;t0=CurrentTick()...
else if(SENSOR_1>B1){turn_r;t0=CurrentTick();} ...
else{rot_r;} //上以外のときは右回転
}
}
**黒い線の左側をトレースする [#ba86b0af]
sub follow_line_l()
{
SetSensorLight(S1); //光センサーを接続する
long t0=CurrentTick(); //ここから時間を計る
while(CurrentTick()-t0<MOVE_TIME) //MOVE_TIMEまで動...
{
if(SENSOR_1>W1){rot_r;t0=CurrentTick();} //一番...
else if(SENSOR_1>W2){turn_r;t0=CurrentTick();} ...
else if(SENSOR_1>G){go_straight;t0=CurrentTick()...
else if(SENSOR_1>B1){turn_l;t0=CurrentTick();} ...
else{rot_l;} //上以外のときは左回転
}
}
**交差点を越える1 [#f3d9fa96]
sub cross_line_1()
{
while(SENSOR_1<W1){go_straight;} //白の部分に出るま...
while(SENSOR_1>G){turn_l;} //黒の線の真ん中に来るま...
Off(OUT_BC);
}
**交差点を越える2 [#a9297b61]
sub cross_line_2()
{
while(SENSOR_1<W1){go_straight;} //白い部分に出るま...
while(SENSOR_1>G){rot_l;} //黒い線の真ん中に来るま...
Off(OUT_BC);
}
**ボールをつかむ [#mde78bd9]
sub ball_catch()
{
rot_l;
Wait(350);
Off(OUT_BC); //左旋回
go_straight;
Wait(2000);
Off(OUT_BC); //前進
OnRL(-SPEED_L,0);
Wait(1000);
Off(OUT_B); //左折
OnRL(-SPEED_L,-SPEED_L);
Wait(1500);
Off(OUT_BC); //後進
arm_close; //ボールを掴む
rot_r;
Wait(1300); //右旋回
go_straight;
Wait(800);
Off(OUT_BC); //前進
}
**ボールをゴールにシュートする [#d57f1319]
sub shoot_goal()
{
rot_l;
Wait(300);
Off(OUT_BC); //左旋回
go_straight;
Wait(1300); //前進
arm_open; //アームを開く
rot_l; //左旋回
Wait(500);
Off(OUT_BC); //ボールをシュート
go_straight;
Wait(500);
Off(OUT_BC); //ゴール
}
**交差点を認識し,一時停止する [#a1fd9fc0]
sub short_break()
{
Off(OUT_BC);
Wait(1000); //一時停止
}
task main()
{
go_straight;
Wait(1000);
Off(OUT_BC); //AからBまで前進
follow_line_r(); //BからCまでライントレース
cross_line_1(); //Cの交差点を越える
follow_line_r(); //CからDまでライントレース
short_break();
cross_line_1(); //Dの交差点を越える
follow_line_r();
follow_line_r(); //DからEまでライントレース
follow_line_r();
follow_line_r(); //EからFまでライントレース
follow_line_r(); //FからHまでライントレース
cross_line_2(); //Hの交差点を越える
follow_line_r(); //HからIまでライントレース
cross_line_2(); //Iの交差点を越える
follow_line_r(); //IからJまでライントレース
follow_line_r(); //JからKまでライントレース
ball_catch(); //ボールをつかむ
follow_line_l(); //KからMまでライントレース
shoot_goal(); //ボールをシュートしてゴール
}
*考察 [#g4a3fd65]
**ロボットについて [#yaaf7e03]
ロボットの全体的な構造については自分が担当したが,前回...
最初に土台を作りその上に本体とアームを載せることによっ...
その一方で,アームの部分が長すぎてボールに当たってしま...
**プログラムについて [#w63f30b5]
自分はあまりプログラムの作成は得意ではないが,ペアの人...
**感想 [#z9638ac5]
今回は前回と比べ,質の高いロボットを作ることができた....
ページ名: