小車轉(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; }
打開角度環(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文章
9088瀏覽量
146384 -
PID
+關(guān)注
關(guān)注
35文章
1473瀏覽量
85825 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98204
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ARM開發(fā)板與樹莓派的比較
自適應(yīng)藍(lán)牙控制智能小車
授人以漁,24電賽H題完賽資料開源,思想開源-(1)硬件講解
![授人以漁,24<b class='flag-5'>電</b><b class='flag-5'>賽</b>H<b class='flag-5'>題</b>完<b class='flag-5'>賽</b>資料開源,思想開源-(1)硬件講解](https://file1.elecfans.com//web2/M00/06/B9/wKgaombeyZGAJSyCAABK7nJzQNA95.webp)
PY32F002A單片機(jī)開發(fā)板 PY32F002AF15P6開發(fā)板 32位MCU,M0+內(nèi)核
![PY32<b class='flag-5'>F</b>002A單片機(jī)<b class='flag-5'>開發(fā)板</b> PY32<b class='flag-5'>F</b>002AF15P6<b class='flag-5'>開發(fā)板</b> 32位MCU,M0+內(nèi)核](https://file1.elecfans.com//web2/M00/05/14/wKgZombWr56AONF1AAKjvai7Xtk000.jpg)
樹莓派和arm開發(fā)板的區(qū)別
linux開發(fā)板與樹莓派的區(qū)別
19.3-星曈科技 openmv Hopenmv發(fā)送五個(gè)uchar Openmv+STM32F103C8T6視覺(jué)巡線小車 STM32循跡小車系列教程
![19.3-星曈科技 openmv Hopenmv發(fā)送五個(gè)uchar Openmv+STM32<b class='flag-5'>F</b>103C8T6視覺(jué)巡線<b class='flag-5'>小車</b> STM32循跡<b class='flag-5'>小車</b>系列教程](https://file1.elecfans.com/web2/M00/03/DF/wKgaoma-11WAeNKnAARmh75k2yc492.png)
19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺(jué)巡線小車
![19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與<b class='flag-5'>小車</b>控制 Openmv+STM32<b class='flag-5'>F</b>103C8T6視覺(jué)巡線<b class='flag-5'>小車</b>](https://file1.elecfans.com/web2/M00/03/DF/wKgaoma-16iAactHAAL5m8eVl1M471.png)
【核桃派ZeroW開發(fā)板體驗(yàn)連載】核桃派ZeroW開發(fā)板拆箱、組裝、上電,
【Vision Board創(chuàng)客營(yíng)連載體驗(yàn)】基于RA8D1-Vision Board的自動(dòng)路徑規(guī)劃小車
【項(xiàng)目展示】基于CW32的遙控循跡小車
![【項(xiàng)目展示】基于CW32的遙控循跡<b class='flag-5'>小車</b>](https://file1.elecfans.com//web2/M00/EA/AA/wKgZomZZmU-AaDmZAADtIBlrbLs17.webp)
AGV小車升降平臺(tái)控制板
![AGV<b class='flag-5'>小車</b>升降平臺(tái)控制<b class='flag-5'>板</b>](https://file1.elecfans.com/web2/M00/E5/30/wKgaomY_LFGAJpJ0AAfuvDqZQ3U702.jpg)
評(píng)論