iT邦幫忙

2023 iThome 鐵人賽

0

Visualization

資料視覺化是一種將資料以圖形的方式呈現的技術,透過視覺化的方式,可以讓使用者更容易理解資料的意義,並且可以更容易找出資料中的關聯性,進而做出更好的決策。

拿最簡單的影像來說,就是將RGB的陣列顯示成圖片,這樣就可以讓使用者更容易理解影像的內容。深度裝置的點雲則是需要用3D的引擎來預覽並且可以平移旋轉來查看。而慣性導航裝置(IMU)在視覺話後,可以清楚地看到運動的姿態。路徑規劃的部分則可以在事先建立好的地圖上顯示出路徑,並且可以看到機器人的位置和周遭的障礙物,更好監控演算法是否正確。前面介紹過的transform在3D的場景中則是可以清楚地看到不同frame之間的相對位置。

RViz

ROS官方就有提供這個3D引擎,稱作RViz,可以用來顯示機器人的模型、感測器的資料、路徑規劃的結果等等。RViz是一個非常好用的工具,可以讓使用者更容易理解機器人的狀態,並且可以用來做除錯。

啟動RViz的指令如下:

rviz2

其中可以看到RViz的介面如下圖所示:
rviz2

接著首現要設定Global Options中的Fixed Frame。一般會設定在機器人的base_footprint,也就是baseframe的影子的概念,永遠會在地上。如果存粹要顯示Sensor的話,會把Fixed Frame設定在Sensor的frame(像是velodyne),這樣就可以看到Sensor的資料(像是velodyne_points)了。

可以在Add的按鈕中顯示各種預設的資料:
rviz2_add
其中可以選則by display type或是by topic來顯示。

新增完後可以看到Topic的下拉選單,選擇欲顯示的Topic後,就可以看到資料了。如果沒有東西的話一般會先檢查Fixed Frame是否設定正確。再來可能就是TF的問題,可以Add TF來看看相對位置是否正確或甚至是有沒有TF的資料。最後就是檢查Topic有沒有正常發布。

在上方工具列的File可以儲存設定好的Layout成.rviz,方便下次開啟時可以直接套用。要在開啟時載入.rviz,使用以下指令:

rviz2 -d <path_to_rviz_file>

Plugin

RViz本身有許多插件可以使用。其中,最常使用的就是Marker,可以在RViz中顯示各種形狀的物件,像是球體、立方體、箭頭甚至文字等等。Marker的使用方式可以參考ROS官方教學

另外還有IMU的插件,可以顯示慣性導航裝置的姿態和加速的大小。具體使用方式可以參考ROS官方教學

雖然是ROS的教學,但這不分沒有太多變化,就是把marker的部分改成rviz2就可以了。

再來就是imu plugin了。雖然官方沒有提供正式的imu plugin,目前主流是用imu-tools。在安裝完後,可以在RViz2中Add IMU的Topic,就可以看到慣性導航裝置的姿態(箭頭)和加速的大小(箭頭長度)了。
imu_plugin

其時還有很多可以自製的plugin,像是在RViz內自製搖桿、電池電量顯示等等。不過因為RViz是用Qt寫的,所以要自製plugin的話,需要先學習Qt的基礎,已經超出本教學的範圍了。這篇文章有詳細的列出如何寫出3D的電量顯示工具,主要靠著Qt和RViz的API還有ROSpluginlib來實現。

Foxglove Studio

Foxglove Studio是現在加州開放自駕車的第一批公司之一,Cruise所開發的的工具,可以用來視覺化ROS2的資料,並在網頁上顯示和調整版面,是非常好用且美觀的工具。他是基於原本的開源webviz所延伸出來的。ROS2官方也有簡單的介紹教學,或是直接到Foxglove Studio的網站上看看。
foxglove studio

ROS vs. ROS2

說明 ROS ROS2
RViz rviz rviz2

Reference



上一篇
Day26 ROS2 RQT工具
下一篇
Day28 ROS2 ROS1 Bridge
系列文
ROS2 及 ROS Porting 自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言