2016a/Member/funatsu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*課題説明 [#hcabbda5]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
上記のルートをC地点からA地点へ(C地点 → S左折 → P左折 → Q...
交差点では1秒間止まらせる。
*ロボの説明 [#l53e0ab5]
光センサーを車体の真ん中に設置した。少しタイヤが取れやす...
#ref(2016a/Member/funatsu/Mission2/IMG_4314.jpg,50%)
*プログラミングの説明 [#x564e0ad]
・定義
#define BLACK 50//光の明るさ
#define WHITE 60//光の明るさ
#define SPEEDA 20//モーターの速さ
#define SPEEDB 30//モーターの速さ
#define go_forward OnFwd(OUT_BC,SPEEDA);//前進
#define turn_leftA OnFwd(OUT_B,SPEEDA);Off(OUT_C);//遅...
#define turn_leftB OnFwd(OUT_B,SPEEDB);Off(OUT_C);//早...
#define turn_leftC OnFwd(OUT_B,SPEEDB);OnRev(OUT_C,SPEE...
#define turn_rightA OnFwd(OUT_C,SPEEDA);Off(OUT_B);//遅...
#define turn_rightB OnFwd(OUT_C,SPEEDB);Off(OUT_B);//早...
#define turn_rightC OnFwd(OUT_C,SPEEDB);OnRev(OUT_B,SPEE...
#define STEP 1
#define short_break Off(OUT_BC);Wait(1000);PlaySound(SOU...
#define nMAX 250 //カウントの最大値
以上の定理を用いて作る
・サブルーチン
sub line_follow()//ラインの左側に沿って走らせる
{
SetSensorLight(S1);
int nOnline=0;
while (nOnline < nMAX) { //カウントが250よりも小さい...
if (SENSOR_1 < BLACK-10) {
turn_leftA;
nOnline++; //カウント増加
} else {
if (SENSOR_1 < BLACK+5) {
turn_leftA;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0; //カウントを0にリセット
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0; //カウンタを0にリセット
}
sub line_follow2()//回転に対応させながらラインの左側に沿...
{
SetSensorLight(S1);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_1 < BLACK-10) {
turn_leftC;
nOnline++;
} else {
if (SENSOR_1 < BLACK+3) {
turn_leftC;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0;
}
sub line_fwd()//交差点で前進
{
turn_leftC;
Wait(200);
go_forward;
Wait(500);
Off(OUT_BC);
}
sub line_right()//交差点で右折
{
go_forward;
Wait(500);
turn_rightC;
Wait(500);
Off(OUT_BC);
}
sub line_left()//交差点で左折
{
turn_leftC;
Wait(700);
Off(OUT_BC);
}
・交差点について
while (nOnline < nMAX) { //カウントが250よりも小さいとき
if (SENSOR_1 < BLACK-10) {
turn_leftA;
nOnline++; //カウント開始
} else {
if (SENSOR_1 < BLACK+5) {
turn_leftA;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0; //カウントを0にリセット
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0; //カウンタを0にリセット
上記のプログラミングはライントレースの一部分である。まず...
・プログラム
回転に対応するために光の度合いを考えたり車体の速さを調節...
ラインの左側を沿って走るため交差点で直進するときは左に少...
task main()
{
line_follow(3000);
line_left();//Sを左折
line_follow(5000);
line_left();//Pを左折
line_follow(3000);
line_fwd();//
line_follow2(5000);
line_fwd();
line_follow(5000);
line_right();
line_follow(5000);
line_left();
line_follow(5000);
go_forward;
Wait(1000);
short_break;
}
*反省 [#hc9fc702]
コースタイムは2分32秒であった。
long tを用いてプログラミングを考えていたがそもそもline_fo...
今回のようなラインをたどるロボットを作るときはロボだけで...
電池を入れ替えた際にスピードが速くなり、センサーの感度が...
終了行:
[[2016a/Member]]
*課題説明 [#hcabbda5]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
上記のルートをC地点からA地点へ(C地点 → S左折 → P左折 → Q...
交差点では1秒間止まらせる。
*ロボの説明 [#l53e0ab5]
光センサーを車体の真ん中に設置した。少しタイヤが取れやす...
#ref(2016a/Member/funatsu/Mission2/IMG_4314.jpg,50%)
*プログラミングの説明 [#x564e0ad]
・定義
#define BLACK 50//光の明るさ
#define WHITE 60//光の明るさ
#define SPEEDA 20//モーターの速さ
#define SPEEDB 30//モーターの速さ
#define go_forward OnFwd(OUT_BC,SPEEDA);//前進
#define turn_leftA OnFwd(OUT_B,SPEEDA);Off(OUT_C);//遅...
#define turn_leftB OnFwd(OUT_B,SPEEDB);Off(OUT_C);//早...
#define turn_leftC OnFwd(OUT_B,SPEEDB);OnRev(OUT_C,SPEE...
#define turn_rightA OnFwd(OUT_C,SPEEDA);Off(OUT_B);//遅...
#define turn_rightB OnFwd(OUT_C,SPEEDB);Off(OUT_B);//早...
#define turn_rightC OnFwd(OUT_C,SPEEDB);OnRev(OUT_B,SPEE...
#define STEP 1
#define short_break Off(OUT_BC);Wait(1000);PlaySound(SOU...
#define nMAX 250 //カウントの最大値
以上の定理を用いて作る
・サブルーチン
sub line_follow()//ラインの左側に沿って走らせる
{
SetSensorLight(S1);
int nOnline=0;
while (nOnline < nMAX) { //カウントが250よりも小さい...
if (SENSOR_1 < BLACK-10) {
turn_leftA;
nOnline++; //カウント増加
} else {
if (SENSOR_1 < BLACK+5) {
turn_leftA;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0; //カウントを0にリセット
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0; //カウンタを0にリセット
}
sub line_follow2()//回転に対応させながらラインの左側に沿...
{
SetSensorLight(S1);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_1 < BLACK-10) {
turn_leftC;
nOnline++;
} else {
if (SENSOR_1 < BLACK+3) {
turn_leftC;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0;
}
sub line_fwd()//交差点で前進
{
turn_leftC;
Wait(200);
go_forward;
Wait(500);
Off(OUT_BC);
}
sub line_right()//交差点で右折
{
go_forward;
Wait(500);
turn_rightC;
Wait(500);
Off(OUT_BC);
}
sub line_left()//交差点で左折
{
turn_leftC;
Wait(700);
Off(OUT_BC);
}
・交差点について
while (nOnline < nMAX) { //カウントが250よりも小さいとき
if (SENSOR_1 < BLACK-10) {
turn_leftA;
nOnline++; //カウント開始
} else {
if (SENSOR_1 < BLACK+5) {
turn_leftA;
} else if (SENSOR_1 < WHITE) {
go_forward;
} else if (SENSOR_1 < WHITE+5) {
turn_rightA;
} else {
turn_rightA;
}
nOnline=0; //カウントを0にリセット
}
Wait(STEP);
}
short_break;
Off(OUT_BC);
nOnline=0; //カウンタを0にリセット
上記のプログラミングはライントレースの一部分である。まず...
・プログラム
回転に対応するために光の度合いを考えたり車体の速さを調節...
ラインの左側を沿って走るため交差点で直進するときは左に少...
task main()
{
line_follow(3000);
line_left();//Sを左折
line_follow(5000);
line_left();//Pを左折
line_follow(3000);
line_fwd();//
line_follow2(5000);
line_fwd();
line_follow(5000);
line_right();
line_follow(5000);
line_left();
line_follow(5000);
go_forward;
Wait(1000);
short_break;
}
*反省 [#hc9fc702]
コースタイムは2分32秒であった。
long tを用いてプログラミングを考えていたがそもそもline_fo...
今回のようなラインをたどるロボットを作るときはロボだけで...
電池を入れ替えた際にスピードが速くなり、センサーの感度が...
ページ名: