2019a/Member/tamuqtt/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題2について [#u74e2052]
A地点を出発し、次の経路を黒い線にそって動くロボットを作成...
#ref(./s_kadai2_setumei.JPG,70%,課題2説明図)
A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
詳しくは,[[2019a/Mission2]]をご覧ください.
*ロボットについて [#m5de3aaa]
全体図は下の写真の通りです.今回は,紙のサイズが小さく大...
#ref(./s_zentai1.jpg,50%,全体図1)
#ref(./s_zentai2.jpg,50%,全体図2)
光センサーはここについています.センサーをタイヤと近くす...
#ref(./s_hikari_sensor1.jpg,60%,光センサー位置説明)
**タイヤ(左がA,右がCに接続) [#xf6b7f3f]
動くタイヤは前輪の2輪,後輪は支えているだけです.最初は,...
#ref(./s_taiya.jpg,60%,タイヤ説明)
**アーム(Bに接続) [#x5e87750]
アームはピンポン玉を挟み込む形です.
#ref(./s_arm1.jpg,60%,アーム全体)
アームのギアは,できるだけ省スペースになるようにブロック...
#ref(./s_arm2.jpg,60%,アームギア横から)
また,回転方向の異なる動きを取り出すためにギアの配置も工...
#ref(./s_arm3.jpg,60%,アームギア上から)
#ref(./s_arm4.jpg,60%,アームギア下から)
*プログラムについて [#id4fac50]
**ライントレースの仕組み [#ld4d1ed2]
ライントレースとは,あらかじめ引かれた黒い線に沿って進む...
このライントレースはロボット本体に付けられた光センサーの...
|>|BGCOLOR(#696969):|c
||COLOR(white){センサーの値}|
|>|BGCOLOR(#9999ff):|c
|COLOR(){黒}|COLOR(){ 〜40}|
|>|BGCOLOR(#99ff99):|c
|COLOR(){黒灰}|41〜42|
|>|BGCOLOR(#ffff99):|c
|COLOR(){灰} |43〜44|
|>|BGCOLOR(#ffcc99):|c
|COLOR(){白灰}|45〜46|
|>|BGCOLOR(#ff9999):|c
|COLOR(){白} |COLOR(){47〜 }|
図にすると以下の通りです.
#ref(./s_sensor_atai.JPG,60%,センサー値図)
ラインとレース中は光センサーの値をもとにロボットの動きが...
|>|>|BGCOLOR(#696969):|c
||COLOR(white){センサーの値}|COLOR(white){動作}|
|>|>|BGCOLOR(#9999ff):|c
|COLOR(){黒}|COLOR(){ 〜40}|左旋回:左→後進,右→前進|
|>|>|BGCOLOR(#99ff99):|c
|COLOR(){黒灰}|41〜42|左回転:左→停止,右→前進|
|>|>|BGCOLOR(#ffff99):|c
|COLOR(){灰} |43〜44|直進 :左→前進,右→前進|
|>|>|BGCOLOR(#ffcc99):|c
|COLOR(){白灰}|45〜46|右回転:左→前進,右→停止|
|>|>|BGCOLOR(#ff9999):|c
|COLOR(){白} |COLOR(){47〜 }|右旋回:左→前進,右→後進|
#ref(./s_sensor_ugoki.JPG,60%,センサー動き)
ライントレースをするなら,動きは2段階でいいじゃないかと思...
ライントレースのイメージです.実際の動きをイメージしたも...
#ref(./line_trace_image.gif,60%,ライントレースイメージ)
このような動作を繰り返し行うことでライントレースをするこ...
**交差点認識の方法 [#p8c71d7c]
ここでは交差点をどのように認識したかその方法を説明します...
***直角交差点 [#zcb84290]
ライントレースをしながら交差点に入ると黒が一定時間以上連...
#ref(./s_kousaten_shikumi.JPG,70%,交差点認識の仕組み)
一定時間は今回私たちのロボットでは0.20秒でした.この時間...
***円形交差点 [#f1b8055c]
直角交差点と円形交差点の違いは止まるまでの一定時間です....
#ref(./s_enkei_kousaten.JPG,60%,円形交差点との差)
このように,&color(blue,){直角交差点};と&color(red,){円形...
**使用した主なサブルーチン [#pfa6529b]
***定義・マクロ [#c109df9b]
まずグローバル変数のtを定義します.
int t;
次に交差点を認識するための時間を2種類定義します.
#define KOUSATEN 20 //直角交差点用
#define ENKEIKOUSATEN 13 //円形交差点用
ライントレースに使用する光センサーの値を定義します.
#define kuro 41
#define kurohai 43
#define hai 45
#define shirohai 47
ライントレースの動作のマクロです.
#define go_ahead OnFwd(OUT_AC); ...
#define turn_left SetPower(OUT_AC,3);Off(OUT_A);OnFwd(OU...
#define turn_right SetPower(OUT_AC,3);OnFwd(OUT_A);Off(O...
#define Uturn_left SetPower(OUT_AC,3);OnRev(OUT_A);OnFwd...
#define Uturn_right SetPower(OUT_AC,3);OnFwd(OUT_A);OnRe...
アームを閉じるマクロです.アームが途中で開いてくるトラブ...
#define arm_close SetPower(OUT_B,1);OnRev(OUT_B);Wait(10...
一時停止のマクロです.交差点では,1秒間停止しなければなら...
#define kyukei Wait(100);
ライントレースの1つの動作の継続時間を定義します.
#define STEP 1
***follow_line1 [#seefd551]
follow_line1はライントレースをして直角の交差点で止まるサ...
sub follow_line1()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0); //まずタイマー0を...
while(FastTimer(0)<KOUSATEN) //タイマー0の値がK...
{
if(SENSOR_2<kuro) //光センサーの値が...
{
Uturn_left; //左旋回
}
else if(SENSOR_2<kurohai) //光センサーの値が...
{
turn_left;ClearTimer(0); //左回転,そしてタ...
}
else if(SENSOR_2<hai) //光センサーの値が...
{
go_ahead;ClearTimer(0); //直進,そしてタイ...
}
else if(SENSOR_2<shirohai) //光センサーの値が...
{
turn_right;ClearTimer(0); //右回転,そしてタ...
}
else //それ以外(光セン...
{
Uturn_right;ClearTimer(0);//右旋回,そしてタ...
}
Wait(STEP); //いずれかの動作を...
}
Off(OUT_AC);
PlaySound(SOUND_UP); //確認音 ...
kyukei; //1秒間停止
}
***follow_line2 [#a8201e5e]
follow_line2は,tの間だけライントレースをして止まるサブル...
sub follow_line2()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0); //まずタイマー0をリ...
while(FastTimer(0)<t) //タイマー0がt未満...
{
if(SENSOR_2<kuro) //kuro未満の時左旋回
{
Uturn_left;
}
else if(SENSOR_2<kurohai) //kurohai未満の時左...
{
turn_left;
}
else if(SENSOR_2<hai) //hai未満の時直進
{
go_ahead;
}
else if(SENSOR_2<shirohai) //shirohai未満の時...
{
turn_right;
}
else //それ以外(shirohai...
{
Uturn_right;
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_CLICK); //確認音
}
***follow_line3 [#xd0351f1]
follow_line3は,follow_line1とほぼ同じです.ただ,KOUSATE...
sub follow_line3()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<ENKEIKOUSATEN) //タイマー0がENKE...
{ //以下follow_line...
if(SENSOR_2<kuro)
{
Uturn_left;
}
else if(SENSOR_2<kurohai)
{
turn_left;ClearTimer(0);
}
else if(SENSOR_2<hai)
{
go_ahead;ClearTimer(0);
}
else if(SENSOR_2<shirohai)
{
turn_right;ClearTimer(0);
}
else
{
Uturn_right;ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
kyukei;
}
***cross_line [#q6eff459]
cross_lineは交差点を直進するためのサブルーチンです.動き...
#ref(./s_cross_line.JPG,50%,cross_line説明)
まず,follow_line1または3で交差点を認識して停止.その時は...
sub cross_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while(SENSOR_2<hai) //光センサーの値がhai未満の時
{
go_ahead; //直進
}
Off(OUT_AC);
kyukei; //一時停止
while(SENSOR_2>hai) //光センサーの値がhaiより大き...
{
Uturn_right; //右旋回
}
Off(OUT_AC);
kyukei; //一時停止
}
***kousaten_turn_left [#f031bf2b]
kousaten_turn_leftは交差点を左折するためのサブルーチンで...
sub kousaten_turn_left()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while(SENSOR_2<shirohai) //shirohai以下の時...
{
Uturn_left; //左旋回
}
Off(OUT_AC);
kyukei;
}
***pinpon_catch [#ed772a9b]
pinpon_catchはピンポン玉をつかむためのサブルーチンです....
sub pinpon_catch()
{
SetPower(OUT_B,1);
OnRev(OUT_B); //アームを閉じる
Wait(50);
Off(OUT_B);
kyukei;
}
**メインプログラム[#ge3070f3]
***1.AからM [#b77ea5d5]
まず,AからM地点を越えてラインにたどり着くために一定時間...
task main()
{
OnFwd(OUT_AC); //0.8秒間前進
Wait(80);
Off(OUT_AC);
kyukei;
***2.MからK [#k49d89dd]
MからKの間は,急カーブが存在します.その際黒い部分を長い...
t=1100;follow_line2();
follow_line1();
cross_line(); //K
***3.KからL [#t72bfd3b]
Kの交差点を直進後,ピンポン玉を取るためLに行きます.その...
t=120;follow_line2();
pinpon_catch(); //L
***4.LからK [#v6687261]
ピンポン玉をつかんだ後,そのままライントレースを続けます...
K地点での右折について説明します.最初は,停止(STOP1)した...
#ref(./s_K_turn_right2.jpg,70%,K地点説明)
t=470;follow_line2();
K_turn_right(); //K
arm_close; //開かないようアームをちょっと...
sub K_turn_right()
{
OnFwd(OUT_A); //0.7秒間右に回転
Wait(70);
Off(OUT_A);
kyukei;
while(SENSOR_2>hai) //光センサーの値がhaiより大きい...
{
Uturn_right; //右旋回
}
Off(OUT_AC);
kyukei;
}
***5.KからJ,I,Hを通ってG [#r52ba68b]
Kでの右折後,最初はいきなりfollow_line3(円形交差点用)を用...
同様に,Jの左折後,I,Hの直進後にも交差点通過直後のブレに...
t=90;follow_line2();
follow_line3();
kousaten_turn_left(); //J
t=120;follow_line2();
follow_line3();
cross_line(); //I
arm_close; //開かないようアームをちょっと...
t=100;follow_line2();
follow_line3();
cross_line(); //H
t=60;follow_line2();
follow_line3();
kousaten_turn_left(); //G
arm_close; //開かないようアームをちょっと...
***6.GからF,Eを通ってD [#ra5ada5c]
F,Eは直角のカーブですが,これを交差点と考えF,Eをkousaten_...
最初,失敗したとき
#ref(./s_follow_line2_setumei1.JPG,70%,follow_line2失敗説...
follow_line2を導入したとき
#ref(./s_follow_line2_setumei2.JPG,70%,follow_line2成功説...
t=50;follow_line2();
follow_line1();
kousaten_turn_left(); //F
t=100;follow_line2();
follow_line1();
kousaten_turn_left(); //E
t=100;follow_line2();
follow_line1();
cross_line(); //D
arm_close; //開かないようアームをちょっと...
***7.DからB [#s915a734]
ライントレースをしてCを直進しB地点で停止するプログラムで...
follow_line1();
cross_line(); //C
arm_close; //開かないようアームをちょっと...
t=100;follow_line2();
follow_line1();
***8.BからA [#pfdf3316]
Bの交差点で停止後,ピンポン玉をシュートしゴール地点に入る...
1.向きを修正した後
#ref(./s_shoot1.jpg,40%,シュート1)
2.アームを開く
#ref(./s_shoot2.jpg,40%,シュート2)
3.ロボットが下がる(この写真ではちょっと下がりすぎです)
#ref(./s_shoot3.jpg,40%,シュート3)
4.アームを閉じる
#ref(./s_shoot4.jpg,40%,シュート4)
5.シュート!!
#ref(./s_shoot5.jpg,40%,シュート5)
shoot(); //B
pinpon_catch(); //アームを閉じる(写真4,5)
OnFwd(OUT_AC); //まっすぐ進んでAに入る
Wait(200);
Off(OUT_AC);
}
sub shoot()
{
OnFwd(OUT_A); //右に回転し,方向を修正(写真1)
Wait(20);
Off(OUT_A);
Wait(10);
SetPower(OUT_B,1);
OnFwd(OUT_B); //アームを開く(写真2)
Wait(20);
Off(OUT_B);
Wait(10);
OnRev(OUT_AC); //後ろに下がる(写真3)
Wait(35);
Off(OUT_AC);
}
*感想・反省点 [#c3f3176f]
基本的な動作のパーツは比較的簡単に出来ました.しかし、組...
結果としては,ほぼほぼ上手く行きました.ただ、同じプログ...
訪問者数&counter(all); 今日&counter(today); 昨日&counte...
終了行:
[[2019a/Member]]
目次
#contents
*課題2について [#u74e2052]
A地点を出発し、次の経路を黒い線にそって動くロボットを作成...
#ref(./s_kadai2_setumei.JPG,70%,課題2説明図)
A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
詳しくは,[[2019a/Mission2]]をご覧ください.
*ロボットについて [#m5de3aaa]
全体図は下の写真の通りです.今回は,紙のサイズが小さく大...
#ref(./s_zentai1.jpg,50%,全体図1)
#ref(./s_zentai2.jpg,50%,全体図2)
光センサーはここについています.センサーをタイヤと近くす...
#ref(./s_hikari_sensor1.jpg,60%,光センサー位置説明)
**タイヤ(左がA,右がCに接続) [#xf6b7f3f]
動くタイヤは前輪の2輪,後輪は支えているだけです.最初は,...
#ref(./s_taiya.jpg,60%,タイヤ説明)
**アーム(Bに接続) [#x5e87750]
アームはピンポン玉を挟み込む形です.
#ref(./s_arm1.jpg,60%,アーム全体)
アームのギアは,できるだけ省スペースになるようにブロック...
#ref(./s_arm2.jpg,60%,アームギア横から)
また,回転方向の異なる動きを取り出すためにギアの配置も工...
#ref(./s_arm3.jpg,60%,アームギア上から)
#ref(./s_arm4.jpg,60%,アームギア下から)
*プログラムについて [#id4fac50]
**ライントレースの仕組み [#ld4d1ed2]
ライントレースとは,あらかじめ引かれた黒い線に沿って進む...
このライントレースはロボット本体に付けられた光センサーの...
|>|BGCOLOR(#696969):|c
||COLOR(white){センサーの値}|
|>|BGCOLOR(#9999ff):|c
|COLOR(){黒}|COLOR(){ 〜40}|
|>|BGCOLOR(#99ff99):|c
|COLOR(){黒灰}|41〜42|
|>|BGCOLOR(#ffff99):|c
|COLOR(){灰} |43〜44|
|>|BGCOLOR(#ffcc99):|c
|COLOR(){白灰}|45〜46|
|>|BGCOLOR(#ff9999):|c
|COLOR(){白} |COLOR(){47〜 }|
図にすると以下の通りです.
#ref(./s_sensor_atai.JPG,60%,センサー値図)
ラインとレース中は光センサーの値をもとにロボットの動きが...
|>|>|BGCOLOR(#696969):|c
||COLOR(white){センサーの値}|COLOR(white){動作}|
|>|>|BGCOLOR(#9999ff):|c
|COLOR(){黒}|COLOR(){ 〜40}|左旋回:左→後進,右→前進|
|>|>|BGCOLOR(#99ff99):|c
|COLOR(){黒灰}|41〜42|左回転:左→停止,右→前進|
|>|>|BGCOLOR(#ffff99):|c
|COLOR(){灰} |43〜44|直進 :左→前進,右→前進|
|>|>|BGCOLOR(#ffcc99):|c
|COLOR(){白灰}|45〜46|右回転:左→前進,右→停止|
|>|>|BGCOLOR(#ff9999):|c
|COLOR(){白} |COLOR(){47〜 }|右旋回:左→前進,右→後進|
#ref(./s_sensor_ugoki.JPG,60%,センサー動き)
ライントレースをするなら,動きは2段階でいいじゃないかと思...
ライントレースのイメージです.実際の動きをイメージしたも...
#ref(./line_trace_image.gif,60%,ライントレースイメージ)
このような動作を繰り返し行うことでライントレースをするこ...
**交差点認識の方法 [#p8c71d7c]
ここでは交差点をどのように認識したかその方法を説明します...
***直角交差点 [#zcb84290]
ライントレースをしながら交差点に入ると黒が一定時間以上連...
#ref(./s_kousaten_shikumi.JPG,70%,交差点認識の仕組み)
一定時間は今回私たちのロボットでは0.20秒でした.この時間...
***円形交差点 [#f1b8055c]
直角交差点と円形交差点の違いは止まるまでの一定時間です....
#ref(./s_enkei_kousaten.JPG,60%,円形交差点との差)
このように,&color(blue,){直角交差点};と&color(red,){円形...
**使用した主なサブルーチン [#pfa6529b]
***定義・マクロ [#c109df9b]
まずグローバル変数のtを定義します.
int t;
次に交差点を認識するための時間を2種類定義します.
#define KOUSATEN 20 //直角交差点用
#define ENKEIKOUSATEN 13 //円形交差点用
ライントレースに使用する光センサーの値を定義します.
#define kuro 41
#define kurohai 43
#define hai 45
#define shirohai 47
ライントレースの動作のマクロです.
#define go_ahead OnFwd(OUT_AC); ...
#define turn_left SetPower(OUT_AC,3);Off(OUT_A);OnFwd(OU...
#define turn_right SetPower(OUT_AC,3);OnFwd(OUT_A);Off(O...
#define Uturn_left SetPower(OUT_AC,3);OnRev(OUT_A);OnFwd...
#define Uturn_right SetPower(OUT_AC,3);OnFwd(OUT_A);OnRe...
アームを閉じるマクロです.アームが途中で開いてくるトラブ...
#define arm_close SetPower(OUT_B,1);OnRev(OUT_B);Wait(10...
一時停止のマクロです.交差点では,1秒間停止しなければなら...
#define kyukei Wait(100);
ライントレースの1つの動作の継続時間を定義します.
#define STEP 1
***follow_line1 [#seefd551]
follow_line1はライントレースをして直角の交差点で止まるサ...
sub follow_line1()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0); //まずタイマー0を...
while(FastTimer(0)<KOUSATEN) //タイマー0の値がK...
{
if(SENSOR_2<kuro) //光センサーの値が...
{
Uturn_left; //左旋回
}
else if(SENSOR_2<kurohai) //光センサーの値が...
{
turn_left;ClearTimer(0); //左回転,そしてタ...
}
else if(SENSOR_2<hai) //光センサーの値が...
{
go_ahead;ClearTimer(0); //直進,そしてタイ...
}
else if(SENSOR_2<shirohai) //光センサーの値が...
{
turn_right;ClearTimer(0); //右回転,そしてタ...
}
else //それ以外(光セン...
{
Uturn_right;ClearTimer(0);//右旋回,そしてタ...
}
Wait(STEP); //いずれかの動作を...
}
Off(OUT_AC);
PlaySound(SOUND_UP); //確認音 ...
kyukei; //1秒間停止
}
***follow_line2 [#a8201e5e]
follow_line2は,tの間だけライントレースをして止まるサブル...
sub follow_line2()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0); //まずタイマー0をリ...
while(FastTimer(0)<t) //タイマー0がt未満...
{
if(SENSOR_2<kuro) //kuro未満の時左旋回
{
Uturn_left;
}
else if(SENSOR_2<kurohai) //kurohai未満の時左...
{
turn_left;
}
else if(SENSOR_2<hai) //hai未満の時直進
{
go_ahead;
}
else if(SENSOR_2<shirohai) //shirohai未満の時...
{
turn_right;
}
else //それ以外(shirohai...
{
Uturn_right;
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_CLICK); //確認音
}
***follow_line3 [#xd0351f1]
follow_line3は,follow_line1とほぼ同じです.ただ,KOUSATE...
sub follow_line3()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<ENKEIKOUSATEN) //タイマー0がENKE...
{ //以下follow_line...
if(SENSOR_2<kuro)
{
Uturn_left;
}
else if(SENSOR_2<kurohai)
{
turn_left;ClearTimer(0);
}
else if(SENSOR_2<hai)
{
go_ahead;ClearTimer(0);
}
else if(SENSOR_2<shirohai)
{
turn_right;ClearTimer(0);
}
else
{
Uturn_right;ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
kyukei;
}
***cross_line [#q6eff459]
cross_lineは交差点を直進するためのサブルーチンです.動き...
#ref(./s_cross_line.JPG,50%,cross_line説明)
まず,follow_line1または3で交差点を認識して停止.その時は...
sub cross_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while(SENSOR_2<hai) //光センサーの値がhai未満の時
{
go_ahead; //直進
}
Off(OUT_AC);
kyukei; //一時停止
while(SENSOR_2>hai) //光センサーの値がhaiより大き...
{
Uturn_right; //右旋回
}
Off(OUT_AC);
kyukei; //一時停止
}
***kousaten_turn_left [#f031bf2b]
kousaten_turn_leftは交差点を左折するためのサブルーチンで...
sub kousaten_turn_left()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
while(SENSOR_2<shirohai) //shirohai以下の時...
{
Uturn_left; //左旋回
}
Off(OUT_AC);
kyukei;
}
***pinpon_catch [#ed772a9b]
pinpon_catchはピンポン玉をつかむためのサブルーチンです....
sub pinpon_catch()
{
SetPower(OUT_B,1);
OnRev(OUT_B); //アームを閉じる
Wait(50);
Off(OUT_B);
kyukei;
}
**メインプログラム[#ge3070f3]
***1.AからM [#b77ea5d5]
まず,AからM地点を越えてラインにたどり着くために一定時間...
task main()
{
OnFwd(OUT_AC); //0.8秒間前進
Wait(80);
Off(OUT_AC);
kyukei;
***2.MからK [#k49d89dd]
MからKの間は,急カーブが存在します.その際黒い部分を長い...
t=1100;follow_line2();
follow_line1();
cross_line(); //K
***3.KからL [#t72bfd3b]
Kの交差点を直進後,ピンポン玉を取るためLに行きます.その...
t=120;follow_line2();
pinpon_catch(); //L
***4.LからK [#v6687261]
ピンポン玉をつかんだ後,そのままライントレースを続けます...
K地点での右折について説明します.最初は,停止(STOP1)した...
#ref(./s_K_turn_right2.jpg,70%,K地点説明)
t=470;follow_line2();
K_turn_right(); //K
arm_close; //開かないようアームをちょっと...
sub K_turn_right()
{
OnFwd(OUT_A); //0.7秒間右に回転
Wait(70);
Off(OUT_A);
kyukei;
while(SENSOR_2>hai) //光センサーの値がhaiより大きい...
{
Uturn_right; //右旋回
}
Off(OUT_AC);
kyukei;
}
***5.KからJ,I,Hを通ってG [#r52ba68b]
Kでの右折後,最初はいきなりfollow_line3(円形交差点用)を用...
同様に,Jの左折後,I,Hの直進後にも交差点通過直後のブレに...
t=90;follow_line2();
follow_line3();
kousaten_turn_left(); //J
t=120;follow_line2();
follow_line3();
cross_line(); //I
arm_close; //開かないようアームをちょっと...
t=100;follow_line2();
follow_line3();
cross_line(); //H
t=60;follow_line2();
follow_line3();
kousaten_turn_left(); //G
arm_close; //開かないようアームをちょっと...
***6.GからF,Eを通ってD [#ra5ada5c]
F,Eは直角のカーブですが,これを交差点と考えF,Eをkousaten_...
最初,失敗したとき
#ref(./s_follow_line2_setumei1.JPG,70%,follow_line2失敗説...
follow_line2を導入したとき
#ref(./s_follow_line2_setumei2.JPG,70%,follow_line2成功説...
t=50;follow_line2();
follow_line1();
kousaten_turn_left(); //F
t=100;follow_line2();
follow_line1();
kousaten_turn_left(); //E
t=100;follow_line2();
follow_line1();
cross_line(); //D
arm_close; //開かないようアームをちょっと...
***7.DからB [#s915a734]
ライントレースをしてCを直進しB地点で停止するプログラムで...
follow_line1();
cross_line(); //C
arm_close; //開かないようアームをちょっと...
t=100;follow_line2();
follow_line1();
***8.BからA [#pfdf3316]
Bの交差点で停止後,ピンポン玉をシュートしゴール地点に入る...
1.向きを修正した後
#ref(./s_shoot1.jpg,40%,シュート1)
2.アームを開く
#ref(./s_shoot2.jpg,40%,シュート2)
3.ロボットが下がる(この写真ではちょっと下がりすぎです)
#ref(./s_shoot3.jpg,40%,シュート3)
4.アームを閉じる
#ref(./s_shoot4.jpg,40%,シュート4)
5.シュート!!
#ref(./s_shoot5.jpg,40%,シュート5)
shoot(); //B
pinpon_catch(); //アームを閉じる(写真4,5)
OnFwd(OUT_AC); //まっすぐ進んでAに入る
Wait(200);
Off(OUT_AC);
}
sub shoot()
{
OnFwd(OUT_A); //右に回転し,方向を修正(写真1)
Wait(20);
Off(OUT_A);
Wait(10);
SetPower(OUT_B,1);
OnFwd(OUT_B); //アームを開く(写真2)
Wait(20);
Off(OUT_B);
Wait(10);
OnRev(OUT_AC); //後ろに下がる(写真3)
Wait(35);
Off(OUT_AC);
}
*感想・反省点 [#c3f3176f]
基本的な動作のパーツは比較的簡単に出来ました.しかし、組...
結果としては,ほぼほぼ上手く行きました.ただ、同じプログ...
訪問者数&counter(all); 今日&counter(today); 昨日&counte...
ページ名: