2019a/Member/kimu/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
#contents
*課題について [#m624d2bd]
**課題の内容 [#rcb820a6]
今回の課題では,コースの上と箱の中においてあるボールを...
#ref(2019a/Member/kimu/Mission3/course_1.png,50%)
(以下のリンクを参照)
[[2019a/Mission3:http://yakushi.shinshu-u.ac.jp/robotics/...
**コースの内容 [#ud1ef437]
今回の課題を攻略する上で,私たちのグループは次のような二...
***地面に落ちているボール担当 [#t1ecd57c]
地面に落ちているボール担当のロボットは一つのボールをとる...
#ref(2019a/Member/kimu/Mission3/course_3.png,70%)
#ref(2019a/Member/kimu/Mission3/course_4.png,70%)
***箱の中のボール担当 [#ie33e977]
箱の中のボール担当のロボットは構造上ライントレースをする...
#ref(2019a/Member/kimu/Mission3/course_2.png,70%)
*ロボットの構造について [#rbaf5e80]
**ロボットの全体の構造 [#l5b28cc4]
基本的な構造は前回と同様で,まず最初に車輪を含む土台をつ...
#ref(2019a/Member/kimu/Mission3/zentaizu_kabuto.png,50%)
**アームの構造 [#r82de299]
***地面に落ちているボールをとるアーム [#s2017e2f]
下図は地面に落ちているボールをとるアームである.まず輪ゴ...
#ref(2019a/Member/kimu/Mission3/arm_kabuto_1.png,30%)
#ref(2019a/Member/kimu/Mission3/arm_kabuto_2.png,30%)
***箱の中のボールをとるアーム [#q2bd8dee]
下図は箱の中のボールをとるアームである.元となる発想は地...
#ref(2019a/Member/kimu/Mission3/arm_kuwagata.png,30%)
*プログラムについて [#ieeb1338]
**地面に落ちているボール担当 [#m457ca2f]
まず最初にdefineで様々な数字や動作を定義した.
#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 BACK OnRL(-SPEED_H,-SPEED_H); //後進
***線の左側をトレースする [#q3c75358]
今回の交差点の判断の条件は前回と同様である.一番暗いとき...
sub follow_line_l()
{
SetSensorLight(S2); //光センサーを起動
long t0=CurrentTick(); //基準を定義
while(CurrentTick()-t0<MOVE_TIME){ //基準からMOVE_T...
if(SENSOR_2>W1){rot_r;t0=CurrentTick();} //光セ...
else if(SENSOR_2>W2){turn_r;t0=CurrentTick();} ...
else if(SENSOR_2>G){go_straight;t0=CurrentTick()...
else if(SENSOR_2>B1){turn_l;t0=CurrentTick();} ...
else{rot_l;} //上以外のとき左回転
}
}
***交差点でいったん停止する[#ne8d92c7]
sub short_break()
{
Off(OUT_BC);
Wait(1000);
}
***アームをおろす[#w1041724]
これはボールをキャッチする際の,アームを下げるプログラム...
sub arm_down()
{
OnFwd(OUT_A,70);
Wait(600);
Off(OUT_A);
Wait(500);
OnRev(OUT_A,50);
Wait(500);
Off(OUT_A);
}
***ボールをシュートする [#l889a353]
sub shoot()
{
OnRev(OUT_A,60);
Wait(700);
Off(OUT_A);
OnFwd(OUT_A,55);
Wait(500);
Off(OUT_A);
}
***「t」の間後進する [#w37902d8]
sub back(long t)
{
BACK;
Wait(t);
Off(OUT_BC);
}
***スタートしてからシュートするまでの動作 [#u138d6af]
task main()
{
Off(OUT_A);
go_straight;
Wait(1000);
Off(OUT_BC); //スタート
follow_line_l();
short_break(); //M'からK'までライントレース
rot_r;
Wait(400);
Off(OUT_BC);
go_straight;
Wait(800);
Off(OUT_BC);
arm_down(); //ボールをキャッチ
#ref(2019a/Member/kimu/Mission3/kabuto_1.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_2.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_3.png,30%)
turn_r;
Wait(3500);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
#ref(2019a/Member/kimu/Mission3/kabuto_4.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_5.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_6.png,30%)
Wait(1000);
rot_r;
Wait(3900);
Off(OUT_BC);
go_straight;
Wait(6600);
Off(OUT_BC);
arm_down(); //二つ目のボールをキャッチ
back(3000);
OnRL(0,-SPEED_L);
Wait(300);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
}
**箱の中のボール担当 [#m32be704]
箱の中のボールは地面に落ちているボールと違い,線を辿らず...
#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 BACK OnRL(-SPEED_H,-SPEED_H);
***ボールをゴールにシュートする [#w20f3ad1]
sub shoot()
{
OnRev(OUT_A,60);
Wait(600);
Off(OUT_A);
OnFwd(OUT_A,90);
Wait(800);
Off(OUT_A);
}
***スタートからゴールにシュートするまでの動作 [#kd45323f]
task main()
{
go_straight;
Wait(1000);
Off(OUT_BC);
rot_l;
Wait(2800);
Off(OUT_BC);
go_straight;
Wait(3000);
Off(OUT_BC);
rot_l;
Wait(4500);
Off(OUT_BC); //箱ごとキャッチ
#ref(2019a/Member/kimu/Mission3/kuwagata_4.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_5.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_6.png,30%)
go_straight;
Wait(3000);
turn_l;
Wait(8700);
Off(OUT_BC);
Wait(27000);
OnFwd(OUT_A,50);
Wait(700);
OnRev(OUT_BC,60);
Wait(700);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
}
#ref(2019a/Member/kimu/Mission3/kuwagata_1.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_2.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_3.png,30%)
*考察 [#gfcdbe77]
**ロボットについて [#rfb65cf8]
ロボットを設計するとき,グループで一機でするか,二機です...
**プログラムについて [#h41669d2]
ロボットの構造上,箱担当のロボットはほとんど線をたどらな...
**感想 [#nb656577]
今回の課題は最後というだけあって,とても難しかった.特に...
終了行:
[[2019a/Member]]
#contents
*課題について [#m624d2bd]
**課題の内容 [#rcb820a6]
今回の課題では,コースの上と箱の中においてあるボールを...
#ref(2019a/Member/kimu/Mission3/course_1.png,50%)
(以下のリンクを参照)
[[2019a/Mission3:http://yakushi.shinshu-u.ac.jp/robotics/...
**コースの内容 [#ud1ef437]
今回の課題を攻略する上で,私たちのグループは次のような二...
***地面に落ちているボール担当 [#t1ecd57c]
地面に落ちているボール担当のロボットは一つのボールをとる...
#ref(2019a/Member/kimu/Mission3/course_3.png,70%)
#ref(2019a/Member/kimu/Mission3/course_4.png,70%)
***箱の中のボール担当 [#ie33e977]
箱の中のボール担当のロボットは構造上ライントレースをする...
#ref(2019a/Member/kimu/Mission3/course_2.png,70%)
*ロボットの構造について [#rbaf5e80]
**ロボットの全体の構造 [#l5b28cc4]
基本的な構造は前回と同様で,まず最初に車輪を含む土台をつ...
#ref(2019a/Member/kimu/Mission3/zentaizu_kabuto.png,50%)
**アームの構造 [#r82de299]
***地面に落ちているボールをとるアーム [#s2017e2f]
下図は地面に落ちているボールをとるアームである.まず輪ゴ...
#ref(2019a/Member/kimu/Mission3/arm_kabuto_1.png,30%)
#ref(2019a/Member/kimu/Mission3/arm_kabuto_2.png,30%)
***箱の中のボールをとるアーム [#q2bd8dee]
下図は箱の中のボールをとるアームである.元となる発想は地...
#ref(2019a/Member/kimu/Mission3/arm_kuwagata.png,30%)
*プログラムについて [#ieeb1338]
**地面に落ちているボール担当 [#m457ca2f]
まず最初にdefineで様々な数字や動作を定義した.
#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 BACK OnRL(-SPEED_H,-SPEED_H); //後進
***線の左側をトレースする [#q3c75358]
今回の交差点の判断の条件は前回と同様である.一番暗いとき...
sub follow_line_l()
{
SetSensorLight(S2); //光センサーを起動
long t0=CurrentTick(); //基準を定義
while(CurrentTick()-t0<MOVE_TIME){ //基準からMOVE_T...
if(SENSOR_2>W1){rot_r;t0=CurrentTick();} //光セ...
else if(SENSOR_2>W2){turn_r;t0=CurrentTick();} ...
else if(SENSOR_2>G){go_straight;t0=CurrentTick()...
else if(SENSOR_2>B1){turn_l;t0=CurrentTick();} ...
else{rot_l;} //上以外のとき左回転
}
}
***交差点でいったん停止する[#ne8d92c7]
sub short_break()
{
Off(OUT_BC);
Wait(1000);
}
***アームをおろす[#w1041724]
これはボールをキャッチする際の,アームを下げるプログラム...
sub arm_down()
{
OnFwd(OUT_A,70);
Wait(600);
Off(OUT_A);
Wait(500);
OnRev(OUT_A,50);
Wait(500);
Off(OUT_A);
}
***ボールをシュートする [#l889a353]
sub shoot()
{
OnRev(OUT_A,60);
Wait(700);
Off(OUT_A);
OnFwd(OUT_A,55);
Wait(500);
Off(OUT_A);
}
***「t」の間後進する [#w37902d8]
sub back(long t)
{
BACK;
Wait(t);
Off(OUT_BC);
}
***スタートしてからシュートするまでの動作 [#u138d6af]
task main()
{
Off(OUT_A);
go_straight;
Wait(1000);
Off(OUT_BC); //スタート
follow_line_l();
short_break(); //M'からK'までライントレース
rot_r;
Wait(400);
Off(OUT_BC);
go_straight;
Wait(800);
Off(OUT_BC);
arm_down(); //ボールをキャッチ
#ref(2019a/Member/kimu/Mission3/kabuto_1.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_2.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_3.png,30%)
turn_r;
Wait(3500);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
#ref(2019a/Member/kimu/Mission3/kabuto_4.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_5.png,30%)
#ref(2019a/Member/kimu/Mission3/kabuto_6.png,30%)
Wait(1000);
rot_r;
Wait(3900);
Off(OUT_BC);
go_straight;
Wait(6600);
Off(OUT_BC);
arm_down(); //二つ目のボールをキャッチ
back(3000);
OnRL(0,-SPEED_L);
Wait(300);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
}
**箱の中のボール担当 [#m32be704]
箱の中のボールは地面に落ちているボールと違い,線を辿らず...
#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 BACK OnRL(-SPEED_H,-SPEED_H);
***ボールをゴールにシュートする [#w20f3ad1]
sub shoot()
{
OnRev(OUT_A,60);
Wait(600);
Off(OUT_A);
OnFwd(OUT_A,90);
Wait(800);
Off(OUT_A);
}
***スタートからゴールにシュートするまでの動作 [#kd45323f]
task main()
{
go_straight;
Wait(1000);
Off(OUT_BC);
rot_l;
Wait(2800);
Off(OUT_BC);
go_straight;
Wait(3000);
Off(OUT_BC);
rot_l;
Wait(4500);
Off(OUT_BC); //箱ごとキャッチ
#ref(2019a/Member/kimu/Mission3/kuwagata_4.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_5.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_6.png,30%)
go_straight;
Wait(3000);
turn_l;
Wait(8700);
Off(OUT_BC);
Wait(27000);
OnFwd(OUT_A,50);
Wait(700);
OnRev(OUT_BC,60);
Wait(700);
Off(OUT_BC);
shoot(); //ボールをゴールにシュートする
}
#ref(2019a/Member/kimu/Mission3/kuwagata_1.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_2.png,30%)
#ref(2019a/Member/kimu/Mission3/kuwagata_3.png,30%)
*考察 [#gfcdbe77]
**ロボットについて [#rfb65cf8]
ロボットを設計するとき,グループで一機でするか,二機です...
**プログラムについて [#h41669d2]
ロボットの構造上,箱担当のロボットはほとんど線をたどらな...
**感想 [#nb656577]
今回の課題は最後というだけあって,とても難しかった.特に...
ページ名: