RViz 是 ROS(Robot Operating System)中的一个强大的 3D
可视化工具,用于可视化机器人模型、传感器数据、路径规划等。以下是RViz用户指南,帮助你了解如何使用RViz来进行机器人开发和调试。
启动可视化工具
cpp
ros2 run rviz2 rviz2
当 RViz 首次启动时,您将看到此窗口:
中间的大黑窗口是 3D 视图(因为什么都看不到所以是空的)。左边是显示列表,它会显示您已加载的所有显示。目前它只包含全局选项和网格,我们稍后会讲到。右边是其他一些面板,如下所述。
显示器
显示器是在 3D 世界中绘制某些内容的东西,并且可能在显示器列表中提供一些选项。例如点云、机器人状态等。
添加新显示器
要添加显示,请单击底部的添加按钮:
这将弹出新的显示对话框:
顶部的列表包含显示类型。类型详细说明了此显示将可视化哪种数据。中间的文本框提供了所选显示类型的描述。最后,您必须为显示指定一个唯一的名称。例如,如果您的机器人上有两个激光扫描仪,您可以创建两个名为"激光底座"和"激光头"的显示器。Laser Scan
显示属性
显示状态
每个显示都有自己的状态,以帮助您了解一切是否正常。状态可以是:OK、、或。状态在显示标题的背景颜色中指示,也可以在状态类别中看到,如果显示已展开,您可以查看Warning:ErrorDisabled
类别Status还扩展以显示特定状态信息。此信息对于不同的显示器是不同的,并且消息应该是不言自明的。
内置显示类型
配置
不同的显示器配置通常适用于可视化器的不同用途。例如,对完整 PR2 有用的配置不一定对测试车有用。为此,可视化器允许您加载和保存不同的配置。
配置包含:
-
显示器 + 其属性
-
工具属性
-
3D 可视化的视点和设置
视图面板
可视化器中有许多不同类型的相机可供选择。
相机类型包括不同的相机控制方式和不同类型的投影(正交与透视)。
轨道相机(默认)
轨道摄像机只是围绕焦点旋转,同时始终注视该点。移动摄像机时,焦点会显示为一个小圆盘:
控制:
-
鼠标左键:单击并拖动以围绕焦点旋转。
-
鼠标中键:单击并拖动可在由相机的上和右向量形成的平面中移动焦点。移动的距离取决于焦点 - 如果焦点上有一个物体,并且您单击该物体的上方,该物体将停留在鼠标下方。
-
鼠标右键:单击并拖动以放大/缩小焦点。向上拖动放大,向下拖动缩小。
-
滚轮:放大/缩小焦点
FPS(第一人称)相机
FPS 相机是第一人称相机,因此它会旋转,就像您用头部看一样。
控制:
-
鼠标左键:单击并拖动以旋转。按住 Control 键并单击以拾取鼠标下方的对象并直接查看它。
-
鼠标中键:单击并拖动以沿着相机的上下矢量形成的平面移动。
-
鼠标右键:单击并拖动以沿相机的前向矢量移动。向上拖动向前移动,向下拖动向后移动。
-
滚轮:向前/向后移动。
自上而下的正交
自上而下的正交相机始终沿 Z 轴(在机器人框架中)向下看,并且是正交视图,这意味着物体不会随着距离变远而变小。
控制:
-
鼠标左键:单击并拖动以绕 Z 轴旋转。
-
鼠标中键:单击并拖动可沿 XY 平面移动相机。
-
鼠标右键:单击并拖动以放大图像。
-
滚轮:缩放图像。
XY 轨道
与轨道相机相同,焦点限制在 XY 平面内。
控制:
- 参见轨道相机。
第三人称跟随者
相机保持朝向目标框架的恒定视角。与 XY 轨道相反,如果目标框架偏航,相机就会转动。例如,如果您正在对有角落的走廊进行 3D 映射,这可能会很方便。
控制:
- 参见轨道相机。
自定义视图
视图面板还允许您创建不同的命名视图,这些视图会被保存并可在其中切换。视图由目标框架、相机类型和相机姿势组成。您可以通过单击视图面板的"保存"按钮来保存视图。
配置选项解释
Current View :
当前选定的视图类型及其配置参数。以下是Orbit视图的具体参数说明:
- Near Clip Distance: 最近裁剪距离,表示相机能看到的最近距离。默认值为0.01。
- Invert Z Axis: 反转Z轴。选中此选项会使Z轴向下。
- Target Frame: 目标框架,视图将相对于该框架进行渲染。通常设置为。
- Distance: 相机与焦点之间的距离。默认值为10。
- Focal Shape Size: 焦点形状的大小。默认值为0.05。
- Focal Shape Fixed Size: 焦点形状固定大小。选中此选项将使焦点形状始终保持相同大小。
- Yaw: 水平旋转角度,表示绕垂直轴的旋转。
- Pitch: 垂直旋转角度,表示绕水平轴的旋转。
- Focal Point: 焦点坐标,表示相机将围绕的中心点。默认值为0; 0; 0。
坐标系
RViz 使用 tf 变换系统将数据从其到达的坐标系转换为全局参考系。在可视化工具中,有两个坐标系很重要,即目标坐标系和固定坐标系。
固定框架
这两个框架中最重要的是固定框架。固定框架是用来表示框架的参考框架world。这通常是map、 或world或类似的东西,但也可以是,例如,你的里程计框架。
如果错误地将固定框架设置为机器人的底座,那么机器人曾经见过的所有物体都会出现在机器人前方,位于相对于检测到它们的机器人的位置。为了获得正确的结果,固定框架不应相对于世界移动。
如果改变固定框架,所有当前显示的数据都会被清除,而不是重新转换。
目标框架
目标坐标系是相机视图的参考坐标系。例如,如果您的目标坐标系是地图,您将看到机器人在地图上行驶。如果您的目标坐标系是机器人的底座,机器人将保持在同一位置,而其他所有物体都相对于它移动。
工具
可视化工具的工具栏上有许多工具可供使用。以下部分将简要介绍这些工具。您可以在"帮助"->"显示帮助面板"下找到更多信息。
2D 姿态估计
此工具可让您设置初始姿势以播种定位系统(在initialposeROS 主题上发送)。单击地面上的某个位置并拖动以选择方向。可以在面板中更改输出主题。Tool Properties
此工具与导航堆栈配合使用。
键盘快捷键:p
2D 导航目标
此工具可让您设置 ROS 主题上发送的目标goal_pose。单击地面上的某个位置并拖动以选择方向。可以在面板中更改输出主题。Tool Properties
此工具与导航堆栈配合使用。
键盘快捷键:g
发布点
发布点工具可让您在可视化工具中选择一个对象,然后该工具将根据框架发布该点的坐标。结果显示在底部,就像测量工具一样,但也发布在主题上clicked_point。
键盘快捷键:u
时间
在模拟器中运行时,"时间"面板非常有用,因为它允许您查看已过去的 ROS 时间,以及已过去的(即实际)时间。时间面板还允许您重置可视化工具的内部时间状态,这将重置所有显示以及 tf 的内部数据缓存。Wall Clock
如果您没有在模拟中运行,时间面板几乎毫无用处。在大多数情况下,它可以关闭,您可能甚至不会注意到(除了为 rviz
的其余部分留出更多的屏幕空间)。