飛思カルの知能車の電磁グループのパーティションのアルゴリズムの紹介
59637 ワード
前に書いたら:
1、今は学校の学生です.これも初めてブログを書きます.不備なところです.ご了承ください.
2、このアルゴリズムはオリジナルではなく、山東徳州学院の第8回ポプラチーム(PS:個人的な見方では、一部の人が他人のソースを変えて自分のオリジナル行為として軽蔑している)を参考にしています.
3、このアルゴリズムの理解と説明については、机上の空論ではなく、アルゴリズムはすでに私に利用されました.乗用車競技中に良い成績を収めました.
4、今回紹介したのはパスアルゴリズムと知識の普及だけで、後には時間があれば、残りの部分のアルゴリズムと多くのいい考えを紹介します.
5、この方面に関わる人が私と連絡して交流したり、足りないところを指摘してくれたらいいです.
6、転載は出所を説明してください.http://www.cnblogs.com/roc-wwp/p/4848136.html(PS:直接に恩智浦スマートカーに変えた人を見ました.酔っていました.これは学校に行った時に書いたものです.自信がありました.2333)
--------------------------分割線------------------------------------------------------------------------------------------------------------------------------
一、この方面の理解のがなくて見てもいいです.
スマートカーは3つのグループに分けられています.カメラ、光電、電磁気、私が作ったのは電磁気車です.3つの車両はセンサーの違いにあります.だから、パス情報を得る方法も違います.カメラと光電認識はコースの黒い線(白底コース)です.電磁気車はコースの下に埋められた100 mhの電流を入れるワニスの線を検出します.カメラと光電子はセンサーとしてカメラとcdを採用しています.電磁はインダクタを使って漆の線の周りに置くので、インダクタンスの上で誘導電動力が発生します.また、コイル回路を通る磁束の大きさに比例します.また、ワニスの線の周囲の磁気感の強度が違います.そのため、インダクタンスの位置を確認することができます.そのため、車の前に50 cmの展望を設置しました.センサーレイアウトは次の通りです.2列に分けて、前の3つの列に分けて、番号は0、1、2(前の段階には2つの縦方向のインダクタンスをプラスして直角のカーブを助けました.後に八字のインダクタンスに変えました.)後列2個、番号3、4;現在車は異なる位置の誘導電動力の大きさを得ましたが、これらの値は処理できません.2、アナログ信号です.信号が弱いと大きくなります.これはアナログ回路の知識に関わるので、多くは言いません.拡大部分の外周はあなたの設計のが更に良くても1つのもっと良いチップに及ばないで、2つの例があって、1つは私自身のです:前はNE 5532を使って、しかし効果は理想的ではありませんて、多くのフィルタリングを加えて、補償、すべて使って、役に立たないで、ソフトウェアの中で処理した後に更に言うと、後で思い切ってAD620を交換して、感じは春に来ました.高いです..効果は素晴らしいです.多くの付加回路が取り除かれています.板が簡潔になりました.もう一つは先輩の例です.彼は電子デザインコンテストに参加した時、同じ学校のグループがあります.彼のテーマと同じように、ものができたらほぼ同じですが、一等賞を取りました.もう一つの組は二等賞です.違いはフィルタリングです.本校の指導先生は簡単な容量を追加すればいいと言いました.彼は新しいフィルタチップを使っています.信号の最後に出た波形の差が大きいです.(私が担当しているのは主にソフトウェアの部分ですが、ハードウェア回路も全部関連しています.でも、まだ慣れていません.)
拡大を解決するとアナログ信号をデジタル信号に変換します.直接使うのはチップ上のADモジュールです.®-M 4シリーズは、実際には高性能のマクロプロセッサとして扱われています.本当に浪費しています.その後s 12に変更しました.他のグループと衝突したので、K 60は確かにs 12より使いやすいと思います.s 12は自分でレジスタを配置して、カスケードを作って、超周波数を計算して、外部クロックの周波数を計算して、k 60は他の人がライブラリを書いています.つまり、絶えず呼び出しています.(これはちょっと心細いようです.ほほほ)でも、自分でロードモジュールを作ったら、完成車のレイアウトが面倒くさいので、使うしかないです.処理が終わったら、ドアを閉めてアルゴリズムを放します.
二、コアパスアルゴリズム(ソースを敬意を表するために、元の著者のアルゴリズムを置く)
三、アルゴリズムの解読(本末転倒でないために、前のようにアルゴリズム以外のものよりも多く書くことができません(例えば、移行点がフラッシュに保存されています.)、ソフトウェアフィルタリング――これらについては、もう少しゆっくり話してください.
パスパーティションの中心はここです.
1、今は学校の学生です.これも初めてブログを書きます.不備なところです.ご了承ください.
2、このアルゴリズムはオリジナルではなく、山東徳州学院の第8回ポプラチーム(PS:個人的な見方では、一部の人が他人のソースを変えて自分のオリジナル行為として軽蔑している)を参考にしています.
3、このアルゴリズムの理解と説明については、机上の空論ではなく、アルゴリズムはすでに私に利用されました.乗用車競技中に良い成績を収めました.
4、今回紹介したのはパスアルゴリズムと知識の普及だけで、後には時間があれば、残りの部分のアルゴリズムと多くのいい考えを紹介します.
5、この方面に関わる人が私と連絡して交流したり、足りないところを指摘してくれたらいいです.
6、転載は出所を説明してください.http://www.cnblogs.com/roc-wwp/p/4848136.html(PS:直接に恩智浦スマートカーに変えた人を見ました.酔っていました.これは学校に行った時に書いたものです.自信がありました.2333)
--------------------------分割線------------------------------------------------------------------------------------------------------------------------------
一、この方面の理解のがなくて見てもいいです.
スマートカーは3つのグループに分けられています.カメラ、光電、電磁気、私が作ったのは電磁気車です.3つの車両はセンサーの違いにあります.だから、パス情報を得る方法も違います.カメラと光電認識はコースの黒い線(白底コース)です.電磁気車はコースの下に埋められた100 mhの電流を入れるワニスの線を検出します.カメラと光電子はセンサーとしてカメラとcdを採用しています.電磁はインダクタを使って漆の線の周りに置くので、インダクタンスの上で誘導電動力が発生します.また、コイル回路を通る磁束の大きさに比例します.また、ワニスの線の周囲の磁気感の強度が違います.そのため、インダクタンスの位置を確認することができます.そのため、車の前に50 cmの展望を設置しました.センサーレイアウトは次の通りです.2列に分けて、前の3つの列に分けて、番号は0、1、2(前の段階には2つの縦方向のインダクタンスをプラスして直角のカーブを助けました.後に八字のインダクタンスに変えました.)後列2個、番号3、4;現在車は異なる位置の誘導電動力の大きさを得ましたが、これらの値は処理できません.2、アナログ信号です.信号が弱いと大きくなります.これはアナログ回路の知識に関わるので、多くは言いません.拡大部分の外周はあなたの設計のが更に良くても1つのもっと良いチップに及ばないで、2つの例があって、1つは私自身のです:前はNE 5532を使って、しかし効果は理想的ではありませんて、多くのフィルタリングを加えて、補償、すべて使って、役に立たないで、ソフトウェアの中で処理した後に更に言うと、後で思い切ってAD620を交換して、感じは春に来ました.高いです..効果は素晴らしいです.多くの付加回路が取り除かれています.板が簡潔になりました.もう一つは先輩の例です.彼は電子デザインコンテストに参加した時、同じ学校のグループがあります.彼のテーマと同じように、ものができたらほぼ同じですが、一等賞を取りました.もう一つの組は二等賞です.違いはフィルタリングです.本校の指導先生は簡単な容量を追加すればいいと言いました.彼は新しいフィルタチップを使っています.信号の最後に出た波形の差が大きいです.(私が担当しているのは主にソフトウェアの部分ですが、ハードウェア回路も全部関連しています.でも、まだ慣れていません.)
拡大を解決するとアナログ信号をデジタル信号に変換します.直接使うのはチップ上のADモジュールです.®-M 4シリーズは、実際には高性能のマクロプロセッサとして扱われています.本当に浪費しています.その後s 12に変更しました.他のグループと衝突したので、K 60は確かにs 12より使いやすいと思います.s 12は自分でレジスタを配置して、カスケードを作って、超周波数を計算して、外部クロックの周波数を計算して、k 60は他の人がライブラリを書いています.つまり、絶えず呼び出しています.(これはちょっと心細いようです.ほほほ)でも、自分でロードモジュールを作ったら、完成車のレイアウトが面倒くさいので、使うしかないです.処理が終わったら、ドアを閉めてアルゴリズムを放します.
二、コアパスアルゴリズム(ソースを敬意を表するために、元の著者のアルゴリズムを置く)
1 /******************** (C) COPYRIGHT 2011 ********************* ********************
2 * :Date_analyse.c
3 * :
4 *
5 * : kinetis
6 * :
7 * :
8 *
9 * :oО のSo
10 **********************************************************************************/
11 #include "include.h"
12 #define NM 3
13
14 int16 AD_valu[5],AD_V[5][NM],chazhi,chazhi_old;
15 float AD[5],sensor_to_one[5];
16 float Slope_AD_1; //
17 int16 max_v[5],min_v[5]; //
18 int16 Position_transit[4]; //
19 int16 AD_sum[5];
20 int16 AD_MAX_NUM; //
21 int16 position = 2,position_back = 1;
22 float max_value,AD_0_max,AD_1_max,AD_2_max,AD_3_max;
23
24
25 /*************************************************************************
26 * SC_black_Init
27 * :
28 * :
29 * :
30 * :
31 * :
32 *************************************************************************/
33 void SC_black_Init(void)
34 {
35 uint16 i,j;
36 int16 Position_transit_short[4];
37 float sensor_1,sensor_2,sensor_3,sensor_4;
38 if(K2)
39 {
40 LCD_Print(25,2,"Collecting");
41 LCD_Print(28,4,"samples...");
42
43 max_v[0] = max_v[1] = max_v[2] = max_v[3] = max_v[4] = 0;
44 min_v[0] = min_v[1] = min_v[2] = min_v[3] = min_v[4] = 7;
45 for(i=0;i<1200;i++)
46 {
47 AD_valu[0] = ad_ave(ADC1,AD9,ADC_10bit,6); //PTC0
48 AD_valu[1] = ad_ave(ADC1,AD8,ADC_10bit,6); //PTC1
49 AD_valu[2] = ad_ave(ADC1,AD15,ADC_10bit,6); //PTE25
50 AD_valu[3] = ad_ave(ADC1,AD11,ADC_10bit,6); //PTE24
51 AD_valu[4] = ad_ave(ADC1,AD13,ADC_10bit,6); //PTE24
52 for(j=0;j<5;j++)
53 {
54 if(AD_valu[j] > max_v[j])
55 {
56 max_v[j] = AD_valu[j];
57 if(j==0) Position_transit_short[0] = AD_valu[1]; //
58 if(j==2) Position_transit_short[1] = AD_valu[1];
59 if(j==3) Position_transit_short[2] = AD_valu[4];
60 if(j==4) Position_transit_short[3] = AD_valu[3];
61 }
62 }
63 delayms(1); //
64 }
65 /*************** ******************/
66 sensor_1 = (float)(Position_transit_short[0] - min_v[1])/(float)(max_v[1] - min_v[1]);
67 if(sensor_1 <= 0.0) sensor_1 = 0.001;
68 if(sensor_1 >= 1.0) sensor_1 = 1.0;
69
70 sensor_2 = (float)(Position_transit_short[1] - min_v[1])/(float)(max_v[1] - min_v[1]);
71 if(sensor_2 <= 0.0) sensor_2 = 0.001;
72 if(sensor_2 >= 1.0) sensor_2 = 1.0;
73
74 sensor_3 = (float)(Position_transit_short[2] - min_v[4])/(float)(max_v[4] - min_v[4]);
75 if(sensor_3 <= 0.0) sensor_3 = 0.001;
76 if(sensor_3 >= 1.0) sensor_3 = 1.0;
77
78 sensor_4 = (float)(Position_transit_short[3] - min_v[3])/(float)(max_v[3] - min_v[3]);
79 if(sensor_4 <= 0.0) sensor_4 = 0.001;
80 if(sensor_4 >= 1.0) sensor_4 = 1.0;
81
82 Position_transit[0] = (int16)(100 * sensor_1);
83 Position_transit[1] = (int16)(100 * sensor_2);
84 Position_transit[2] = (int16)(100 * sensor_3);
85 Position_transit[3] = (int16)(100 * sensor_4);
86
87
88 flash_erase_sector(SECTOR_ADM); // 254
89 for(i=0; i<5; i++) //
90 {
91 flash_write(SECTOR_ADM,i*4,max_v[i]);
92 }
93 for(i=0;i<4;i++) //
94 {
95 flash_write(SECTOR_ADM,20+i*4,Position_transit[i]);
96 }
97 }
98 else
99 {
100 for(i=0;i<3;i++)
101 {
102 for(j=0;j<5;j++) //
103 {
104 max_v[j] = flash_read(SECTOR_ADM,j*4,int16);
105 }
106 for(j=0;j<4;j++) //
107 {
108 Position_transit[j] = flash_read(SECTOR_ADM,20+j*4,int16);
109 }
110
111 LCD_Print(29,2,"Reading");
112 LCD_Print(28,4,"samples...");
113 delayms(10);
114 }
115 }
116 LCD_CLS();
117 Beer_ON;
118 delayms(25);
119 Beer_OFF;
120 }
121
122 /*************************************************************************
123 * Read_ADC
124 * : AD
125 * :
126 * :
127 * :
128 * :
129 *************************************************************************/
130 void Read_ADC(void)
131 {
132 int16 i,j,k,temp;
133 int16 ad_valu[5][5],ad_valu1[5],ad_sum[5];
134
135 for(i=0;i<5;i++)
136 {
137 ad_valu[0][i]=ad_ave(ADC1,AD9,ADC_10bit,7); // ADC0
138 ad_valu[1][i]=ad_ave(ADC1,AD8,ADC_10bit,7); // ADC0
139 ad_valu[2][i]=ad_ave(ADC1,AD15,ADC_10bit,7); // ADC0
140 ad_valu[3][i]=ad_ave(ADC1,AD11,ADC_10bit,7); // ADC0
141 ad_valu[4][i]=ad_ave(ADC1,AD13,ADC_10bit,7); // ADC0
142 }
143 ////////////////////// ///////////////////////////////////
144 for(i=0;i<5;i++) //5
145 {
146 for(j=0;j<4;j++) //
147 {
148 for(k=0;k<4-j;k++)
149 {
150 if(ad_valu[i][k] > ad_valu[i][k+1]) //
151 {
152 temp = ad_valu[i][k+1];
153 ad_valu[i][k+1] = ad_valu[i][k];
154 ad_valu[i][k] = temp;
155 }
156 }
157 }
158 }
159 for(i=0;i<5;i++) //
160 {
161 ad_sum[i] = ad_valu[i][1] + ad_valu[i][2] + ad_valu[i][3];
162 ad_valu1[i] = ad_sum[i] / 3;
163 }
164 //////////////////////// /////////////////////////////
165 for(i = 0;i < NM-1;i ++)
166 {
167 AD_V[0][i] = AD_V[0][i + 1];
168 AD_V[1][i] = AD_V[1][i + 1];
169 AD_V[2][i] = AD_V[2][i + 1];
170 AD_V[3][i] = AD_V[3][i + 1];
171 AD_V[4][i] = AD_V[4][i + 1];
172 }
173 for(i=0;i<5;i++)
174 {
175 AD_V[i][NM-1] = ad_valu1[i];
176 }
177
178 for(i = 0;i < NM;i ++)
179 {
180 AD_sum[0] += AD_V[0][i];
181 AD_sum[1] += AD_V[1][i];
182 AD_sum[2] += AD_V[2][i];
183 AD_sum[3] += AD_V[3][i];
184 AD_sum[4] += AD_V[4][i];
185 }
186 for(i=0;i<5;i++) //
187 {
188 AD_valu[i] = AD_sum[i] / NM;
189 AD_sum[i] = 0;
190 }
191 }
192
193 /*************************************************************************
194 * Date_analyse
195 * :
196 * :
197 * :
198 * :
199 * :
200 *************************************************************************/
201 void Date_analyse()
202 {
203 int16 i,max_front=0,max_back;
204 static int16 max_old = 1,max_crosstalk = 1;
205 static int16 position_last = 2;
206 float sensor_1;
207
208 Read_ADC();
209
210 /********************* ********************/
211 for(i=0;i<5;i++)
212 {
213 sensor_to_one[i] = (float)(AD_valu[i] - min_v[i])/(float)(max_v[i] - min_v[i]);
214 if(sensor_to_one[i]<=0.0) sensor_to_one[i]=0.001;
215 if(sensor_to_one[i]>1.0) sensor_to_one[i]=1.0;
216
217 AD[i] = 100 * sensor_to_one[i]; //AD[i] 0-100
218 }
219 /*******1 , ********/
220 sensor_1 = (float)(AD_valu[1] - min_v[1])/(float)(max_v[1] - min_v[1]);
221 if(sensor_1 <= 0.0) sensor_1 = 0.001;
222 Slope_AD_1 = 100 * sensor_1;
223 ////////////////////////////////////////////////////////////////////
224
225 for(i=0;i<3;i++) //
226 {
227 if(AD[max_front]2)
228 max_front=i;
229 }
230 max_value=AD[max_front];
231
232 max_back = (AD[3]>AD[4])? 3:4; //
233
234 if(max_value < 43) //
235 {
236 max_front=max_old;
237 max_value=AD[max_front];
238 }
239 else
240 max_old=max_front;
241
242 if(abs(max_front - max_crosstalk) < 2) //
243 {
244 max_crosstalk = max_front;
245 }
246 else
247 max_front = max_crosstalk;
248 AD_MAX_NUM = max_front; //
249
250 /**************** ************************/
251 if(max_front==0 && (AD[1] <= Position_transit[0] - 1)) // 0
252 {
253 position=0;
254 }
255 else if((max_front==0 && (AD[1] > Position_transit[0] + 1)) || (max_front==1 && (AD[0] - AD[2]) > 1)) // 0-1
256 {
257 position=1;
258 AD_0_max = AD[0]; // 3
259 }
260 else if((max_front==1 && (AD[2] - AD[0]) > 1) || (max_front==2 && (AD[1] > Position_transit[1] + 1))) // 1-2
261 {
262 position=2;
263 AD_2_max = AD[2]; // 3
264 }
265 else if(max_front==2 && (AD[1] <= Position_transit[1] - 1)) // 3
266 {
267 position = 3;
268 }
269 //~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~//
270 if(max_back == 3 && AD[4] <= Position_transit[2] - 1)
271 {
272 if(AD[4] <= Position_transit[2] - 22)
273 position_back = 0;
274 if(AD[4] >= Position_transit[2] - 20)
275 position_back = 1;
276 }
277 else if(max_back == 3 && AD[4] > Position_transit[2] + 1 || max_back == 4 && AD[3] > Position_transit[3] + 1)
278 {
279 position_back = 2;
280 }
281 else if(max_back == 4 && AD[3] <= Position_transit[3] - 1)
282 {
283 if(AD[3] >= Position_transit[3] - 20)
284 position_back = 3;
285 if(AD[3] <= Position_transit[3] - 22)
286 position_back = 4;
287 }
288
289 if(abs(position - position_last) == 2) //
290 position = position_last;
291 position_last = position;
292
293 ////// , //////////////
294 if(position == 0 && AD_0_max < 75)
295 {
296 AD_0_max = 75 + abs_f(75 - AD_0_max);
297 }
298 else if(position == 3 && AD_2_max < 75)
299 {
300 AD_2_max = 75 + abs_f(75 - AD_2_max);
301 }
302
303 /************* *************/
304 if(position == 0) //
305 {
306 chazhi = (int16)((AD[1] - abs_f(AD_0_max-AD[0]) - AD_0_max)*1.3)-25;
307 }
308 else if(position == 1 || position == 2) //
309 {
310 chazhi = (int16)(AD[2] - AD[0]);
311 }
312 else if(position == 3) //
313 {
314 chazhi = (int16)((abs_f(AD_2_max-AD[2]) + AD_2_max - AD[1] )*1.5)+30;
315 }
316 if(Stright_Flag)
317 {
318 chazhi = (int16)(((AD[2]-AD[0])-(AD[4]-AD[3])/10)*1.3); //
319 }
320 if(UPhill_flag) //
321 {
322 chazhi = (int16)((AD[2] - AD[0]));
323 }
324
325 }
三、アルゴリズムの解読(本末転倒でないために、前のようにアルゴリズム以外のものよりも多く書くことができません(例えば、移行点がフラッシュに保存されています.)、ソフトウェアフィルタリング――これらについては、もう少しゆっくり話してください.
パスパーティションの中心はここです.
38 if(K2)
39 {
40 LCD_Print(25,2,"Collecting");
41 LCD_Print(28,4,"samples...");
42
43 max_v[0] = max_v[1] = max_v[2] = max_v[3] = max_v[4] = 0;
44 min_v[0] = min_v[1] = min_v[2] = min_v[3] = min_v[4] = 7; 45 for(i=0;i<1200;i++) 46 { 47 AD_valu[0] = ad_ave(ADC1,AD9,ADC_10bit,6); //PTC0 48 AD_valu[1] = ad_ave(ADC1,AD8,ADC_10bit,6); //PTC1 49 AD_valu[2] = ad_ave(ADC1,AD15,ADC_10bit,6); //PTE25 50 AD_valu[3] = ad_ave(ADC1,AD11,ADC_10bit,6); //PTE24 51 AD_valu[4] = ad_ave(ADC1,AD13,ADC_10bit,6); //PTE24 52 for(j=0;j<5;j++) 53 { 54 if(AD_valu[j] > max_v[j]) 55 { 56 max_v[j] = AD_valu[j]; 57 if(j==0) Position_transit_short[0] = AD_valu[1]; // 58 if(j==2) Position_transit_short[1] = AD_valu[1]; 59 if(j==3) Position_transit_short[2] = AD_valu[4]; 60 if(j==4) Position_transit_short[3] = AD_valu[3]; 61 } 62 }
, 。。。
, , ( , ),1、 ( ) , ;2、 ( ) , , 。
PS:K2 , io
k2 ,( ( ),K2 , , 1, )
40 LCD_Print(25,2,"Collecting");
41 LCD_Print(28,4,"samples...");
OLED , ,(25,2):
45 for(i=0;i<1200;i++)
47 AD_valu[0] = ad_ave(ADC1,AD9,ADC_10bit,6); //PTC0
48 AD_valu[1] = ad_ave(ADC1,AD8,ADC_10bit,6); //PTC1
49 AD_valu[2] = ad_ave(ADC1,AD15,ADC_10bit,6); //PTE25
50 AD_valu[3] = ad_ave(ADC1,AD11,ADC_10bit,6); //PTE24
51 AD_valu[4] = ad_ave(ADC1,AD13,ADC_10bit,6); //PTE24
AD ,
ad_ave(ADC1,AD9,ADC_10bit,6) 6
:
52 for(j=0;j<5;j++)
53 {
54 if(AD_valu[j] > max_v[j])
55 {
56 max_v[j] = AD_valu[j];
57 if(j==0) Position_transit_short[0] = AD_valu[1]; //
58 if(j==2) Position_transit_short[1] = AD_valu[1];
59 if(j==3) Position_transit_short[2] = AD_valu[4];
60 if(j==4) Position_transit_short[3] = AD_valu[3];
61 }
62 }
:1200 , , , AD_valu[0] max_v[0], if(j==0) Position_transit_short[0] = AD_valu[1]; 0 1 AD_valu[1] Position_transit_short[0]; Position_transit_short[0] , , , 。
225 for(i=0;i<3;i++) //
226 {
227 if(AD[max_front])
228 max_front=i;
229 }
230 max_value=AD[max_front];
231
232 max_back = (AD[3]>AD[4])? 3:4; //
, ( , )
:
250 /**************** ************************/
251 if(max_front==0 && (AD[1] <= Position_transit[0] - 1)) // 0 63 0 1
252 {
253 position=0;
254 }
255 else if((max_front==0 && (AD[1] > Position_transit[0] + 1)) || (max_front==1 && (AD[0] - AD[2]) > 1)) // 0-1
256 {
257 position=1;
258 AD_0_max = AD[0]; // 3
259 } 260 else if((max_front==1 && (AD[2] - AD[0]) > 1) || (max_front==2 && (AD[1] > Position_transit[1] + 1))) // 1-2 261 { 262 position=2; 263 AD_2_max = AD[2]; // 3 264 } 265 else if(max_front==2 && (AD[1] <= Position_transit[1] - 1)) // 3 70 3 2 266 { 267 position = 3; 268 }
position , ,0,1,2 4 ,
position=0;
position=1;
position=2;
position=3;
4
if(max_front==0 && (AD[1] <= Position_transit[0] - 1))
max_front==0 3 0 ( [ 0 ]),(AD[1] <= Position_transit[0] - 1) 1 , 1 , 0 ( , ),
position=0;
else if((max_front==0 && (AD[1] > Position_transit[0] + 1)) || (max_front==1 && (AD[0] - AD[2]) > 1))
(max_front==0 && (AD[1] > Position_transit[0] + 1))
(max_front==1 && (AD[0] - AD[2]) > 1 ( ) , ,1 ,0 2 , 0~1 。
, 。
, , , , ( , ), 。
転載先:https://www.cnblogs.com/roc-wwp/p/4848136.html