2019a/Member/Masa/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
#contents
*課題2 [#x4e84a7f]
下の図のようなコースを各チームで作成し、「ミッション」を...
#ref(./idou.png,60%,今回のコース)
今回私は
A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
というルートを進むロボット、プログラムを作成した。
*今回作成したロボット [#e25ca079]
#ref(./4382.jpg,30%,今回作成したロボット)
今回のロボットでは左タイヤをA、右タイヤをC、ボールをつか...
#ref(./43828.jpg,30%,ボールをつかむところ)
最初は両側から挟み込むタイプにしていたが、ピンポイントで...
大きくすくうようなアームとボールの受け皿としてタイヤを使...
*今回のプログラムと解説 [#kbef24a8]
**レールに沿って動かすために [#me1eb9d2]
まず今回ロボットを光センサーでレール上を動かすために、
#ref(./light.png,30%,センサーの図)
この図のように線の左側に沿ってロボットが動くようにした。
簡単に説明をすると白くなると右へ行き、黒くなると左に、ち...
センサーでの値は周りの明るさにも大きく左右されるので、そ...
**交差点を判断するための動き [#t5560c57]
#ref(./cross.png,30%,交差点の図)
交差点を判断するために、まず図のようにレール上にセンサー...
その場合急なカーブに差し掛かった際に交差点と判断してしま...
交差点を判断し一時停止した後は別のサブルーチンでルートに...
**プログラムとコース上の動きの解説 [#o027f8b9]
まずはレール上を動く際のサブルーチン定義した
sub follow_line()
{
int t;
t=FastTimer(0);
int n;
n=FastTimer(1);
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(1)<1200)
{
if(SENSOR_1>=50){OnFwd(OUT_A);OnRev(OUT_C);Clear...
}else if(SENSOR_1>48){OnFwd(OUT_A);ClearTimer(0);
}else if(SENSOR_1>42){OnFwd(OUT_AC);ClearTimer(0);
}else if(SENSOR_1>39){OnFwd(OUT_C);ClearTimer(0);
}else{OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0);
}
}
ここではタイマーとライトの設定、そしてレール上を五段階で...
#ref(./MKL.png,40%/)
タイマーの1ではこのM→K→Lに移動する際に交差点と間違えない...
ですのでサブルーチン内ではタイマー1をリセットしないよう...
while(FastTimer(0)<20)
{
if(SENSOR_1>=50){OnFwd(OUT_A);OnRev(OUT_C);C...
}else if(SENSOR_1>48){OnFwd(OUT_A);ClearTime...
}else if(SENSOR_1>42){OnFwd(OUT_AC);ClearTim...
}else if(SENSOR_1>39){OnFwd(OUT_C);ClearTime...
}else{OnFwd(OUT_C);OnRev(OUT_A);
}
}
Off(OUT_AC);
Wait(100);
}
ボールを取リ終わった後は交差点を判断するために黒い線に一...
今度は交差点を渡る際のサブルーチンです。
sub cross_line()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
OnFwd(OUT_AC);
Wait(30);
Off(OUT_AC);
while(SENSOR_1<40)
{
OnFwd(OUT_A);
}
Off(OUT_A);
Wait(100);
}
交差点で止まった際に渡れるようにほんの少し前に出たのち、...
#define turn_left OnFwd(OUT_C);Wait(20);Off(OUT_C);
今度のプログラムはF→Eを渡る際に交差点と判断してしまうため...
task main()
{
ClearTimer(1);
follow_line();
OnFwd(OUT_A);
Wait(80);
Off(OUT_A);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
OnRev(OUT_B);
Wait(30);
Off(OUT_B);
OnRev(OUT_AC);
Wait(80);
Off(OUT_AC);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(50);
Off(OUT_AC);
ここまでのプログラムですが、上記した通りにKのルートまで移...
#ref(./KLJ.png,100%/このプログラムの動き)
その後はこの図のように、まずロボットが交差点を判断したと...
そのまま線に沿わせると来た道をたどって戻ってしまうので、...
follow_line();
follow_line();
ここで[follow_line]を二度続けている訳を説明すると、[cross...
cross_line();
follow_line();
cross_line();
follow_line();
ここではI→Hまでの移動です
turn_left;
follow line();
turn_left;
follow_line();
ここでは上記のように[cross_line]では線の上に沿えないので...
cross_line();
follow_line();
cross_line();
follow_line();
ここではD→C間の移動のプログラムです。
OnFwd(OUT_B);
OnRev(OUT_AC);
Wait(40);
Off(OUT_ABC);
OnFwd(OUT_AC);
Wait(60);
Off(OUT_AC);
Wait(80);
OnFwd(OUT_AC);
Wait(90);
Off(OUT_AC);
}
ここはシュートのプログラムとなっています。Bを交差点と判断...
*今回の反省点 [#dbb846a8]
まずボールを掴むというところまでは何度試してもほぼ必ず成...
コースに沿って動かす際にFとEの辺りで左に曲がるプログラム...
コースが予想以上に小さくロボットをもう少し小型化すること...
終了行:
[[2019a/Member]]
#contents
*課題2 [#x4e84a7f]
下の図のようなコースを各チームで作成し、「ミッション」を...
#ref(./idou.png,60%,今回のコース)
今回私は
A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(...
というルートを進むロボット、プログラムを作成した。
*今回作成したロボット [#e25ca079]
#ref(./4382.jpg,30%,今回作成したロボット)
今回のロボットでは左タイヤをA、右タイヤをC、ボールをつか...
#ref(./43828.jpg,30%,ボールをつかむところ)
最初は両側から挟み込むタイプにしていたが、ピンポイントで...
大きくすくうようなアームとボールの受け皿としてタイヤを使...
*今回のプログラムと解説 [#kbef24a8]
**レールに沿って動かすために [#me1eb9d2]
まず今回ロボットを光センサーでレール上を動かすために、
#ref(./light.png,30%,センサーの図)
この図のように線の左側に沿ってロボットが動くようにした。
簡単に説明をすると白くなると右へ行き、黒くなると左に、ち...
センサーでの値は周りの明るさにも大きく左右されるので、そ...
**交差点を判断するための動き [#t5560c57]
#ref(./cross.png,30%,交差点の図)
交差点を判断するために、まず図のようにレール上にセンサー...
その場合急なカーブに差し掛かった際に交差点と判断してしま...
交差点を判断し一時停止した後は別のサブルーチンでルートに...
**プログラムとコース上の動きの解説 [#o027f8b9]
まずはレール上を動く際のサブルーチン定義した
sub follow_line()
{
int t;
t=FastTimer(0);
int n;
n=FastTimer(1);
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(1)<1200)
{
if(SENSOR_1>=50){OnFwd(OUT_A);OnRev(OUT_C);Clear...
}else if(SENSOR_1>48){OnFwd(OUT_A);ClearTimer(0);
}else if(SENSOR_1>42){OnFwd(OUT_AC);ClearTimer(0);
}else if(SENSOR_1>39){OnFwd(OUT_C);ClearTimer(0);
}else{OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0);
}
}
ここではタイマーとライトの設定、そしてレール上を五段階で...
#ref(./MKL.png,40%/)
タイマーの1ではこのM→K→Lに移動する際に交差点と間違えない...
ですのでサブルーチン内ではタイマー1をリセットしないよう...
while(FastTimer(0)<20)
{
if(SENSOR_1>=50){OnFwd(OUT_A);OnRev(OUT_C);C...
}else if(SENSOR_1>48){OnFwd(OUT_A);ClearTime...
}else if(SENSOR_1>42){OnFwd(OUT_AC);ClearTim...
}else if(SENSOR_1>39){OnFwd(OUT_C);ClearTime...
}else{OnFwd(OUT_C);OnRev(OUT_A);
}
}
Off(OUT_AC);
Wait(100);
}
ボールを取リ終わった後は交差点を判断するために黒い線に一...
今度は交差点を渡る際のサブルーチンです。
sub cross_line()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
OnFwd(OUT_AC);
Wait(30);
Off(OUT_AC);
while(SENSOR_1<40)
{
OnFwd(OUT_A);
}
Off(OUT_A);
Wait(100);
}
交差点で止まった際に渡れるようにほんの少し前に出たのち、...
#define turn_left OnFwd(OUT_C);Wait(20);Off(OUT_C);
今度のプログラムはF→Eを渡る際に交差点と判断してしまうため...
task main()
{
ClearTimer(1);
follow_line();
OnFwd(OUT_A);
Wait(80);
Off(OUT_A);
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
OnRev(OUT_B);
Wait(30);
Off(OUT_B);
OnRev(OUT_AC);
Wait(80);
Off(OUT_AC);
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(50);
Off(OUT_AC);
ここまでのプログラムですが、上記した通りにKのルートまで移...
#ref(./KLJ.png,100%/このプログラムの動き)
その後はこの図のように、まずロボットが交差点を判断したと...
そのまま線に沿わせると来た道をたどって戻ってしまうので、...
follow_line();
follow_line();
ここで[follow_line]を二度続けている訳を説明すると、[cross...
cross_line();
follow_line();
cross_line();
follow_line();
ここではI→Hまでの移動です
turn_left;
follow line();
turn_left;
follow_line();
ここでは上記のように[cross_line]では線の上に沿えないので...
cross_line();
follow_line();
cross_line();
follow_line();
ここではD→C間の移動のプログラムです。
OnFwd(OUT_B);
OnRev(OUT_AC);
Wait(40);
Off(OUT_ABC);
OnFwd(OUT_AC);
Wait(60);
Off(OUT_AC);
Wait(80);
OnFwd(OUT_AC);
Wait(90);
Off(OUT_AC);
}
ここはシュートのプログラムとなっています。Bを交差点と判断...
*今回の反省点 [#dbb846a8]
まずボールを掴むというところまでは何度試してもほぼ必ず成...
コースに沿って動かす際にFとEの辺りで左に曲がるプログラム...
コースが予想以上に小さくロボットをもう少し小型化すること...
ページ名: