李勝
摘要:目前,由于機器人的快速發(fā)展,在機器人開發(fā)中,代碼復(fù)用和模塊化的需求越來越強烈,構(gòu)建一個靈活性較高的機器人架構(gòu)成為一個研究熱點?;赗OS框架,以主控制器(樹莓派3B)+嵌入式控制板(STM32控制板)為基礎(chǔ)設(shè)計了一種可用于機器人多傳感器組合導(dǎo)航的系統(tǒng)架構(gòu),為廣大機器人研究人員提供了一套切實可行的多傳感器組合導(dǎo)航方案。
關(guān)鍵詞:機器人操作系統(tǒng)(ROS);機器人;導(dǎo)航;架構(gòu)設(shè)計;節(jié)點
1概述
隨著“工業(yè)4.0”蜚聲全球,“智能化”也成為受到普遍認(rèn)同的、未來各行各業(yè)發(fā)展的大趨勢?!吨袊圃?025》規(guī)劃的出臺,更是使各種智能化技術(shù)得到了長足的發(fā)張。機器人技術(shù)作為智能化最為顯著的代表,更是如此,機器人技術(shù)已從傳統(tǒng)的工業(yè)領(lǐng)域拓展到教育娛樂、醫(yī)療服務(wù)等諸多領(lǐng)域中。而移動機器人是進行機器人教育與研究最常用的平臺。目前,關(guān)于對機器人的研究大部分都集中在底層運動控制器結(jié)構(gòu)和算法上,對于構(gòu)建上層應(yīng)用軟件架構(gòu)的研究較少。由于機器人技術(shù)的快速發(fā)展,代碼復(fù)用和模塊化需求越來越強烈。機器人操作系統(tǒng)(ROS)很好地適應(yīng)這種需求,在機器人研究的許多方面都得到了運用,如文獻中基于ROS實現(xiàn)的地圖構(gòu)建與導(dǎo)航,文獻中提到的基于ROS實現(xiàn)的自主服務(wù)機器人等。本文詳細介紹ROS的主要特點,并結(jié)合實際情況設(shè)計出一套基于ROS架構(gòu)的便于調(diào)試與維護的機器人導(dǎo)航系統(tǒng)架構(gòu)。
2ROS基礎(chǔ)
機器人操作系統(tǒng)(Robot Operating System,ROS)是一個面向機器人的開源元操作系統(tǒng)fopen-source,meta-operating sys-tem)。它能夠提供類似傳統(tǒng)操作系統(tǒng)的諸多功能,如硬件抽象、底層設(shè)備控制、進程間消息傳遞和程序包管理等。其主要的特點包括5點:點對點設(shè)計、多語言支持、精簡與集成、工具包豐富、免費并且開源。
ROS機器人軟件操作平臺,是由斯坦福大學(xué)fStanford Artifi-cial Intelligence Laboratory)和Willow Garage公司之間的合作開發(fā),2008年之后,就單獨由WillowGarage來推動ROS的發(fā)展了。
節(jié)點,消息,話題,服務(wù)是ROS系統(tǒng)中經(jīng)常用到的概念,基于這些概念,ROS可以實現(xiàn)程序進程間的消息傳遞,管理硬件、底層的功能。
1)節(jié)點
節(jié)點主要執(zhí)行計算處理。ROS被設(shè)計為細粒度的模塊化的系統(tǒng);一個機器人控制系統(tǒng)通常有很多節(jié)點組成。本文采用的ROS框架中,相機數(shù)據(jù)節(jié)點用來獲取二維碼信息f包括偏移角度和偏移距離等),陀螺儀節(jié)點用來獲取角度數(shù)據(jù),編碼器用來獲取里程數(shù)據(jù),數(shù)據(jù)處理節(jié)點用來融合各個傳感器數(shù)據(jù),而機器人控制節(jié)點將數(shù)據(jù)處理的結(jié)果轉(zhuǎn)換為機器人的狀態(tài)。
2)消息
消息是數(shù)據(jù)在ROS中的表現(xiàn)形式,是節(jié)點之間的通信內(nèi)容。不管是來自傳感器的數(shù)據(jù),還是算法的運算結(jié)果,都可以定義為消息。一個消息可以是一個簡單的數(shù)據(jù)類型,也可以是自定義數(shù)據(jù)類型,同時,消息還支持嵌套的結(jié)構(gòu)。
3)話題
消息以一種發(fā)布/訂閱的方式傳遞。識別消息內(nèi)容的名稱則叫做話題。話題發(fā)布節(jié)點和話題訂閱節(jié)點彼此獨立,不需要檢測對方的存在性和狀態(tài),發(fā)布節(jié)點只負責(zé)在特定的話題上發(fā)布消息,而訂閱節(jié)點也只需要通過訂閱特定話題來獲得消息數(shù)據(jù)。有可能多個節(jié)點發(fā)布同一話題,也有可能多個節(jié)點訂閱同一話題。有點類似于圍繞共同主題的多人聊天室,每個人都可以自由地發(fā)表或者獲取符合主題要求的信息。
4)服務(wù)
在ROS系統(tǒng)里,服務(wù)定義為一對消息結(jié)構(gòu),服務(wù)器響應(yīng)客戶機的請求,彌補了基于話題的發(fā)布/訂閱模型不適用于同步傳輸模式的缺陷。
3硬件系統(tǒng)設(shè)計
如圖2所示,該機器人采用六輪底盤結(jié)構(gòu),前后兩對輪子為從動輪,用以維持小車平衡,中間那兩只輪子為驅(qū)動輪和舵輪,分別由一個電機驅(qū)動,通過兩驅(qū)動輪的差速實現(xiàn)轉(zhuǎn)向。中間兩輪各配備一個編碼器,會對輪子的滾動進行計數(shù),用以計算里程。
機器人硬件控制系統(tǒng)如圖3所示,由主控制器、ARM控制器、智能相機、陀螺儀、直流電機組成。主控制器采用開源卡片電腦樹莓派3B,搭載主頻為1.2GHz,內(nèi)含4個ARM Cortex A53核心64位架構(gòu)的BCM2837處理器,配備1G內(nèi)存、板載802.11b/g/n Wi-Fi和板載藍牙4.1。安裝Ubuntu MATE 16.04 LTS操作系統(tǒng)和ROS(kinetic版本)。由于樹莓派3B開發(fā)板并沒有串口,采用USB轉(zhuǎn)串口的方式與智能相機、陀螺儀以及嵌入式控制板進行串口通信。嵌入式控制板采用高性能、低成本、低功耗的ARM Cortex-M3內(nèi)核的STM32芯片。編碼器采用計數(shù)器接口與嵌入式控制板(sTM32)連接與通信。嵌入式控制板(STM32)通過設(shè)定電壓值驅(qū)動電機運轉(zhuǎn)。智能相機通過掃描二維碼經(jīng)過特定算法處理獲取機器人的偏移和偏角。陀螺儀獲取角度信息,兩編碼器可以獲取到機器人兩輪各自的里程,處理后可以得到偏移和偏角信息。
4軟件框架設(shè)計
在各種操作系統(tǒng)中,ubuntu對ROS支持最好,主控制器樹莓派3B安裝的是使用Mate桌面系統(tǒng)的ubuntu版本buntumate操作系統(tǒng)。該ROS版本采用官方推薦的kinetic版本。監(jiān)控計算機安裝與kinetic版本匹配的ubuntul6.06操作系統(tǒng)。在安裝完桌面完整版的ROS后,ROS系統(tǒng)框架已經(jīng)建立并創(chuàng)建一個連接所有進程的網(wǎng)絡(luò)和安裝了常用的功能包和庫。
主控制器樹莓派開發(fā)板相對于ARM控制器STM32控制板數(shù)據(jù)處理能力要強,盡可能將運算復(fù)雜,工作量大的任務(wù)交由主控制器來進行。與底層硬件通信方面,嵌入式比較有優(yōu)勢。將與底層硬件通信較多的任務(wù)(電機驅(qū)動、傳感器數(shù)據(jù)采集等)交給ARM控制器。另外,由于智能相機以及陀螺儀的數(shù)據(jù)都是封裝好的,并且采用的是非常常見的串口通信,可以直接連接主控制器。endprint
機器人的軟件框架構(gòu)建在ROS系統(tǒng)之上,使用了ROS系統(tǒng)的特性,將軟件框架分成多個獨立的模塊化程序,也就是“節(jié)點”。每個節(jié)點處理具體控制任務(wù)的某一部分。如果需要,這些節(jié)點可以獨立于控制任務(wù)的其他節(jié)點被編寫、編譯和啟動。通過ROS的“話題(Topic)”機制,節(jié)點與節(jié)點之間以點對點的方式交換消息、共享內(nèi)存等等。機器人的系統(tǒng)使用TCP/IP通訊,實現(xiàn)節(jié)點間的數(shù)據(jù)傳輸和機器人的遠程控制。
該機器人軟件系統(tǒng)框架如圖4所示,主要分為人機交互、傳感器數(shù)據(jù)采集、數(shù)據(jù)優(yōu)化、運動控制四部分。
1)人機交互
人機交互節(jié)點主要功能是為方便用戶配置機器人參數(shù),控制機器人運動以及監(jiān)控機器人狀態(tài)。
2)傳感器數(shù)據(jù)采集
傳感器數(shù)據(jù)采集節(jié)點包括相機數(shù)據(jù)采集節(jié)點、陀螺儀數(shù)據(jù)采集節(jié)點和編碼器數(shù)據(jù)采集節(jié)點。相機數(shù)據(jù)采集節(jié)點借助官方Serial包通過串口通信獲取智能相機通過掃描地面二維碼提供的機器人偏移和偏角信息;陀螺儀數(shù)據(jù)采集節(jié)點獲取陀螺儀提供的偏角信息;編碼器數(shù)據(jù)采集節(jié)點獲取編碼器提供的偏移和偏角信息。這些數(shù)據(jù)采集節(jié)點將從傳感器處獲取到的信息發(fā)布成相關(guān)的話題信息供數(shù)據(jù)處理節(jié)點訂閱。智能相機和陀螺儀內(nèi)置處理板,會通過串口發(fā)送具有指定格式的數(shù)據(jù),主控制器可以直接通過USB轉(zhuǎn)串口通信獲得。編碼器由ARM控制器管理,編碼器通過ARM控制器和主控制器的串口通信獲得。
3)數(shù)據(jù)優(yōu)化
智能相機在掃描到二維碼時,才會有相機數(shù)據(jù)供運動控制節(jié)點調(diào)用,因為這樣的局限性,更多的時候只能依靠編碼器和陀螺儀的數(shù)據(jù)。與相機數(shù)據(jù)不同,編碼器和陀螺儀數(shù)據(jù)隨時可以供運動控制節(jié)點調(diào)用。相機數(shù)據(jù)存在時,數(shù)據(jù)優(yōu)化節(jié)點將相機數(shù)據(jù)、陀螺儀數(shù)據(jù)、編碼器數(shù)據(jù)進行加權(quán)優(yōu)化;相機數(shù)據(jù)不存在時,則將陀螺儀數(shù)據(jù)和編碼器數(shù)據(jù)進行卡爾曼濾波算法優(yōu)化;無論相機數(shù)據(jù)是否存在,經(jīng)過數(shù)據(jù)優(yōu)化后,都將得到一個較為科學(xué)合理的機器人偏移和偏角信息。
4)運動控制
運動控制節(jié)點是整個軟件框架中最基礎(chǔ)的部分,它實現(xiàn)了軟件信息到硬件信息的轉(zhuǎn)換功能,具體來說,就是將數(shù)據(jù)優(yōu)化節(jié)點提供的偏差和偏角信息通過串口通信發(fā)送給嵌入式控制板,嵌入式控制板對收到的信息作出響應(yīng),依據(jù)期望速度,根據(jù)偏移和偏角信息計算出為修正該偏差和偏角左右輪電機分別所需的速度,最終轉(zhuǎn)化為左右輪電機的實際電壓。同時,并通過PID算法對左右輪電機轉(zhuǎn)速進行精確控制,確保機器人按指定的速度和方向運動。
5結(jié)論
本文基于開源機器人操作系統(tǒng)ROS設(shè)計了一個機器人導(dǎo)航系統(tǒng)架構(gòu)。在該架構(gòu)下,首先對多種傳感器進行數(shù)據(jù)采集,然后進行多傳感器組合導(dǎo)航的數(shù)據(jù)優(yōu)化處理,以實現(xiàn)精準(zhǔn)的控制機器人運動。本文為廣大機器人研究人員,尤其是多傳感器組合導(dǎo)航研究人員提供了一套切實可行方案。在本文設(shè)計的機器人架構(gòu)之上,可以進行自主導(dǎo)航等更復(fù)雜應(yīng)用的研究。endprint