Xilinx HydraMini试玩教程
前言
HydraMini是Xilinx推出的基于Pynq-Z2开发板的自动驾驶开发小车,其有着简单易学、高灵活性、高扩展性、高性能等优良特性,是研究人员和学生进入自动驾驶领域的一个平台。本教程会通过最基础的讲解和步骤带领读者熟悉这个平台的基本开发流程,包括实体小车的使用和模拟器的使用。详细的代码解读和流程分析见参考链接里的github项目。
小车采用两块电池给板子以及电机供电,通过单目摄像头感知环境。
环境配置
- PC端:Ubuntu16.04+DNNDK3.0配置请参考Host端配置
- Pynq端:下载Xilinx提供的Pynq-Z2+HydraMini小车系统,百度网盘链接,里面小车代码Pynq-Part/Car建议更新至github最新版。如果想自行配置(较复杂不推荐)请参考Pynq端配置
- 跑道搭建:使用胶带或其他材料模仿一般的道路搭建环形跑道,尽量保持左转和右转频率一样多,比如下图所示8字形跑道。
基础知识
在继续阅读后续教程前,笔者推荐掌握或熟悉的知识:
- C++ & Python3
- Ubuntu Linux使用
- Keras + Tensorflow基本用法
介绍
- 训练流程。首先控制小车采集数据,然后使用keras框架进行训练并把保存的模型转化为tensorflow模型,最后通过DNNDK套件进行量化编译得到最终可以在DPU上运行的核文件。
- 运行流程。运行时从摄像头采集数据,然后送入模型推理,经由Xilinx DPU加速后,模型输出控制指令控制小车运动。
- 源代码目录结构
- Host-Part
- process_img.py # 图像预处理
- process_train.sh # 图像预处理加训练脚本
- train.py # 模型训练
- dnndk-host # DNNDK量化编译目录
- compile.sh # 编译
- quant.sh # 量化
- graph_input_fn.py # 量化输入数据生成器
- keras_to_tensorflow.py # keras模型转tensorflow模型脚本
- freeze_detect.sh # 模型转换并显示输入输出层信息脚本
- Host-Part