第9期做了单目测距------只有一路相机,靠"推断"距离。这期升级到双目相机 ------用两个相机模拟人眼的视差,通过三角测量直接算出距离,精度比单目高一个量级。
1 为什么双目能测距
人眼为什么能判断远近?因为两只眼睛看到的角度不同。
左眼看到的角度 ╲
╲ 物体
右眼看到的角度 ╱
两眼的角度差 = 视差
物体越近 → 视差越大
物体越远 → 视差越小
双目相机模仿这个原理:两个相机相隔一定距离(基线),同时拍下左右两幅图,通过匹配对应点、计算视差,就能算出距离。
2 双目相机配置
在 Carla 的 Tesla 上添加左右两个相机,通过修改ros_bridge_ws/src/carla-ros-bridge/carla_spawn_objects/config/objects.json文件添加相机模拟真实双目系统:
json
{
"type": "sensor.camera.rgb",
"id": "rgb_stereo_left",
"spawn_point": {"x": 2.4, "y": 0.2, "z": 1.0, "roll": 0.0, "pitch": 0.0, "yaw": 0.0},
"image_size_x": 640,
"image_size_y": 480,
"fov": 90.0
},
{
"type": "sensor.camera.rgb",
"id": "rgb_stereo_right",
"spawn_point": {"x": 2.4, "y": -0.2, "z": 1.0, "roll": 0.0, "pitch": 0.0, "yaw": 0.0},
"image_size_x": 640,
"image_size_y": 480,
"fov": 90.0
}
关键参数:
| 参数 | 值 | 说明 |
|---|---|---|
| 基线 | 0.4m | 左右相机X方向距离(y相差0.4) |
| FOV | 90° | 保证共同视野 |
| 高度 | 1.0m | 前挡风玻璃位置 |
3 双目测距原理
3.1 三角测量公式
距离 Z = (f × B) / d
f = 相机焦距(内参)
B = 双目基线(0.4m)
d = 视差(左右图像对应点的水平差)
物体越近 → 视差d越大 → 距离Z越小(反向关系)
3.2 完整流程
左右相机同时拍摄
↓
立体矫正:两幅图像对齐(极线约束)
↓
立体匹配:找左右图像中的对应点
↓
计算视差 d → 视差图
↓
深度公式:Z = f·B/d → 深度图
↓
反投影 → 3D 点云

3.3 输出结果
| 输出 | 说明 |
|---|---|
| 矫正后的左右图 | 对齐后的立体图像对 |
| 视差图 | 每个像素的视差值(颜色越亮=越近) |
| 深度图 | 每个像素的真实距离 |
| 3D点云 | 从深度图反投影出三维坐标 |
4 启动流程
bash
# 终端1-2:启动环境 + Carla UE4
# 终端3:启动 ROS Bridge(此时会自动加载双目相机配置)
cd carla_sim
bash ros_bridge.sh
# 终端4:双目测距
cd /opt/carla_ws/sim_workspace/stereo_distance
python stereo_distance_py2.py
运行后可以看到视差图、深度图、矫正后的左右图,以及双目生成的点云。

生成的点云:

5 双目 vs 单目 vs 激光雷达
| 方案 | 精度 | 成本 | 优点 | 缺点 |
|---|---|---|---|---|
| 单目 | 低 | 低 | 便宜 | 靠推断,误差大 |
| 双目 | 中高 | 中 | 主动测距,精度不错 | 需要标定、弱纹理匹配差 |
| 激光雷达 | 高 | 高 | 最准 | 贵 |
双目的定位: 成本适中、精度够用,是"纯视觉方案"里的主流测距方式------很多视觉方案的自动驾驶车都用双目。
10_实现双目障碍物测距
6 下一期
下期主要介绍怎么在carla仿真环境中搭建一个上帝视角可视化监控,整个地图的所有NPC和自车的运动情况实时查看。
7 往期回顾
- Carla仿真系列:9_Carla 单目障碍物测距,四种方法原理与实测
- Carla仿真系列:8_相机与激光雷达融合,点云投影到图像
- Carla仿真系列:7_BEV + 语义分割融合,一张鸟瞰图看懂整个场景
- Carla仿真系列:6_实时图像语义分割,SegFormer 和 YOLOPv2 实测对比
- Carla仿真系列:5_Carla 四路相机标定与BEV环视拼接
- Carla仿真系列:4_在 Carla 的 Tesla 上装 4 路摄像头,并创建网格为环视拼接做准备
- Carla仿真系列:3_Carla 仿真中跑通 YOLOv8 实时目标检测
- Carla仿真系列:2_Carla 仿真中批量添加 NPC,让场景动起来
- Carla仿真系列:1_Carla + ROS 仿真环境从零搭建,跑通完整数据流
如果本文对你有帮助,欢迎点赞、关注、收藏 。
遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。
开源项目地址放在个人主页简介中,欢迎前往查看。