PCSim
自动驾驶路侧LiDAR仿真与布局优化工具包,支持19种传感器物理建模及雨雾天气仿真
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
自动驾驶路侧LiDAR仿真与布局优化工具包,支持19种传感器物理建模及雨雾天气仿真
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是一名自动驾驶公司的算法工程师,正在设计路侧激光雷达(LiDAR)的部署方案——道路拐角该放几台?高度多少合适?覆盖范围够不够?这些问题在真实道路上试错成本极高,而 PCSim 正是来解决这个痛点的。
PCSim(Point Cloud Simulation)是由上海人工智能实验室(Shanghai AI Lab)旗下的 PJLab-ADG 团队开源的多模块研究工具包,配套发表了两篇顶会论文(ICRA 2023 和 ICCV 2023)。它将自动驾驶仿真器 CARLA 与真实的激光雷达物理建模结合,既能仿真点云数据,又能评估传感器布局的合理性。

图1:运动畸变仿真(Motion Distortion Simulation)——车辆高速运动时 LiDAR 扫描产生的点云拉伸效果,PCSim 可精确还原这一物理现象。
PCSim 并非一个简单的代码合集,它背后有扎实的学术成果支撑:
论文一(ICRA 2023):"Analyzing Infrastructure LiDAR Placement with Realistic LiDAR Simulation Library"
论文二(ICCV 2023):"Optimizing the Placement of Roadside LiDARs for Autonomous Driving"
传统自动驾驶仿真器(如 CARLA 原生 LiDAR)的点云质量与真实传感器差距较大——光束分布不准确、噪点模型缺失、运动畸变不还原、雨雾天气效果不真实。这导致在仿真中训练/测试的算法,部署到真车上后性能断崖式下跌(sim-to-real gap)。
PCSim 正是瞄准这个 gap,通过精细的物理建模,让仿真点云更接近真实数据,从而提升下游感知算法的训练质量。
PCSim 由多个独立但互相关联的子项目组成,面向不同的研究场景:
这是整个项目的基础,提供 CARLA 原生激光雷达的增强仿真能力。
支持的 LiDAR 类型(19种):
| 类型 | 代表型号 |
|---|---|
| Surround LiDAR(机械旋转式) | pandar64, ruby128, pandar128, vlp16, hdl64, waymo_top 等 14 种 |
| Solid State LiDAR(固态) | mems_m1 |
| Risley Prism LiDAR(棱镜扫描) | horizon, mid40, mid70, avia, tele |
物理建模精度:
PCSim 并不只是改变参数——它直接修改了 CARLA 的 C++ 源码(RayCastLidar.cpp)来精确控制光线投射行为:
enable_ghost 属性开启仿真。LidarMotonDistortion 模块精确还原这一现象。使用方法(概要):
# 替换 CARLA 源码文件后重建
lidar_bp = world.get_blueprint_library().find('sensor.lidar.ray_cast')
lidar_bp.set_attribute("lidar_type", "Surround")
lidar_bp.set_attribute("name", "pandar64") # 选择具体型号
lidar_bp.set_attribute("enable_ghost", "true") # 开启ghost仿真
# 运动畸变模块
from enable_motion_distortion import LidarMotonDistortion
lidar_motion_distort = LidarMotonDistortion("./horizon/", 10)
ego_lidar.listen(lambda data: lidar_motion_distort.enable_motion_distortion(data, True))
这一层对算法工程师意义最大——可以用真实的传感器规格训练感知模型,缩小 sim-to-real gap。

图2:Ghosting 效应仿真——强反光物体(如水面、镜面)的多次反射假点,真实 LiDAR 中常见但多数仿真器忽略。
自动驾驶商业落地最大的 Corner Case 之一是恶劣天气。雨滴对激光雷达的影响并非简单的「信号衰减」——雨滴本身会产生散射点(雨杂波),同时路面积水改变反射特性,雨天强度也会影响点云的强度值(Intensity)分布。
RainyPCSim 的核心贡献:
这个模块对感知算法在雨天场景的性能提升有直接价值——用干净数据训练的模型,在雨天性能通常下降 20-40%,RainyPCSim 可以低成本地扩充雨天训练数据。
ReSimAD 是一个端到端的仿真数据生成 pipeline,核心解决数据域迁移问题:
.tfrecord 格式)。ReSimAD 的意义: 零样本跨域——用 Waymo 数据驱动的仿真数据,可以直接用于训练在 nuScenes、KITTI 等数据集上评估的模型,无需手工标注。

图3:ReSimAD 仿真场景——基于 StreetSurf 重建的街道网格,回放 Waymo 真实轨迹并用 LiDAR Simulation Library 生成点云。
基于 V2X(车路协同)场景,评估路侧 LiDAR 的感知覆盖质量:
这是 ICCV 2023 论文的核心算法模块:提出用替代指标(而非真实仿真结果)快速评估 LiDAR 布局质量,从而将布局优化问题的求解效率大幅提升。替代指标可解释性强,计算代价远低于完整仿真。
PCSim 采用多模块松耦合架构:
PCSim/
├── LiDARSimLib/ # 核心仿真引擎(C++ 修改 + Python API)
│ ├── Unreal/ # CARLA C++ 源码修改(LiDAR 物理建模)
│ ├── PythonAPI/ # CARLA Python API 扩展
│ ├── LibCustomFunction/ # Python 辅助模块(运动畸变等)
│ └── Docs/ # 传感器规格文档
├── RainyPCSim/ # 雨天仿真扩展
├── ReSimAD/ # 仿真数据生成 pipeline(纯 Python)
├── Placement-Evaluation/ # LiDAR 布局感知评估(PyTorch)
├── SurrogateMetricsCalculate/ # 替代指标计算
└── pic/ # 演示图片
各子项目技术栈:
| 子项目 | 主要语言 | 框架/库 | 说明 |
|---|---|---|---|
| LiDARSimLib | C++ + Python | CARLA API | 修改 CARLA 源码,编译后生效 |
| RainyPCSim | C++ + Python | OpenCDA, CARLA | 雨粒子系统基于 OpenCDA |
| ReSimAD | Python | CARLA PythonAPI, NumPy | 纯 Python 数据处理 pipeline |
| Placement-Evaluation | Python | PyTorch, YAML configs | v2x-vit 感知模型 |
| SurrogateMetricsCalculate | Python | NumPy, Matplotlib | 数学优化算法 |
PCSim 本身是仿真工具,其 AI 成分体现在:
本质上,这是一个工具+算法并重的研究仓库,而非纯 AI 模型仓库。
这是 PCSim 最主要的门槛。整个项目依赖 CARLA >= 0.9.12,而 CARLA 本身依赖 Unreal Engine 4(UE4),需要从源码编译。整个流程:
make clean && make PythonAPI && make launch)无 Docker、无容器化、无一键脚本,每个子项目的路径配置都需要手动修改 livox.cpp 和 lidar_display.py 中的硬编码路径。
无 Web 界面。全部通过 Python 脚本或 CARLA 的 Blueprint 编辑器操作,对开发者友好,对非技术人员不友好。
项目明确要求 CARLA >= 0.9.12,而 CARLA 目前已更新到 0.10.x。版本锁定意味着无法使用新版 CARLA 的改进(如更好的渲染、新的地图),也可能错过性能优化。升级 CARLA 版本需要重新覆盖文件并重新编译,维护成本高。
整个 LiDAR Simulation Library 的核心是修改 CARLA 的 C++ 源码,而 CARLA 的 C++ 部分强依赖 UE4。这导致:
PCSim 的 5 个子项目之间并非完全独立:ReSimAD 依赖 LiDARSimLib 的仿真能力,RainyPCSim 依赖 LiDARSimLib 的基础文件替换,Placement-Evaluation 需要预训练模型。这导致当你只想用其中一个模块时,往往需要先完整搭建整个环境。
LiDAR Simulation Library 的文档相对完整(有详细的使用步骤),但 ReSimAD 的 StreetSurf 网格导入部分仅给出一个外部链接,对于没有相关经验的团队来说,从零到有的过程缺乏手把手指导。
随着 L2+ 自动驾驶走向量产,车路协同(V2X)概念火热,路侧感知系统的设计成为新课题。传统做法是大量路测试错——在真实道路上反复安装、调整 LiDAR,既费时又危险。PCSim 提供了在仿真中评估布局方案的能力,直接降低路侧基础设施的试错成本。
学术界和工业界对仿真-真实数据差异(sim-to-real gap)的研究持续升温。PCSim 通过精细的物理建模(ghost 伪影、运动畸变、雨天效应)试图弥合这一 gap,方向正确且有实际价值。这也是为什么它能在 ICRA 和 ICCV 两篇论文中获得发表。
在自动驾驶仿真领域,PCSim 的定位介于通用仿真器(CARLA、AirSim)和专用传感器仿真(如 LGSVL、NVIDIA Drive Sim)之间——它不追求全栈仿真能力,而是聚焦于 LiDAR 物理精度和传感器布局优化这一细分但重要的方向。272 颗 Stars 证明它在小圈子内有较高的认可度。
总结一句话:PCSim 是一款为自动驾驶 LiDAR 仿真和布局优化量身打造的研究级工具包,物理建模扎实、配套论文扎实,但部署门槛较高,适合有 CARLA 使用经验的算法研究者和车路协同工程师。