天天看点

ROS机器人程序设计(原书第2版)3.9.1 使用rqt_rviz在3D世界中实现数据可视化

<b>3.9.1 使用rqt_rviz在3d世界中实现数据可视化</b>

在roscore运行时,启动rqt_rviz(请注意rviz在ros hydro中依然有效):

我们将会看到如下图所示的图形化工作界面:

在左边有一个displays面板,在面板的中间有一个包含了模拟环境下不同参数项的树形列表。在示例中,已经加载了部分参数项。实例中的配置和布局都存储在了config/example9.rviz文件中,可以通过点击file | open config加载。

在displays区域之下有一个add按钮,允许通过主题或类型添加更多的参数项。同时,注意到这里还有一些全局选项,基本上是用于设定固定坐标系的工具,因为坐标系是可以移动的。其次,还有轴(axes)和网格(grid)作为各个参数项的参照物。在示例中,对于example9节点,我们将会看到标记(marker)和点云(pointcloud2)。

最后,在状态栏上有时间相关的信息提示,以及在右侧有一些菜单。tools用于配置一些插件参数,如2d nav

goal和2d pose estimate主题名等。在views目录提供了不同查看类型,一般而言有orbit和topdownortho就足够了,一个用于3d查看,另一个用于2d俯视查看,其他目录显示了环境中一些可以选择的元素。在顶部,有一个当前操作模式的菜单栏,包括交互(interact)、移动(move)、测量(measure)等,以及一些插件。

现在运行example9节点:

在rqt_rviz中,我们将会把frame_id设置为标记,这个标记是固定坐标系的坐标标记(frame_marker)。我们将会看到红色方块标记在移动,如下图所示:

类似地,如果设置固定坐标系为frame_pc,我们将看到一个200×100像素点平面所组成的点云,如下图所示:

支持的rqt_rviz内置类型的参数列表包括camera和image。它们会在一个类似于image_view的窗口中显示。选择camera的时候,需要对它先进行校准,在使用双目视觉图像的时候,它允许我们覆盖点云。我们同样也可以看到激光雷达的laserscan数据,红外/声呐(ir/sonar)传感器的锥状距离数据range,以及3d传感器例如kinect的pointcloud2。

对于导航功能包集,将会在下一章进行详细介绍。我们会使用多种数据类型,例如里程odometry(画出机器人的里程位姿),路径path(画出机器人所走过的路径),物体位姿pose,带有机器人位姿估计的粒子云posearray,使用occupancy grid map(ogm)的地图map,以及costmaps(这是ros hydro的map类型,之前是gridcell)。

在这些类型中,需要说明的是机器人的模型robotmodel,它能够展示机器人组件的cad模型,并将每个组件的坐标系之间的转换考虑进去,甚至还能画出坐标变换(tf)树,并且在仿真环境中为坐标系调试提供非常大的帮助。我们会在下一节展示示例。在robotmodel中,我们用机器人urdf描述中的关节绘制一条轨迹,看它们如何随时间变化移动。

基本元素也可以被表示,例如机器人足迹的polygon、各种不同的标记markers通常支持基本几何元素,如立方体、球体、线条等,甚至是交互式标记对象interactivemarker。交互式标记对象允许用户设定标记对象在3d环境中的位姿(位置和方向)。使用下面命令,运行example8节点查看简单交互式标记:

你将看到一个标记,可以在rqt_rviz交互模式中移动它。它的位姿可以用于修改系统中另一个参数的位姿,例如机器人关节: