ROS機器人實例 —— HRMRP
HRMRP(Hybrid Real-time Mobile Robot Platform,混合實時移動機器人平台)是筆者在2012年和實驗室的小夥伴們一起從零開始設計、開發的一款機器人平台,其中大部分擴展電路、驅動和ROS相關的底層功能都是我們自己開發。該機器人平台具有軟硬體可編程、靈活性強、模塊化、易擴展、實時性強等特點,機器人的整體結構如下圖所示。
HRMRP具備豐富的感測器和執行器,在該平台的基礎上,可以現了機器人SLAM、自主導航、人臉識別、機械臂控制等功能。
總體架構設計
HRMRP的總體架構如下圖所示。
1. 硬體層
(1)機械平台
HRMRP主體結構為鋁合金材質,尺寸為316mm ×313mm ×342mm(高×寬×長),裝配兩個驅動輪與一個萬向輪。驅動輪由兩個30W的直流電機帶動,轉速可達83轉/分鐘,機器人最快速度1.5m/s。HRMRP還裝有一個六自由度機械臂,可以完成三維空間內的夾取操作。
(2) 控制平台
嵌入式系統具備小型化、低功耗、低成本、高靈活性等顯著的特點,電子技術的發展也促使可編程門陣列FPGA在嵌入式系統中得到了越來越廣泛的應用,很大程度上改善了嵌入式系統硬體的靈活度與繁瑣計算的實時化。
HRMRP的控制平台即基於Xilinx最新一代集成FPGA與ARM的SoC——Zynq。
Zynq由處理系統(Processor System,PS)與可編程邏輯(Programmable Logic,PL)兩部分組成。其中PS基於ARM Cortex-A9雙核處理器構建,包含常用的外設介面,例如網路、USB、內存控制器等。而PL由Xilinx的7系列FPGA構成,支持動態重配置,可以使用Verilog語言編程。
在HRMRP中,PS通過操作系統控制所有功能正常有序的實現,而PL作為協處理器,一方面可以對複雜運算做並行加速處理,另一方面可以進行I/O介面擴展,為多感測器和執行器設計統一的介面,提高系統硬體配置的靈活性。
(3) 感測器系統
在機器人核心感測器的選擇上,HRMRP使用了高性價比、高集成度的微軟Kinect 感測器。除此還裝配有超聲波、加速度、里程計、陀螺儀等多種感測器,確保機器人平台可以採集到豐富的感測信息。
2. 驅動層
驅動層的主要工作是採集或預處理硬體層的數據,下發操作系統層的指令,為底層硬體與上層功能模塊提供相應的數據傳輸通道。由於我們採用「ARM+FPGA」異構控制平台,為配合硬體層功能,驅動層也分為兩部分,分別放置於硬體的PS端和PL端。
PS端主要驅動連接到ARM處理器的外設,例如通過PS中的OpenNI驅動Kinect,並且提供PL端到PS端的介面。而在PL端中,利用可編程硬體的靈活性和並行處理能力,進行I/O擴展與演算法的硬體加速,如下圖所示。
在I/O擴展方面,傳統的設計實現中,種類繁多的感測器、執行器對介面的要求各不相同,會佔用大量I/O資源,增加處理器的負擔。而在HRMRP的ARM+FPGA系統當中,通過定義一組標準的硬體介面,連接感測器和電機等外設,可使用編程邏輯取代繁雜的電路連接工作,滿足各種不同需求的硬體外設。
在硬體加速方面,一般來說PS端適合常用介面的驅動、網路數據的處理等功能,而PL端適合於規律性的演算法處理,在HRMRP中主要負責Kinect的數據預處理工作(這裡我們將OpenNI中的部分代碼放入FPGA中進行加速)。PS與PL相互配合,提高了系統數據處理的實時性。
3. 操作系統層
操作系統層是機器人平台的控制核心,集成了機器人的功能模塊,負責行為控制、 數據上傳、指令解析、人機交互等功能。為與ROS通信介面保持一致,使用Ubuntu作為操作系統,運行於Zynq的PS端ARM處理器之中。
ROS為用戶的不同需求提供了大小和功能不同的多種安裝包,為了減少ARM端的執行壓力,HRMRP編譯移植了僅包括ROS基本通信機制的核心庫。繼承了ROS的優勢,機器人平台具備ROS通信以及功能包運行的能力,與上層網路指令無縫連接,結合開源軟體庫,極大地豐富了機器人的功能模塊與應用範圍。
HRMRP是一種較為典型的高性能、低成本機器人平台。與現在研究和應用中使用較為廣泛的TurtleBot、Pioneer等機器人相比,HRMRP具有相似的結構與尺寸,同樣可以完成多種多樣的機器人應用;但是在介面的可擴展性、感測器的豐富度以及成本控制等方面,具備更好的綜合性能。
SLAM與導航
在以上架構的基礎上實現每個模塊的具體功能,系統運行狀態下的數據流圖如下圖所示。
HRMRP在室內環境下的SLAM建圖效果如下圖所示。
基於SLAM建立的地圖完成導航的效果如下圖所示。
多機器人擴展
ROS作為一個分散式框架,從微觀的角度講,分散式體現在節點的布局和配置上,而從宏觀的角度講,這種分散式可以體現在多機器人、多主機集成的系統當中。在HRMRP機器人的基礎上,我們試圖提出一種多機器人實現的框架,如下圖所示。
由於機器人架構多種多樣,處理應用的能力也各不相同,在不同場合下的需求也有差異,我們設計了伺服器層來提高機器人應用的計算能力,負責調度、分配多機器人應用中的任務,同時為用戶提供友好、易用的人機交互界面。
分布的機器人節點與伺服器都採用ROS框架設計,使用無線網路通信,可以快速集成ROS社區中豐富的應用功能。在多機器人系統當中,通過機器人之間的信息共享和與任務協作,可以讓每個機器人在充分發揮自己能力的同時,獲得更多額外的應用潛力。
機器人節點是應用的執行者與信息的採集者。在該系統中可以集成多種採用ROS框架的機器人,這裡以HRMRP機器人平台為例,針對多機器人的框架也進行了測試,除HRMRP機器人之外,還使用樹莓派製作了一個簡單的小型機器人。
在實驗中,HRMRP機器人在地圖上自主導航前進,伺服器負責應用的處理與顯示,同時將HRMRP的位置信息轉發給樹莓派機器人;樹莓派機器人收到信息後,緊跟HRMRP,效果如下圖所示。
更多內容可關注微信公眾號:古月居 (guyue_home)
或訪問古月居網站:
古月居 - 怕什麼真理無窮,進一寸有一寸的歡喜
推薦閱讀:
※人工智慧對語言、文字的理解以及與之相關的風險
※千億美元新藍海,國內玩家不超過十個:機器人養魚了解一下?
※電話語音機器人究竟是如何工作的?
※工業 4.0與中國智造
※掃地機器人產品如何正確選購?
TAG:機器人操作平台ROS | 機器人 |