陽超偉, 彭 熙,2,3, 張連發(fā),2,3, 陳婉清, 李睿穎, 葉綾明, 胡 雯
(1 華中師范大學(xué) 計算機學(xué)院, 武漢 430079; 2 湖北省高等學(xué)校計算機基礎(chǔ)實驗教學(xué)示范中心, 武漢 430079;3 湖北省人工智能與智慧學(xué)習(xí)重點實驗室, 武漢 430079)
傳統(tǒng)的移動機器人如輪式、履帶式,雖然具有很快的移動速度,但容易受地形約束。 憑借對復(fù)雜與危險地形具有高適應(yīng)性的優(yōu)點,足式機器人已成為當(dāng)今移動機器人的研究熱點,而四足機器人相較于雙足機器人承載能力強、穩(wěn)定性好,同時又比六足、八足等多足機器人結(jié)構(gòu)簡單,因此受到各國研究人員的 普 遍 重 視。 其 中, 最 典 型 的 有Bigdog[1]、HyQ2Max[2]、ANYmal[3]和Cheetah[4]。
本文提出了一種基于樹莓派4B 的四足機器人設(shè)計方法且加以實現(xiàn),并以RPI Camera V2 視覺識別模塊、激光測距傳感器與慣性傳感器為例增強了機器人的環(huán)境感知能力與智能性。
犬類生物的前腿骨主要由掌骨、腕骨、前臂骨(包括尺骨和橈骨)、肱骨和肩胛骨組成,包括了3個關(guān)節(jié):腕關(guān)節(jié)、肘關(guān)節(jié)和肩關(guān)節(jié)。 圖1 為犬類生物的全身骨骼圖[5]。 其中,肱骨是犬類生物大腿部分的支撐骨,小腿部分由前臂骨(尺骨和橈骨)支撐。
圖1 犬類生物的全身骨骼圖Fig. 1 A complete skeleton of a canine
犬類生物的后腿骨主要由跖骨、腓骨、股骨、髖骨、脛骨構(gòu)成,包含了3 個關(guān)節(jié):跗關(guān)節(jié)、膝關(guān)節(jié)和髖關(guān)節(jié)。 其中,大腿處由股骨支撐,小腿處由脛骨支撐。
腿部結(jié)構(gòu)是四足機器人實現(xiàn)各種動作的關(guān)鍵部分。 基于對犬類生物的腿部骨骼結(jié)構(gòu)仿生分析,四足機器人的腿部由大腿、小腿和腳掌三部分構(gòu)成。四足機器人后腿、前腿的結(jié)構(gòu)簡圖分別如圖2、圖3所示。
圖2 四足機器人的后腿結(jié)構(gòu)簡圖Fig. 2 A diagram of the hind legs of a quadruped robot
圖3 四足機器人的前腿結(jié)構(gòu)簡圖Fig. 3 A diagram of the front legs of a quadruped robot
研究表明,在腿部結(jié)構(gòu)設(shè)計上,內(nèi)膝肘式具有較佳的行走性能、穩(wěn)定性能、續(xù)航性能和綜合性能,且從機器人配置對性能的敏感度而言,內(nèi)膝肘式對髖關(guān)節(jié)與膝關(guān)節(jié)的幅值變化敏感度更低,因此更加穩(wěn)?。?]。 圖4 為內(nèi)膝肘式的簡化結(jié)構(gòu)。
圖4 四足機器人內(nèi)膝肘式結(jié)構(gòu)簡圖Fig. 4 Schematic diagram of internal knee - elbow structure of a quadruped robot
在自由度的選擇上,四足哺乳動物的腿部一般包括髖、膝和踝3 個關(guān)節(jié)。 合理設(shè)計四足機器人的自由度,使其能夠在平地上完成所有的行走過程,實現(xiàn)前進(jìn)、后退、轉(zhuǎn)彎等動作,是機器人設(shè)計的一個重要問題。
在行走過程中,四足機器人為了仿真髖關(guān)節(jié)前后和左右擺動, 在結(jié)構(gòu)上將其簡化為2 個自由度;膝關(guān)節(jié)為了實現(xiàn)前后擺動,將其簡化為1 個自由度;踝關(guān)節(jié)用于實現(xiàn)前后和左右擺動,將其簡化為2 個自由度。 本文設(shè)計的四足機器人腿部共有20 個自由度,4 條腿各有5 個,腿部的自由度仿真使得四足機器人可以在多種環(huán)境下靈活運動。 機器人全身自由度設(shè)置如圖5 所示。
圖5 四足機器人全身自由度設(shè)置簡圖Fig. 5 Schematic diagram of the whole body freedom setting of a quadruped robot
基于對犬類生物的仿生分析,機器人整體結(jié)構(gòu)采用3DsMAX 2020 軟件進(jìn)行三維建模,建模結(jié)構(gòu)如圖6 所示。 該四足機器人主要由頭部、前部軀體、中部軀體、后部軀體、大腿、小腿和腳掌等多個部分組成。 通過3D 打印技術(shù)制作出的實體機器人如圖7所示。 其中部軀體內(nèi)部用于電源模塊以及控制模塊的安裝,前部軀體用于傳感器模塊的安裝。
圖6 四足機器人的三維模型Fig. 63D model of a quadruped robot
圖7 四足機器人的實物展示圖Fig. 7 A demonstration of a quadruped robot
四足機器人是由控制系統(tǒng)發(fā)出動作指令,以控制機器人的動作。 該系統(tǒng)的硬件部分主要由樹莓派4B、舵機調(diào)試模塊、串行總線舵機控制器、RPI Camera V2 視覺識別模塊、串行總線伺服舵機、電源和傳感器等部分組成。 樹莓派4B 開發(fā)板利用串口與外部進(jìn)行通信,處理所接收到的外界信息,主要控制機器人的動作展示和實現(xiàn)人機交互功能。 RPI Camera V2 視覺識別模塊以及其他傳感器用以增強機器人的環(huán)境感知能力與智能性,串行總線舵機控制器可以直接控制串行總線伺服舵機。 硬件系統(tǒng)的引腳連接如圖8 所示。 由圖8 可看到,對系統(tǒng)各組成部分的設(shè)計內(nèi)容,可給出剖析闡釋如下。
圖8 控制系統(tǒng)引腳連接圖Fig. 8 Connection diagram of control system pins
(1)樹莓派與舵機控制板的通信。 控制系統(tǒng)在運行過程中,樹莓派4B 通過mini 串口中分配給排針的GPIO TXD RXD 串口與舵機控制器的TXD RXD串口交叉連接進(jìn)行串口通信,并且通過配置文件修改自身的設(shè)備樹,將其高性能硬件串口映射到GPIO TXD RXD 接口上。 兩者的數(shù)據(jù)端口需要將各類參數(shù)完全匹配才能實現(xiàn)通信,且在任意時刻,兩者間只能實現(xiàn)半雙工通信,即允許在樹莓派4B 和舵機控制器兩個方向上傳輸數(shù)據(jù),但同一時間內(nèi)只能存在一個方向上的數(shù)據(jù)傳輸,方向的選擇由樹莓派4B 控制。
圖9 為串口讀取的舵機控制數(shù)據(jù),即對應(yīng)每個舵機的旋轉(zhuǎn)角度,樹莓派4B 將其進(jìn)行處理后,通過串行舵機控制器,傳遞到每個舵機上,從而控制舵機的旋轉(zhuǎn)角度。
圖9 串口讀取的舵機控制數(shù)據(jù)示意圖Fig. 9 Schematic diagram of steering gear control data read by serial port
( 2) 串 行 舵 機 的 選 擇。 本 文 選 用FASHIONSTAR 公司的RP8-U45UART 串行總線伺服舵機,舵機內(nèi)部有多項反饋保護(hù)功能,并且支持TTL 協(xié)議,舵機扭矩可達(dá)45 kg/cm,較好地滿足了四足機器人的多方面需求。 控制器通過總線給舵機發(fā)送控制指令,使各個舵機在接收到指令后發(fā)生一定角度的旋轉(zhuǎn),從而實現(xiàn)機器人的運動。
(3)電壓情況。 為使串行總線伺服舵機的控制板能夠保持正常工作狀態(tài),供給的電壓需維持在6~8.4 V 這一范圍。 在實際運行過程中,四足機器人所搭載電池組的電壓不得低于7.6 V,否則舵機可能會因供電不足出現(xiàn)抖動的情況。 為保證樹莓派的工作電壓滿足5 V,本文選擇板載SWl06 移動電源芯片,解決了樹莓派工作電壓與舵機控制板電壓不符的問題,同時也可以為RPI Camera V2 模塊(工作電壓為5 V)供電,以此增加機器人的智能模塊。
(4)碰撞傳感器。 為了控制機器人的智能模塊并增加其多樣性,本文所設(shè)計的四足機器人安裝了碰撞傳感器作為機器人的模式選擇開關(guān),當(dāng)碰撞開關(guān)每被按下一次,傳感器向樹莓派4B 輸出一次低電平。 本文通過安裝2 個碰撞傳感器,實現(xiàn)了人機交互模塊中各個視覺識別進(jìn)程與姿態(tài)控制進(jìn)程的并行性。
(5)激光測距傳感器。 激光測距傳感器憑借激光的能量集中、可遠(yuǎn)距離傳播、單色性與相干性好等特點,利用三角形幾何原理來測量目標(biāo)物與傳感器之間的距離,以實現(xiàn)高精度的計量和檢測[7]。 激光測距傳感器輸出的是模擬電壓信號,本文所研制的四足機器人需要多個激光測距傳感器協(xié)同工作,而多個相同的傳感器一起使用I2C 通信時會發(fā)生地址沖突,所以需要借助I2C 級聯(lián)擴展器,控制系統(tǒng)才能解決地址沖突問題并正常處理數(shù)據(jù)。 該激光測距模塊共有4 個引腳接口,分別是:TXD 引腳、RXD 引腳、5 V 引腳與GND 引腳。
(6)慣性傳感器。 本文所選用的集成慣性傳感器,即九軸加速度計電子陀螺儀,型號為JY901。JY901 使用MPU9250,可以修改I2C 的通訊地址,并且基本可以在各個平臺上進(jìn)行JY901 陀螺儀數(shù)據(jù)的讀取。 JY901 九軸加速度計電子陀螺儀傳感器如圖10 所示。
圖10 JY901 九軸加速度計電子陀螺儀傳感器Fig. 10 JY901 nine-axis accelerometer electronic gyroscope sensor
四足機器人控制程序工作流程為:首先,樹莓派4B 初始化后通過自啟動文件進(jìn)入控制模塊,該模塊能控制人機交互模塊以及動作展示模塊,且首先默認(rèn)喚醒人機交互模塊。 進(jìn)入人機交互模塊后,系統(tǒng)并行運行各個智能化視覺識別進(jìn)程,進(jìn)程中借助RPI Camera V2 視覺識別模塊將攝像頭傳遞到樹莓派4B 中的圖像數(shù)據(jù)進(jìn)行處理分析與反饋,增強了機器人的環(huán)境感知能力與智能性。 人機交互模塊完成后,系統(tǒng)根據(jù)控制視覺識別的碰撞傳感器反饋的低電平信號,判斷是否結(jié)束人機交互模塊,若結(jié)束,則根據(jù)控制動作展示模塊的碰撞傳感器反饋的低電平信號,進(jìn)行后續(xù)動作展示的姿態(tài)控制。 四足機器人控制程序流程如圖11 所示。
圖11 四足機器人控制程序流程圖Fig. 11 Flow chart of quadruped robot control program
四足機器人的運動規(guī)劃關(guān)鍵在于姿態(tài)解算。 姿態(tài)解算是利用慣性傳感器所傳回的四元數(shù)信息,通過計算與分析歐拉角得出。 這里對姿態(tài)解算原理擬做研究闡述如下。
四元數(shù)是一個簡單的超復(fù)數(shù),在三維中的旋轉(zhuǎn)可以用單位四元數(shù)來描述。 四元數(shù)的公式定義為:
機器人裝有慣性傳感器JY901,該傳感器可以直接向樹莓派4B 輸出四元數(shù),下一步則在樹莓派4B 中利用四元數(shù)進(jìn)一步求出歐拉角。
歐拉角是指在一個固連于剛體的坐標(biāo)系中,由剛體的旋轉(zhuǎn)分別產(chǎn)生俯仰角(pitch)、滾動角(roll)、偏航角(yaw)組成的一組獨立角參量[8]。 通過四元數(shù)計算出歐拉角即可直觀反映出機器人姿態(tài)。
首先,本文使用四元數(shù)表示的旋轉(zhuǎn)矩陣Cbn, 根據(jù)公式可知:
又因為:
對比兩式,即可解得俯仰角、滾動角和偏航角的數(shù)學(xué)公式為:
根據(jù)四足機器人的運動規(guī)劃要點,本文設(shè)計出機器人的運動過程及行走步驟。 首先,機器人保持站立,使其整體重心垂直于地面。 四足機器人連續(xù)步態(tài)第一步的實現(xiàn),要以左前腿與右后腿為支撐,邁出右前腿與左后腿,使得機器人整體重心集中在左前腿與右后腿上。 以這一步為例,為了實現(xiàn)這一步驟,需要在自主設(shè)計的上位機軟件中調(diào)整第7、8、9、12、13、14 號舵機模塊數(shù)值,使機器人能夠邁出兩腿以繼續(xù)進(jìn)行下一步驟,具體參數(shù)如圖12 所示。
圖12 四足機器人全身舵機編號及其對應(yīng)的數(shù)值Fig. 12 Quadruped robot whole body steering gear number and its corresponding value
接下來,進(jìn)行機器人的姿態(tài)解算與比對判斷,本文機器人采用了JY901 的姿態(tài)角度傳感器,由gyroscope、accelerometer 和geomagnetic sensor 構(gòu)成,可以協(xié)同工作收集姿態(tài)信息并傳遞給樹莓派4B 控制板進(jìn)行姿態(tài)解算。
樹莓派4B 控制板根據(jù)JY901 所傳回的四元數(shù)信息計算出機器人當(dāng)前的俯仰角、滾動角與偏航角,判斷并歸納出機器人的當(dāng)前姿態(tài),并根據(jù)不同情況向串行總線舵機控制器發(fā)送不同的反饋[9]。 若已符合目標(biāo)條件,則停止進(jìn)行姿態(tài)調(diào)整;若不符合目標(biāo)條件,則做出對應(yīng)姿態(tài)調(diào)整。 完成調(diào)整后,重復(fù)執(zhí)行該程序,直到動作符合目標(biāo)條件。 樹莓派4B 控制板判斷姿態(tài)符合目標(biāo)條件后,進(jìn)行下一個連續(xù)步態(tài)動作的信號傳輸,并重復(fù)上述過程,即達(dá)到機器人連續(xù)步態(tài)的效果。 機器人動作姿態(tài)的調(diào)整,需要各個舵機的控制來完成,見表1。
表1 四足機器人動作與舵機序號對應(yīng)表Tab. 1 Corresponding table of quadruped robot action and steering gear serial number
通過硬件收集信息與軟件算法解算,控制系統(tǒng)可以計算分析出機器人的姿態(tài)信息,完成機器人的姿態(tài)解算并進(jìn)行連續(xù)步態(tài)的姿態(tài)控制。
本文在所研制的四足機器人上安裝了激光測距傳感器,用于測量機器人與障礙物間的距離,實現(xiàn)了機器人的避障功能;安裝了慣性傳感器,實現(xiàn)了姿態(tài)校準(zhǔn)、方向糾正功能。 多種傳感器的融合,使得機器人具備了適應(yīng)與感知復(fù)雜環(huán)境的能力,實現(xiàn)了機器人的智能性。
激光測距傳感器通過I2C 級聯(lián)擴展器與樹莓派4B 相連,激光測距儀在傳感器開始運行后,每間隔一個周期就能夠產(chǎn)生并發(fā)送給樹莓派4B 一組二進(jìn)制數(shù)據(jù)。 樹莓派4B 會統(tǒng)一處理這些二進(jìn)制數(shù)據(jù),然后根據(jù)相應(yīng)的算法生成導(dǎo)航路徑,并根據(jù)相應(yīng)的控制指令來確定機器人運行的方向。 樹莓派4B 接受到該信息后,會再次運算所接受到信息的冗余,并將該值在之前接受的CRC 域中進(jìn)行一一比對。 如果比對后接受到的2 個值不相同,則表明該命令存在錯誤,主機需再次發(fā)送新的命令。 激光測距傳感器數(shù)據(jù)處理流程如圖13 所示。
圖13 激光測距傳感器數(shù)據(jù)處理流程圖Fig. 13 Data processing flow chart of laser ranging sensor
JY901 模塊在使用前要進(jìn)行加計校準(zhǔn)以去除加速度計的零偏,隨后進(jìn)行磁場校準(zhǔn)。 進(jìn)行姿態(tài)解算時,樹莓派4B 開機后首先自動運行姿態(tài)解算程序,收集慣性傳感器所傳回的加速度、角度等信息,計算出機器當(dāng)前俯仰角、滾動角與偏航角[10],對角度數(shù)值進(jìn)行判斷,分析出當(dāng)前姿態(tài),再根據(jù)具體的情況做出相應(yīng)的反應(yīng)。 若已達(dá)到預(yù)期,則保持姿勢不動;若未達(dá)到預(yù)期,則做出相應(yīng)調(diào)整。 完成調(diào)整后,重復(fù)執(zhí)行該程序,再次收集姿態(tài)信息加以判斷。 完整的慣性傳感器程序設(shè)計流程如圖14 所示。
圖14 慣性傳感器程序設(shè)計流程圖Fig. 14 Flow chart of inertial sensor program design
采用單一的傳感器獲取的信息并不全面可靠,多傳感器的融合實現(xiàn)了傳感器間的優(yōu)勢互補,提高了系統(tǒng)的穩(wěn)定性和容錯性,使得機器人感知位置的能力更加穩(wěn)定和精確。 多傳感器融合技術(shù)在機器人的智能化發(fā)展中起著重要作用。
以該四足機器人所參加的中國機器人大賽多足異形項目為例,四足機器人需在舞蹈展示后感知自身所處位置,位移進(jìn)入場地四角的圈中。 踩圈環(huán)節(jié)的操作流程如圖15 所示。
圖15 四足機器人踩圈流程圖Fig. 15 Flow chart of quadruped robot treading
本文以傳統(tǒng)年獸形象作為設(shè)計原型,完成了四足機器人機械結(jié)構(gòu)、軟硬件控制系統(tǒng)和傳感器融合的設(shè)計與實現(xiàn)。 經(jīng)測試,該四足機器人通過不同的碰撞傳感器,能夠分別進(jìn)入視覺識別系統(tǒng)和機器人姿態(tài)控制系統(tǒng),兩套系統(tǒng)互不干擾,保證了程序的流暢運行,測試結(jié)果符合預(yù)期目標(biāo)。
本文四足機器人在承載能力、移動速度、功能性等方面有較大發(fā)展空間,這也是未來四足機器人進(jìn)一步優(yōu)化和完善的方向。 考慮到四足機器人的實際使用場景的多樣性,可以借助基于樹莓派4B 的多傳感器融合技術(shù)為機器人添加具有各種功能的傳感器,因此本文所研制的四足機器人在功能方面具有一定的擴展性。 隨著四足機器人的不斷發(fā)展,四足機器人會更加智能化,在仿生方面也會有更大的突破,未來定能協(xié)助人類實現(xiàn)更加復(fù)雜的任務(wù)。