CARLA常见技术问题集锦(三)传感器与数据采集篇
深信科创技术团队系统梳理了来自 CARLA 社群、GitHub Issue、知乎专栏、CSDN 等平台开发者们提出的常见技术问题,结合最新版本特性与开发经验,分类问题模块,逐篇进行解答分享,上期我们带来了CARLA常见技术问题集锦(二)车辆模型篇,本周接力“传感器与数据采集篇”。
编者荐语:
深信科创技术团队系统梳理了来自 CARLA 社群、GitHub Issue、知乎专栏、CSDN 等平台开发者们提出的常见技术问题,结合最新版本特性与开发经验,将其归纳为 地图与场景构建、车辆模型、传感器与数据采集、API 与开发接口、仿真控制与算法、多机与分布式仿真、联合仿真与工具集成、扩展与自定义开发 等模块,逐篇进行解答分享。其中很多基础问题也可以通过查阅官方文档解决,CARLA 官方文档指导性很强,建议新手小白多看文档~
上期我们带来了CARLA常见技术问题集锦(二)车辆模型篇,本周接力“传感器与数据采集”。后续系列文章敬请期待!
传感器与数据采集
🌱 基础操作与配置
Q1:如何获取 Carla 中主视角的图片数据?
目前没有直接获取 Spectator
图片数据的 API,需通过调整 Spectator
位置和视角间接实现。
Q2:传感器的频率是否与仿真步长频率一致?如果多个传感器频率不同(如相机和 IMU),如何处理?
传感器的频率与仿真步长频率一致。对于多个传感器频率不同的情况,可以提高 world
的 tick
频率,并通过 tick
频率和仿真步长的乘积控制仿真时长与真实时间的对应关系。
Q3:Carla 中相机的内参应该如何标定?
仿真相机的内外参是预先配置的,Carla 中不需要标定。可以参考 Carla 的畸变模型,查看是否有需要设置的参数。以下是 Carla 使用的畸变模型说明:Lens Distortion White Paper
(https://support.borisfx.com/hc/en-us/articles/24284292845325-Lens-Distortion-White-Paper)。
Q4:listen
里面调用的 callback
是怎么定义的?
可以参考以下例子:sensor_synchronization.py
(https://github.com/carla-simulator/carla/blob/ue5-dev/PythonAPI/examples/sensor_synchronization.py)。
在 listen
中定义了一个 lambda
函数,用于处理传感器数据(如绘制或保存图像)。
Q5:在 Carla 中运行 OpenSCENARIO 2.0,可以搭载相机输出图像吗?
可以,场景描述和传感器配置是独立的模块,相机输出图像不受影响。具体操作可以参考微信文章👇《Carla实战 | 手把手教您在Carla中运行OpenSCENARIO 2.0示例》
🛠️ 参数调优与同步处理
Q6:Carla 的 Town12 地图在正常运行时能保持 60 帧,但使用代理巡航后帧率降至十几帧,可能是什么原因?
帧率下降可能是由于安装了过多传感器或未设置同步模式,建议检查传感器数量和同步模式配置。
Q7:在使用摄像头作为感知输入进行深度强化学习训练时,将摄像头 FOV 设置为 110° 是否可能导致拍不到环境车辆信息,从而影响决策?如果将 FOV 角度增大,需要注意什么?
较大的 FOV 角度在透视模式下可能与真实场景差异较大,可能导致感知失真。增大 FOV 时需注意图像畸变、透视失真和计算资源的增加等问题。
Q8:将摄像头绑定模式从 Rigid
改为 SpringArm
后,拍摄方向反了,是什么原因?
SpringArm
模式有一个 LookAt
属性,默认朝向车辆中心。推荐使用 Rigid
模式以避免方向问题。
Q9:如何实现两车同向跟车行驶,后车拍摄前车?
可以使用 Carla 的 Traffic Manager
设置轨迹,两车间隔时间(如 5 秒)同向行驶。轨迹可以直接指定位置,无需依赖 Spawn Points
。跟车本质就是轨迹相同Spawn Points
有前后。可参考官方文档:https://carla.readthedocs.io/en/latest/adv_traffic_manager/#configuring-autopilot-behavior
Q10:使用 Carla 官方 GitHub 上的鱼眼相机 PR 时,鱼眼图像比普通相机慢一帧,如何解决?
鱼眼相机涉及额外的渲染流程(Render Pipeline -> Game Thread -> Render Pipeline),导致延迟。目前的解决方案是采用每次执行两次world.tick()
操作的方法。该方法的原理在于第一次tick用于更新车辆位置(通过手动set_transform
设置),而第二次tick时车辆保持静止,此时采集的图像数据能够获得相对稳定的渲染效果。这一方案虽然实现简单且能暂时解决渲染同步问题,但本质上仍属于临时性措施,未能从根本上解决渲染管线的控制问题。
在研究替代方案时,尝试了通过逆向去畸变过程模拟鱼眼效果的方法。具体实现包括:确定鱼眼相机的畸变参数和内参,计算去畸变后的新内参,并将其作为普通相机的参数来推导对应的FOV。通过OpenCV验证,该方法在140度FOV内勉强可用,但存在显著局限性。由于真实鱼眼相机通常具备超过180度的视野,而这种方法无法突破普通相机的物理视野限制,导致其实际应用价值较低。鱼眼镜头的畸变本质是为了扩大视野,而普通相机反向模拟畸变并不能真正扩展FOV。
综合来看,虽然双tick方法并非完美,但在当前条件下仍是更实用的选择。而畸变模拟方案由于视野范围的硬性限制,难以满足实际需求。
Q11:如何实现 IMU 发布速率 100Hz,图像帧率 20Hz?
仿真世界更新频率和某个传感器的数据更新频率属于两个不同的概念,世界更新了传感器可以不采集数据,不过传感器更新频率不能超过世界频率。仿真频率和对外频率很难做到1:1。
Q12:在 carla-ros-bridge
中更改传感器频率,但实际输出频率只有十几 Hz,是什么原因?
UE4 的渲染速度跟不上,建议使用更好的 GPU。
🔧 进阶功能与自定义开发
Q13:Carla 的毫米波雷达数据可以发出聚类以后的数据吗?
聚类需要自己处理,Carla 的毫米波雷达数据如果是点云格式,直接输出的是随机点。
Q14:Carla 的毫米波雷达可以选择 object
模式输出吗?
ROS 有 object
输出,可以使用 ROS 进行转换,例如lidar_euclidean_cluster_detect
方法,但只是勉强可用。如果不行,可以修改 ROS 驱动,但实际的毫米波雷达模型不支持。
Q15:ROS 中发布的 /carla/objects
话题是否只显示车辆和行人的坐标?
可以使用这个 topic
接口进行修改,勉强可用。但还需要修改 FOV,因为 /carla/objects
输出的是车体坐标系,需要根据雷达坐标系进行变换。
Q16:Carla 有 CAN 数据包吗?如何将 Carla 中的数据以 CAN 数据发出?
可以使用 PCAN,数据的打包和解析用 Python 完成,查看用其他工具。参考文档:https://python-can.readthedocs.io/en/stable/
Q17:如何根据实际相机参数完全自定义 Carla 中的摄像头?
参考 RGB Camera 文档(https://carla.readthedocs.io/en/latest/ref_sensors/#rgb-camera),或修改 UE 渲染流程实现 KB 模型,参考 GitHub Pull Request(https://github.com/carla-simulator/carla/pull/3755),关键步骤包括:
-
• 修改
CameraSensor.h/cpp
:调整 UE 的相机渲染逻辑,增加自定义光学模型。 -
• 调整
PostProcessSettings
:修改后期处理参数,如镜头光晕、色差等。 -
• 重新编译 CARLA:确保修改后的 UE 渲染流程生效。
结语:
本文主要是简述了在使用CARLA过程中遇到的关于车辆模型的一些常见问题。感兴趣的开发者还可以看看这篇文章进行拓展👉《仿真测试入门参考(19):CARLA的车辆模型》
未来CARLA问题总结系列文章将会持续更新关于传感器与数据采集、API 与开发接口、仿真控制与算法、多机与分布式仿真、联合仿真与工具集成、扩展与自定义开发等常见问题。
关注作者,了解更多CARLA硬核知识!若需详细了解文中所提及的深信科创自主开发的工具在CSDN后台私信我们吧!
🚀 CARLA AI助手上线!你的24小时仿真顾问
以上问题已全部录入「CARLA AI助手」知识库!现在起,只需提问即可获得:
✅ 精准解答:覆盖安装、API开发、场景设计全流程
✅ 代码生成:一键输出环境配置脚本与调试命令
✅ 实时更新:同步官方文档与社群最新解决方案
立即体验:关注「CARLA引擎中文站」服务号,在聊天框直接输入问题或者点击菜单栏「AI助手」开启智能问答!
💬 互动话题
你在使用CARLA时还遇到过哪些“玄学”问题?欢迎留言讨论!点赞最高的问题,我们将优先安排技术解析~
📢 加入社群
添加小助手微信【synkrotron1】,备注“CARLA”即可加入开发者交流群,获取最新资源与1V1答疑!
往期推荐:

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)