2017b/Member/tatsu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
CENTER:&size(30){センサーを使用してロボットにせんをなぞら...
*目次 [#f1518d93]
#contents()
*概要 [#ya7e31ca]
今回の課題は下図のような幅20mmの線を書き、AからSを決め...
#ref(2017b/Member/tatsu/Mission2/2017b-mission2.png,35%,...
私が通ったルートは
D地点へ(スタート)→Cを直進→Bを左折→Pを左折→Qを直進→Rを左折...
*製作したロボット [#pddf4bfc]
写真A(全体)
#ref(2017b/Member/tatsu/Mission2/20171227_180344 (2).jpg,...
写真B(前後のタイヤ位置)
#ref(2017b/Member/tatsu/Mission2/20171227_180409 (2).jpg,...
ロボットのタイヤはセンサーが地面に直接、接しないようにす...
写真C(アーム)
#ref(2017b/Member/tatsu/Mission2/20171227_180344 (3).jpg,...
アームはモーターに対してギアを噛ませずに直接つけたため勢...
写真D(アームの先端)
#ref(2017b/Member/tatsu/Mission2/20180205_155408 (2).jpg,...
また、アームの先端に上記のような部品をつけることで、コッ...
写真E(センサー位置)
#ref(2017b/Member/tatsu/Mission2/20171227_180424 (2).jpg,...
線とセンサーの距離をなるべく近づけることで、余計な情報が...
*プログラミングに関しての知識と実際に使用した物 [#ofad1f7d]
**ライントレースの概要 [#b458f4c1]
私は線の左側を通ったため、線の色が
?白(THRESHOLDの値=53)ならば右急カーブ
?白っぽいならば(THRESHOLD=およそ(53+47)/2)ならば右へ
?灰色(THRESHOLD=およそ47)ならば直進
?黒っぽい(THRESHOLDの値=およそ(38+47)/2)ならば左へ
?黒(THRESHOLDの値=38)ならば左急カーブ
とした。
基本的なライントレースは、ifとwhileを用いた。例えば、whil...
***交差点の判断 [#ie1c1fec]
上記のifとwhileの性質を利用して交差点の判断も行った。例...
#ref(2017b/Member/tatsu/Mission2/スクリーンショット 2018-...
この図においてはオレンジの円がセンサーに該当するが、移...
しかし、この時whileのループから外れているということはこ...
sub left_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//光センサー準備
ClearTimer(0);//タイマーをセット
while(FastTimer(0)<=26)//タイマーセット後の経過時間が...
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;//白なら右急カーブ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD+4)
{
right;//白っぽいなら右へ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);//灰色(白と黒の境界)なら直進
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD-4)
{
left;//黒っぽいなら左へ
ClearTimer(0);//タイマーリセット
}
else
{
leftSENKAI;//黒なら左急カーブ
}
}
Off(OUT_AC);
}
このサブルーチンにおいても、これまで説明してきたことが...
**使用したプログラミング [#m4fb8577]
#define THRESHOLD 47//白の最高53、黒最低38
#define forward(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//...
#define leftSENKAI OnFwd(OUT_C);OnRev(OUT_A);//左急カーブ
#define left OnFwd(OUT_C);Off(OUT_A);//左カーブ
#define rightSENKAI OnFwd(OUT_A);OnRev(OUT_C);//右急カーブ
#define LINEsyusei rightSENKAI;Wait(25);forward(30);//交...
#define P SetPower(OUT_AC,5);
#br
sub right_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=26)
{
if(SENSOR_2>THRESHOLD+5)
{
leftSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
left;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
right;
ClearTimer(0);
}
else
{
rightSENKAI;
}
}
Off(OUT_AC);
}
sub right_Linehalf()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=18)
{
if(SENSOR_2>THRESHOLD+5)
{
leftSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
left;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
right;
ClearTimer(0);
}
else
{
rightSENKAI;
}
}
}
上記のサブルーチンの説明
E-Fを超えるために、初期段階では急カーブのみだと越えること...
sub left_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//光センサー準備
ClearTimer(0);//タイマーをセット
while(FastTimer(0)<=26)//タイマーセット後の経過時間が...
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;//白なら右急カーブ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD+4)
{
right;//白っぽいなら右へ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);//灰色(白と黒の境界)なら直進
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD-4)
{
left;//黒っぽいなら左へ
ClearTimer(0);//タイマーリセット
}
else
{
leftSENKAI;//黒なら左急カーブ
}
}
Off(OUT_AC);
}
sub left_Linehalf()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=12)
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
right;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
left;
ClearTimer(0);
}
else
{
leftSENKAI;
}
}
}
上記のサブルーチンの説明
sub left_Line()は特殊な場合を除いて、今回のライントレース...
task main()
{
left_Line();
LINEsyusei;//C通過
int B;
for (B=1; B<=4; B++){
left_Line();
}
Wait(100);//B通過
left_Linehalf();//P-Q
forward(30);//Q通過
right;
Wait(30);
ClearTimer(1);
while(FastTimer(1)<=1300)//R-F
{
left_Line();
}
int C;
for (C=1; C<=2; C++){
left_Line();
}
Wait(100);
forward(40);//Yからコップを取るための準備
leftSENKAI;
Wait(98);
Off(OUT_AC);
OnRev(OUT_B);//アームを動かす
Wait(70);
Off(OUT_B);//Yからコップ取る
rightSENKAI;//再びライントレースするための準備
Wait(80);
left_Line();
Wait(100);
LINEsyusei;
int D;//S-Q
for (D=1; D<=2; D++){
left_Line();
}
Wait(100);
left_Linehalf();//Q-R
forward(30);//コップを置くための準備
OnFwd(OUT_B);
Wait(20);
Off(OUT_B);//コップを置く
right;
Wait(40);
int E;//R-B
for (E=1; E<=4; E++){
left_Line();
}
LINEsyusei;
forward(100);//ゴール
}
*苦労した点の概要 [#n870a4d3]
今回、私が最も苦労した点はP-Sのプログラミングだった。特...
**具体的な内容[P-Q] [#v6c341b2]
改善点として挙げられたのは
?’sub left_Linehalf() の交差点判断の時間を縮めることでQを...
?’センサーの位置を低くして余計な情報を省く
?’センサーの位置を機体側に近づけることで交差点判断の時間...
#ref(2017b/Member/tatsu/Mission2/20171227_180447 (2).jpg,...
改善前
#ref(2017b/Member/tatsu/Mission2/20171227_180424 (2).jpg,...
改善後
?’THRESHOLDに加減する数値を徐々に大きくすることでQに垂直...
以上の改善後の結果を以下に記す。
?’は、どれだけ時間を短くしても良い結果は得られなかった。
?’は、Qに関しての直接的な結果は得られなかったが、全体的な...
?’は、ある程度プラスの結果が得られた。
?’は、加減する数値をどれだけ変えても良い結果は得られなか...
***本番までに改善できたか? [#oc5d93b3]
結果としては、上記の改善をしてもQを交差点として判断させる...
*感想 [#f32aa008]
今回の課題は、ロボットの機体よりもプログラミングに関し...
他のグループを見ていると、プログラミングの技術の高さだ...
終了行:
CENTER:&size(30){センサーを使用してロボットにせんをなぞら...
*目次 [#f1518d93]
#contents()
*概要 [#ya7e31ca]
今回の課題は下図のような幅20mmの線を書き、AからSを決め...
#ref(2017b/Member/tatsu/Mission2/2017b-mission2.png,35%,...
私が通ったルートは
D地点へ(スタート)→Cを直進→Bを左折→Pを左折→Qを直進→Rを左折...
*製作したロボット [#pddf4bfc]
写真A(全体)
#ref(2017b/Member/tatsu/Mission2/20171227_180344 (2).jpg,...
写真B(前後のタイヤ位置)
#ref(2017b/Member/tatsu/Mission2/20171227_180409 (2).jpg,...
ロボットのタイヤはセンサーが地面に直接、接しないようにす...
写真C(アーム)
#ref(2017b/Member/tatsu/Mission2/20171227_180344 (3).jpg,...
アームはモーターに対してギアを噛ませずに直接つけたため勢...
写真D(アームの先端)
#ref(2017b/Member/tatsu/Mission2/20180205_155408 (2).jpg,...
また、アームの先端に上記のような部品をつけることで、コッ...
写真E(センサー位置)
#ref(2017b/Member/tatsu/Mission2/20171227_180424 (2).jpg,...
線とセンサーの距離をなるべく近づけることで、余計な情報が...
*プログラミングに関しての知識と実際に使用した物 [#ofad1f7d]
**ライントレースの概要 [#b458f4c1]
私は線の左側を通ったため、線の色が
?白(THRESHOLDの値=53)ならば右急カーブ
?白っぽいならば(THRESHOLD=およそ(53+47)/2)ならば右へ
?灰色(THRESHOLD=およそ47)ならば直進
?黒っぽい(THRESHOLDの値=およそ(38+47)/2)ならば左へ
?黒(THRESHOLDの値=38)ならば左急カーブ
とした。
基本的なライントレースは、ifとwhileを用いた。例えば、whil...
***交差点の判断 [#ie1c1fec]
上記のifとwhileの性質を利用して交差点の判断も行った。例...
#ref(2017b/Member/tatsu/Mission2/スクリーンショット 2018-...
この図においてはオレンジの円がセンサーに該当するが、移...
しかし、この時whileのループから外れているということはこ...
sub left_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//光センサー準備
ClearTimer(0);//タイマーをセット
while(FastTimer(0)<=26)//タイマーセット後の経過時間が...
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;//白なら右急カーブ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD+4)
{
right;//白っぽいなら右へ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);//灰色(白と黒の境界)なら直進
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD-4)
{
left;//黒っぽいなら左へ
ClearTimer(0);//タイマーリセット
}
else
{
leftSENKAI;//黒なら左急カーブ
}
}
Off(OUT_AC);
}
このサブルーチンにおいても、これまで説明してきたことが...
**使用したプログラミング [#m4fb8577]
#define THRESHOLD 47//白の最高53、黒最低38
#define forward(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//...
#define leftSENKAI OnFwd(OUT_C);OnRev(OUT_A);//左急カーブ
#define left OnFwd(OUT_C);Off(OUT_A);//左カーブ
#define rightSENKAI OnFwd(OUT_A);OnRev(OUT_C);//右急カーブ
#define LINEsyusei rightSENKAI;Wait(25);forward(30);//交...
#define P SetPower(OUT_AC,5);
#br
sub right_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=26)
{
if(SENSOR_2>THRESHOLD+5)
{
leftSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
left;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
right;
ClearTimer(0);
}
else
{
rightSENKAI;
}
}
Off(OUT_AC);
}
sub right_Linehalf()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=18)
{
if(SENSOR_2>THRESHOLD+5)
{
leftSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
left;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
right;
ClearTimer(0);
}
else
{
rightSENKAI;
}
}
}
上記のサブルーチンの説明
E-Fを超えるために、初期段階では急カーブのみだと越えること...
sub left_Line()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//光センサー準備
ClearTimer(0);//タイマーをセット
while(FastTimer(0)<=26)//タイマーセット後の経過時間が...
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;//白なら右急カーブ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD+4)
{
right;//白っぽいなら右へ
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);//灰色(白と黒の境界)なら直進
ClearTimer(0);//タイマーリセット
}
else if(SENSOR_2>THRESHOLD-4)
{
left;//黒っぽいなら左へ
ClearTimer(0);//タイマーリセット
}
else
{
leftSENKAI;//黒なら左急カーブ
}
}
Off(OUT_AC);
}
sub left_Linehalf()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
while(FastTimer(0)<=12)
{
if(SENSOR_2>THRESHOLD+5)
{
rightSENKAI;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD+4)
{
right;
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD)
{
P;
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>THRESHOLD-4)
{
left;
ClearTimer(0);
}
else
{
leftSENKAI;
}
}
}
上記のサブルーチンの説明
sub left_Line()は特殊な場合を除いて、今回のライントレース...
task main()
{
left_Line();
LINEsyusei;//C通過
int B;
for (B=1; B<=4; B++){
left_Line();
}
Wait(100);//B通過
left_Linehalf();//P-Q
forward(30);//Q通過
right;
Wait(30);
ClearTimer(1);
while(FastTimer(1)<=1300)//R-F
{
left_Line();
}
int C;
for (C=1; C<=2; C++){
left_Line();
}
Wait(100);
forward(40);//Yからコップを取るための準備
leftSENKAI;
Wait(98);
Off(OUT_AC);
OnRev(OUT_B);//アームを動かす
Wait(70);
Off(OUT_B);//Yからコップ取る
rightSENKAI;//再びライントレースするための準備
Wait(80);
left_Line();
Wait(100);
LINEsyusei;
int D;//S-Q
for (D=1; D<=2; D++){
left_Line();
}
Wait(100);
left_Linehalf();//Q-R
forward(30);//コップを置くための準備
OnFwd(OUT_B);
Wait(20);
Off(OUT_B);//コップを置く
right;
Wait(40);
int E;//R-B
for (E=1; E<=4; E++){
left_Line();
}
LINEsyusei;
forward(100);//ゴール
}
*苦労した点の概要 [#n870a4d3]
今回、私が最も苦労した点はP-Sのプログラミングだった。特...
**具体的な内容[P-Q] [#v6c341b2]
改善点として挙げられたのは
?’sub left_Linehalf() の交差点判断の時間を縮めることでQを...
?’センサーの位置を低くして余計な情報を省く
?’センサーの位置を機体側に近づけることで交差点判断の時間...
#ref(2017b/Member/tatsu/Mission2/20171227_180447 (2).jpg,...
改善前
#ref(2017b/Member/tatsu/Mission2/20171227_180424 (2).jpg,...
改善後
?’THRESHOLDに加減する数値を徐々に大きくすることでQに垂直...
以上の改善後の結果を以下に記す。
?’は、どれだけ時間を短くしても良い結果は得られなかった。
?’は、Qに関しての直接的な結果は得られなかったが、全体的な...
?’は、ある程度プラスの結果が得られた。
?’は、加減する数値をどれだけ変えても良い結果は得られなか...
***本番までに改善できたか? [#oc5d93b3]
結果としては、上記の改善をしてもQを交差点として判断させる...
*感想 [#f32aa008]
今回の課題は、ロボットの機体よりもプログラミングに関し...
他のグループを見ていると、プログラミングの技術の高さだ...
ページ名: