0.rviz介绍

rviz是ROS自带的图形化工具,可以很方便的让用户通过图形界面开发调试ROS。

参考官网 rviz/UserGuide

1.安装

根据自己的版本号,在下面选择对应的命令执行。以ROS melodic版本为例,就运行“

sudo apt-get install ros-melodic-rviz
sudo apt-get install ros-groovy-rviz
# or
sudo apt-get install ros-hydro-rviz
# or
sudo apt-get install ros-indigo-rviz
# or
sudo apt-get install ros-kinetic-rviz
# or
sudo apt-get install ros-melodic-rviz
# or
sudo apt-get install ros-noetic-rviz

2.启动

运行如下命令启动

首先source一下,以免ros指令报错,再开roscore

source /opt/ros/indigo/setup.bash
roscore &

然后运行rviz:

rosrun rviz rviz

当 rviz 第一次启动时,您将看到一个空窗口:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

中间的黑框是 3D 视图 (因为现在是空的所以什么也没有) 。左侧是显示元素(Displays)列表,它将显示您已加载的任何显示元素。现在它只是包含全局设置和时间。右侧是一些其他面板。

3.Displays显示元素

显示元素在 3D 世界中绘制物体,并且可能在左侧显示元素列表中提供了一些选项。例如点云、机器人状态等。

3.1 新增一个新的显示元素display

点击界面左下角Add按钮

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

这将弹出新的对话框:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

 顶部的列表包含Display type显示类型。中间的description框详细描述你选中的要显示的元素究竟是什么。

最后,您必须给这个显示元素命名display name。例如,如果您的机器人上有两台激光雷达,您可以创建两个名为"底部激光雷达laser base"和"顶部激光雷达laser head",display type显示类型为laser scan(激光雷达)的俩两个显示元素displays。

3.2 Display Properties 显示元素属性 

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

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

3.3 Display Status 显示元素状态

 每个显示元素display都有自己的状态,以帮助您知道是否一切正常。状态可以是OKWarningError , Disabled里的一个。显示元素状态通过背景颜色以及状态类别在显示元素标题中表示,如果点开每个显示元素的下拉列表,则可以看到:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

Stautus栏可以继续点开下拉列表来显示具体的状态信息。这个信息各个显示元素是不同的,msg消息是能够自动解析的。

3.4 Moving Displays 移动显示元素

你可以在左侧的显示元素列表里上下移动显示元素,通过下方的Add/Remove右侧的箭头。

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

3.5 Built-in Display Types 内置显示元素类型

名字

描述

使用的消息

轴 Axes

显示一系列坐标轴

Effort

显示机器人每个关节x相关状态信息。

sensor_msgs/JointStates

照相机Camera

从相机的角度创建新的渲染窗口,并将图像叠加在该窗口上。

sensor_msgs/Image, sensor_msgs/CameraInfo

网 格Grid

沿平面显示 2D 或 3D 网格

网格单元格Grid Cells

从网格中提取单元格,通常是从导航中costmap中的障碍物。

nav_msgs/GridCells

图像Image

使用"图像"创建新的渲染窗口。与相机显示元素不同,此显示元素不使用相机信息。

sensor_msgs/Image

交互式标记

InteractiveMarker

从一个或多个交互式标记服务显示 3D 对象,并允许鼠标与它们进行交互。

visualization_msgs/InteractiveMarker

激光雷达

Laser Scan

显示来自激光扫描的数据,具有不同的渲染模式、聚集等选项。

sensor_msgs/LaserScan

地图

Map

在地平面上显示地图。

nav_msgs/OccupancyGrid

标记

Markers

使得程序员可以通过特定话题topic显示任意物体原始形状

visualization_msgs/Marker, visualization_msgs/MarkerArray

路径

Path

显示从导航模块传来的路径。

nav_msgs/Path

Point

将一个点绘制为小球体。

geometry_msgs/PointStamped

姿态

Pose

用箭头或轴表示一个姿态。

geometry_msgs/PoseStamped

姿势阵列

Pose Array

用箭头绘制姿态阵列中每一个姿态

geometry_msgs/PoseArray

点云 (2)

Point Cloud(2)

显示来自点云的数据,具有不同的渲染模式、聚集等选项。

sensor_msgs/PointCloud, sensor_msgs/PointCloud2

多边形

Polygon

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

geometry_msgs/Polygon

里程计坐标Odometry

时间上累计的里程计坐标

nav_msgs/Odometry

范围

Range

显示表示声纳或红外范围传感器测量的圆锥形范围

sensor_msgs/Range

机器人模型

RobotModel

以正确的姿势显示机器人的3D模型(由当前 TF 转换定义)。

TF

显示tf转换层次结构。

手部动作

Wrench

绘制圆形箭头代表扭矩,直线箭头代表力

geometry_msgs/WrenchStamped

眼视图

Oculus

将 RViz 场景渲染为 眼视图?

4. 配置 Configurations

可视化显示元素以及界面相关设置被称为配置?

不同的显示元素的配置configuration通常适用于可视化工具的不同用途。为此,可视化工具允许您加载和保存不同的配置。

配置包含:

  • 显示元素+ 其属性                         Displays + their properties
  • 工具属性                                       Tool properties
  • 相机类型 + 初始视点的设置          Camera type + settings for the initial viewpointrviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

 5. Views Panel 视图面板

rviz右侧views面板

可视化工具中有许多不同的相机类型可用

这里的相机指的是可视化显示的视角?

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

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

5.1 The different camera types 不同的相机类型

5.1.1 轨道相机(默认)Orbital Camera (default)

轨道相机只是围绕一个焦点旋转,同时总是看着那个点。当您移动相机时,焦点被可视化为一个小圆盘:

就是你的视角只能绕着一个中心点旋转?

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

控制

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

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

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

  • 滚轮:放大/缩小焦点

 5.1.2 第一人称视角摄像机 FPS (first-person) Camera

FPS相机是第一人称相机,因此它可以旋转,就像你用头看一样。

控制

  • 鼠标左键:单击并拖动以旋转。按住 Control 键点按以选取鼠标下方的对象并直接查看它。

  • 鼠标中键:单击并拖动以沿着相机的向上和向右矢量形成的平面移动

  • 鼠标右键:单击并拖动以沿相机的前向矢量移动。向上拖动向前移动,向下向下移动。

  • 滚轮:向前/向后移动

5.1.3 自上而下的正交视图

自上而下的正交相机始终沿着Z轴向下看(在机器人本体坐标系下),并且是正交视图,这意味着事物不会随着距离越来越远而变小。我理解就是俯视图/鸟瞰图视角?

控制

  • 鼠标左键:单击并拖动以围绕Z轴旋转

  • 鼠标中键:单击并拖动以沿XY平面移动相机

  • 鼠标右键:单击并拖动以缩放图像

  • 滚轮:缩放图像

5.1.4 XY 轨道

与轨道相机相同,对焦点仅限于XY平面。

控制

参见轨道相机。

5.2 视图

视图面板还允许您创建不同的命名视图,这些视图已保存并且可以在视图之间切换。视图由目标帧、相机类型和相机姿势(a target frame, camera type and camera pose)组成。您可以通过单击"保存当前数据"按钮来保存视图。

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

视图包括:

  • 视图控制器类型
  • 视图配置(位置、方向等)每种视图控制器类型可能不同。
  • 目标坐标系

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

6. 坐标系Coordinate Frames

rviz 使用tf变换系统将数据从它到达的坐标系转换为全局参考系。在可视化工具中,有两个坐标系非常重要。

6.1 固定坐标系 The Fixed Frame

两个坐标系中更重要的是固定坐标系。固定坐标系是用于表示"世界"坐标系的参考系。这通常是"地图",或"世界"或类似的东西,但也可以是,例如,你的里程计坐标。

如果固定坐标系被错误地设置为机器人的底部,那么机器人曾经见过的所有物体都将出现在机器人的前面,相对于检测到它们的机器人的位置。为了获得正确的结果,固定坐标系不应相对于世界坐标系移动

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

6.2 目标坐标系The Target Frame

目标坐标系是照相机视图的参考坐标系。例如,如果您的目标坐标系是地图,您将看到机器人在地图上行驶。如果您的目标框架是机器人的底部,则机器人将停留在同一位置,而其他所有内容都相对于它移动。

7.工具

可视化工具具有许多可在工具栏上使用的工具:

7.1 移动相机(键盘快捷键:m)

移动摄像机工具是默认工具。选择此选项后,当您在 3d 视图内单击时,当前视图将执行其操作。

7.2 选择(键盘快捷键:s)

选择工具允许您选择在 3D 视图中显示的项目。它支持单点选择以及单击/拖动框选择。

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

您可以使用Shift键添加到所选内容中,并使用Ctrl键从所选内容中删除。如果要在选择时移动相机而不切换回"移动相机"工具,则可以按住Alt键。

f键会将相机聚焦在当前选择上。

7.3 2D 导航目标(键盘快捷键:g)

 此工具允许您设置在"目标"ROS 主题上发送的目标。单击地平面上的位置,然后拖动以选择方向:

此工具适用于导航模块。

7.4 2D 姿势估计(键盘快捷键:p)

此工具允许您设置初始位置以定位系统(在"initialpose"ROS 主题上发送)。单击地平面上的位置,然后拖动以选择方向:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

此工具适用于导航模块。

8. 时间

模拟器中运行时,时间面板最有用:它允许您查看经过了多少ROS时间,以及"挂钟"(又名实时)时间已经过去了多少。时间面板还允许您重置可视化工具的内部时间状态 – 这会导致重置所有显示,以及重置tf的内部数据缓存。

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

 9. 立体效果

Rviz 可以以 3D 立体进行渲染,如果你有一个显卡、显示器和眼镜支持它。

10.插件 Plugins

rviz的设置使得可以通过插件添加新的显示元素Displays。实际上,即使是内置显示元素也是通过"默认"插件加载的。对于您(用户)来说,最终结果是有一种方法可以从UI加载/卸载插件。如果您选择插件>管理…菜单项,它将弹出一个对话框,让您管理加载/卸载插件:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网

 如果您卸载了已激活显示的插件Plugin,它们将不再显示任何内容,但将保留其设置:

rviz-Ros Wiki官网教程学习笔记(1)-用户指南-编程知识网