ROS机器人编程学习(六)——ROS工具

第6章 ROS工具
本章介绍了ROS的实用工具—— RViz 和 rqt 。
RViz是ROS的三维可视化工具,便于三维视图的构建和显示。
rqt是GUI开发工具,便于图像查看,重点介绍了rqt_plot、rqt_bag等常用功能。

PS:1024程序员节日快乐!😃

GUI工具:

在这里插入图片描述

6.1 三维可视化工具(RViz)

RViz是ROS的三维可视化工具。
它的主要目的是以三维方式显示ROS消息,可以将数据进行可视化表达

在ROS中,机器人以URDF(Unified Robot Description Format,统一机器人描述格式)描述,它可以表示为三维模型,并且每个模型可以根据自由度进行移动或驱动,因此可以用于仿真或控制。

6.1.1 RViz安装与运行

以“ros- [ROS_DISTRO] -desktop-full”命令安装ROS时,RViz会默认被安装。

RViz的运行命令如下:

$ roscore
$ rviz

6.1.2 RViz画面布局

在这里插入图片描述

  1. 3D视图(3D view):
    指屏幕的黑色部分。它是可以用三维方式查看各种数据的主屏幕。3D视图的背景颜色、固定框架、网格等可以在左侧显示的全局选项(Global Options)和网格(Grid)项目中进行详细设置。

  2. 显示屏(Displays):
    左侧的显示屏是从各种话题当中选择用户所需的数据的视图的区域。

  3. 菜单(Menu):
    菜单位于顶部。用户可以选择保存或读取显示屏状态的命令,还可以选择各种面板。

  4. 工具(Tools):
    工具是位于菜单下方的按钮,允许用户用各种功能按键选择多种功能的工具,例如
    Interact、Move Camera、Select,Focus Camera、Measure、2D Pose Estimate、2D Navigation Goal
    以及Publish Point等。

  5. 视图(Views):
    设定三维视图的视点
    ■Orbit:以指定的视点(在这里称为Focus)为中心旋转。
    ■FPS(第一人称):显示第一人称视点所看到的画面。
    ■ThirdPersonFollower:显示以第三人称的视点尾追特定目标的视图。
    ■TopDownOrtho:这是Z轴的视图,与其他视图不同,以直射视图显示,而非透视法。
    ■XYOrbit:类似于Orbit的默认值,但焦点固定在Z轴值为0的XY平面上。

  6. 时间(Time):
    显示当前时刻(wall time)、ROS Time以及他们各自经过的时间。这主要用于仿真,如果需要重新启动,请点击底部的[Reset]按钮。


6.1.3 RViz显示屏

显示屏菜单用于选择三维视图(3D View)画面所显示的信息。

在这里插入图片描述

(显示屏菜单的项目实在太多,此处不进行列举,参考《ROS机器人编程》P164)

6.2 ROS GUI开发工具(rqt)

ROS为机器人开发提供各种GUI工具,从ROS Fuerte版本开始,这些GUI开发工具被称为rqt,它集成了30多种工具,可以作为一个综合的GUI工具来使用。

rqt是基于Qt开发的,而Qt是一个广泛用于计算机编程的GUI编程的跨平台框架,用户可以方便自由地添加和开发插件。

6.2.1 rqt安装与运行

以“ros-[ROS_DISTRO]-desktop-full”命令安装ROS时,rqt会默认安装。

$ roscore
$ rqt

或者,用户可以使用节点执行命令执行

$ rosrun rqt_gui rqt_gui

rqt菜单:

在这里插入图片描述

6.2.2 rqt插件

顶部菜单中选择 [插件(Plugins)] ,则可以看到大约30个插件。

各插件解释见《ROS机器人编程》P167-P169

在这里插入图片描述

6.2.3 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

用Image View查看USB摄像头的图像数据的结果:

$ rqt
$ rqt_image_view

6.2.4 rqt_graph

rqt_graph是用图形表示当前活动中的节点与在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)表示话题消息。箭头表示发送和接收消息。

在这里插入图片描述

6.2.5 rqt_plot

rqt_plot是一个二维数据绘图工具。

使用rqt_plot遇到了一堆error,查了一下,有说是python和Matplotlib版本的问题,也有可能是没有安装Matplotlib。

在这里插入图片描述
参考了下面两个博客,顺利解决问题:
ROS中rqt_plot报错
Ubuntu16.04中rqt_plot出现错误-已解决。

sudo apt install python-pip
python -m pip install -U pip
python -m pip install -U matplotlib 

运行小海龟测试,在二维坐标系中绘制/turtle1/pose/节点。

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
$ rqt_plot /turtle1/pose

可以看到在显示龟的x位置、y位置、theta方向和平移转速。这是显示二维数据坐标的有用的工具。这里表示了turtlesim功能包,但rqt_plot也可以用于表达用户开发的节点的二维数据。特别地,适合于随着时间的推移显示传感器值,例如速度和加速度。

在这里插入图片描述
在这里插入图片描述

6.2.6 rqt_bag

rqt_bag是一个可以将消息进行可视化的GUI工具,对于图像数据类的消息管理是非常有用的,可以查看摄像机的图像值。

rqt_bag是rosbag的GUI版本,和rosbag一样,它可以存储、回放和压缩话题消息。另外,由于它是一个GUI程序,所有的命令都是用按钮制作的,所以它很容易使用,并且用户可以用类似使用视频编辑器一样,在时间轴上来回查看摄像机图像。

$ roscore
$ rosrun uvc_camera uvc_camera_node
$ rosbag record /image_raw
$ rqt

从 rqt 菜单中选择[插件(Plugins)]→[日志(Logging)]→[包(Bag)]。然后选择左上方的文件夹图标(Load Bag)加载刚才录制的*.bag文件。

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值