ひとまずの記憶走行完成形。本来であれば、コースマーカ前でのブレーキング処理が必要になるが、進捗次第で設計することとする。

Dependencies:   mbed AQM0802 CRotaryEncoder TB6612FNG

Files at this revision

API Documentation at this revision

Comitter:
yusaku0125
Date:
Mon Nov 25 05:58:11 2019 +0000
Parent:
28:00cb072ad251
Commit message:
2;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 00cb072ad251 -r 01b7f40ec029 main.cpp
--- a/main.cpp	Mon Nov 25 05:37:20 2019 +0000
+++ b/main.cpp	Mon Nov 25 05:58:11 2019 +0000
@@ -11,11 +11,11 @@
 
 
 //☆★☆★各種パラメータ調整箇所☆★☆★☆★
-#define     DEFAULT_SPEED       300     //1走目の基本速度
-#define     LOW_SPEED           300     //2走目の低速速度[mm/sec]
-#define     MEDIUM_SPEED        500     //2走目の低速速度[mm/sec]
-#define     HIGH_SPEED          750     //2走目の低速速度[mm/sec]
-#define     DEFAULT_HIGH_SPEED  700     //3走目の低速速度[mm/sec]
+#define     DEFAULT_SPEED       750     //1走目の基本速度
+#define     LOW_SPEED           750     //2走目の低速速度[mm/sec]
+#define     MEDIUM_SPEED        850     //2走目の低速速度[mm/sec]
+#define     HIGH_SPEED          1100     //2走目の低速速度[mm/sec]
+#define     DEFAULT_HIGH_SPEED  900     //3走目の低速速度[mm/sec]
 #define     STOP_DISTANCE   100000      //停止距離200000[um]⇒20[cm]
 #define     TURN_POWER      0.6         //コースアウト時の旋回力
 #define     PULSE_TO_UM     28          //エンコーダ1パルス当たりのタイヤ移動距離[um]
@@ -25,6 +25,12 @@
 #define     MARKER_WIDTH    10000       //マーカ幅[um](ビニルテープ幅19000[um]以内)
                                         //コースの傷によってマーカ誤検知する場合は値を大きくする。
 #define     CROSS_JUDGE     4           //ラインセンサいくつ以上白線検知で交差点認識するか設定。
+
+#define     HIGH_SPEED_SECTION      1.25f        //最高速度の左右回転差の上限倍率     
+#define     MIDIUM_SPEED_SECTION    2.0f         //中間速度の左右回転差の上限倍率
+#define     LOW_SPEED_SECTION       4.0f         //最低速度の左右回転差の上限倍率
+
+
 //モータ速度のゲイン関連(むやみに調整しない)
 #define     M_KP            0.002f      //P(比例)制御成分
 #define     M_KD            0.001f      //D(微分)制御成分
@@ -229,14 +235,14 @@
                                 
     //左右タイヤの走行距離の差分を用いた曲率演算
              /////左が右の一倍以上かつ左が右の1.2倍以下もしくは右は左の1倍以上かつ右が左の1.2倍以下の時
-    if((((course_data[Row][0])>=(course_data[Row][1]*1.0f))&&((course_data[Row][0])<(course_data[Row][1]*1.2f)))
-      || (((course_data[Row][0])>=(course_data[Row][1]*1.0f))&&((course_data[Row][0])<(course_data[Row][1]*1.2f)))){
+    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)))){
         Imaginary_Speed=High_Speed;//高速とする。    
-    }else if((((course_data[Row][0])>=(course_data[Row][1]*1.2f))&&((course_data[Row][0])<(course_data[Row][1]*1.5f)))
-      || (((course_data[Row][0])>=(course_data[Row][1]*1.2f))&&((course_data[Row][0])<(course_data[Row][1]*1.5f)))){
+    }else if((((course_data[Row][0])>=(course_data[Row][1]*HIGH_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*MIDIUM_SPEED_SECTION)))
+      || (((course_data[Row][0])>=(course_data[Row][1]*HIGH_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*MIDIUM_SPEED_SECTION)))){
         Imaginary_Speed=Medium_Speed;//中カーブは中速とする。
-    }else if((((course_data[Row][0])>=(course_data[Row][1]*1.5f))&&((course_data[Row][0])<(course_data[Row][1]*2.0f)))
-      || (((course_data[Row][0])>=(course_data[Row][1]*1.5f))&&((course_data[Row][0])<(course_data[Row][1]*2.0f)))){
+    }else if((((course_data[Row][0])>=(course_data[Row][1]*MIDIUM_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*LOW_SPEED_SECTION)))
+      || (((course_data[Row][0])>=(course_data[Row][1]*MIDIUM_SPEED_SECTION))&&((course_data[Row][0])<(course_data[Row][1]*LOW_SPEED_SECTION)))){
         Imaginary_Speed=Low_Speed;//低速
     }
     else{