鄭紀陽 張國忠 黃聿榮 方浩堒 劉澤閩



摘要:本文以機器人操作系統(Robot Operating System,ROS)為研究平臺,以移動機器人的視覺定位功能為研究目標,針對移動機器人在路面上的定位、捕捉圖像及導問題進行研究。實現過程中,使用了開源物理仿真環境(gazebo)搭建與模擬機器人視覺定環境,三維平臺(Rviz)搭建仿真平臺完成了多點導航功能。通過實景測試,驗證了本文實現機器人視覺定位功能的有效性。
關鍵詞:機器人操作系統(ROS);開源物理仿真環境(gazebo);三維平臺(Rviz);多點導航。
1.所用系統和算法介紹
1.1 ROS系統源于2007年機器人技術公司“Willow Garage”個人機器人項目與斯坦福大學人工智能實驗室項目的合作。2008年后,由柳樹車庫進行推廣和維護。經過多年的發展,ROS 操作系統日趨完善,不僅為操作者提供了實用性較強的工具,也提供了先進的開源算法。ROS具有點對點設計、多種編程語言、快速測試和分布式計算等優點,基于 ROS的機器人應用開發逐漸成為主流[1]。
1.2機器人SLAM算法介紹
1)SLAM是同步定位與地圖構建(Simultaneous Localization And Mapping)的縮寫,最早由Hugh Durant-Whyte和John J.Leonard自1988年提出。主要用于解決移動機器人在未知環境中運行時即時定位與地圖構建的問題。ROS系統提供了多種SLAM功能包,包括二維SLAM的gmapping、hector、cartographer功能包,以及三維SLAM的rgbslam、ORB_SLAM功能包。這些功能包可分別實現仿真機器人和真實機器人的SLAM功能[2]。
2)自主導航:ROS提供了移動機器人的導航框架,包括實現機器人定位的amcl功能和實現路徑規劃的move_base功能包,可幫助快速實現輪式移動機器人的導航功能。
3)自主探索SLAM:結合SLAM與自主導航功能,機器人可以在無人工干預的情況下自主完成未知環境的SLAM建圖功能,導航路徑自動根據地圖信息的完善而不斷優化。
2.自主導航仿真
2.1 Gazebo開源物理仿真環境
Gazebo是開源物理仿真環境,通過它,加上PR2(是Willow Garage公司設計的機器人平臺,也是目前科研領域常使用到的機器人之一)功能包嵌入,能實現移動機器人模型的雛形,PR2功能包機器人模型如圖1所示。在Gazebo物理環境下還可實現任意建模模型。
2.2 Gazebo物理仿真環境搭建
仿真步驟:(1)配置機器人模型。(2)創建仿真環境。(3)開始仿真。
1)機器人底盤仿真:為各link添加慣性參數與碰撞屬性和gazebo標簽,同時為joint添加傳動裝置(使用transmission標簽,小車輪子用速度控制接口)。
2)添加gazebo控制插件(相當于作為驅動板):編寫并運行相應launch文件得到gazebo中的機器人仿真模型。
3)創建仿真環境:選擇insert,在坐標系中插入已有的模型。
4)傳感器仿真:攝像頭仿真,為攝像頭link添加碰撞屬性和慣性屬性。同時宏定義攝像頭,智能車道路運行仿真模擬如圖2所示。
用后臺圖形工具套件Qt查看攝像頭當前畫面同時啟動鍵盤控制,鍵盤控制界面及仿真實例完成效果如圖3所示。
2.4 機器人視覺定位具體應用模塊與組件
2.4.1 Rviz三維平臺
Rviz 是機器人操作平臺 ROS 中的一種可視化工具,可以圖形化顯示機器人的傳感器信息,運動狀態以及周圍環境的變化信息等。同時Rviz支持豐富的數據類型,通過加載不同的Dispalys類型達到可視化,每一個Dispaly都有一個獨特的名字。下面是幾個常見的display類型:Axes-顯示坐標系;camera-從相機視角顯示圖像;Grid-顯示網格;Image-顯示圖像;Odomerty-顯示里程計數據;RobotModel-顯示機器人模型。
2.4.2 arbotix_gui 控制器
arbotix是一款控制電機、舵機的控制板,并且提供相對應的ros功能包。該功能包不僅可以驅動真實的ArbotiX控制板,還提供了一個差速控制器。通過接收速度控制指令更新機器人的joint狀態,從而實現在rviz中的運動。在移動機器人的建圖過程中,可以啟動鍵盤節點控制機器人進行運動從而實現對實驗環境地圖的構建。同樣也可以使用 arbotix_gui 控制器控制機器人完成建圖工作。
2.4.3 室內移動機器人軟件結構
基于 ROS 的移動機器人系統軟件設計,主要包括底盤驅動的控制、激光雷達的數據采集、SLAM、AMCL 定位以及導航。
1)激光雷達節點:將激光雷達采集的數據發布到scan 話題上,只需要訂閱這個話題就能使用這些數據。
2)底盤驅動控制節點:樹莓派4B開發板下達速度指令傳輸到移動機器人底盤控制板,從而控制移動機器人以此速度運行。底盤驅動控制節點通過訂閱/cmd_vel 話題,把消息轉換成速度指令,并通過串口發送到 STM32F405 控制板上,控制機器人移動。
3)SLAM節點:通過對激光雷達節點發布的/scan 話題的訂閱,再結合2D SLAM算法實現地圖構建。
4)AMCL節點:通過訂閱/scan話題獲取激光雷達數據,并輸出機器人在地圖中的位姿信息。
5)導航節點:在已知的地圖上根據激光雷達測量的數據控制移動機器人導航,并躲避障礙物。
2.4.4 通信設計
底盤驅動板和 ROS 之間的通信,即 STM32 和樹莓派之間的通信基于串口通信。在進行通信之前,需先將格式一致的串口通訊的數據包信息從發送設備的TXD接口傳輸到接收設備的 RXD 接口。在ROS中,控制節點發布的命令話題需要通過串口節點來訂閱,并通過串口設備發送到移動底盤。同時串口節點實時接收移動底盤發送的傳感器數據,并進行封裝發布 sensor話題,listener節點實時訂閱這個sensor話題,這樣就實現了 ROS 和移動底座的通信過程。可以在 ROS 中安裝一個serial串口庫,并進行參數配置,使參數和 STM32 串口配置一樣,包括起始位、數據位和停止位等。再初始化串口,就能實現樹莓派和 STM32 的串口通信了。
2.4.5 TF坐標變換
TF是一個可以滿足用戶跟隨時間跟蹤多個坐標系的功能包,其使用樹形數據結構,運用時間緩沖并維護多個坐標系之間的坐標變換關系,它可以幫助開發者任意時刻完成點、向量等坐標在任意坐標系中的變換。
一個機器人系統通常配備很多三維坐標系,并且它們會隨著時間的推移發生變化,如世界坐標系(world frame)、基坐標系(base frame)、機器人頭部坐標系(head frame)等。TF可以以時間為軸跟蹤這些坐標系(10s之內為默認參數)。常用的變換有2種。
1)廣播TF變換,向系統中廣播坐標系間的坐標變換關系。系統中可能會存在多個不同部分的TF變換廣播,每個廣播都可以在無需同步的情況下直接將坐標變換關系插入TF樹中。
2)監聽TF變換,接收并緩存系統中發布的所有坐標變換數據,并從中查詢所需的坐標系變換關系。
TF常用工具有tf_monitor、tf_echo、static_transform_publisher等。
1)tf_monitor工具的功能是打印TF樹中所有坐標系的發布狀態,也可以通過輸入參數來查看指定坐標系間的發布狀態消息。
2)tf_echo工具的功能為查看指定坐標系間變換關系。命令格式如下:
$tf_echo <source_frame> <target_frame>
3)static_transform_publisher功能是發布兩個坐標系之間的靜態坐標變換,這兩個坐標系不產生相對位置變化。
3.實驗案例
步驟1:將智能車設備與計算機設備進行連接。
步驟2:運行Rviz,rosrun rviz rviz。添加add,將上述的機器人模型RobotModel選擇坐標系,畫面出現機器人。
步驟3:設置Fixed Frame模式為odom_combined。
步驟4:添加TF,可顯示小車上所搭載的設備及其零部件。
步驟5:添加LaserScan,其Topic設置為/scan,可以看到小車搭載雷達的激光點(紅色區域),如圖4所示。
步驟6:添加RobotModel,可以看到可視化的小車模型。
步驟7:添加PoseWithCovariance,可以看到小車的車頭方向
步驟8:在終端輸入arbotix_gui開啟虛擬遙控,可以控制小車的移動。如圖5所示。
通過arbotix_gui實現上述小車的虛擬遙控可編寫相關launch文件并配置相關arbotix節點:
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<rosparam file="$(find my_urdf05_rviz)/config/hello.yaml" command="load" />
<param name="sim" value="true" />
</node>
此程序調用了arbotix_python功能包下的arbotix_diver節點。arbotix驅動機器人運行時,需要獲取機器人信息,可以通過file加載配置文件。在仿真環境下,需要將sim配置設為true。最后則啟動相應launch文件,配置Rviz,將Fixed name這欄選擇并設置為odom(里程計坐標系),Topic這欄也設置為odom。但topic中的odom具有不同概念,odom topic是根據編碼里程計計算得到的里程計信息。完成相應配置后調用rostopic list會產生一個話題 /cmd_vel。此時發布/cmd_vel話題消息就可以控制小車運動了。
4.結論
隨著科技日益發展,機器人的視覺定位系統在人類生產生活、人工智能領域扮演著越來重要的腳色。本課題基于Ubuntu系統下的ROS機器人操作系統為研究平臺,對輪式機器人(智能車)在路面上的定位、捕捉圖像及導航問題進行研究。通過搭建仿真環境,控制與實現智能車的移動,雷達信息接收以及定位與捕捉圖像等功能,測試機器人仿真環境下的避障能力,方向控制反應能力等性能指標均達到了設計的指標,具有實用價值。
參考文獻
[1] 朱建軍,王明園,張博文.基于ROS的輪式機器人建模方法與仿真研究[J].吉林化工學院學報,2021,38(3):61-65.
[2]郭柱梁.基于激光雷達的SLAM和動態避障機器人研究[M].哈爾濱:黑龍江大學出版社,2021.
第一作者簡介:鄭紀陽 2001年5月1日,性別:男,民族:漢,籍貫:福建省廈門市,學歷:本科在讀,職稱:學生,研究方向:ROS機器人操作系統。
通信作者簡介:張國忠,1951年2月出生,男,漢族,籍貫江西南昌,博士,教授,主要研究方向:系統辨識,計算機控制,電力系統自動化,人工智能控制等。
●此文由2021年全國大學生創新創業訓練計劃項目資助,項目名稱:機器人視覺定位系統研究與實現項目負責人:鄭紀陽(2021-239)