2014a/Member/sudo/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/Member]]
*メンバー紹介 [#c4873052]
sudo 須藤 海志(自分)
kiyo 清原 雅司
sakar 金子 まさし
totakeke 大森 武人
*課題説明 [#q361ca3e]
コース上に6個の紙コップが置かれてる。そのうち3個をもう...
参照 [[2014a/Mission2]]
*ロボット説明 [#q9d0fbaf]
**ドライブベース [#hf146656]
&ref(2014a/Member/sudo/Mission2/pic7.jpeg,タイヤ);
&ref(2014a/Member/sudo/Mission2/pic4.jpeg,タイヤ2);
(写真の向きはご了承ください)
小回りをきかせるために、動力となるタイヤ2つと後ろの補助...
これにより本体は非常に軽くなりアームやセンサーを付けても...
&ref(2014a/Member/sudo/Mission2/pic14.jpeg,25%,タイヤ3);
上記の写真のように前にセンサーを付けるためのブロックのス...
**アーム部分 [#d6cadae3]
&ref(2014a/Member/sudo/Mission2/pic5.jpeg,アーム);
&ref(2014a/Member/sudo/Mission2/pic10.jpeg,アーム2);
&ref(2014a/Member/sudo/Mission2/pic13.jpeg,アーム3);
アームは当初、開閉でモーターを1つと上下で1つ使いエレベ...
紙コップを持ち上げた時に上で動いてしまうと被せるときに合...
&ref(2014a/Member/sudo/Mission2/pic16.jpeg,25%,アーム4);
&ref(2014a/Member/sudo/Mission2/pic17.jpeg,25%,アーム5);
&ref(2014a/Member/sudo/Mission2/pic8.jpeg,アーム6);
アームを上げた時にモーターが邪魔になって上がり切らなかっ...
なので、左の写真中央やの黒いブロックと左の写真左側に見え...
開閉と上下をモーター1つでやるので初めは力が弱くて上まで...
**センサーと触覚 [#n2ece125]
&ref(2014a/Member/sudo/Mission2/pic18.jpeg,25%,センサー);
&ref(2014a/Member/sudo/Mission2/pic3.jpeg,センサー2);
センサーはドライブベースの前面にライン感知用の光センサー2...
当初は紙コップをタッチセンサーで判断させようと思いました...
&ref(2014a/Member/sudo/Mission2/pic15.jpeg,25%,センサー3);
触覚は黒い棒の両端に黄色の曲げられる筒を取り付けてありま...
ちょうど紙コップの直径と同じぐらいのものがあったのでそれ...
黄色の棒は外側に曲げるのと同時に少し下に曲げるのがコツで...
**全体 [#d2a99c1b]
&ref(2014a/Member/sudo/Mission2/pic1.jpeg,全体);
&ref(2014a/Member/sudo/Mission2/pic2.jpeg,全体);
&ref(2014a/Member/sudo/Mission2/pic9.jpeg,全体);
通信がうまくいかなかった為今回RCXを1台しか使えませんでし...
コンパクトを目指してつくりました。おかげでコップの隙間を...
羽は飾りです。
*プログラム [#p19cc171]
ライントレースはせずにラインを目印に使っています。基本的...
紙コップは白、鉛筆で塗った灰色、マジックで塗った黒の3つ...
固定してあるコップの位置と色は 灰色・・・1 白・・・2 黒...
全くの未完成プログラムです。スタートしAのコップを取りに行...
流れとしては Aのコップを取る→識別して置きに行く(3パター...
&ref(2014a/Member/sudo/Mission2/pic20.png,50%,図);
**定義 [#x0c7df1a]
#define black 40 ...
#define siro1 46 ...
#define kuro3 40 ...
#define right OnFwd(OUT_A);OnRev(OUT_C); ...
#define left OnFwd(OUT_C);OnRev(OUT_A); ...
#define go OnFwd(OUT_AC); ...
#define back OnRev(OUT_AC); ...
#define Stop Off(OUT_AC); ...
#define get OnFwd(OUT_B); ...
#define put OnRev(OUT_B);Wait(31);Off(OUT_B); ...
**Aのコップを取る動作の直前まで [#rfb70cec]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT); ...
go; ...
until (SENSOR_2 < black);
right; ...
Wait(74);
go; ...
Wait(212);
left; ...
Wait(31);
go; ...
until (SENSOR_2 < black);
Stop; ...
Wait(20);
SetSensor(SENSOR_3, SENSOR_LIGHT); ...
この時点でAのコップの前にいます。
ここからはコップをの色によって3パターンに場合分けします
**(1-1)Aでコップが白だった場合の2に置きに行くまで [#oa317...
if (SENSOR_3 >= siro1){ ...
ClearSensor(SENSOR_3); ...
get; ...
Wait(50); ...
back; ...
Wait(330);
left; ...
Wait(27);
go; ...
until (SENSOR_2 < black);
Stop;
back; ...
Wait(40);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
この時点で2のコップの前にいます
**(1-2)2の位置からCのコップを取るまで [#g62d7a3f]
back; ...
Wait(50);
right; ...
Wait(34);
go; ...
Wait(500); ...
until (SENSOR_2 < black); ...
Stop; ...
Wait(20);
SetSensor(SENSOR_3, SENSOR_LIGHT); ...
get; ...
Off(OUT_B);
} ...
この時点で位置Cにいます。
残念ながら流れではここまでです。
後は残りの2パターンです。
**(2-1)Aで灰色だった場合の1に置きに行くまで [#z1f340a8]
else if (SENSOR_3 <= siro1 && SENSOR_3 >= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
go; ...
Wait(110);
left; ...
Wait(98);
go; ...
Wait(500);
until (SENSOR_2 < black); ...
Stop;
back; ...
Wait(40);
Stop; ...
Wait(20);
put; ...
back;
Wait(50);
Stop; ...
この時点では1の位置にいます。
**(2-2)1の位置からCのコップを取りに行くまで [#mc1a7d90]
ロボットは外側を向いています
back; ...
Wait(200);
until (SENSOR_2 < black);
right; ...
Wait(145); ...
go; ...
Wait(200);
until (SENSOR_2 < black); ...
Stop; ...
この時点では位置Cの前にいます。
**(2-3)Cで黒だった場合の3に置きに行くまで [#mb176b0b]
この場合だけは置きに行くまでプログラムしてあります。
if (SENSOR_3 <= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
back; ...
Wait(200);
left; ...
Wait(130);
go; ...
Wait(250);
go; ...
until (SENSOR_2 < black);
back; ...
Wait(45);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
}
}
**(3-1)Aで黒だった場合の3に置きに行くまで [#u8b6e8a5]
else if (SENSOR_3 <= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
left; ...
Wait(66);
go; ...
Wait(350);
go; ...
until (SENSOR_2 < black); ...
back; ...
Wait(45);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
**(3-2)3の位置からCのコップを取りに行くまで [#w88600f4]
back; ...
Wait(50);
right; ...
Wait(116);
go; ...
Wait(100);
until (SENSOR_2 < black); ...
Stop;
get; ...
Off(OUT_B); ...
}
}
**付け足し [#h9155f42]
・光センサー2の前に光センサー3があるためラインを感知す...
・光センサー3はコップ識別のタイミングだけつける方が正確...
・コップの下以外にコップまでの直線上にラインがある場合は...
*コメント [#w0fdf654]
・すべてifを使って場合分けだけで作ったのですが、もう少し...
・時間が足りず完成させられなかったのが後悔です。
・電池の消耗とともに少しずつ動きが変わるので大変でした。
終了行:
[[2014a/Member]]
*メンバー紹介 [#c4873052]
sudo 須藤 海志(自分)
kiyo 清原 雅司
sakar 金子 まさし
totakeke 大森 武人
*課題説明 [#q361ca3e]
コース上に6個の紙コップが置かれてる。そのうち3個をもう...
参照 [[2014a/Mission2]]
*ロボット説明 [#q9d0fbaf]
**ドライブベース [#hf146656]
&ref(2014a/Member/sudo/Mission2/pic7.jpeg,タイヤ);
&ref(2014a/Member/sudo/Mission2/pic4.jpeg,タイヤ2);
(写真の向きはご了承ください)
小回りをきかせるために、動力となるタイヤ2つと後ろの補助...
これにより本体は非常に軽くなりアームやセンサーを付けても...
&ref(2014a/Member/sudo/Mission2/pic14.jpeg,25%,タイヤ3);
上記の写真のように前にセンサーを付けるためのブロックのス...
**アーム部分 [#d6cadae3]
&ref(2014a/Member/sudo/Mission2/pic5.jpeg,アーム);
&ref(2014a/Member/sudo/Mission2/pic10.jpeg,アーム2);
&ref(2014a/Member/sudo/Mission2/pic13.jpeg,アーム3);
アームは当初、開閉でモーターを1つと上下で1つ使いエレベ...
紙コップを持ち上げた時に上で動いてしまうと被せるときに合...
&ref(2014a/Member/sudo/Mission2/pic16.jpeg,25%,アーム4);
&ref(2014a/Member/sudo/Mission2/pic17.jpeg,25%,アーム5);
&ref(2014a/Member/sudo/Mission2/pic8.jpeg,アーム6);
アームを上げた時にモーターが邪魔になって上がり切らなかっ...
なので、左の写真中央やの黒いブロックと左の写真左側に見え...
開閉と上下をモーター1つでやるので初めは力が弱くて上まで...
**センサーと触覚 [#n2ece125]
&ref(2014a/Member/sudo/Mission2/pic18.jpeg,25%,センサー);
&ref(2014a/Member/sudo/Mission2/pic3.jpeg,センサー2);
センサーはドライブベースの前面にライン感知用の光センサー2...
当初は紙コップをタッチセンサーで判断させようと思いました...
&ref(2014a/Member/sudo/Mission2/pic15.jpeg,25%,センサー3);
触覚は黒い棒の両端に黄色の曲げられる筒を取り付けてありま...
ちょうど紙コップの直径と同じぐらいのものがあったのでそれ...
黄色の棒は外側に曲げるのと同時に少し下に曲げるのがコツで...
**全体 [#d2a99c1b]
&ref(2014a/Member/sudo/Mission2/pic1.jpeg,全体);
&ref(2014a/Member/sudo/Mission2/pic2.jpeg,全体);
&ref(2014a/Member/sudo/Mission2/pic9.jpeg,全体);
通信がうまくいかなかった為今回RCXを1台しか使えませんでし...
コンパクトを目指してつくりました。おかげでコップの隙間を...
羽は飾りです。
*プログラム [#p19cc171]
ライントレースはせずにラインを目印に使っています。基本的...
紙コップは白、鉛筆で塗った灰色、マジックで塗った黒の3つ...
固定してあるコップの位置と色は 灰色・・・1 白・・・2 黒...
全くの未完成プログラムです。スタートしAのコップを取りに行...
流れとしては Aのコップを取る→識別して置きに行く(3パター...
&ref(2014a/Member/sudo/Mission2/pic20.png,50%,図);
**定義 [#x0c7df1a]
#define black 40 ...
#define siro1 46 ...
#define kuro3 40 ...
#define right OnFwd(OUT_A);OnRev(OUT_C); ...
#define left OnFwd(OUT_C);OnRev(OUT_A); ...
#define go OnFwd(OUT_AC); ...
#define back OnRev(OUT_AC); ...
#define Stop Off(OUT_AC); ...
#define get OnFwd(OUT_B); ...
#define put OnRev(OUT_B);Wait(31);Off(OUT_B); ...
**Aのコップを取る動作の直前まで [#rfb70cec]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT); ...
go; ...
until (SENSOR_2 < black);
right; ...
Wait(74);
go; ...
Wait(212);
left; ...
Wait(31);
go; ...
until (SENSOR_2 < black);
Stop; ...
Wait(20);
SetSensor(SENSOR_3, SENSOR_LIGHT); ...
この時点でAのコップの前にいます。
ここからはコップをの色によって3パターンに場合分けします
**(1-1)Aでコップが白だった場合の2に置きに行くまで [#oa317...
if (SENSOR_3 >= siro1){ ...
ClearSensor(SENSOR_3); ...
get; ...
Wait(50); ...
back; ...
Wait(330);
left; ...
Wait(27);
go; ...
until (SENSOR_2 < black);
Stop;
back; ...
Wait(40);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
この時点で2のコップの前にいます
**(1-2)2の位置からCのコップを取るまで [#g62d7a3f]
back; ...
Wait(50);
right; ...
Wait(34);
go; ...
Wait(500); ...
until (SENSOR_2 < black); ...
Stop; ...
Wait(20);
SetSensor(SENSOR_3, SENSOR_LIGHT); ...
get; ...
Off(OUT_B);
} ...
この時点で位置Cにいます。
残念ながら流れではここまでです。
後は残りの2パターンです。
**(2-1)Aで灰色だった場合の1に置きに行くまで [#z1f340a8]
else if (SENSOR_3 <= siro1 && SENSOR_3 >= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
go; ...
Wait(110);
left; ...
Wait(98);
go; ...
Wait(500);
until (SENSOR_2 < black); ...
Stop;
back; ...
Wait(40);
Stop; ...
Wait(20);
put; ...
back;
Wait(50);
Stop; ...
この時点では1の位置にいます。
**(2-2)1の位置からCのコップを取りに行くまで [#mc1a7d90]
ロボットは外側を向いています
back; ...
Wait(200);
until (SENSOR_2 < black);
right; ...
Wait(145); ...
go; ...
Wait(200);
until (SENSOR_2 < black); ...
Stop; ...
この時点では位置Cの前にいます。
**(2-3)Cで黒だった場合の3に置きに行くまで [#mb176b0b]
この場合だけは置きに行くまでプログラムしてあります。
if (SENSOR_3 <= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
back; ...
Wait(200);
left; ...
Wait(130);
go; ...
Wait(250);
go; ...
until (SENSOR_2 < black);
back; ...
Wait(45);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
}
}
**(3-1)Aで黒だった場合の3に置きに行くまで [#u8b6e8a5]
else if (SENSOR_3 <= kuro3){ ...
ClearSensor(SENSOR_3); ...
get; ...
left; ...
Wait(66);
go; ...
Wait(350);
go; ...
until (SENSOR_2 < black); ...
back; ...
Wait(45);
Stop; ...
Wait(20);
put; ...
back; ...
Wait(50);
Stop;
**(3-2)3の位置からCのコップを取りに行くまで [#w88600f4]
back; ...
Wait(50);
right; ...
Wait(116);
go; ...
Wait(100);
until (SENSOR_2 < black); ...
Stop;
get; ...
Off(OUT_B); ...
}
}
**付け足し [#h9155f42]
・光センサー2の前に光センサー3があるためラインを感知す...
・光センサー3はコップ識別のタイミングだけつける方が正確...
・コップの下以外にコップまでの直線上にラインがある場合は...
*コメント [#w0fdf654]
・すべてifを使って場合分けだけで作ったのですが、もう少し...
・時間が足りず完成させられなかったのが後悔です。
・電池の消耗とともに少しずつ動きが変わるので大変でした。
ページ名: