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