加減速走行時の次マーカ検出前のブレーキングシステムを導入。各速度域におけるブレーキのタイミングとPDパラメータの調整を入念に行うこと。また、LCDの表示事項はストップゴールの表示は必要性を感じなかったため、走行交差点数のパラメータ表示に変更した。
Dependencies: mbed AQM0802 CRotaryEncoder TB6612FNG
Revision 32:63db1848189e, committed 2019-11-27
- Comitter:
- GGU
- Date:
- Wed Nov 27 07:50:15 2019 +0000
- Parent:
- 31:fe9ae7992246
- Commit message:
- test
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
tuning.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r fe9ae7992246 -r 63db1848189e main.cpp --- a/main.cpp Tue Nov 26 02:57:02 2019 +0000 +++ b/main.cpp Wed Nov 27 07:50:15 2019 +0000 @@ -192,13 +192,13 @@ //左右タイヤの走行距離の差分を用いた曲率演算 /////左が右の一倍以上かつ左が右の1.2倍以下もしくは右は左の1倍以上かつ右が左の1.2倍以下の時 if((((course_data[Row][0])>=(course_data[Row][1]*1.0f))&&((course_data[Row][0])<(course_data[Row][1]*HIGH_SPEED_SECTION))) - || (((course_data[Row][0])>=(course_data[Row][1]*1.0f))&&((course_data[Row][0])<(course_data[Row][1]*HIGH_SPEED_SECTION)))){ + || (((course_data[Row][1])>=(course_data[Row][0]*1.0f))&&((course_data[Row][1])<(course_data[Row][0]*HIGH_SPEED_SECTION)))){ Imaginary_Speed=High_Speed;//高速とする。 }else if((((course_data[Row][0])>=(course_data[Row][1]*HIGH_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*MEDIUM_SPEED_SECTION))) - || (((course_data[Row][0])>=(course_data[Row][1]*HIGH_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*MEDIUM_SPEED_SECTION)))){ + || (((course_data[Row][1])>=(course_data[Row][0]*HIGH_SPEED_SECTION))&&((course_data[Row][1])<(course_data[Row][0]*MEDIUM_SPEED_SECTION)))){ Imaginary_Speed=Medium_Speed;//中カーブは中速とする。 }else if((((course_data[Row][0])>=(course_data[Row][1]*MEDIUM_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*LOW_SPEED_SECTION))) - || (((course_data[Row][0])>=(course_data[Row][1]*MEDIUM_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*LOW_SPEED_SECTION)))){ + || (((course_data[Row][1])>=(course_data[Row][0]*MEDIUM_SPEED_SECTION))&&((course_data[Row][1])<(course_data[Row][0]*LOW_SPEED_SECTION)))){ Imaginary_Speed=Low_Speed;//低速 } else{ @@ -254,7 +254,7 @@ -(((Memory_Enc_Count_A*PULSE_TO_UM)+(Memory_Enc_Count_B*PULSE_TO_UM))/2); //現在速度がハイスピードで次のコースが急カーブであり、残り距離が---だったとき - if((course_data[Row][2]==High_Speed)&&(Next_Imaginary_Speed==Low_Speed) + if((course_data[Row][2]==High_Speed)&&(Next_Imaginary_Speed<Medium_Speed) &&(Recent_Distance<HL_BREAK_DISANCE)){ Target_Speed_A=Low_Speed; Target_Speed_B=Low_Speed; @@ -266,7 +266,7 @@ Target_Speed_B=Medium_Speed; } //現在速度が中間速度で次のコースが急カーブであり、残り距離が---だったとき - else if((course_data[Row][2]==High_Speed)&&(Next_Imaginary_Speed==Low_Speed) + else if((course_data[Row][2]==High_Speed)&&(Next_Imaginary_Speed<Medium_Speed) &&(Recent_Distance<ML_BREAK_DISANCE)){ Target_Speed_A=Low_Speed; Target_Speed_B=Low_Speed;
diff -r fe9ae7992246 -r 63db1848189e tuning.h --- a/tuning.h Tue Nov 26 02:57:02 2019 +0000 +++ b/tuning.h Wed Nov 27 07:50:15 2019 +0000 @@ -4,9 +4,9 @@ ************************************/ ////////機体速度関連 -#define LOW_SPEED 800 //標準速度[mm/sec] -#define MEDIUM_SPEED 950 //2走目の中間速度[mm/sec] -#define HIGH_SPEED 1200 //2走目の高速速度[mm/sec] +#define LOW_SPEED 875 //標準速度[mm/sec] +#define MEDIUM_SPEED 1050 //2走目の中間速度[mm/sec] +#define HIGH_SPEED 1175 //2走目の高速速度[mm/sec] #define STOP_DISTANCE 200000 //停止距離200000[um]⇒20[cm] #define TURN_POWER 0.6f //コースアウト時の旋回力 @@ -14,19 +14,18 @@ ///////マーカ判定関連 #define DEFAULT_GRAY 0.2f //フォトリフレクタデジタル入力の閾値 //シリアル通信でSensor_Digital値を確認し調整する。 -#define MARKER_WIDTH 8000 //マーカ幅[um](ビニルテープ幅19000[um]以内) +#define MARKER_WIDTH 7400 //マーカ幅[um](ビニルテープ幅19000[um]以内) //コースの傷によってマーカ誤検知する場合は値を大きくする。 #define CROSS_JUDGE 4 //ラインセンサいくつ以上白線検知で交差点認識するか設定。 //////ブレーキングシステム調整 -#define HIGH_SPEED_SECTION 1.25f //最高速度の左右回転差の上限倍率 -#define MEDIUM_SPEED_SECTION 2.0f //中間速度の左右回転差の上限倍率 -#define LOW_SPEED_SECTION 4.0f //最低速度の左右回転差の上限倍率 -#define HL_BREAK_DISANCE 200000 //高速度で次のカーブが低速カーブのときのブレーキング距離[um] -#define HM_BREAK_DISANCE 100000 //高速度で次のカーブが中間速度カーブのときのブレーキング距離[um] -#define ML_BREAK_DISANCE 50000 //中間速度で次のカーブが低速カーブのときのブレーキング距離[um] - +#define HIGH_SPEED_SECTION 1.25f //最高速度の左右回転差の上限倍率 1.25f +#define MEDIUM_SPEED_SECTION 1.5f //中間速度の左右回転差の上限倍率 1.5f +#define LOW_SPEED_SECTION 2.0f //最低速度の左右回転差の上限倍率 2.0f +#define HL_BREAK_DISANCE 230750 //高速度で次のカーブが低速カーブのときのブレーキング距離[um] +#define HM_BREAK_DISANCE 110000 //高速度で次のカーブが中間速度カーブのときのブレーキング距離[um] +#define ML_BREAK_DISANCE 37500 //中間速度で次のカーブが低速カーブのときのブレーキング距離[um] //////各種PD調整 @@ -42,16 +41,16 @@ //ラインセンサ各種制御成分 //P成分 -#define S_KP_LOW 3.0f //低速P成分 -#define S_KP_MEDIUM 2.0f //中速P成分 -#define S_KP_HIGH 1.0f //高速P成分 +#define S_KP_LOW 2.9f //低速P成分 3.0f +#define S_KP_MEDIUM 2.4f //中速P成分 2.0f +#define S_KP_HIGH 1.6f //高速P成分 1.0f -#define S_KP_DEFAULT_HIGH 2.0f //3走目P成分 +#define S_KP_DEFAULT_HIGH 2.4f //3走目P成分 2.0f //D成分 -#define S_KD_LOW 15.0f //低速D成分 -#define S_KD_MEDIUM 10.0f //中速D成分 -#define S_KD_HIGH 5.0f //高速D成分 +#define S_KD_LOW 15.4f //低速D成分 15.0f +#define S_KD_MEDIUM 7.6f //中速D成分 10.0f +#define S_KD_HIGH 5.7f //高速D成分 5.0f -#define S_KD_DEFAULT_HIGH 10.0f //3走目D成分 +#define S_KD_DEFAULT_HIGH 5.6f //3走目D成分 1.0f //////////☆★☆★☆★☆★☆★//////////////