文章目录
- ROS rviz常用可视化插件
- rviz
- 常用可视化组件
- Grid
- Map
- Laser Scan
- PointCloud2
- TF
- Images
- Path
- Marker
ROS rviz常用可视化插件
rviz
RViz(Robot Visualization)是ROS(Robot Operating System)中的一个重要工具,用于可视化机器人和传感器数据。RViz的主要功能是帮助开发人员和研究人员可视化机器人的各种信息,以便调试、验证和分析机器人系统。
Rviz主要在安装ROS的过程中一般都绑定安装了
启动rviz
方式一:通过rosnode的方式启动
rosrun rviz rviz
方式二:软件独立启动
rviz
方式三:通过launch文件启动
假设有自己的ros包mypack,我们为其编写launch文件rviz.launch
<launch><node pkg="rviz" type="rviz" name="rviz" required="true" args="-d $(find autonomous_exploration)/config/add_box.rviz"/>
</launch>
args中是配置文件路径,自己在rviz中设置的可视化组建的组合以及参数都会保存在这个文件中,启动后会加载,这样的效果是不必在每次启动rviz后都去重新添加需要的可视化组件。
roslaunch mypack rviz.launch
运行效果
不加载配置文件启动时载入
启动时载入自己的配置文件
常用可视化组件
Grid
Grid(网格):
用于显示一个网格背景,以帮助用户定位和测量对象的位置。
添加方式:
常用参数
Reference Frame
:参考frame,其设置基准坐标系,有tf关系的坐标系都可以选择
Cell Count
(单元格数量):
这个参数用于指定网格的单元格数量,通常以水平和垂直方向的单元格数来表示。例如,你可以设置水平单元格数为10,垂直单元格数为10,以创建一个10x10的网格。
Cell Size
(单元格大小):
用于指定网格单元格的大小。你可以设置单元格的宽度和高度,以控制网格线之间的间隔。
Color
(颜色):
用于设置网格线的颜色。你可以选择网格线的颜色,以使其在RViz中与其他元素更好地区分。
Alpha
(透明度):
用于设置网格的透明度。通过调整透明度,你可以控制网格的可见度。
Line Style
(线条样式):
可以选择不同的线条样式,如实线、虚线等,以控制网格线的外观。
Offset
(偏移):
用于设置网格的偏移量。你可以将网格相对于原点进行平移,以便更好地适应你的可视化需求。
Plane
(平面):
可以选择在哪个平面上绘制网格,通常是"XY"(水平地面)或"XZ"(垂直墙壁)。
Map
可以显示静态地图或实时地图,包括栅格地图或占用网格地图(Occupancy Grid Map)。
在RViz中,Map(地图)的参数通常是通过Map显示属性进行配置的,以显示静态地图或实时地图数据。以下是一些常见的Map参数及其含义:
Topic
(话题):
这个参数用于指定从哪个ROS话题接收地图数据。你需要输入一个正确的ROS话题名称,以便RViz获取地图数据。
此参数最为重要,可以选择接收的地图话题,一般/map为SLAM或者直接加载的静态地图,也可以选择代价地图,例如/move_base/global_costmap/costmap
、/move_base/local_costmap/costmap
静态地图效果
只展示代价地图
当然,一般我们会添加两个map组件,叠加静态地图和代价地图
Color Scheme
(颜色方案):
用于选择地图的颜色方案。通常,你可以选择"map"(使用地图默认颜色)或"costmap"(使用代价地图的颜色方案)。
代价地图使用代价地图的颜色方案时更加直观
Alpha
(透明度):
用于设置地图的透明度。通过调整透明度,你可以控制地图的可见度。
Resolution
(分辨率):
用于指定地图的分辨率,通常以米/像素为单位。这个参数影响地图中每个像素的物理大小。
Color
(颜色):
用于设置地图的颜色。你可以选择地图的颜色,以使其在RViz中与其他元素更好地区分。
Origin
(原点):
用于指定地图的原点坐标。这个参数通常是地图坐标系的原点位置,它影响地图在RViz中的位置和对齐方式。
Queue Size
(队列大小):
用于指定从ROS话题接收地图数据时使用的消息队列大小。这个参数可以影响地图数据的接收性能。
Transform Timeout
(变换超时):
用于设置等待ROS TF变换的最大时间。如果RViz无法获取地图数据的正确坐标变换,将使用此超时。
Laser Scan
可以显示激光雷达传感器的测量数据,以可视化环境中的障碍物。
Topic
(话题):
这个参数用于指定从哪个ROS话题接收激光扫描数据。你需要输入一个正确的ROS话题名称,以便RViz获取激光扫描数据。
Size (Points)
(大小 - 点数):
用于设置在RViz中可视化的激光扫描点的数量。你可以限制可视化的点数,以提高性能并减少视觉混乱。
Color (Min, Max)
(颜色 - 最小值,最大值):
用于设置可视化中激光扫描点的颜色范围。你可以指定最小值和最大值,激光扫描数据中的测量值将映射到颜色范围内。
Alpha
(透明度):
用于设置激光扫描数据点的透明度。通过调整透明度,你可以控制激光扫描数据的可见度。
Size (Pixels)
(大小 - 像素):
用于设置激光扫描数据点在RViz中的绘制大小。这个参数影响激光点的可视化外观。
Use Rainbow Color
(使用彩虹颜色):
如果勾选了此选项,RViz将使用彩虹颜色来表示不同的激光扫描测量值。
Autocompute Height (Min, Max)
(自动计算高度 - 最小值,最大值):
这个参数用于自动计算激光扫描点的高度范围,以确保它们可见并不被遮挡。
Static Data (seconds)
(静态数据 - 秒数):
用于指定多长时间内被认为是静态数据。静态数据通常以较浅的颜色表示,以突出显示可能是动态障碍物的物体。
绿色点为激光点
PointCloud2
用于显示点云数据,通常由3D传感器(如激光雷达或RGB-D相机)生成。
红色框部分是点云
Topic
(话题):
这个参数用于指定从哪个ROS话题接收点云数据。你需要输入一个正确的ROS话题名称,以便RViz获取点云数据。
Size (Points)
(大小 - 点数):
用于设置在RViz中可视化的点云数据点的数量。你可以限制可视化的点数,以提高性能并减少视觉混乱。
Color (Min, Max)
(颜色 - 最小值,最大值):
用于设置可视化中点云数据点的颜色范围。你可以指定最小值和最大值,点云数据中的测量值将映射到颜色范围内。
Alpha
(透明度):
用于设置点云数据点的透明度。通过调整透明度,你可以控制点云数据的可见度。
Size (Pixels)
(大小 - 像素):
用于设置点云数据点在RViz中的绘制大小。这个参数影响点云点的可视化外观。
Use Rainbow Color
(使用彩虹颜色):
如果勾选了此选项,RViz将使用彩虹颜色来表示不同的点云数据值。
Autocompute Height (Min, Max)
(自动计算高度 - 最小值,最大值):
这个参数用于自动计算点云数据点的高度范围,以确保它们可见并不被遮挡。
Color Transformer
(颜色变换器):
用于选择用于点云颜色的变换器。你可以选择根据测量值、高度值或其他属性来设置颜色。
TF
在RViz中,TF(Transform)组件是用于可视化ROS TF(Transform)数据的重要工具。TF是ROS中的一个库,用于管理和查询不同坐标系之间的关系,尤其在机器人系统中常用。TF组件允许你可视化这些坐标系的相对位置和变换,有助于理解机器人各个部分之间的关系。
Images
在RViz中,Images(图像)可视化参数通常是通过Image显示属性进行配置的,以便可视化图像数据。
Topic
(话题):
这个参数用于指定从哪个ROS话题接收图像数据。你需要输入一个正确的ROS话题名称,以便RViz获取图像数据。
Transport Hint
(传输提示):
用于指定图像传输的方式。可以选择"raw"(原始数据)或"compressed"(压缩数据),具体取决于你的数据传输方式。
Queue Size
(队列大小):
用于指定从ROS话题接收图像数据时使用的消息队列大小。这个参数可以影响图像数据的接收性能。
Refresh Rate
(刷新率):
用于指定图像数据的刷新频率。你可以设置图像以多快的速度更新,或者选择手动刷新。
Image Topic Override
(图像话题覆盖):
如果你希望覆盖默认的图像话题,你可以在这里输入另一个话题名称,以接收图像数据。
使用默认图像:
如果选择了此选项,RViz将使用默认图像来填充可视化窗口,而不等待来自ROS话题的实际图像数据。
允许Alpha通道(Allow Alpha Channel
):
如果图像包含Alpha通道(透明度信息),你可以选择允许Alpha通道以正确显示图像的透明部分。
Path
在RViz中,Path(路径)可视化通常用于显示机器人的路径规划结果或轨迹。
Topic
(话题):
这个参数用于指定从哪个ROS话题接收路径数据。你需要输入一个正确的ROS话题名称,以便RViz获取路径数据。
Path Line Width
(路径线宽度):
用于设置路径线的宽度。通过调整这个参数,你可以控制路径线的粗细。
Color
(颜色):
用于设置路径线的颜色。你可以选择路径线的颜色,以使其在RViz中与其他元素更好地区分。
Alpha
(透明度):
用于设置路径线的透明度。通过调整透明度,你可以控制路径线的可见度。
平滑路径(Smooth Path
):
如果启用了此选项,RViz将尝试对路径进行平滑处理,以减少路径线上的锯齿。
Use Pose Stamped
(使用姿态戳记):
如果你的路径数据是使用姿态戳记(PoseStamped)表示的,你可以选择启用此选项以正确解释路径数据。
路径规划包括全局路径规划和全局路径规划,可以将用两个Path插件将两个都输出,例如DWA,全局路径使用红色线条,局部路径使用绿色线。
Marker
这个组件可以自由标记画图,主要使用程序控制,下面是一个
#!/usr/bin/env python
import rospy
from visualization_msgs.msg import Marker
from geometry_msgs.msg import Pointdef publish_markers():rospy.init_node('custom_marker_publisher')marker_pub = rospy.Publisher('custom_markers', Marker, queue_size=10)rate = rospy.Rate(1) # 发布频率为1Hzwhile not rospy.is_shutdown():marker = Marker()marker.header.frame_id = "base_link" # 设置坐标框架marker.header.stamp = rospy.Time.now()marker.ns = "custom_markers"marker.id = 0marker.type = Marker.POINTS # 使用点标记marker.action = Marker.ADDmarker.pose.orientation.w = 1.0 # 默认朝向marker.scale.x = 0.1 # 点的大小marker.scale.y = 0.1marker.color.r = 1.0 # 红色marker.color.a = 1.0 # 不透明# 添加点坐标point = Point()point.x = 1.0point.y = 2.0point.z = 0.0marker.points.append(point)point = Point()point.x = 2.0point.y = 3.0point.z = 0.0marker.points.append(point)# 发布Marker消息marker_pub.publish(marker)rate.sleep()if __name__ == '__main__':try:publish_markers()except rospy.ROSInterruptException:pass