第一讲:雷达基础与点云概念

各位同学好,我是你们这门课的主讲。在正式开始之前,我想先聊聊——为什么我们要从雷达基础讲起?

说实话,我见过太多人一上来就调聚类参数、跑目标识别。结果点云质量不好,怎么调都没用。嗯,这就是基础没打牢。

这一讲,我们就把毫米波雷达的底裤扒干净。从工作原理到点云格式,一步到位。

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轴 垂直向上 高度

但实际应用中,雷达是装在车上的。车有自己的坐标系,世界也有自己的坐标系。所以坐标转换是家常便饭

我建议你记住这个套路:

  1. 雷达坐标系 → 车辆坐标系(平移+旋转)
  2. 车辆坐标系 → 世界坐标系(根据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通过差频同时测距测速
  • 点云包含位置、速度、信噪比等信息
  • 坐标转换是数据融合的基础

好了,这一讲的内容就到这里。下一讲我们会深入点云预处理——怎么滤除噪声、怎么做地面分割。这些都是我踩过坑之后总结出来的实战经验。

记住一句话:点云质量决定算法上限。基础打牢了,后面的聚类和识别才能玩得转。