2014a/Member/hodaka/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/MemberOnly/進行状況]]
目次
#contents
*今回の課題 [#l61f0491]
紙コップ収集、分別ロボット
詳しくは課題2を参考にしてください。
http://yakushi.shinshu-u.ac.jp/robotics/?2014a%2FMission2...
*メンバー [#bf535eab]
hodaka:農学部なのにこのとても情報系な授業をとってしまっ...
saborijini:我が班のエース。彼がいなければこの班の発表は...
snowdrop:この授業をとっていた2人の女の子の一人。一つひと...
bosso:コップを持ち上げるアームについて様々なアイデアを生...
*ロボット本体について [#e18ceba0]
ロボットの本体を考えるとき最初に参考にしたのは2013年後期...
しかし、多くが上に大きくなっており、重量オーバーにってし...
さらに、アルミ缶は丈夫だが、紙コップは簡単に変形してしま...
そこでつかむためのモーターを持ち上げるためのモーターで持...
しかし、一個のモーターの出力は大きくなく、持ち上げること...
これでモーターをモーターで持ち上げるアームが完成した。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑アームを上げた状態。これで移動する。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑このようにコップをつかむ。
次に問題となったのは紙コップの識別である。そこで、赤外線...
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑超音波センサー。これで紙コップまでの距離を測定できる。
移動はライントレースを行わず、用紙のライントレース用の黒...
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑自身の位置を確認するための光センサー。
*プログラムについて [#o7bc46f1]
saborijiniのページを参考にしていただきたい。
http://yakushi.shinshu-u.ac.jp/robotics/?2014a%2FMember%2...
**親機のプログラム [#b1f9e184]
#define black 36
#define speed 35
#define A 38
#define B 65
定数の定義をしています。電池の種類・消耗次第でスピードが...
上から順に黒線と白紙の境界値・ロボットの移動速度(モーター...
task main()
{
SetSensorLight(S1);
SetSensorLight(S4);
SetSensorLowspeed(S3);
センサーの定義をしています。1にはライントレース用の光セ...
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);
前の動作でほぼ旋回できているのでここでは微調整として少し...
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);
ここは前述の方向転換と同じです。これでコップがロボットの...
OnRevSync(OUT_BC,speed,0);
Wait(2000);
ここで一旦バックして下がります。あまりにもコップとの距離...
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 12);
コップとの距離が12cm以下になるまで前進します。この12c...
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave.rxe");
ベストポジションに来たので親機からプログラム「z_slave.rxe...
while(msg != 11){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
子機から「11」というメッセージが来るまで待ちます。この...
ルールにあるようにコップはランダムに置かれます。コップはA...
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が真横に来るように前進、右...
↑
**スラーブ(子機)のプログラム [#m107801c]
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);
}
アームを下げて離してアームを上げます。そして親機にメッセ...
* 感想・反省 [#s098dcfb]
何よりも、全員で協力して作業する時間が圧倒的に足りなかっ...
結果は9チーム中4位という上位半分以上に入賞することができ...
終了行:
[[2014a/MemberOnly/進行状況]]
目次
#contents
*今回の課題 [#l61f0491]
紙コップ収集、分別ロボット
詳しくは課題2を参考にしてください。
http://yakushi.shinshu-u.ac.jp/robotics/?2014a%2FMission2...
*メンバー [#bf535eab]
hodaka:農学部なのにこのとても情報系な授業をとってしまっ...
saborijini:我が班のエース。彼がいなければこの班の発表は...
snowdrop:この授業をとっていた2人の女の子の一人。一つひと...
bosso:コップを持ち上げるアームについて様々なアイデアを生...
*ロボット本体について [#e18ceba0]
ロボットの本体を考えるとき最初に参考にしたのは2013年後期...
しかし、多くが上に大きくなっており、重量オーバーにってし...
さらに、アルミ缶は丈夫だが、紙コップは簡単に変形してしま...
そこでつかむためのモーターを持ち上げるためのモーターで持...
しかし、一個のモーターの出力は大きくなく、持ち上げること...
これでモーターをモーターで持ち上げるアームが完成した。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑アームを上げた状態。これで移動する。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑このようにコップをつかむ。
次に問題となったのは紙コップの識別である。そこで、赤外線...
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑超音波センサー。これで紙コップまでの距離を測定できる。
移動はライントレースを行わず、用紙のライントレース用の黒...
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
↑自身の位置を確認するための光センサー。
*プログラムについて [#o7bc46f1]
saborijiniのページを参考にしていただきたい。
http://yakushi.shinshu-u.ac.jp/robotics/?2014a%2FMember%2...
**親機のプログラム [#b1f9e184]
#define black 36
#define speed 35
#define A 38
#define B 65
定数の定義をしています。電池の種類・消耗次第でスピードが...
上から順に黒線と白紙の境界値・ロボットの移動速度(モーター...
task main()
{
SetSensorLight(S1);
SetSensorLight(S4);
SetSensorLowspeed(S3);
センサーの定義をしています。1にはライントレース用の光セ...
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);
前の動作でほぼ旋回できているのでここでは微調整として少し...
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);
ここは前述の方向転換と同じです。これでコップがロボットの...
OnRevSync(OUT_BC,speed,0);
Wait(2000);
ここで一旦バックして下がります。あまりにもコップとの距離...
OnFwdSync(OUT_BC,speed,0);
until(SensorUS(S3) <= 12);
コップとの距離が12cm以下になるまで前進します。この12c...
Off(OUT_BC);
Wait(100);
RemoteStartProgram(1,"z_slave.rxe");
ベストポジションに来たので親機からプログラム「z_slave.rxe...
while(msg != 11){
ReceiveRemoteNumber(MAILBOX1,true,msg);
}
PlaySound(SOUND_CLICK);
子機から「11」というメッセージが来るまで待ちます。この...
ルールにあるようにコップはランダムに置かれます。コップはA...
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が真横に来るように前進、右...
↑
**スラーブ(子機)のプログラム [#m107801c]
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);
}
アームを下げて離してアームを上げます。そして親機にメッセ...
* 感想・反省 [#s098dcfb]
何よりも、全員で協力して作業する時間が圧倒的に足りなかっ...
結果は9チーム中4位という上位半分以上に入賞することができ...
ページ名: