2015a/Member/nttk/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/MemberOnly]]
**はじめに [#k52e254b]
今回は先生からいただいたプログラムをもとに、缶の位置を探...
**ロボット本体の説明 [#ra4535b2]
今回は課題2で使用したロボットを主体としてそれに赤外線セ...
&ref(./1438255748799[1].jpg,,30%);
&ref(./1438255744666[1].jpg,,30%);
&ref(./1438255746328[1].jpg,,30%);
**プログラムの説明 [#m117015b]
#define SPEED 50
#define SPEED_SLOW 30
#define shoot OnRev(OUT_A,10);Wait(500);OnFwd(OUT_BC,SPEE...
const float diameter=5.45;//タイヤの直径」
const float track=10.35;//タイヤのトレッド幅
const float pi=3.1415;//円周率
void fwdDist(float d)
{
long angle;
angle=d/(diameter*pi)*360.0;//角度を計算する
RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true);
}
void turnAng(long ang)//角度ang度の時計周りの旋回
{
long angle;
angle=track/diameter*ang;
RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true);
}
int searchDirection(long ang)//現在の方向を中心にang度...
//障害物までの距離を探す
{
long angle,tacho_min=0, tacho_corr;
int d_min;
d_min=300;//仮の最小値
angle = (track/diameter)*ang;//旋回角度からタイヤの回転...
turnAng(ang/2); //指定された角度の半分を計算
ResetTachoCount(OUT_BC);//角度計算をリッセト
OnFwdSync(OUT_BC,SPEED_SLOW,-100);//反時計回りに旋回
while(MotorTachoCount(OUT_B)<=angle){
if(SensorUS(S1)<d_min){
d_min=SensorUS(S1); //仮の最小値の更新
tacho_min=MotorTachoCount(OUT_B);
}
}
OnFwdSyncEx(OUT_BC,SPEED_SLOW,100,RESET_NONE);
until(MotorTachoCount(OUT_B)<=tacho_min||SensorUS(S1)<=...
Wait(14);//微調整
Off(OUT_BC);Wait(500);
return d_min;
}
task main()
{
SetSensorLowspeed(S1);
//缶を探した後、25?手前で停止
int d = searchDirection(120);
if (d > 25){
fwdDist(d-25.0);
shoot;//シュートの動きする
}
}
**シュートの動き [#z4b6a136]
ボールを止めているストッパーを外しロボットを前進させ止め...
&ref(./1438255742597[1].jpg,,30%);
**反省点 [#s069b64e]
時間が少し少なかったのでプログラムがあまり工夫できず、さ...
終了行:
[[2015a/MemberOnly]]
**はじめに [#k52e254b]
今回は先生からいただいたプログラムをもとに、缶の位置を探...
**ロボット本体の説明 [#ra4535b2]
今回は課題2で使用したロボットを主体としてそれに赤外線セ...
&ref(./1438255748799[1].jpg,,30%);
&ref(./1438255744666[1].jpg,,30%);
&ref(./1438255746328[1].jpg,,30%);
**プログラムの説明 [#m117015b]
#define SPEED 50
#define SPEED_SLOW 30
#define shoot OnRev(OUT_A,10);Wait(500);OnFwd(OUT_BC,SPEE...
const float diameter=5.45;//タイヤの直径」
const float track=10.35;//タイヤのトレッド幅
const float pi=3.1415;//円周率
void fwdDist(float d)
{
long angle;
angle=d/(diameter*pi)*360.0;//角度を計算する
RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true);
}
void turnAng(long ang)//角度ang度の時計周りの旋回
{
long angle;
angle=track/diameter*ang;
RotateMotorEx(OUT_BC,SPEED_SLOW,angle,100,true,true);
}
int searchDirection(long ang)//現在の方向を中心にang度...
//障害物までの距離を探す
{
long angle,tacho_min=0, tacho_corr;
int d_min;
d_min=300;//仮の最小値
angle = (track/diameter)*ang;//旋回角度からタイヤの回転...
turnAng(ang/2); //指定された角度の半分を計算
ResetTachoCount(OUT_BC);//角度計算をリッセト
OnFwdSync(OUT_BC,SPEED_SLOW,-100);//反時計回りに旋回
while(MotorTachoCount(OUT_B)<=angle){
if(SensorUS(S1)<d_min){
d_min=SensorUS(S1); //仮の最小値の更新
tacho_min=MotorTachoCount(OUT_B);
}
}
OnFwdSyncEx(OUT_BC,SPEED_SLOW,100,RESET_NONE);
until(MotorTachoCount(OUT_B)<=tacho_min||SensorUS(S1)<=...
Wait(14);//微調整
Off(OUT_BC);Wait(500);
return d_min;
}
task main()
{
SetSensorLowspeed(S1);
//缶を探した後、25?手前で停止
int d = searchDirection(120);
if (d > 25){
fwdDist(d-25.0);
shoot;//シュートの動きする
}
}
**シュートの動き [#z4b6a136]
ボールを止めているストッパーを外しロボットを前進させ止め...
&ref(./1438255742597[1].jpg,,30%);
**反省点 [#s069b64e]
時間が少し少なかったのでプログラムがあまり工夫できず、さ...
ページ名: