2016a/Member/oyco/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
目次
#contents
*課題 [#b9947262]
今回の課題はセンサーを利用し、ライントレースして目的の場所へ着くロボットを作ることです。
*ロボット本体の説明 [#q2f77fad]
#ref(2016a/Member/oyco/Mission2/IMG_1482.JPG,20%,本体の構造)
本体の前方にセンサーをつけました。
#ref(2016a/Member/oyco/Mission2/IMG_1483.JPG,20%,センサー)
このセンサーを使ってラインを判断します。
*コース [#hfdddc43]
**図 [#b1090389]
黒い線に沿って進み、交差点で一度止まり、ゴールまで行って止まること。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2016a%2FMission2&openfile=2016a-mission2.png
**コース(ルート) [#bee49fd4]
A地点からB地点へ (A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点)
*プログラムの説明 [#hf725160]
**定義 [#p71412d5]
基本的で簡単な定義
#define BLACK 42 これより小さいと黒
#define WHITE 50 これより大きいと白
#define RIGHT_H OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define LEFT_H OnFwd(OUT_C); OnRev(OUT_A);//左旋回
#define RIGHT_L OnFwd(OUT_A); Off(OUT_C);//右回転
#define LEFT_L OnFwd(OUT_C); Off(OUT_A);//左回転
#define GO_FORWARD(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);//t秒間前進
#define STEP 1
**サブルーチン [#i68821f0]
ライントレースする定義で交差点で1秒間止まり、音が鳴るサブルーチン。
whileを繰り返し、黒が0.5秒を超えると交差点と判断するようになっている。↓
sub LINE()
{
ClearTimer(0);
while(FastTimer(0) <= 50) {
if (SENSOR_2 <= BLACK) { //黒
RIGHT_H;
} else if (SENSOR_2 < BLACK){ //黒よりのグレー
RIGHT_L; //
} else if (SENSOR_2 > WHITE) { //白よりのグレー
LEFT_H;
ClearTimer(0);
} else if (SENSOR_2 >= WHITE) { //白
LEFT_L; //
ClearTimer(0);
} else {
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
ClearTimer(0);
PlaySound(SOUND_UP);
Wait(100);
}
左に1.7秒間曲がるサブルーチン↓
sub LEFT()
{
while(FastTimer(0) < 170) {
LEFT_L;
}
ClearTimer(0);
}
左に2.5秒間旋回するサブルーチン↓
sub CROSS_LEFT()
{
while(FastTimer(0) < 250) {
LEFT_H;
}
ClearTimer(0);
}
**メイン [#l068566d]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
GO_FORWARD(140);
LINE();
LEFT();
LINE();
LEFT();
LINE();
LEFT();
LINE();
CROSS_LEFT();
GO_FORWARD(140);
LINE();
}
*まとめ [#a6afc464]
**感想&反省点 [#oe0b723f]
2回目の課題だったのにスムーズに課題を進めることができず、プログラムの作成に時間がかかってしまい、プログラムを調節する時間がなく、ゴールへたどり着くことができなかった。
また、1回目の課題とは違い、今回はセンサーを使うため簡単にいけると思ったが、サブルーチンという大きなくくりの定義の理解が遅く、なかなかうまくサブルーチンを使うことができず、1回目とは違う難しさがあった。しかし、とても便利なので、サブルーチンをうまく使うことができたら難なく2回目の課題ができたんじゃないかと思う。
終了行:
[[2016a/Member]]
目次
#contents
*課題 [#b9947262]
今回の課題はセンサーを利用し、ライントレースして目的の場所へ着くロボットを作ることです。
*ロボット本体の説明 [#q2f77fad]
#ref(2016a/Member/oyco/Mission2/IMG_1482.JPG,20%,本体の構造)
本体の前方にセンサーをつけました。
#ref(2016a/Member/oyco/Mission2/IMG_1483.JPG,20%,センサー)
このセンサーを使ってラインを判断します。
*コース [#hfdddc43]
**図 [#b1090389]
黒い線に沿って進み、交差点で一度止まり、ゴールまで行って止まること。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2016a%2FMission2&openfile=2016a-mission2.png
**コース(ルート) [#bee49fd4]
A地点からB地点へ (A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点)
*プログラムの説明 [#hf725160]
**定義 [#p71412d5]
基本的で簡単な定義
#define BLACK 42 これより小さいと黒
#define WHITE 50 これより大きいと白
#define RIGHT_H OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define LEFT_H OnFwd(OUT_C); OnRev(OUT_A);//左旋回
#define RIGHT_L OnFwd(OUT_A); Off(OUT_C);//右回転
#define LEFT_L OnFwd(OUT_C); Off(OUT_A);//左回転
#define GO_FORWARD(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);//t秒間前進
#define STEP 1
**サブルーチン [#i68821f0]
ライントレースする定義で交差点で1秒間止まり、音が鳴るサブルーチン。
whileを繰り返し、黒が0.5秒を超えると交差点と判断するようになっている。↓
sub LINE()
{
ClearTimer(0);
while(FastTimer(0) <= 50) {
if (SENSOR_2 <= BLACK) { //黒
RIGHT_H;
} else if (SENSOR_2 < BLACK){ //黒よりのグレー
RIGHT_L; //
} else if (SENSOR_2 > WHITE) { //白よりのグレー
LEFT_H;
ClearTimer(0);
} else if (SENSOR_2 >= WHITE) { //白
LEFT_L; //
ClearTimer(0);
} else {
OnFwd(OUT_AC);
ClearTimer(0);
}
Wait(STEP);
}
Off(OUT_AC);
ClearTimer(0);
PlaySound(SOUND_UP);
Wait(100);
}
左に1.7秒間曲がるサブルーチン↓
sub LEFT()
{
while(FastTimer(0) < 170) {
LEFT_L;
}
ClearTimer(0);
}
左に2.5秒間旋回するサブルーチン↓
sub CROSS_LEFT()
{
while(FastTimer(0) < 250) {
LEFT_H;
}
ClearTimer(0);
}
**メイン [#l068566d]
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
GO_FORWARD(140);
LINE();
LEFT();
LINE();
LEFT();
LINE();
LEFT();
LINE();
CROSS_LEFT();
GO_FORWARD(140);
LINE();
}
*まとめ [#a6afc464]
**感想&反省点 [#oe0b723f]
2回目の課題だったのにスムーズに課題を進めることができず、プログラムの作成に時間がかかってしまい、プログラムを調節する時間がなく、ゴールへたどり着くことができなかった。
また、1回目の課題とは違い、今回はセンサーを使うため簡単にいけると思ったが、サブルーチンという大きなくくりの定義の理解が遅く、なかなかうまくサブルーチンを使うことができず、1回目とは違う難しさがあった。しかし、とても便利なので、サブルーチンをうまく使うことができたら難なく2回目の課題ができたんじゃないかと思う。
ページ名: