2019a/Member/Tomi/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
*課題3 [#j69b07a2]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
フィールドの説明
フィールドは課題2で使用した紙を使用する。
生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片方...
残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
プラ容器には色をつけたり文字や記号を書いてもよい。
プラ容器は両面テープ等でフィールドに固定してもよい。
2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いてもよ...
#ref(2019a/Member/Tomi/Mission3/2019a-mission3.png,25%)
-基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
-基本得点の計算方法
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
技術点の計算方法
以下の動作の精度・スピード・確実性などを含めた技術的な工...
玉を探し取りにいくまでの動作 (3点)
玉を掴む動作 (3点)
玉をを運ぶ動作 (2点)
玉を容器の中に入れる動作 (2点)
2台のRIS、NXT、EV3の連携の良さ(2点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (3点)
*ロボットの全体像 [#gc6ad349]
プログラミングの量を減らすために通信を行なったのでRISを2...
#ref(2019a/Member/Tomi/Mission3/line_92280379971507.jpg,2...
+アーム
ピンポン球をつかんでためておき、まとめてだすようにした。...
#ref(2019a/Member/Tomi/Mission3/line_92265241273648.jpg,2...
+シーソー
アーム全体が上下運動できるようにした。この動きをするのに...
#ref(2019a/Member/Tomi/Mission3/line_92229901054703.jpg,2...
+ベルトコンベアー
ピンポン球を回収したあとためるのにベルトコンベアーを片方...
#ref(2019a/Member/Tomi/Mission3/line_92242857796365.jpg,2...
+足回り
タイヤは3輪で動かした。前の2輪はモーターで動かし後ろは1輪...
#ref(2019a/Member/Tomi/Mission3/line_92235093634805.jpg,2...
#ref(2019a/Member/Tomi/Mission3/line_92232115503088.jpg,2...
*動き [#o894b6dd]
全体が重くなってしまったためライントレースを少なくして成...
+1つ目のピンポン球
ピンポン球をキャッチ→90度回転→箱にピンポン球をいれる
スタートラインから2本の黒線を横切って、3本目の黒線で停止...
+2つ目のピンポン球
90度回転→ピンポン球をキャッチ
+りりぱっくの中のピンポン球
90度回転→下がる→ピンポン球をキャッチ
ピンポン球を取るのにりりぱっくが当たってしまうので、少し...
+箱に入れるまで
90度回転→直進→アームを下げていれる
2本目の黒線で停止し、少し進みいれる。
*プログラム [#d62f467d]
+アームのプログラム
A:キャッチアーム B:シーソー C:コンベアー
マクロ
#define signal_catch 1
#define signal_release 2
#define signal_end 3
ボール回収のサブルーチン
sub CATCH()
{
ClearMessage();
until(Message()==signal_catch);//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);//動作終了を足のRISに送信
}
箱に入れるサブルーチン
sub release()
{
ClearMessage();
until(Message()==signal_release); //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);//動作終了を足のRISに送信
}
メインプログラム
task main()
{
ClearMessage();
CATCH();//L'でつかむ?
release();//J'でリリース?
CATCH();//Lでつかむ?
CATCH();//Jでリリパックからつかむ?
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);
}
+車体
A:右の車輪 C:左の車輪 2:光センサー
マクロ・グローバル変数
#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);
#define signal_catch 1
#define signal_release 2
#define signal_end 3
int t;
サブルーチン
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);
}
メインプログラム
1つ目のピンポン球
task main()
{
ClearMessage();
//白なら直進 ※1
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);//K'付近に到達
t=90;follow_line();//※2
Wait(100);
SendMessage(signal_catch);// L'でつかむ命令を送る?
ClearMessage();
until(Message()==signal_end);//アームの動作が終わる...
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
// ボールをリリパックに入れる命令を送る?
SendMessage(signal_release);
ClearMessage();
until(Message()==signal_end);
2つ目のピンポン球
//後ろに下がる
OnRev(OUT_AC);
Wait(30);
Off(OUT_AC);
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//白なら直進 ※1
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);
//白なら直進 ※1
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();//※2
SendMessage(signal_catch);// Lでつかむ命令を送る?
ClearMessage() ;
until(Message()==signal_end);
3,4つ目のピンポン球
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//後ろに下がる?
OnRev(OUT_AC);
Wait(23);
Off(OUT_AC);
SendMessage(signal_catch);// リリパックでつかむ命令...
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// リリパックでつかむ命令2
ClearMessage();
until(Message()==signal_end);
箱に入れるまで
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//後ろに下がる?
OnRev(OUT_AC);
Wait(23);
Off(OUT_AC);
SendMessage(signal_catch);// リリパックでつかむ命令...
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// リリパックでつかむ命令2
ClearMessage();
until(Message()==signal_end);
*まとめ [#vf9a1f49]
リハーサルの時点では3つまたは4ついれることができたが、本...
終了行:
[[2019a/Member]]
*課題3 [#j69b07a2]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
フィールドの説明
フィールドは課題2で使用した紙を使用する。
生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片方...
残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
プラ容器には色をつけたり文字や記号を書いてもよい。
プラ容器は両面テープ等でフィールドに固定してもよい。
2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いてもよ...
#ref(2019a/Member/Tomi/Mission3/2019a-mission3.png,25%)
-基本ルール
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
-基本得点の計算方法
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
技術点の計算方法
以下の動作の精度・スピード・確実性などを含めた技術的な工...
玉を探し取りにいくまでの動作 (3点)
玉を掴む動作 (3点)
玉をを運ぶ動作 (2点)
玉を容器の中に入れる動作 (2点)
2台のRIS、NXT、EV3の連携の良さ(2点)
自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
その他 (3点)
*ロボットの全体像 [#gc6ad349]
プログラミングの量を減らすために通信を行なったのでRISを2...
#ref(2019a/Member/Tomi/Mission3/line_92280379971507.jpg,2...
+アーム
ピンポン球をつかんでためておき、まとめてだすようにした。...
#ref(2019a/Member/Tomi/Mission3/line_92265241273648.jpg,2...
+シーソー
アーム全体が上下運動できるようにした。この動きをするのに...
#ref(2019a/Member/Tomi/Mission3/line_92229901054703.jpg,2...
+ベルトコンベアー
ピンポン球を回収したあとためるのにベルトコンベアーを片方...
#ref(2019a/Member/Tomi/Mission3/line_92242857796365.jpg,2...
+足回り
タイヤは3輪で動かした。前の2輪はモーターで動かし後ろは1輪...
#ref(2019a/Member/Tomi/Mission3/line_92235093634805.jpg,2...
#ref(2019a/Member/Tomi/Mission3/line_92232115503088.jpg,2...
*動き [#o894b6dd]
全体が重くなってしまったためライントレースを少なくして成...
+1つ目のピンポン球
ピンポン球をキャッチ→90度回転→箱にピンポン球をいれる
スタートラインから2本の黒線を横切って、3本目の黒線で停止...
+2つ目のピンポン球
90度回転→ピンポン球をキャッチ
+りりぱっくの中のピンポン球
90度回転→下がる→ピンポン球をキャッチ
ピンポン球を取るのにりりぱっくが当たってしまうので、少し...
+箱に入れるまで
90度回転→直進→アームを下げていれる
2本目の黒線で停止し、少し進みいれる。
*プログラム [#d62f467d]
+アームのプログラム
A:キャッチアーム B:シーソー C:コンベアー
マクロ
#define signal_catch 1
#define signal_release 2
#define signal_end 3
ボール回収のサブルーチン
sub CATCH()
{
ClearMessage();
until(Message()==signal_catch);//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);//動作終了を足のRISに送信
}
箱に入れるサブルーチン
sub release()
{
ClearMessage();
until(Message()==signal_release); //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);//動作終了を足のRISに送信
}
メインプログラム
task main()
{
ClearMessage();
CATCH();//L'でつかむ?
release();//J'でリリース?
CATCH();//Lでつかむ?
CATCH();//Jでリリパックからつかむ?
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);
}
+車体
A:右の車輪 C:左の車輪 2:光センサー
マクロ・グローバル変数
#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);
#define signal_catch 1
#define signal_release 2
#define signal_end 3
int t;
サブルーチン
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);
}
メインプログラム
1つ目のピンポン球
task main()
{
ClearMessage();
//白なら直進 ※1
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);//K'付近に到達
t=90;follow_line();//※2
Wait(100);
SendMessage(signal_catch);// L'でつかむ命令を送る?
ClearMessage();
until(Message()==signal_end);//アームの動作が終わる...
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
// ボールをリリパックに入れる命令を送る?
SendMessage(signal_release);
ClearMessage();
until(Message()==signal_end);
2つ目のピンポン球
//後ろに下がる
OnRev(OUT_AC);
Wait(30);
Off(OUT_AC);
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//白なら直進 ※1
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);
//白なら直進 ※1
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();//※2
SendMessage(signal_catch);// Lでつかむ命令を送る?
ClearMessage() ;
until(Message()==signal_end);
3,4つ目のピンポン球
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//後ろに下がる?
OnRev(OUT_AC);
Wait(23);
Off(OUT_AC);
SendMessage(signal_catch);// リリパックでつかむ命令...
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// リリパックでつかむ命令2
ClearMessage();
until(Message()==signal_end);
箱に入れるまで
//90°左旋回?
circling_left;
Wait(102);
Off(OUT_AC);
//後ろに下がる?
OnRev(OUT_AC);
Wait(23);
Off(OUT_AC);
SendMessage(signal_catch);// リリパックでつかむ命令...
ClearMessage();
until(Message()==signal_end);
Wait(100);
SendMessage(signal_catch);// リリパックでつかむ命令2
ClearMessage();
until(Message()==signal_end);
*まとめ [#vf9a1f49]
リハーサルの時点では3つまたは4ついれることができたが、本...
ページ名: