第一讲:雷达基础与点云概念
各位同学好,我是你们这门课的主讲。在正式开始之前,我想先聊聊——为什么我们要从雷达基础讲起?
说实话,我见过太多人一上来就调聚类参数、跑目标识别。结果点云质量不好,怎么调都没用。嗯,这就是基础没打牢。
这一讲,我们就把毫米波雷达的底裤扒干净。从工作原理到点云格式,一步到位。
1.1 毫米波雷达工作原理
毫米波雷达,说白了就是「用电磁波测距测速」的传感器。它工作在毫米波频段,通常是24GHz、60GHz、77GHz这几个频段。
我个人习惯把雷达比作「蝙蝠的耳朵」。蝙蝠发出超声波,碰到物体反弹回来,它就知道前面有东西。雷达也一样,只不过用的是电磁波。
这里有个关键点:毫米波能穿透烟、雾、灰尘。我在做车载项目时,遇到过暴雨天摄像头完全失效的情况,但雷达数据依然稳定。这就是它的核心优势。
核心公式:
距离 d = c × Δt / 2
其中 c 是光速,Δt 是发射到接收的时间差。
1.2 FMCW信号模型
FMCW,全称是调频连续波。你想想看,如果雷达只发一个固定频率的波,那只能测距离,测不了速度。怎么办?
FMCW的思路很巧妙:发射频率随时间线性变化的信号。就像你吹口哨,音调从低到高慢慢变。碰到物体反射回来,频率变化里就藏着距离和速度信息。
我记得第一次接触FMCW时,被那个「差频」概念绕晕了。其实很简单:
- 发射信号频率:f_tx = f0 + S × t
- 接收信号频率:f_rx = f0 + S × (t - τ)
- 差频:f_b = f_tx - f_rx = S × τ
这里的 S 是调频斜率,τ 是时间延迟。差频 f_b 直接对应目标距离。
我的小技巧:
实际项目中,FMCW的调频带宽决定了距离分辨率。带宽越大,分辨两个近距离目标的能力越强。77GHz雷达通常有4GHz带宽,距离分辨率能做到3.75cm左右。
1.3 点云数据格式
好了,雷达处理完信号,输出什么?就是点云。
点云,说白了就是一堆三维坐标点。每个点代表一个检测到的目标反射位置。但雷达点云和激光雷达点云不太一样——雷达点云更稀疏,而且每个点还带有多普勒速度信息。
常见的点云格式长这样:
// 一个典型的雷达点云数据包
struct RadarPoint {
float x; // 横向距离 (m)
float y; // 纵向距离 (m)
float z; // 高度 (m)
float doppler; // 多普勒速度 (m/s)
float snr; // 信噪比 (dB)
float rcs; // 雷达散射截面积 (dBsm)
};
我在做自动驾驶项目时,经常遇到一个问题:点云里有很多「鬼点」。就是明明没有目标,雷达却报了一个点。这通常是多径反射或者噪声造成的。
避坑指南:
我曾经在高速公路上调试,发现雷达总是在护栏位置报出「幽灵目标」。后来排查发现,是护栏的多次反射造成的。解决办法是加一个距离-多普勒联合滤波,把不合理的目标滤掉。
1.4 坐标系与转换
雷达有自己的坐标系,通常是这样定义的:
| 轴 | 方向 | 说明 |
|---|---|---|
| X轴 | 雷达正前方 | 纵向距离 |
| Y轴 | 雷达左侧 | 横向距离 |
| Z轴 | 垂直向上 | 高度 |
但实际应用中,雷达是装在车上的。车有自己的坐标系,世界也有自己的坐标系。所以坐标转换是家常便饭。
我建议你记住这个套路:
- 雷达坐标系 → 车辆坐标系(平移+旋转)
- 车辆坐标系 → 世界坐标系(根据GPS/IMU)
转换矩阵就是标准的欧拉角旋转加平移。代码实现很简单:
import numpy as np
def radar_to_vehicle(radar_points, offset_x, offset_y, yaw):
"""
雷达坐标系转车辆坐标系
radar_points: (N, 3) 的numpy数组
offset_x, offset_y: 雷达安装位置偏移
yaw: 雷达安装偏航角
"""
cos_yaw = np.cos(yaw)
sin_yaw = np.sin(yaw)
# 旋转矩阵
R = np.array([[cos_yaw, -sin_yaw, 0],
[sin_yaw, cos_yaw, 0],
[0, 0, 1]])
# 平移
T = np.array([offset_x, offset_y, 0])
# 转换
vehicle_points = (R @ radar_points.T).T + T
return vehicle_points
重点总结:
- 毫米波雷达的核心优势:全天候、抗干扰
- FMCW通过差频同时测距测速
- 点云包含位置、速度、信噪比等信息
- 坐标转换是数据融合的基础
好了,这一讲的内容就到这里。下一讲我们会深入点云预处理——怎么滤除噪声、怎么做地面分割。这些都是我踩过坑之后总结出来的实战经验。
记住一句话:点云质量决定算法上限。基础打牢了,后面的聚类和识别才能玩得转。