2019b/Member/Nakakoo/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題3 [#ode19250]
&size(20){今回の課題は、「&color(blue){青};と&color(red){...
**コース [#e075453b]
&size(22){フィールドの説明};
#ref(./2019b-mission3.png,100%,コース画像)
-フィールドは課題2で使用した紙を使用する。
-空き缶は6本用意し、そのうち3本をC、E、Fの交差点に描...
-同様に残りの空き缶をC’、E’、F’地点に置く。
**使用したルート [#zfaf4d39]
#ref(./ルートs.PNG,120%,ルート説明)
+A地点から出発し、ライントレースをしてC地点の缶の直前まで...
+ボールをつかんだら缶を避ける。
+再びライントレースをしてE地点の缶の前まで行く。
+ボールをつかんだらバックをし、ライントレースをしてF地点...
+ボールをつかんだらバックをし、ライントレースでC'地点まで...
+缶の上にボールを置く。
時間がなかったのでゴールまでのプログラミングは書けなかっ...
ロボットに時間をかけたせいで、プログラミングが最後まで書...
**ルール [#n6453cbf]
&size(20){基本ルール};
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、空き缶に触れていてはいけない。
&size(20){基本得点の計算方法};
-ボールを1個運べば8点。3つとも運べば24点。
-競技終了後、ゴールの空き缶が半分以上円からはみ出しまった...
-競技終了後、ゴールの空き缶が完全に円から出しまった場合、...
-競技終了後、空き缶にロボットが触れていれば、もとの基本点...
&size(20){芸術点の計算方法};
以下の動作の精度・スピード・確実性などを含めた技術的な工...
-ボールを探し取りにいくまでの動作 (3点)
-ボールを掴む動作 (3点)
-ボールを運ぶ動作 (2点)
-ボールを容器の中に入れる動作 (2点)
-2台のNXT、EV3の連携の良さ(2点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
-その他 (3点)
*ロボットについて [#dae290a5]
**ロボット全体像 [#hd135659]
#ref(./IMG_6095s.JPG,60%,全体画像)
課題3ではNXTが2台あり通信することが目的であったので、当初...
それを缶の上に置くロボットの2つを作ろうと考えていたが、自...
下の部分が各種センサーでライントレースと缶の発見を行うマ...
**工夫した点(マスター側) [#af5f74cc]
***後輪 [#eb2208f0]
#ref(./IMG_6104s.jpg,60%,後輪画像)
このロボットを作った当初は後輪がついていたのだが、ゴムの...
タイヤのゴムを外してみても解決しなかったので、結果このよ...
モーターの回転速度を50程度まで上げてみたらタイヤがついて...
***各種センサー [#i7b6d2a2]
#ref(./IMG_6096s.JPG,60%,センサー画像)
光センサーは、課題2での反省を生かして車体との距離を縮める...
遠すぎない位置に設置することで安定した値を取れるようにし...
また、超音波センサーは過去のレポートを参考にして横ではな...
#ref(./センサー説明s.JPG,120%,センサー説明)
このように片方から出た音波をもう片方で受け取っているので...
***レール [#abb13d0f]
今回はボールをすべて回収してから缶の上まで運ぶというロボ...
その場所にはブロックで作ったレールを採用した。
#ref(./sレール.JPG,120%,レール)
本物のボールを載せている画像を撮影し忘れたのでこれで代用...
**反省点(マスター側) [#icf4e724]
***センサーの種類 [#k55b48d4]
工夫した点で超音波センサーを盾に設置したと説明したが、そ...
このレポートを描いているときに気付いたが、ボールを回収す...
センサーをタッチセンサーに変えたほうがプログラムがすっき...
***スレーブ側との接地部分 [#ic149f7d]
#ref(./IMG_6118s.jpg,75%,接地部分画像)
このようにマスター側とスレーブ側が接触しているのはレゴブ...
スレーブ側の重みで傾き、ボールを回収するときに崩れそうに...
***レール [#j40cbc60]
#ref(./レールs.JPG,120%,レール画像)
ボールを載せるレールは、前の部分は固定をしていたが後ろは...
ボールがレールの上から落ちてしまうことはなかったが、前に...
後ろ側のレールを固定し、スムーズにボールを送り出せたらよ...
**工夫した点(スレーブ側) [#kb045646]
***歯車 [#ffe5630b]
スレーブ側にはモーターが2つ付いており、1つはボールを回収...
#ref(./IMG_6314s.jpg,70%,歯車画像)
これはアーム側の歯車であり
#ref(./IMG_6316s.jpg,70%,歯車画像)
こちらはボールをつかむ機構の歯車である。
どちらも歯車の数を調整し、モーターの回る方向と最後の歯車...
***アーム [#zc1bb542]
ボールを回収する時、缶が動かないようにアームで缶を固定し...
#ref(./缶を固定s.JPG,120%,アーム画像)
#ref(./arm.gif,50%,アーム画像)
***ボールを回収する機構 [#l1321a39]
ボールは回転する3本の棒でレールの上にのせる。ボールの下を...
#ref(./回転レールs.JPG,120%,レール画像)
スムーズにボールを回収するために棒の長さを3本とも同じ長さ...
#ref(./ボール回収s.JPG,100%,回収画像)
*プログラミングについて [#r11266a7]
今回作ったロボットはNXTが2台にモーターが4つ、センサーが2...
スレーブ側のNXTにはアームとボールを回収する機構を動かすた...
**車体(Master) [#m23e89af]
***マクロ [#s4573398]
#define SPEED 35 ...
#define STEP 1 ...
#define mae OnFwd(OUT_BC,SPEED); ...
#define usiro(t) OnRev(OUT_BC,SPEED);Wait(t);Off(OUT_BC)...
#define migi1 OnFwd(OUT_C,SPEED); ...
#define migi2 OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED); ...
#define hidari1 OnFwd(OUT_B,SPEED); ...
#define hidari2 OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED); ...
#define CONN 1 ...
#define SIGNALON 11 ...
#define SIGNALOFF 12 ...
***サブルーチン [#b467d462]
sub linefollow1()
{
SetSensorLight(S3); //S3に光センサー...
SetSensorLowspeed(S4); //S4に超音波セン...
long t0;
t0=CurrentTick();
while(CurrentTick()-t0<200){ //t0が0.2秒の間繰...
if(SensorUS(S4)<=6){ //6cm以内に近づくと
Off(OUT_BC); //モーターが止まる
PlaySound(SOUND_UP); //ピロピロという...
break; //whileループから...
}
if(SENSOR_3>60){ //値が60以上の時
migi2; //右に旋回
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>52){ //値が52以上の時
migi1; //右折する
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>40){ //値が40以上の時
hidari1; //左折する
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>30){ //値が30以上の時
hidari2; //左に旋回
}else{ //そのほかの時
mae; //前進する
t0=CurrentTick(); //時間をリセット
}
Wait(STEP);
}
Off(OUT_BC); //モーターを止める
Wait(1000); //1秒待つ
}
これがラインの左をトレースするプログラムである。右のトレ...
課題2と違うところは超音波センサーをプログラムに取り入れた...
当初はwhileループを抜け出す条件に超音波センサーの6cm以下...
先生には迷惑をかけたがbreakを使ってループから抜け出し、わ...
今回の課題をするまでwhileの意味をよく理解せずに使っていた...
音を出して今何をしているかが分かるようになったのは良い収...
sub kaihi()
{
OnFwd(OUT_B,SPEED);OnRev(OUT_C,speed);Wait(1600);Off...
OnFwd(OUT_BC,SPEED);Wait(2200);Off(OUT_BC); ...
OnFwd(OUT_C,SPEED);OnRev(OUT_B,speed);Wait(1200);Off...
OnFwd(OUT_BC,SPEED);Wait(1700);Off(OUT_BC); ...
OnFwd(OUT_C,SPEED);OnRev(OUT_B,speed);Wait(1700);Off...
OnFwd(OUT_BC,SPEED);Wait(2100);Off(OUT_BC); ...
}
これはC'地点の缶を回避するサブルーチンである。タイヤの摩...
***メイン [#if37e4d3]
task main()
{
Wait(1000); //1秒待つ
PlaySound(SOUND_CLICK); //ピッ...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1400); //後退...
kaihi(); //缶を...
linefollow1(); //左側...
mae;Wait(700);Off(OUT_BC); //D地点...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
migi2;Wait(1600);Off(OUT_BC); //D地点...
linefollow1(); //左側...
hidari2;Wait(1600);Off(OUT_BC); //G地点...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
migi2;Wait(1700);Off(OUT_BC); //G地点...
linefollow1(); //左側...
hidari1;Wait(2000);Off(OUT_BC); //H地点...
linefollow2(); //右側...
migi1;Wait(2000);Off(OUT_BC); //H'地...
linefollow1(); //左側...
hidari2;Wait(1600);Off(OUT_BC); //G'地...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALOFF); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
}
これは言い訳になってしまうが引っ越しの関係で時間がとれず...
動かしたときにはしっかり動いてくれたが、プログラムを通し...
練習しているときでもプログラムを通して試してみることが大...
さらにこのプログラムには気に入らない点があり、それはスレ...
本当はスレーブが動き終わった後にマスターに信号を返し、そ...
しかし僕に能力がなかったせいでただ17秒待つだけのプログラ...
**アーム(Slave) [#rca3a86e]
***マクロ [#l5292814]
#define speed 15 ...
#define SIGNALON 11 ...
#define SIGNALOFF 12 ...
#define tukamu OnFwd(OUT_B,speed);Wait(7000);Off(OUT_B);...
#define hanasu OnRev(OUT_B,speed);Wait(7000);Off(OUT_B);...
#define arm_up OnFwd(OUT_C,speed);Wait(3800);Off(OUT_C);...
#define arm_down OnRev(OUT_C,speed);Wait(3500);Off(OUT_C...
***メイン [#db070c22]
task main()
{
int msg; //受け...
while(true){ //ロボ...
ReceiveRemoteNumber(MAILBOX1,true,msg); //MAIL...
if(msg==SIGNALON){ //11を...
arm_down; //アー...
tukamu; //ボー...
arm_up; //アー...
}
if(msg==SIGNALOFF) //12を...
arm_down; //アー...
hanasu; //ボー...
arm_up; //アー...
}
}
}
メインの中にwhile(true)と書いてあるのでずっとこのループを...
*感想と反省 [#tb4a2e8d]
この授業を通して簡単なプログラミングの書き方を学ぶことが...
良い作品にならないことも分かった。時間をもっと作ることが...
さらにすべての課題を通して、ほぼすべて一人で作らなければ...
しかし、チームメイトにやる気がなく全く作業に参加してくれ...
自分たちで相談してチームを決めることも検討してもらいたい...
終了行:
目次
#contents
*課題3 [#ode19250]
&size(20){今回の課題は、「&color(blue){青};と&color(red){...
**コース [#e075453b]
&size(22){フィールドの説明};
#ref(./2019b-mission3.png,100%,コース画像)
-フィールドは課題2で使用した紙を使用する。
-空き缶は6本用意し、そのうち3本をC、E、Fの交差点に描...
-同様に残りの空き缶をC’、E’、F’地点に置く。
**使用したルート [#zfaf4d39]
#ref(./ルートs.PNG,120%,ルート説明)
+A地点から出発し、ライントレースをしてC地点の缶の直前まで...
+ボールをつかんだら缶を避ける。
+再びライントレースをしてE地点の缶の前まで行く。
+ボールをつかんだらバックをし、ライントレースをしてF地点...
+ボールをつかんだらバックをし、ライントレースでC'地点まで...
+缶の上にボールを置く。
時間がなかったのでゴールまでのプログラミングは書けなかっ...
ロボットに時間をかけたせいで、プログラミングが最後まで書...
**ルール [#n6453cbf]
&size(20){基本ルール};
-競技時間は審判が続行不能と判断するまで、あるいはリタイア...
-図のA地点または(および)A'地点からスタートする。ただし...
-開始の合図から5秒以内にスタートボタンを押す作業を完了す...
-競技が終了するまで、ロボットに触ったり人間が遠隔で操作し...
-途中でうまく動かなくなった場合、1回限り再スタートするこ...
-競技終了後、ロボットが、空き缶に触れていてはいけない。
&size(20){基本得点の計算方法};
-ボールを1個運べば8点。3つとも運べば24点。
-競技終了後、ゴールの空き缶が半分以上円からはみ出しまった...
-競技終了後、ゴールの空き缶が完全に円から出しまった場合、...
-競技終了後、空き缶にロボットが触れていれば、もとの基本点...
&size(20){芸術点の計算方法};
以下の動作の精度・スピード・確実性などを含めた技術的な工...
-ボールを探し取りにいくまでの動作 (3点)
-ボールを掴む動作 (3点)
-ボールを運ぶ動作 (2点)
-ボールを容器の中に入れる動作 (2点)
-2台のNXT、EV3の連携の良さ(2点)
-自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
-その他 (3点)
*ロボットについて [#dae290a5]
**ロボット全体像 [#hd135659]
#ref(./IMG_6095s.JPG,60%,全体画像)
課題3ではNXTが2台あり通信することが目的であったので、当初...
それを缶の上に置くロボットの2つを作ろうと考えていたが、自...
下の部分が各種センサーでライントレースと缶の発見を行うマ...
**工夫した点(マスター側) [#af5f74cc]
***後輪 [#eb2208f0]
#ref(./IMG_6104s.jpg,60%,後輪画像)
このロボットを作った当初は後輪がついていたのだが、ゴムの...
タイヤのゴムを外してみても解決しなかったので、結果このよ...
モーターの回転速度を50程度まで上げてみたらタイヤがついて...
***各種センサー [#i7b6d2a2]
#ref(./IMG_6096s.JPG,60%,センサー画像)
光センサーは、課題2での反省を生かして車体との距離を縮める...
遠すぎない位置に設置することで安定した値を取れるようにし...
また、超音波センサーは過去のレポートを参考にして横ではな...
#ref(./センサー説明s.JPG,120%,センサー説明)
このように片方から出た音波をもう片方で受け取っているので...
***レール [#abb13d0f]
今回はボールをすべて回収してから缶の上まで運ぶというロボ...
その場所にはブロックで作ったレールを採用した。
#ref(./sレール.JPG,120%,レール)
本物のボールを載せている画像を撮影し忘れたのでこれで代用...
**反省点(マスター側) [#icf4e724]
***センサーの種類 [#k55b48d4]
工夫した点で超音波センサーを盾に設置したと説明したが、そ...
このレポートを描いているときに気付いたが、ボールを回収す...
センサーをタッチセンサーに変えたほうがプログラムがすっき...
***スレーブ側との接地部分 [#ic149f7d]
#ref(./IMG_6118s.jpg,75%,接地部分画像)
このようにマスター側とスレーブ側が接触しているのはレゴブ...
スレーブ側の重みで傾き、ボールを回収するときに崩れそうに...
***レール [#j40cbc60]
#ref(./レールs.JPG,120%,レール画像)
ボールを載せるレールは、前の部分は固定をしていたが後ろは...
ボールがレールの上から落ちてしまうことはなかったが、前に...
後ろ側のレールを固定し、スムーズにボールを送り出せたらよ...
**工夫した点(スレーブ側) [#kb045646]
***歯車 [#ffe5630b]
スレーブ側にはモーターが2つ付いており、1つはボールを回収...
#ref(./IMG_6314s.jpg,70%,歯車画像)
これはアーム側の歯車であり
#ref(./IMG_6316s.jpg,70%,歯車画像)
こちらはボールをつかむ機構の歯車である。
どちらも歯車の数を調整し、モーターの回る方向と最後の歯車...
***アーム [#zc1bb542]
ボールを回収する時、缶が動かないようにアームで缶を固定し...
#ref(./缶を固定s.JPG,120%,アーム画像)
#ref(./arm.gif,50%,アーム画像)
***ボールを回収する機構 [#l1321a39]
ボールは回転する3本の棒でレールの上にのせる。ボールの下を...
#ref(./回転レールs.JPG,120%,レール画像)
スムーズにボールを回収するために棒の長さを3本とも同じ長さ...
#ref(./ボール回収s.JPG,100%,回収画像)
*プログラミングについて [#r11266a7]
今回作ったロボットはNXTが2台にモーターが4つ、センサーが2...
スレーブ側のNXTにはアームとボールを回収する機構を動かすた...
**車体(Master) [#m23e89af]
***マクロ [#s4573398]
#define SPEED 35 ...
#define STEP 1 ...
#define mae OnFwd(OUT_BC,SPEED); ...
#define usiro(t) OnRev(OUT_BC,SPEED);Wait(t);Off(OUT_BC)...
#define migi1 OnFwd(OUT_C,SPEED); ...
#define migi2 OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED); ...
#define hidari1 OnFwd(OUT_B,SPEED); ...
#define hidari2 OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED); ...
#define CONN 1 ...
#define SIGNALON 11 ...
#define SIGNALOFF 12 ...
***サブルーチン [#b467d462]
sub linefollow1()
{
SetSensorLight(S3); //S3に光センサー...
SetSensorLowspeed(S4); //S4に超音波セン...
long t0;
t0=CurrentTick();
while(CurrentTick()-t0<200){ //t0が0.2秒の間繰...
if(SensorUS(S4)<=6){ //6cm以内に近づくと
Off(OUT_BC); //モーターが止まる
PlaySound(SOUND_UP); //ピロピロという...
break; //whileループから...
}
if(SENSOR_3>60){ //値が60以上の時
migi2; //右に旋回
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>52){ //値が52以上の時
migi1; //右折する
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>40){ //値が40以上の時
hidari1; //左折する
t0=CurrentTick(); //時間をリセット
}else if(SENSOR_3>30){ //値が30以上の時
hidari2; //左に旋回
}else{ //そのほかの時
mae; //前進する
t0=CurrentTick(); //時間をリセット
}
Wait(STEP);
}
Off(OUT_BC); //モーターを止める
Wait(1000); //1秒待つ
}
これがラインの左をトレースするプログラムである。右のトレ...
課題2と違うところは超音波センサーをプログラムに取り入れた...
当初はwhileループを抜け出す条件に超音波センサーの6cm以下...
先生には迷惑をかけたがbreakを使ってループから抜け出し、わ...
今回の課題をするまでwhileの意味をよく理解せずに使っていた...
音を出して今何をしているかが分かるようになったのは良い収...
sub kaihi()
{
OnFwd(OUT_B,SPEED);OnRev(OUT_C,speed);Wait(1600);Off...
OnFwd(OUT_BC,SPEED);Wait(2200);Off(OUT_BC); ...
OnFwd(OUT_C,SPEED);OnRev(OUT_B,speed);Wait(1200);Off...
OnFwd(OUT_BC,SPEED);Wait(1700);Off(OUT_BC); ...
OnFwd(OUT_C,SPEED);OnRev(OUT_B,speed);Wait(1700);Off...
OnFwd(OUT_BC,SPEED);Wait(2100);Off(OUT_BC); ...
}
これはC'地点の缶を回避するサブルーチンである。タイヤの摩...
***メイン [#if37e4d3]
task main()
{
Wait(1000); //1秒待つ
PlaySound(SOUND_CLICK); //ピッ...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1400); //後退...
kaihi(); //缶を...
linefollow1(); //左側...
mae;Wait(700);Off(OUT_BC); //D地点...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
migi2;Wait(1600);Off(OUT_BC); //D地点...
linefollow1(); //左側...
hidari2;Wait(1600);Off(OUT_BC); //G地点...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALON); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
migi2;Wait(1700);Off(OUT_BC); //G地点...
linefollow1(); //左側...
hidari1;Wait(2000);Off(OUT_BC); //H地点...
linefollow2(); //右側...
migi1;Wait(2000);Off(OUT_BC); //H'地...
linefollow1(); //左側...
hidari2;Wait(1600);Off(OUT_BC); //G'地...
linefollow1(); //左側...
mae;Wait(350);Off(OUT_BC); //缶の...
SendRemoteNumber(CONN,MAILBOX1,SIGNALOFF); //スレ...
Wait(17000); //17秒...
usiro(1100); //後退...
}
これは言い訳になってしまうが引っ越しの関係で時間がとれず...
動かしたときにはしっかり動いてくれたが、プログラムを通し...
練習しているときでもプログラムを通して試してみることが大...
さらにこのプログラムには気に入らない点があり、それはスレ...
本当はスレーブが動き終わった後にマスターに信号を返し、そ...
しかし僕に能力がなかったせいでただ17秒待つだけのプログラ...
**アーム(Slave) [#rca3a86e]
***マクロ [#l5292814]
#define speed 15 ...
#define SIGNALON 11 ...
#define SIGNALOFF 12 ...
#define tukamu OnFwd(OUT_B,speed);Wait(7000);Off(OUT_B);...
#define hanasu OnRev(OUT_B,speed);Wait(7000);Off(OUT_B);...
#define arm_up OnFwd(OUT_C,speed);Wait(3800);Off(OUT_C);...
#define arm_down OnRev(OUT_C,speed);Wait(3500);Off(OUT_C...
***メイン [#db070c22]
task main()
{
int msg; //受け...
while(true){ //ロボ...
ReceiveRemoteNumber(MAILBOX1,true,msg); //MAIL...
if(msg==SIGNALON){ //11を...
arm_down; //アー...
tukamu; //ボー...
arm_up; //アー...
}
if(msg==SIGNALOFF) //12を...
arm_down; //アー...
hanasu; //ボー...
arm_up; //アー...
}
}
}
メインの中にwhile(true)と書いてあるのでずっとこのループを...
*感想と反省 [#tb4a2e8d]
この授業を通して簡単なプログラミングの書き方を学ぶことが...
良い作品にならないことも分かった。時間をもっと作ることが...
さらにすべての課題を通して、ほぼすべて一人で作らなければ...
しかし、チームメイトにやる気がなく全く作業に参加してくれ...
自分たちで相談してチームを決めることも検討してもらいたい...
ページ名: