2017b/Member/hata/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*課題2 [#w4c48934]
**コース [#v3a59d03]
下の図のようなコースを作成し、黒い線に沿って動き、紙コッ...
#ref(2017b/Member/hata/Mission2/コース.png,70%,コース)
第1コースを選んだので次のようなコースをトレースするロボッ...
Aをスタート→Bを直進→Cを右折→Fを直進→Rを左折(一時停止)→Pを...
→Y地点に紙コップを置いてコースに戻る→Sを直進(一時停止)→F...
*ロボットの説明 [#r45822bf]
**ロボットの構造 [#zf8abba5]
&ref(2017b/Member/hata/Mission2/RISライントレース1.JPG,20...
&ref(2017b/Member/hata/Mission2/RISライントレース2.JPG,20...
&ref(2017b/Member/hata/Mission2/RISライントレース3.JPG,20...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
上の3枚の写真は実際に動かしたロボットの上、横、後ろから撮...
**紙コップを取る輪の部分 [#hd408515]
&ref(2017b/Member/hata/Mission2/RISライントレース5.jpg,30...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
また、その細い棒をチューブで繋いでできた輪は、そのままだ...
**光センサー部分 [#n2a8b8a8]
&ref(2017b/Member/hata/Mission2/RISライントレース4.JPG,20...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
光センサー高めにつけると周りからの光の影響を受けやすくな...
*プログラム [#oed56b86]
**定義 [#j2667492]
多用すると予想された一定時間光センサーを用いずに前進する...
#define right_Uturn OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define right_turn OnFwd(OUT_A);Off(OUT_C);//右回転
#define left_Uturn OnFwd(OUT_C);OnRev(OUT_A);//左旋回
#define left_turn OnFwd(OUT_C);Off(OUT_A);//左回転
#define Brightness 47//明るさ
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//時間指...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//時間...
#define right_through left_Uturn;Wait(20);go(30);//右側...
#define left_through right_Uturn;Wait(25);go(30);//左側...
**サブルーチン [#oa7a0f03]
ライントレースをする際に線の右側をトレースするパターンと...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
&ref(2017b/Member/hata/Mission2/ライントレースの仕方.gif,...
&ref(2017b/Member/hata/Mission2/2ライントレースRISセンサ...
***右側ライントレース [#rb19cf47]
sub right_Line()//右側ライントレース
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=26)//0.26秒以内は繰り返し、0.26...
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
left_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時右旋...
{
right_Uturn;
}
}
Off(OUT_AC);
}
***短い右側ライントレース [#f0b497b2]
sub right_Linehalf()//右側ライントレース短
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=17)//0.17秒以内は繰り返し、0.17...
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
left_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時右旋...
{
right_Uturn;
}
}
}
***左側ライントレース [#h64146a0]
sub left_Line()//左側ライントレース
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=26)
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
right_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時左旋...
{
left_Uturn;
}
}
Off(OUT_AC);
}
***短い左側ライントレース [#peb890d5]
sub left_Linehalf()//左側ライントレース短
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=17)
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
right_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が...
{
right_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時左旋...
{
left_Uturn;
}
}
}
***紙コップを取る [#ib881c90]
sub cup_get()//紙コップを取る
go(130);//Pから紙コップを取りに行くための移動?
left_Uturn;//Pから紙コップを取りに行くための移動?
Wait(65);
OnRev(OUT_AC);//Pから紙コップを取りに行くための移動?
Wait(80);
Off(OUT_AC);
OnFwd(OUT_B);//アームを下し、紙コップを取る
Wait(30);
Off(OUT_B);
**プログラムのメイン [#wce6c317]
task main()
{
right_Line();//A-B間
Wait(100);//一時停止
right_through;//交差点通過
int A;
for (A=1; A<=2; A++)//B-C間およびC-D間
{
right_Line();
Wait(100);
}
right_through;//交差点通過
ClearTimer(1);
while(FastTimer(1)<=850)//E-F間の2つ目の急なカーブまで
{
right_Line();
}
Off(OUT_AC);
left_turn;//右側ライントレースの位置から左側ライントレー...
Wait(30);
left_Linehalf();//E-F間の2つ目の急なカーブからRまで
Off(OUT_AC);//一時停止
Wait(100);
left_Uturn;//一時停止した位置から円の部分のライントレー...
Wait(30);
go(30);//一時停止した位置から円の部分のライントレース二...
left_Linehalf();//R-P間
Off(OUT_AC);//一時停止
Wait(100);
cup_get();//紙コップを取る
left_Line();//紙コップを取った位置から戻りつつQ-S間
Off(OUT_AC);//一時停止
Wait(100);
left_through;//交差点通過
right_Uturn;//左側ライントレースの位置から右側ライントレ...
Wait(30);
right_Linehalf();//Sから円を一周して再びSに戻ってくるまで
Off(OUT_AC);//一時停止
Wait(100);
left_Uturn;//右側ライントレースの位置から左側ライントレ...
Wait(50);
go(40);//右側ライントレースの位置から左側ライントレース...
left_Line();//S-F間
Off(OUT_AC);
OnRev(OUT_B);//紙コップを置くためにアームを上げる
Wait(30);
Off(OUT_B);
Wait(100);//一時停止
left_Uturn;//左側ライントレースの位置から右側ライントレ...
Wait(40);
go(40);//左側ライントレースの位置から右側ライントレース...
right_Line();//F-C間
right_Uturn;//CからDの方向へ向く
Wait(60);
go(150);//C-D間
}
*まとめ [#g7578be6]
**反省点 [#tb7ecb1a]
前回の課題で使わなかったパーツを使ってロボットを作ろうと...
**感想 [#rbeed054]
発表の前日まで1回も成功していなかったので、それまで少し心...
終了行:
目次
#contents
*課題2 [#w4c48934]
**コース [#v3a59d03]
下の図のようなコースを作成し、黒い線に沿って動き、紙コッ...
#ref(2017b/Member/hata/Mission2/コース.png,70%,コース)
第1コースを選んだので次のようなコースをトレースするロボッ...
Aをスタート→Bを直進→Cを右折→Fを直進→Rを左折(一時停止)→Pを...
→Y地点に紙コップを置いてコースに戻る→Sを直進(一時停止)→F...
*ロボットの説明 [#r45822bf]
**ロボットの構造 [#zf8abba5]
&ref(2017b/Member/hata/Mission2/RISライントレース1.JPG,20...
&ref(2017b/Member/hata/Mission2/RISライントレース2.JPG,20...
&ref(2017b/Member/hata/Mission2/RISライントレース3.JPG,20...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
上の3枚の写真は実際に動かしたロボットの上、横、後ろから撮...
**紙コップを取る輪の部分 [#hd408515]
&ref(2017b/Member/hata/Mission2/RISライントレース5.jpg,30...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
また、その細い棒をチューブで繋いでできた輪は、そのままだ...
**光センサー部分 [#n2a8b8a8]
&ref(2017b/Member/hata/Mission2/RISライントレース4.JPG,20...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
光センサー高めにつけると周りからの光の影響を受けやすくな...
*プログラム [#oed56b86]
**定義 [#j2667492]
多用すると予想された一定時間光センサーを用いずに前進する...
#define right_Uturn OnFwd(OUT_A);OnRev(OUT_C);//右旋回
#define right_turn OnFwd(OUT_A);Off(OUT_C);//右回転
#define left_Uturn OnFwd(OUT_C);OnRev(OUT_A);//左旋回
#define left_turn OnFwd(OUT_C);Off(OUT_A);//左回転
#define Brightness 47//明るさ
#define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);//時間指...
#define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);//時間...
#define right_through left_Uturn;Wait(20);go(30);//右側...
#define left_through right_Uturn;Wait(25);go(30);//左側...
**サブルーチン [#oa7a0f03]
ライントレースをする際に線の右側をトレースするパターンと...
#ref(2017b/Member/hata/Mission2/スペース.jpg,1%,)
&ref(2017b/Member/hata/Mission2/ライントレースの仕方.gif,...
&ref(2017b/Member/hata/Mission2/2ライントレースRISセンサ...
***右側ライントレース [#rb19cf47]
sub right_Line()//右側ライントレース
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=26)//0.26秒以内は繰り返し、0.26...
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
left_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時右旋...
{
right_Uturn;
}
}
Off(OUT_AC);
}
***短い右側ライントレース [#f0b497b2]
sub right_Linehalf()//右側ライントレース短
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=17)//0.17秒以内は繰り返し、0.17...
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
left_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時右旋...
{
right_Uturn;
}
}
}
***左側ライントレース [#h64146a0]
sub left_Line()//左側ライントレース
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=26)
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
right_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が明...
{
right_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時左旋...
{
left_Uturn;
}
}
Off(OUT_AC);
}
***短い左側ライントレース [#peb890d5]
sub left_Linehalf()//左側ライントレース短
{
SetSensor(SENSOR_2,SENSOR_LIGHT);//端子2に光センサー...
ClearTimer(0);
while(FastTimer(0)<=17)
{
if(SENSOR_2>Brightness+5)//センサーの値が明るさ...
{
right_Uturn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness+4)//センサーの値が...
{
right_turn;
ClearTimer(0);
}
else if(SENSOR_2>Brightness)//センサーの値が明る...
{
OnFwd(OUT_AC);
ClearTimer(0);
}
else if(SENSOR_2>Brightness-4)//センサーの値が明...
{
left_turn;
ClearTimer(0);
}
else//上記のいずれかの条件も満たさなかった時左旋...
{
left_Uturn;
}
}
}
***紙コップを取る [#ib881c90]
sub cup_get()//紙コップを取る
go(130);//Pから紙コップを取りに行くための移動?
left_Uturn;//Pから紙コップを取りに行くための移動?
Wait(65);
OnRev(OUT_AC);//Pから紙コップを取りに行くための移動?
Wait(80);
Off(OUT_AC);
OnFwd(OUT_B);//アームを下し、紙コップを取る
Wait(30);
Off(OUT_B);
**プログラムのメイン [#wce6c317]
task main()
{
right_Line();//A-B間
Wait(100);//一時停止
right_through;//交差点通過
int A;
for (A=1; A<=2; A++)//B-C間およびC-D間
{
right_Line();
Wait(100);
}
right_through;//交差点通過
ClearTimer(1);
while(FastTimer(1)<=850)//E-F間の2つ目の急なカーブまで
{
right_Line();
}
Off(OUT_AC);
left_turn;//右側ライントレースの位置から左側ライントレー...
Wait(30);
left_Linehalf();//E-F間の2つ目の急なカーブからRまで
Off(OUT_AC);//一時停止
Wait(100);
left_Uturn;//一時停止した位置から円の部分のライントレー...
Wait(30);
go(30);//一時停止した位置から円の部分のライントレース二...
left_Linehalf();//R-P間
Off(OUT_AC);//一時停止
Wait(100);
cup_get();//紙コップを取る
left_Line();//紙コップを取った位置から戻りつつQ-S間
Off(OUT_AC);//一時停止
Wait(100);
left_through;//交差点通過
right_Uturn;//左側ライントレースの位置から右側ライントレ...
Wait(30);
right_Linehalf();//Sから円を一周して再びSに戻ってくるまで
Off(OUT_AC);//一時停止
Wait(100);
left_Uturn;//右側ライントレースの位置から左側ライントレ...
Wait(50);
go(40);//右側ライントレースの位置から左側ライントレース...
left_Line();//S-F間
Off(OUT_AC);
OnRev(OUT_B);//紙コップを置くためにアームを上げる
Wait(30);
Off(OUT_B);
Wait(100);//一時停止
left_Uturn;//左側ライントレースの位置から右側ライントレ...
Wait(40);
go(40);//左側ライントレースの位置から右側ライントレース...
right_Line();//F-C間
right_Uturn;//CからDの方向へ向く
Wait(60);
go(150);//C-D間
}
*まとめ [#g7578be6]
**反省点 [#tb7ecb1a]
前回の課題で使わなかったパーツを使ってロボットを作ろうと...
**感想 [#rbeed054]
発表の前日まで1回も成功していなかったので、それまで少し心...
ページ名: