SuperAPI AI 工具集

europilot

Europilot 是一个开源项目,利用流行的欧洲卡车模拟器(ETS2)来开发自动驾驶算法。它使用卷积神经网络(CNN)控制 ETS2 中的方向盘,充当游戏环境与深度学习框架(如 Keras、TensorFlow)之间的桥梁。通过 europilot,用户可以捕获游戏屏幕输入,并以编程方式控制模拟器内的卡车。它支持两种使用模式:训练和测试。训练模式下,europilot 实时捕获屏幕输入并输出 numpy 数组,同时获取轮盘游戏杆值,将截图与操纵杆值的映射写入 CSV 文件;测试模式下,它创建一个虚拟操纵杆驱动程序,在游戏内被识别,可用于编程控制卡车,并构建实时推理网络,以游戏屏幕为输入输出转向等操纵杆命令。Europilot 隐藏了屏幕数据和操纵杆数据捕获的复杂性,提供简化接口。内部将操纵杆数据流解析为机器可读格式(最初针对罗技 G27)。项目运行于 Linux,支持 Python 2.6-2.7 和 3.3+,采用 MIT 许可证。

访问官网

工具介绍

用途

Europilot 是一个开源工具包,旨在利用《欧洲卡车模拟 2》(ETS2)来开发和测试自动驾驶算法。它将游戏环境与常用的深度学习框架(如 Keras 或 TensorFlow)连接起来,让开发者能够捕获游戏屏幕输入,并以编程方式控制模拟器中的卡车。项目使用卷积神经网络(CNN)控制 ETS2 内的方向盘,适合作为端到端驾驶模型的研究与实验平台。

主要能力

Europilot 提供两种使用方式:训练和测试。

  • 训练模式:实时捕获屏幕输入并输出 numpy 数组,同时获取轮盘游戏杆的值。相关截图与操纵杆值的映射会写入 CSV 文件,每一行记录截图文件名及对应的操纵杆值。这样可以构建训练数据集,用于训练驾驶模型。
  • 测试模式:创建一个虚拟操纵杆驱动程序,该驱动可以在游戏中被识别,从而以编程方式控制卡车。利用这个虚拟操纵杆,可以构建实时推理网络,以游戏屏幕作为输入,输出相关的操纵杆命令(如转向)。

Europilot 隐藏了捕获屏幕数据和操纵杆数据的复杂性,提供简化的接口。内部会将操纵杆数据流解析为机器可读格式(最初针对罗技 G27 方向盘;如果使用其他操纵杆,需要修改 joystick.py 以适应需求)。虚拟操纵杆驱动通过在内核中附加用户空间驱动,并向 udev 输出事件来实现。需要注意的是,该驱动必须在游戏启动之前初始化,否则不会出现在控制器页面中。

项目目前提供基于 Keras 的示例 notebook,并希望未来添加其他流行框架的示例。

使用方式

  1. 首先克隆项目。
  2. 如果要在本地安装 europilot,可以按照项目说明进行安装;也可以直接在项目路径下安装依赖库并操作。
  3. 要开始生成训练数据,请查看 scripts 目录中的 generate_training_data.py。
    • 注意:使用屏幕选择 GUI 需要编译了 opencv_contrib 模块的 OpenCV。否则,需要为 train.Config.BOX 指定一个自定义的 Box 对象,以确定要捕获的屏幕区域。
  4. 生成训练数据后,建议手动检查每张图像,确认没有录制到不想要的数据。可以使用 clean_up.ipynb 中的简单脚本删除不需要的数据以及 CSV 文件中对应的行。同时可参考 preprocess.ipynb 和 get_mean_std.ipynb 中的示例代码对数据进行预处理。
  5. PilotNet.ipynb 是 Mariusz Bojarski 的 End to End Learning for Self-Driving Cars 的实现,略有差异。项目提供的演示即由该 notebook 创建。
  6. 若要在模型上运行推理,请查看 scripts 目录中的 inference.ipynb。

项目还提供了一份包含 162,495 张图像的驾驶数据集(大小 17G),可供感兴趣者使用。

适用场景

Europilot 适用于以下场景:

  • 研究和开发端到端自动驾驶算法,尤其是基于视觉输入的转向控制。
  • 在模拟环境中收集驾驶数据并训练深度学习模型,而无需真实车辆。
  • 测试实时推理网络,将游戏屏幕作为输入,输出操纵杆控制命令。
  • 作为教学或实验平台,帮助理解自动驾驶中的感知与控制流程。

项目选择 ETS2 作为首个目标平台的原因包括:ETS2 支持多平台(Windows、OS X、Linux),开发者可以在 Macbook 或 Ubuntu 工作站上运行;ETS2 具有逼真的图形和物理引擎(名称中包含“simulator”),比一些开源游戏的图形或物理引擎更接近真实;并且游戏本身有趣,便于开发者长时间游玩以积累大型数据集。

限制

  • Europilot 运行在 Linux 上,支持 Python 2.6-2.7 和 3.3+。
  • 虚拟操纵杆驱动必须在游戏启动前初始化,否则游戏内无法识别。
  • 默认的操纵杆数据解析针对罗技 G27,如果使用其他操纵杆需要修改 joystick.py。
  • 使用屏幕选择 GUI 需要编译了 opencv_contrib 模块的 OpenCV,否则需要手动指定捕获区域。
  • 当前示例 notebook 基于 Keras,其他流行框架的示例尚未提供。
  • 项目路线图包括:在虚拟机上运行 ETS2 并远程训练/测试模型、Web 排行榜、在 ETS2 中驾驶时捕获自定义视觉数据(如左、右侧摄像头)、支持类似 OpenAI Universe 的强化学习工作流、以及根据需要支持 Windows。
  • 项目采用 MIT 许可证。