2015a/Member/bin-san/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/MemberOnly]]
#contents
*今回の課題 [#e37991ac]
半径1メートル以内にある缶を音響センサーを用いて発見し、...
*ロボットについて [#d490114e]
今回のロボットは、課題2で用いたものに少し手を加えただけ...
ここでは、課題3用に手を加えた点のみ説明する。
**アーム [#sfe5ee77]
以前はボールを転がしながら移動すると、ボールがマシンの中...
#ref(./IMG_3042.JPG,10%)
**超音波センサー [#zcba2ce0]
この課題に不可欠な超音波センサーは、超音波を用いることで...
#ref(./IMG_3043.JPG,10%)
*プログラム [#z221dfd1]
**定義 [#nc614397]
#define SpinTime 8000
#define Stop Off(OUT_BC);Wait(500);
#define Spin OnFwd(OUT_C,25);OnRev(OUT_B,25); //その場で...
#define Sekkin OnFwd(OUT_BC,25);Wait(1000); //少し前に進む
#define Shoot_position 25
#define Shoot OnRev(OUT_BC,50);Wait(200);Off(OUT_BC);OnF...
#define Back OnRev(OUT_BC,25);Wait(3800);
**本体のプログラム [#b5bdf3f2]
缶の探し方は、一度その場で回転して缶を見つけて仮の最小値...
task main()
{
SetSensorLowspeed(S2);
int d_min=100; //物体までの距離の仮の最小値を1メートル...
int COUNT=0;
long t0=CurrentTick();
/*缶が予め半径25センチ圏内の時*/
while(CurrentTick()-t0 <= SpinTime){
Spin;
if(SensorUS(S2) < Shoot_position){
Back; //バックして缶から半径30センチ圏外まで移...
COUNT++;
}
}
/*缶が予め半径25センチ圏外の時*/
while(COUNT <= 1){
long t = CurrentTick();
while(CurrentTick()-t <= SpinTime){ //8秒間回転し、...
Spin;
if(SensorUS(S2) < d_min){
d_min=SensorUS(S2);
}
}
if(COUNT == 0){ //回転して缶の位置を測定、そして缶...
Spin;
until(SensorUS(S2) == d_min);
Sekkin;
COUNT++;
} else { //カウンターが1の時はこのelse内のプログラ...
Spin;
until(SensorUS(S2) == d_min);
Sekkin;
until(SensorUS(S2) <= Shoot_position);
Shoot;
}
}
while(COUNT == 2){ //カウンターが2になるとプログラムが...
Off(OUT_BC);
Wait(10000);
}
}
*課題3に対する感想 [#g7159432]
今回は課題2のロボットにセンサーを付け、アームを改良しただ...
終了行:
[[2015a/MemberOnly]]
#contents
*今回の課題 [#e37991ac]
半径1メートル以内にある缶を音響センサーを用いて発見し、...
*ロボットについて [#d490114e]
今回のロボットは、課題2で用いたものに少し手を加えただけ...
ここでは、課題3用に手を加えた点のみ説明する。
**アーム [#sfe5ee77]
以前はボールを転がしながら移動すると、ボールがマシンの中...
#ref(./IMG_3042.JPG,10%)
**超音波センサー [#zcba2ce0]
この課題に不可欠な超音波センサーは、超音波を用いることで...
#ref(./IMG_3043.JPG,10%)
*プログラム [#z221dfd1]
**定義 [#nc614397]
#define SpinTime 8000
#define Stop Off(OUT_BC);Wait(500);
#define Spin OnFwd(OUT_C,25);OnRev(OUT_B,25); //その場で...
#define Sekkin OnFwd(OUT_BC,25);Wait(1000); //少し前に進む
#define Shoot_position 25
#define Shoot OnRev(OUT_BC,50);Wait(200);Off(OUT_BC);OnF...
#define Back OnRev(OUT_BC,25);Wait(3800);
**本体のプログラム [#b5bdf3f2]
缶の探し方は、一度その場で回転して缶を見つけて仮の最小値...
task main()
{
SetSensorLowspeed(S2);
int d_min=100; //物体までの距離の仮の最小値を1メートル...
int COUNT=0;
long t0=CurrentTick();
/*缶が予め半径25センチ圏内の時*/
while(CurrentTick()-t0 <= SpinTime){
Spin;
if(SensorUS(S2) < Shoot_position){
Back; //バックして缶から半径30センチ圏外まで移...
COUNT++;
}
}
/*缶が予め半径25センチ圏外の時*/
while(COUNT <= 1){
long t = CurrentTick();
while(CurrentTick()-t <= SpinTime){ //8秒間回転し、...
Spin;
if(SensorUS(S2) < d_min){
d_min=SensorUS(S2);
}
}
if(COUNT == 0){ //回転して缶の位置を測定、そして缶...
Spin;
until(SensorUS(S2) == d_min);
Sekkin;
COUNT++;
} else { //カウンターが1の時はこのelse内のプログラ...
Spin;
until(SensorUS(S2) == d_min);
Sekkin;
until(SensorUS(S2) <= Shoot_position);
Shoot;
}
}
while(COUNT == 2){ //カウンターが2になるとプログラムが...
Off(OUT_BC);
Wait(10000);
}
}
*課題3に対する感想 [#g7159432]
今回は課題2のロボットにセンサーを付け、アームを改良しただ...
ページ名: