2019a/Member/Mars/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
目次
#contents
*課題3 [#t72907f8]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
#ref(2019a/Member/Mars/Mission3/00854202-255E-4386-8774-8...
**フィールドの説明 [#j32d2c70]
フィールドは課題2で使用した紙を使用する。
生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片方...
残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
プラ容器には色をつけたり文字や記号を書いてもよい。
プラ容器は両面テープ等でフィールドに固定してもよい。
2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いてもよ...
**ルール [#e3308788]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
基本得点の計算方法
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
*ロボットの説明 [#k12b4e61]
ロボット全体は以下の通り。
#ref(2019a/Member/Mars/Mission3/074B2B56-AE1C-4DBE-9FDE-F...
#ref(2019a/Member/Mars/Mission3/8636463F-C236-49AA-8DD4-1...
一度にボールを複数運ぶロボットにしたため、ロボットが大き...
**アーム部分について [#v5cc31ed]
アーム全体は以下の写真の通り。
#ref(2019a/Member/Mars/Mission3/21EC3F04-0EA2-4B53-9644-1...
黄色の部分でボールを掴む。コンベアーでボールを後ろに送る...
***ボールを掴む部分 [#j361ba38]
#ref(2019a/Member/Mars/Mission3/482E6D1D-CAEC-4229-9ECF-C...
オレンジの丸で囲ってある部分で掴む。青い丸で囲ってある部...
***コンベアーの部分 [#bfa3916d]
#ref(2019a/Member/Mars/Mission3/7A39F883-2AC1-49DF-BB38-1...
写真の中央の少し薄い黒のベルトの部分がコンベアーになって...
***シーソーの部分 [#dcd5dce3]
#ref(2019a/Member/Mars/Mission3/DAF2C478-176D-4F08-8E8A-6...
上図のように、アームが上下する。そうすることで箱の中のボ...
アーム全体として重たいため、上下させるためにギアを挟んで...
#ref(2019a/Member/Mars/Mission3/28ACEA38-09AE-4586-A565-4...
*ロボットの動くルート [#rcc5ed31]
ロボットが大きく、たくさん揺れた時に壊れてしまうのを防ぐ...
#ref(2019a/Member/Mars/Mission3/F2796329-1E3D-4168-85C4-F...
#ref(2019a/Member/Mars/Mission3/9DFF484E-E2E1-4A89-92DA-E...
#ref(2019a/Member/Mars/Mission3/6EFAFAF3-2F71-499E-9132-5...
#ref(2019a/Member/Mars/Mission3/B5EED354-2D51-47F6-893D-7...
先程ライントレースを少なくすると書いたが、ライントレース...
*プログラムの説明 [#g27c194d]
アームと足、それぞれ1つずつのメインプログラムを使って、RI...
それぞれのマクロやサブルーチン、メインプログラムは以下で...
**マクロについて [#k3085013]
アームのプログラムには以下の3つのマクロしか使っていないが...
以下に用いたマクロを記す。
#define signal_catch 1
#define signal_release 2
#define signal_end 3
**アームのプログラム [#b21f2e93]
アームで行う動作は、主に「ボールを掴む」、「ボールを箱に入れ...
***サブルーチンについて[#g66fe8e0]
ボールを一度に運ぶこともあるため、同時に複数個のボールを...
ボールを掴むサブルーチンは以下の通り。
sub CATCH()
{
ClearMessage();
until(Message()==signal_catch);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
SetPower(OUT_A,2);
OnRev(OUT_A);Wait(90);Off(OUT_A);Wait(100);// 掴む
OnRev(OUT_B);Wait(50);Off(OUT_B);Wait(100);// 上がる
OnFwd(OUT_A);Wait(90);Off(OUT_A);Wait(100);// 手を元に...
OnFwd(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 奥へ送る
SendMessage(signal_end);
}
SendMessage(signal_end);は一連の動作が終わってから足のプ...
ボールを箱に入れるサブルーチンは以下の通り。
sub release()
{
ClearMessage();
until(Message()==signal_release);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
OnRev(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 前へ送る
OnRev(OUT_B);Wait(50);Off(OUT_B);Wait(100);// 上がる
SendMessage(signal_end);
}
これもボールを掴むサブルーチンと同様の理由でSendMessage(s...
***アームのメインプログラムについて [#n747be98]
ロボットの進路の関係で以下のようにサブルーチンを並べてメ...
task main()
{
ClearMessage();
CATCH();
release();
CATCH();
CATCH();
CATCH();
ClearMessage();
until(Message()==signal_release);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
OnRev(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 前へ送る
OnRev(OUT_BC);Wait(50);Off(OUT_BC);Wait(100);// 上がり...
SendMessage(signal_end);
}
CATCH();3連続のあとの部分について。1文目と2文目はサブルー...
**足のプログラム [#nbe130d1]
足のプログラムは、ロボットの動く道順に従う。それぞれの動...
***マクロについて [#s8e786c1]
上で記したものの他には以下のものがある。
#define black 40
#define gray_black 44
#define gray 47
#define gray_white 50
#define white 60
#define go_ahead OnFwd(OUT_AC);
#define turn_left OnFwd(OUT_A);Off(OUT_C);
#define turn_right OnFwd(OUT_C);Off(OUT_A);
#define circling_left OnRev(OUT_C);OnFwd(OUT_A);
#define circling_right OnRev(OUT_A);OnFwd(OUT_C);
go_aheadは前に進む、turn_rightは右側のタイヤを固定して右...
***サブルーチンについて [#y3ad9eaa]
用いたのはライントレースするサブルーチンのみである。以下...
sub follow_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<t){
if(SENSOR_2<black){circling_right;}
else if(SENSOR_2<gray_black){turn_right;}
else if(SENSOR_2<gray){go_ahead;}
else if(SENSOR_2<gray_white){turn_left;}
else if(SENSOR_2<white){circling_left;}
}
Off(OUT_AC);Wait(100);
}
最後のWait(100);は挙動を見やすくするために入れてある。
ライントレースの仕組みはMission2の時と同じだが、コース取...
***足のメインプログラムについて [#pce59bde]
以下に足のメインプログラムを示す。グローバル変数tはint t;...
task main()
{
ClearMessage();
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
t=90;follow_line();//?
Wait(100);
SendMessage(signal_catch);// L'のボールを掴む命令を送る
ClearMessage();
until(Message()==signal_end);//☆
circling_left;Wait(102);Off(OUT_AC);// 90°その場で左回転
SendMessage(signal_release);// ボールを1個箱に入れる命...
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(30);Off(OUT_AC);// 後ろに下がる
circling_left;Wait(102);Off(OUT_AC);// 90°その場で左回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
turn_right;Wait(100);// 右側のタイヤを固定して右回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
t=150;follow_line();//?
SendMessage(signal_catch);// L掴む
ClearMessage();
until(Message()==signal_end);
circling_left;Wait(102);Off(OUT_AC);// その場で左回転
OnRev(OUT_AC);Wait(23);Off(OUT_AC);// 後ろに下がる
SendMessage(signal_catch);// 箱の中のボールを掴む(1つ目)
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// 箱の中のボールを掴む(2つ目)
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(90);Off(OUT_AC);// 後ろに下がる
circling_left;Wait(102);Off(OUT_AC);// その場で左回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
go_ahead;Wait(15);Off(OUT_AC);// 前に進む
SendMessage(signal_release);//
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(100);Off(OUT_AC);//?
}
度々出てくるwhile(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_A...
☆について。これはアームのサブルーチンのところでも説明した...
?について。2つのfollow_lineのあとには、ボールを掴むプログ...
?について。ルールにある通り、終わった時にロボットが箱に触...
*反省・感想 [#k350497f]
ロボットの動き自体はかなり上手くいっていた。ボールを上手...
終了行:
[[2019a/Member]]
目次
#contents
*課題3 [#t72907f8]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
#ref(2019a/Member/Mars/Mission3/00854202-255E-4386-8774-8...
**フィールドの説明 [#j32d2c70]
フィールドは課題2で使用した紙を使用する。
生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片方...
残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
プラ容器には色をつけたり文字や記号を書いてもよい。
プラ容器は両面テープ等でフィールドに固定してもよい。
2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いてもよ...
**ルール [#e3308788]
基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
基本得点の計算方法
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
*ロボットの説明 [#k12b4e61]
ロボット全体は以下の通り。
#ref(2019a/Member/Mars/Mission3/074B2B56-AE1C-4DBE-9FDE-F...
#ref(2019a/Member/Mars/Mission3/8636463F-C236-49AA-8DD4-1...
一度にボールを複数運ぶロボットにしたため、ロボットが大き...
**アーム部分について [#v5cc31ed]
アーム全体は以下の写真の通り。
#ref(2019a/Member/Mars/Mission3/21EC3F04-0EA2-4B53-9644-1...
黄色の部分でボールを掴む。コンベアーでボールを後ろに送る...
***ボールを掴む部分 [#j361ba38]
#ref(2019a/Member/Mars/Mission3/482E6D1D-CAEC-4229-9ECF-C...
オレンジの丸で囲ってある部分で掴む。青い丸で囲ってある部...
***コンベアーの部分 [#bfa3916d]
#ref(2019a/Member/Mars/Mission3/7A39F883-2AC1-49DF-BB38-1...
写真の中央の少し薄い黒のベルトの部分がコンベアーになって...
***シーソーの部分 [#dcd5dce3]
#ref(2019a/Member/Mars/Mission3/DAF2C478-176D-4F08-8E8A-6...
上図のように、アームが上下する。そうすることで箱の中のボ...
アーム全体として重たいため、上下させるためにギアを挟んで...
#ref(2019a/Member/Mars/Mission3/28ACEA38-09AE-4586-A565-4...
*ロボットの動くルート [#rcc5ed31]
ロボットが大きく、たくさん揺れた時に壊れてしまうのを防ぐ...
#ref(2019a/Member/Mars/Mission3/F2796329-1E3D-4168-85C4-F...
#ref(2019a/Member/Mars/Mission3/9DFF484E-E2E1-4A89-92DA-E...
#ref(2019a/Member/Mars/Mission3/6EFAFAF3-2F71-499E-9132-5...
#ref(2019a/Member/Mars/Mission3/B5EED354-2D51-47F6-893D-7...
先程ライントレースを少なくすると書いたが、ライントレース...
*プログラムの説明 [#g27c194d]
アームと足、それぞれ1つずつのメインプログラムを使って、RI...
それぞれのマクロやサブルーチン、メインプログラムは以下で...
**マクロについて [#k3085013]
アームのプログラムには以下の3つのマクロしか使っていないが...
以下に用いたマクロを記す。
#define signal_catch 1
#define signal_release 2
#define signal_end 3
**アームのプログラム [#b21f2e93]
アームで行う動作は、主に「ボールを掴む」、「ボールを箱に入れ...
***サブルーチンについて[#g66fe8e0]
ボールを一度に運ぶこともあるため、同時に複数個のボールを...
ボールを掴むサブルーチンは以下の通り。
sub CATCH()
{
ClearMessage();
until(Message()==signal_catch);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
SetPower(OUT_A,2);
OnRev(OUT_A);Wait(90);Off(OUT_A);Wait(100);// 掴む
OnRev(OUT_B);Wait(50);Off(OUT_B);Wait(100);// 上がる
OnFwd(OUT_A);Wait(90);Off(OUT_A);Wait(100);// 手を元に...
OnFwd(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 奥へ送る
SendMessage(signal_end);
}
SendMessage(signal_end);は一連の動作が終わってから足のプ...
ボールを箱に入れるサブルーチンは以下の通り。
sub release()
{
ClearMessage();
until(Message()==signal_release);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
OnRev(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 前へ送る
OnRev(OUT_B);Wait(50);Off(OUT_B);Wait(100);// 上がる
SendMessage(signal_end);
}
これもボールを掴むサブルーチンと同様の理由でSendMessage(s...
***アームのメインプログラムについて [#n747be98]
ロボットの進路の関係で以下のようにサブルーチンを並べてメ...
task main()
{
ClearMessage();
CATCH();
release();
CATCH();
CATCH();
CATCH();
ClearMessage();
until(Message()==signal_release);
OnFwd(OUT_B);Wait(30);Off(OUT_B);Wait(100);// 下がる
OnRev(OUT_C);Wait(200);Off(OUT_C);Wait(100);// 前へ送る
OnRev(OUT_BC);Wait(50);Off(OUT_BC);Wait(100);// 上がり...
SendMessage(signal_end);
}
CATCH();3連続のあとの部分について。1文目と2文目はサブルー...
**足のプログラム [#nbe130d1]
足のプログラムは、ロボットの動く道順に従う。それぞれの動...
***マクロについて [#s8e786c1]
上で記したものの他には以下のものがある。
#define black 40
#define gray_black 44
#define gray 47
#define gray_white 50
#define white 60
#define go_ahead OnFwd(OUT_AC);
#define turn_left OnFwd(OUT_A);Off(OUT_C);
#define turn_right OnFwd(OUT_C);Off(OUT_A);
#define circling_left OnRev(OUT_C);OnFwd(OUT_A);
#define circling_right OnRev(OUT_A);OnFwd(OUT_C);
go_aheadは前に進む、turn_rightは右側のタイヤを固定して右...
***サブルーチンについて [#y3ad9eaa]
用いたのはライントレースするサブルーチンのみである。以下...
sub follow_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<t){
if(SENSOR_2<black){circling_right;}
else if(SENSOR_2<gray_black){turn_right;}
else if(SENSOR_2<gray){go_ahead;}
else if(SENSOR_2<gray_white){turn_left;}
else if(SENSOR_2<white){circling_left;}
}
Off(OUT_AC);Wait(100);
}
最後のWait(100);は挙動を見やすくするために入れてある。
ライントレースの仕組みはMission2の時と同じだが、コース取...
***足のメインプログラムについて [#pce59bde]
以下に足のメインプログラムを示す。グローバル変数tはint t;...
task main()
{
ClearMessage();
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
t=90;follow_line();//?
Wait(100);
SendMessage(signal_catch);// L'のボールを掴む命令を送る
ClearMessage();
until(Message()==signal_end);//☆
circling_left;Wait(102);Off(OUT_AC);// 90°その場で左回転
SendMessage(signal_release);// ボールを1個箱に入れる命...
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(30);Off(OUT_AC);// 後ろに下がる
circling_left;Wait(102);Off(OUT_AC);// 90°その場で左回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
turn_right;Wait(100);// 右側のタイヤを固定して右回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
t=150;follow_line();//?
SendMessage(signal_catch);// L掴む
ClearMessage();
until(Message()==signal_end);
circling_left;Wait(102);Off(OUT_AC);// その場で左回転
OnRev(OUT_AC);Wait(23);Off(OUT_AC);// 後ろに下がる
SendMessage(signal_catch);// 箱の中のボールを掴む(1つ目)
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// 箱の中のボールを掴む(2つ目)
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(90);Off(OUT_AC);// 後ろに下がる
circling_left;Wait(102);Off(OUT_AC);// その場で左回転
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2<gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100...
while(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_AC);Wait(100);
go_ahead;Wait(15);Off(OUT_AC);// 前に進む
SendMessage(signal_release);//
ClearMessage();
until(Message()==signal_end);
OnRev(OUT_AC);Wait(100);Off(OUT_AC);//?
}
度々出てくるwhile(SENSOR_2>gray){OnFwd(OUT_AC);}Off(OUT_A...
☆について。これはアームのサブルーチンのところでも説明した...
?について。2つのfollow_lineのあとには、ボールを掴むプログ...
?について。ルールにある通り、終わった時にロボットが箱に触...
*反省・感想 [#k350497f]
ロボットの動き自体はかなり上手くいっていた。ボールを上手...
ページ名: