說(shuō)起人工智能機(jī)器人界的網(wǎng)紅,那就不得不提到——“機(jī)器狗”。此前,著名機(jī)器人公司波士頓動(dòng)力制造的“Spot”機(jī)器狗、國(guó)內(nèi)知名科技企業(yè)蔚藍(lán)科技自主設(shè)計(jì)研發(fā)的“阿爾法”機(jī)器狗、小米仿生四足機(jī)器人“CyberDog”都曾火爆全網(wǎng)。
機(jī)器狗的開(kāi)發(fā)需要硬件、軟件及運(yùn)動(dòng)行為三者達(dá)到協(xié)調(diào),并不是一件容易的事,而在傳智教育舉辦的《仿生機(jī)器狗訓(xùn)練營(yíng)》中,特等獎(jiǎng)獲得者劉瀟翔脫穎而出,他從0-1打造了一個(gè)基于OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony”)系統(tǒng)的機(jī)器狗,并將在本文中帶來(lái)一些開(kāi)發(fā)過(guò)程中的心得體會(huì)分享。
個(gè)人介紹
大家好,我是劉瀟翔,現(xiàn)就讀于南方科技大學(xué)(Southern University of Science and Technology)研一,修讀的專業(yè)是智能制造與機(jī)器人。
開(kāi)發(fā)項(xiàng)目簡(jiǎn)介
在這次訓(xùn)練營(yíng)中,我從機(jī)械結(jié)構(gòu)、電控硬件、控制算法、上位機(jī)等四個(gè)方面設(shè)計(jì)并制作了一款基于傳智教育Hi3861 IoT WiFi模組主控,擁有十二自由度的桌面級(jí)四足機(jī)器狗—Puppy。
已經(jīng)合倉(cāng)的代碼鏈接:https://gitee.com/openharmony-sig/contest/tree/master/2022_itcast_LCEDA_OpenHarmony_camp/Harmony%20Puppy
OpenHarmony學(xué)習(xí)過(guò)程
我第一次接觸到嵌入式開(kāi)發(fā),還是在傳智教育舉辦的物聯(lián)網(wǎng)實(shí)戰(zhàn)——智能開(kāi)關(guān)訓(xùn)練營(yíng)中。在此之前我對(duì)OpenHarmony系統(tǒng)了解不是很多,以為僅是運(yùn)行在移動(dòng)端與PC端的系統(tǒng),但我還是對(duì)其充滿好奇,畢竟這是為了打破技術(shù)封鎖自主研發(fā)的系統(tǒng)。所以我也想了解OpenHarmony嵌入式開(kāi)發(fā),與常見(jiàn)的單片機(jī)STM32、ESP32、ATmega328P這些MCU的開(kāi)發(fā)有什么區(qū)別。
傳智教育旗下的Hi3861 IoT WiFi模組主芯片為海思Hi3861V100,擁有完整的WiFi功能,支持采用Micropython或C語(yǔ)言開(kāi)發(fā)。由于OpenHarmony的生態(tài)相比其他一些主流單片機(jī),還比較單薄,所以輔助開(kāi)發(fā)的相關(guān)資料搜集起來(lái)相對(duì)費(fèi)力些。我總結(jié)了一下個(gè)人的學(xué)習(xí)流程,大致如下:
學(xué)習(xí)流程:
(1)搜尋并下載不熟悉芯片的硬件數(shù)據(jù)手冊(cè);
(2)參考在Gitee上開(kāi)源的有關(guān)嵌入式的項(xiàng)目代碼及文檔;
(3)參考OpenHarmony開(kāi)發(fā)者社區(qū)交流帖;
(4)通過(guò)各種搜索引擎(百度、搜狗、Microsoft Bing等)查找相關(guān)文章;
(5)去Bilibili搜索相關(guān)內(nèi)容,碰碰運(yùn)氣;
(6)QQ群,碰碰運(yùn)氣;
(7)以上如果均未得到有效解決方案,根據(jù)已有資料,自己研究解決。
接觸OpenHarmony最大的驚喜和具體的收獲
要數(shù)接觸OpenHarmony最大的驚喜,我認(rèn)為應(yīng)該是在官方提供的如何采用C語(yǔ)言開(kāi)發(fā)的教學(xué)中提供了一種通過(guò)SSH實(shí)現(xiàn)在WIN10系統(tǒng)內(nèi)編輯,在虛擬機(jī)Ubuntu系統(tǒng)里編譯的方法,這個(gè)方法對(duì)我提供了不小的幫助。
其他驚喜與收獲:
(1)傳智教育Hi3861 IoT WiFi物聯(lián)網(wǎng)模組的封裝十分精致小巧,該Hi3861模組支持FreeRTOS系統(tǒng),且支持用Micropython、C語(yǔ)言開(kāi)發(fā);
(2)初步了解OpenHarmony嵌入式開(kāi)發(fā)的基本流程,并實(shí)現(xiàn)了個(gè)人需求的相應(yīng)效果。
對(duì)于OpenHarmony系統(tǒng)的建議
(1)用來(lái)燒錄程序的Hiburn軟件無(wú)法保存偏好設(shè)置,UI設(shè)計(jì)及操作界面也有些不夠清晰。比如,每次打開(kāi)都要手動(dòng)把燒錄程序波特率115200調(diào)到921600;
(2)用來(lái)開(kāi)發(fā)傳智教育Hi3861物聯(lián)網(wǎng)模組的一些基本工具庫(kù)需要完善。比如,IIC通信、SPI通信、OLED屏幕、TFT屏幕、MPU6050傳感器等常用模塊的驅(qū)動(dòng);
(3)傳智教育Hi3861模組在Linux環(huán)境下編譯調(diào)試時(shí),不方便找到報(bào)錯(cuò)信息。
項(xiàng)目技術(shù)過(guò)程分享
(1)機(jī)械結(jié)構(gòu)部分采用SolidWorks 2020設(shè)計(jì),通過(guò)FDM式3D打印制造。其主要設(shè)計(jì)內(nèi)容包括軀體與單腿。單腿機(jī)構(gòu)采用平面四連桿構(gòu)成并聯(lián)腿,擁有3自由度,設(shè)計(jì)思路是盡量減輕腿部重量,并且使三個(gè)電機(jī)安裝的位置緊湊集中。軀體采用模塊分立結(jié)構(gòu)設(shè)計(jì),方便維護(hù)更換及升級(jí);
(2)電控硬件部分采用立創(chuàng)EDA專業(yè)版設(shè)計(jì)。關(guān)于12路舵機(jī)驅(qū)動(dòng)主要由PCA9685PW管理,Hi3861物聯(lián)網(wǎng)模組主控,供電部分采用了一個(gè)DC-DC BUCK型降路壓電路,支持最大電流6A,保證電機(jī)及控制電路供電充足;
(3)軟件部分采用Clion作為編輯器,linux環(huán)境下編譯。在實(shí)現(xiàn)主單腿正逆解、足端擺線軌跡規(guī)劃的基礎(chǔ)上,實(shí)現(xiàn)了四足機(jī)器狗的Trot小跑步態(tài)運(yùn)動(dòng),姿態(tài)逆解控制等;
(4)機(jī)器人的遠(yuǎn)程控制App基于Android開(kāi)發(fā),與四足機(jī)器狗之間采用了UDP協(xié)議實(shí)現(xiàn)無(wú)線通信。
項(xiàng)目過(guò)程中遇到的困難&解決辦法
困難:
Hi3861模組焊接完成后,按EN復(fù)位,串口輸出為亂碼。
檢測(cè)結(jié)果:
(1)拆除WS2812B燈珠后,串口即能輸出正常信息;
(2)拔下MPU6050模塊后,串口即能輸出正常信息。
解決方案:
(1)拆去連接IO2引腳的WS2812B燈珠;
(2)拔下連接IO7、IO8引腳的MPU6050模塊。
疑似原因:
Hi3861模組燒錄時(shí),特定引腳不能外接設(shè)備。
當(dāng)我一開(kāi)始發(fā)現(xiàn)輸出亂碼,慣性上會(huì)首先思考MCU的焊接是否良好、串口通訊的電路是否正常、芯片供電是否正常、EN按鍵是否正常等問(wèn)題。后來(lái)能順利解決問(wèn)題也是在檢查上面所有問(wèn)題后歪打正著,意外拆掉那顆WS2812燈珠后才發(fā)現(xiàn)復(fù)位正常了。
項(xiàng)目開(kāi)發(fā)過(guò)程最重要或最值得分享的心得
(1)開(kāi)發(fā)過(guò)程中卡殼,先檢查硬件問(wèn)題,再檢查軟件問(wèn)題。
硬件問(wèn)題一般比軟件問(wèn)題更麻煩一些,畢竟可能遇到需要重買材料、重新制板等時(shí)間成本較大的修補(bǔ)措施。
硬件問(wèn)題檢查:一般采用控制變量法把所有的嫌疑因素逐個(gè)排除。比如,先考慮各器件的焊接是否正常(可采用萬(wàn)用表蜂鳴檔檢測(cè))。如果有MCU的電路先檢查MCU及其外圍電路,是否能夠燒錄程序。之后可通過(guò)寫(xiě)各種Demo小程序來(lái)快速測(cè)試其他硬件資源是否正常。
檢查MCU及其外圍電路是否正常,可以先觀察焊接上是否有虛焊,連錫等情況。如果均無(wú)問(wèn)題可接著測(cè)供電電壓是否正常。同時(shí)需注意,用電端燒毀一般是電壓?jiǎn)栴},供電端燒毀一般是電流過(guò)大。
軟件問(wèn)題調(diào)試:如果有報(bào)錯(cuò)信息,就去閱讀報(bào)錯(cuò)信息來(lái)調(diào)試代碼。如果是語(yǔ)法錯(cuò)誤就比較容易解決。如果遇到比如LED驅(qū)動(dòng)不亮,先檢查封裝或LED焊反沒(méi),檢查原理圖上LED是引腳電平拉高還是拉低點(diǎn)亮。如果遇到采用IIC通訊的OLED屏幕無(wú)法點(diǎn)亮,先寫(xiě)簡(jiǎn)單的程序從大到小逐步測(cè)通,比如先使屏幕點(diǎn)亮,再試著點(diǎn)亮一個(gè)點(diǎn),再點(diǎn)亮一條線,畫(huà)出一個(gè)方塊,寫(xiě)下一個(gè)字符。各種功能齊全后再組合調(diào)試出自己想要的效果。
而且單片機(jī)開(kāi)發(fā)調(diào)試時(shí)不應(yīng)該光敲代碼,中間需要穿插燒錄到單片機(jī)看是否能夠?qū)崿F(xiàn)效果。問(wèn)題多的話盡量分階段解決,而不是匯總到最后一起解決,不然很可能會(huì)出現(xiàn)找不到哪里出錯(cuò)的。
(2)優(yōu)質(zhì)的問(wèn)題獲得優(yōu)質(zhì)的回答。
提問(wèn)者要多思考,如何闡述清楚自己的問(wèn)題,考慮是否方便回答者能簡(jiǎn)潔地回答自己的問(wèn)題,比如對(duì)方只用回答是還是不是。
比如自己的代碼編譯報(bào)錯(cuò),如果問(wèn)為什么自己的代碼跑不起來(lái),為什么自己的LED燈不亮了,這無(wú)疑很難獲得自己想要的答案。因?yàn)殚_(kāi)發(fā)的時(shí)候碰到的Bug會(huì)有千萬(wàn)種,但是正確的跑通道路卻只有一條。如果代碼報(bào)錯(cuò),自己首先要去檢查所報(bào)錯(cuò)的代碼段,細(xì)化大概在哪一行出現(xiàn)了問(wèn)題,個(gè)人先去通過(guò)搜索、調(diào)試等手段嘗試能否解決。
雖然有時(shí)太具體的問(wèn)題也不太好回答,比如有人問(wèn)自己想用Hi3861模組開(kāi)發(fā)一款能夠監(jiān)測(cè)室內(nèi)溫濕度并實(shí)現(xiàn)澆水的智能澆花器。這類問(wèn)題涉及的內(nèi)容就比較多,也不好獲得自己想要的回答。調(diào)整一下的話,比如可以在問(wèn)題最后加上,哪款溫濕度傳感器比較推薦,澆水用哪款電機(jī)比較合適等之類細(xì)化一些的問(wèn)題。
(3)做項(xiàng)目,要一邊開(kāi)發(fā)一邊學(xué)習(xí)。
想做一個(gè)項(xiàng)目,不像之前我們所接觸的教育那樣,先把一個(gè)領(lǐng)域全方面熟悉摸透后再去做。畢竟想摸清某個(gè)領(lǐng)域都是很不容易的。要明確知道自己的需求,自己想要實(shí)現(xiàn)什么,大概可以怎么樣去實(shí)現(xiàn),然后再去學(xué)習(xí)。需要用什么去學(xué)什么,需要用多少就學(xué)多少,除非自己對(duì)某方面非常感興趣。這樣才有可能快速地去完成自己的需求和實(shí)現(xiàn)想法。
做項(xiàng)目也是多做才可以更熟練,入門的話可以先跟著資料齊全,文檔清晰的優(yōu)秀開(kāi)源作品復(fù)刻。做了幾個(gè)后,隨后就會(huì)慢慢摸索出自己如果想要實(shí)現(xiàn)新項(xiàng)目的開(kāi)展思路。
接下來(lái)的開(kāi)發(fā)計(jì)劃
(1)完善曾經(jīng)的項(xiàng)目
由于我對(duì)自己之前的一些作品感覺(jué)還有很多不滿意、可以完善的地方,因此我計(jì)劃去優(yōu)化完善曾經(jīng)一些老項(xiàng)目,包括結(jié)構(gòu)設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、項(xiàng)目文檔等;
(2)開(kāi)發(fā)一款電機(jī)調(diào)試器
畢竟我以后的工作很大概率會(huì)和機(jī)器人相關(guān),預(yù)想的功能包括串口調(diào)試、CAN調(diào)試、舵機(jī)調(diào)試、總線舵機(jī)調(diào)試、直流電機(jī)調(diào)試、功率測(cè)量、屏幕顯示、PC端上位機(jī)交互等。
機(jī)器人的發(fā)展前景是一片廣闊無(wú)垠的星辰大海,OpenHarmony也是一樣,期待劉同學(xué)能夠在這兩個(gè)領(lǐng)域同時(shí)不斷深耕,并把它們靈活結(jié)合起來(lái),創(chuàng)作出更多具有生活意義的作品,切實(shí)地影響改善人們的日常生活。
更多熱點(diǎn)文章閱讀
- 最新爆料!RK3588 適配 OpenHarmony 的新進(jìn)展
- 首個(gè)OpenHarmony 5G手機(jī)適配進(jìn)展
- 移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)③
- 移植speexdsp到OpenHarmony標(biāo)準(zhǔn)系統(tǒng)④
-
九聯(lián)科技Unionpi Tiger開(kāi)發(fā)板體驗(yàn):使用串口調(diào)試土壤溫濕度傳感器
提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來(lái)源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。
原文標(biāo)題:基于OpenHarmony的仿生四足狗開(kāi)發(fā)分享
文章出處:【微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
電子發(fā)燒友
+關(guān)注
關(guān)注
33文章
552瀏覽量
33019 -
開(kāi)源社區(qū)
+關(guān)注
關(guān)注
0文章
94瀏覽量
462
原文標(biāo)題:基于OpenHarmony的仿生四足狗開(kāi)發(fā)分享
文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論