HighwayEnv
Gymnasium 标准强化学习自动驾驶决策环境,6 大场景一键调用,5 分钟开启 RL 训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Gymnasium 标准强化学习自动驾驶决策环境,6 大场景一键调用,5 分钟开启 RL 训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

HighwayEnv 是由 Farama基金会 维护的开源自动驾驶决策强化学习环境库,目前在 GitHub 获星 3200+,被广泛用于 RL 算法的研究基准测试。
想象你正在教一个刚满18岁的孩子学开车。与其一开始就在晚高峰的二环路上冒险,不如先让他在一个只有几辆车、路况简单的封闭训练场里练手——HighwayEnv 就是这样一个专门给 AI 算法打造的"自动驾驶训练场"。
它完全运行在 Python 代码里,不需要真实汽车,不需要雷达,也不需要昂贵的仿真器硬件。一行代码 gymnasium.make("highway-v0"),一个虚拟公路就出现在你的屏幕上了。
HighwayEnv 的开发者是法国工程师 Edouard Leurent,他后来创办了 Farama基金会 ——一家专门维护开源机器人与 AI 研究工具的非营利组织。Farama 旗下除了 HighwayEnv,还有 Minigrid、Brax 等知名项目,已成为 RL 研究领域的基础设施提供商。
该项目目前支持 Python 3.10 ~ 3.14,依赖明确,代码结构清晰,被多个学术论文引用作为基准环境。
HighwayEnv 并不只有一个"公路"环境,而是提供了六种复杂度递增的场景,让研究者可以从简单到复杂逐步训练和评测算法:
| 场景 | 核心挑战 |
|---|---|
| highway-v0 | 多车道高速公路,保持高速行驶、避免碰撞 |
| merge-v0 | 汇入匝道,需要主动让行并入主路 |
| roundabout-v0 | 环岛行驶,理解让行规则和路径规划 |
| parking-v0 | 停车入库,最低速域、精确控制 |
| intersection-v0 | 十字路口,多方向交通流交汇 |
| racetrack-v0 | 赛车赛道,激进驾驶与极限操控 |
每种场景都可以通过配置文件(Python dict)调整难度参数——车道数量、车辆密度、奖励函数权重、观察空间类型等,极具灵活性。
HighwayEnv 遵循 Gymnasium 标准(OpenAI Gym 的社区继承者),实现了标准的 RL 交互循环:
Agent(算法) → Action(方向盘/油门指令)
↓
Environment(HighwayEnv) → State + Reward(观察 + 奖励)
↓
循环往复,直到任务完成或碰撞
强化学习中的"奖励函数"(Reward)就像一个教练:HighwayEnv 会在每一步给 AI 打分——保持高速行驶 +0.1 分、换道合理 +0.2 分、发生碰撞 -1 分。AI 通过不断试错,学会哪些动作组合能获得最高总分。
AI 需要"看到"周围世界才能做决策,HighwayEnv 提供了多种观察模式:
开发者可以根据自己的算法类型自由选择观测模式,也可以同时输出多种观察数据做多任务学习。
HighwayEnv 内置了 IDM(智能驾驶员模型) 和 MOBIL(最小化换道造成的整体加速度变化) 两种经典交通模型。简单说:
这使得仿真环境中的 NPC 车辆行为非常接近真实交通流,而不是简单的随机移动。
项目代码位于 highway_env/ 目录,核心结构如下:
envs/ — 各种环境的注册与配置(对应上文 6 种场景)road/ — 道路网络、车道、路口等交通基础设施的模拟vehicle/ — 车辆动力学模型(NPC 车辆和 ego 车辆分开实现)utils.py — 工具函数(坐标转换、奖励计算等)核心依赖:
整体代码量适中(约数千行),模块边界清晰,非常适合作为学习强化学习环境设计的入门级实战项目。
pip install highway-env
就完成了。Python ≥ 3.10 即可,没有 CUDA、GPU 等硬性要求。
import gymnasium
import highway_env
env = gymnasium.make("highway-v0")
obs, info = env.reset()
for _ in range(1000):
# 这里替换成你的 RL 算法 action
action = env.action_type.sample()
obs, reward, done, truncated, info = env.step(action)
env.render()
if done or truncated:
obs, info = env.reset()
env.close()
这就是一个完整的 RL 训练循环。替换中间的 action 部分,接入 Stable Baselines3、RLlib 等主流算法库,10 行代码就能开始训练自己的自动驾驶策略。
HighwayEnv 是纯代码仿真,其训练出的策略在迁移到真实自动驾驶系统时,会遇到著名的 Sim2Real 鸿沟——仿真环境和真实世界的物理特性、光照条件、传感器噪声存在差异。这个问题在学术界至今没有完美的解决方案,HighwayEnv 也不例外。使用时需要明确:这个环境训练的是"决策逻辑",不是"直接可上路的驾驶程序"。
pygame 渲染器是为可视化设计的,在需要数千个并行环境同时运行来加速数据采集的工业级训练场景中,HighwayEnv 的帧率可能成为瓶颈。推荐的做法是用 headless 模式(render_mode=None)做纯数值计算,或用 VectorEnv 做环境并行化。
项目没有提供 Dockerfile 或 docker-compose.yml,不支持容器化一键部署。对于希望快速在云端复现环境的研究者来说,需要自行处理依赖安装。
HighwayEnv 的价值不仅在于它本身,而在于它代表了一种趋势:用轻量级、标准化、低门槛的工具降低强化学习研究的入门门槛。
在 HighwayEnv 出现之前,想做自动驾驶决策研究的研究者往往需要:
HighwayEnv 用几百行代码+清晰接口,让任何懂 Python 的人都能在 5 分钟内开始 RL + 自动驾驶的实验。这种"平民化"的力量,是它真正受到学术界欢迎的根本原因。
目前该项目已被多篇学术论文引用(如 IEEE ITSC、ICRA 等顶会),成为 Farama 基金会旗下最活跃的项目之一,持续维护中。

项目主页: https://highway-env.farama.org/
开源协议: MIT License,可自由用于学术和商业项目