當前位置: 華文星空 > 知識

Moco

2021-02-12知識

Moco-Minitaur LTS(Moco-ML)機器人的設計目的是建立一個支持力控的桌面級無刷四足機器人平台,其需要具有低成本、結構簡單、電氣安全、擴充套件性高的特點,作為研究機器人基本控制演算法和作為一個小型SLAM底盤平台,因此以8自由度支接驅腿作為主要結構,采用現成的開源驅動器和微控制器來保證低成本,相比Doggo等國外開源平台來說更加符合國內開發者的使用習慣。

(1)硬體框架設計

Moco-ML機器人參考Minitaur 的設計方案使用8個無刷直驅電機作為動力單元,此外機器人還包括主控制器、驅動器節點、電池控制節點、感知視覺處理器節點、無線遙控節點,參考Doggo和MIT機器人的硬體設計Moco-ML機器人的硬體架構修改部份如下圖所示:

對標Minitaur 機器人幾個關鍵的指標,設計中考慮機器人供電輸入相容24~48V,同時為安全保護相比Doggo增加了無線遠端上電模組,在驅動部份采用ODrive作為驅動器,其目前在國內加工比較成熟價格也比較低,最後遙控采用傳統的PS2遙控和SBUS航模遙控介面來實作,另外Doggo采用Arduino作為控制器其運算能力和開發方式相比STM32F4來說較差,影像處理器方面仍然可以采用ODroid或者樹莓派,另外也可以采用Jetson系列的處理器。

在Doggo機器人的設計中各驅動器與主控制器通訊采用串口以5Mbps的波特率進行通訊,參考Minitaur 其采用乙太網路作為通訊介面,考慮使用MIT方案中以STM32擴充套件CAN口的方式,各驅動器上需增加一個CAN節點模組以串口與ODrive通訊比最終以CAN完成和主控制器的通訊。

(2)軟體框架設計

對於軟體框架設計,在主控制器中為保證控制演算法的即時性和資源分配有效性首先采用嵌入式或即時作業系統,目前常用的有UCOSIII和Free-RTOS,另外對於以樹莓派等Linux單板為主控的系統中也需要安裝RT即時補打。主控制器首先需要采集典型的傳感器數據,如IMU、GPS,透過CAN接收驅動器的編碼器角度、電機電流數據作為力和運動學的反饋,同時相比Doggo采用的發送位置控制模式,要實作真正的力控需要下發電流和力矩命令,因此控制器中在底層還需要完成對電機位置和力的閉環控制。

主控與樹莓派通訊部份可以采用SPI或者串口實作,其中主要傳遞的數據是機器人本體層的狀態估計以及控制命令,樹莓派中以ROS作為軟體載體構建機器人控制節點釋出傳感器等數據,並將其他SLAM和影像以及規劃的控制結果下發到機器人中實作自動導航,這裏參考高通驍龍的軟體架構修改如下:

如上圖所示為高通驍龍通用機器人RB5的軟體框架,頂層為其核心處理器由於其采用客製高效能SoC因此將控制和感知都整合在單一芯片中,Moco-ML則采用兩種方案來替代 :

(A)微控制器主控+Linux單板主控:即采用類似Px4飛控或RobotMaster的方案,使用一個微控制器主控器來完成所有傳感器采集和運動控制計算,實作機器人本體步態控制,使用一個如Jetson或樹莓派的Linux處理器完成感知影像處理,基於ROS構建一個完整的底盤軟體框架;

(B)樹莓派微控制器主控+Linux單板主控:上面那個方案受限於微控制器算力對於復雜步態執行時可能無法保證穩定的控制周期,同時也無法套用如QP等最佳化庫,但基於微控制器和Keil開發能較快的叠代程式碼,這個方案類似MIT只不過使用樹莓派作為運動控制運算,在打上RT即時修補程式後保證程式碼的即時性,透過SPI或串口以高速與微控制器通訊並將控制命令轉換為CAN發送出去,微控制器即實作一個CAN轉接載板和傳感器采集板。透過交叉編譯技術能快速完成程式碼編譯下載;

對於軟體功能支持上,參考開源飛控和高通驍龍的軟體架構,Moco-ML最終的計畫希望完成支持多類機器人的運動控制、視覺導航感知以及AI智慧體部署,硬體上框架能相容多種常用視覺、雷射雷達、IMU和GPS傳感器,具有標準的視覺導航和ROS SLAM導航API,能支持常用的視訊、音訊流輸入輸出,並提供類似SpotMini一樣完善的多語意使用者SDK,實作ROS、C++下的機器人底盤模式控制和底層力矩控制,最終面向典型的套用場景提供自動巡線、目標跟蹤、航點跟蹤以及自主任務的使用者級套用APP Demo。

(3) 控制框架設計

在Doggo中其控制類似舵狗主要采用位置控制實作,控制器透過IMU反饋計算各腿腿長進一步透過運動學算出兩個並聯電機的角度並透過串口發送到ODrive中,ODrive中以10Khz完成角度閉環控制,該方法沒有實作力控,步態相序也很簡單沒有真實的著地估計和力反饋估計,而對於MIT等力控機器人來說其發送給執行器的是力矩訊號,透過控制足底GRF力來實作穩定控制,相比上面的方法其動態效能、響應效能都高很多,力控也是本開發平台希望研究的目標,因此參考MIT的力控設計方法對Doggo和MOCO舵狗控制框架修改如下:

如上圖所示,Doggo等位置控制的無刷四足機器人的基本控制方法與舵狗一致,主要還是規劃足端運動軌跡,這也造成了首先需要關節具有較高的剛度否則無法站立,因此Doggo角關節角度控制放在了驅動器環節中,因為其控制10Kz頻寬較高能大大提高PD控制的剛度,本體上構建了一個100Hz類似PID的反饋控制器來動態調節腿長,這樣方案在平地和簡單地形中還行但是想實作Minitaur 視訊中在亂石堆裏的穩定移動沒有力和柔順控制是無法實作的。

在我原生的Moco-8和Moco-12舵狗控制框架中雖然最終的控制輸出仍然是關節角度,但其實作反饋控制率中是對角度增量即角速度進行控制,采用了MIT Little Dog的逆雅各比運動學控制思路我采用了一種「偽力控」的方案,即力控制加速度、偽力控控制速度,從而相比傳統的逆運動學方案響應高,控制框架也更接近VMC等力控思路,即首先構建一個虛擬模型完成Raibert的三通道解耦控制,進一步將虛擬控制量向支持腿分配,具體理論可以參考我之前的知乎:

最終,總結一下基於如SimpleFOC、ODrive等伺服驅動器實作的位置控制四足機器人的優缺點如下:

(1)具有角度反饋(優點):類似匯流排舵機能實作角度的回度,因此可以構建簡單的角度剛度控制,提供一定的柔順性;

(2)控制頻寬高(優點):由於采用CAN或Uart相比PWM或匯流排舵機的控制頻寬高很多,控制精度也高;

(3)無法實作力控(缺點):由於不是力控,支持重機架時需要保證較高的關節增益,而無負載時其是否容易抖動發散,因此需要底層具有很高的控制頻率,因此只能在驅動器FOC環中進行位置控制,無法透過主控通訊控制電流;

(4)無法估計力(缺點):對於ODrive來說其可以反饋Iq軸的電流因此可以用於估計實際的足地力GRF,而對於SimpleFOC來說由於其早期版本采用電壓開環力矩控制因此,導致無法估計真實的負載力矩,另外由於其功率較低因此需要較大的減速比來保證扭矩,最終的驅動器還是會變成像舵機一樣不易於自己加工、齒輪間隙、減速滯後等問題;

Moco-ML計畫希望透過2~3個月9篇教程的內容帶大家從基礎機器人設計到完成四足機器人底盤組裝,最終實作:

(1)一個完全支持1Khz力矩控制和足底力估計的機器人平台

(2)一個成本<5000RMB的機器人平台

(3)一個完整的CAN匯流排通訊和單腿力控Demo

(4) 一個完善的主控、上位機和伺服驅動軟硬體框架

如果你感興趣請關註我的知乎和B站,並加入QQ群追蹤每次資料和教程的更新:

下周將更新機器人 驅動單元、電機和單腿 的設計的內容,記得來看哦,你的贊賞就是我持續更新的動力!