2017a/Member/rayonne/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
#contents
*課題 [#t37a0a55]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
#ref(2017a/Member/rayonne/Mission3/A.png)
◦図のピンク色の場所に350mlの空き缶を置く
◦図のライトブルーの円のいずれか一箇所に中身の入った...
詳細については[[課題3>http://yakushi.shinshu-u.ac.jp/robo...
*ロボット [#a75f3e41]
**動作 [#p50048e1]
運ぶロボットがTまで缶を運び、通信機能を用いて積むロボット...
今回の課題で自身とkkは運ぶロボット、Ryoma、Kawachanが積み...
**運ぶロボット [#od79bd14]
ロボットはライントレースに用いたものに缶を入れるアームを...
&ref(2017a/Member/rayonne/Mission3/B.jpg); &ref(2017a/Mem...
**積むロボット [#ya2ea7f1]
移動用のモーターは1つのため前後のみの運動となる。運ぶロボ...
詳しくは[[Kawachan>http://yakushi.shinshu-u.ac.jp/robotic...
&ref(2017a/Member/rayonne/Mission3/c.JPG); &ref(2017a/Mem...
*プログラム [#b1308fb2]
**全体の説明 [#k6949788]
今回の課題ではE,F,EF間のカーブにある3つの缶を運ぶプログラ...
**define [#s6b6cbe4]
#define CONN 1
int a;
long t;
int msg;
**サブルーチン [#f60c7794]
・黒線の右側をトレースする。xは出発する交差点の曲がり始め...
sub migi_susumu(int x)
{
t=CurrentTick();
while(CurrentTick()-t<x){
a=0;
while(a<=3){
if(SENSOR_1>=55){
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_A,30);
Off(OUT_C);
}else if(SENSOR_1>=45){
OnFwd(OUT_C,30);
Off(OUT_A);
}else{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
a=a+1;
}
}
}
sound_up();
}
・黒線の左側をトレースする。y上のxと同じ。
sub hidari_susumu(int y)
{
t=CurrentTick();
while(CurrentTick()-t<y){
a=0;
while(a<=3){
if(SENSOR_1>=55){
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_C,30);
Off(OUT_A);
}else if(SENSOR_1>=45){
OnFwd(OUT_A,30);
Off(OUT_C);
}else{
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
a=a+1;
}
}
}
sound_up();
}
・機体は急激に曲がりだすと交差点と認識するため、交差点を...
sub chousei()
{
OnFwd(OUT_A,35);
OnRev(OUT_C,35);
Wait(600);
OnFwd(OUT_AC,30);
Wait(400);
}
・機体は急激に曲がりだすと交差点と認識するため、交差点を...
sub chousei_2()
{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
Wait(750);
OnFwd(OUT_AC,30);
Wait(500);
}
・地点S側から地点Rに来た機体を地点Tの前で停止させる。
sub s_t()
{
OnFwd(OUT_C,20);
OnFwd(OUT_A,10);
Wait(600);
OnFwd(OUT_AC,30);
Wait(950);
Off(OUT_AC);
Wait(400);
sound_up();
}
・地点Q側から地点Rに来た機体を地点Tの前で停止させる。
sub q_t()
{
OnRev(OUT_A,15);
OnFwd(OUT_C,40);
Wait(230);
OnFwd(OUT_AC,30);
Wait(600);
sound_up();
}
・Tに缶を置いた後、後退して旋回、円弧SRを見つけ出し、地点...
sub hukki_s()
{
OnRev(OUT_AC,40);
Wait(950);
OnFwd(OUT_C,35);
OnRev(OUT_A,10);
Wait(1000);
while(SENSOR_1>=50){
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1000);
sound_up();
}
・地点Fの缶を取った後、旋回して円弧QRを見つけ出し、地点R...
sub hukki_r()
{
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
Wait(3000);
while(SENSOR_1>=50){
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1500);
sound_up();
}
**taskmain [#t65269be]
task main()
{
SetSensorLight(S1);
OnFwd(OUT_AC,30); //地点A
Wait(600);
migi_susumu(1500); //地点E、缶を...
migi_susumu(1500); //地点P
migi_susumu(1500); //地点S
chousei();
migi_susumu(2000); //地点R
s_t(); //地点Tに缶を...
RemoteStartProgram(CONN,"taiki.rxe"); //slaveに”tai...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
Off(OUT_AC);
Wait(20000); //slaveの缶を...
OnFwd(OUT_C,30); //地点Fの方向...
OnRev(OUT_A,30);
Wait(900);
OnFwd(OUT_AC,30);
Wait(1900);
sound_up(); //地点F、缶を...
hukki_r(); //地点R
q_t(); //地点Tに缶を...
OnFwd(OUT_C,10); //地点Fの方向...
OnRev(OUT_A,10);
RemoteStartProgram(CONN,"tumu.rxe"); //slaveに”tumu...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
OnFwd(OUT_AC,30); //機体を線の左...
Wait(600);
Off(OUT_AC);
Wait(15000); //slaveの缶を...
migi_susumu(1500); //地点E
migi_susumu(28000); //地点Q
migi_susumu(1500); //地点P
chousei();
migi_susumu(2000); //地点S
chousei();
migi_susumu(2000); //地点R
s_t();
OnFwd(OUT_A,30);
OnFwd(OUT_C,35);
Wait(500); //地点Tに缶を...
RemoteStartProgram(CONN,"tumu2.rxe"); //slaveに”tumu...
OnRev(OUT_AC,30);
Wait(500);
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点R
chousei_2();
hidari_susumu(2000); //地点Q
chousei_2();
Off(OUT_AC);
Wait(15000); //slaveの缶を...
hidari_susumu(2000); //地点P
hidari_susumu(1500); //積んだ缶を範...
Off(OUT_AC);
OnRev(OUT_AC,30);
Wait(1500); //GOALから離れる
}
*感想 [#pa87a676]
今回の課題では電池の消耗によってプログラムを何度も修正し...
終了行:
[[2017a/Member]]
#contents
*課題 [#t37a0a55]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
#ref(2017a/Member/rayonne/Mission3/A.png)
◦図のピンク色の場所に350mlの空き缶を置く
◦図のライトブルーの円のいずれか一箇所に中身の入った...
詳細については[[課題3>http://yakushi.shinshu-u.ac.jp/robo...
*ロボット [#a75f3e41]
**動作 [#p50048e1]
運ぶロボットがTまで缶を運び、通信機能を用いて積むロボット...
今回の課題で自身とkkは運ぶロボット、Ryoma、Kawachanが積み...
**運ぶロボット [#od79bd14]
ロボットはライントレースに用いたものに缶を入れるアームを...
&ref(2017a/Member/rayonne/Mission3/B.jpg); &ref(2017a/Mem...
**積むロボット [#ya2ea7f1]
移動用のモーターは1つのため前後のみの運動となる。運ぶロボ...
詳しくは[[Kawachan>http://yakushi.shinshu-u.ac.jp/robotic...
&ref(2017a/Member/rayonne/Mission3/c.JPG); &ref(2017a/Mem...
*プログラム [#b1308fb2]
**全体の説明 [#k6949788]
今回の課題ではE,F,EF間のカーブにある3つの缶を運ぶプログラ...
**define [#s6b6cbe4]
#define CONN 1
int a;
long t;
int msg;
**サブルーチン [#f60c7794]
・黒線の右側をトレースする。xは出発する交差点の曲がり始め...
sub migi_susumu(int x)
{
t=CurrentTick();
while(CurrentTick()-t<x){
a=0;
while(a<=3){
if(SENSOR_1>=55){
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_A,30);
Off(OUT_C);
}else if(SENSOR_1>=45){
OnFwd(OUT_C,30);
Off(OUT_A);
}else{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
a=a+1;
}
}
}
sound_up();
}
・黒線の左側をトレースする。y上のxと同じ。
sub hidari_susumu(int y)
{
t=CurrentTick();
while(CurrentTick()-t<y){
a=0;
while(a<=3){
if(SENSOR_1>=55){
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
}else if(SENSOR_1>=50){
OnFwd(OUT_C,30);
Off(OUT_A);
}else if(SENSOR_1>=45){
OnFwd(OUT_A,30);
Off(OUT_C);
}else{
OnFwd(OUT_A,30);
OnRev(OUT_C,30);
a=a+1;
}
}
}
sound_up();
}
・機体は急激に曲がりだすと交差点と認識するため、交差点を...
sub chousei()
{
OnFwd(OUT_A,35);
OnRev(OUT_C,35);
Wait(600);
OnFwd(OUT_AC,30);
Wait(400);
}
・機体は急激に曲がりだすと交差点と認識するため、交差点を...
sub chousei_2()
{
OnFwd(OUT_C,30);
OnRev(OUT_A,30);
Wait(750);
OnFwd(OUT_AC,30);
Wait(500);
}
・地点S側から地点Rに来た機体を地点Tの前で停止させる。
sub s_t()
{
OnFwd(OUT_C,20);
OnFwd(OUT_A,10);
Wait(600);
OnFwd(OUT_AC,30);
Wait(950);
Off(OUT_AC);
Wait(400);
sound_up();
}
・地点Q側から地点Rに来た機体を地点Tの前で停止させる。
sub q_t()
{
OnRev(OUT_A,15);
OnFwd(OUT_C,40);
Wait(230);
OnFwd(OUT_AC,30);
Wait(600);
sound_up();
}
・Tに缶を置いた後、後退して旋回、円弧SRを見つけ出し、地点...
sub hukki_s()
{
OnRev(OUT_AC,40);
Wait(950);
OnFwd(OUT_C,35);
OnRev(OUT_A,10);
Wait(1000);
while(SENSOR_1>=50){
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1000);
sound_up();
}
・地点Fの缶を取った後、旋回して円弧QRを見つけ出し、地点R...
sub hukki_r()
{
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
Wait(3000);
while(SENSOR_1>=50){
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1500);
sound_up();
}
**taskmain [#t65269be]
task main()
{
SetSensorLight(S1);
OnFwd(OUT_AC,30); //地点A
Wait(600);
migi_susumu(1500); //地点E、缶を...
migi_susumu(1500); //地点P
migi_susumu(1500); //地点S
chousei();
migi_susumu(2000); //地点R
s_t(); //地点Tに缶を...
RemoteStartProgram(CONN,"taiki.rxe"); //slaveに”tai...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
Off(OUT_AC);
Wait(20000); //slaveの缶を...
OnFwd(OUT_C,30); //地点Fの方向...
OnRev(OUT_A,30);
Wait(900);
OnFwd(OUT_AC,30);
Wait(1900);
sound_up(); //地点F、缶を...
hukki_r(); //地点R
q_t(); //地点Tに缶を...
OnFwd(OUT_C,10); //地点Fの方向...
OnRev(OUT_A,10);
RemoteStartProgram(CONN,"tumu.rxe"); //slaveに”tumu...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
OnFwd(OUT_AC,30); //機体を線の左...
Wait(600);
Off(OUT_AC);
Wait(15000); //slaveの缶を...
migi_susumu(1500); //地点E
migi_susumu(28000); //地点Q
migi_susumu(1500); //地点P
chousei();
migi_susumu(2000); //地点S
chousei();
migi_susumu(2000); //地点R
s_t();
OnFwd(OUT_A,30);
OnFwd(OUT_C,35);
Wait(500); //地点Tに缶を...
RemoteStartProgram(CONN,"tumu2.rxe"); //slaveに”tumu...
OnRev(OUT_AC,30);
Wait(500);
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点R
chousei_2();
hidari_susumu(2000); //地点Q
chousei_2();
Off(OUT_AC);
Wait(15000); //slaveの缶を...
hidari_susumu(2000); //地点P
hidari_susumu(1500); //積んだ缶を範...
Off(OUT_AC);
OnRev(OUT_AC,30);
Wait(1500); //GOALから離れる
}
*感想 [#pa87a676]
今回の課題では電池の消耗によってプログラムを何度も修正し...
ページ名: