一、传感器概览与选型:CARLA支持的传感器类型与场景匹配

大家好,我是你们的老朋友。今天咱们来聊聊CARLA里的传感器。说实话,传感器选型这事儿,我刚开始做自动驾驶仿真时也踩过不少坑。你想想看,一辆车上装七八种传感器,每种还有十多个参数要调,光看着就头大。但别担心,咱们一步步来。

1.1 CARLA支持的传感器类型

CARLA目前支持的主流传感器,我按功能分成了三大类:视觉类、测距类、定位类。下面这张图能帮你快速建立整体认知。

CARLA传感器体系 视觉类传感器 测距类传感器 定位类传感器 RGB相机 深度相机 语义分割相机 实例分割相机 光流相机 LIDAR(激光雷达) RADAR(毫米波雷达) 超声波传感器 GNSS(全球导航卫星系统) IMU(惯性测量单元) 速度计 / 里程计

1.2 各传感器核心特性详解

RGB相机

RGB相机是仿真里最常用的传感器。说白了,它就像车的「眼睛」,输出的是1920x1080的彩色图像。我个人习惯在城区场景用90°FOV,高速场景用60°FOV——视野窄一点,远处目标更清晰。

关键参数:图像分辨率、视场角(FOV)、快门模式、曝光补偿

💡 小技巧:如果你做的是夜间场景仿真,记得把快门模式改成「auto」,否则图像会全黑。我在做雨夜项目时吃过这个亏,折腾了两天才发现是快门没调。

深度相机

深度相机输出的是每个像素到物体的距离值。嗯,这里要注意:CARLA的深度相机默认输出是归一化后的值(0~1),你需要乘以最大深度才能得到真实米数。

# 获取真实深度值
depth_data = sensor_data  # 原始数据范围0~1
real_depth = depth_data * 1000  # 假设最大深度1000米

语义分割相机

这个传感器会把画面里的每个像素标上类别标签。比如路面是0,车辆是10,行人是12。我在做变道决策算法时,全靠语义分割来区分车道线和路沿。

标签值类别颜色(R,G,B)
0未标注(0,0,0)
1建筑(70,70,70)
6路面(128,64,128)
10车辆(0,0,142)
12行人(220,20,60)

LIDAR(激光雷达)

LIDAR是我个人最喜欢的传感器。它发射激光束,返回点云数据。CARLA里常用的有32线、64线、128线三种。你想想看,线数越高,点云越密,但计算量也越大。

⚠️ 避坑指南:我曾经在仿真里设置LIDAR的「channels=64, range=100」,结果跑起来帧率掉到个位数。后来发现是点云数量太大,把range降到50米就流畅了。仿真不是真车,别盲目追求高参数。

# LIDAR配置示例
lidar_bp = blueprint_library.find('sensor.lidar.ray_cast')
lidar_bp.set_attribute('channels', '32')
lidar_bp.set_attribute('range', '50')
lidar_bp.set_attribute('points_per_second', '56000')
lidar_bp.set_attribute('rotation_frequency', '20')  # 20Hz

RADAR(毫米波雷达)

RADAR和LIDAR不一样,它用无线电波,不受雨雾影响。但缺点也很明显——分辨率低,只能检测到物体的大致位置和速度。我在做自适应巡航(ACC)时,RADAR是主力传感器,LIDAR反而只是辅助。

GNSS与IMU

GNSS就是咱们常说的GPS/北斗,提供经纬度坐标。IMU提供加速度和角速度。这两个传感器通常配合使用——GNSS有更新慢、易遮挡的问题,IMU正好在中间时刻做插值。

黄金组合:GNSS + IMU + 轮速计 = 低成本定位方案。我在园区物流车项目里用过这套方案,精度能到20cm以内。

1.3 传感器选型原则与场景匹配

选传感器不是越贵越好,也不是越多越好。我总结了三条原则,你记一下:

  1. 场景决定传感器:高速场景优先LIDAR+RADAR,城区场景优先多相机+语义分割
  2. 冗余但不过剩:关键功能要有2种传感器互为备份,但别装一堆用不上的
  3. 算力匹配:仿真里传感器越多,帧率越低。我一般控制在6~8个传感器以内

下面这张表是我自己整理的场景匹配方案,你可以直接参考:

应用场景推荐传感器组合说明
高速公路领航 前视RGB相机 + 64线LIDAR + 长距RADAR LIDAR负责近距离,RADAR负责远距离
城区十字路口 4个鱼眼相机 + 32线LIDAR + 语义分割相机 360°环视,重点检测行人、非机动车
自动泊车 4个鱼眼相机 + 超声波传感器 近距离精度要求高,超声波成本低
雨雾天气测试 RADAR + 深度相机 + GNSS/IMU RADAR不受天气影响,深度相机辅助

1.4 实战经验:我踩过的三个坑

最后分享几个真实教训,希望能帮你少走弯路:

  • 坑一:我曾经在仿真里同时开了4个RGB相机,结果显存爆了。后来发现可以用「sensor.camera.rgb」的「image_size_x」参数降低分辨率,从1920降到1280,帧率直接翻倍。
  • 坑二:LIDAR的「dropoff_general_rate」参数默认是0.0,如果你不做调整,点云会非常完美——但真实LIDAR是有丢点率的。我建议设成0.1~0.3,更接近真实情况。
  • 坑三:GNSS的「noise_alt_stddev」参数默认是0,意味着高度完全准确。但真实GPS高度误差很大。我一般设成0.5~1.0,模拟真实飘移。

💡 记住一句话:仿真里「太完美」的参数,往往意味着不真实。适当加噪声,你的算法才经得起实车考验。

好了,传感器概览和选型就聊到这儿。下一章咱们会手把手配置第一个RGB相机,到时候见。


可可精品资料库