2016b/Member/yugu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
* 課題 [#b4e354e7]
光センサを一つ用いてライントレースをするロボットを作成す...
** 目標 [#v82ad74a]
画像のコースを次の手順で走行するロボットの作成。またロボ...
#ref(課題2-コース.png)
Aスタート → P直進 → Q直進 → (ピンポン玉をキャッチ) → Q直...
また、交差点では一秒間停止する。
* ロボットの説明 [#wd9f06ae]
** 機体全体の説明 [#n1c5c10b]
コースには多くのコーナーや急なカーブがある。よって、小回...
#ref(機体全体1.png)
#ref(機体全体2.png)
#ref(タイヤとスペーサー.png)
** アームの説明 [#e14035ea]
黄色いアームで左右から挟む方法でピンポン球をキャッチする...
#ref(アーム1.png)
#ref(アームのモータ1.png)
* プログラムの説明 [#c453f9e7]
** 定義の説明 [#c1accb72]
#define MASHIRO 52 //光センサが白を認識するしきい値
#define SHIRO 48 //光センサが灰色寄りの白を認識する...
#define HAIIRO 42 //光センサが灰色を認識するしきい値
#define KURO 39 //光センサが灰色寄りの黒を認識するし...
#define MOVE_TIME 23 //光センサが黒を認識し続けて、...
#define OFF_TIME 100 //ロボットがピンポン球をつかむ前...
#define go_forward OnFwd(OUT_AC); //ロボットを前進
#define turn_right OnFwd(OUT_A);Off(OUT_C); //ロボッ...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C); //ロ...
#define turn_left OnFwd(OUT_C);Off(OUT_A); //ロボッ...
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //ロ...
#define go_back OnRev(OUT_AC); //ロボットを後退
#define tukamu Off(OUT_AC);Wait(OFF_TIME);OnRev(OUT_B);...
#define hanasu Off(OUT_AC);Wait(OFF_TIME);OnFwd(OUT_B);...
#define tjiro Off(OUT_AC);Wait(50);go_back;Wait(40); ...
**サブルーチンの説明 [#o627cdf3]
sub kihon()
{
if(SENSOR_3>MASHIRO){
senkai_right;
ClearTimer(0); //白ければ右旋回
}
else if(SENSOR_3>SHIRO){
turn_right;
ClearTimer(0); //灰色よりの白ならば...
}
else if(SENSOR_3>HAIIRO){
go_forward;
ClearTimer(0); //灰色なら前に直進
}
else if(SENSOR_3>KURO){
turn_left;
ClearTimer(0); //灰色寄りの黒ならば...
}
else{
senkai_left; //黒ならば左旋回
}
}
交差点以外ではこのプログラムのとおりにロボットが動くよう...
** メインプログラムの説明 [#ee19f067]
task main()
{
int n=0;
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetPower(OUT_AC,3);
SetPower(OUT_B,2);
while(n<=7){
ClearTimer(0);
while(FastTimer(0)<MOVE_TIME){
kihon();
} //交差点以外でのロボットの挙動
senkai_right;
Wait(MOVE_TIME+4); //交差点を認識し、コース...
Off(OUT_AC);
Wait(100); //交差点で一秒止まる
go_forward;
Wait(28); //T字路か十字路か判断するために前...
n++; //交差点を数える
if(SENSOR_3>MASHIRO){ //前進した先が白かった...
if(n==4){
tjiro; //小休止後、コースに戻るため...
turn_right;
Wait(23); //右折して交差点から脱出
}
if(n==6){
tjiro; //小休止後、コースに戻るため...
turn_left;
Wait(43); //左折して交差点から脱出
}
}
if(n==2){
ClearTimer(1);
while(FastTimer(1)<150){ //ピンポン球があ...
kihon();
}
tukamu; //ピンポン球をつかむ
}
if(n==7){
hanasu;
Off(OUT_AC); //ピンポン球を離す
}
}
Off(OUT_AC);
}
ピンポン球をつかむ際に、アームの勢いが強いとピンポン球を...
交差点でT字路か十字路か判断するためにすこし前進する時、前...
直線をジグザグに進むとロボットが遅くなるため、しきい値SHI...
* 結果 [#ve38ab95]
一度だけゴールまで進んだが、ほとんどの試行で誤作動をおこ...
* 考察 [#g298e60d]
** 頻繁に起きた誤作動とその理由 [#p81b9faa]
・交差点を認識せずに走行
(理由)交差点を判断するための時間が長すぎるまたは黒を判...
・車輪が抜ける
(理由)カーブやT字路を曲がったあとに頻繁におきたため、車...
・車輪が空回りをする
(理由)タイヤの劣化のため、モーターもギアも回っているの...
* 感想 [#h65302b8]
誤作動が多く起こるなどうまくいかないことが多かった。ただ...
終了行:
目次
#contents
* 課題 [#b4e354e7]
光センサを一つ用いてライントレースをするロボットを作成す...
** 目標 [#v82ad74a]
画像のコースを次の手順で走行するロボットの作成。またロボ...
#ref(課題2-コース.png)
Aスタート → P直進 → Q直進 → (ピンポン玉をキャッチ) → Q直...
また、交差点では一秒間停止する。
* ロボットの説明 [#wd9f06ae]
** 機体全体の説明 [#n1c5c10b]
コースには多くのコーナーや急なカーブがある。よって、小回...
#ref(機体全体1.png)
#ref(機体全体2.png)
#ref(タイヤとスペーサー.png)
** アームの説明 [#e14035ea]
黄色いアームで左右から挟む方法でピンポン球をキャッチする...
#ref(アーム1.png)
#ref(アームのモータ1.png)
* プログラムの説明 [#c453f9e7]
** 定義の説明 [#c1accb72]
#define MASHIRO 52 //光センサが白を認識するしきい値
#define SHIRO 48 //光センサが灰色寄りの白を認識する...
#define HAIIRO 42 //光センサが灰色を認識するしきい値
#define KURO 39 //光センサが灰色寄りの黒を認識するし...
#define MOVE_TIME 23 //光センサが黒を認識し続けて、...
#define OFF_TIME 100 //ロボットがピンポン球をつかむ前...
#define go_forward OnFwd(OUT_AC); //ロボットを前進
#define turn_right OnFwd(OUT_A);Off(OUT_C); //ロボッ...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C); //ロ...
#define turn_left OnFwd(OUT_C);Off(OUT_A); //ロボッ...
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //ロ...
#define go_back OnRev(OUT_AC); //ロボットを後退
#define tukamu Off(OUT_AC);Wait(OFF_TIME);OnRev(OUT_B);...
#define hanasu Off(OUT_AC);Wait(OFF_TIME);OnFwd(OUT_B);...
#define tjiro Off(OUT_AC);Wait(50);go_back;Wait(40); ...
**サブルーチンの説明 [#o627cdf3]
sub kihon()
{
if(SENSOR_3>MASHIRO){
senkai_right;
ClearTimer(0); //白ければ右旋回
}
else if(SENSOR_3>SHIRO){
turn_right;
ClearTimer(0); //灰色よりの白ならば...
}
else if(SENSOR_3>HAIIRO){
go_forward;
ClearTimer(0); //灰色なら前に直進
}
else if(SENSOR_3>KURO){
turn_left;
ClearTimer(0); //灰色寄りの黒ならば...
}
else{
senkai_left; //黒ならば左旋回
}
}
交差点以外ではこのプログラムのとおりにロボットが動くよう...
** メインプログラムの説明 [#ee19f067]
task main()
{
int n=0;
SetSensor(SENSOR_3,SENSOR_LIGHT);
SetPower(OUT_AC,3);
SetPower(OUT_B,2);
while(n<=7){
ClearTimer(0);
while(FastTimer(0)<MOVE_TIME){
kihon();
} //交差点以外でのロボットの挙動
senkai_right;
Wait(MOVE_TIME+4); //交差点を認識し、コース...
Off(OUT_AC);
Wait(100); //交差点で一秒止まる
go_forward;
Wait(28); //T字路か十字路か判断するために前...
n++; //交差点を数える
if(SENSOR_3>MASHIRO){ //前進した先が白かった...
if(n==4){
tjiro; //小休止後、コースに戻るため...
turn_right;
Wait(23); //右折して交差点から脱出
}
if(n==6){
tjiro; //小休止後、コースに戻るため...
turn_left;
Wait(43); //左折して交差点から脱出
}
}
if(n==2){
ClearTimer(1);
while(FastTimer(1)<150){ //ピンポン球があ...
kihon();
}
tukamu; //ピンポン球をつかむ
}
if(n==7){
hanasu;
Off(OUT_AC); //ピンポン球を離す
}
}
Off(OUT_AC);
}
ピンポン球をつかむ際に、アームの勢いが強いとピンポン球を...
交差点でT字路か十字路か判断するためにすこし前進する時、前...
直線をジグザグに進むとロボットが遅くなるため、しきい値SHI...
* 結果 [#ve38ab95]
一度だけゴールまで進んだが、ほとんどの試行で誤作動をおこ...
* 考察 [#g298e60d]
** 頻繁に起きた誤作動とその理由 [#p81b9faa]
・交差点を認識せずに走行
(理由)交差点を判断するための時間が長すぎるまたは黒を判...
・車輪が抜ける
(理由)カーブやT字路を曲がったあとに頻繁におきたため、車...
・車輪が空回りをする
(理由)タイヤの劣化のため、モーターもギアも回っているの...
* 感想 [#h65302b8]
誤作動が多く起こるなどうまくいかないことが多かった。ただ...
ページ名: