ROS學習筆記九:ROS工具


ROS有各種工具可以幫助用戶使用ROS。應該指出,這些GUI工具是對輸入型命令工具的補充。如果包括ROS用戶個人發布的工具,那么ROS工具的數量很龐大。其中,本文討論的工具是對於ROS編程非常有用的輔助工具。

本章涵蓋的工具是:

  • RViz 三維可視化工具
  • rqt 基於Qt的ROS GUI開發工具
  • rqt_image_view 圖像顯示工具(rqt的一類)
  • rqt_graph 以圖形顯示節點和消息之間的相關關系的工具(rqt的一類)
  • rqt_plot 二維數據繪圖工具(rqt的一類)
  • rqt_bag 基於GUI的bag數據分析工具(rqt的一類)

1 三維可視化工具(RViz)

RViz是ROS的三維可視化工具。它的主要目的是以三維方式顯示ROS消息,可以將數據進行可視化表達。例如,可以無需編程就能表達激光測距儀(LRF)傳感器中的傳感器到障礙物的距離,RealSense、Kinect或Xtion等三維距離傳感器的點雲數據(PCD,Point Cloud Data),從相機獲取的圖像值等。

另外 ,利用用戶指定的多邊形( polygon )支持各種表現形式 ,交互標記(Interactive Markers)可以表達接收來自用戶節點的命令和數據並互交的過程。在ROS中,機器人以URDF描述,它可以表示為三維模型,並且每個模型可以根據自由度進行移動或驅動,因此可以用於仿真或控制。


1.1 RViz安裝與運行

ros- [ROS_DISTRO] -desktop-full命令安裝ROS時,RViz會默認被安裝。如果未安裝“desktop-full”或未安裝RViz,請使用以下命令進行安裝。

$ sudo apt-get install ros-kinetic-rviz

RViz的運行命令如下。就像任何其他的ROS工具一樣,roscore必須運行。作為參
考,您也可以使用節點運行命令“rosrun rviz rviz”運行它。

$ rviz

1.2 RViz畫面布局



1.3 RViz顯示屏

使用RViz的過程中最常用的菜單應該是顯示屏(display)菜單。該顯示屏菜單用於選擇三維視圖(3D View)畫面所顯示的信息,各項目的說明請參照下表。


2 ROS GUI開發工具(rqt)

除了三維可視化工具RViz之外,ROS還為機器人開發提供各種GUI工具。例如,有一個將每個節點的層次結構顯示為圖形,且顯示當前節點和話題狀態的graph;將消息顯示為二維圖形的plot,等。從ROS Fuerte版本開始,這些GUI開發工具被稱為rqt,它集成了30多種工具,可以作為一個綜合的GUI工具來使用。另外,RViz也被集成到rqt的插件中,這使rqt成為ROS的一個不可缺少的GUI工具。

另外,顧名思義,rqt是基於Qt開發的,而Qt是一個廣泛用於計算機編程的GUI編程的跨平台框架,用戶可以方便自由地添加和開發插件。本節介紹rqt插件中的rqt_image_view、rqt_graph、rqt_plot和rqt_bag。


2.1 rqt安裝與運行

ros-[ROS_DISTRO]-desktop-full命令安裝ROS時,rqt會默認安裝。如果未安裝“desktop-full”或未安裝rqt,請使用以下命令進行安裝。

$ sudo apt-get install ros-kinetic-rqt*

運行rqt的命令如下。只需鍵入rqt。作為參考,用戶可以使用節點執行命令rosrun rqt_gui rqt_gui執行它。

$ rqt

運行rqt將顯示rqt的GUI界面,如下圖所示。如果是第一次,它將只顯示菜單,此外沒有任何內容。這是因為還沒有指定rqt直接運行的插件程序。

rqt的各菜單如下。

  • 文件(File) 只有一個退出rqt的子菜單。
  • 插件(Plugins) 有30多個插件。可以選擇並使用它。
  • 動作(Running) 顯示當前運行的插件,在不需要的時候可以停止。
  • 全景(Perspectives) 用於保存當前運行的插件組,並在下次運行相同的插件組。

如果從rqt的頂部菜單中選擇[插件(Plugins)] ,則可以看到大約30個插件。大部分是非常有用的rqt的默認插件。非官方的插件也可以添加到此,需要的話用戶也可以添加自己開發的rqt插件。 很難說明所有的插件,所以在本文中,我們只了解一下最常用的rqt_image_view、rqt_bag、rqt_graph和rqt_plot插件。


2.2 rqt_image_view

這是一個顯示相機的圖像數據的插件。這不是一個圖像處理過程,它只是在簡單地查看圖像時非常有用。一般的USB攝像頭支持UVC,所以用戶可以使用ROS的uvc_camera功能包。首先,使用以下命令安裝uvc_camera功能包。

$ sudo apt-get install ros-kinetic-uvc-camera

將USB攝像頭連接到計算機的USB接口,然后使用以下命令運行uvc_camera功能包中的uvc_camera_node節點。

$ rosrun uvc_camera uvc_camera_node

然后用“rqt”命令運行rqt,之后從菜單中選擇[Plugins]→[Image View]。如果在左上方的消息選擇下拉列表中選擇“/image_raw”,則可以看到攝像頭拍攝的圖像。

除了從rqt菜單中選擇插件之外,還可以使用專用的運行命令,如下所示。

$ rqt_image_view

2.3 rqt_graph

rqt_graph是用圖形表示當前活動中的節點與在ROS網絡上傳輸的消息之間的相關性的工具。這對了解當前ROS網絡情況非常有用。用法很簡單。如以下示例所示,為了查看turtlesim功能包中的turtlesim_node和turtle_teleop_key,以及uvc_camera功能包中的uvc_camera_node節點,將他們分別在不同的終端中運行。

$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
$ rosrun uvc_camera uvc_camera_node
$ rosrun image_ view image_view image:=image_raw

運行rqt_graph時,節點和話題的相關性會如下圖所示。

在上圖中,橢圓表示節點(/teleop_turtle、/turtlesim),方塊(/turtle1/cmd_vel)表示話題消息。箭頭表示發送和接收消息。可以看到,這兩個節點正在以平移速度和旋轉速度的消息類型(話題名稱:/turtle1/cmd_vel)發送和接收鍵盤的方向鍵值。

uvc_camera功能包也可以通過rqt_graph確認uvc_camera節點在發出/image_raw話題消息,並且image_view_xxx節點在訂閱它。這已經通過簡單的幾個節點確認過,但在實際的ROS編程中,會有數十個節點發送和接收各種話題消息。此時,rqt_graph對於檢查當前ROS網絡上節點的相關性會非常的有用。


2.4 rqt_plot

使用下面的命令運行rqt_plot,用戶也可以使用節點執行命令rosrun rqt_plot rqt_plot運行它。

$ rqt_plot

rqt_plot12是一個二維數據繪圖工具。繪圖意味着繪制坐標。換句話說,它接收到ROS消息並將其撒在坐標系上。例如,假設要標記turtlesim節點pose消息的x和y坐標。首先,運行turtlesim功能包中的turtlesim_node。

$ rosrun turtlesim turtlesim_node

然后在rqt_plot上方的Topic欄中輸入/turtle1/pose/,則會在二維(x軸:數據值,y軸:時間)坐標系中繪制/turtle1/pose/節點。或者,您可以使用下一個命令立即運行它,包括指定要圖示的話題。

$ rqt_plot /turtle1/pose/

接下來,運行turtlesim功能包中的turtle_teleop_key來移動屏幕上的烏龜。

$ rosrun turtlesim turtle_teleop_key

如下圖所示,可以看到在顯示龜的x位置、y位置、theta方向和平移轉速。這是顯示二維數據坐標的有用的工具。這里表示了turtlesim功能包,但rqt_plot也可以用於表達用戶開發的節點的二維數據。特別地,適合於隨着時間的推移顯示傳感器值,例如速度和加速度。


2.5 rqt_bag

rqt_bag是一個可以將消息進行可視化的GUI工具。ROS日志信息中的rosbag是基於文本的,但是rqt_bag對於圖像數據類的消息管理是非常有用的,因為rqt_bag多了可視化功能,因此可以立即查看攝像機的圖像值。在測試之前,運行rqt_image_view和rqt_graph的工具說明中提到的turtlesim和uvc_camera中的所有相關節點。接下來,用如下命令生成為一個bag文件,記錄相機的/image_raw和turtlesim的/turntlesim/turtle1/cmd_vel值

為了利用rqt_bag的特點,將USB攝像頭圖像保存為一個bag文件,然后使用rqt_bag進行播放。

$ rosrun uvc_camera uvc_camera_node
$ rosbag record /image_raw
$ rqt

使用 “ rqt ” 命令運行rqt ,然后從菜單中選擇[插件( Plugins ) ] → [日志(Logging)]→[包(Bag)]。然后選擇左上方的文件夾圖標(Load Bag)加載剛才錄制的*.bag文件。然后,如下圖所示,用戶可以在時間軸上查看相機圖像的變化。還可以進行放大、回放和查看各時間點的數據值。如果右鍵單擊鼠標按鈕,則會出現“Publish”選項來重新發送消息。


參考:

《ROS_Robot_Programming》第六章



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM