2017a/Member/doita/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
~目次
#contents
*課題について [#zd83be0b]
詳しくは[[課題2>http://yakushi.shinshu-u.ac.jp/robotics/?...
**コース [#h2bfa239]
#ref(./コース.JPG,70%,コース概要)
[[E地点直進コース>http://yakushi.shinshu-u.ac.jp/robotics...
*ロボットの概要 [#c989ac2c]
#ref(./ロボット.JPG,ロボット概要)
上の写真のように、規定のサイズに収まるようにロボットを改...
**センサーの位置 [#d7362af9]
#ref(./下から.JPG,下から見た図)
上の写真はロボットをしたから撮影したものである。センサー...
*プログラム [#wa774f6a]
**定義,サブルーチン [#u92f8759]
#define THRESHOLD 50 //しきい値
#define SPEED 28
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED);
#define go_back OnRL(-SPEED,-SPEED);
#define turn_left1 OnRL(SPEED, -SPEED); //左旋回
#define turn_left0 OnRL(SPEED, 0); //左折
#define turn_right0 OnRL(0, SPEED); //右折
#define turn_right1 OnRL(-SPEED, SPEED); //右旋回
#define STEP 1
#define nMAX 180 //黒を認識する上限回数
sub cLeft1() //(SOUND_UP)&左旋回
{
PlaySound(SOUND_UP);
turn_left1;
until(SENSOR_3 > THRESHOLD+12);
}
sub cLeft2() //(SOUND_DOWN)&一時停止&左回転
{
PlaySound(SOUND_DOWN);
Off(OUT_BC);
Wait(1000);
turn_left0;
until(SENSOR_3 > THRESHOLD+12);
}
sub straight() //方向修正&直進
{
turn_right1;
Wait(600);
Off(OUT_BC);
go_forward;
Wait(500);
Off(OUT_BC);
}
**ライントレース [#s9d20a3b]
task main()
{
SetSensorLight(S3);
int nOnline=0; // 続けて黒になった回数
int nTurn=0;
go_forward; // Aスタート,E1
Wait(500);
Off(OUT_BC);
while (nTurn < 13) {
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-10) { //濃い黒
turn_left1;
nOnline++; // カウンタを増やす
}
else {
if (SENSOR_3 < THRESHOLD-5) { //黒寄りの灰色
turn_left0;
}
else if (SENSOR_3 < THRESHOLD+5) { //灰色
go_forward;
}
else if (SENSOR_3 < THRESHOLD+10) { //白寄りの...
turn_right0;
}
else { //白色
turn_right1;
}
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
『E地点直進コース』では終始左側走行でも交差点認識が可能だ...
**交差点、曲がり角での動作 [#q955c725]
if(nTurn < 1){ //F
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 2){ //Q
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 3){ //R1
PlaySound(SOUND_UP);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 6){ //S1,G,H
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 8){ //T1,T2
PlaySound(SOUND_DOWN);
Off(OUT_BC);
Wait(1000);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 9){ //R2
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 10){ //S2
PlaySound(SOUND_UP);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 11){ //P
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 12){ //E2
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 13){ //A停止
Off(OUT_BC);
turn_right1;
Wait(300);
Off(OUT_BC);
go_forward;
Wait(2000);
Off(OUT_BC);
PlaySound(SOUND_DOWN);
nTurn++;
}
}
}
交差点と曲がり角を通過する回数と順番は分かっているので、n...
*感想 [#x7bfe45c]
交差点の判別を確実にしつつ、急カーブなどでの誤認識をしな...
終了行:
[[2017a/Member]]
~目次
#contents
*課題について [#zd83be0b]
詳しくは[[課題2>http://yakushi.shinshu-u.ac.jp/robotics/?...
**コース [#h2bfa239]
#ref(./コース.JPG,70%,コース概要)
[[E地点直進コース>http://yakushi.shinshu-u.ac.jp/robotics...
*ロボットの概要 [#c989ac2c]
#ref(./ロボット.JPG,ロボット概要)
上の写真のように、規定のサイズに収まるようにロボットを改...
**センサーの位置 [#d7362af9]
#ref(./下から.JPG,下から見た図)
上の写真はロボットをしたから撮影したものである。センサー...
*プログラム [#wa774f6a]
**定義,サブルーチン [#u92f8759]
#define THRESHOLD 50 //しきい値
#define SPEED 28
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED);
#define go_back OnRL(-SPEED,-SPEED);
#define turn_left1 OnRL(SPEED, -SPEED); //左旋回
#define turn_left0 OnRL(SPEED, 0); //左折
#define turn_right0 OnRL(0, SPEED); //右折
#define turn_right1 OnRL(-SPEED, SPEED); //右旋回
#define STEP 1
#define nMAX 180 //黒を認識する上限回数
sub cLeft1() //(SOUND_UP)&左旋回
{
PlaySound(SOUND_UP);
turn_left1;
until(SENSOR_3 > THRESHOLD+12);
}
sub cLeft2() //(SOUND_DOWN)&一時停止&左回転
{
PlaySound(SOUND_DOWN);
Off(OUT_BC);
Wait(1000);
turn_left0;
until(SENSOR_3 > THRESHOLD+12);
}
sub straight() //方向修正&直進
{
turn_right1;
Wait(600);
Off(OUT_BC);
go_forward;
Wait(500);
Off(OUT_BC);
}
**ライントレース [#s9d20a3b]
task main()
{
SetSensorLight(S3);
int nOnline=0; // 続けて黒になった回数
int nTurn=0;
go_forward; // Aスタート,E1
Wait(500);
Off(OUT_BC);
while (nTurn < 13) {
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-10) { //濃い黒
turn_left1;
nOnline++; // カウンタを増やす
}
else {
if (SENSOR_3 < THRESHOLD-5) { //黒寄りの灰色
turn_left0;
}
else if (SENSOR_3 < THRESHOLD+5) { //灰色
go_forward;
}
else if (SENSOR_3 < THRESHOLD+10) { //白寄りの...
turn_right0;
}
else { //白色
turn_right1;
}
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
『E地点直進コース』では終始左側走行でも交差点認識が可能だ...
**交差点、曲がり角での動作 [#q955c725]
if(nTurn < 1){ //F
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 2){ //Q
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 3){ //R1
PlaySound(SOUND_UP);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 6){ //S1,G,H
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 8){ //T1,T2
PlaySound(SOUND_DOWN);
Off(OUT_BC);
Wait(1000);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 9){ //R2
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 10){ //S2
PlaySound(SOUND_UP);
straight();
nTurn++;
nOnline=0;
}
else if(nTurn < 11){ //P
cLeft1();
nTurn++;
nOnline=0;
}
else if(nTurn < 12){ //E2
cLeft2();
nTurn++;
nOnline=0;
}
else if(nTurn < 13){ //A停止
Off(OUT_BC);
turn_right1;
Wait(300);
Off(OUT_BC);
go_forward;
Wait(2000);
Off(OUT_BC);
PlaySound(SOUND_DOWN);
nTurn++;
}
}
}
交差点と曲がり角を通過する回数と順番は分かっているので、n...
*感想 [#x7bfe45c]
交差点の判別を確実にしつつ、急カーブなどでの誤認識をしな...
ページ名: