2016a/Member/funatsu/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*ルール説明 [#k39b19cf]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
ロボット2台を用いてC地点、D地点においてある紙コップを目...
*ロボットの説明 [#a67ccf68]
#ref(2016a/Member/funatsu/Mission3/IMG_3196.jpg,50%)
ロボットの土台と紙コップを持ち上げるための腕である。土...
#ref(2016a/Member/funatsu/Mission3/IMG_5300.jpg,50%)
完成した姿である。
#ref(2016a/Member/funatsu/Mission3/IMG_1130.jpg,50%)
紙コップの持ち上げ方だが、まず上図のように二つの車輪が...
#ref(2016a/Member/funatsu/Mission3/IMG_2138.jpg,50%)
それから一つ目のモーターで紙コップを巻き込みあげ、二つ...
このままD地点へ移動し紙コップを回収。再びC地点への往復...
*製作途中において [#kea1ddf5]
ロボットは課題2で作ったプログラミングを用いながらライ...
*プログラミングについて [#p2894362]
車体がマスター、腕がスレーブである。
まずは腕のプログラミングから
#define SIGNALON 21 ...
#define SIGNALOFF 22 ...
#define LIFT_up OnRev(OUT_C,35);Wait(520);Off(OUT_BC); ...
#define LIFT_down OnFwd(OUT_C,20);Wait(550);Off(OUT_BC);...
#define CATCH OnFwd(OUT_B,60);Wait(2000);Off(OUT_B); ...
#define RELEASE OnFwd(OUT_B,50);Wait(1500);Off(OUT_B); ...
#define CONN 0 ...
#define SIGNALON2 31
#define SIGNALOFF2 32
void ude() //サブルーチン
{
LIFT_down;
CATCH;
LIFT_up;
CATCH;
Off(OUT_B);
}
task main ()
{
int msg;
while (true) {
ReceiveRemoteNumber(MAILBOX1,true,msg); //msg...
if (msg == SIGNALON) { //信号...
ude();
SendResponseNumber(MAILBOX2,SIGNALOFF); //車体...
}
if (msg == SIGNALON2) { //信号を受...
RELEASE;
SendResponseNumber(MAILBOX2,SIGNALOFF2); //車体...
} else { //ど...
Off(OUT_BC);
}
}
}
車体のプログラミング
#define SPEED 50 //スピード50
#define go_forward OnFwd(OUT_BC,SPEED); //前進
#define CONN 1 //スレーブ...
#define SIGNALON 21 //腕を動か...
#define SIGNALOFF 22 //腕を動か...
#define SIGNALON2 31
#define SIGNALOFF2 32
#define turn_leftC OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
#define turn_rightC OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED...
task main()
{
int msg //MAILB...
SetSensorLowspeed(S1); //端...
go_forward; //前進
until(SensorUS(S1) <= 9); //セン...
Off(OUT_BC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALON ); //信...
while (true){
ReceiveRemoteNumber(MAILBOX2,true,msg); //msgを受け取...
if (msg == SIGNALOFF ){ //信号を受け取...
turn_leftC;
Wait(1600);
Off(OUT_BC);
go_forward; //前進
Wait(1000);
Off(OUT_BC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALON2 ); //腕に...
if (msg == SIGNALOFF2 ){ //信号を受け取...
turn_leftC;
Wait(1000);
Off(OUT_BC);
}else { ...
Off(OUT_BC);
}
}
}
}
以上のプログラミングを各々のパソコンに入れる。
*反省 [#ydfe7c68]
結果としては紙コップを一つも運ぶことはできなかった。ラ...
終了行:
[[2016a/Member]]
*ルール説明 [#k39b19cf]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
ロボット2台を用いてC地点、D地点においてある紙コップを目...
*ロボットの説明 [#a67ccf68]
#ref(2016a/Member/funatsu/Mission3/IMG_3196.jpg,50%)
ロボットの土台と紙コップを持ち上げるための腕である。土...
#ref(2016a/Member/funatsu/Mission3/IMG_5300.jpg,50%)
完成した姿である。
#ref(2016a/Member/funatsu/Mission3/IMG_1130.jpg,50%)
紙コップの持ち上げ方だが、まず上図のように二つの車輪が...
#ref(2016a/Member/funatsu/Mission3/IMG_2138.jpg,50%)
それから一つ目のモーターで紙コップを巻き込みあげ、二つ...
このままD地点へ移動し紙コップを回収。再びC地点への往復...
*製作途中において [#kea1ddf5]
ロボットは課題2で作ったプログラミングを用いながらライ...
*プログラミングについて [#p2894362]
車体がマスター、腕がスレーブである。
まずは腕のプログラミングから
#define SIGNALON 21 ...
#define SIGNALOFF 22 ...
#define LIFT_up OnRev(OUT_C,35);Wait(520);Off(OUT_BC); ...
#define LIFT_down OnFwd(OUT_C,20);Wait(550);Off(OUT_BC);...
#define CATCH OnFwd(OUT_B,60);Wait(2000);Off(OUT_B); ...
#define RELEASE OnFwd(OUT_B,50);Wait(1500);Off(OUT_B); ...
#define CONN 0 ...
#define SIGNALON2 31
#define SIGNALOFF2 32
void ude() //サブルーチン
{
LIFT_down;
CATCH;
LIFT_up;
CATCH;
Off(OUT_B);
}
task main ()
{
int msg;
while (true) {
ReceiveRemoteNumber(MAILBOX1,true,msg); //msg...
if (msg == SIGNALON) { //信号...
ude();
SendResponseNumber(MAILBOX2,SIGNALOFF); //車体...
}
if (msg == SIGNALON2) { //信号を受...
RELEASE;
SendResponseNumber(MAILBOX2,SIGNALOFF2); //車体...
} else { //ど...
Off(OUT_BC);
}
}
}
車体のプログラミング
#define SPEED 50 //スピード50
#define go_forward OnFwd(OUT_BC,SPEED); //前進
#define CONN 1 //スレーブ...
#define SIGNALON 21 //腕を動か...
#define SIGNALOFF 22 //腕を動か...
#define SIGNALON2 31
#define SIGNALOFF2 32
#define turn_leftC OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED...
#define turn_rightC OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED...
task main()
{
int msg //MAILB...
SetSensorLowspeed(S1); //端...
go_forward; //前進
until(SensorUS(S1) <= 9); //セン...
Off(OUT_BC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALON ); //信...
while (true){
ReceiveRemoteNumber(MAILBOX2,true,msg); //msgを受け取...
if (msg == SIGNALOFF ){ //信号を受け取...
turn_leftC;
Wait(1600);
Off(OUT_BC);
go_forward; //前進
Wait(1000);
Off(OUT_BC);
SendRemoteNumber(CONN,MAILBOX1,SIGNALON2 ); //腕に...
if (msg == SIGNALOFF2 ){ //信号を受け取...
turn_leftC;
Wait(1000);
Off(OUT_BC);
}else { ...
Off(OUT_BC);
}
}
}
}
以上のプログラミングを各々のパソコンに入れる。
*反省 [#ydfe7c68]
結果としては紙コップを一つも運ぶことはできなかった。ラ...
ページ名: