2019a/Member/Ayu/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*課題3 [#q2036ad9]
#ref(./robo_3.png,50%,コース説明)
上のコースの上に置かれたピンポン玉を掴んでコースの左側の...
**ルール [#aa2f06a5]
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
**得点の計算方法 [#icebcaeb]
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
*ロボットについて [#f55ed492]
今回は2つのNQCを使えるため,1体型にして,トレーごと掴む...
このロボットはトレーの中の玉を運ぶだけのロボットのため,...
#ref(./image1.jpeg,50%,ロボット全体)
上はロボットの全体の写真.前のアームでトレーを掴んで運び...
#ref(./image2 (1).jpeg,50%,ロボット下)
ロボットの前の部分に2つの光センサーを付けている.前の2...
#ref(./image2.jpeg,50%,レール)
ボールがうまくレールに乗るように,漏斗のような形にしてい...
#ref(./image1 (1).jpeg,50%,レール後方)
2つのNQCを向かい合わせに配置して,通信ができるようにして...
*プログラムについて [#y481e704]
**車体を動かすプログラム [#t018fbfe]
車体部分で使うマクロである.
#define Line 43 //ライントレースの黒の値
#define UP 13 //アームを上げさせるときに送信する信号
#define DOWN 12 //アームを下げさせるときに送信する信号
#define STOP 11 //アームの動きを止めるための信号
ライントレースのサブルーチン
sub follow_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int t;
t=FastTimer(0);
while(FastTimer(0)<250) //2.5秒間この動きを繰り返す
{
if(SENSOR_2>43 && SENSOR_3>43){OnFwd(OUT_BC); ...
}else if(SENSOR_2<Line && SENSOR_3>Line){OnFwd(O...
}else if(SENSOR_2>Line && SENSOR_3<Line){OnFwd(O...
}else {Off(OUT_BC);} //そうでないとき停止
}
PlaySound(SOUND_UP); //ループを抜けたら音で合図
Off(OUT_BC);
}
sub turn_left() //左折のサブルーチン
{
OnFwd(OUT_B);
Off(OUT_C);
Wait(50);
Off(OUT_B);
}
車体部分のメインのプログラム
task main()
{
ClearTimer(0); //タイマーをリセット
follow_line(); //C地点まで移動
Wait(20);
OnFwd(OUT_BC); //トレーを掴めるように位置を調整
Wait(95);
Off(OUT_BC);
OnFwd(OUT_C); //車体をトレーに向かせる
OnRev(OUT_B);
Wait(100);
Off(OUT_BC);
OnRev(OUT_BC); //後退して,アームを下げたときにト...
Wait(230);
Off(OUT_BC);
Wait(40);
SendMessage(DOWN); //アームを下げるための信号を送信
Wait(1);
SendMessage(STOP); //アームの動きを終了させる信号...
OnFwd(OUT_BC); //アームの間にトレーを入れる
Wait(300);
Off(OUT_BC);
OnFwd(OUT_B); //ロボットを左側のコースのほうに向...
OnRev(OUT_C);
Wait(220);
Off(OUT_BC);
Wait(20);
OnFwd(OUT_BC); //左側のコースに移動
Wait(400);
Off(OUT_BC);
OnFwd(OUT_C); //ゴールに背を向ける
OnRev(OUT_B);
Wait(120);
Off(OUT_BC);
OnRev(OUT_BC); //ゴールに近づきながらアームを持ち...
SendMessage(UP);
Wait(200);
SendMessage(STOP); //アームの上昇を止める
Off(OUT_BC);
}
**アームを動かす部分のプログラム [#c1986e27]
アーム部分のマクロ.アームの動きが早すぎるとアームが壊れ...
#define arm_up SetPower(OUT_AC,6);OnFwd(OUT_AC); Wait(30...
#define arm_down SetPower(OUT_AC,1);OnRev(OUT_AC); Wait(...
#define UP 13 //アームを上げる時の信号
#define DOWN 12 //アームを下げる時の信号
#define STOP 11 //アームの動きを終了するときの信号
メインのプログラム
task main()
{
ClearMessage(); //信号を一度リセットする
while(true) {
if(Message() == STOP) { //STOPという信号を受...
Off(OUT_AC);
} else if (Message() == DOWN) {
arm_down; //DOWNという...
} else if(Message() == UP) {
arm_up; //UPという信...
}
}
}
*まとめ [#j85e3277]
私たちの作ったロボットは本番では1つも玉をとることができ...
終了行:
*課題3 [#q2036ad9]
#ref(./robo_3.png,50%,コース説明)
上のコースの上に置かれたピンポン玉を掴んでコースの左側の...
**ルール [#aa2f06a5]
競技時間は審判が続行不能と判断するまで、あるいはリタイア...
図のA地点または(および)A'地点からスタートする。ただし接...
開始の合図から5秒以内にスタートボタンを押す作業を完了す...
競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
途中でうまく動かなくなった場合、1回限り再スタートするこ...
競技終了後、ロボットが、ゴールのプラ容器に触れていてはい...
競技終了後、もともと玉が入っていたプラ容器が、ゴールのプ...
**得点の計算方法 [#icebcaeb]
プラ容器内の玉を1個運べば8点。二つとも運べば20点。
L地点とL'地点の玉をどちらか1個運べば4点、2個とも運べば12...
競技終了後、ゴールのプラ容器が完全に円から出しまった場合...
競技終了後、ゴールのプラ容器の半分以上が円から出ていれば...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にもとのプラ容器が触れていれ...
競技終了後、ゴールのプラ容器にロボットが触れていれば、も...
*ロボットについて [#f55ed492]
今回は2つのNQCを使えるため,1体型にして,トレーごと掴む...
このロボットはトレーの中の玉を運ぶだけのロボットのため,...
#ref(./image1.jpeg,50%,ロボット全体)
上はロボットの全体の写真.前のアームでトレーを掴んで運び...
#ref(./image2 (1).jpeg,50%,ロボット下)
ロボットの前の部分に2つの光センサーを付けている.前の2...
#ref(./image2.jpeg,50%,レール)
ボールがうまくレールに乗るように,漏斗のような形にしてい...
#ref(./image1 (1).jpeg,50%,レール後方)
2つのNQCを向かい合わせに配置して,通信ができるようにして...
*プログラムについて [#y481e704]
**車体を動かすプログラム [#t018fbfe]
車体部分で使うマクロである.
#define Line 43 //ライントレースの黒の値
#define UP 13 //アームを上げさせるときに送信する信号
#define DOWN 12 //アームを下げさせるときに送信する信号
#define STOP 11 //アームの動きを止めるための信号
ライントレースのサブルーチン
sub follow_line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int t;
t=FastTimer(0);
while(FastTimer(0)<250) //2.5秒間この動きを繰り返す
{
if(SENSOR_2>43 && SENSOR_3>43){OnFwd(OUT_BC); ...
}else if(SENSOR_2<Line && SENSOR_3>Line){OnFwd(O...
}else if(SENSOR_2>Line && SENSOR_3<Line){OnFwd(O...
}else {Off(OUT_BC);} //そうでないとき停止
}
PlaySound(SOUND_UP); //ループを抜けたら音で合図
Off(OUT_BC);
}
sub turn_left() //左折のサブルーチン
{
OnFwd(OUT_B);
Off(OUT_C);
Wait(50);
Off(OUT_B);
}
車体部分のメインのプログラム
task main()
{
ClearTimer(0); //タイマーをリセット
follow_line(); //C地点まで移動
Wait(20);
OnFwd(OUT_BC); //トレーを掴めるように位置を調整
Wait(95);
Off(OUT_BC);
OnFwd(OUT_C); //車体をトレーに向かせる
OnRev(OUT_B);
Wait(100);
Off(OUT_BC);
OnRev(OUT_BC); //後退して,アームを下げたときにト...
Wait(230);
Off(OUT_BC);
Wait(40);
SendMessage(DOWN); //アームを下げるための信号を送信
Wait(1);
SendMessage(STOP); //アームの動きを終了させる信号...
OnFwd(OUT_BC); //アームの間にトレーを入れる
Wait(300);
Off(OUT_BC);
OnFwd(OUT_B); //ロボットを左側のコースのほうに向...
OnRev(OUT_C);
Wait(220);
Off(OUT_BC);
Wait(20);
OnFwd(OUT_BC); //左側のコースに移動
Wait(400);
Off(OUT_BC);
OnFwd(OUT_C); //ゴールに背を向ける
OnRev(OUT_B);
Wait(120);
Off(OUT_BC);
OnRev(OUT_BC); //ゴールに近づきながらアームを持ち...
SendMessage(UP);
Wait(200);
SendMessage(STOP); //アームの上昇を止める
Off(OUT_BC);
}
**アームを動かす部分のプログラム [#c1986e27]
アーム部分のマクロ.アームの動きが早すぎるとアームが壊れ...
#define arm_up SetPower(OUT_AC,6);OnFwd(OUT_AC); Wait(30...
#define arm_down SetPower(OUT_AC,1);OnRev(OUT_AC); Wait(...
#define UP 13 //アームを上げる時の信号
#define DOWN 12 //アームを下げる時の信号
#define STOP 11 //アームの動きを終了するときの信号
メインのプログラム
task main()
{
ClearMessage(); //信号を一度リセットする
while(true) {
if(Message() == STOP) { //STOPという信号を受...
Off(OUT_AC);
} else if (Message() == DOWN) {
arm_down; //DOWNという...
} else if(Message() == UP) {
arm_up; //UPという信...
}
}
}
*まとめ [#j85e3277]
私たちの作ったロボットは本番では1つも玉をとることができ...
ページ名: