2019a/Member/TT/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2019a/Member]]
#contents
*課題について [#h3147c70]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
&ref(2019a/Member/TT/Mission3/2019a-mission3.png,70%,課題...
フィールドの説明
-フィールドは課題2で使用した紙を使用する。
-生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片...
-残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
-プラ容器には色をつけたり文字や記号を書いてもよい。
-プラ容器は両面テープ等でフィールドに固定してもよい。
-2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いても...
基本ルール
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
-競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
基本得点の計算方法
-プラ容器内の玉を1個運べば8点。二つとも運べば20点。
-L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
-競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
-競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
技術点の計算方法
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-玉を探し取りにいくまでの動作 (3点)
-玉を掴む動作 (3点)
-玉をを運ぶ動作 (2点)
-玉を容器の中に入れる動作 (2点)
-2台のRIS、NXT、EV3の連携の良さ(2点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
-その他 (3点)
*ロボットの構造について [#l4338c3a]
私たちの班はピンポン玉を以下の写真のようなクレーン型の...
タイヤは3輪である
より正確にするため、左右に2つの光センサーを取り付けた
RISは、クレーンで挟む動作を行うモーターとクレーンを上に...
&ref(2019a/Member/TT/Mission3/20190807_131328.jpg,50%,ロ...
下の写真はクレーンを伸ばした時の様子である。
輪ゴムの伸縮力にによって、クレーンが勢いよく伸びて壊れた...
&ref(2019a/Member/TT/Mission3/20190807_131415.jpg,50%,ロ...
*作戦の流れ [#xa966c6a]
&ref(2019a/Member/TT/Mission3/2019a-mission3 (1).png,80%,...
上図の?〜?の場所で以下のような操作を行う
?C地点まで前進し、C地点の黒線で停止する
?C地点で90度右回転する
?クレーンを下げ、ピンポン玉をつかみ、クレーンを上げる
?C地点で90度左回転する
?B地点まで前進し、B地点の黒線で停止する
?B地点で90度右回転する
?C'地点まで前進し、C'地点の黒線で停止する
?クレーンを下げ、ピンポン玉を箱の中に落とし、クレーンを上...
?C'地点まで後退する
?B地点まで後退し、B地点の黒線で停止する
?〜?の操作を2回行うことによって箱の中にある2個のピンポン...
*プログラムについて [#a294d7ae]
まず初めに通信で送る数字を定義した。
#define SIGNALON_C 39
#define SIGNALON_T 2
-サブルーチンについて
右の光センサーについて
sub black_R()
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnRev(OUT_AC); //白いとき前進
ClearTimer(0);}
}
}
左の光センサーについて
sub black_L()
{
while(FastTimer(0)<10)
{
if(SENSOR_1<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnRev(OUT_AC); //白いとき前進
ClearTimer(0);}
}
}
右の光センサーについて2
sub back()
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnFwd(OUT_AC); //白いとき後退
ClearTimer(0);}
}
}
-実際のプログラム
上記のサブルーチンを用いて以下のようにプログラムした
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
図?の動き
ClearTimer(0);
black_R(); //C地点まで前進
OnRev(OUT_AC); //車体の微調整
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
図?の動き
OnFwd(OUT_C); //90度右回転
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
図?の動き
SendMessage(SIGNALON_C); //もう一つのRISに通信する
Off(OUT_AC);
Wait(1000); //ピンポン玉をつかみ終わ...
図?の動き
OnFwd(OUT_A); //90度左回転する
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
図?の動き
ClearTimer(0);
back(); //C地点の黒線まで後退
OnFwd(OUT_AC); //C地点の黒線を渡る
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back(); //C地点からB地点まで後退
Wait(100);
図?の動き
OnFwd(OUT_A); //B地点で右回転
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
図?の動き
ClearTimer(0);
black_L(); //C'地点の黒線まで前進
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
図?の動き
SendMessage(SIGNALON_T); //もう一つのRISに通信
Off(OUT_AC);
Wait(1000); //ピンポン玉を落とし...
図?の動き
ClearTimer(0);
back(); //C'地点の黒線まで後退
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
図?の動き
ClearTimer(0);
back(); //B地点の黒線まで後退する
OnFwd(OUT_C); //B地点で90度左回転する
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
上記の?〜?のプログラムを繰り返し、2個目のピンポン玉を移動...
ClearTimer(0); //図?の動き
black_R();
OnFwd(OUT_C); //図?の動き
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C); //図?の動き
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_A); //図?の動き
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
back(); //図?の動き
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
OnFwd(OUT_A); //図?の動き
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0); //図?の動き
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T); //図?の動き
Off(OUT_AC);
Wait(1000);
ClearTimer(0); //図??の動き
back();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
}
-クレーンの上下用のRISのプログラムについて
#define SIGNALON_C 39
#define SIGNALON_T 2
task main()
{
ClearMessage();
while(true)
{
if(Message()==SIGNALON_C){ //図?で受信する
OnFwd(OUT_A); //クレーン...
Wait(50);
Off(OUT_A);
OnRev(OUT_B); //ピンポン...
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //クレーン...
Wait(300);
Off(OUT_A);}
else if(Message()==SIGNALON_T){ //図?で受信する
OnFwd(OUT_A); //クレーン...
Wait(50);
Off(OUT_A);
OnFwd(OUT_B); //ピンポ...
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //クレー...
Wait(300);
Off(OUT_A);}
}
}
*結果 [#we77cee9]
図?のC地点の黒線停止まではうまくいった。図?の通信がうまく...
*感想・反省 [#ze2fe11d]
車体が軽すぎたためか、動くスピードが速く、光センサーで...
L,L'地点のピンポン玉を移動させるプログラムも考えておく...
RIS間の通信がうまくいかなかったので、通信が届きやすい機...
ピンポン玉をつかむことすらできなかったのが非常に悔しい...
終了行:
[[2019a/Member]]
#contents
*課題について [#h3147c70]
ピンポン玉または青と赤のボールを運搬して、所定の容器の中...
&ref(2019a/Member/TT/Mission3/2019a-mission3.png,70%,課題...
フィールドの説明
-フィールドは課題2で使用した紙を使用する。
-生協のお弁当の四角いプラ容器2つをそれぞれ円内に置き、片...
-残りの2個の玉は課題2と同じ位置に置く。その際、ゴムタイヤ...
-プラ容器には色をつけたり文字や記号を書いてもよい。
-プラ容器は両面テープ等でフィールドに固定してもよい。
-2枚の紙の境界にはそれぞれ幅1cm、合計2cmの黒線を描いても...
基本ルール
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
-競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
基本得点の計算方法
-プラ容器内の玉を1個運べば8点。二つとも運べば20点。
-L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
-競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
-競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
-競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
技術点の計算方法
-以下の動作の精度・スピード・確実性などを含めた技術的な工...
-玉を探し取りにいくまでの動作 (3点)
-玉を掴む動作 (3点)
-玉をを運ぶ動作 (2点)
-玉を容器の中に入れる動作 (2点)
-2台のRIS、NXT、EV3の連携の良さ(2点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
-その他 (3点)
*ロボットの構造について [#l4338c3a]
私たちの班はピンポン玉を以下の写真のようなクレーン型の...
タイヤは3輪である
より正確にするため、左右に2つの光センサーを取り付けた
RISは、クレーンで挟む動作を行うモーターとクレーンを上に...
&ref(2019a/Member/TT/Mission3/20190807_131328.jpg,50%,ロ...
下の写真はクレーンを伸ばした時の様子である。
輪ゴムの伸縮力にによって、クレーンが勢いよく伸びて壊れた...
&ref(2019a/Member/TT/Mission3/20190807_131415.jpg,50%,ロ...
*作戦の流れ [#xa966c6a]
&ref(2019a/Member/TT/Mission3/2019a-mission3 (1).png,80%,...
上図の?〜?の場所で以下のような操作を行う
?C地点まで前進し、C地点の黒線で停止する
?C地点で90度右回転する
?クレーンを下げ、ピンポン玉をつかみ、クレーンを上げる
?C地点で90度左回転する
?B地点まで前進し、B地点の黒線で停止する
?B地点で90度右回転する
?C'地点まで前進し、C'地点の黒線で停止する
?クレーンを下げ、ピンポン玉を箱の中に落とし、クレーンを上...
?C'地点まで後退する
?B地点まで後退し、B地点の黒線で停止する
?〜?の操作を2回行うことによって箱の中にある2個のピンポン...
*プログラムについて [#a294d7ae]
まず初めに通信で送る数字を定義した。
#define SIGNALON_C 39
#define SIGNALON_T 2
-サブルーチンについて
右の光センサーについて
sub black_R()
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnRev(OUT_AC); //白いとき前進
ClearTimer(0);}
}
}
左の光センサーについて
sub black_L()
{
while(FastTimer(0)<10)
{
if(SENSOR_1<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnRev(OUT_AC); //白いとき前進
ClearTimer(0);}
}
}
右の光センサーについて2
sub back()
{
while(FastTimer(0)<10)
{
if(SENSOR_3<37){Off(OUT_AC); //黒線で停止
Wait(100);}
else{OnFwd(OUT_AC); //白いとき後退
ClearTimer(0);}
}
}
-実際のプログラム
上記のサブルーチンを用いて以下のようにプログラムした
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
図?の動き
ClearTimer(0);
black_R(); //C地点まで前進
OnRev(OUT_AC); //車体の微調整
Wait(100);
Off(OUT_AC);
ClearTimer(0);
black_R();
図?の動き
OnFwd(OUT_C); //90度右回転
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
図?の動き
SendMessage(SIGNALON_C); //もう一つのRISに通信する
Off(OUT_AC);
Wait(1000); //ピンポン玉をつかみ終わ...
図?の動き
OnFwd(OUT_A); //90度左回転する
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
図?の動き
ClearTimer(0);
back(); //C地点の黒線まで後退
OnFwd(OUT_AC); //C地点の黒線を渡る
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back(); //C地点からB地点まで後退
Wait(100);
図?の動き
OnFwd(OUT_A); //B地点で右回転
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
図?の動き
ClearTimer(0);
black_L(); //C'地点の黒線まで前進
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
図?の動き
SendMessage(SIGNALON_T); //もう一つのRISに通信
Off(OUT_AC);
Wait(1000); //ピンポン玉を落とし...
図?の動き
ClearTimer(0);
back(); //C'地点の黒線まで後退
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
図?の動き
ClearTimer(0);
back(); //B地点の黒線まで後退する
OnFwd(OUT_C); //B地点で90度左回転する
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
上記の?〜?のプログラムを繰り返し、2個目のピンポン玉を移動...
ClearTimer(0); //図?の動き
black_R();
OnFwd(OUT_C); //図?の動き
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
SendMessage(SIGNALON_C); //図?の動き
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_A); //図?の動き
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0);
back(); //図?の動き
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
Wait(100);
OnFwd(OUT_A); //図?の動き
OnRev(OUT_C);
Wait(60);
Off(OUT_AC);
Wait(100);
ClearTimer(0); //図?の動き
black_L();
OnRev(OUT_AC);
Wait(100);
Off(OUT_AC);
ClearTimer(0);
back();
OnFwd(OUT_AC);
Wait(100);
Off(OUT_AC);
SendMessage(SIGNALON_T); //図?の動き
Off(OUT_AC);
Wait(1000);
ClearTimer(0); //図??の動き
back();
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(55);
Off(OUT_AC);
Wait(100);
}
-クレーンの上下用のRISのプログラムについて
#define SIGNALON_C 39
#define SIGNALON_T 2
task main()
{
ClearMessage();
while(true)
{
if(Message()==SIGNALON_C){ //図?で受信する
OnFwd(OUT_A); //クレーン...
Wait(50);
Off(OUT_A);
OnRev(OUT_B); //ピンポン...
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //クレーン...
Wait(300);
Off(OUT_A);}
else if(Message()==SIGNALON_T){ //図?で受信する
OnFwd(OUT_A); //クレーン...
Wait(50);
Off(OUT_A);
OnFwd(OUT_B); //ピンポ...
Wait(10);
Off(OUT_B);
OnRev(OUT_A); //クレー...
Wait(300);
Off(OUT_A);}
}
}
*結果 [#we77cee9]
図?のC地点の黒線停止まではうまくいった。図?の通信がうまく...
*感想・反省 [#ze2fe11d]
車体が軽すぎたためか、動くスピードが速く、光センサーで...
L,L'地点のピンポン玉を移動させるプログラムも考えておく...
RIS間の通信がうまくいかなかったので、通信が届きやすい機...
ピンポン玉をつかむことすらできなかったのが非常に悔しい...
ページ名: