ROS机器人开发实践
上QQ阅读APP看书,第一时间看更新

4.4 rviz三维可视化平台

机器人系统中存在大量数据,比如图像数据中0~255的RGB值。但是这种数据形态的值往往不利于开发者感受数据所描述的内容,所以常常需要将数据可视化显示,例如机器人模型的可视化、图像数据的可视化、地图数据的可视化等,如图4-17所示。

ROS针对机器人系统的可视化需求,为用户提供了一款显示多种数据的三维可视化平台——rviz。

rviz是一款三维可视化工具,很好地兼容了各种基于ROS软件框架的机器人平台。在rviz中,可以使用XML对机器人、周围物体等任何实物进行尺寸、质量、位置、材质、关节等属性的描述,并且在界面中呈现出来。同时,rviz还可以通过图形化方式,实时显示机器人传感器的信息、机器人的运动状态、周围环境的变化等。总而言之,rviz可以帮助开发者实现所有可监测信息的图形化显示,开发者也可以在rviz的控制界面下,通过按钮、滑动条、数值等方式控制机器人的行为。

图4-17 多种数据的可视化显示效果

4.4.1 安装并运行rviz

rviz已经集成在桌面完整版的ROS中,如果已经成功安装桌面完整版的ROS,可以直接跳过这一步骤,否则,请使用如下命令进行安装:


$ sudo apt-get install ros-kinetic-rviz

安装完成后,在终端中分别运行如下命令即可启动ROS和rviz平台:


$ roscore
$ rosrun rviz rviz

启动成功的rviz主界面如图4-18所示。

图4-18 rviz的主界面

rviz主界面主要包含以下几个部分。

·0:3D视图区,用于可视化显示数据,目前没有任何数据,所以显示黑色。

·1:工具栏,用于提供视角控制、目标设置、发布地点等工具。

·2:显示项列表,用于显示当前选择的显示插件,可以配置每个插件的属性。

·3:视角设置区,用于选择多种观测视角。

·4:时间显示区,用于显示当前的系统时间和ROS时间。

rviz的运行已经没问题,那么如何将数据在rviz中可视化显示出来呢?

4.4.2 数据可视化

进行数据可视化的前提当然是要有数据。假设需要可视化的数据以对应的消息类型发布,我们在rviz中使用相应的插件订阅该消息即可实现显示。

首先,需要添加显示数据的插件。点击rviz界面左侧下方的“Add”按钮,rviz会将默认支持的所有数据类型的显示插件罗列出来,如图4-19所示。

图4-19 rviz默认支持的显示插件

在图4-19所示的列表中选择需要的数据类型插件,然后在“Display Name”文本框中填入一个唯一的名称,用来识别显示的数据。例如显示两个激光传感器的数据,可以分别添加两个Laser Scan类型的插件,命名为Laser_base和Laser_head进行显示。

添加完成后,rviz左侧的Dispalys中会列出已经添加的显示插件;点击插件列表前的加号,可以打开一个属性列表,根据需求设置属性。一般情况下,“Topic”属性较为重要,用来声明该显示插件所订阅的数据来源,如果订阅成功,在中间的显示区应该会出现可视化后的数据(见图4-20)。

如果显示有问题,请检查属性区域的“Status”状态(见图4-21)。Status有四种状态:OK、Warning、Error和Disabled,如果显示的状态不是OK,那么请查看错误信息,并仔细检查数据发布是否正常。

图4-20 设置图像显示插件订阅的话题

图4-21 显示插件的Status信息

4.4.3 插件扩展机制

rviz是一个三维可视化平台,默认可以显示如表4-1所示的通用类型数据,其中包含坐标轴、摄像头图像、地图、激光等数据。

表4-1 rviz默认支持显示的数据类型

但作为一个平台,rviz可以显示的数据不仅仅如此。rviz支持插件扩展机制,以上这些数据的显示都基于默认提供的相应插件。如果需要添加其他数据的显示,也可以通过编写插件的形式进行添加。关于rviz插件机制的使用,第12章中会详细讲解。

我们甚至可以基于rviz打造一款自己的人机交互软件,例如图4-22所示的是针对机械臂控制开发的一系列基于rviz的插件,可以完成类似工业机器人示教器的功能,关于该机器人的具体内容将在第13章进行介绍。

图4-22 机械臂人机交互软件