2014a/Member/bosoo/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*メンバー [#j6101771]
・saborijini
~・bosoo
~・hodaka
~・snowdrop
*課題について [#sf79c1d2]
**課題:紙コップ収集分別ロボット [#jb006a0e]
2台のロボットで紙コップを収集し、同じ番号の書かれている紙...
#ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&...
**フィールドの説明 [#l0983e23]
フィールドは課題1で使用した紙を2枚つなぎ合わせる (詳細な...
~図の右半分の黄色い地点には、その数字と同じ数字が書いてあ...
~
|サイコロの目|A|B|C|
|LEFT:1|1|2|3|
|LEFT:2|1|3|2|
|LEFT:3|2|1|3|
|LEFT:4|2|3|1|
|LEFT:5|3|1|2|
|LEFT:6|3|2|1|
その他ルールなど詳細は[[課題2:http://yakushi.shinshu-u.a...
*本体について [#h2cafae9]
#ref(IMG_0388.jpg)
全体の写真。NXTを縦に重ねることで、横幅の軽減に努めた...
#ref(IMG_0385 .jpg)
超音波センサーを前につけた。これにより、紙コップの位置を...
#ref(IMG_0386.jpg)
前からの写真。
#ref(IMG_0387.jpg)
アームの写真。ラインセンサーを横につけることで、紙コップ...
#ref(IMG_0389.jpg)
アームの横からの写真。
#ref(IMG_0390.jpg)
紙コップを挟む動作。
*プログラムについて [#rdc34368]
ここでは、同じようなプログラム[PlaySound(SOUND_CLICK);やO...
**紙コップの運搬ルート [#s8a1e5a6]
#ref(2014a-mission2.jpg)
まず、スタート位置から、赤色のルートを通り、紙コップAま...
**マスター(親機)のプログラム [#rd63967e]
#define black 36
#define speed 35
#define A 38
#define B 65
定数の定義。電池の種類・消耗次第でスピードが、照明次第で...
上から順に黒線と白紙の境界値・ロボットの移動速度(モーター...
task main()
{
SetSensorLight(S1);
SetSensorLight(S4);
SetSensorLowspeed(S3);
センサーの定義。1にはライントレース用の光センサー、3に...
int msg;
msgという変数を用いることを示している。これは後で使う。
until(BluetoothStatus(1) == NO_ERR);
RemotePlayTone(1,440,1000);
子機と通信が出来ているか確認して、上手くいっている時はピ...
Off(OUT_BC);
Wait(1200);
音を鳴らしている間はロボットは停止して、すぐには動き出さ...
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
ここからロボットが動き出す。OnFwdSyncを用いて直進している...
今回ロボットの移動はWait();を使うのを控えた。これは先に述...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(400);
PlaySound(SOUND_CLICK);
スタート位置の黒線を横断。
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
次の黒線に当たるまで直進。
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(500);
PlaySound(SOUND_CLICK);
黒線の枠を横断する。ここでロボットは枠内に半分ほど入る。
Off(OUT_BC);Wait(500);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
ロボットが黒線上にいる状態で方向転換(左旋回)する。この旋...
Off(OUT_BC);Wait(700);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
Wait(180);
PlaySound(SOUND_CLICK);
前の動作でほぼ旋回できているのでここでは微調整として少し...
る。1秒もしない時間ならWait();を使っても誤差は生じなかっ...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(1100);
PlaySound(SOUND_CLICK);
旋回が終わると、ロボットは黒線の枠上にいるので光センサー...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(500);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(600);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
一度目に旋回した地点からすると、コップは黒線2本目のとこ...
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
前述と同じように、方向転換(90度)する。これでコップAの...
OnRevSync(OUT_BC,speed,0);
Wait(2000);
旋回地点ではあまりにもコップとの距離が近いため、ここで一...
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 12);
コップとの距離が12cm以下になるまで前進する。この12cm...
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave.rxe");
親機からプログラム「z_slave.rxe」を子機に実行するように命...
while(msg != 11){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
子機から「11」というメッセージが来るまで待つ。このメッセ...
if(SENSOR_4 < A){
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 18);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
コップがAだった場合、コップ1との距離が18cm以下になるま...
}else if(SENSOR_4 < B){
OnFwdSync(OUT_BC,speed,0);
Wait(2000);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SensorUS(S3) < 18);
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
コップがBだった場合、超音波センサーでコップを認識するまで...
}else{
OnFwdSync(OUT_BC,speed,0);
Wait(6000);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SensorUS(S3) < 30);
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(100);
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 18);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
}
}
コップがCだった場合、コップ3の真横に来るように前進、右に...
**スラーブ(子機)のプログラム [#aec6a496]
task main()
{
PlaySound(SOUND_CLICK);
OnFwd(OUT_A,70);Wait(2800);Off(OUT_A);
OnRev(OUT_C,20);Wait(800);Off(OUT_C);
OnRev(OUT_A,60);Wait(2800);Off(OUT_A);
SendResponseNumber(MAILBOX1,11);
Wait(1000);
PlaySound(SOUND_CLICK);
}
アームを下げて、コップを掴んでアームを上げ、親機にメッセ...
task main()
{
PlaySound(SOUND_CLICK);
OnFwd(OUT_A,60);Wait(900);Off(OUT_A);
OnFwd(OUT_C,20);Wait(700);Off(OUT_C);
OnRev(OUT_A,80);Wait(1800);Off(OUT_A);
SendResponseNumber(MAILBOX1,12);
Wait(1000);
PlaySound(SOUND_CLICK);
}
アームを下げ、コップを離してアームを上げ、親機にメッセー...
*感想 [#t682257e]
今回私は、プログラムについてより一層、考えが深まった。今...
終了行:
#contents
*メンバー [#j6101771]
・saborijini
~・bosoo
~・hodaka
~・snowdrop
*課題について [#sf79c1d2]
**課題:紙コップ収集分別ロボット [#jb006a0e]
2台のロボットで紙コップを収集し、同じ番号の書かれている紙...
#ref(http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&...
**フィールドの説明 [#l0983e23]
フィールドは課題1で使用した紙を2枚つなぎ合わせる (詳細な...
~図の右半分の黄色い地点には、その数字と同じ数字が書いてあ...
~
|サイコロの目|A|B|C|
|LEFT:1|1|2|3|
|LEFT:2|1|3|2|
|LEFT:3|2|1|3|
|LEFT:4|2|3|1|
|LEFT:5|3|1|2|
|LEFT:6|3|2|1|
その他ルールなど詳細は[[課題2:http://yakushi.shinshu-u.a...
*本体について [#h2cafae9]
#ref(IMG_0388.jpg)
全体の写真。NXTを縦に重ねることで、横幅の軽減に努めた...
#ref(IMG_0385 .jpg)
超音波センサーを前につけた。これにより、紙コップの位置を...
#ref(IMG_0386.jpg)
前からの写真。
#ref(IMG_0387.jpg)
アームの写真。ラインセンサーを横につけることで、紙コップ...
#ref(IMG_0389.jpg)
アームの横からの写真。
#ref(IMG_0390.jpg)
紙コップを挟む動作。
*プログラムについて [#rdc34368]
ここでは、同じようなプログラム[PlaySound(SOUND_CLICK);やO...
**紙コップの運搬ルート [#s8a1e5a6]
#ref(2014a-mission2.jpg)
まず、スタート位置から、赤色のルートを通り、紙コップAま...
**マスター(親機)のプログラム [#rd63967e]
#define black 36
#define speed 35
#define A 38
#define B 65
定数の定義。電池の種類・消耗次第でスピードが、照明次第で...
上から順に黒線と白紙の境界値・ロボットの移動速度(モーター...
task main()
{
SetSensorLight(S1);
SetSensorLight(S4);
SetSensorLowspeed(S3);
センサーの定義。1にはライントレース用の光センサー、3に...
int msg;
msgという変数を用いることを示している。これは後で使う。
until(BluetoothStatus(1) == NO_ERR);
RemotePlayTone(1,440,1000);
子機と通信が出来ているか確認して、上手くいっている時はピ...
Off(OUT_BC);
Wait(1200);
音を鳴らしている間はロボットは停止して、すぐには動き出さ...
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
ここからロボットが動き出す。OnFwdSyncを用いて直進している...
今回ロボットの移動はWait();を使うのを控えた。これは先に述...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(400);
PlaySound(SOUND_CLICK);
スタート位置の黒線を横断。
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
次の黒線に当たるまで直進。
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(500);
PlaySound(SOUND_CLICK);
黒線の枠を横断する。ここでロボットは枠内に半分ほど入る。
Off(OUT_BC);Wait(500);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
ロボットが黒線上にいる状態で方向転換(左旋回)する。この旋...
Off(OUT_BC);Wait(700);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
Wait(180);
PlaySound(SOUND_CLICK);
前の動作でほぼ旋回できているのでここでは微調整として少し...
る。1秒もしない時間ならWait();を使っても誤差は生じなかっ...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(1100);
PlaySound(SOUND_CLICK);
旋回が終わると、ロボットは黒線の枠上にいるので光センサー...
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(500);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwdSync(OUT_BC,speed,0);
Wait(600);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
一度目に旋回した地点からすると、コップは黒線2本目のとこ...
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SENSOR_1 < black);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
前述と同じように、方向転換(90度)する。これでコップAの...
OnRevSync(OUT_BC,speed,0);
Wait(2000);
旋回地点ではあまりにもコップとの距離が近いため、ここで一...
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 12);
コップとの距離が12cm以下になるまで前進する。この12cm...
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave.rxe");
親機からプログラム「z_slave.rxe」を子機に実行するように命...
while(msg != 11){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
子機から「11」というメッセージが来るまで待つ。このメッセ...
if(SENSOR_4 < A){
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 18);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
コップがAだった場合、コップ1との距離が18cm以下になるま...
}else if(SENSOR_4 < B){
OnFwdSync(OUT_BC,speed,0);
Wait(2000);
PlaySound(SOUND_CLICK);
Off(OUT_BC);Wait(500);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SensorUS(S3) < 18);
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
コップがBだった場合、超音波センサーでコップを認識するまで...
}else{
OnFwdSync(OUT_BC,speed,0);
Wait(6000);
OnFwd(OUT_B,speed);
OnRev(OUT_C,speed);
until(SensorUS(S3) < 30);
PlaySound(SOUND_CLICK);
Off(OUT_BC);
Wait(100);
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 18);
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave-2.rxe");
while(msg != 12){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
}
}
コップがCだった場合、コップ3の真横に来るように前進、右に...
**スラーブ(子機)のプログラム [#aec6a496]
task main()
{
PlaySound(SOUND_CLICK);
OnFwd(OUT_A,70);Wait(2800);Off(OUT_A);
OnRev(OUT_C,20);Wait(800);Off(OUT_C);
OnRev(OUT_A,60);Wait(2800);Off(OUT_A);
SendResponseNumber(MAILBOX1,11);
Wait(1000);
PlaySound(SOUND_CLICK);
}
アームを下げて、コップを掴んでアームを上げ、親機にメッセ...
task main()
{
PlaySound(SOUND_CLICK);
OnFwd(OUT_A,60);Wait(900);Off(OUT_A);
OnFwd(OUT_C,20);Wait(700);Off(OUT_C);
OnRev(OUT_A,80);Wait(1800);Off(OUT_A);
SendResponseNumber(MAILBOX1,12);
Wait(1000);
PlaySound(SOUND_CLICK);
}
アームを下げ、コップを離してアームを上げ、親機にメッセー...
*感想 [#t682257e]
今回私は、プログラムについてより一層、考えが深まった。今...
ページ名: