2016b/Member/zaurusu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題2 [#df722398]
**コース [#xeb5023e]
#ref(2016b/Member/zaurusu/Mission2/2016b-mission2_a.png,6...
**ミッション [#o355c3dc]
B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ、...
Bスタート → R直進 → P右折 → Q直進 → (ピンポン玉をキャッチ...
・なるべく速く正確に動くロボットになるように工夫して、交...
・ピンポン玉はQ近くの3/4円周上ならどこにおいてもよい。
・可能であればC,Dのゴールエリアライン上からシュートする。
*ロボットの説明 [#nf08b60a]
**ロボットの全体 [#pdcfe965]
2つの車輪で前に進み、前方のアームでピンポン玉を捕まえる。
今回のライントレースは半径4?の半円があるため、機体を小さ...
#ref(2016b/Member/zaurusu/Mission2/DSC_0364.JPG,100%,ロボ...
**ロボットのアーム [#nb5c2212]
機体の上にギアを取り付けて、軸を動かすことにより動力を伝...
#ref(2016b/Member/zaurusu/Mission2/DSC_0365.JPG,100%,アー...
光センサーはアームの接続部分に装着してある。
片方のアームに付いている軸を回すことで、もう一方のアーム...
#ref(2016b/Member/zaurusu/Mission2/DSC_0367.JPG,100%,アー...
**ロボットの車体 [#k4e2458c]
車体の中央に付近にギアを取り付け、車輪のギアに直接動力を...
#ref(2016b/Member/zaurusu/Mission2/DSC_0366.JPG,100%,ロボ...
摩擦力を低下させるため、車体裏側後方に丸いブロックを装着...
車輪の動力となるギアは可能な限り横幅をなくすために、互い...
#ref(2016b/Member/zaurusu/Mission2/DSC_0369.JPG,100%,ロボ...
**ロボットの基本的な動作 [#j3ce42f5]
ロボットには光センサーが装着してあり、反射してくる光の明...
交差点では黒い値をある秒数(今回は0.25秒)以上感知し続けた...
*プログラム [#bc43c67d]
十字路は基本的にまっすぐ進むようにしてあり、T字路は右に進...
2つめの交差点後はピンポン玉をつかむ必要があるため、惰性...
電圧低下により毎回同様の動作をしないため、曲がった後に多...
#define white 50//光センサーの白に対する下限値
#define white_grey 47//光センサーの灰色よりも少し白い色...
#define grey 44//光センサーの灰色に対する下限値
#define black_grey 41//光センサーの灰色よりも少し黒い色...
#define black 38//光センサーの黒に対する下限値
#define turn_right OnFwd(OUT_A);Off(OUT_C);//右に曲がる
#define turn_left Off(OUT_A);OnFwd(OUT_C);//左に曲がる
#define go OnFwd(OUT_AC);//真っ直ぐ進む
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回
#define back OnRev(OUT_AC);//後ろに進む
#define Stop Off(OUT_AC);Wait(100);//1秒間停止
int n=0;//nは交差点の回数
sub usually()//ロボットの基本的な動作
{
if(SENSOR_3>white)
{
senkai_right;ClearTimer(0);//白色ならば右に旋回
}
else if(SENSOR_3>white_grey)
{
turn_right;ClearTimer(0);//白色より少し黒いならば右に...
}
else if(SENSOR_3>grey)
{
go;ClearTimer(0);//灰色ならばまっすぐ進む
}
else if(SENSOR_3>black_grey)
{
turn_left;ClearTimer(0);//黒色より少し白いならば左に曲...
}
else if(SENSOR_3>black)
{
senkai_left;//黒色ならば左に旋回
}
}
sub turn_right_t()//T字路の動作
{
if(n==4)//4回目の交差点(T字路)
{
if(SENSOR_3>white_grey)
{
Off(OUT_AC);Wait(100);
back;Wait(050);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
Stop;
}
}
if(n==6)//6回目の交差点(T字路)
{
if(SENSOR_3>white_grey)
{
Off(OUT_AC);Wait(100);
back;Wait(060);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
Stop;
}
}
}
sub tashikame()//交差点を判断した後の動作
{
senkai_right;Wait(021);
Stop;
go;Wait(050);
n++;//交差点のカウント
}
sub kousaten_ichi()//交差点1つめの動作
{
if(n==1)
{
PlaySound(SOUND_CLICK);
back;Wait(050);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
}
}
sub kousaten_nana()//交差点7つめ(ゴール)の動作
{
if(n==7)
{
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(060);//ゴールから少し離れる
Off(OUT_AC);
OnFwd(OUT_B);Wait(012);//アームを開く
Off(OUT_B);
go;Wait(060);//ボールをシュートする
while(n==7)//全体の動作終了
{
Off(OUT_AC);
}
}
}
task main()//メインプログラム
{
ClearTimer(0);
SetSensor(SENSOR_3, SENSOR_LIGHT);
while(true)
{
while(FastTimer(0)<025)//交差点の判断は0.25秒にした
{
usually();
}
tashikame();
kousaten_ichi();
ClearTimer(0);
ClearTimer(1);
if(n==2)//交差点2つめの動作
{
while(FastTimer(1)<050)//線上を0.5秒間進む
{
usually();
}
Off(OUT_AC);//車輪停止
OnFwd(OUT_B);Wait(012);Off(OUT_B);Wait(050);//アー...
ClearTimer(1);
while(FastTimer(1)<100)//線上を1秒間進む
{
usually();
}
Off(OUT_AC);//車輪停止
OnRev(OUT_B);Wait(015);Off(OUT_B);Wait(050);//ピン...
ClearTimer(1);
while(FastTimer(1)<400)//4秒間線上を進む
{
usually();
}
}
kousaten_nana();
turn_right_t();
ClearTimer(1);
while(FastTimer(1)<200)//曲がった直後に2秒間進む
{
usually();
}
}
}
*まとめ [#w055892a]
**結果 [#v7107b21]
最後のゴールまでピンポン玉を運ぶことができた。しかし、機...
**感想 [#n61bb423]
交差点で曲がる際に電圧低下などによって毎回変化して曲がる...
改善点として機体の重心をもう少しだけ後ろにすればバックの...
終了行:
目次
#contents
*課題2 [#df722398]
**コース [#xeb5023e]
#ref(2016b/Member/zaurusu/Mission2/2016b-mission2_a.png,6...
**ミッション [#o355c3dc]
B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ、...
Bスタート → R直進 → P右折 → Q直進 → (ピンポン玉をキャッチ...
・なるべく速く正確に動くロボットになるように工夫して、交...
・ピンポン玉はQ近くの3/4円周上ならどこにおいてもよい。
・可能であればC,Dのゴールエリアライン上からシュートする。
*ロボットの説明 [#nf08b60a]
**ロボットの全体 [#pdcfe965]
2つの車輪で前に進み、前方のアームでピンポン玉を捕まえる。
今回のライントレースは半径4?の半円があるため、機体を小さ...
#ref(2016b/Member/zaurusu/Mission2/DSC_0364.JPG,100%,ロボ...
**ロボットのアーム [#nb5c2212]
機体の上にギアを取り付けて、軸を動かすことにより動力を伝...
#ref(2016b/Member/zaurusu/Mission2/DSC_0365.JPG,100%,アー...
光センサーはアームの接続部分に装着してある。
片方のアームに付いている軸を回すことで、もう一方のアーム...
#ref(2016b/Member/zaurusu/Mission2/DSC_0367.JPG,100%,アー...
**ロボットの車体 [#k4e2458c]
車体の中央に付近にギアを取り付け、車輪のギアに直接動力を...
#ref(2016b/Member/zaurusu/Mission2/DSC_0366.JPG,100%,ロボ...
摩擦力を低下させるため、車体裏側後方に丸いブロックを装着...
車輪の動力となるギアは可能な限り横幅をなくすために、互い...
#ref(2016b/Member/zaurusu/Mission2/DSC_0369.JPG,100%,ロボ...
**ロボットの基本的な動作 [#j3ce42f5]
ロボットには光センサーが装着してあり、反射してくる光の明...
交差点では黒い値をある秒数(今回は0.25秒)以上感知し続けた...
*プログラム [#bc43c67d]
十字路は基本的にまっすぐ進むようにしてあり、T字路は右に進...
2つめの交差点後はピンポン玉をつかむ必要があるため、惰性...
電圧低下により毎回同様の動作をしないため、曲がった後に多...
#define white 50//光センサーの白に対する下限値
#define white_grey 47//光センサーの灰色よりも少し白い色...
#define grey 44//光センサーの灰色に対する下限値
#define black_grey 41//光センサーの灰色よりも少し黒い色...
#define black 38//光センサーの黒に対する下限値
#define turn_right OnFwd(OUT_A);Off(OUT_C);//右に曲がる
#define turn_left Off(OUT_A);OnFwd(OUT_C);//左に曲がる
#define go OnFwd(OUT_AC);//真っ直ぐ進む
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回
#define back OnRev(OUT_AC);//後ろに進む
#define Stop Off(OUT_AC);Wait(100);//1秒間停止
int n=0;//nは交差点の回数
sub usually()//ロボットの基本的な動作
{
if(SENSOR_3>white)
{
senkai_right;ClearTimer(0);//白色ならば右に旋回
}
else if(SENSOR_3>white_grey)
{
turn_right;ClearTimer(0);//白色より少し黒いならば右に...
}
else if(SENSOR_3>grey)
{
go;ClearTimer(0);//灰色ならばまっすぐ進む
}
else if(SENSOR_3>black_grey)
{
turn_left;ClearTimer(0);//黒色より少し白いならば左に曲...
}
else if(SENSOR_3>black)
{
senkai_left;//黒色ならば左に旋回
}
}
sub turn_right_t()//T字路の動作
{
if(n==4)//4回目の交差点(T字路)
{
if(SENSOR_3>white_grey)
{
Off(OUT_AC);Wait(100);
back;Wait(050);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
Stop;
}
}
if(n==6)//6回目の交差点(T字路)
{
if(SENSOR_3>white_grey)
{
Off(OUT_AC);Wait(100);
back;Wait(060);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
Stop;
}
}
}
sub tashikame()//交差点を判断した後の動作
{
senkai_right;Wait(021);
Stop;
go;Wait(050);
n++;//交差点のカウント
}
sub kousaten_ichi()//交差点1つめの動作
{
if(n==1)
{
PlaySound(SOUND_CLICK);
back;Wait(050);
go;Wait(030);
senkai_right;Wait(057);
go;Wait(030);
}
}
sub kousaten_nana()//交差点7つめ(ゴール)の動作
{
if(n==7)
{
Off(OUT_AC);Wait(100);
OnRev(OUT_AC);Wait(060);//ゴールから少し離れる
Off(OUT_AC);
OnFwd(OUT_B);Wait(012);//アームを開く
Off(OUT_B);
go;Wait(060);//ボールをシュートする
while(n==7)//全体の動作終了
{
Off(OUT_AC);
}
}
}
task main()//メインプログラム
{
ClearTimer(0);
SetSensor(SENSOR_3, SENSOR_LIGHT);
while(true)
{
while(FastTimer(0)<025)//交差点の判断は0.25秒にした
{
usually();
}
tashikame();
kousaten_ichi();
ClearTimer(0);
ClearTimer(1);
if(n==2)//交差点2つめの動作
{
while(FastTimer(1)<050)//線上を0.5秒間進む
{
usually();
}
Off(OUT_AC);//車輪停止
OnFwd(OUT_B);Wait(012);Off(OUT_B);Wait(050);//アー...
ClearTimer(1);
while(FastTimer(1)<100)//線上を1秒間進む
{
usually();
}
Off(OUT_AC);//車輪停止
OnRev(OUT_B);Wait(015);Off(OUT_B);Wait(050);//ピン...
ClearTimer(1);
while(FastTimer(1)<400)//4秒間線上を進む
{
usually();
}
}
kousaten_nana();
turn_right_t();
ClearTimer(1);
while(FastTimer(1)<200)//曲がった直後に2秒間進む
{
usually();
}
}
}
*まとめ [#w055892a]
**結果 [#v7107b21]
最後のゴールまでピンポン玉を運ぶことができた。しかし、機...
**感想 [#n61bb423]
交差点で曲がる際に電圧低下などによって毎回変化して曲がる...
改善点として機体の重心をもう少しだけ後ろにすればバックの...
ページ名: