2018a/Member/ryota/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2018a/MemberOnly]]
課題3
*コース・ルール [#gaf3043d]
#ref(2018a-mission3.png)
・競技時間は審判が続行不能と判断するまで、あるいはリタイ...
・図のA地点または(および)A'地点からスタートする。ただし...
・上空部分は領域からはみ出していてもよい。~
・Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ。~
・開始の合図から5秒以内にスタートボタンを押す作業を完了...
・競技が終了するまで、ロボットに触ったり人間が遠隔で操作...
・途中でうまく動かなくなった場合、1回限り再スタートする...
基本得点の計算方法~
・運んだ空き缶の数×3点~
・空き缶を積み重ねて置くことができば場合、2段目の空き缶一...
・円内からはみ出している場合、半分以下なら1点減点、半分以...
・間違った円内に空き缶を置いた場合は、1個につき1点減点。~
・間違った円内の2段目に空き缶を置いた場合は1個につき3点減...
技術点の計算方法~
以下の動作の精度・スピード・確実性などを含めた技術的な工...
・空き缶を探し取りにいくまでの動作 (3点)~
・空き缶を掴む動作 (3点)~
・空き缶を運ぶ動作 (2点)~
・空き缶を置く動作 (2点)~
・空き缶を積む動作 (3点)~
・2台のRCXまたはNXT、EV3の連携の良さ(2点)~
・自立型のロボットとしての形や動作の美しさ、斬新さ(2点)~
・その他 (3点)~
*ロボットの概要 [#i92d70f2]
**全体 [#w365df76]
#ref(ダウンロード (1).png)
今回のロボットは基本的には前回の課題からの反省をもとに発...
カンの移動,ライントレースをする際の障害にならないように...
当初は超音波センサでカンの位置を特定して行う予定であった...
**背面 [#qe6d434d]
#ref(ダウンロード.png)
下部がマスター,上部がスレイブでありマスターについては本...
後輪部分は車輪だと安定せずカンの移動に支障をきたすため摩...
**下部 [#hc9877d1]
#ref(ダウンロード (2).png)
移動については基本的に前方につけている赤外線センサを利用...
モーターにギアを噛ませることで,カンの移動時に本体を動か...
また減速ギアになっていることから急な動きを抑えることがで...
**はさみ [#w8cde3e0]
#ref(ダウンロード (3).png)
ギアを追加することで左右のはさみが同じ角度で動くようにし...
カンの持ち上げ,下す動作のミスを減らすために挟むだけでな...
カンを挟んでいる間モーターは停止しているので,その間の力...
**側面 [#oef6af71]
#ref(ダウンロード (4).png)
本体二つの重さは非常に大きいため,剛性(ブレ)に注意して...
*戦略 [#p5980b45]
#ref(InkedInked2018a-mission3_LI.jpg)
ロボットの概要で説明した通り回転時にはさみの位置がそのま...
カンを重ねて置く際の位置はモーターの角度などで調整したが...
?青矢印のじてんでYの二段目をはさみ部分で飛ばす.~
?G地点に到着~
?Xの二段目を掴み,三段目については回転する際の遠心力で飛...
?Yの二段目に?で掴んだカンを乗せる.~
i以上の1〜4で二段+一段の得点.
*プログラム [#w7994b46]
**マスター(駆動部) [#v9bb2783]
#define CONN 1 // スレーブの接続番号
#define SIGNALON 11 // ハサミで持ち上げるためのメッセージ
#define SIGNALOFF 12 // 缶を落とすためのメッセージ
#define llt OnFwd(OUT_A,50); OnRev(OUT_C,30); Wait(1);//...
#define lrt OnRev(OUT_A,30); OnFwd(OUT_C,50); Wait(1);//...
#define ternleft OnFwd(OUT_A,50); OnRev(OUT_C,10);//左に...
#define ternright OnRev(OUT_A,10); OnFwd(OUT_C,50);//右...
#define go OnFwd(OUT_A,50); OnFwd(OUT_C,50);//直進する
#define back OnRev(OUT_A,50); OnRev(OUT_C,50);//後退する
#define trase_R {if(SENSOR_2<36){lrt; n++;} else if(SEN...
n=0;}} //右側トレース
#define trase_L {if(SENSOR_2<36){llt; n++;} else if(SEN...
n=0;}} //左側トレース
#define open RotateMotor(OUT_B,25,80); Off(OUT_B);Wait(10...
#define close RotateMotor(OUT_B,25,-80); Off(OUT_B);Wait(...
#define UP RotateMotor(OUT_C,40,90); Off(OUT_C); Wait(100...
#define DOWN RotateMotor(OUT_C,20,-100);Off(OUT_C); Wait(...
task main()
{
SetSensorLowspeed(S1);
SetSensorLight(S2);
int n=0;
while(n<=100)
{ // H
trase_R;
}
Off(OUT_AC);
Wait(1000);
OnFwdSync(OUT_AC, 50, 0);
Wait(500);
Off(OUT_AC);
n=0;
while(n<=100)
{ // s2
trase_R;
}
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_AC,50); //線を...
Wait(500);
n=0;
while(n<=90)
{
trase_L /...
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_A, 60, 300);
Off(OUT_AC);
n=0;
while(n<=150)
{ //十字路で止...
trase_R
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_C, 60, 300);
Off(OUT_AC);
n=0;
while(n<=70)
{ //Fで止まる
trase_L
}
Off(OUT_AC);
close;
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //持...
Off(OUT_ABC);
Wait(3000);
OnRev(OUT_AC,50); //バ...
Wait(1000);
Off(OUT_AC);
RotateMotorEx(OUT_AC, 75, 1860, 100, true, false); //振...
Off(OUT_AC);
n=0;
while(n<=70)
{ //Gで止まる
trase_L
}
Off(OUT_AC);
RotateMotorEx(OUT_AC, 75, 400, -100, true, false );
Off(OUT_AC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALOFF);
Off(OUT_ABC);
Wait(3000);
open;
Off(OUT_ABC);
Wait(3000);
}
**解説 [#c9892174]
マスター側はライントレースを基本としており,順番に別々の...
**スレイブ (ハサミ部) [#rbb6e549]
#define CONN 1 // スレーブの接続番号
#define SIGNALON 11 // ハサミで持ち上げるためのメッセージ
#define SIGNALOFF 12 // 缶を落とすためのメッセージ
#define llt OnFwd(OUT_A,50); OnRev(OUT_C,30); Wait(1);//...
#define lrt OnRev(OUT_A,30); OnFwd(OUT_C,50); Wait(1);//...
#define ternleft OnFwd(OUT_A,50); OnRev(OUT_C,10);//左に...
#define ternright OnRev(OUT_A,10); OnFwd(OUT_C,50);//右...
#define go OnFwd(OUT_A,50); OnFwd(OUT_C,50);//直進する
#define back OnRev(OUT_A,50); OnRev(OUT_C,50);//後退する
#define trase_R {if(SENSOR_2<35){lrt; n++;} else if(SEN...
n=0;}}
#define trase_L {if(SENSOR_2<35){llt; n++;} else if(SEN...
n=0;}}
#define open RotateMotor(OUT_B,25,85); Off(OUT_B);Wait(10...
#define close RotateMotor(OUT_B,25,-85); Off(OUT_B);Wait(...
#define UP RotateMotor(OUT_C,40,90); Off(OUT_C); Wait(100...
#define DOWN RotateMotor(OUT_C,20,-90);Off(OUT_C); Wait(1...
task main ()
{
int msg; // 受け取った値を格納する変数
while (true) {
ReceiveRemoteNumber(MAILBOX1,true,msg); //
if (msg == SIGNALON) {
UP;
}
if (msg == SIGNALOFF) {
DOWN;
}
}
}
**解説 [#k898b9d7]
スレイブ側はマスターの命令を受けてはさみを動かす部分を担...
*結果と反省点 [#t68b5ff6]
ロボットの製作段階では戦略通り成功していたが,ロボコン本...
ロボットやプログラムにも反省点はあるがこのような初歩的な...
0点という結果に終わってしまったことは非常に残念でなりま...
終了行:
[[2018a/MemberOnly]]
課題3
*コース・ルール [#gaf3043d]
#ref(2018a-mission3.png)
・競技時間は審判が続行不能と判断するまで、あるいはリタイ...
・図のA地点または(および)A'地点からスタートする。ただし...
・上空部分は領域からはみ出していてもよい。~
・Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ。~
・開始の合図から5秒以内にスタートボタンを押す作業を完了...
・競技が終了するまで、ロボットに触ったり人間が遠隔で操作...
・途中でうまく動かなくなった場合、1回限り再スタートする...
基本得点の計算方法~
・運んだ空き缶の数×3点~
・空き缶を積み重ねて置くことができば場合、2段目の空き缶一...
・円内からはみ出している場合、半分以下なら1点減点、半分以...
・間違った円内に空き缶を置いた場合は、1個につき1点減点。~
・間違った円内の2段目に空き缶を置いた場合は1個につき3点減...
技術点の計算方法~
以下の動作の精度・スピード・確実性などを含めた技術的な工...
・空き缶を探し取りにいくまでの動作 (3点)~
・空き缶を掴む動作 (3点)~
・空き缶を運ぶ動作 (2点)~
・空き缶を置く動作 (2点)~
・空き缶を積む動作 (3点)~
・2台のRCXまたはNXT、EV3の連携の良さ(2点)~
・自立型のロボットとしての形や動作の美しさ、斬新さ(2点)~
・その他 (3点)~
*ロボットの概要 [#i92d70f2]
**全体 [#w365df76]
#ref(ダウンロード (1).png)
今回のロボットは基本的には前回の課題からの反省をもとに発...
カンの移動,ライントレースをする際の障害にならないように...
当初は超音波センサでカンの位置を特定して行う予定であった...
**背面 [#qe6d434d]
#ref(ダウンロード.png)
下部がマスター,上部がスレイブでありマスターについては本...
後輪部分は車輪だと安定せずカンの移動に支障をきたすため摩...
**下部 [#hc9877d1]
#ref(ダウンロード (2).png)
移動については基本的に前方につけている赤外線センサを利用...
モーターにギアを噛ませることで,カンの移動時に本体を動か...
また減速ギアになっていることから急な動きを抑えることがで...
**はさみ [#w8cde3e0]
#ref(ダウンロード (3).png)
ギアを追加することで左右のはさみが同じ角度で動くようにし...
カンの持ち上げ,下す動作のミスを減らすために挟むだけでな...
カンを挟んでいる間モーターは停止しているので,その間の力...
**側面 [#oef6af71]
#ref(ダウンロード (4).png)
本体二つの重さは非常に大きいため,剛性(ブレ)に注意して...
*戦略 [#p5980b45]
#ref(InkedInked2018a-mission3_LI.jpg)
ロボットの概要で説明した通り回転時にはさみの位置がそのま...
カンを重ねて置く際の位置はモーターの角度などで調整したが...
?青矢印のじてんでYの二段目をはさみ部分で飛ばす.~
?G地点に到着~
?Xの二段目を掴み,三段目については回転する際の遠心力で飛...
?Yの二段目に?で掴んだカンを乗せる.~
i以上の1〜4で二段+一段の得点.
*プログラム [#w7994b46]
**マスター(駆動部) [#v9bb2783]
#define CONN 1 // スレーブの接続番号
#define SIGNALON 11 // ハサミで持ち上げるためのメッセージ
#define SIGNALOFF 12 // 缶を落とすためのメッセージ
#define llt OnFwd(OUT_A,50); OnRev(OUT_C,30); Wait(1);//...
#define lrt OnRev(OUT_A,30); OnFwd(OUT_C,50); Wait(1);//...
#define ternleft OnFwd(OUT_A,50); OnRev(OUT_C,10);//左に...
#define ternright OnRev(OUT_A,10); OnFwd(OUT_C,50);//右...
#define go OnFwd(OUT_A,50); OnFwd(OUT_C,50);//直進する
#define back OnRev(OUT_A,50); OnRev(OUT_C,50);//後退する
#define trase_R {if(SENSOR_2<36){lrt; n++;} else if(SEN...
n=0;}} //右側トレース
#define trase_L {if(SENSOR_2<36){llt; n++;} else if(SEN...
n=0;}} //左側トレース
#define open RotateMotor(OUT_B,25,80); Off(OUT_B);Wait(10...
#define close RotateMotor(OUT_B,25,-80); Off(OUT_B);Wait(...
#define UP RotateMotor(OUT_C,40,90); Off(OUT_C); Wait(100...
#define DOWN RotateMotor(OUT_C,20,-100);Off(OUT_C); Wait(...
task main()
{
SetSensorLowspeed(S1);
SetSensorLight(S2);
int n=0;
while(n<=100)
{ // H
trase_R;
}
Off(OUT_AC);
Wait(1000);
OnFwdSync(OUT_AC, 50, 0);
Wait(500);
Off(OUT_AC);
n=0;
while(n<=100)
{ // s2
trase_R;
}
Off(OUT_AC);
Wait(1000);
OnFwd(OUT_AC,50); //線を...
Wait(500);
n=0;
while(n<=90)
{
trase_L /...
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_A, 60, 300);
Off(OUT_AC);
n=0;
while(n<=150)
{ //十字路で止...
trase_R
}
Off(OUT_AC);
Wait(1000);
RotateMotor(OUT_C, 60, 300);
Off(OUT_AC);
n=0;
while(n<=70)
{ //Fで止まる
trase_L
}
Off(OUT_AC);
close;
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //持...
Off(OUT_ABC);
Wait(3000);
OnRev(OUT_AC,50); //バ...
Wait(1000);
Off(OUT_AC);
RotateMotorEx(OUT_AC, 75, 1860, 100, true, false); //振...
Off(OUT_AC);
n=0;
while(n<=70)
{ //Gで止まる
trase_L
}
Off(OUT_AC);
RotateMotorEx(OUT_AC, 75, 400, -100, true, false );
Off(OUT_AC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALOFF);
Off(OUT_ABC);
Wait(3000);
open;
Off(OUT_ABC);
Wait(3000);
}
**解説 [#c9892174]
マスター側はライントレースを基本としており,順番に別々の...
**スレイブ (ハサミ部) [#rbb6e549]
#define CONN 1 // スレーブの接続番号
#define SIGNALON 11 // ハサミで持ち上げるためのメッセージ
#define SIGNALOFF 12 // 缶を落とすためのメッセージ
#define llt OnFwd(OUT_A,50); OnRev(OUT_C,30); Wait(1);//...
#define lrt OnRev(OUT_A,30); OnFwd(OUT_C,50); Wait(1);//...
#define ternleft OnFwd(OUT_A,50); OnRev(OUT_C,10);//左に...
#define ternright OnRev(OUT_A,10); OnFwd(OUT_C,50);//右...
#define go OnFwd(OUT_A,50); OnFwd(OUT_C,50);//直進する
#define back OnRev(OUT_A,50); OnRev(OUT_C,50);//後退する
#define trase_R {if(SENSOR_2<35){lrt; n++;} else if(SEN...
n=0;}}
#define trase_L {if(SENSOR_2<35){llt; n++;} else if(SEN...
n=0;}}
#define open RotateMotor(OUT_B,25,85); Off(OUT_B);Wait(10...
#define close RotateMotor(OUT_B,25,-85); Off(OUT_B);Wait(...
#define UP RotateMotor(OUT_C,40,90); Off(OUT_C); Wait(100...
#define DOWN RotateMotor(OUT_C,20,-90);Off(OUT_C); Wait(1...
task main ()
{
int msg; // 受け取った値を格納する変数
while (true) {
ReceiveRemoteNumber(MAILBOX1,true,msg); //
if (msg == SIGNALON) {
UP;
}
if (msg == SIGNALOFF) {
DOWN;
}
}
}
**解説 [#k898b9d7]
スレイブ側はマスターの命令を受けてはさみを動かす部分を担...
*結果と反省点 [#t68b5ff6]
ロボットの製作段階では戦略通り成功していたが,ロボコン本...
ロボットやプログラムにも反省点はあるがこのような初歩的な...
0点という結果に終わってしまったことは非常に残念でなりま...
ページ名: