Carla仿真系列:10_Carla 双目障碍物测距,视差图还原真实距离

第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 往期回顾

如果本文对你有帮助,欢迎点赞、关注、收藏 。

遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。

开源项目地址放在个人主页简介中,欢迎前往查看。

相关推荐
ZhengEnCi11 小时前
AI Agent工具误调用怎么解决-从参数校验到高危二次确认的四层工程防线
python·llm·agent
镜子AI12 小时前
镜子AI工程教程:用Python实现关键词布局检查器与语义改写查重(附完整代码)
人工智能·python·microsoft
昨日之日200612 小时前
MiniMax-H3 V7(FastH3 Omni):8步生成带声视频,比原版快近10倍。参考图、视频、声音全都能用!
人工智能·计算机视觉·音视频·1024程序员节
再__努力1点13 小时前
RK3576/RV1126B多路视频 AI 开源引擎 CosmoEdge:从模型到交付,轻松搞定!
人工智能·opencv·计算机视觉·架构·课程设计
小oo呆13 小时前
【学习心得】Python协程
python
信誓旦旦的程序猿13 小时前
【Python量化实战宝典 #22】涨跌停、连板情绪手册:情绪指标构建(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
gCode Teacher 格码致知13 小时前
Pandas教学-21:subplots的使用
python·pandas·1024程序员节
2601_9679801113 小时前
Python开发的顶级开源项目全景图:2025-2026年生态概览
python·机器学习·开源项目·数据科学·生态概览
benchmark_cc14 小时前
量化开发中,什么时候应该停止手动下载股票数据?
python·数据分析·pandas·量化交易·1024程序员节·股票数据·quantdash
泡茶喝茶写代码14 小时前
A股量化策略回测实战:从行情数据到绩效评估(第 15 篇):新高新低策略
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口