ROS探索總結(五十七)—— Rviz三維視覺化平臺
機器人系統中存在大量資料,這些資料在計算過程中往往都處於資料形態,比如影象資料中0~255的RGB值。但是這種資料形態的值往往不利於開發者去感受資料所描述的內容,所以常常需要將資料視覺化顯示,例如機器人模型的視覺化、影象資料的視覺化、地圖資料的視覺化等。
ROS針對機器人系統的視覺化需求,為使用者提供了一款顯示多種資料的三維視覺化平臺——rviz。
rviz是一款三維視覺化工具,很好的相容了各種基於ROS軟體框架的機器人平臺。在rviz中,可以使用XML對機器人、周圍物體等任何實物進行尺寸、質量、位置、材質、關節等屬性的描述,並且在介面中呈現出來。同時,rviz還可以通過圖形化的方式,實時顯示機器人感測器的資訊、機器人的運動狀態、周圍環境的變化等。
總而言之,rviz幫助開發者實現所有可監測資訊的圖形化顯示,開發者也可以在rviz的控制介面下,通過按鈕、滑動條、數值等方式,控制機器人的行為。
一、安裝並執行rviz
rviz已經整合在桌面完整版的ROS系統當中,如果已經成功安裝了桌面完整版的ROS,可以直接跳過這一步驟,否則,請使用如下命令進行安裝:
-
$ sudo apt-get install ros-kinetic-rviz
安裝完成後,在終端中分別執行如下命令即可啟動ROS系統和rviz平臺:
-
$ roscore
-
$ rosrun rviz rviz
啟動成功的rviz主介面如下圖所示:
該介面主要包含以下幾個部分:
-
0 :3D檢視區,用於視覺化顯示資料,目前沒有任何資料,所以顯示黑色
-
1 :工具欄,提供視角控制、目標設定、釋出地點等工具
-
2 :顯示項列表,用於顯示當前選擇的顯示外掛,可以配置每個外掛的屬性
-
3 :視角設定區,可以選擇多種觀測視角
-
4 :時間顯示區,顯示當前的系統時間和ROS時間
rviz的執行已經沒問題了,那麼如何將資料在rviz中視覺化顯示呢?
二、資料視覺化
進行資料視覺化的前提當然是要有資料,假設需要視覺化的資料以對應的訊息型別釋出,我們在rviz中使用相應的外掛訂閱該訊息即可實現顯示。
首先,需要新增顯示資料的外掛。點選rviz介面左側下方的“Add”按鍵,rviz會將預設支援的所有資料型別的顯示外掛羅列出來,如下圖所示:
在列表中選擇需要的資料型別外掛,然後在“DisplayName”裡填入一個唯一的名稱,用來識別顯示的資料。例如顯示兩個鐳射感測器的資料,可以分別新增兩個LaserScan型別的外掛,命名為Laser_base和Laser_head進行顯示。
新增完成後,rviz左側的Dispaly中會列出已經新增的顯示外掛;點選外掛列表前的加號,可以開啟一個屬性列表,根據需求設定屬性。一般情況下,“Topic”屬性較為重要,用來宣告該顯示外掛所訂閱的資料來源,如果訂閱成功,在中間的顯示區應該會出現視覺化後的資料。
如果顯示有問題,請檢查屬性區域的“Status”狀態。Status有四種狀態:OK、Warning、Error和Disabled,如果顯示的狀態不是OK,那麼請檢視錯誤資訊,並詳細檢查資料釋出是否正常。
三、外掛擴充套件機制
rviz是一個三維視覺化平臺,預設可以顯示下表所示的通用型別資料,其中包含座標軸、攝像頭影象、地圖、鐳射等資料。
但作為一個平臺,rviz可以顯示的資料不僅僅如此。rviz支援外掛擴充套件機制,以上這些資料的顯示都基於預設提供的相應外掛。如果需要新增其他資料的顯示,也可以通過編寫外掛的形式進行新增。關於rviz外掛機制的使用,可參考以下連結:
ofollow,noindex">ROS探索總結(三十四)——rviz plugin
我們甚至可以基於rviz打造一款自己的人機互動軟體,例如下圖所示是古月君針對機械臂控制開發的一系列基於rviz的外掛,可以完成類似工業機器人示教器的功能: