2015a/Member/Rabbit/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
*今回の課題について [#n372d985]
半径一メートル以内にある懐中電灯を探し、懐中電灯にピンポ...
ロボットが懐中電灯に当たらない限りどこからボールを打って...
初めはタッチセンサーを利用して懐中電灯にボールをぶつけよ...
今回は2つの方法で懐中電灯を探す。
*ロボット本体の説明 [#h4b55fe1]
**車体について [#of6e552c]
#ref(./IMG_0555.JPG,10%)
付属のマニュアルに書いてあるロボットを使いました。
モーターCで右のタイヤ(写真の下側)を、モーターAで左タイ...
二つのモーターを使って前進、後進、その場で旋回、片方のモ...
OnFwdで後進、OnRevで前進をします。
**アームについて [#x5441150]
#ref(./IMG_0552.JPG,10%)
決まった時間がたつとアームが下がりボールを捕まえるように...
モーターBを使って動かす。
#ref(./IMG_0605.JPG,10%)
OnRevでアームを持ち上げる。赤い矢印はモーターB、青い矢印...
#ref(./IMG_0606.JPG,10%)
OnFwdでアームを下げる。赤い矢印はモーターB、青い矢印はア...
モーターBを回転させることでアームを下げてボールを捕まえた...
。
**全体 [#ld0055da]
#ref(./as.JPG,20%)
#ref(./IMG_0580.JPG,20%)
この写真がロボットの完成品の全体です。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
ただし課題2と違い光センサーが前を向くように取り付けてあ...
センサーを前に付けただけだと、正確に懐中電灯の方向を向い...
*プログラムの説明 [#zfe56287]
**一周する間にしきい値の最大値を見つけるプログラム [#r6ab...
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B);
#define utu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);W...
ボールをシュートする定義です。課題2と同じ。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
task main()
{ SetSensor(SENSOR_2, SENSOR_LIGHT);
int runtime=400; //一周するのにかかる時間
int litemax=0; //しきい値の最大値
int timemax=0; //しきい値が最大値の時の時間
一周するのにかかる時間、しきい値の最大値と最大になった時...
while(SENSOR_2 < 58){ //しきい値が58を超えるまで繰り返す。
ClearTimer(0); //時間を測り始める
OnFwd(OUT_A);OnRev(OUT_C); //左旋回
while(FastTimer(0) < runtime) //一周するまで繰り返す
{
if(SENSOR_2 > litemax) //しきい値の値がそれまでのしき...
{
litemax=SENSOR_2; //新たな最大値を記録する
timemax=FastTimer(0);} //新たな最大値を記録した時の...
}
左旋回で一周する間にしきい値の値がそれまでのしきい値の最...
Off(OUT_AC);Wait(100); //一時停止
OnFwd(OUT_C);OnRev(OUT_A); //右旋回
Wait(runtime-timemax); //しきい値が最大になった時の方向...
Off(OUT_AC);Wait(100); //一時停止
OnRev(OUT_AC);Wait(100); //懐中電灯のある方に向かって前進
}
一周した後右旋回でしきい値が最大になった方向を向く。(4...
しきい値が最大になった方向に前進する。
utu;} //ボールをシュートする
しきい値が58を超えたら懐中電灯の近くとみなして、ボールを...
58を超えていなければ、もう一度左旋回をしてしきい値の高...
***一つ目のプログラムの問題点 [#t623c7af]
まっすぐ懐中電灯の方に向かえず、近くに行ってもしきい値が...
***解決方法 [#k12073d4]
正確に懐中電灯の方向を向いていなければ、しきい値が高くな...
**懐中電灯を通過したことに気が付くプログラム [#l1f7af41]
左旋回中に懐中電灯を通り過ぎたときしきい値が急低下するの...
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B); //アーム...
#define utu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);W...
ボールをシュートする定義です。課題2と同じ。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
task main()
{ SetSensor(SENSOR_2, SENSOR_LIGHT);
int runtime=400; //一周するのにかかる時間
int liteima=0; //その瞬間のしきい値
int litedown=0; //急低下後のしきい値
一周するのにかかる時間、その瞬間のしきい値と急低下後のし...
ClearTimer(0);
while(FastTimer(0) < runtime) //一周するまでの間
{
liteima=SENSOR_2; //その瞬間のしきい値を記録
OnFwd(OUT_A);OnRev(OUT_C);Wait(10); //左旋回する
まずその場でのしきい値 (liteima)を記録して、そこから左...
しきい値が急低下するまで左旋回を続ける。
if(SENSOR_2 < liteima-12) //しきい値が急低下した時に行う...
{
PlaySound(SOUND_UP); //音を鳴らす
litedown=SENSOR_2; //急低下後のしきい値を記録
until(SENSOR_2 > litedown+12){ OnFwd(OUT_C);OnRev(OUT_A)...
しきい値が一度に12以上さがった時。その場所のしきい値(l...
Off(OUT_AC);Wait(400); } //一周するのにかかる時間が...
}
(litedown)の値から12以上上がった時その場に4秒間停止...
until(SENSOR_2 > 58){ OnRev(OUT_AC);} //懐中電灯の方向...
Off(OUT_AC);Wait(100); //一時停止
utu; //ボールをシュートする。
}
しきい値が58を超えるまで前進する。しきい値が58を超えたら...
***二つ目のプログラムの問題点 [#g7c2205e]
その一 窓から入ってきた光で動作してしまう。
その二 一気にしきい値が下がる場所が見つからない。
***解決方法 [#od627e8f]
その一について 一気にしきい値が8だけ下がったら次の動作...
なのでしきい値が一気に12下がらないと次の動作に移らない...
その二について ゆっくり回転していたのが原因だった。そう...
*まとめ [#b2310249]
本体の写真が間違っていました。修正してあります。
OnFwdで後進、OnRevで前進をします。どうしてこうなるのかよ...
以前はしきい値が63を超えたら懐中電灯の近くとみなしてい...
一つ目のプログラムは講義中にほとんど説明されたので特に困...
二つ目のプログラムはどれだけしきい値が変わったら次の動作...
二つ目のプログラムはその場で一回転する間に懐中電灯を見つ...
終了行:
[[2015a/Member]]
*今回の課題について [#n372d985]
半径一メートル以内にある懐中電灯を探し、懐中電灯にピンポ...
ロボットが懐中電灯に当たらない限りどこからボールを打って...
初めはタッチセンサーを利用して懐中電灯にボールをぶつけよ...
今回は2つの方法で懐中電灯を探す。
*ロボット本体の説明 [#h4b55fe1]
**車体について [#of6e552c]
#ref(./IMG_0555.JPG,10%)
付属のマニュアルに書いてあるロボットを使いました。
モーターCで右のタイヤ(写真の下側)を、モーターAで左タイ...
二つのモーターを使って前進、後進、その場で旋回、片方のモ...
OnFwdで後進、OnRevで前進をします。
**アームについて [#x5441150]
#ref(./IMG_0552.JPG,10%)
決まった時間がたつとアームが下がりボールを捕まえるように...
モーターBを使って動かす。
#ref(./IMG_0605.JPG,10%)
OnRevでアームを持ち上げる。赤い矢印はモーターB、青い矢印...
#ref(./IMG_0606.JPG,10%)
OnFwdでアームを下げる。赤い矢印はモーターB、青い矢印はア...
モーターBを回転させることでアームを下げてボールを捕まえた...
。
**全体 [#ld0055da]
#ref(./as.JPG,20%)
#ref(./IMG_0580.JPG,20%)
この写真がロボットの完成品の全体です。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
ただし課題2と違い光センサーが前を向くように取り付けてあ...
センサーを前に付けただけだと、正確に懐中電灯の方向を向い...
*プログラムの説明 [#zfe56287]
**一周する間にしきい値の最大値を見つけるプログラム [#r6ab...
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B);
#define utu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);W...
ボールをシュートする定義です。課題2と同じ。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
task main()
{ SetSensor(SENSOR_2, SENSOR_LIGHT);
int runtime=400; //一周するのにかかる時間
int litemax=0; //しきい値の最大値
int timemax=0; //しきい値が最大値の時の時間
一周するのにかかる時間、しきい値の最大値と最大になった時...
while(SENSOR_2 < 58){ //しきい値が58を超えるまで繰り返す。
ClearTimer(0); //時間を測り始める
OnFwd(OUT_A);OnRev(OUT_C); //左旋回
while(FastTimer(0) < runtime) //一周するまで繰り返す
{
if(SENSOR_2 > litemax) //しきい値の値がそれまでのしき...
{
litemax=SENSOR_2; //新たな最大値を記録する
timemax=FastTimer(0);} //新たな最大値を記録した時の...
}
左旋回で一周する間にしきい値の値がそれまでのしきい値の最...
Off(OUT_AC);Wait(100); //一時停止
OnFwd(OUT_C);OnRev(OUT_A); //右旋回
Wait(runtime-timemax); //しきい値が最大になった時の方向...
Off(OUT_AC);Wait(100); //一時停止
OnRev(OUT_AC);Wait(100); //懐中電灯のある方に向かって前進
}
一周した後右旋回でしきい値が最大になった方向を向く。(4...
しきい値が最大になった方向に前進する。
utu;} //ボールをシュートする
しきい値が58を超えたら懐中電灯の近くとみなして、ボールを...
58を超えていなければ、もう一度左旋回をしてしきい値の高...
***一つ目のプログラムの問題点 [#t623c7af]
まっすぐ懐中電灯の方に向かえず、近くに行ってもしきい値が...
***解決方法 [#k12073d4]
正確に懐中電灯の方向を向いていなければ、しきい値が高くな...
**懐中電灯を通過したことに気が付くプログラム [#l1f7af41]
左旋回中に懐中電灯を通り過ぎたときしきい値が急低下するの...
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B); //アーム...
#define utu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);W...
ボールをシュートする定義です。課題2と同じ。
ボールをシュートする時はアームを持ち上げて一度後ろに下が...
task main()
{ SetSensor(SENSOR_2, SENSOR_LIGHT);
int runtime=400; //一周するのにかかる時間
int liteima=0; //その瞬間のしきい値
int litedown=0; //急低下後のしきい値
一周するのにかかる時間、その瞬間のしきい値と急低下後のし...
ClearTimer(0);
while(FastTimer(0) < runtime) //一周するまでの間
{
liteima=SENSOR_2; //その瞬間のしきい値を記録
OnFwd(OUT_A);OnRev(OUT_C);Wait(10); //左旋回する
まずその場でのしきい値 (liteima)を記録して、そこから左...
しきい値が急低下するまで左旋回を続ける。
if(SENSOR_2 < liteima-12) //しきい値が急低下した時に行う...
{
PlaySound(SOUND_UP); //音を鳴らす
litedown=SENSOR_2; //急低下後のしきい値を記録
until(SENSOR_2 > litedown+12){ OnFwd(OUT_C);OnRev(OUT_A)...
しきい値が一度に12以上さがった時。その場所のしきい値(l...
Off(OUT_AC);Wait(400); } //一周するのにかかる時間が...
}
(litedown)の値から12以上上がった時その場に4秒間停止...
until(SENSOR_2 > 58){ OnRev(OUT_AC);} //懐中電灯の方向...
Off(OUT_AC);Wait(100); //一時停止
utu; //ボールをシュートする。
}
しきい値が58を超えるまで前進する。しきい値が58を超えたら...
***二つ目のプログラムの問題点 [#g7c2205e]
その一 窓から入ってきた光で動作してしまう。
その二 一気にしきい値が下がる場所が見つからない。
***解決方法 [#od627e8f]
その一について 一気にしきい値が8だけ下がったら次の動作...
なのでしきい値が一気に12下がらないと次の動作に移らない...
その二について ゆっくり回転していたのが原因だった。そう...
*まとめ [#b2310249]
本体の写真が間違っていました。修正してあります。
OnFwdで後進、OnRevで前進をします。どうしてこうなるのかよ...
以前はしきい値が63を超えたら懐中電灯の近くとみなしてい...
一つ目のプログラムは講義中にほとんど説明されたので特に困...
二つ目のプログラムはどれだけしきい値が変わったら次の動作...
二つ目のプログラムはその場で一回転する間に懐中電灯を見つ...
ページ名: