当前位置: 首页 > news >正文

自动驾驶—CARLA仿真(12)client_bounding_boxes demo

📌测试用例

PythonAPI/examples/client_bounding_boxes.py

客户端侧 3D 边界框(Client-Side Bounding Boxes)可视化示例,用于:

  1. 手动驾驶一辆主车(WASD 控制)
  2. 实时计算并绘制周围车辆的 3D 边界框
  3. 所有边界框计算在客户端(Python)完成,不依赖 CARLA 服务端


🔑 主要模块解析

1.ClientSideBoundingBoxes类:3D 边界框核心引擎

这是脚本的核心技术模块,完全在客户端实现 3D→2D 投影。

核心方法:
  • get_bounding_box(vehicle, camera)

    • 获取车辆 8 个 3D 顶点的世界坐标
    • 通过世界→相机坐标变换相机内参投影归一化设备坐标
    • 返回 8 个 2D 像素点 + 深度值
  • _create_bb_points(vehicle)

    • 根据vehicle.bounding_box.extent生成局部坐标系下的 8 个顶点
    • 顺序:底面 4 点(顺时针)+ 顶面 4 点(对应底面)
  • 坐标变换链
    车辆局部坐标世界坐标相机坐标2D 像素

  • draw_bounding_boxes()

    • 使用pygame.draw.line绘制 12 条边(底面 4 + 顶面 4 + 竖边 4)
    • 颜色固定为BB_COLOR = (248, 64, 24)(橙红色)

关键优势
不依赖 CARLA 的实例分割传感器,仅需 RGB 摄像头 + 车辆列表即可生成 3D 框。


2.BasicSynchronousClient类:主控制循环

管理仿真、渲染和用户输入。

核心组件:
  • 同步模式

    self.set_synchronous_mode(True)
    • 确保每帧精确控制,避免传感器数据错位
  • 自定义摄像头

    • 分辨率:960x540(1920/2 x 1080/2)
    • FOV:90°
    • 位置:车后方 5.5 米,高度 2.8 米,俯角 -15°(第三人称视角)
  • 手动控制逻辑

    按键功能
    W前进(throttle=1, reverse=False)
    S倒车(throttle=1, reverse=True)
    A/D左/右转向(±0.05 增量)
    Space手刹
  • 图像同步机制

    self.capture=True# 请求下一帧# 回调中: if self.capture: self.image = img; self.capture = False
    • 避免多线程竞争,确保渲染与控制同步

3. **坐标系处理

脚本完整实现了CARLA 坐标系到标准计算机视觉坐标系的转换

步骤变换
1. 车辆局部坐标(x,y,z)(CARLA 标准)
2. 世界坐标通过vehicle.get_transform()
3. 相机坐标通过camera.get_transform().get_inverse_matrix()
4.CV 坐标系(x,y,z) → (y, -z, x)(关键!)
5. 2D 投影K * [y, -z, x]^T

💡 注释中的cords_y_minus_z_x正是这一步转换。


4.相机内参校准
calibration=np.identity(3)calibration[0,2]=VIEW_WIDTH/2.0# cxcalibration[1,2]=VIEW_HEIGHT/2.0# cycalibration[0,0]=calibration[1,1]=VIEW_WIDTH/(2.0*tan(FOV/2))# fx=fyself.camera.calibration=calibration
  • 手动构建3x3 相机内参矩阵 K
  • 用于get_bounding_box()中的 3D→2D 投影

🎯 与服务端方案对比

特性客户端方案(本脚本)服务端方案(instance_segmentation)
依赖仅需 RGB 摄像头 + 车辆列表需要 instance_segmentation 传感器
精度基于车辆真实 bounding_box基于像素分割,可能有锯齿
性能CPU 计算投影(Python)GPU 渲染分割图

⚠️ 注意事项

  1. 仅显示其他车辆

    • vehicles = self.world.get_actors().filter('vehicle.*')包含所有车
    • 但未过滤主车,主车自身也会显示边界框(可通过if vehicle.id != self.car.id过滤)
  2. 深度过滤

    bounding_boxes=[bbforbbinbounding_boxesifall(bb[:,2]>0)]
    • 移除相机后方的物体(深度 ≤ 0)
  3. 坐标系假设

    • 假设车辆 bounding_box 中心在(0,0,0)(CARLA 默认)
    • 若车辆模型偏移,需调整_vehicle_to_world

✅ 总结

该脚本是 CARLA客户端 3D 感知的经典实现,展示了:

  1. 如何从车辆物理属性(bounding_box)生成 3D 顶点
  2. 如何实现完整的 3D→2D 投影管线
  3. 如何在纯 Python 客户端实现 3D 边界框可视化

它是学习自动驾驶 3D 目标检测基础的绝佳起点,尤其适合理解坐标变换、相机模型、投影几何等核心概念。

http://www.cnnetsun.cn/news/82523.html

相关文章:

  • 知识产权企业选择CRM系统时,最应关注的核心功能是什么?
  • HyperDX ClickHouse物化视图:构建实时数据分析的终极加速引擎
  • Windows Server 2022官方镜像完整获取指南:从下载到验证的全流程
  • AndroidGen-GLM-4-9B:开启移动智能体新时代的革命性突破
  • 微服务架构下的分布式数据加密:SQLCipher实战指南
  • 国产开源,含20+视频AI算法模型,兼容GB28181、ONVIF、RTMP协议、私有化部署,10天搞定IoT物联网项目交付
  • 16、搭建 Asterisk VoIP 服务器全攻略
  • Apache Mesos集群运维实战:故障恢复与版本管理完全指南
  • 探索式测试的Session管理法:提升软件测试效率与可追溯性
  • 购物省钱参考:爱创猫电商优惠券领取方式
  • 12、Red Hat Enterprise Linux硬件分析与管理指南
  • 35、Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析
  • DataEase开源BI工具完整指南:从零开始的数据可视化之旅
  • Gutenberg性能优化终极指南:零成本加速WordPress编辑器
  • ag-ui与LangGraph集成终极指南:构建企业级AI工作流的完整教程
  • 2026毕设ssm+vue基于架构的校园二手物品交易论文+程序
  • 手机强制开启USB调试模式终极指南:轻松解决设备连接难题
  • DataEase开源BI工具完整安装配置指南:从零开始快速部署
  • ReClassEx终极指南:免费开源的内存逆向分析神器
  • 物联网平台前端技术重构:从技术困境到用户体验的完美蜕变
  • 动态资源池化技术:让高价值软件许可“流动”起来的关键策略
  • 24、网络服务中的 SSH 与代理服务器使用指南
  • 2025护网蓝队面试题库,参加护网看这个就够了!
  • 3步精通FLAN-T5 XL:从零到多语言AI实战指南
  • Kubernetes环境下Hadoop存储配置的7个关键问题及解决方案
  • Moonlight安卓串流:5分钟实现手机玩PC游戏的终极指南
  • 40、Postfix性能测试、故障排查及相关标准参考
  • 41、邮件服务器配置与优化全解析
  • 如何评价 Nano Banana Pro?
  • 如何快速掌握Gemma模型转换:面向开发者的终极指南