SLAM+語音機器人DIY系列:(二)ROS入門——9.熟練使用rviz
摘要
ROS 機器人作業系統 在機器人應用領域很流行,依託程式碼開源和模組間協作等特性,給機器人開發者帶來了很大的方便。我們的機器人“ miiboo ”中的大部分程式也採用ROS進行開發,所以本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的作用。本章節主要內容:
9.熟練使用rviz
( 1 ) rviz 整體介面
(圖 29 ) rviz 整體介面
rviz 是 ROS 自帶的圖形化工具,可以很方便的讓使用者通過圖形介面開發除錯 ROS 。操作介面也十分簡潔,如圖 29 ,介面主要分為上側選單區、左側顯示內容設定區、中間顯示區、右側顯示視角設定區、下側 ROS 狀態區。
( 2 )新增顯示內容
(圖 30 )設定 Global Options
如圖 30 ,啟動 rviz 介面後,首先要對 Global Options 進行設定, Global Options 裡面的引數是一些全域性顯示相關的引數。其中的 Fixed Frame 引數是全域性顯示區域依託的座標系,我們知道機器人中有很多座標系,座標系之間有各自的轉換關係,有些是靜態關係,有些是動態關係,不同的 Fixed Frame 引數有不同的顯示效果, 在導航機器人應用中,一般將 Fixed Frame 引數設定為 map ,也就是以 map 座標系作為全域性座標系。值得注意的是,在機器人的 tf tree 裡面必須要有 map 座標系,否則該選項欄會包 error 。至於 Global Options 裡面的其他引數可以不用管,預設就行了。
(圖 31 )新增地圖顯示
如圖 31 ,在機器人導航應用中,我們常常需要用 rviz 觀察機器人建立的地圖,在機器人釋出了地圖到主題的情況下,我們就可以通過 rviz 訂閱地圖相應主題(一般是 /map 主題)來顯示地圖。訂閱地圖的 /map 主題方法很簡單,首先點選 rviz 介面左下角 [add] 按鈕,然後在彈出的對話方塊中選擇 [By topic] ,最後在列出的 topic 名字中找到我們要訂閱的主題名字 /map ,最後點選 [OK] 就完成了對 /map 主題的訂閱。訂閱成功後,會在 rviz 左側欄中看到 Map 項,並且中間顯示區正常顯示出地圖。
(圖 32 )新增 tf 顯示
如圖 32 ,在機器人導航應用中,除了觀察地圖外,我們常常還需要觀察機器人在地圖中的位置以及各個座標系的關係是否工作正常,這個時候就需要通過 rviz 來顯示 tf 。和上面新增顯示主題的方法類似,這裡新增 TF 這個型別主題就可以了。說明一下,新增主題可以按主題型別查詢,也可以按主題名稱查詢。上面新增地圖主題就是按主題名稱查詢的,這裡新增 tf 主題是按主題型別查詢的。
(圖 33 )添加里程計顯示
如圖 33 ,我們可以通過 rviz 訂閱里程計來觀察機器人的運動軌跡(圖中紅色箭頭連線起來的軌跡)。和上面新增顯示主題的方法類似,這裡新增 /odom 這個主題就可以了。這裡特別說明一點, 我們需要去掉左側欄中 Odometry 裡面 Covariance 項後面後面的勾 ,也就是在 Odometry 顯示中不啟用 Covariance 資訊。 Covariance 是描述里程計誤差的協方差矩陣,如果啟用 Covariance 來描述 Odometry 將導致顯示效果很難看,所以建議去掉。
(圖 34 )新增機器人位置粒子濾波點顯示
如圖 34 ,在機器人導航中,通常採用 AMCL 粒子濾波來實現機器人的全域性定位。通過 rviz 可以顯示全域性定位的例子點。和上面新增顯示主題的方法類似,這裡新增 /particlecloud 這個主題就可以了。
(圖 35 )新增鐳射雷達顯示
如圖 35 ,機器人 SLAM 和導航中用到的核心感測器鐳射雷達資料,我們可以通過 rviz 顯示鐳射雷達資料(圖中紅色點組成的輪廓)。和上面新增顯示主題的方法類似,這裡新增 /scan 這個主題就可以了。
(圖 36 )新增攝像頭顯示
如圖 36 , rviz 還可以訂閱攝像頭髮布的主題,這樣在 rviz 上就可以實現遠端視訊監控了。和上面新增顯示主題的方法類似,這裡新增 /usb_cam/image_raw 這個主題就可以了。
通過上面的例項,我們已經知道在 rviz 中訂閱需要顯示的主題了,被訂閱的主題會在 rviz 左側欄中列出,並且主題的顯示與否是相互獨立的,可以通過勾選的方式決定是否顯現該主題,主題項下拉條目中有很多引數可以設定,這些引數決定顯示的風格等等,可以根據需要進行設定。其他一些不常用的主題訂閱例項沒有給出,有需要可以依葫蘆畫瓢在 rviz 中進行訂閱顯示就行了。
( 3 )主介面中常用按鈕
(圖 37 ) rviz 顯示配置儲存
在上面的新增顯示內容的例項中,我們在 rviz 中添加了很多主題顯示項,並對各顯示項的引數做了相應的設定。為了下次啟動 rviz 時,能直接顯示這些內容和風格,我們需要將當前的 rviz 顯示風格以配置檔案的方式儲存,下次啟動 rviz 後只需要載入這個配置檔案就能進入相應的顯示風格。很簡單,點選 rviz 左上角 [file] 選單,在下拉中選擇 [Save Config As] ,在彈出來的對話方塊中給配置檔案取一個名字(我取名為 my_cfg1 ),然後直接 Save,my_cfg1.rviz 配置檔案會被儲存到系統中 rviz 的預設目錄。下次啟動 rviz 後,通過點選 rviz 左上角 [file] 選單,在下拉中選擇 [Open Config] ,開啟相應的配置檔案就行了。如圖 37 。
(圖 38 )機器人初始位置設定與導航目標設定
在機器人導航中,當機器人剛啟動的時候,機器人位置往往需要人為給定一個大概的估計位置,這樣有利於 AMCL 粒子濾波中粒子點的快速收斂。如圖 38, 點選 [2D Pose Estimate] 按鈕,然後在地圖中找到機器人大致的位置後再次點選滑鼠左鍵並保持按下狀態,拖動滑鼠來指定機器人的朝向,最後鬆手就完成對機器人初始位置的設定了。其實就是兩步,先指定機器人的位置,再指定機器人的朝向。我們可以在地圖中指定導航目標點,讓機器人自動導航到我們的指定的位置。通過 [2D Nav Goal] 按鈕就可以完成。操作步驟和機器人初始位置的設定是類似的,就不累述了。
(圖 39 )獲取地圖中指定點的座標值
有時候我們需要知道地圖中某個位置的座標值,比如我們獲取地圖中各個位置的座標值並填入巡邏軌跡中,讓機器人按照指定巡邏路線巡邏。通過 [Publish Point] 按鈕就可以知道地圖中的任意位置的座標值,點選 [Publish Point] 按鈕,然後將滑鼠放置到想要獲取座標值的位置, rviz 底部顯示欄中就會出現相應的座標值。
( 4 ) rviz 啟動方法
首先需要啟動 roscore ,然後啟動 rviz, 命令如下:
#開啟終端,輸入下面命令 roscore #再開啟一個終端,輸入下面命令 rviz