Developing.
软件正处在开发初期,只完成了视觉的核心部分,其余部分正在开发中。
本开源软件为青岛大学未来战队机器人的视觉和人工智能的代码。参考了其他战队代码和各种开源机器人项目,从零编写而成。中心思想:
- 基于OpenCV的识别算法
- 基于行为树设计哨兵的AI
- 一个项目适配不同型号的机器人
这样做增加代码了的重用,减少了工作量。实现了通过DLA(深度学习加速器)加速MiniPC上模型的推断速度。利用行为树实现了可控的复杂行为。
![]() |
---|
YOLO识别效果 |
![]() |
---|
本算法识别效果 |
![]() |
---|
TODO:TensorRT加速效果 |
-
依赖
-
开发测试环境
- Ubuntu
- WSL2(不能使用工业相机)
-
安装依赖
- 根据上面链接安装相关依赖
- 安装完成后运行
sudo ldconfig
-
获得代码
git clone --recursive https://github.com/qdu-rm-cv/qdu-rm-ai # or git clone --recursive https://gitee.com/qdu-rm-2022/qdu-rm-ai
-
快速配置所需环境
git clone https://github.com/qdu-rm-cv/environment cd environment sudo chmod 777 ./shell/* ./shell/env_dep_install.sh ./shell/code_dep_install.sh
-
-
编译 & 安装
cd qdu-rm-ai mkdir build cd build cmake .. make -j8 # 根据CPU选择合适的数字 make install
-
神经网络(可选)
-
准备
# 安装本项目需要的Python模块。 pip3 install -r qdu-rm-ai/requirements.txt # 安装YOLOv5需要的Python模块 pip3 install -r qdu-rm-ai/third_party/yolov5/requirements.txt
-
训练
# 以下脚本涉及相对路径,需要在此文件夹内运行。 cd qdu-rm-ai/utils # 处理数据集 python3 roco2x.py --dji-roco-dir=<path to DJI ROCO> # 训练导出模型 sh ./train_vision.sh
-
-
运行
cd qdu-rm-ai/runtime # 根据应用选择程序 auto-aim # sentry / radar ...
文件夹 | 内容 | 备注 |
---|---|---|
assets | 资源 | 包含文档、效果展示、测试产物等相关的图片 |
runtime | 运行环境 | 包含运行所需文件,和运行过程产生的文件 |
src | 源代码 | |
third_party | 第三方软件 | |
utils | 工具 | 脚本和文件 |
src内 | 内容 | 备注 |
---|---|---|
apps | 应用 | 所有产生的应用程序 |
behavior | 行为库 | 基于行为树开发的AI |
component | 组件库 | 各类算法和数据结构 |
device | 设备库 | 外接设备的抽象 |
vision | 视觉库 | 目标识别等代码 |
vision内 | 内容 | 备注 |
---|---|---|
classifier | 分类器 | 装甲板分类器 |
compensator | 弹道补偿器 | 三维解算、测距、弹道补偿 |
detector | 探测器 | 装甲板探测、能量机关等的探测器 |
object | 对象类 | 图像对象、物理对象和比赛中抽象出的各种基础对象类 |
params | 参数类 | 可视化调参的参数类 |
predictor | 预测器 | 滤波器和集成的预测器 |
process | 流程 | 对以上视觉处理模块的组合 |
apps内 | 内容 | 备注 |
---|---|---|
app | 应用程序 | 包含哨兵程序、自瞄算法、雷达程序等 |
demo | 样例 | 演示用的例子 |
tests | 测试代码 | 单元测试 |
![]() |
---|
视觉程序框图 |
![]() |
---|
行为树演示 |
近期:
-
修缮好测距模块和弹道补偿器模块
-
引入神经网络
- 使用基于pytorch的yolov5算法,训练得到的权重和模型导出到ONNX格式。
- 在Jetson平台使用TensorRT运行导出的模型。
- 在NUC平台使用OpenVINO。
- 添加Int8运行
-
完成各种滤波器进行平滑化处理,并完成预测器
-
完成其余兵种任务
- 矿石识别部分代码
- 飞镖控制部分代码
远期:
-
实现类似多级流水线的视觉算法流程。参考文章(等待OpenCV完善架构)
-
多线程进行生产者消费者调度
-
优化传统视觉算法和参数增强程序鲁棒性