2015a/Member/ahiru/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題3 [#c595dffd]
第三回目の課題は、懐中電灯の場所を探しボールを当てるとい...
*ロボットについて [#f0e02078]
課題3のロボットはは、課題2で使用したロボットをベースにし...
課題3の内容を遂行させるため、特に光センサーへの光の入り方...
**今回の変更点 [#rfb64895]
第三回目の課題内容に沿わせるため、第二回目のロボットでは...
また、課題2では、アームの挙動を制限しすぎたと感じたため、...
***光の入射制限 [#p5d05678]
#ref(./mission3_002.JPG,50%)
光を前方からのみ入るように、光センサーの左右に壁を取り付...
#ref(./mission3_001.JPG,50%)
また、天井の電灯等からの直接光を抑えるために、光センサー...
***ボールによる受光阻害対処 [#i2431a53]
前方にボールを固定する形式のため、課題2のロボットではボー...
#ref(./mission3_004.JPG,50%)
#ref(./mission3_003.JPG,50%)
そこで、上記の写真のように、アームを短く改良し、ボールを...
課題2のロボット作成の際に、既にボールを固定化していたため...
*プログラムについて [#xd16f873]
**第一段階プログラミング [#x5f30d7e]
まずは課題に沿った最低限の内容のプログラムを完成させるこ...
#define TURN_TIME 280 //一回転にかかる時間
#define turn_right OnFwd(OUT_A); OnRev(OUT_C);
#define turn_left_back OnFwd(OUT_C); OnRev(OUT_A); Wait(...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_back(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define short_break Off(OUT_AC); Wait(50); //滑りを防ぐ...
#define arm_up OnRev(OUT_B); Wait(45); Off(OUT_B);
sub shoot() { //ボールを懐中電灯に当てる動作
arm_up;
go_forward(100);
go_back(100);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
ClearTimer(1);
int Smin= 10;
while (FastTimer(0) <= TURN_TIME) { //一回転している...
turn_right;
if(SENSOR_1 > Smin) { //光の最大値計測
Smin=SENSOR_1; //最大値を記録
ClearTimer(1); //最大値から回転終了までの時...
}
}
turn_left_back; //光の最大値の観測地点まで戻る
short_break;
shoot(); //シュート
}
***第一段階プログラム説明 [#x8a9b05d]
ここでは、一周するうちにどこが光の強さの最大値かを測定し...
光の強さの記録方法として、「測定した値が、その前に設定し...
また、その光の最大値だった部分を0秒としてカウントを初め、...
そこからボールを放ち、懐中電灯に当てるというプログラムを...
***第一段階プログラムを用いた時の可視化 [#o48c8fe1]
以下の画像は、上記のプログラムを用いた時の再現、簡略説明...
#ref(./program_01.gif)
**第二段階プログラミング [#t1563708]
第一段階のプログラミングを元に、より正確に位置を把握する...
以下、第二段階プログラム(完成版)を記載する。
#define TURN_TIME_F 280 //一度目の回転時間(360°回転)
#define TURN_TIME_S 50 //二度目の回転時間(光の最大値...
#define turn_right OnFwd(OUT_A); OnRev(OUT_C);
#define turn_left_back(t) OnFwd(OUT_C); OnRev(OUT_A); Wa...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_back(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define short_break Off(OUT_AC); Wait(50);
#define arm_up OnRev(OUT_B); Wait(45); Off(OUT_B);
sub shoot() { //ボールを懐中電灯に当てる動作
arm_up;
go_forward(100);
go_back(100);
}
※sub shoot()は変更していない。
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
ClearTimer(1);
int Smin= 10;
while (FastTimer(0) <= TURN_TIME_F) { //一度目の回転...
turn_right;
if(SENSOR_1 > Smin) { //一度目の光の最大値計測
Smin=SENSOR_1; //最大値を記録
ClearTimer(1); //最大値から一度目の回転終了...
}
}
turn_left_back(FastTimer(1)+20); //計測された最大値か...
short_break;
////////////////////////////
// 以下主な変更(追加)点
////////////////////////////
ClearTimer(2);
ClearTimer(3);
int Tmin= 10;
while (FastTimer(2) <= TURN_TIME_S) {
turn_right;
if(SENSOR_1 > Tmin) { //二度目の光の最大値計測
Tmin=SENSOR_1; //最大値を記録
ClearTimer(3); //最大値から二度目の回転終了...
}
}
turn_left_back(FastTimer(3)); //光の最大値の観測地点...
short_break;
shoot(); //シュート
}
***第二段階プログラムの説明 [#ucfd2615]
第二段階目のプログラムは、第一段階目のプログラムではカバ...
本体が一回転する内に光の最大値を探すという課題であるが、...
回転し始めてから270°のところにある場合、タイマーによって...
だが、回転し始めてから90°のところにある場合、タイマーによ...
それを補うために、一度計測した最大値付近に再び戻り、その...
このようにすることで、360°どの範囲に光源がある場合でも、...
***第二段階プログラムを用いた時の可視化 [#i9707d29]
下の画像は[[第一段階プログラムを用いた時の可視化>#o48c8fe...
#ref(./program_02.gif)
*製作時間 [#w0a390ae]
ロボット本体・・・1時間
プログラミング(試走含む)・・・1.5時間
*課題を通じての反省 [#vea0fd4f]
「このようにプログラミングをすれば、このような動作になる...
このゼミでは、全てのロボット作りに携わっていたため、ロボ...
終了行:
#contents
*課題3 [#c595dffd]
第三回目の課題は、懐中電灯の場所を探しボールを当てるとい...
*ロボットについて [#f0e02078]
課題3のロボットはは、課題2で使用したロボットをベースにし...
課題3の内容を遂行させるため、特に光センサーへの光の入り方...
**今回の変更点 [#rfb64895]
第三回目の課題内容に沿わせるため、第二回目のロボットでは...
また、課題2では、アームの挙動を制限しすぎたと感じたため、...
***光の入射制限 [#p5d05678]
#ref(./mission3_002.JPG,50%)
光を前方からのみ入るように、光センサーの左右に壁を取り付...
#ref(./mission3_001.JPG,50%)
また、天井の電灯等からの直接光を抑えるために、光センサー...
***ボールによる受光阻害対処 [#i2431a53]
前方にボールを固定する形式のため、課題2のロボットではボー...
#ref(./mission3_004.JPG,50%)
#ref(./mission3_003.JPG,50%)
そこで、上記の写真のように、アームを短く改良し、ボールを...
課題2のロボット作成の際に、既にボールを固定化していたため...
*プログラムについて [#xd16f873]
**第一段階プログラミング [#x5f30d7e]
まずは課題に沿った最低限の内容のプログラムを完成させるこ...
#define TURN_TIME 280 //一回転にかかる時間
#define turn_right OnFwd(OUT_A); OnRev(OUT_C);
#define turn_left_back OnFwd(OUT_C); OnRev(OUT_A); Wait(...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_back(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define short_break Off(OUT_AC); Wait(50); //滑りを防ぐ...
#define arm_up OnRev(OUT_B); Wait(45); Off(OUT_B);
sub shoot() { //ボールを懐中電灯に当てる動作
arm_up;
go_forward(100);
go_back(100);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
ClearTimer(1);
int Smin= 10;
while (FastTimer(0) <= TURN_TIME) { //一回転している...
turn_right;
if(SENSOR_1 > Smin) { //光の最大値計測
Smin=SENSOR_1; //最大値を記録
ClearTimer(1); //最大値から回転終了までの時...
}
}
turn_left_back; //光の最大値の観測地点まで戻る
short_break;
shoot(); //シュート
}
***第一段階プログラム説明 [#x8a9b05d]
ここでは、一周するうちにどこが光の強さの最大値かを測定し...
光の強さの記録方法として、「測定した値が、その前に設定し...
また、その光の最大値だった部分を0秒としてカウントを初め、...
そこからボールを放ち、懐中電灯に当てるというプログラムを...
***第一段階プログラムを用いた時の可視化 [#o48c8fe1]
以下の画像は、上記のプログラムを用いた時の再現、簡略説明...
#ref(./program_01.gif)
**第二段階プログラミング [#t1563708]
第一段階のプログラミングを元に、より正確に位置を把握する...
以下、第二段階プログラム(完成版)を記載する。
#define TURN_TIME_F 280 //一度目の回転時間(360°回転)
#define TURN_TIME_S 50 //二度目の回転時間(光の最大値...
#define turn_right OnFwd(OUT_A); OnRev(OUT_C);
#define turn_left_back(t) OnFwd(OUT_C); OnRev(OUT_A); Wa...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_back(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define short_break Off(OUT_AC); Wait(50);
#define arm_up OnRev(OUT_B); Wait(45); Off(OUT_B);
sub shoot() { //ボールを懐中電灯に当てる動作
arm_up;
go_forward(100);
go_back(100);
}
※sub shoot()は変更していない。
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
ClearTimer(0);
ClearTimer(1);
int Smin= 10;
while (FastTimer(0) <= TURN_TIME_F) { //一度目の回転...
turn_right;
if(SENSOR_1 > Smin) { //一度目の光の最大値計測
Smin=SENSOR_1; //最大値を記録
ClearTimer(1); //最大値から一度目の回転終了...
}
}
turn_left_back(FastTimer(1)+20); //計測された最大値か...
short_break;
////////////////////////////
// 以下主な変更(追加)点
////////////////////////////
ClearTimer(2);
ClearTimer(3);
int Tmin= 10;
while (FastTimer(2) <= TURN_TIME_S) {
turn_right;
if(SENSOR_1 > Tmin) { //二度目の光の最大値計測
Tmin=SENSOR_1; //最大値を記録
ClearTimer(3); //最大値から二度目の回転終了...
}
}
turn_left_back(FastTimer(3)); //光の最大値の観測地点...
short_break;
shoot(); //シュート
}
***第二段階プログラムの説明 [#ucfd2615]
第二段階目のプログラムは、第一段階目のプログラムではカバ...
本体が一回転する内に光の最大値を探すという課題であるが、...
回転し始めてから270°のところにある場合、タイマーによって...
だが、回転し始めてから90°のところにある場合、タイマーによ...
それを補うために、一度計測した最大値付近に再び戻り、その...
このようにすることで、360°どの範囲に光源がある場合でも、...
***第二段階プログラムを用いた時の可視化 [#i9707d29]
下の画像は[[第一段階プログラムを用いた時の可視化>#o48c8fe...
#ref(./program_02.gif)
*製作時間 [#w0a390ae]
ロボット本体・・・1時間
プログラミング(試走含む)・・・1.5時間
*課題を通じての反省 [#vea0fd4f]
「このようにプログラミングをすれば、このような動作になる...
このゼミでは、全てのロボット作りに携わっていたため、ロボ...
ページ名: