2014a/Member/kiyo/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/MemberOnly/進行状況]]
#contents
*メンバー [#q3493514]
清原 雅司 (kiyo)
須藤 海志 (sudo)
金子 まさし (sakar)
大森 武人 (totakeke)
*課題 [#ab398598]
[[2014a/Mission2]]
&ref(2014a/Member/kiyo/Mission2/2014a-mission2.png);
A,B,C(サイコロで開始時に決定)に置かれた紙コップを区別して...
*ロボット本体 [#y087f47f]
**全体像 [#ea4d7960]
&ref(2014a/Member/kiyo/Mission2/image21.jpeg);
"Simple is The Best"を目指し、無駄を極力避け、機能美を追...
&ref(2014a/Member/kiyo/Mission2/image22.jpeg);
横から見たところ。
&ref(2014a/Member/kiyo/Mission2/image33.jpeg);
アームで紙コップを持ち上げたところ。4つのタイヤとアームの...
**ベース [#m656d25a]
&ref(2014a/Member/kiyo/Mission2/image36.jpeg);
小型化に貢献したドライブベースです。モーターでそれぞれ独...
&ref(2014a/Member/kiyo/Mission2/image37.jpeg);
裏から見たところ。
&ref(2014a/Member/kiyo/Mission2/image53.jpeg);
一部分解。お気に入りの後ろタイヤ。
**アーム [#ef82d271]
&ref(2014a/Member/kiyo/Mission2/image45.jpeg);
見本を元に作りました。1つのモーターでアームの開閉、昇降を...
アームが垂直になるまで上がり切ってしまうと紙コップを掴む...
&ref(2014a/Member/kiyo/Mission2/image43.jpeg);
裏から見たところ。
&ref(2014a/Member/kiyo/Mission2/image48.jpeg);
前から見たところ。
&ref(2014a/Member/kiyo/Mission2/image47.jpeg);
モーターにつながるところに白い歯車を使うことで、モーター...
&ref(2014a/Member/kiyo/Mission2/image28.jpeg);
灰色のラインがワンポイントです。
**ガイド(触覚) [#o320d231]
&ref(2014a/Member/kiyo/Mission2/image25.jpeg);
多少の誤差があっても紙コップを同じ場所にすることができる...
&ref(2014a/Member/kiyo/Mission2/image51.jpeg);
紙コップの大きさにピッタリです。
*プログラム[#z7bdda83]
色で紙コップを区別して場合分けするプログラムを作った。
ロボコン(8/7実施)時より、サブルーチンを使ってまとめた。
#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 Stop Off(OUT_AC); // 両方のタイヤを止め、停止す...
#define get OnFwd(OUT_B); // アーム用のモーターを前に回...
#define put OnRev(OUT_B);Wait(31);Off(OUT_B); // 31セン...
(回し過ぎると激しくアームを下ろし、損傷の恐れ。少ないと...
sub STARTtoA() // STARTからAへ行くプログラム。
{
go;
until (SENSOR_2 < black); // START前の黒い線を認識す...
right;
Wait(74); // 2に置いてある紙コップに当たらない程度に...
go;
Wait(212); // 2の紙コップを越えるぐらいに前進する。
left;
Wait(31); // Aの紙コップをガイドが捉えられる角度まで...
go;
until (SENSOR_2 < black); // Aの紙コップを捉え、少し...
Stop; // 止まる。
Wait(20); // 前進後のブレが収まるのを待つ。
}
sub Ato2() // Aから2へ行くプログラム。
{
get; // 紙コップを掴む。
Wait(50); // 紙コップを掴んだ後のブレが収まるまで待...
back;
Wait(330); // ガイドで2に置いてある紙コップを正面か...
left;
Wait(27); // 2の紙コップをガイドが捉えられる角度まで...
go;
until (SENSOR_2 < black); // 2の紙コップを捉え、少し...
Stop;
back;
Wait(40); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 2toC() // 2からCへ行くプログラム。
{
back;
Wait(50); // 前進するときに2の紙コップに当たらない程...
right;
Wait(34); // Cに置いてある紙コップをガイドが捉えられ...
go;
Wait(500); // Cの紙コップの手前の黒い線を越えるまで...
Wait(500); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop;
Wait(20); // 前進後のブレが収まるのを待つ。
SetSensor(SENSOR_3, SENSOR_LIGHT); 紙コップに当たっ...
get; // 紙コップを掴む。
SetSensor(SENSOR_3, SENSOR_LIGHT); // 紙コップに当た...
get; // 紙コップを掴む。本当はここから次のサブルーチ...
Off(OUT_B); // アームのモーターを止める。
}
sub Ato1() // Aから1へ行くプログラム。
{
get; // 紙コップを掴む。
go;
Wait(110); // 2の紙コップに当たらない程度に前進する。
left;
Wait(98); // 1の紙コップをガイドが捉えられる角度まで...
go;
Wait(500); // 1の紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // 1の紙コップを捉え、少し...
Stop;
back;
Wait(40); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 1toC() // 1からCへ行くプログラム。
{
back;
Wait(200); // 2,3の紙コップに当たらないように後退す...
until (SENSOR_2 < black); // 2と3をつなぐ線を光セン...
right;
Wait(145); // Cに置いてある紙コップをガイドが捉えら...
go;
Wait(200); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop; // 止まる。
}
sub Cto3() // Cから3へ行くプログラム。
{
get; // 紙コップを掴む。
back;
Wait(200); // 旋回するときにCの紙コップに当たらない...
left;
Wait(130); // 3の紙コップをガイドが捉えられる角度ま...
go;
Wait(250); // 3の紙コップの手前の黒い線を越えるまで...
go;
until (SENSOR_2 < black); // 3の紙コップを捉え、少し...
back;
Wait(45); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub Ato3() // Aから3へ行くプログラム。
{
get; // 紙コップを掴む。
left;
Wait(66); // 3の紙コップをガイドが捉えられる角度まで...
go;
Wait(350); // 3の紙コップの手前の黒い線を越えるまで...
go;
until (SENSOR_2 < black); // 3の紙コップを捉え、少し...
back;
Wait(45); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 3toC() // 3からCへ行くプログラム。
{
back;
Wait(50); // 旋回するときに3の紙コップに当たらないよ...
right;
Wait(116); // Cの紙コップをガイドが捉えられる角度ま...
go;
Wait(100); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop;
get; // 紙コップを掴む。本当はここから次のサブルーチ...
Off(OUT_B); // アームのモーターを止める。
}
task main() // メインのプログラム。
{
SetSensor(SENSOR_2, SENSOR_LIGHT); // ライントレース...
STARTtoA();
SetSensor(SENSOR_3, SENSOR_LIGHT); // 紙コップに当た...
if (SENSOR_3 >= siro1){ // Aで白色の紙コップだと判断...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato2(); // Aから2へ行く。
2toC(); // 2からCへ行く。
}
else if (SENSOR_3 <= siro1 && SENSOR_3 >= kuro3){ //...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato1(); // Aから1へ行く。
1toC(); // 1からCへ行く。
if (SENSOR_3 <= kuro3){ // Cで黒色の紙コップだと判...
ClearSensor(SENSOR_3); // 紙コップ区別用の光セン...
Cto3(); // Cから3へ行く。
}
}
else if (SENSOR_3 <= kuro3){ // Aで黒色の紙コップだ...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato3(); // Aから3へ行く。
3toC(); // 3からCへ行く。
}
}
**工夫点 [#r61c7509]
++時折ロボットのブレが収まるまで待った。←次の動作に支障が...
**反省 [#l2c8f9c7]
++光センサーで紙コップの色を区別して6つの場合分けをすれば...
++紙コップを置くときに後退して待つプログラムをputの定義の...
終了行:
[[2014a/MemberOnly/進行状況]]
#contents
*メンバー [#q3493514]
清原 雅司 (kiyo)
須藤 海志 (sudo)
金子 まさし (sakar)
大森 武人 (totakeke)
*課題 [#ab398598]
[[2014a/Mission2]]
&ref(2014a/Member/kiyo/Mission2/2014a-mission2.png);
A,B,C(サイコロで開始時に決定)に置かれた紙コップを区別して...
*ロボット本体 [#y087f47f]
**全体像 [#ea4d7960]
&ref(2014a/Member/kiyo/Mission2/image21.jpeg);
"Simple is The Best"を目指し、無駄を極力避け、機能美を追...
&ref(2014a/Member/kiyo/Mission2/image22.jpeg);
横から見たところ。
&ref(2014a/Member/kiyo/Mission2/image33.jpeg);
アームで紙コップを持ち上げたところ。4つのタイヤとアームの...
**ベース [#m656d25a]
&ref(2014a/Member/kiyo/Mission2/image36.jpeg);
小型化に貢献したドライブベースです。モーターでそれぞれ独...
&ref(2014a/Member/kiyo/Mission2/image37.jpeg);
裏から見たところ。
&ref(2014a/Member/kiyo/Mission2/image53.jpeg);
一部分解。お気に入りの後ろタイヤ。
**アーム [#ef82d271]
&ref(2014a/Member/kiyo/Mission2/image45.jpeg);
見本を元に作りました。1つのモーターでアームの開閉、昇降を...
アームが垂直になるまで上がり切ってしまうと紙コップを掴む...
&ref(2014a/Member/kiyo/Mission2/image43.jpeg);
裏から見たところ。
&ref(2014a/Member/kiyo/Mission2/image48.jpeg);
前から見たところ。
&ref(2014a/Member/kiyo/Mission2/image47.jpeg);
モーターにつながるところに白い歯車を使うことで、モーター...
&ref(2014a/Member/kiyo/Mission2/image28.jpeg);
灰色のラインがワンポイントです。
**ガイド(触覚) [#o320d231]
&ref(2014a/Member/kiyo/Mission2/image25.jpeg);
多少の誤差があっても紙コップを同じ場所にすることができる...
&ref(2014a/Member/kiyo/Mission2/image51.jpeg);
紙コップの大きさにピッタリです。
*プログラム[#z7bdda83]
色で紙コップを区別して場合分けするプログラムを作った。
ロボコン(8/7実施)時より、サブルーチンを使ってまとめた。
#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 Stop Off(OUT_AC); // 両方のタイヤを止め、停止す...
#define get OnFwd(OUT_B); // アーム用のモーターを前に回...
#define put OnRev(OUT_B);Wait(31);Off(OUT_B); // 31セン...
(回し過ぎると激しくアームを下ろし、損傷の恐れ。少ないと...
sub STARTtoA() // STARTからAへ行くプログラム。
{
go;
until (SENSOR_2 < black); // START前の黒い線を認識す...
right;
Wait(74); // 2に置いてある紙コップに当たらない程度に...
go;
Wait(212); // 2の紙コップを越えるぐらいに前進する。
left;
Wait(31); // Aの紙コップをガイドが捉えられる角度まで...
go;
until (SENSOR_2 < black); // Aの紙コップを捉え、少し...
Stop; // 止まる。
Wait(20); // 前進後のブレが収まるのを待つ。
}
sub Ato2() // Aから2へ行くプログラム。
{
get; // 紙コップを掴む。
Wait(50); // 紙コップを掴んだ後のブレが収まるまで待...
back;
Wait(330); // ガイドで2に置いてある紙コップを正面か...
left;
Wait(27); // 2の紙コップをガイドが捉えられる角度まで...
go;
until (SENSOR_2 < black); // 2の紙コップを捉え、少し...
Stop;
back;
Wait(40); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 2toC() // 2からCへ行くプログラム。
{
back;
Wait(50); // 前進するときに2の紙コップに当たらない程...
right;
Wait(34); // Cに置いてある紙コップをガイドが捉えられ...
go;
Wait(500); // Cの紙コップの手前の黒い線を越えるまで...
Wait(500); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop;
Wait(20); // 前進後のブレが収まるのを待つ。
SetSensor(SENSOR_3, SENSOR_LIGHT); 紙コップに当たっ...
get; // 紙コップを掴む。
SetSensor(SENSOR_3, SENSOR_LIGHT); // 紙コップに当た...
get; // 紙コップを掴む。本当はここから次のサブルーチ...
Off(OUT_B); // アームのモーターを止める。
}
sub Ato1() // Aから1へ行くプログラム。
{
get; // 紙コップを掴む。
go;
Wait(110); // 2の紙コップに当たらない程度に前進する。
left;
Wait(98); // 1の紙コップをガイドが捉えられる角度まで...
go;
Wait(500); // 1の紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // 1の紙コップを捉え、少し...
Stop;
back;
Wait(40); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 1toC() // 1からCへ行くプログラム。
{
back;
Wait(200); // 2,3の紙コップに当たらないように後退す...
until (SENSOR_2 < black); // 2と3をつなぐ線を光セン...
right;
Wait(145); // Cに置いてある紙コップをガイドが捉えら...
go;
Wait(200); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop; // 止まる。
}
sub Cto3() // Cから3へ行くプログラム。
{
get; // 紙コップを掴む。
back;
Wait(200); // 旋回するときにCの紙コップに当たらない...
left;
Wait(130); // 3の紙コップをガイドが捉えられる角度ま...
go;
Wait(250); // 3の紙コップの手前の黒い線を越えるまで...
go;
until (SENSOR_2 < black); // 3の紙コップを捉え、少し...
back;
Wait(45); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub Ato3() // Aから3へ行くプログラム。
{
get; // 紙コップを掴む。
left;
Wait(66); // 3の紙コップをガイドが捉えられる角度まで...
go;
Wait(350); // 3の紙コップの手前の黒い線を越えるまで...
go;
until (SENSOR_2 < black); // 3の紙コップを捉え、少し...
back;
Wait(45); // 紙コップを重ねられる距離まで後退する。
Stop;
Wait(20); // 後退後のブレが収まるのを待つ。
put; // 紙コップを置く。
back;
Wait(50); // 後退し、アームを紙コップから遠ざける。
Stop; // 止まる。
}
sub 3toC() // 3からCへ行くプログラム。
{
back;
Wait(50); // 旋回するときに3の紙コップに当たらないよ...
right;
Wait(116); // Cの紙コップをガイドが捉えられる角度ま...
go;
Wait(100); // Cの紙コップの手前の黒い線を越えるまで...
until (SENSOR_2 < black); // Cの紙コップを捉え、少し...
Stop;
get; // 紙コップを掴む。本当はここから次のサブルーチ...
Off(OUT_B); // アームのモーターを止める。
}
task main() // メインのプログラム。
{
SetSensor(SENSOR_2, SENSOR_LIGHT); // ライントレース...
STARTtoA();
SetSensor(SENSOR_3, SENSOR_LIGHT); // 紙コップに当た...
if (SENSOR_3 >= siro1){ // Aで白色の紙コップだと判断...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato2(); // Aから2へ行く。
2toC(); // 2からCへ行く。
}
else if (SENSOR_3 <= siro1 && SENSOR_3 >= kuro3){ //...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato1(); // Aから1へ行く。
1toC(); // 1からCへ行く。
if (SENSOR_3 <= kuro3){ // Cで黒色の紙コップだと判...
ClearSensor(SENSOR_3); // 紙コップ区別用の光セン...
Cto3(); // Cから3へ行く。
}
}
else if (SENSOR_3 <= kuro3){ // Aで黒色の紙コップだ...
ClearSensor(SENSOR_3); // 紙コップ区別用の光センサ...
Ato3(); // Aから3へ行く。
3toC(); // 3からCへ行く。
}
}
**工夫点 [#r61c7509]
++時折ロボットのブレが収まるまで待った。←次の動作に支障が...
**反省 [#l2c8f9c7]
++光センサーで紙コップの色を区別して6つの場合分けをすれば...
++紙コップを置くときに後退して待つプログラムをputの定義の...
ページ名: