2017a/Member/miso/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&size(20){目次};
#contents
*課題について [#m065738c]
#ref(./2017a-mission2.jpg,100%,misson2)
「経路を黒い線にそって動くロボットを作成せよ」という課題...
課題の内容に関して詳しくはこちら[[課題2>2017a/Mission2]]
私の選んだコースは&color(#bf00df){【E地点右折コース】};で...
*ロボット本体について [#c15a6c7d]
ロボット本体に関しては、なるべく小型化し、センサーとタイ...
できるだけシンプルで小型にすることで、急なカーブも一回で...
**ロボット本体の写真 [#zc7d91de]
#ref(./20170706_100455.jpg,50%,本体(横))
本体横の写真である。無駄な部分を省き、ライントレースがで...
#ref(./20170706_100533.jpg,50%,本体(後ろ))
本体後ろの写真である。大きさを小さくするため後ろに小さな...
しかし、右左折や旋回するときに横に引きずって音を立ててい...
#ref(./20170706_103424.jpg,50%,センサー部分)
プログラムだけで完璧にすることは大変であったので、ロボッ...
やはりセンサーとタイヤの位置関係は大切であり、位置関係を...
写真の通りブロックの取り外しをすることで、センサーとタイ...
*プログラムについて [#j87a8741]
プログラムについてはだれが見てもわかりやすく、できるだけ...
黒い部分と白い部分の境目をトレースさせた。しきい値によっ...
**define、sub、voidなどの説明 [#uf19c654]
右左折や旋回などの基本的な動き、基本的な値には%%%define%%...
ラインをたどるなどの小さなプログラムのかたまりには%%%sub%...
この3つを使い分けることによって、シンプルなプログラムにす...
それぞれの役割はコメント文に書いた通りである。
***define [#c6937f6a]
#define LS_THRESHOLD 45 //光センサのしきい値
#define LINE_TIME 30 //交差点の感知時間
光センサーのしきい値は&color(#008000){45};、交差点の感知...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回
#define turn_right OnFwd(OUT_A);Off(OUT_C);//右折
#define turn_left Off(OUT_A);OnFwd(OUT_C);//左折
#define fwd OnFwd(OUT_AC);//直進
***void [#x6265257]
void LINE_right(int time) //線の右側を走る
{
ClearTimer(0);
while(FastTimer(0) < time){
if(SENSOR_2 > LS_THRESHOLD) {
turn_left;
ClearTimer(0);
}else{
turn_right;
}
Wait(1); }
Off(OUT_AC);
ClearTimer(0);
}
void LINE_left(int time) //線の左側を走る
{
ClearTimer(0);
while(FastTimer(0) < time){
if(SENSOR_2 > LS_THRESHOLD) {
turn_right;
ClearTimer(0);
}else{
turn_left;
}
Wait(1); }
Off(OUT_AC);
ClearTimer(0);
}
黒線の右側をトレースさせるか左側をトレースさせるかは、場...
交差点の判断方法としてはTimerを用いた。交差点の判断時間を...
***sub [#j88ab527]
sub SEARCH_LINE_turnright() //センサーが線を見つけ...
{
while(SENSOR_2 > LS_THRESHOLD) {
turn_right;
Wait(1);
}
}
sub SEARCH_LINE_turnleft() //センサーが線を見つける...
{
while(SENSOR_2 > LS_THRESHOLD) {
turn_left;
Wait(1);
}
}
sub SEARCH_WHITE_turnright() //線から出るまで右に曲...
{
while(SENSOR_2 < LS_THRESHOLD) {
turn_right;
Wait(1);
}
}
sub SEARCH_WHITE_turnleft() //線から出るまで左に曲...
{
while(SENSOR_2 < LS_THRESHOLD) {
turn_left;
Wait(1);
}
}
sub SEARCH_WHITE_forward() //線から出るまで直進
{
while(SENSOR_2 < LS_THRESHOLD) {
fwd;
Wait(1);
}
}
sub Stop() //交差点で音を鳴らして一時停止
{
PlaySound(SOUND_DOWN);
Wait(100);
}
**ライントレースのプログラム [#o8968fa1]
ライントレースをする本体のプログラムは、交差点のアルファ...
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetPower(OUT_AC,3);
LINE_right(LINE_TIME); //1
PlaySound(SOUND_UP);//E
SEARCH_WHITE_forward(); //2
SEARCH_LINE_turnright();
LINE_left(LINE_TIME);
Stop(); //P
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
SEARCH_WHITE_turnleft();
LINE_left(LINE_TIME); //3
PlaySound(SOUND_UP);//Q
SEARCH_WHITE_turnright();
LINE_left(LINE_TIME);//4
PlaySound(SOUND_UP);//R
SEARCH_WHITE_forward();
LINE_right(LINE_TIME);//5
Stop(); //T
SEARCH_WHITE_forward();
LINE_right(LINE_TIME); //6
Stop(); //T
SEARCH_WHITE_forward();
LINE_right(LINE_TIME); //7
PlaySound(SOUND_UP); //H
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
//8
ClearTimer(0); while(FastTimer(0) < (LINE_TIME * 3)...
if(SENSOR_2 < LS_THRESHOLD) { turn_right; ClearT...
else{ turn_left; }
Wait(1);
}
SEARCH_LINE_turnleft();
ClearTimer(0); while(FastTimer(0) < (LINE_TIME * 3)...
if(SENSOR_2 < LS_THRESHOLD) { turn_left; ClearT...
else{ turn_right; }
Wait(1);
}
SEARCH_LINE_turnright();
SEARCH_WHITE_turnright();
LINE_right(LINE_TIME);
PlaySound(SOUND_UP); //G
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
LINE_left(LINE_TIME); //9
Stop(); //S
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
SEARCH_WHITE_turnleft();
LINE_left(LINE_TIME); //10
PlaySound(SOUND_UP); //P
SEARCH_WHITE_turnright();
LINE_left(LINE_TIME); //10
PlaySound(SOUND_UP); //Q
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
LINE_right(LINE_TIME); //11
PlaySound(SOUND_UP); //F
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
SEARCH_WHITE_turnright();
LINE_right(LINE_TIME); //12,E
Stop(); //A
}
定義やsub、voidを使い全体のプログラムを書いた。うまくいか...
コメント文にあるアルファベット、数字はそれぞれ課題にあっ...
*結果 [#mcade650]
最初のうちはできるときとできない時があったりと確実性に欠...
自分の思い通りになったため大変満足であった。
完成したプログラムを用いてロボットを実際に動かした動画に...
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓...
https://youtu.be/C5nUh8Q5C4A
*まとめ [#uac0b444]
**苦労した点 [#yeb97ad7]
苦労した点としては、基準となる最適な値を見つけることと、...
ほかには、カーブを認識させるときにはカーブの内側を通らせ...
**感想 [#w2cbaf12]
Misson2ではMisson1よりもハイレベルなプログラム技術が要求...
さらなる高みを目指すためにも常に好奇心と探求心を持ち続け...
終了行:
&size(20){目次};
#contents
*課題について [#m065738c]
#ref(./2017a-mission2.jpg,100%,misson2)
「経路を黒い線にそって動くロボットを作成せよ」という課題...
課題の内容に関して詳しくはこちら[[課題2>2017a/Mission2]]
私の選んだコースは&color(#bf00df){【E地点右折コース】};で...
*ロボット本体について [#c15a6c7d]
ロボット本体に関しては、なるべく小型化し、センサーとタイ...
できるだけシンプルで小型にすることで、急なカーブも一回で...
**ロボット本体の写真 [#zc7d91de]
#ref(./20170706_100455.jpg,50%,本体(横))
本体横の写真である。無駄な部分を省き、ライントレースがで...
#ref(./20170706_100533.jpg,50%,本体(後ろ))
本体後ろの写真である。大きさを小さくするため後ろに小さな...
しかし、右左折や旋回するときに横に引きずって音を立ててい...
#ref(./20170706_103424.jpg,50%,センサー部分)
プログラムだけで完璧にすることは大変であったので、ロボッ...
やはりセンサーとタイヤの位置関係は大切であり、位置関係を...
写真の通りブロックの取り外しをすることで、センサーとタイ...
*プログラムについて [#j87a8741]
プログラムについてはだれが見てもわかりやすく、できるだけ...
黒い部分と白い部分の境目をトレースさせた。しきい値によっ...
**define、sub、voidなどの説明 [#uf19c654]
右左折や旋回などの基本的な動き、基本的な値には%%%define%%...
ラインをたどるなどの小さなプログラムのかたまりには%%%sub%...
この3つを使い分けることによって、シンプルなプログラムにす...
それぞれの役割はコメント文に書いた通りである。
***define [#c6937f6a]
#define LS_THRESHOLD 45 //光センサのしきい値
#define LINE_TIME 30 //交差点の感知時間
光センサーのしきい値は&color(#008000){45};、交差点の感知...
#define senkai_right OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define senkai_left OnFwd(OUT_C);OnRev(OUT_A); //左旋回
#define turn_right OnFwd(OUT_A);Off(OUT_C);//右折
#define turn_left Off(OUT_A);OnFwd(OUT_C);//左折
#define fwd OnFwd(OUT_AC);//直進
***void [#x6265257]
void LINE_right(int time) //線の右側を走る
{
ClearTimer(0);
while(FastTimer(0) < time){
if(SENSOR_2 > LS_THRESHOLD) {
turn_left;
ClearTimer(0);
}else{
turn_right;
}
Wait(1); }
Off(OUT_AC);
ClearTimer(0);
}
void LINE_left(int time) //線の左側を走る
{
ClearTimer(0);
while(FastTimer(0) < time){
if(SENSOR_2 > LS_THRESHOLD) {
turn_right;
ClearTimer(0);
}else{
turn_left;
}
Wait(1); }
Off(OUT_AC);
ClearTimer(0);
}
黒線の右側をトレースさせるか左側をトレースさせるかは、場...
交差点の判断方法としてはTimerを用いた。交差点の判断時間を...
***sub [#j88ab527]
sub SEARCH_LINE_turnright() //センサーが線を見つけ...
{
while(SENSOR_2 > LS_THRESHOLD) {
turn_right;
Wait(1);
}
}
sub SEARCH_LINE_turnleft() //センサーが線を見つける...
{
while(SENSOR_2 > LS_THRESHOLD) {
turn_left;
Wait(1);
}
}
sub SEARCH_WHITE_turnright() //線から出るまで右に曲...
{
while(SENSOR_2 < LS_THRESHOLD) {
turn_right;
Wait(1);
}
}
sub SEARCH_WHITE_turnleft() //線から出るまで左に曲...
{
while(SENSOR_2 < LS_THRESHOLD) {
turn_left;
Wait(1);
}
}
sub SEARCH_WHITE_forward() //線から出るまで直進
{
while(SENSOR_2 < LS_THRESHOLD) {
fwd;
Wait(1);
}
}
sub Stop() //交差点で音を鳴らして一時停止
{
PlaySound(SOUND_DOWN);
Wait(100);
}
**ライントレースのプログラム [#o8968fa1]
ライントレースをする本体のプログラムは、交差点のアルファ...
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetPower(OUT_AC,3);
LINE_right(LINE_TIME); //1
PlaySound(SOUND_UP);//E
SEARCH_WHITE_forward(); //2
SEARCH_LINE_turnright();
LINE_left(LINE_TIME);
Stop(); //P
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
SEARCH_WHITE_turnleft();
LINE_left(LINE_TIME); //3
PlaySound(SOUND_UP);//Q
SEARCH_WHITE_turnright();
LINE_left(LINE_TIME);//4
PlaySound(SOUND_UP);//R
SEARCH_WHITE_forward();
LINE_right(LINE_TIME);//5
Stop(); //T
SEARCH_WHITE_forward();
LINE_right(LINE_TIME); //6
Stop(); //T
SEARCH_WHITE_forward();
LINE_right(LINE_TIME); //7
PlaySound(SOUND_UP); //H
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
//8
ClearTimer(0); while(FastTimer(0) < (LINE_TIME * 3)...
if(SENSOR_2 < LS_THRESHOLD) { turn_right; ClearT...
else{ turn_left; }
Wait(1);
}
SEARCH_LINE_turnleft();
ClearTimer(0); while(FastTimer(0) < (LINE_TIME * 3)...
if(SENSOR_2 < LS_THRESHOLD) { turn_left; ClearT...
else{ turn_right; }
Wait(1);
}
SEARCH_LINE_turnright();
SEARCH_WHITE_turnright();
LINE_right(LINE_TIME);
PlaySound(SOUND_UP); //G
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
LINE_left(LINE_TIME); //9
Stop(); //S
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
SEARCH_WHITE_turnleft();
LINE_left(LINE_TIME); //10
PlaySound(SOUND_UP); //P
SEARCH_WHITE_turnright();
LINE_left(LINE_TIME); //10
PlaySound(SOUND_UP); //Q
SEARCH_WHITE_forward();
SEARCH_LINE_turnleft();
LINE_right(LINE_TIME); //11
PlaySound(SOUND_UP); //F
SEARCH_WHITE_forward();
SEARCH_LINE_turnright();
SEARCH_WHITE_turnright();
LINE_right(LINE_TIME); //12,E
Stop(); //A
}
定義やsub、voidを使い全体のプログラムを書いた。うまくいか...
コメント文にあるアルファベット、数字はそれぞれ課題にあっ...
*結果 [#mcade650]
最初のうちはできるときとできない時があったりと確実性に欠...
自分の思い通りになったため大変満足であった。
完成したプログラムを用いてロボットを実際に動かした動画に...
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓...
https://youtu.be/C5nUh8Q5C4A
*まとめ [#uac0b444]
**苦労した点 [#yeb97ad7]
苦労した点としては、基準となる最適な値を見つけることと、...
ほかには、カーブを認識させるときにはカーブの内側を通らせ...
**感想 [#w2cbaf12]
Misson2ではMisson1よりもハイレベルなプログラム技術が要求...
さらなる高みを目指すためにも常に好奇心と探求心を持ち続け...
ページ名: