一、传感器概览与选型:CARLA支持的传感器类型与场景匹配
大家好,我是你们的老朋友。今天咱们来聊聊CARLA里的传感器。说实话,传感器选型这事儿,我刚开始做自动驾驶仿真时也踩过不少坑。你想想看,一辆车上装七八种传感器,每种还有十多个参数要调,光看着就头大。但别担心,咱们一步步来。
1.1 CARLA支持的传感器类型
CARLA目前支持的主流传感器,我按功能分成了三大类:视觉类、测距类、定位类。下面这张图能帮你快速建立整体认知。
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 传感器选型原则与场景匹配
选传感器不是越贵越好,也不是越多越好。我总结了三条原则,你记一下:
- 场景决定传感器:高速场景优先LIDAR+RADAR,城区场景优先多相机+语义分割
- 冗余但不过剩:关键功能要有2种传感器互为备份,但别装一堆用不上的
- 算力匹配:仿真里传感器越多,帧率越低。我一般控制在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相机,到时候见。
可可精品资料库