pylot
模块化自动驾驶研发平台,集成感知/预测/规划/控制全栈,支持 CARLA 仿真与实车部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
模块化自动驾驶研发平台,集成感知/预测/规划/控制全栈,支持 CARLA 仿真与实车部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你坐在一辆没有方向盘的白色轿车里——车窗外的街道是像素构成的虚拟世界,仪表盘上实时跳动着车道线框、行人轮廓、前方车辆距离。这不是科幻电影,而是 Pylot 联合 CARLA 模拟器 构建的自动驾驶开发环境。
2019 年,来自约翰斯·霍普金斯大学(Johns Hopkins University)的研究团队在 ERDOS 项目下启动了 Pylot,目标是为自动驾驶感知、预测、规划、控制全栈算法提供一个可复现、可对比、可扩展的模块化研究平台。他们没有选择从零造轮子,而是站在 CARLA(Intel 主导的开源模拟器)的肩膀上,让研究者可以直接在虚拟城市中训练和测试算法,而无需担心真实路测的高昂成本和安全隐患。
五年过去了,Pylot 已成为自动驾驶学术圈的重要基准工具。它集成了从车道线检测(Lane Detection)到障碍物跟踪(Obstacle Tracking)、从路径规划(Frenet/Hybrid A* / RRT*)到红绿灯识别(Traffic Light Detection)的完整 pipeline,是少数能够同时覆盖仿真测试与实车部署的开源平台之一。

图1:Pylot 与 CARLA 模拟器集成后的可视化界面,车辆周围实时渲染感知结果(来源:erdos-project/pylot 官方文档)
Pylot 的代码库遵循严格的模块化设计,六大核心模块各司其职,通过 ERDOS 流处理框架实现组件间的高速数据传递。
感知层是自动驾驶的「眼睛」,Pylot 在这一层实现了多个关键子模块:
预测模块基于感知层输出的目标轨迹,预测周围交通参与者的未来运动行为。学术研究表明,在仿真环境中训练预测模型可以快速迭代各类假设场景(cut-in、紧急刹车等),大幅缩短算法验证周期。
规划层包含三种互补的轨迹规划算法:
控制模块目前实现了 MPC(模型预测控制) 控制器。MPC 的核心思想是在每个控制周期内,基于车辆动力学模型预测未来若干步的系统行为,通过优化算法找到使目标函数最小化的控制序列。Pylot 的 MPC 控制器经过了 CARLA 仿真环境中的大量测试,能够处理不同车速、不同曲率弯道下的轨迹跟踪任务。
定位模块利用传感器融合(GNSS + IMU + 视觉里程计)实现车辆的高精度定位,为规划和控制提供准确的自车状态。
仿真层桥接 Pylot 核心算法与 CARLA 模拟器,处理传感器数据注入、车辆指令下发、仿真时钟同步等关键任务。Pylot 还支持接入 CARLA Leaderboard 挑战排行榜,这意味着研究者可以直接将自己的算法提交到统一的评测基准上,与全球其他团队的方案同台竞技。
从 setup.py 和 requirements.txt 可以看出,Pylot 的技术选型兼具学术研究的灵活性与工程部署的严谨性:
python-is-python3 确保默认 python 命令指向 Python 3。nvidia/cudagl:11.4.2 的 Dockerfile,内置 CUDA 11.4 环境,但不支持 docker-compose 一键启动。值得注意的是,Pylot 的 Dockerfile 采用单阶段构建(FROM nvidia/cudagl),而非多阶段优化,镜像体积较大,且 base image 较为陈旧(Ubuntu 20.04 + CUDA 11.4),在新硬件上的兼容性存在一定限制。
图2:CARLA 模拟器构建的城市级虚拟驾驶环境,支持动态天气、光照变化和复杂交通流,是 Pylot 训练和测试的核心场域(来源:carla.org 官方素材)
坦白说,Pylot 的部署难度在开源项目中属于高门槛级别。官方推荐的安装路径需要:
CARLA_HOME 环境变量。Dockerfile 虽然存在,但它是单容器设计,没有 docker-compose 来一键编排 Pylot + CARLA 两个服务(CARLA 模拟器通常需要独立进程运行)。这意味着即使你用 Docker,也要额外处理 CARLA 的启动和端口通信。
结论:快速体验?难。需要准备 2 小时以上的配置时间,且对 Linux、Docker、CUDA 有基本了解。
答案在于研究效率。在真实道路上测试一个车道线检测算法,需要协调测试车辆、场地、伦理审批、安全员;在 Pylot + CARLA 环境中,一行命令就可以生成 1000 个不同天气、不同光照、不同交通密度的测试场景,自动化评估指标瞬间生成。这种效率优势在学术论文的实验部分价值巨大——Pylot 的模块化设计让研究者可以只替换某一个子模块(比如换一个检测网络),而不必重新搭建整套系统。
Pylot 的代码质量处于学术开源项目的中上水平:
erdos-pylot 包,版本号 0.3.3,发布规范清晰。但需要注意的是,依赖版本较旧(TensorFlow 2.5.1 / PyTorch 1.4 / NumPy < 1.20),在新版 Python(3.10+)或新硬件(RTX 30/40 系列)上可能需要额外适配工作。
Pylot 代表了自动驾驶研究的一个核心方向——仿真优先、模块化迭代。随着 CARLA 的持续更新(0.9.x → 1.x)和 nuScenes、Waymo 3D 等数据集的丰富,像 Pylot 这样的模块化平台将在以下场景持续发挥价值:
533 颗 GitHub Stars 和 139 个 Fork 证明了学术界对它的认可——不算爆款,但在自动驾驶细分领域具有较高的影响力和技术壁垒。
| 角色 | 推荐指数 | 理由 |
|---|---|---|
| 自动驾驶研究方向 PhD | ⭐⭐⭐⭐⭐ | 模块化设计完美适配论文实验,仿真环境开箱即用 |
| AI 算法工程师(感知方向) | ⭐⭐⭐⭐ | 检测/分割/跟踪模块可直接作为 baseline 修改 |
| 自动驾驶公司预研团队 | ⭐⭐⭐ | 仿真验证效率高,但生产部署需另行工程化 |
| 对自动驾驶感兴趣的爱好者 | ⭐⭐ | 门槛较高,需要较强技术背景 |
一句话评价:Pylot 是自动驾驶学术研究的高效率工具链——「搭起来费劲,用起来真香」。