【ROS2】中级:RViz- RViz 用户指南

RViz 是机器人操作系统 (ROS) 框架的 3D 可视化工具。

  •  RViz 用户指南 

    https://docs.ros.org/en/jazzy/Tutorials/Intermediate/RViz/RViz-User-Guide/RViz-User-Guide.html

  • 构建自定义 RViz 显示器

    https://docs.ros.org/en/jazzy/Tutorials/Intermediate/RViz/RViz-Custom-Display/RViz-Custom-Display.html

 RViz 用户指南

 目标:了解 RViz

教程级别:中级

 时间:25 分钟

 目录

  •  背景

  • 安装或构建 rviz

  •  启动

  •  显示

    • 添加新显示

    •  显示属性

    •  显示状态

    •  内置显示类型

  •  配置

  •  视图面板

    • 轨道相机(默认)

    • FPS(第一人称视角)相机

    •  自上而下正投影

    •  XY 轨道

    •  第三人称追随者

    •  自定义视图

  •  坐标系

    •  固定框架

    •  目标框架

  •  工具

    •  交互

    •  移动相机

    • 选择

    •  聚焦相机

    •  测量

    •  2D 位姿估计

    •  2D 导航目标

    •  发布点

  •  时间

 背景

RViz 是机器人操作系统 (ROS) 框架的 3D 可视化工具

安装或构建 rviz 

请按照您的操作系统的安装说明安装 RViz。

 启动 

不要忘记获取设置文件。

source /opt/ros/jazzy/setup.bash

然后启动可视化工具

ros2 run rviz2 rviz2

当 RViz 第一次启动时,您将看到此窗口:

c525e803c9af9ac7ff58e058c62db418.png

中间的大黑窗口是 3D 视图(因为没有任何东西所以是空的)。左边是显示列表,将显示您加载的任何显示。现在它只包含全局选项和一个网格,我们稍后会介绍。右边是其他一些面板,如下所述。

 显示

显示器是指在 3D 世界中绘制某些内容的设备,并且可能在显示器列表中有一些可用选项。例如,点云、机器人状态等。

添加新显示器

要添加显示器,请单击底部的添加按钮:

3cfaa68376f57a368f2607307ad7fdf6.png

这将弹出新的显示对话框:

964c3a7b87ce740f7b1ab95e84df102a.png

顶部的列表包含显示类型。类型详细说明了此显示将可视化的数据类型。中间的文本框提供了所选显示类型的描述。最后,您必须为显示提供一个唯一的名称。例如,如果您的机器人上有两个激光扫描仪,您可能会创建两个名为“Laser Base”和“Laser Head”的 Laser Scan 显示。

 显示属性

每个显示器都有自己的属性列表。例如:

a92417c1bbb075e1487586c4d52d4faf.png

 显示状态

每个显示都有自己的状态,以帮助您了解一切是否正常。状态可以是: OK 、 Warning 、 Error 或 Disabled 。状态通过显示器标题的背景颜色以及在展开显示器时可以看到的状态类别来指示:

5559f3b0a312258eb9843d2aab26039f.png

Status 类别还会扩展以显示特定的状态信息。此信息因不同显示器而异,消息应能自我解释。

内置显示类型

Name

描述

Description

Messages Used

Axes

显示一组坐标轴

Displays a set of Axes


Effort

显示了对机器人每个旋转关节所付出的努力(力或力矩)

Shows the effort being put into each revolute joint of a robot

sensor_msgs/msg/JointStates

Camera

创建一个从相机视角的新渲染窗口,并将图像覆盖在其上。

Creates a new rendering window from the perspective of a camera, and overlays the image on top of it.

sensor_msgs/msg/Image, sensor_msgs/msg/CameraInfo

Grid

显示沿平面显示二维或三维网格

Displays a 2D or 3D grid along a plane


Grid Cells

从网格中绘制单元格,通常是导航堆栈中的成本地图中的障碍物。

Draws cells from a grid, usually obstacles from a costmap from the navigation stack.

nav_msgs/msg/GridCells

Image

创建一个带有图像的新渲染窗口。与相机显示不同,此显示不使用 CameraInfo。

Creates a new rendering window with an Image. Unlike the Camera display, this display does not use a CameraInfo

sensor_msgs/msg/Image

InteractiveMarker

显示来自一个或多个交互标记服务器的 3D 对象,并允许鼠标与它们进行交互

Displays 3D objects from one or multiple Interactive Marker servers and allows mouse interaction with them

visualization_msgs/msg/InteractiveMarker

Laser Scan

显示激光扫描的数据,并提供不同的渲染模式、累积等选项。

Shows data from a laser scan, with different options for rendering modes, accumulation, etc.

sensor_msgs/msg/LaserScan

Map

在地面平面上显示地图。

Displays a map on the ground plane.

nav_msgs/msg/OccupancyGrid

Markers

允许程序员通过一个主题显示任意的基本形状

Allows programmers to display arbitrary primitive shapes through a topic

visualization_msgs/msg/Marker, visualization_msgs/msg/MarkerArray

Path

显示导航堆栈中的路径。

Shows a path from the navigation stack.

nav_msgs/msg/Path

Point

将一个点绘制为一个小球体。

Draws a point as a small sphere.

geometry_msgs/msg/PointStamped

Pose

将位姿绘制为箭头或轴

Draws a pose as either an arrow or axes.

geometry_msgs/msg/PoseStamped

Pose Array

将位姿数组中的每个姿态绘制为“云”中的箭头

Draws a “cloud” of arrows, one for each pose in a pose array

geometry_msgs/msg/PoseArray

Point Cloud(2)

显示点云中的数据,并提供不同的渲染模式、累积等选项。

Shows data from a point cloud, with different options for rendering modes, accumulation, etc.

sensor_msgs/msg/PointCloud, sensor_msgs/msg/PointCloud2

Polygon

绘制多边形的轮廓作为线条。

Draws the outline of a polygon as lines.

geometry_msgs/msg/Polygon

Odometry

随着时间的推移累积里程计位姿。

Accumulates odometry poses from over time.

nav_msgs/msg/Odometry

Range

显示代表声纳或红外范围传感器的测量范围的圆锥。版本:Electric+

Displays cones representing range measurements from sonar or IR range sensors. Version: Electric+

sensor_msgs/msg/Range

RobotModel

显示机器人在正确位姿下的视觉表示(如当前 TF 变换所定义)。

Shows a visual representation of a robot in the correct pose (as defined by the current TF transforms).


TF

显示 tf2 变换层次结构。

Displays the tf2 transform hierarchy.


Wrench

将力旋量画为箭头(力)和箭头+圆圈(扭矩)

Draws a wrench as arrow (force) and arrow + circle (torque)

geometry_msgs/msg/WrenchStamped

Twist

将运动旋量画为箭头(线性)和箭头+圆圈(角度)

Draws a twist as arrow (linear) and arrow + circle (angular)


配置 

不同的显示配置通常对可视化工具的不同用途很有用。例如,对完整的 PR2 有用的配置不一定对测试车有用。为此,可视化工具允许您加载和保存不同的配置。

一个配置包含:

  • 显示及其属性

  • 工具属性

  • 3D 可视化的视点和设置

视图面板

可视化工具中有多种不同类型的相机可供选择。

9c142e714fe006b0457e5f9635c0ddd3.jpeg

相机类型包括不同的控制相机方式和不同的投影类型(正投影与透视投影)。

轨道相机(默认)

轨道相机只是围绕一个焦点旋转,同时始终注视该点。移动相机时,焦点显示为一个小圆盘。

bac6b80c0adf7a9f8d482a8666da40e6.png

控件:

  • 左键:点击并拖动以围绕焦点旋转。

  • 中键:点击并拖动以移动由相机的上向量和右向量形成的平面中的焦点。移动的距离取决于焦点——如果焦点上有一个物体,并且你点击它,它将保持在你的鼠标下。

  • 右键:点击并拖动以放大/缩小焦点。向上拖动放大,向下拖动缩小。

  • 滚轮:放大/缩小焦点

第一人称视角 (FPS) 摄像机

FPS 相机是第一人称相机,所以它旋转时就像你用头在看一样。

 控件:

  • 左键:点击并拖动以旋转。按住 Ctrl 键并点击以选择鼠标下的对象并直接查看。

  • 中键:点击并拖动以沿由相机的上向量和右向量形成的平面移动。

  • 右键:点击并拖动以沿着相机的前向矢量移动。向上拖动前进,向下拖动后退。

  • 滚轮:向前/向后移动。

 自上而下正交 

自上而下的正交相机始终沿着 Z 轴(在机器人框架中)向下看,并且是正交视图,这意味着物体随着距离的增加不会变小。

 控件:

  • 左键:点击并拖动以绕 Z 轴旋转。

  • 中键:点击并拖动以沿 XY 平面移动相机。

  • 右键:点击并拖动以缩放图像。

  • 滚轮:放大图像。

 XY 轨道

与轨道相机相同,焦点限制在 XY 平面。

 控件:

 查看轨道相机。

第三人称跟随者

摄像机保持对目标框架的恒定视角。与 XY 轨道相比,如果目标框架偏航,摄像机会转动。例如,如果您正在进行带有拐角的走廊的 3D 映射,这可能会很方便。

 控件:

 查看轨道相机。

第三人称跟随者

摄像机保持对目标框架的恒定视角。与 XY 轨道相比,如果目标框架偏航,摄像机会转动。例如,如果您正在进行带有拐角的走廊的 3D 映射,这可能会很方便。

 控件:

 查看轨道相机。

 自定义视图

视图面板还允许您创建不同的命名视图,这些视图会被保存并可以在它们之间切换。一个视图由目标框架、相机类型和相机姿态组成。您可以通过点击视图面板的保存按钮来保存视图。

b77536b9741307a26c5ec982b4d0925f.png

视图包括:

  •  查看控制器类型

  • 查看配置(位置、方向等;可能因每种视图控制器类型而异。)

  •  目标框架

视图是按用户保存的,而不是在配置文件中。

 坐标系

RViz 使用 tf 变换系统将数据从其到达的坐标系转换为全局参考系。在可视化工具中,有两个重要的坐标系需要了解,即目标坐标系和固定坐标系。

固定框架

两个框架中更重要的是固定框架。固定框架是用于表示 world 框架的参考框架。这通常是 map ,或 world ,或类似的东西,但也可以是,例如,你的里程计框架。

如果固定框架被错误地设置为机器人的基座,那么机器人曾经看到的所有物体都会出现在机器人前面,在它们被检测到的相对于机器人的位置。为了获得正确的结果,固定框架不应相对于世界移动

如果更改固定框架,则当前显示的所有数据将被清除,而不是重新转换

目标框架

目标框架是相机视图的参考框架。例如,如果您的目标框架是地图,您将看到机器人在地图上行驶。如果您的目标框架是机器人的底座,机器人将保持在同一位置,而其他所有物体相对于它移动。

工具

可视化工具有许多工具可以在工具栏上使用。以下部分将简要介绍这些工具。您可以在帮助 -> 显示帮助面板下找到更多信息。

da26b07db538ac091960ec8d60d6a69e.png

键盘控制

切换工具

这些控制在所有模式下都有效,除了捕获所有按键的工具(选择工具)。

  • C:切换到焦点相机工具。

  • M:切换到移动相机工具。

  • N:切换到测量工具。

  • U:切换到发布点工具。

  • S:切换到选择工具。

  • G:切换到2D目标姿态工具。

  • P:切换到2D姿态估计工具。

控制视点

这些控制仅在使用移动相机和交互工具时有效。

  • F:将焦点移动到鼠标下的3D点。这并不适用于所有显示对象或所有计算机(目前)。

  • Z:跳回到查看原点,即默认视图位置。

此控制仅在使用选择工具时有效。

  • F:将焦点移动到当前选定对象的质心。

修改显示列表

  • Ctrl-N:添加显示

  • Ctrl-X:移除显示

  • Ctrl-R:重命名显示

文件操作

  • Ctrl-O:打开配置文件

  • Ctrl-S:保存到配置文件(打开文件选择器)

  • Ctrl-Q:退出RViz,首先将当前配置保存到 ~/.rviz/display_config

鼠标控制

环绕视图控制器

在此视图中,视点始终对准焦点。你可以围绕该点移动(环绕它)或移动该点本身。

  • 左键:拖动以围绕焦点旋转。

  • 中键或Shift-左键:拖动以移动焦点。

  • 滚轮:向上或向下滚动以放大或缩小焦点。

  • 右键:向上或向下拖动以放大或缩小焦点。

  • Shift-右键:向上或向下拖动以向前或向后移动焦点。

XY环绕视图控制器

类似于环绕视图控制器,但焦点保持在Z=0(地面)平面上。

  • 左键:拖动以围绕焦点旋转。

  • 中键或Shift-左键:拖动以在地面平面上移动焦点。

  • 滚轮:向上或向下滚动以放大或缩小焦点。

  • 右键:向上或向下拖动以放大或缩小焦点。

FPS视图控制器

受第一人称射击游戏启发。拖动以指向你的头部。

  • 左键:拖动旋转视点到拖动方向。

  • 中键或Shift-左键:拖动以平移(平移)左右和上下。

  • 滚轮:向上或向下滚动以向前或向后移动视点。

  • 右键:向上或向下拖动以向前或向后移动视口。

俯视正交视图控制器

俯视正交视图。

  • 左键:左右拖动旋转视图。

  • 中键或Shift-左键:拖动以在XY平面上移动视点。

  • 滚轮:向上或向下滚动以放大或缩小。

  • 右键:向上或向下拖动以放大或缩小。

 

e08793e7076dee00e87f3c58c88050a1.png

互动 

此工具允许您与可视化环境进行交互。您可以点击对象,并根据其属性简单地选择它们、移动它们等。

 键盘快捷键: i

 移动相机

移动相机工具是默认工具。选择此工具后,单击 3D 视图内部,视点将根据您在 Views 面板中选择的选项和相机类型进行更改。有关更多信息,请参见上一节 Views Panel 。

 键盘快捷键: m

 选择 

选择工具允许您选择在 3D 视图中显示的项目。它支持单点选择以及点击/拖动框选择。您可以使用 Shift 键添加到选择中,并使用 Ctrl 键从选择中删除。如果您想在选择时移动相机而不切换回移动相机工具,可以按住 Alt 键。 f 键将使相机聚焦于当前选择。

b8a0278d7d42378b049bff5bb0abc8fe.png

763a0111ff23834bcd15495bf28725cd.png

 键盘快捷键: s

 聚焦相机

聚焦相机允许您在可视化工具中选择一个位置。然后,相机将通过改变其方向而不是位置来聚焦该点。

 键盘快捷键: c

 测量

使用测量工具,您可以测量可视化器中两点之间的距离。激活工具后的第一次点击将设置测量的起点,第二次点击将设置测量的终点。测量结果将显示在 RViz 窗口的底部。但请注意,测量工具仅适用于可视化器中实际渲染的对象,不能在空白空间中使用。

4d8b349c230d3d832acc4c9418318ce3.png

 键盘快捷键: n

2D 姿态估计

此工具允许您设置初始姿态以启动定位系统(发送到 initialpose ROS 主题)。点击地面平面上的位置并拖动以选择方向。输出主题可以在 Tool Properties 面板中更改。

695e9a3bac3210b5397d2372d34d7bb0.png

此工具与导航堆栈一起工作。

 键盘快捷键: p

647d9419306d3a515675cf3c4670c3f0.png

[INFO] [1720963859.745295495] [rviz2]: Setting estimate pose: Frame:map, Position(3.28002, 0.388191, 0), Orientation(0, 0, -0.934701, 0.355435) = Angle: -2.41483

2D 导航目标

此工具允许您在 goal_pose ROS 主题上设置目标。点击地面平面上的位置并拖动以选择方向。输出主题可以在 Tool Properties 面板中更改。

此工具与导航堆栈一起工作。

 键盘快捷键: g

[INFO] [1720963953.558775293] [rviz2]: Setting goal pose: Frame:map, Position(2.04239, -0.169836, 0), Orientation(0, 0, -0.769799, 0.638287) = Angle: -1.75705

发布点 

发布点工具允许您在可视化工具中选择一个对象,该工具将根据框架发布该点的坐标。结果显示在底部,就像测量工具一样,但也会发布在 clicked_point 主题上。

 键盘快捷键: u

 时间

时间面板在模拟器中运行时最有用,因为它允许您查看已过去的 ROS 时间与已过去的 Wall Clock (即实际)时间的对比。时间面板还允许您重置可视化工具的内部时间状态,这将重置所有显示以及 tf 的内部数据缓存。

50647900913f7734446e07d7c2a7c453.png

如果你不是在模拟中运行,时间面板大多是无用的。在大多数情况下,它可以关闭,你可能甚至不会注意到(除了为 rviz 的其余部分腾出更多的屏幕空间)。

46b5d5d8788133f37055275ac6f94668.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值