天天看點

ROS機器人程式設計(原書第2版)第3章 可視化和調試工具

<b>第3章</b>

<b>可視化和調試工具</b>

ros附帶了大量功能強大的工具,幫助使用者和開發人員可視化和調試代碼,以便檢測并解決軟硬體問題。其中包括消息日志系統(類似log4cxx)、診斷消息、可視化以及檢測工具。這些工具展示了哪些節點正在運作和它們是如何連接配接的。

本章我們還會展示如何用gdb調試器調試ros節點,介紹用于日志記錄的api,以及如何設定日志記錄級别。接着,我們将解釋如何用ros工具集檢測哪些程序正在運作以及它們之間通信的内容。例如,在下圖所示的系統可視化圖中可以看到正在運作的節點以及用連線表示的資料流。這個工具是rqt_graph,這裡顯示的是reem機器人在gazebo仿真中運作的節點和主題。

從圖中我們可以看到多個關于機械臂、肢體和頭部的控制器、moveit!的move_group節點、抓取和放置操作服務以及play_motion節點的預存儲動作。其他節點釋出joint_states、大量機器人控制器以及移動底盤的搖桿控制等資訊。

同樣,本章會介紹标量資料的時序繪圖工具,視訊流資料的可視化圖,以及用于不同類型資料的3d可視化工具rviz(或rqt_rviz)等,如下圖所示:

可以使用下面指令運作上圖的reem機器人仿真:

注意,在開始安裝此仿真前,請認真閱讀下面網頁的使用說明:http://wiki.ros.org/robots/reem。

在本節中,将介紹以下内容:

如何在ros中調試和優化代碼。

介紹在代碼中添加消息日志并設定不同的級别、命名、特定條件和流選項。這裡我們将解釋rqt_logger_level和rqt_console接口,它們可以分别設定節點錯誤級别和消息可視化。

介紹如何通過清單來檢測ros系統狀态,包括運作的節點、主題、服務和它們之間傳遞資訊的行為以及ros節點管理器中聲明的參數等。我們将介紹以有向圖形式顯示主題和節點的rqt_graph,和可以用來修改動态參數的rqt_reconfigure。

講解如何使用runtime_monitor和robot_monitor接口可視化診斷資訊。

講解如何使用rqt_plot繪制特定消息的标量資料。對于非标量資料,我們将講解ros中的其他rqt工具,例如用rqt_image_view顯示圖像以及用rqt_rviz以3d形式顯示多元資料。還包括如何可視化标記和互動式标記。

介紹坐标系以及如何将它們內建到ros消息和可視化工具之中。以及如何使用rqt_tf_tree來可視化轉換坐标系樹transform frame(tf)。

講解如何儲存主題發送的消息,以及如何重播它們用于仿真或測試目的,并介紹rqt_bag接口。

最後,将介紹rqt_gui接口,以及如何在一個gui視窗中排列顯示它們。

大部分rqt工具可以在終端輸入名稱運作,例如rqt_console,但有時不行,必須使用rosrun rqt_reconfigure

rqt_reconfigure,注意名字雖然是重複的,但其實前一個是功能包的名稱,後一個是節點名稱。