2015a/Member/Katuu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/MemberOnly]]
*目次 [#e57e1c21]
&ref(./ライントレース 移動中.JPG,15%);
#contents
*課題 [#qd7d1866]
&ref(./2015a-mission2 コース.png,50%);
ロボットの光センサーを利用して、図の「B」の地点から「A...
黒線を追いながら移動するライントレース。
途中球をキャッチして最後、Aに設置してあるゴールに球をシ...
*全体の流れ(問題へのアプローチの仕方) [#w1d518f3]
&ref(./2015a-mission2 コース 改.png,50%);
通常の直線、曲線では黒線と白紙の境界を行き来するプログラ...
**?直角カーブ [#x1463652]
黒線よりの境界を行き来するようにして極力
交差点を終えた部分からは通常のカーブと直線だけなので交差...
*ロボット及び制作の過程 [#i59ca00c]
&ref(./全体 横から.JPG,10%);&ref(./裏返し センサー.JPG,...
ロボットの作成は付属の説明書にあるライントレーサーにセン...
**アーム [#w7993c82]
&ref(./正面からのアーム.JPG,10%);&ref(./アーム解説用.JPG,...
クワガタの顎のような形のアーム。もっとも苦労したのはこの...
このアームの利点はギアの噛み合わせがしっかりとしていて安...
**後輪 [#d278c316]
&ref(./IMG_0448.JPG,10%);
さまざまな方向に移動する主機の移動についていくための後輪...
*プログラム [#cb158d88]
様々な問題そして解決のための方法も多様化したため前回と比...
?直角カーブまで
?交差点?まで
?交差点?まで
?最後の曲線からシュートまで
の3つのセクションに分けて取り組んだ。
**定義 [#f55ebb2a]
長いプログラムとなったため以下のような多くの定義を用いた。
#define Lblack 30 //暗い黒
#define Sblack 38//薄い黒
#define Lwhite 60 //明るい白
#define Swhite 52 //暗めな白
#define SPEED_ST 40//直線での速度
#define SPEED_CR 25//曲線での速度
#define OnRL(sR,sL) OnFwd(OUT_B,sR);OnFwd(OUT_C,sL); //...
#define go_ST OnRL(SPEED_ST,SPEED_ST); //直進
#define turn_L0 OnRL(SPEED_CR,0);//左折
#define turn_L1 OnRL(SPEED_CR,-SPEED_CR); //左旋回
#define turn_R0 OnRL(0,SPEED_CR);//右折
#define turn_R1 OnRL(-SPEED_CR,SPEED_CR);//右旋回
#define STEP 1
#define OTO PlaySound(SOUND_UP); //動作確認用の音
#define ARMOPEN RotateMotor(OUT_A,40,90); //アーム開
#define ARMCLOSE RotateMotor(OUT_A,-40,90);//アーム閉
#define KOUSATEN1 Off(OUT_BC);ARMCLOSE;RotateMotor(OUT_B...
#define KOUSATEN2 Off(OUT_BC);RotateMotor(OUT_BC,40,100)...
#define SHOT OTO;OnFwd(OUT_BC,80);Wait(2500);//シュート
**メインタスク [#o6335382]
task main(){
SetSensorLight(S3); //センサー起動
int white=0;//白検出回数の変数定義
while(white==0){
if(SENSOR_3<Lblack){
turn_R0;//線の内側まで来てしまったときちょっ...
}
else if(SENSOR_3<Sblack){
go_ST;//境界近くの黒線にあるときそのまま真っ...
}
else if(SENSOR_3<Swhite){
turn_L1;//境界近くの白紙側にあるとき旋回して...
}
else if(SENSOR_3<Lwhite){//明るい白を検出したら?...
go_ST;//1.直進
Wait(100);
RotateMotor(OUT_B,40,100);//2,直角に合わせ旋...
RotateMotor(OUT_C,-40,100);
white++;//3,変数の値を増やし次のプログラムが...
}
Wait(STEP);
}
while(white==1){//交差点?を通過するまでの動作
if(SENSOR_3<Lblack){//交差点と判断し動作を開始
KOUSATEN1;//交差点?を通過する動作
white++;//変数の値を増やし次のプログラムが...
}
else if(SENSOR_3<Sblack){//線の内側近くなったと...
turn_R1;
}
else if(SENSOR_3<Swhite){//外側よりの境界を進む
go_ST;
}
else if(SENSOR_3<Lwhite){//外側に反れたとき左に...
turn_L0;
}
Wait(STEP);
}
long t0=CurrentTick();//交差点?を通過してからの時間...
while(white=2){
if(SENSOR_3<Lblack&&CurrentTick()-t0>11000){//?...
KOUSATEN2;//交差点?を移動
white++;//変数の値を増やし次のプログラムが起...
}
else if(SENSOR_3<Sblack){//white==1の時と同じ移...
turn_R1;
}
else if(SENSOR_3<Swhite){//white==1の時と同じ移...
go_ST;
}
else if(SENSOR_3<Lwhite){//white==1の時と同じ移...
turn_L0;
}
Wait(STEP);
}
long t1=CurrentTick();//交差点?を通過してからの時間...
while(white==3&&CurrentTick()-t1>10000){//10秒経つま...
if(SENSOR_3<Lblack){
turn_R1;
}
else if(SENSOR_3<Sblack){
turn_R0;
}
else if(SENSOR_3<Swhite){
go_ST;
}
else if(SENSOR_3<Lwhite){
turn_L0;
}
Wait(STEP);
}
SHOT;//シュート!
}
*感想 [#c0ba4d86]
前回とは逆に作成よりもプログラミングで非常に苦しんだ。
例で解決方法が色々示されていたもののそのままでは正確に動...
しかし、新たなコマンドの方法を多く学べ、問題に対しても様...
その点は次回にも引き続き取り組んでいきたい。
&ref(./ライントレースアーム開け! (1).JPG,10%);
終了行:
[[2015a/MemberOnly]]
*目次 [#e57e1c21]
&ref(./ライントレース 移動中.JPG,15%);
#contents
*課題 [#qd7d1866]
&ref(./2015a-mission2 コース.png,50%);
ロボットの光センサーを利用して、図の「B」の地点から「A...
黒線を追いながら移動するライントレース。
途中球をキャッチして最後、Aに設置してあるゴールに球をシ...
*全体の流れ(問題へのアプローチの仕方) [#w1d518f3]
&ref(./2015a-mission2 コース 改.png,50%);
通常の直線、曲線では黒線と白紙の境界を行き来するプログラ...
**?直角カーブ [#x1463652]
黒線よりの境界を行き来するようにして極力
交差点を終えた部分からは通常のカーブと直線だけなので交差...
*ロボット及び制作の過程 [#i59ca00c]
&ref(./全体 横から.JPG,10%);&ref(./裏返し センサー.JPG,...
ロボットの作成は付属の説明書にあるライントレーサーにセン...
**アーム [#w7993c82]
&ref(./正面からのアーム.JPG,10%);&ref(./アーム解説用.JPG,...
クワガタの顎のような形のアーム。もっとも苦労したのはこの...
このアームの利点はギアの噛み合わせがしっかりとしていて安...
**後輪 [#d278c316]
&ref(./IMG_0448.JPG,10%);
さまざまな方向に移動する主機の移動についていくための後輪...
*プログラム [#cb158d88]
様々な問題そして解決のための方法も多様化したため前回と比...
?直角カーブまで
?交差点?まで
?交差点?まで
?最後の曲線からシュートまで
の3つのセクションに分けて取り組んだ。
**定義 [#f55ebb2a]
長いプログラムとなったため以下のような多くの定義を用いた。
#define Lblack 30 //暗い黒
#define Sblack 38//薄い黒
#define Lwhite 60 //明るい白
#define Swhite 52 //暗めな白
#define SPEED_ST 40//直線での速度
#define SPEED_CR 25//曲線での速度
#define OnRL(sR,sL) OnFwd(OUT_B,sR);OnFwd(OUT_C,sL); //...
#define go_ST OnRL(SPEED_ST,SPEED_ST); //直進
#define turn_L0 OnRL(SPEED_CR,0);//左折
#define turn_L1 OnRL(SPEED_CR,-SPEED_CR); //左旋回
#define turn_R0 OnRL(0,SPEED_CR);//右折
#define turn_R1 OnRL(-SPEED_CR,SPEED_CR);//右旋回
#define STEP 1
#define OTO PlaySound(SOUND_UP); //動作確認用の音
#define ARMOPEN RotateMotor(OUT_A,40,90); //アーム開
#define ARMCLOSE RotateMotor(OUT_A,-40,90);//アーム閉
#define KOUSATEN1 Off(OUT_BC);ARMCLOSE;RotateMotor(OUT_B...
#define KOUSATEN2 Off(OUT_BC);RotateMotor(OUT_BC,40,100)...
#define SHOT OTO;OnFwd(OUT_BC,80);Wait(2500);//シュート
**メインタスク [#o6335382]
task main(){
SetSensorLight(S3); //センサー起動
int white=0;//白検出回数の変数定義
while(white==0){
if(SENSOR_3<Lblack){
turn_R0;//線の内側まで来てしまったときちょっ...
}
else if(SENSOR_3<Sblack){
go_ST;//境界近くの黒線にあるときそのまま真っ...
}
else if(SENSOR_3<Swhite){
turn_L1;//境界近くの白紙側にあるとき旋回して...
}
else if(SENSOR_3<Lwhite){//明るい白を検出したら?...
go_ST;//1.直進
Wait(100);
RotateMotor(OUT_B,40,100);//2,直角に合わせ旋...
RotateMotor(OUT_C,-40,100);
white++;//3,変数の値を増やし次のプログラムが...
}
Wait(STEP);
}
while(white==1){//交差点?を通過するまでの動作
if(SENSOR_3<Lblack){//交差点と判断し動作を開始
KOUSATEN1;//交差点?を通過する動作
white++;//変数の値を増やし次のプログラムが...
}
else if(SENSOR_3<Sblack){//線の内側近くなったと...
turn_R1;
}
else if(SENSOR_3<Swhite){//外側よりの境界を進む
go_ST;
}
else if(SENSOR_3<Lwhite){//外側に反れたとき左に...
turn_L0;
}
Wait(STEP);
}
long t0=CurrentTick();//交差点?を通過してからの時間...
while(white=2){
if(SENSOR_3<Lblack&&CurrentTick()-t0>11000){//?...
KOUSATEN2;//交差点?を移動
white++;//変数の値を増やし次のプログラムが起...
}
else if(SENSOR_3<Sblack){//white==1の時と同じ移...
turn_R1;
}
else if(SENSOR_3<Swhite){//white==1の時と同じ移...
go_ST;
}
else if(SENSOR_3<Lwhite){//white==1の時と同じ移...
turn_L0;
}
Wait(STEP);
}
long t1=CurrentTick();//交差点?を通過してからの時間...
while(white==3&&CurrentTick()-t1>10000){//10秒経つま...
if(SENSOR_3<Lblack){
turn_R1;
}
else if(SENSOR_3<Sblack){
turn_R0;
}
else if(SENSOR_3<Swhite){
go_ST;
}
else if(SENSOR_3<Lwhite){
turn_L0;
}
Wait(STEP);
}
SHOT;//シュート!
}
*感想 [#c0ba4d86]
前回とは逆に作成よりもプログラミングで非常に苦しんだ。
例で解決方法が色々示されていたもののそのままでは正確に動...
しかし、新たなコマンドの方法を多く学べ、問題に対しても様...
その点は次回にも引き続き取り組んでいきたい。
&ref(./ライントレースアーム開け! (1).JPG,10%);
ページ名: