Donkey命令行工具

当您安装donkeycar Python包时,将创建donkey命令。这是一个Python脚本,添加了一些重要的功能。这里的操作与车辆无关,适用于任何硬件配置。

创建车辆

该命令创建一个新的目录,其中包含运行和训练机器人所需的文件。

用法:

donkey createcar --path <dir> [--overwrite] [--template <donkey2>]
  • 可以从任何目录运行此命令
  • 可在主机计算机或机器人上运行
  • 它使用--path作为目标目录进行创建。如果该目录中存在.py文件,除非使用可选的--overwrite参数,否则不会覆盖它们。
  • --overwrite将更新目标目录中的文件,但不包括myconfig.py。如果您更新了donkeycar并希望这些更改反映在mycar文件夹中,但又不想重新创建myconfig.py,则此选项非常有用。
  • 可选的--template将指定要从中启动的模板文件。有关模板列表,请参见donkeycar/templates目录。此源模板将复制到用户的manage.py上。常见的模板有:

查找车辆

该命令尝试使用nmap在本地网络上定位您的车辆。

用法:

donkey findcar
  • 在主机计算机上运行
  • 如果找到,打印主机计算机的IP地址和车辆的IP地址
  • 需要nmap实用程序:
sudo apt install nmap

校准车辆

该命令允许您手动输入值以交互式地设置PWM值,并尝试观察机器人的响应。 详细信息请参见更多信息

用法:

donkey calibrate --channel <0-15 channel id>
  • 在主机计算机上运行
  • 打开由--channel指定的PWM通道
  • 输入整数值以指定PWM值,然后按Enter键
  • Ctrl + C退出

清理Tub中的数据

打开一个Web服务器来删除Tub中的坏数据。

用法:

donkey tubclean <包含Tub的文件夹>
  • 在树莓派或主机计算机上运行。
  • 打开Web服务器以删除坏数据。
  • 按下 Ctrl + C 退出。

训练模型

注意: 此部分仅适用于版本 >= 4.1 该命令用于训练模型。在深度学习自动驾驶中有更详细的说明。

donkey train --tub=<tub路径> [--config=<config.py>] [--model=<模型路径>] [--type=(linear|categorical|inferred)] [--transfer=<迁移模型路径>]
  • 使用 --tub 数据存储中的数据。您可以使用逗号分隔的列表指定多个Tub,例如 --tub=foo/data,bar/data,或者只是用空格分隔,如 --tub foo/data bar/data
  • 使用 --config 路径中的配置文件(可选)。
  • 将模型保存到 --model 指定的路径中。如果省略,将自动生成一个模型名称。注意: 在版本4.2中存在一个回归问题,您只需要在模型参数中提供模型名称,如 --model mypilot.h5。这个问题在版本4.2.1中得到解决,请更新到该版本。
  • 使用模型类型 --type
  • 允许使用 --transfer 继续训练一个模型。
  • 支持使用在 myconfig.py 文件的 TRAIN_FILTER 变量中定义的函数对记录进行过滤。例如:
def filter_record(record):
    return record.underlying['user/throttle'] > 0

TRAIN_FILTER = filter_record

只使用训练中具有正向油门的记录。

  • 在版本4.3.0及更高版本中,再次支持所有3.x模型:
donkey train --tub=<tub路径> [--config=<config.py>] [--model=<模型路径>] [--type=(linear|categorical|inferred|rnn|imu|behavior|localizer|3d)] [--transfer=<迁移模型路径>]

此外,训练过程中会自动生成一个Tflite模型。可以通过在配置中设置 CREATE_TF_LITE = False 来取消生成。现在还可以生成Tensorrt模型。要这样做,您需要设置 CREATE_TENSOR_RT = True

  • 注意:createcar 命令仍然为向后兼容性创建了一个 train.py 文件,但对于训练来说并不需要该文件。

从Tub创建电影

该命令允许您从Tub中的图像创建电影文件。

用法:

donkey makemovie --tub=<tub路径> [--out=<tub_movie.mp4>] [--config=<config.py>] [--model=<模型路径>] [--model_type=(linear|categorical|inferred|rnn|imu|behavior|localizer|3d)] [--start=0] [--end=-1] [--scale=2] [--salient]
  • 在主机计算机或机器人上运行。
  • 使用给定的 --tub 目录路径中的图像记录。
  • 使用 --out 指定要创建的电影文件。编解码器根据文件扩展名推断。默认值:tub_movie.mp4
  • 可选参数,可以指定一个与默认配置文件 config.py 不同的 config.py
  • 可选的模型参数将加载keras模型,并在电影中显示预测线。
  • model_type 可以选择提供有关正在加载的模型类型的提示。默认为分类模型。
  • 可选的 --salient 将覆盖显示哪些像素对神经网络激发最大。
  • 可选的 --start 和/或 --end 可以指定要使用的帧号范围。
  • scale 将导致输出图像按此比例缩放。

绘制预测结果

该命令允许您绘制来自训练模型的预测结果与转向和油门之间的关系。

用法:

donkey tubplot --tub=<tub路径> --model=<模型路径> [--limit=<结束索引>] [--type=<模型类型>]
  • 可以从 ~/mycar 目录中运行该命令。
  • 在主机计算机上运行。
  • 将显示一个弹出窗口,显示给定Tub中的转向值与经过训练模型的NN预测之间的图表。
  • 可选的 --limit=<end_index> 将使用直到该索引的所有记录,默认为1000。
  • 可选的 --type=<model_type> 将使用与 DEFAULT_MODEL_TYPE 不同的模型类型。

Tub Histogram

注意: 需要版本 >= 4.3

该命令允许您将 tub 数据(通常是方向盘和油门)绘制成直方图。

用法:

donkey tubhist --tub=<tub路径> --record=<记录名称> --out=<输出文件名>
  • 该命令可以从 ~/mycar 目录中运行
  • 在主机计算机上运行
  • 将显示一个弹出窗口,展示给定 tub 中 tub 值的直方图
  • 可选的 --record=<记录名称> 参数只会显示特定数据系列的直方图,例如 "user/throttle"
  • 可选的 --out=<输出文件名> 参数将直方图保存为指定的名称,否则名称将根据 tub 路径自动生成

Joystick Wizard

这个命令行向导将引导您完成创建自定义控制器的步骤。

用法:

donkey createjs
  • ~/mycar 目录中运行该命令
  • 首先确保操作系统可以访问您的设备。可以使用实用程序 jstest 进行检查。通过 sudo apt install joystick 安装该工具。您必须将设备的路径传递给该实用程序。通常路径是 /dev/input/js0。如果不是,请找到正确的设备路径并提供给该实用程序。您还需要在 createjs 命令中使用该路径。
  • 运行命令 donkey createjs,它将在 ~/mycar 文件夹中创建一个名为 my_joystick.py 的文件,位于 manage.py 的旁边
  • 修改 myconfig.py 文件,将 CONTROLLER_TYPE="custom" 设置为使用您的 my_joystick.py 控制器

可视化 CNN 激活的滤波器

显示所提供图像中每个卷积层中每个滤波器的特征图。这是一个调试工具,用于可视化特征提取的效果。

用法:

donkey cnnactivations [--tub=<数据路径>] [--model=<模型路径>]

这将为模型中的每个 Conv2d 层打开一个图形。

示例:

donkey cnnactivations --model models/model.h5 --image data/tub/1_cam-image_array_.jpg

显示模型数据库

注意: 仅适用于 donkeycar >= 4.3.1。

这将列出存储在 models/database.json 中的模型。显示的信息包括模型类型、模型名称、用于训练的 tubs、迁移模型以及如果在训练过程中使用了 --comment 或者在 UI 中训练的模型则显示注释。

用法:

donkey models [--group] 
  • ~/mycar 目录中运行
  • 如果使用了可选的 --group 标志,则 tub 路径信息将合并为组,如果不同的模型使用了不同的 tub 组合。如果您使用多个 tub,并且模型使用了不同的 tub 组合,则此选项非常有用,因为它可以压缩输出信息。
  • 如果要在车辆上运行此命令,您需要先安装 pandas

Donkey UI

注意:此部分仅适用于版本 >= 4.2.0

用法:

donkey ui

这将打开一个用于分析 tub 数据的用户界面,支持以下功能:

  • 实时显示所选数据字段的值和图形条形图
  • 删除或取消删除记录
  • 尝试使用数据选择过滤器
  • 绘制所选数据字段的数据

该用户界面是 web 版 donkey tubclean 的替代品。

Tub UI

有关用户界面的完整文档在 这里