rviz是ROS自带的图形化工具,可以很方便的让用户通过图形界面开发调试ROS。
参考官网 rviz/UserGuide
根据自己的版本号,在下面选择对应的命令执行。以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
运行如下命令启动
首先source一下,以免ros指令报错,再开roscore
source /opt/ros/indigo/setup.bash
roscore &
然后运行rviz:
rosrun rviz rviz
当 rviz 第一次启动时,您将看到一个空窗口:
中间的黑框是 3D 视图 (因为现在是空的所以什么也没有) 。左侧是显示元素(Displays)列表,它将显示您已加载的任何显示元素。现在它只是包含全局设置和时间。右侧是一些其他面板。
显示元素在 3D 世界中绘制物体,并且可能在左侧显示元素列表中提供了一些选项。例如点云、机器人状态等。
点击界面左下角Add按钮
这将弹出新的对话框:
顶部的列表包含Display type显示类型。中间的description框详细描述你选中的要显示的元素究竟是什么。
最后,您必须给这个显示元素命名display name。例如,如果您的机器人上有两台激光雷达,您可以创建两个名为"底部激光雷达laser base"和"顶部激光雷达laser head",display type显示类型为laser scan(激光雷达)的俩两个显示元素displays。
每个显示元素display都有自己的属性列表。例如:
每个显示元素display都有自己的状态,以帮助您知道是否一切正常。状态可以是OK, Warning, Error , Disabled里的一个。显示元素状态通过背景颜色以及状态类别在显示元素标题中表示,如果点开每个显示元素的下拉列表,则可以看到:
Stautus栏可以继续点开下拉列表来显示具体的状态信息。这个信息各个显示元素是不同的,msg消息是能够自动解析的。
你可以在左侧的显示元素列表里上下移动显示元素,通过下方的Add/Remove右侧的箭头。
名字 |
描述 |
使用的消息 |
轴 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 场景渲染为 眼视图? |
可视化显示元素以及界面相关设置被称为配置?
不同的显示元素的配置configuration通常适用于可视化工具的不同用途。为此,可视化工具允许您加载和保存不同的配置。
配置包含:
rviz右侧views面板
可视化工具中有许多不同的相机类型可用
这里的相机指的是可视化显示的视角?
照相机类型包括控制照相机的不同方式和不同类型的投影(正射与透视)。
轨道相机只是围绕一个焦点旋转,同时总是看着那个点。当您移动相机时,焦点被可视化为一个小圆盘:
就是你的视角只能绕着一个中心点旋转?
控制
鼠标左键:单击并拖动以围绕焦点旋转。
鼠标中键:单击并拖动以移动由相机的向上和向右矢量形成的平面中的焦点。移动的距离取决于焦点 - 如果焦点上有一个物体,并且你点击它的顶部,它将停留在你的鼠标下。
鼠标右键:单击并拖动以放大/缩小焦点。向上拖动可放大,向下拖动可缩小。
滚轮:放大/缩小焦点
FPS相机是第一人称相机,因此它可以旋转,就像你用头看一样。
控制
鼠标左键:单击并拖动以旋转。按住 Control 键点按以选取鼠标下方的对象并直接查看它。
鼠标中键:单击并拖动以沿着相机的向上和向右矢量形成的平面移动
鼠标右键:单击并拖动以沿相机的前向矢量移动。向上拖动向前移动,向下向下移动。
滚轮:向前/向后移动
自上而下的正交相机始终沿着Z轴向下看(在机器人本体坐标系下),并且是正交视图,这意味着事物不会随着距离越来越远而变小。我理解就是俯视图/鸟瞰图视角?
控制
鼠标左键:单击并拖动以围绕Z轴旋转
鼠标中键:单击并拖动以沿XY平面移动相机
鼠标右键:单击并拖动以缩放图像
滚轮:缩放图像
与轨道相机相同,对焦点仅限于XY平面。
控制
参见轨道相机。
视图面板还允许您创建不同的命名视图,这些视图已保存并且可以在视图之间切换。视图由目标帧、相机类型和相机姿势(a target frame, camera type and camera pose)组成。您可以通过单击"保存当前数据"按钮来保存视图。
视图包括:
目标坐标系
视图按用户保存,而不是在配置文件中保存。
rviz 使用tf变换系统将数据从它到达的坐标系转换为全局参考系。在可视化工具中,有两个坐标系非常重要。
两个坐标系中更重要的是固定坐标系。固定坐标系是用于表示"世界"坐标系的参考系。这通常是"地图",或"世界"或类似的东西,但也可以是,例如,你的里程计坐标。
如果固定坐标系被错误地设置为机器人的底部,那么机器人曾经见过的所有物体都将出现在机器人的前面,相对于检测到它们的机器人的位置。为了获得正确的结果,固定坐标系不应相对于世界坐标系移动。
如果更改固定坐标系,则当前显示的所有数据都将被清除,而不是重新转换。
目标坐标系是照相机视图的参考坐标系。例如,如果您的目标坐标系是地图,您将看到机器人在地图上行驶。如果您的目标框架是机器人的底部,则机器人将停留在同一位置,而其他所有内容都相对于它移动。
可视化工具具有许多可在工具栏上使用的工具:
移动摄像机工具是默认工具。选择此选项后,当您在 3d 视图内单击时,当前视图将执行其操作。
选择工具允许您选择在 3D 视图中显示的项目。它支持单点选择以及单击/拖动框选择。
您可以使用Shift键添加到所选内容中,并使用Ctrl键从所选内容中删除。如果要在选择时移动相机而不切换回"移动相机"工具,则可以按住Alt键。
f键会将相机聚焦在当前选择上。
此工具允许您设置在"目标"ROS 主题上发送的目标。单击地平面上的位置,然后拖动以选择方向:
此工具适用于导航模块。
此工具允许您设置初始位置以定位系统(在"initialpose"ROS 主题上发送)。单击地平面上的位置,然后拖动以选择方向:
此工具适用于导航模块。
在模拟器中运行时,时间面板最有用:它允许您查看经过了多少ROS时间,以及"挂钟"(又名实时)时间已经过去了多少。时间面板还允许您重置可视化工具的内部时间状态 - 这会导致重置所有显示,以及重置tf的内部数据缓存。
Rviz 可以以 3D 立体进行渲染,如果你有一个显卡、显示器和眼镜支持它。
rviz的设置使得可以通过插件添加新的显示元素Displays。实际上,即使是内置显示元素也是通过"默认"插件加载的。对于您(用户)来说,最终结果是有一种方法可以从UI加载/卸载插件。如果您选择插件>管理...菜单项,它将弹出一个对话框,让您管理加载/卸载插件:
如果您卸载了已激活显示的插件Plugin,它们将不再显示任何内容,但将保留其设置: