ROS rviz常用可视化插件

在这里插入图片描述

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 Point

def publish_markers():
    rospy.init_node('custom_marker_publisher')
    marker_pub = rospy.Publisher('custom_markers', Marker, queue_size=10)
    rate = rospy.Rate(1)  # 发布频率为1Hz

    while not rospy.is_shutdown():
        marker = Marker()
        marker.header.frame_id = "base_link"  # 设置坐标框架
        marker.header.stamp = rospy.Time.now()
        marker.ns = "custom_markers"
        marker.id = 0
        marker.type = Marker.POINTS  # 使用点标记
        marker.action = Marker.ADD
        marker.pose.orientation.w = 1.0  # 默认朝向
        marker.scale.x = 0.1  # 点的大小
        marker.scale.y = 0.1
        marker.color.r = 1.0  # 红色
        marker.color.a = 1.0  # 不透明

        # 添加点坐标
        point = Point()
        point.x = 1.0
        point.y = 2.0
        point.z = 0.0
        marker.points.append(point)

        point = Point()
        point.x = 2.0
        point.y = 3.0
        point.z = 0.0
        marker.points.append(point)

        # 发布Marker消息
        marker_pub.publish(marker)
        rate.sleep()

if __name__ == '__main__':
    try:
        publish_markers()
    except rospy.ROSInterruptException:
        pass

猜你喜欢

转载自blog.csdn.net/qq_38853759/article/details/132826318