小車轉(zhuǎn)向的調(diào)試與實(shí)現(xiàn)
怎么實(shí)現(xiàn)小車的90度轉(zhuǎn)向?
首先,在09_國(guó)產(chǎn)IMU移植及姿態(tài)解算.md里面我們可以獲取到小車的姿態(tài)信息,對(duì)應(yīng)的轉(zhuǎn)向信息就是Yaw(偏航角)。
而在08_直流減速電機(jī)PID速度環(huán)與位置環(huán)調(diào)試中我們也可以準(zhǔn)確控制小車輪子的轉(zhuǎn)速和轉(zhuǎn)多少個(gè)脈沖(也就是轉(zhuǎn)幾圈)了。
這樣實(shí)現(xiàn)小車的轉(zhuǎn)向就有了兩種方案了。一種是用Yaw(偏航角)作為測(cè)量值,想要轉(zhuǎn)的角度作為目標(biāo)值,用PID驅(qū)動(dòng)小車以一定的速度去旋轉(zhuǎn)來(lái)達(dá)到目標(biāo)值。
第二種是在實(shí)現(xiàn)小車輪子位置環(huán)的基礎(chǔ)上,控制兩邊輪子同時(shí)向不同的方向旋轉(zhuǎn)一定的圈數(shù)(編碼器脈沖),在小車輪子不打滑的情況下轉(zhuǎn)過(guò)的角度就是一個(gè)確定的值,在送藥小車的地圖中,旋轉(zhuǎn)基本都是90度的,所以這種實(shí)現(xiàn)方法會(huì)很簡(jiǎn)單也容易調(diào)試。
用角度環(huán)實(shí)現(xiàn)90度轉(zhuǎn)向
在pid_thread.c中實(shí)現(xiàn):
創(chuàng)建相應(yīng)的PID控制參數(shù)的結(jié)構(gòu)體:
positional_pid_params_t car_angle_ring_pid;
初始化控制結(jié)構(gòu)體并修改kp ki kd:
//角度環(huán)配置 //角度環(huán) pid 參數(shù)初始化 positional_pid_init(&car_angle_ring_pid, 0.015, 0, 0, 0.1, 2, -2); //修改 角度環(huán) kp ki kd car_angle_ring_pid.positional_pid_set_value(&car_angle_ring_pid, 0.015, 0, 0);
在PID的軟件定時(shí)器回調(diào)函數(shù)中計(jì)算兩個(gè)輪子需要的速度:
// 小車角度環(huán) if (car_angle_ring_enable_flag == 1) { static float error = 0; error = turn_target - fusion_data.euler.euler.yaw; // 處理角度突變 if (error > 180.0f) error -= 360.0f; else if (error < -180.0f) error += 360.0f; angle_ring_speed_target = positional_pid_compute( &car_angle_ring_pid, error, fusion_data.euler.euler.yaw); } else { turn_target = fusion_data.euler.euler.yaw; angle_ring_speed_target = 0; }
打開(kāi)角度環(huán)后他就會(huì)保持Yaw為0,如下面這個(gè)圖一樣:
下面是設(shè)定他靠角度換旋轉(zhuǎn)90度的效果:
用位置環(huán)實(shí)現(xiàn)90度轉(zhuǎn)向
還是在pid_thread.c中實(shí)現(xiàn):
在08_直流減速電機(jī)PID速度環(huán)與位置環(huán)調(diào)試已經(jīng)可以讓輪子轉(zhuǎn)固定的脈沖(圈數(shù))了,直接把對(duì)應(yīng)的目標(biāo)值加給電機(jī)1和電機(jī)2的位置目標(biāo)就可以了。
// 位置式旋轉(zhuǎn),負(fù)數(shù)左轉(zhuǎn),正數(shù)右轉(zhuǎn)。 void car_spin_position(int32_t _position_target) { motor1_position_target += -_position_target; motor2_position_target -= _position_target; }
在實(shí)際實(shí)現(xiàn)中,如下面的gif圖所示:
審核編輯 黃宇
-
電機(jī)
+關(guān)注
關(guān)注
142文章
8884瀏覽量
144896 -
PID
+關(guān)注
關(guān)注
35文章
1470瀏覽量
85217 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4913瀏覽量
97086
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論