2015a/Member/bizzyD/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題 [#d9a8f66f]
半径1m以内にある空き缶を探して、25cmの距離からボールを転...
*ロボットの説明、アームの動かし方 [#afe91d8e]
#ref(./DSC_0014~2.jpg)
#ref(./DSC_0017~2.jpg)
ロボット本体は課題2のロボットに超音波センサを取り付けた...
*プログラムの説明 [#cbe5b999]
#define SPEED 50 // 高速
#define SPEED_SLOW 30 // 低速
#define go_forward OnFwd(OUT_BC,100);Wait(500);Off(OUT_B...
#define arm_up OnRev(OUT_A,100);Wait(500);Off(OUT_A); ...
const float diameter = 5.45; // タイヤの直径
const float track = 10.35; // タイヤのトレッド幅
const float pi = 3.1415; // 円周率
void fwdDist(float d) // 距離 d ? 前進
{
long angle;
angle = d/(diameter*pi)*360.0; // 角度を...
RotateMotorEx(OUT_BC, SPEED_SLOW, angle, 0, true, t...
}
void turnAng(long ang) // 角度 ang 度の時計回り...
{
long angle;
angle = track/diameter * ang;
RotateMotorEx(OUT_BC, SPEED_SLOW, angle, 100, true,...
}
int serchDirection(long 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(S...
Wait(14); // 微調整
Off(OUT_BC);Wait(500);
return d_min;
}
task main()
{
SetSensorLowspeed(S1); ...
// 缶の方向を探した後、近づいて35?手前で停止 ...
int d = serchDirection(360);
if (d > 35) {
fwdDist(d-35.0); ...
} ...
// ボールを発射 ...
arm_up;
go_forward;
}
*工夫したところ [#z40a8a83]
初め、缶にボールを当てるために缶の25?手前でロボットを停止...
*反省点 [#o31780b0]
今回の課題は、「半径1m以内にある空き缶を探して、25cmの距...
*感想 [#l724f140]
今回の課題は、サンプルプログラムが配布されていたので、プ...
終了行:
#contents
*課題 [#d9a8f66f]
半径1m以内にある空き缶を探して、25cmの距離からボールを転...
*ロボットの説明、アームの動かし方 [#afe91d8e]
#ref(./DSC_0014~2.jpg)
#ref(./DSC_0017~2.jpg)
ロボット本体は課題2のロボットに超音波センサを取り付けた...
*プログラムの説明 [#cbe5b999]
#define SPEED 50 // 高速
#define SPEED_SLOW 30 // 低速
#define go_forward OnFwd(OUT_BC,100);Wait(500);Off(OUT_B...
#define arm_up OnRev(OUT_A,100);Wait(500);Off(OUT_A); ...
const float diameter = 5.45; // タイヤの直径
const float track = 10.35; // タイヤのトレッド幅
const float pi = 3.1415; // 円周率
void fwdDist(float d) // 距離 d ? 前進
{
long angle;
angle = d/(diameter*pi)*360.0; // 角度を...
RotateMotorEx(OUT_BC, SPEED_SLOW, angle, 0, true, t...
}
void turnAng(long ang) // 角度 ang 度の時計回り...
{
long angle;
angle = track/diameter * ang;
RotateMotorEx(OUT_BC, SPEED_SLOW, angle, 100, true,...
}
int serchDirection(long 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(S...
Wait(14); // 微調整
Off(OUT_BC);Wait(500);
return d_min;
}
task main()
{
SetSensorLowspeed(S1); ...
// 缶の方向を探した後、近づいて35?手前で停止 ...
int d = serchDirection(360);
if (d > 35) {
fwdDist(d-35.0); ...
} ...
// ボールを発射 ...
arm_up;
go_forward;
}
*工夫したところ [#z40a8a83]
初め、缶にボールを当てるために缶の25?手前でロボットを停止...
*反省点 [#o31780b0]
今回の課題は、「半径1m以内にある空き缶を探して、25cmの距...
*感想 [#l724f140]
今回の課題は、サンプルプログラムが配布されていたので、プ...
ページ名: