2017a/Member/kk/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
#contents
*課題3と担当 [#r967ec7c]
**課題3 [#l471b155]
ロボットを2台使い、[[課題2:http://yakushi.shinshu-u.ac.jp...
で使ったコースを用いてコース上の様々な位置に置かれた缶を...
**担当した箇所 [#h06a53a2]
班のメンバーはRyoma、Kawachan、rayonne、kkの4人である。...
#ref(./積み上げロボット.JPG,50%,積み上げロボット);
積み上げロボット
#ref(./持ち運びロボット.png,50%,運搬ロボット);
運搬ロボット
*ロボット [#k57b7f1c]
#ref(./持ち運びロボット.png,50%,運搬ロボット);
&br;
#ref(./持ち運びロボット 正面.JPG,50%,運搬ロボット正面);
ライントレースをして缶を取りに行くロボットである。課題2で...
*プログラム [#m616e83c]
**全体的な説明 [#u4c673a4]
運ぶ缶はE、F、EF間のカーブの3つのみである。他の缶は時間が...
&br;基本的には黒線をトレースして缶を運ぶが、途中でトレー...
**ルート [#me834eb6]
運搬ロボットの役目は缶をTまで運ぶことである。缶をTに運ん...
缶をTに運ぶルートは、A-Eの缶を取る-Tに置く-Fの缶を取る-T...
***A-Eの缶を取る-Tに置く[#e8fab088]
#ref(./start-t.JPG,50%,A-E-T);
A-E-P-S-R-Tの目の前 と動く。Rまでは黒線をトレースして、R...
***T-Fの缶を取る-Tに置く [#h81eaa77]
#ref(./f-t.JPG,50%,T-F-T);
缶を置いた後、一度バックしてRを越えたあたりまで行く。その...
&br;PからFに直線で向かうのは、P-Q-FとトレースしていくとQ...
***T-EF間の缶を取る-Tに置く [#l46bbe24]
#ref(./ef-t.JPG,50%,T-EF-T);
同じようにバック、時計回りで円弧SRを見つける。そこからS-P...
&br;EF間の缶は黒線の右側をトレースしていくと自動的にアー...
&br;また、Qに着いた後にQ-Rと向かわずにQ-P-S-Rと遠回りする...
***T-一度離れる-ゴールに缶を押し込む [#kf3efc98]
#ref(./end.JPG,50%,end);
3つ目の缶をTに運んだあと、積み上げロボットが作業する間は...
**プログラム [#j635eab0]
時間が足りず、最後に調整や変更した箇所のプログラムが整理...
&br;
&br;まず、定義、変数を書く。
#define CONN 1 //積み上げロボ...
int a; //トレースして...
long t; //時間を測るた...
次にサブルーチンを書く。
&br;?きちんと動いているかを確認するために音を鳴らす。
sub sound_up() //SOUND_UPを鳴...
{
PlaySound(SOUND_UP);
}
?黒線の右側、左側をトレースする。基本の交差点の判別方法は...
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>
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();
}
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(Q)側からRに来た機体をTの前で停止させる。
sub s_t() //S側からRに来た機体をT...
{
OnFwd(OUT_C,20); //Tを向く
OnFwd(OUT_A,10);
Wait(600);
OnFwd(OUT_AC,30);
Wait(950);
Off(OUT_AC);
Wait(400);
sound_up();
}
sub q_t() //Q側からRに来た機体をT...
{
OnRev(OUT_A,15); //Tを向く
OnFwd(OUT_C,40);
Wait(230);
OnFwd(OUT_AC,30);
Wait(600);
sound_up();
}
?Tに缶を置いた後、後退して旋回、円弧SRを見つけ出し、Sまで...
sub hukki_s()
{
OnRev(OUT_AC,40);
Wait(950);
OnFwd(OUT_C,35); //この間に直線RTを越...
OnRev(OUT_A,10);
Wait(1000);
while(SENSOR_1>=50){ //光センサーによって...
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1000); //Sまでトレースする
sound_up();
}
?地点Fの缶を取った後、旋回して円弧QRを見つけ出し、地点Rま...
sub hukki_r()
{
OnFwd(OUT_C,30); //この間に直線EFを越...
OnRev(OUT_A,10);
Wait(3000);
while(SENSOR_1>=50){ //光センサーによって...
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1500); //Rまでトレースする
sound_up();
}
task main()を書く
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"); //積み...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
Off(OUT_AC); //ブレをなくすため...
Wait(20000);
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に缶を置く
OnRev(OUT_A,10);
RemoteStartProgram(CONN,"tumu.rxe"); //積み上...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
OnFwd(OUT_AC,30); //機体を黒線の左側...
Wait(600);
Off(OUT_AC); //待機
Wait(15000);
migi_susumu(1500); //地点E
migi_susumu(28000); //地点Q
migi_susumu(1500); //地点P
chousei();
migi_susumu(2000); //地点S
chousei();
migi_susumu(2000); //地点R
s_t(); //地点Tに缶を置く
OnFwd(OUT_A,30); //積み上げロボット...
OnFwd(OUT_C,35);
Wait(500);
RemoteStartProgram(CONN,"tumu2.rxe"); //積み上...
OnRev(OUT_AC,30); //Tよりも前進した分...
Wait(500);
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
chousei_2();
hidari_susumu(2000); //地点Q
chousei_2();
Off(OUT_AC); //待機
Wait(15000);
hidari_susumu(2000); //地点R
hidari_susumu(1500); //地点T
Off(OUT_AC);
OnRev(OUT_AC,30); //缶から離れる
Wait(1500);
}
*ロボコン結果と総評 [#n4eb9d8d]
ロボコンでは、機体、プログラムともにうまく動き、予定して...
&br;今回の課題では、最初は2人ずつに分かれて作業していたの...
終了行:
[[2017a/Member]]
#contents
*課題3と担当 [#r967ec7c]
**課題3 [#l471b155]
ロボットを2台使い、[[課題2:http://yakushi.shinshu-u.ac.jp...
で使ったコースを用いてコース上の様々な位置に置かれた缶を...
**担当した箇所 [#h06a53a2]
班のメンバーはRyoma、Kawachan、rayonne、kkの4人である。...
#ref(./積み上げロボット.JPG,50%,積み上げロボット);
積み上げロボット
#ref(./持ち運びロボット.png,50%,運搬ロボット);
運搬ロボット
*ロボット [#k57b7f1c]
#ref(./持ち運びロボット.png,50%,運搬ロボット);
&br;
#ref(./持ち運びロボット 正面.JPG,50%,運搬ロボット正面);
ライントレースをして缶を取りに行くロボットである。課題2で...
*プログラム [#m616e83c]
**全体的な説明 [#u4c673a4]
運ぶ缶はE、F、EF間のカーブの3つのみである。他の缶は時間が...
&br;基本的には黒線をトレースして缶を運ぶが、途中でトレー...
**ルート [#me834eb6]
運搬ロボットの役目は缶をTまで運ぶことである。缶をTに運ん...
缶をTに運ぶルートは、A-Eの缶を取る-Tに置く-Fの缶を取る-T...
***A-Eの缶を取る-Tに置く[#e8fab088]
#ref(./start-t.JPG,50%,A-E-T);
A-E-P-S-R-Tの目の前 と動く。Rまでは黒線をトレースして、R...
***T-Fの缶を取る-Tに置く [#h81eaa77]
#ref(./f-t.JPG,50%,T-F-T);
缶を置いた後、一度バックしてRを越えたあたりまで行く。その...
&br;PからFに直線で向かうのは、P-Q-FとトレースしていくとQ...
***T-EF間の缶を取る-Tに置く [#l46bbe24]
#ref(./ef-t.JPG,50%,T-EF-T);
同じようにバック、時計回りで円弧SRを見つける。そこからS-P...
&br;EF間の缶は黒線の右側をトレースしていくと自動的にアー...
&br;また、Qに着いた後にQ-Rと向かわずにQ-P-S-Rと遠回りする...
***T-一度離れる-ゴールに缶を押し込む [#kf3efc98]
#ref(./end.JPG,50%,end);
3つ目の缶をTに運んだあと、積み上げロボットが作業する間は...
**プログラム [#j635eab0]
時間が足りず、最後に調整や変更した箇所のプログラムが整理...
&br;
&br;まず、定義、変数を書く。
#define CONN 1 //積み上げロボ...
int a; //トレースして...
long t; //時間を測るた...
次にサブルーチンを書く。
&br;?きちんと動いているかを確認するために音を鳴らす。
sub sound_up() //SOUND_UPを鳴...
{
PlaySound(SOUND_UP);
}
?黒線の右側、左側をトレースする。基本の交差点の判別方法は...
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>
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();
}
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(Q)側からRに来た機体をTの前で停止させる。
sub s_t() //S側からRに来た機体をT...
{
OnFwd(OUT_C,20); //Tを向く
OnFwd(OUT_A,10);
Wait(600);
OnFwd(OUT_AC,30);
Wait(950);
Off(OUT_AC);
Wait(400);
sound_up();
}
sub q_t() //Q側からRに来た機体をT...
{
OnRev(OUT_A,15); //Tを向く
OnFwd(OUT_C,40);
Wait(230);
OnFwd(OUT_AC,30);
Wait(600);
sound_up();
}
?Tに缶を置いた後、後退して旋回、円弧SRを見つけ出し、Sまで...
sub hukki_s()
{
OnRev(OUT_AC,40);
Wait(950);
OnFwd(OUT_C,35); //この間に直線RTを越...
OnRev(OUT_A,10);
Wait(1000);
while(SENSOR_1>=50){ //光センサーによって...
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1000); //Sまでトレースする
sound_up();
}
?地点Fの缶を取った後、旋回して円弧QRを見つけ出し、地点Rま...
sub hukki_r()
{
OnFwd(OUT_C,30); //この間に直線EFを越...
OnRev(OUT_A,10);
Wait(3000);
while(SENSOR_1>=50){ //光センサーによって...
OnFwd(OUT_C,30);
OnRev(OUT_A,10);
}
Off(OUT_AC);
hidari_susumu(1500); //Rまでトレースする
sound_up();
}
task main()を書く
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"); //積み...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
Off(OUT_AC); //ブレをなくすため...
Wait(20000);
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に缶を置く
OnRev(OUT_A,10);
RemoteStartProgram(CONN,"tumu.rxe"); //積み上...
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
OnFwd(OUT_AC,30); //機体を黒線の左側...
Wait(600);
Off(OUT_AC); //待機
Wait(15000);
migi_susumu(1500); //地点E
migi_susumu(28000); //地点Q
migi_susumu(1500); //地点P
chousei();
migi_susumu(2000); //地点S
chousei();
migi_susumu(2000); //地点R
s_t(); //地点Tに缶を置く
OnFwd(OUT_A,30); //積み上げロボット...
OnFwd(OUT_C,35);
Wait(500);
RemoteStartProgram(CONN,"tumu2.rxe"); //積み上...
OnRev(OUT_AC,30); //Tよりも前進した分...
Wait(500);
hukki_s(); //地点S
chousei_2();
hidari_susumu(2000); //地点P
chousei_2();
hidari_susumu(2000); //地点Q
chousei_2();
Off(OUT_AC); //待機
Wait(15000);
hidari_susumu(2000); //地点R
hidari_susumu(1500); //地点T
Off(OUT_AC);
OnRev(OUT_AC,30); //缶から離れる
Wait(1500);
}
*ロボコン結果と総評 [#n4eb9d8d]
ロボコンでは、機体、プログラムともにうまく動き、予定して...
&br;今回の課題では、最初は2人ずつに分かれて作業していたの...
ページ名: