ROS学习笔记九:ROS工具
ROS有各種工具可以幫助用戶使用ROS。應(yīng)該指出,這些GUI工具是對(duì)輸入型命令工具的補(bǔ)充。如果包括ROS用戶個(gè)人發(fā)布的工具,那么ROS工具的數(shù)量很龐大。其中,本文討論的工具是對(duì)于ROS編程非常有用的輔助工具。
本章涵蓋的工具是:
- RViz 三維可視化工具
- rqt 基于Qt的ROS GUI開發(fā)工具
- rqt_image_view 圖像顯示工具(rqt的一類)
- rqt_graph 以圖形顯示節(jié)點(diǎn)和消息之間的相關(guān)關(guān)系的工具(rqt的一類)
- rqt_plot 二維數(shù)據(jù)繪圖工具(rqt的一類)
- rqt_bag 基于GUI的bag數(shù)據(jù)分析工具(rqt的一類)
1 三維可視化工具(RViz)
RViz是ROS的三維可視化工具。它的主要目的是以三維方式顯示ROS消息,可以將數(shù)據(jù)進(jìn)行可視化表達(dá)。例如,可以無需編程就能表達(dá)激光測(cè)距儀(LRF)傳感器中的傳感器到障礙物的距離,RealSense、Kinect或Xtion等三維距離傳感器的點(diǎn)云數(shù)據(jù)(PCD,Point Cloud Data),從相機(jī)獲取的圖像值等。
另外 ,利用用戶指定的多邊形( polygon )支持各種表現(xiàn)形式 ,交互標(biāo)記(Interactive Markers)可以表達(dá)接收來自用戶節(jié)點(diǎn)的命令和數(shù)據(jù)并互交的過程。在ROS中,機(jī)器人以URDF描述,它可以表示為三維模型,并且每個(gè)模型可以根據(jù)自由度進(jìn)行移動(dòng)或驅(qū)動(dòng),因此可以用于仿真或控制。
1.1 RViz安裝與運(yùn)行
以ros- [ROS_DISTRO] -desktop-full命令安裝ROS時(shí),RViz會(huì)默認(rèn)被安裝。如果未安裝“desktop-full”或未安裝RViz,請(qǐng)使用以下命令進(jìn)行安裝。
$ sudo apt-get install ros-kinetic-rvizRViz的運(yùn)行命令如下。就像任何其他的ROS工具一樣,roscore必須運(yùn)行。作為參
考,您也可以使用節(jié)點(diǎn)運(yùn)行命令“rosrun rviz rviz”運(yùn)行它。
1.2 RViz畫面布局
1.3 RViz顯示屏
使用RViz的過程中最常用的菜單應(yīng)該是顯示屏(display)菜單。該顯示屏菜單用于選擇三維視圖(3D View)畫面所顯示的信息,各項(xiàng)目的說明請(qǐng)參照下表。
2 ROS GUI開發(fā)工具(rqt)
除了三維可視化工具RViz之外,ROS還為機(jī)器人開發(fā)提供各種GUI工具。例如,有一個(gè)將每個(gè)節(jié)點(diǎn)的層次結(jié)構(gòu)顯示為圖形,且顯示當(dāng)前節(jié)點(diǎn)和話題狀態(tài)的graph;將消息顯示為二維圖形的plot,等。從ROS Fuerte版本開始,這些GUI開發(fā)工具被稱為rqt,它集成了30多種工具,可以作為一個(gè)綜合的GUI工具來使用。另外,RViz也被集成到rqt的插件中,這使rqt成為ROS的一個(gè)不可缺少的GUI工具。
另外,顧名思義,rqt是基于Qt開發(fā)的,而Qt是一個(gè)廣泛用于計(jì)算機(jī)編程的GUI編程的跨平臺(tái)框架,用戶可以方便自由地添加和開發(fā)插件。本節(jié)介紹rqt插件中的rqt_image_view、rqt_graph、rqt_plot和rqt_bag。
2.1 rqt安裝與運(yùn)行
以ros-[ROS_DISTRO]-desktop-full命令安裝ROS時(shí),rqt會(huì)默認(rèn)安裝。如果未安裝“desktop-full”或未安裝rqt,請(qǐng)使用以下命令進(jìn)行安裝。
$ sudo apt-get install ros-kinetic-rqt*運(yùn)行rqt的命令如下。只需鍵入rqt。作為參考,用戶可以使用節(jié)點(diǎn)執(zhí)行命令rosrun rqt_gui rqt_gui執(zhí)行它。
$ rqt運(yùn)行rqt將顯示rqt的GUI界面,如下圖所示。如果是第一次,它將只顯示菜單,此外沒有任何內(nèi)容。這是因?yàn)檫€沒有指定rqt直接運(yùn)行的插件程序。
rqt的各菜單如下。
- 文件(File) 只有一個(gè)退出rqt的子菜單。
- 插件(Plugins) 有30多個(gè)插件。可以選擇并使用它。
- 動(dòng)作(Running) 顯示當(dāng)前運(yùn)行的插件,在不需要的時(shí)候可以停止。
- 全景(Perspectives) 用于保存當(dāng)前運(yùn)行的插件組,并在下次運(yùn)行相同的插件組。
如果從rqt的頂部菜單中選擇[插件(Plugins)] ,則可以看到大約30個(gè)插件。大部分是非常有用的rqt的默認(rèn)插件。非官方的插件也可以添加到此,需要的話用戶也可以添加自己開發(fā)的rqt插件。 很難說明所有的插件,所以在本文中,我們只了解一下最常用的rqt_image_view、rqt_bag、rqt_graph和rqt_plot插件。
2.2 rqt_image_view
這是一個(gè)顯示相機(jī)的圖像數(shù)據(jù)的插件。這不是一個(gè)圖像處理過程,它只是在簡(jiǎn)單地查看圖像時(shí)非常有用。一般的USB攝像頭支持UVC,所以用戶可以使用ROS的uvc_camera功能包。首先,使用以下命令安裝uvc_camera功能包。
$ sudo apt-get install ros-kinetic-uvc-camera將USB攝像頭連接到計(jì)算機(jī)的USB接口,然后使用以下命令運(yùn)行uvc_camera功能包中的uvc_camera_node節(jié)點(diǎn)。
$ rosrun uvc_camera uvc_camera_node然后用“rqt”命令運(yùn)行rqt,之后從菜單中選擇[Plugins]→[Image View]。如果在左上方的消息選擇下拉列表中選擇“/image_raw”,則可以看到攝像頭拍攝的圖像。
除了從rqt菜單中選擇插件之外,還可以使用專用的運(yùn)行命令,如下所示。
$ rqt_image_view2.3 rqt_graph
rqt_graph是用圖形表示當(dāng)前活動(dòng)中的節(jié)點(diǎn)與在ROS網(wǎng)絡(luò)上傳輸?shù)南⒅g的相關(guān)性的工具。這對(duì)了解當(dāng)前ROS網(wǎng)絡(luò)情況非常有用。用法很簡(jiǎn)單。如以下示例所示,為了查看turtlesim功能包中的turtlesim_node和turtle_teleop_key,以及uvc_camera功能包中的uvc_camera_node節(jié)點(diǎn),將他們分別在不同的終端中運(yùn)行。
$ rosrun turtlesim turtlesim_node $ rosrun turtlesim turtle_teleop_key $ rosrun uvc_camera uvc_camera_node $ rosrun image_ view image_view image:=image_raw運(yùn)行rqt_graph時(shí),節(jié)點(diǎn)和話題的相關(guān)性會(huì)如下圖所示。
在上圖中,橢圓表示節(jié)點(diǎn)(/teleop_turtle、/turtlesim),方塊(/turtle1/cmd_vel)表示話題消息。箭頭表示發(fā)送和接收消息。可以看到,這兩個(gè)節(jié)點(diǎn)正在以平移速度和旋轉(zhuǎn)速度的消息類型(話題名稱:/turtle1/cmd_vel)發(fā)送和接收鍵盤的方向鍵值。
uvc_camera功能包也可以通過rqt_graph確認(rèn)uvc_camera節(jié)點(diǎn)在發(fā)出/image_raw話題消息,并且image_view_xxx節(jié)點(diǎn)在訂閱它。這已經(jīng)通過簡(jiǎn)單的幾個(gè)節(jié)點(diǎn)確認(rèn)過,但在實(shí)際的ROS編程中,會(huì)有數(shù)十個(gè)節(jié)點(diǎn)發(fā)送和接收各種話題消息。此時(shí),rqt_graph對(duì)于檢查當(dāng)前ROS網(wǎng)絡(luò)上節(jié)點(diǎn)的相關(guān)性會(huì)非常的有用。
2.4 rqt_plot
使用下面的命令運(yùn)行rqt_plot,用戶也可以使用節(jié)點(diǎn)執(zhí)行命令rosrun rqt_plot rqt_plot運(yùn)行它。
$ rqt_plotrqt_plot12是一個(gè)二維數(shù)據(jù)繪圖工具。繪圖意味著繪制坐標(biāo)。換句話說,它接收到ROS消息并將其撒在坐標(biāo)系上。例如,假設(shè)要標(biāo)記turtlesim節(jié)點(diǎn)pose消息的x和y坐標(biāo)。首先,運(yùn)行turtlesim功能包中的turtlesim_node。
$ rosrun turtlesim turtlesim_node然后在rqt_plot上方的Topic欄中輸入/turtle1/pose/,則會(huì)在二維(x軸:數(shù)據(jù)值,y軸:時(shí)間)坐標(biāo)系中繪制/turtle1/pose/節(jié)點(diǎn)。或者,您可以使用下一個(gè)命令立即運(yùn)行它,包括指定要圖示的話題。
$ rqt_plot /turtle1/pose/接下來,運(yùn)行turtlesim功能包中的turtle_teleop_key來移動(dòng)屏幕上的烏龜。
$ rosrun turtlesim turtle_teleop_key如下圖所示,可以看到在顯示龜?shù)膞位置、y位置、theta方向和平移轉(zhuǎn)速。這是顯示二維數(shù)據(jù)坐標(biāo)的有用的工具。這里表示了turtlesim功能包,但rqt_plot也可以用于表達(dá)用戶開發(fā)的節(jié)點(diǎn)的二維數(shù)據(jù)。特別地,適合于隨著時(shí)間的推移顯示傳感器值,例如速度和加速度。
2.5 rqt_bag
rqt_bag是一個(gè)可以將消息進(jìn)行可視化的GUI工具。ROS日志信息中的rosbag是基于文本的,但是rqt_bag對(duì)于圖像數(shù)據(jù)類的消息管理是非常有用的,因?yàn)閞qt_bag多了可視化功能,因此可以立即查看攝像機(jī)的圖像值。在測(cè)試之前,運(yùn)行rqt_image_view和rqt_graph的工具說明中提到的turtlesim和uvc_camera中的所有相關(guān)節(jié)點(diǎn)。接下來,用如下命令生成為一個(gè)bag文件,記錄相機(jī)的/image_raw和turtlesim的/turntlesim/turtle1/cmd_vel值
為了利用rqt_bag的特點(diǎn),將USB攝像頭圖像保存為一個(gè)bag文件,然后使用rqt_bag進(jìn)行播放。
$ rosrun uvc_camera uvc_camera_node $ rosbag record /image_raw $ rqt使用 “ rqt ” 命令運(yùn)行rqt ,然后從菜單中選擇[插件( Plugins ) ] → [日志(Logging)]→[包(Bag)]。然后選擇左上方的文件夾圖標(biāo)(Load Bag)加載剛才錄制的*.bag文件。然后,如下圖所示,用戶可以在時(shí)間軸上查看相機(jī)圖像的變化。還可以進(jìn)行放大、回放和查看各時(shí)間點(diǎn)的數(shù)據(jù)值。如果右鍵單擊鼠標(biāo)按鈕,則會(huì)出現(xiàn)“Publish”選項(xiàng)來重新發(fā)送消息。
參考:
《ROS_Robot_Programming》第六章
轉(zhuǎn)載于:https://www.cnblogs.com/linuxAndMcu/p/10650184.html
總結(jié)
以上是生活随笔為你收集整理的ROS学习笔记九:ROS工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《python核心编程第二版》第5章习题
- 下一篇: 分享一些简单的删查改sql语句