天天看點

ROS機器人程式設計(原書第2版)3.9.1 使用rqt_rviz在3D世界中實作資料可視化

<b>3.9.1 使用rqt_rviz在3d世界中實作資料可視化</b>

在roscore運作時,啟動rqt_rviz(請注意rviz在ros hydro中依然有效):

我們将會看到如下圖所示的圖形化工作界面:

在左邊有一個displays面闆,在面闆的中間有一個包含了模拟環境下不同參數項的樹形清單。在示例中,已經加載了部分參數項。執行個體中的配置和布局都存儲在了config/example9.rviz檔案中,可以通過點選file | open config加載。

在displays區域之下有一個add按鈕,允許通過主題或類型添加更多的參數項。同時,注意到這裡還有一些全局選項,基本上是用于設定固定坐标系的工具,因為坐标系是可以移動的。其次,還有軸(axes)和網格(grid)作為各個參數項的參照物。在示例中,對于example9節點,我們将會看到标記(marker)和點雲(pointcloud2)。

最後,在狀态欄上有時間相關的資訊提示,以及在右側有一些菜單。tools用于配置一些插件參數,如2d nav

goal和2d pose estimate主題名等。在views目錄提供了不同檢視類型,一般而言有orbit和topdownortho就足夠了,一個用于3d檢視,另一個用于2d俯視檢視,其他目錄顯示了環境中一些可以選擇的元素。在頂部,有一個目前操作模式的菜單欄,包括互動(interact)、移動(move)、測量(measure)等,以及一些插件。

現在運作example9節點:

在rqt_rviz中,我們将會把frame_id設定為标記,這個标記是固定坐标系的坐标标記(frame_marker)。我們将會看到紅色方塊标記在移動,如下圖所示:

類似地,如果設定固定坐标系為frame_pc,我們将看到一個200×100像素點平面所組成的點雲,如下圖所示:

支援的rqt_rviz内置類型的參數清單包括camera和image。它們會在一個類似于image_view的視窗中顯示。選擇camera的時候,需要對它先進行校準,在使用雙目視覺圖像的時候,它允許我們覆寫點雲。我們同樣也可以看到雷射雷達的laserscan資料,紅外/聲呐(ir/sonar)傳感器的錐狀距離資料range,以及3d傳感器例如kinect的pointcloud2。

對于導航功能包集,将會在下一章進行詳細介紹。我們會使用多種資料類型,例如裡程odometry(畫出機器人的裡程位姿),路徑path(畫出機器人所走過的路徑),物體位姿pose,帶有機器人位姿估計的粒子雲posearray,使用occupancy grid map(ogm)的地圖map,以及costmaps(這是ros hydro的map類型,之前是gridcell)。

在這些類型中,需要說明的是機器人的模型robotmodel,它能夠展示機器人元件的cad模型,并将每個元件的坐标系之間的轉換考慮進去,甚至還能畫出坐标變換(tf)樹,并且在仿真環境中為坐标系調試提供非常大的幫助。我們會在下一節展示示例。在robotmodel中,我們用機器人urdf描述中的關節繪制一條軌迹,看它們如何随時間變化移動。

基本元素也可以被表示,例如機器人足迹的polygon、各種不同的标記markers通常支援基本幾何元素,如立方體、球體、線條等,甚至是互動式标記對象interactivemarker。互動式标記對象允許使用者設定标記對象在3d環境中的位姿(位置和方向)。使用下面指令,運作example8節點檢視簡單互動式标記:

你将看到一個标記,可以在rqt_rviz互動模式中移動它。它的位姿可以用于修改系統中另一個參數的位姿,例如機器人關節: