elepherai / ETSAuto

This is a self-driving truck test in Euro Truck Simulator2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ETSAuto

目录

简介

ETSAuto是在欧洲卡车模拟2(ETS2)上运行的辅助驾驶系统。采用YOLOV6进行目标检测,CLRNet进行进行车道线检测,以及利用其他方法进行自车和环境感知。在控制方面,采用PID进行横向纵向控制,采用purepursuit进行低速状态下的横向控制,利用有限状态机进行决策场景切换。

演示视频:https://www.bilibili.com/video/BV1sT411m7hE/

如何从零开始构建环境

所依赖的项目简介

  • Python

    依赖的包支持的最小版本各有不同,推荐使用3.8版本。如使用 Miniconda 来构建环境会节省很多时间。

  • CUDA

    官网地址, 推荐使用 10.2 版本,次选11.7.0 版本,其他版本支持情况未知。版本 v12.0 现阶段 PyTorch 等依赖的包还未支持。

  • cuDNN (For CUDA 11.x, 10.2)

    8.7 下载地址,跟CUDA版本匹配。其他介绍请参照 cuDNN 安装手册

  • TensorRT (For CUDA 11.x, 10.2)

    8.x 下载地址,跟CUDA版本匹配,推荐使用 8.4.2.4(TensorRT 8.4 GA Update 1) 版本。其他介绍请参照 TensorRT 安装手册

  • CUDA、cuDNN、TensorRT 请结合各自官方文档自行配置系统的 Path。

  • 重新打开 PowerShell ,输入以下命令查看环境是否配置成功。

    PS C:\> python -V
    Python 3.8.10
    PS C:\> pip -V
    pip 22.3.1 from <python安装路径>\lib\site-packages\pip (python 3.8)
    PS C:\> nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2019 NVIDIA Corporation
    Built on Wed_Oct_23_19:32:27_Pacific_Daylight_Time_2019
    Cuda compilation tools, release 10.2, V10.2.89
    PS C:\> trtexec.exe -h
    === Model Options ===
    <省略之后的输出>
  • 稍微介绍一下几个依赖包的版本情况

    • PyTorch

      CUDA 是 10.2 的话,windows 下最高支持的版本为 1.10.2+cu102

      python -m pip install torch==1.10.2+cu102 --extra-index-url https://download.pytorch.org/whl/cu102

      CUDA 是 11.7 的话可以使用 1.13.1+cu117

      python -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu117
    • numpy

      从 1.24 版本开始删除了 numpy.float 等方法,因此需要使用 1.24 之前的版本。

      python -m pip install numpy<1.24
    • tensorrt

      依赖包请从tensorrt的所在文件夹中进行安装。

      # 注意这是在 windows 的 PowerShell 下的写法
      python -m pip install $env:TENSORRT_PATH\python\tensorrt-8.4.2.4-cp38-none-win_amd64.whl

      TENSORRT_PATH 为系统环境变量,8.4.2.4TensorRT 的版本,cp38 与 安装的 python 的版本一致。

    • lap

      需要先安装 numpy 成功之后才能安装该依赖包。

      python -m pip install numpy<1.24 lap

安装依赖包

在项目根目录下运行以下命令。

# 注意 tensorrt 以及 python 的版本
python -m pip install $env:TENSORRT_PATH\python\tensorrt-8.4.2.4-cp38-none-win_amd64.whl
# cuda v10.2
python -m pip install -r requirements.txt
# cuda v11.7
# python -m pip install -r requirements_cu117.txt
python -m pip install -r last_requirements.txt

查看 PyTorch 是否为 cuda 版本。

PS C:\> python
Python 3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True

构建 TensorRT 文件

  • 下载 onnx 权重文件,放在 <PROJECT_PATH>/weights 文件夹下(手动创建)。

  • 安装权重转换所依赖的包

    python -m pip install -r ./tools/requirements.txt
  • 构建 YOLOV6 的 TensorRT 文件

    python ./tools/export.py -o ./engines/yolov6s_bdd_60.onnx -e ./engines/yolov6s_bdd_60.engine --end2end

    如在命令行中出现 FP16 is not supported natively on this platform/device 的提示消息请在命令行后面添加 -p fp32 或者 -p int8,根据所使用显卡不同而不同。

  • 构建 CLRNet 的 TensorRT 文件

    polygraphy surgeon sanitize ./engines/llamas_dla34.onnx --fold-constants --output ./engines/llamas_dla34_tmp.onnx
    trtexec --onnx=./engines/llamas_dla34_tmp.onnx --saveEngine=./engines/llamas_dla34.engine

    若trtexec生成的engine不可用,可用tools/onnx2trt.py进行生成(须修改代码中的路径)。

    python ./tools/onnx2trt.py
  • 构建 环境感知 的 TensorRT 文件

    python ./tools/onnx2trt.py

已测试的环境

Windows11 + Python3.8 的条件下在如下环境中运行成功。

  • CUDA 10.2 + cuDNN 8.7.0 + TensorRT 8.4.2.4
  • CUDA 11.2 + cuDNN 8.7.0 + TensorRT 8.4.2.4
  • CUDA 11.7 + cuDNN 8.7.0 + TensorRT 8.4.2.4
  • CUDA 11.7 + cuDNN 8.7.0 + TensorRT 8.4.3.1

PS: 修改完系统变量后需要重新打开一个新的 PowerShell。

如何自动驾驶

安装虚拟手柄

项目地址下载 vJoy,双击安装。

安装mod

通过创意工坊下载mod

  • Google Maps Navigation Night Version
  • SISL's Route Adviser

设置游戏

  • 选项 - 图像,取消全屏模式,分辨率设置为 1360x768。
  • 选项 - 控制,选择 键盘 + vJoy Device
  • 把游戏窗口移动到合适的位置。

设置脚本

  • title_bar_height设为游戏窗口的标题栏高度

开始使用

  • “1”键退出自动驾驶
  • “6”键激活自动驾驶及切换道路类型
  • ctrl+Q退出

reference

CLRNet

CLRNet-onnxruntime-and-tensorrt-demo

YOLOV6

TensorRT-For-YOLO-Series

pyvjoy

PaddleOCR

About

This is a self-driving truck test in Euro Truck Simulator2

License:MIT License


Languages

Language:Python 100.0%