以下內(nèi)容來自嘉賓分享,不代表開放原子開源基金會觀點此次為大家?guī)淼氖荗penAtom OpenHarmony(以下簡稱“OpenHarmony”)系統(tǒng)與PID控制算法相結合并落地的平衡車項目。PID控制算法是一種經(jīng)典的,并被廣泛應用在控制領域的算法。類似于這種:需要將某一個物理量保持穩(wěn)定的場合,比如維持平衡,穩(wěn)定溫度、轉速等,PID都會適用。在四軸飛行器,平衡小車、汽車定速巡航、溫度控制器等場景均有應用。通過本樣例的學習,開發(fā)者能夠?qū)penHarmony系統(tǒng)設備端開發(fā)有進一步的認識,還能夠掌握PID控制算法的使用。本樣例使用OpenHarmony 3.2 Beta1操作系統(tǒng),硬件平臺采用小熊派BearPi-HM Nano(Hi3861)開發(fā)板。主控CPU:小熊派BearPi-HM Nano(Hi3861)開發(fā)板;小車平臺及結構件資源可以自行在相關網(wǎng)站獲得。小時候都玩過上圖游戲吧:木桿立在手指上,盡量保持木桿直立不倒。當木桿向前傾斜時,我們會往前行走,以用來抵消木桿的前傾;往后傾斜時,我們會往后倒退。對的!沒錯!你猜對了。平衡車的控制原理就是這樣:平衡車的控制離不開對PID算法的應用。那么什么是PID算法?它能解決什么問題?PID算法:就是“比例(proportional)、積分(integral)、微分(derivative)”,是一種常見的“保持穩(wěn)定”控制算法。P比例參數(shù):該參數(shù)能夠快速讓小車達到平衡狀態(tài),但是由于控制是滯后的,以及是慣性系統(tǒng),容易帶來超調(diào),即小車會出現(xiàn)前后搖擺的現(xiàn)象。所以P參數(shù)不能太大;I積分參數(shù):小車由于摩擦力或者風阻力,并且P不能太大,只靠P控制有可能達不到穩(wěn)定狀態(tài),所以需要加入I積分參數(shù),消除穩(wěn)態(tài)誤差;D微分參數(shù):平衡小車維持的是傾斜角度要為平衡角度,由于PI參數(shù)使小車振蕩,小車會出現(xiàn)前后搖擺現(xiàn)象,加入D微分參數(shù)能夠消除小車的振蕩。在OpenHarmony源碼基礎上,兩步構建平衡小車代碼。(OpenHarmony源碼下載路徑及BearPi-HM Nano(Hi3861)開發(fā)板代碼燒錄,請參考文章末尾相關鏈接)拷貝Balance_car文件夾到源碼路徑下:deviceoardearpiearpi_hm_nanoapp (Balance_car文件獲取路徑,請參考文章末尾相關鏈接)修改BUILD.gn,在源碼路徑下:deviceoardearpiearpi_hm_nanoappBUILD.gn添加編譯依賴:"Balance_car:balance_car",如下圖:兩輪平衡車的控制主要涉及三個PID環(huán)的串聯(lián)使用,它們分別是直立環(huán)(平衡控制)、速度環(huán)(速度控制)、轉向環(huán)(方向控制)。三個控制效果合成,控制輪子運行。直立環(huán)控制算法是平衡小車維持平衡的主要算法。直立環(huán)采用了PD算法環(huán)節(jié),即只有比例與微分環(huán)節(jié)。傾斜角度大小以及角加速度大小決定了輪子的速度大小??梢岳斫鉃閮A斜角度越大,控制輪子順著傾斜的方向的速度越大;傾斜的角加速度越大,控制輪子速度也要越大。float g_middleAngle = 1.0;//平衡角度
float g_kpBalance = -85800.0;
float g_kdBalance = -400;
static int ControlBalance(float angle, short gyro)
{
int outpwm = 0;
float angleBias = 0.0;
float gyroBias = 0.0;
float tempAngle = 0.0;
float tempGyro = 0.0;
tempAngle = 0 - angle;//極性控制
tempGyro = 0 - gyro;
angleBias = g_middleAngle - tempAngle;
gyroBias = 0 - tempGyro;
outpwm = (g_kpBalance / 100 * angleBias + g_kdBalance
* gyroBias / 100);
return outpwm;
}
速度環(huán)控制的目的是讓機器以恒定速度前進或后退,該恒定速度可以為0速度,即要讓平衡車靜止。速度環(huán)采用了PI環(huán)控制,只有比例與積分環(huán)節(jié)。float g_kpSpeed = 95800.0;
float g_kiSpeed = 200;
static int ControlSpeed(long int left, long int right)
{
int outpwm = 0;
int speedBias = 0;
int speedBiasLowpass = 0;
static int speed_i = 0;
float a = 0.68;
static int speedBiasLast = 0;
speedBias = 0 - left - right;
speedBiasLowpass = (1 - a) * speedBias
+ a * speedBiasLast;
speedBiasLast = speedBiasLowpass;
speed_i += speedBiasLowpass;
speed_i = limit_data(speed_i, SPEED_H, SPEED_L);
outpwm = (g_kpSpeed * speedBiasLowpass / 100 +
gkiSpeed * speed_i / 100);
return outpwm;
}
轉向環(huán)的目的是控制小車以恒定速度轉向。在本次場景為了控制小車平衡靜止,所以只做了限制轉向的操作。static int ControlTurn(short gyro)
{
int outpwm;
outpwm = g_kpTurn * gyro;
return outpwm;
}
以上詳細代碼,請參考文章末尾的相關鏈接(Balance_car文件獲取路徑)。本文呈現(xiàn)了兩輪平衡小車的大致原理。簡單介紹了一下PID算法的效果:P比例參數(shù),能夠快速讓系統(tǒng)達到穩(wěn)定值,但是P太大容易超調(diào),帶來振蕩;I積分參數(shù),消除穩(wěn)態(tài)誤差,讓系統(tǒng)達到穩(wěn)定值;D積分參數(shù),能消除振蕩,但是會使系統(tǒng)時效性變慢。開發(fā)者可以根據(jù)現(xiàn)場情況,合理調(diào)節(jié)PID三個參數(shù)。本樣例是OpenHarmony知識體系工作組(相關鏈接在文章末尾)為廣大開發(fā)者分享的樣例。同時知識體系工作組結合日常生活,給開發(fā)者規(guī)劃了各種場景的Demo樣例,如智能家居場景、影音娛樂場景、運動健康場景等;歡迎廣大開發(fā)者一同參與OpenHarmony的開發(fā),更加完善樣例,相互學習,相互進步。https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md
https://gitee.com/openharmony-sig/vendor_oh_fun
BearPi-HM Nano(Hi3861)開發(fā)板代碼燒錄參考鏈接:https://gitee.com/bearpi/bearpi-hm_nano/tree/master/applications/BearPi/BearPi-HM_Nano/docs/quick-start
OpenHarmony知識體系共建開發(fā)倉:https://gitee.com/openharmony-sig/knowledge/blob/master/docs/co-construct_demos/README_zh.md
https://growing.openharmony.cn/mainPlay/learnPathMaps?id=19
OpenHarmony知識體系工作組智慧家居開發(fā)樣例https://gitee.com/openharmony-sig/knowledge_demo_smart_home
原文標題:玩轉OpenHarmony PID:教你打造兩輪平衡車
文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
原文標題:玩轉OpenHarmony PID:教你打造兩輪平衡車
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
相關推薦
集團在相關技術領域的專利優(yōu)勢,結合自身在智能兩輪電動車領域的深厚技術積累和創(chuàng)新實力,共同開發(fā)生產(chǎn)具備自主產(chǎn)權的創(chuàng)新型電動兩輪車。這些新型車輛將不僅擁有九號公司一貫的高品質(zhì)和智能化特點,
發(fā)表于 11-21 14:10
?332次閱讀
電動兩輪車已經(jīng)成了中國人的出行神器,輕巧便捷,即停即走,接娃買菜輕松拿捏,讓高油價和停車難不再是事。截至2023年底,中國電動兩輪車市場擁有4.2億輛的保有量,幾乎每四人就有一輛,且市場仍未見頂。據(jù)預測,隨著2023年新國標修訂
發(fā)表于 11-15 15:59
?270次閱讀
電子發(fā)燒友網(wǎng)站提供《兩輪電動車系統(tǒng)介紹與THVD8000在兩輪電動車上的應用.pdf》資料免費下載
發(fā)表于 09-27 11:12
?0次下載
隨著城市交通擁堵問題的加劇和環(huán)保意識的提升,兩輪電動車成為越來越多人的首選出行工具。作為其核心部件,電池的性能和安全性直接影響到兩輪電動車的整體使用體驗。為了提升電池管理系統(tǒng)的智能化水
發(fā)表于 09-14 16:56
?1566次閱讀
電子發(fā)燒友網(wǎng)站提供《常見的電動兩輪車BMS架構應用說明.pdf》資料免費下載
發(fā)表于 09-12 09:28
?0次下載
在現(xiàn)代生活中,智能科技已深入我們的每一個角落,比如在電動兩輪車領域,傳統(tǒng)鑰匙總是容易遺忘或丟失,給用戶帶來諸多不便,藍牙車鑰匙應運而生,則徹底解決了這一問題。只需在手機上安裝相關應用程序,通過藍牙
發(fā)表于 06-25 14:06
?616次閱讀
自2021年3月起,魯大師已經(jīng)連續(xù)兩年發(fā)布涵蓋了電動自行車、輕便電動摩托、中高端電動摩托等品類的《電動兩輪車行業(yè)報告》。如今,在持續(xù)進軍兩輪電動車評測的基礎上,通過線上線下多維度深入調(diào)
發(fā)表于 05-15 10:08
?345次閱讀
兩輪電動車遙控解鎖方案
發(fā)表于 05-09 09:33
?1269次閱讀
近幾年來,隨著科學技術的不斷進步,兩輪車的市場銷售量也在連續(xù)不斷的向上增長。產(chǎn)品性能、智能也有了一個很大的突破,預示著傳統(tǒng)的機械式、指針式儀表在逐漸淘汰。在此基礎上,為了使人們出行更方便,一些敏銳
發(fā)表于 04-28 14:17
?1030次閱讀
電動兩輪車作為一種非常常用的交通工具,它非常實用、穩(wěn)定、可靠,在我們短距離通行上面起到了關鍵作用。
發(fā)表于 04-19 11:41
?1574次閱讀
在第二屆鈉電池產(chǎn)業(yè)峰會上,比亞迪公司的弗迪電池產(chǎn)品線總監(jiān)張劍帶來了一項重磅消息。他透露,比亞迪計劃于6月在深圳開始一項劃時代的試點項目:實現(xiàn)大圓柱鈉離子電池在電動兩輪車領域的充換電綜合應用。這不
發(fā)表于 04-08 16:17
?550次閱讀
電動兩輪車是目前主流、廣泛普及的出行方式,主要分為如下三類:電動自行車、電動輕便摩托車和電動摩托車。
發(fā)表于 04-08 11:25
?569次閱讀
隨著城市化進程的加快、人們生活水平的提高和節(jié)能環(huán)保理念的普及,越來越多的人選擇了電動車作為代步工具,而兩輪電動車的出行半徑較短,需要頻繁充電,因此在城市中設置兩輪
發(fā)表于 03-06 15:10
長期存在電動車亂停亂充的消防隱患?!陙?,我國兩輪電動車市場快速增長。截至2022年末,兩輪電動車保有量已達3.5億輛,與此同時,電動車
發(fā)表于 03-05 08:17
?349次閱讀
2月25日,比亞迪旗下弗迪電池表示,經(jīng)探討決定,弗迪電池將把乘用車的研發(fā)成果應用到兩輪車領域,加大兩輪車電池的研發(fā)投入,協(xié)同各方正能量,開發(fā)出更安全的電池。
發(fā)表于 02-26 14:46
?1258次閱讀
評論