2015a/Member/nori/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* 課題内容 [#x7565a7e]
半径1m以内にある懐中電灯を探して,懐中電灯にピンポン玉を...
ロボットが懐中電灯に接触しない限りどこからピンポン玉をシ...
[[課題3>2015a/Mission3]]参照
* 目次 [#hf0ec7bc]
#contents
* ロボット [#h3034268]
今回の課題3ではピンポン玉を掴む必要がないから,アームはシ...
** アーム [#w2db835b]
&ref(./DSC_0264 (2).JPG,10%); &ref(./DSC_0265 (2).JPG,10%);
出来るだけピンポン玉を真っ直ぐシュートできるようなアーム...
最初はアームを上げた状態でピンポン玉を乗せておき,シュー...
また,モーターの軸にはクラッチギアを用いている.その上に...
** タイヤ [#v8e2a079]
#ref(./DSC_0268 (2).JPG,10%)
左右の前輪をモーターACで動かし,後輪にはキャスターを用い...
** 光センサー [#te7cae16]
#ref(./DSC_0267 (2).JPG,10%)
図はロボットを前から見たところで,光センサーの左右をブロ...
そうすることで,光源を見つけるときに少しずれたところで反...
* プログラム [#qbfe9ce3]
** 定数 [#ibe6508a]
EYE・・・センサー3の値をEYEとした.
TURN_TIME・・・回転する時間.確実に360°は回転するように一...
#define EYE SENSOR_3
#define TURN_TIME 360
** マクロ [#f96cc2b0]
low_power・・・回転するスピードが遅い方がライトセンサーを...
そのため,low_powerでモーターABCのパワ...
right_rotation , left_rotation・・・右回転,左回転をする.
pause・・・各動作の間に0.5秒の小休止を入れた.
shoot・・・アームを下げシュートする.
#define low_power SetPower(OUT_ABC,1);
#define right_rotation low_power;OnFwd(OUT_A);OnRev(OUT_...
#define left_rotation low_power;OnFwd(OUT_C);OnRev(OUT_A);
#define shoot OnFwd(OUT_B);Wait(14);Off(OUT_B);
#define pause Off(OUT_AC);Wait(50);
** グローバル変数 [#m6a2f5bf]
サブルーチンでライトセンサーを探すプログラムを定義してい...
light_max・・・センサーの値が最も大きくなったときのセンサ...
time_max・・・センサーの値が最も大きくなったときの時間を...
int light_max;
int time_max;
** 光源を探すプログラム [#x0379603]
*** タイマー FastTimer(0) [#a52215b1]
FastTimer(0)・・・回転するときに秒数を測って,光センサー...
*** サブルーチン search [#s5aa5547]
まず光源を探すため右まわりに1周回転する.このときにFastTi...
最初に設定したlight_maxよりも光センサーの値が大きくなった...
この操作をそのつど繰り返すことによって,1周のうちに最も...
時間がわかれば,右に回転した秒数から最も光センサーの値が...
sub search()
{
light_max = 20;
ClearTimer(0);
right_rotation; //光源を探すため右に...
while(FastTimer(0) < turn_time) { //1回転...
if(EYE > light_max) { //光センサーの値...
light_max = EYE; //その値を新たなlight_maxと...
time_max = FastTimer(0); //その値になった時間...
}
}
pause;
left_rotation;
Wait(turn_time - time_max); //(右に回転...
pause;
}
** タスク main [#k3cc8cd1]
*** ローカル変数 [#m6c54990]
flag・・・while文の条件を(flag == 0)としていて,シュート...
*** main [#daa01855]
最初にサブルーチンsearchで光源を探す.このときに誤差があ...
そこで前進し,前に進んだあとに光センサーの値がlight_maxよ...
light_maxよりも一定量増えていないときは光源からずれている...
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
int flag = 0;
search(); //光源を探す
while(flag == 0) { //シュートする...
OnFwd(OUT_AC);Wait(100); //前進する
pause;
if(EYE >= light_max + 3) {
pause;
low_power;
shoot;
flag ++;
}
/*進んだあとにセンサーの値がli...
少し下がってシュートして,ルー...
else {
OnRev(OUT_AC);Wait(100);
pause;
search();
}
/*進んだあと,light_maxよりも3...
もう1度光源を探すところから繰...
}
Off(OUT_AC);
}
* まとめと反省 [#h0f1ccbe]
一回判定してから,前進して光源の方向を向いているか確認す...
アーム部分のギア比を調節することで,アームの速度を変えた...
終了行:
* 課題内容 [#x7565a7e]
半径1m以内にある懐中電灯を探して,懐中電灯にピンポン玉を...
ロボットが懐中電灯に接触しない限りどこからピンポン玉をシ...
[[課題3>2015a/Mission3]]参照
* 目次 [#hf0ec7bc]
#contents
* ロボット [#h3034268]
今回の課題3ではピンポン玉を掴む必要がないから,アームはシ...
** アーム [#w2db835b]
&ref(./DSC_0264 (2).JPG,10%); &ref(./DSC_0265 (2).JPG,10%);
出来るだけピンポン玉を真っ直ぐシュートできるようなアーム...
最初はアームを上げた状態でピンポン玉を乗せておき,シュー...
また,モーターの軸にはクラッチギアを用いている.その上に...
** タイヤ [#v8e2a079]
#ref(./DSC_0268 (2).JPG,10%)
左右の前輪をモーターACで動かし,後輪にはキャスターを用い...
** 光センサー [#te7cae16]
#ref(./DSC_0267 (2).JPG,10%)
図はロボットを前から見たところで,光センサーの左右をブロ...
そうすることで,光源を見つけるときに少しずれたところで反...
* プログラム [#qbfe9ce3]
** 定数 [#ibe6508a]
EYE・・・センサー3の値をEYEとした.
TURN_TIME・・・回転する時間.確実に360°は回転するように一...
#define EYE SENSOR_3
#define TURN_TIME 360
** マクロ [#f96cc2b0]
low_power・・・回転するスピードが遅い方がライトセンサーを...
そのため,low_powerでモーターABCのパワ...
right_rotation , left_rotation・・・右回転,左回転をする.
pause・・・各動作の間に0.5秒の小休止を入れた.
shoot・・・アームを下げシュートする.
#define low_power SetPower(OUT_ABC,1);
#define right_rotation low_power;OnFwd(OUT_A);OnRev(OUT_...
#define left_rotation low_power;OnFwd(OUT_C);OnRev(OUT_A);
#define shoot OnFwd(OUT_B);Wait(14);Off(OUT_B);
#define pause Off(OUT_AC);Wait(50);
** グローバル変数 [#m6a2f5bf]
サブルーチンでライトセンサーを探すプログラムを定義してい...
light_max・・・センサーの値が最も大きくなったときのセンサ...
time_max・・・センサーの値が最も大きくなったときの時間を...
int light_max;
int time_max;
** 光源を探すプログラム [#x0379603]
*** タイマー FastTimer(0) [#a52215b1]
FastTimer(0)・・・回転するときに秒数を測って,光センサー...
*** サブルーチン search [#s5aa5547]
まず光源を探すため右まわりに1周回転する.このときにFastTi...
最初に設定したlight_maxよりも光センサーの値が大きくなった...
この操作をそのつど繰り返すことによって,1周のうちに最も...
時間がわかれば,右に回転した秒数から最も光センサーの値が...
sub search()
{
light_max = 20;
ClearTimer(0);
right_rotation; //光源を探すため右に...
while(FastTimer(0) < turn_time) { //1回転...
if(EYE > light_max) { //光センサーの値...
light_max = EYE; //その値を新たなlight_maxと...
time_max = FastTimer(0); //その値になった時間...
}
}
pause;
left_rotation;
Wait(turn_time - time_max); //(右に回転...
pause;
}
** タスク main [#k3cc8cd1]
*** ローカル変数 [#m6c54990]
flag・・・while文の条件を(flag == 0)としていて,シュート...
*** main [#daa01855]
最初にサブルーチンsearchで光源を探す.このときに誤差があ...
そこで前進し,前に進んだあとに光センサーの値がlight_maxよ...
light_maxよりも一定量増えていないときは光源からずれている...
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
int flag = 0;
search(); //光源を探す
while(flag == 0) { //シュートする...
OnFwd(OUT_AC);Wait(100); //前進する
pause;
if(EYE >= light_max + 3) {
pause;
low_power;
shoot;
flag ++;
}
/*進んだあとにセンサーの値がli...
少し下がってシュートして,ルー...
else {
OnRev(OUT_AC);Wait(100);
pause;
search();
}
/*進んだあと,light_maxよりも3...
もう1度光源を探すところから繰...
}
Off(OUT_AC);
}
* まとめと反省 [#h0f1ccbe]
一回判定してから,前進して光源の方向を向いているか確認す...
アーム部分のギア比を調節することで,アームの速度を変えた...
ページ名: