【自动驾驶避障开发】如何让障碍物在 RViz 中"显形"?呈现感知数据转 Polygon 全流程
自动驾驶系统中的障碍物可视化是开发调试过程中至关重要的一环。本文将详细介绍如何将自动驾驶感知模块检测到的障碍物数据转换为RViz可显示的Polygon(多边形)形式,实现障碍物的直观可视化。
一、前置知识准备
在开始之前,我们需要了解几个关键概念:
- RViz:ROS中的3D可视化工具,用于显示各种传感器数据和算法结果
- Polygon:多边形消息类型,常用于表示物体轮廓
- Marker:RViz中通用的可视化标记类型,可显示各种几何形状
二、感知数据格式分析
典型的自动驾驶感知模块输出的障碍物信息通常包含以下内容:
- 位置(x, y, z坐标)
- 尺寸(长、宽、高)
- 朝向(偏航角)
- 速度
- 类别(车辆、行人、骑行者等)
- ploygon点
我们需要将这些信息转换为RViz可以显示的几何形状。
三、数据转换核心流程
3.1 安装必要依赖
sudo apt-get install ros-<distro>-rviz ros-<distro>-visualization-msgs
3.2 创建障碍物到Polygon的转换节点
#include <ros/ros.h>
#include "geometry_msgs/PolygonStamped.h"
#include "geometry_msgs/Point32.h"
#include "perception_msgs/perception.h" // 博主自定义的障碍物消息格式
ros::Publisher pub_obs;
ros::Subscriber sub_perception;
void PerceptionCallBack