2016a/Member/maccha/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#t9f4de6f]
#contents
*課題について [#xb343d49]
光センサを利用して指定されたコースを走る、というものであ...
#ref(2016a/Member/maccha/Mission2/2016a-mission2.2.png,50...
詳しくは[[2016年前期/課題2:http://yakushi.shinshu-u.ac.jp...
*ロボットについて [#z6b02fcc]
#ref(2016a/Member/maccha/Mission2/IMG_3674.JPG,50%,ロボッ...
#ref(2016a/Member/maccha/Mission2/IMG_3675.JPG,50%,ロボッ...
上の画像のように車輪を2つ、前方には滑りやすくなるようにド...
光センサは車輪に近くなるように、ロボットの中央部に付けた。~
*プログラム [#f69c53c7]
**基本的な定義 [#yefc8112]
以下はサブルーチンを組む上で基本的な定義である。
#define turn_right_SENKAI OnFwd(OUT_A); OnRev(OUT_C); ...
#define turn_right OnFwd(OUT_A); Off(OUT_C); ...
#define turn_left_SENKAI OnFwd(OUT_C); OnRev(OUT_A); ...
#define turn_left OnFwd(OUT_C); Off(OUT_A); ...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define Black 43 //これより小さかったら黒
#define White 52 //これより大きかったら白
#define STEP 1 //一回の判断の時間
**サブルーチン [#q1ec9f06]
ライントレース、交差点を直進する、交差点を右折する、交差...
sub trace_line()
{
ClearTimer(0);
while (FastTimer(0) < 36) {
if (SENSOR_2 <= Black) { //黒
turn_right_SENKAI;
} else if (SENSOR_2 < Black +2) { //黒に近いグレー
turn_right;
} else if (SENSOR_2 > White -2) { //白に近いグレー
turn_left;
ClearTimer(0);
} else if (SENSOR_2 >= White) { //白
turn_left_SENKAI;
ClearTimer(0);
} else { //グレー
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
Wait(100);
}
ロボットの左側に黒のライン、右側に白が来るようにしてライ...
また、黒または黒に近いグレーの判断が0.36秒続いたら交差点...
#ref(2016a/Member/maccha/Mission2/cross.png,50%,交差点)
sub cross_right()
{
ClearTimer(0);
while (FastTimer(0) < 100 ) {
turn_right;
}
}
これは右折する際に使うサブルーチンで、下の画像の赤い印の...
#ref(2016a/Member/maccha/Mission2/IMG_3671.JPG,50%,右折)
sub cross_straight()
{
ClearTimer(0);
while (FastTimer(0) < 160 ) {
turn_left;
}
}
これは直進する際に使うサブルーチンで、右折と同様に下の画...
#ref(2016a/Member/maccha/Mission2/IMG_3672.JPG,50%,直進)
sub circle_Q()
{
while (FastTimer(0) < 38) {
if (SENSOR_2 < Black +2) { //黒に近いグレーと黒
turn_right;
} else if (SENSOR_2 > White -2) { //白に近いグレー
turn_left;
ClearTimer(0);
} else if (SENSOR_2 >= White) { //白
turn_left_SENKAI;
ClearTimer(0);
} else { //グレー
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
Wait(100);
}
Qの部分の円は半径が大きいため、黒だったときに右に旋回する...
**全容 [#z9c96d50]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
go_forward(120); //Bから出てライントレースへ
trace_line();
cross_right(); //交差点Rを右折
trace_line();
cross_straight(); //交差点Qを直進
circle_Q();
cross_straight(); //交差点Qを直進
repeat(2){
trace_line();
cross_right(); //交差点P,Qを右折
}
trace_line();
cross_straight(); //Cの直前で方向を修正
go_forward(50);
}
*反省 [#d0057464]
完走タイムは58.75秒だった。これが速いのか遅いのかは分から...
今回は光センサを用いたため、一つ一つの動作を時間で制御す...
またプログラムのみで問題解決に取り組まず、早期に機体の改...
終了行:
*目次 [#t9f4de6f]
#contents
*課題について [#xb343d49]
光センサを利用して指定されたコースを走る、というものであ...
#ref(2016a/Member/maccha/Mission2/2016a-mission2.2.png,50...
詳しくは[[2016年前期/課題2:http://yakushi.shinshu-u.ac.jp...
*ロボットについて [#z6b02fcc]
#ref(2016a/Member/maccha/Mission2/IMG_3674.JPG,50%,ロボッ...
#ref(2016a/Member/maccha/Mission2/IMG_3675.JPG,50%,ロボッ...
上の画像のように車輪を2つ、前方には滑りやすくなるようにド...
光センサは車輪に近くなるように、ロボットの中央部に付けた。~
*プログラム [#f69c53c7]
**基本的な定義 [#yefc8112]
以下はサブルーチンを組む上で基本的な定義である。
#define turn_right_SENKAI OnFwd(OUT_A); OnRev(OUT_C); ...
#define turn_right OnFwd(OUT_A); Off(OUT_C); ...
#define turn_left_SENKAI OnFwd(OUT_C); OnRev(OUT_A); ...
#define turn_left OnFwd(OUT_C); Off(OUT_A); ...
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define Black 43 //これより小さかったら黒
#define White 52 //これより大きかったら白
#define STEP 1 //一回の判断の時間
**サブルーチン [#q1ec9f06]
ライントレース、交差点を直進する、交差点を右折する、交差...
sub trace_line()
{
ClearTimer(0);
while (FastTimer(0) < 36) {
if (SENSOR_2 <= Black) { //黒
turn_right_SENKAI;
} else if (SENSOR_2 < Black +2) { //黒に近いグレー
turn_right;
} else if (SENSOR_2 > White -2) { //白に近いグレー
turn_left;
ClearTimer(0);
} else if (SENSOR_2 >= White) { //白
turn_left_SENKAI;
ClearTimer(0);
} else { //グレー
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
Wait(100);
}
ロボットの左側に黒のライン、右側に白が来るようにしてライ...
また、黒または黒に近いグレーの判断が0.36秒続いたら交差点...
#ref(2016a/Member/maccha/Mission2/cross.png,50%,交差点)
sub cross_right()
{
ClearTimer(0);
while (FastTimer(0) < 100 ) {
turn_right;
}
}
これは右折する際に使うサブルーチンで、下の画像の赤い印の...
#ref(2016a/Member/maccha/Mission2/IMG_3671.JPG,50%,右折)
sub cross_straight()
{
ClearTimer(0);
while (FastTimer(0) < 160 ) {
turn_left;
}
}
これは直進する際に使うサブルーチンで、右折と同様に下の画...
#ref(2016a/Member/maccha/Mission2/IMG_3672.JPG,50%,直進)
sub circle_Q()
{
while (FastTimer(0) < 38) {
if (SENSOR_2 < Black +2) { //黒に近いグレーと黒
turn_right;
} else if (SENSOR_2 > White -2) { //白に近いグレー
turn_left;
ClearTimer(0);
} else if (SENSOR_2 >= White) { //白
turn_left_SENKAI;
ClearTimer(0);
} else { //グレー
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
PlaySound(SOUND_UP);
Wait(100);
}
Qの部分の円は半径が大きいため、黒だったときに右に旋回する...
**全容 [#z9c96d50]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
go_forward(120); //Bから出てライントレースへ
trace_line();
cross_right(); //交差点Rを右折
trace_line();
cross_straight(); //交差点Qを直進
circle_Q();
cross_straight(); //交差点Qを直進
repeat(2){
trace_line();
cross_right(); //交差点P,Qを右折
}
trace_line();
cross_straight(); //Cの直前で方向を修正
go_forward(50);
}
*反省 [#d0057464]
完走タイムは58.75秒だった。これが速いのか遅いのかは分から...
今回は光センサを用いたため、一つ一つの動作を時間で制御す...
またプログラムのみで問題解決に取り組まず、早期に機体の改...
ページ名: