步兵设计方案

Catalogue
  1. 1. 软件方案设计
    1. 1.1. 1.目的
    2. 1.2. 2.需求分析
    3. 1.3. 3.硬件需求
    4. 1.4. 4.软件设计
      1. 1.4.1. 4.1 基本设计理念
      2. 1.4.2. 4.2 参考开源方案
      3. 1.4.3. 4.3 通讯设计
      4. 1.4.4. 4.4 模块设计
      5. 1.4.5. 通讯模块
      6. 1.4.6. 4.5接口设计
      7. 1.4.7. 相机模块和算法模块
      8. 1.4.8. 算法模块和坐标转换模块
      9. 1.4.9. 坐标转换模块和预测模块
      10. 1.4.10. 预测模块和通讯模块
      11. 1.4.11. 调试模块和各个模块的衔接
    5. 1.5. 5.软件调试方案
      1. 1.5.1. 5.1 参数调试
      2. 1.5.2. 5.2 功能切换
  2. 2. 算法方案设计
    1. 2.1. 1.需求分析
    2. 2.2. 2.选择算法方案
      1. 2.2.1. 几何特征识别
    3. 2.3. 3.简述流程
    4. 2.4. 4.搭建测试环境方案
  3. 3. 测试方案设计
    1. 3.1. 1.测试部署环境
    2. 3.2. 2.测试数据
      1. 3.2.1. 单元测试
      2. 3.2.2. 系统测试
    3. 3.3. 3.测试策略
      1. 3.3.1. 3.1单元测试
      2. 3.3.2. 3.2集成测试
      3. 3.3.3. 3.3系统测试
    4. 3.4. 4.实际测试
      1. 3.4.1. 4.1 联调测试
      2. 3.4.2. 4.2 通讯测试
      3. 3.4.3. 4.3 性能分析和瓶颈测试
  4. 4. 技术方案参考文献
  5. 5. 参考资料

必要时补充图表进行说明

软件方案设计

  1. 根据实施方案设计软件系统架构
  2. 开展算力、FLASH大小、外设等需求评估,辅助硬件团队选型或设计适宜的硬件平台
  3. 考虑比赛环境的复杂性,做好各模块之间的通信链路设计,充分考虑通信的可靠性和稳定性。
  4. 加入软件测试和调试方案设计
  5. 根据功能复杂度,建议考虑采用一些开源软件方案,如果有多个方案,建议加入方案对比分析说明,基于优秀的开源方案做功能优化。

1.目的

2.需求分析

3.硬件需求

TX2 NX AGX
yolov4-tiny运行帧率 30fps 60fps 80fps
yolo
模型\分辨率 Yolov5s 640 Yolov5n 640 YOLOv5-Lite_c 640 Yolox-nano 640 Yolox-tiny 640 Yolox-nano 416 Yolox-tiny 416
FPS 68.1 96.1 暂无测试条件 124 74.2 163 110
Map@.5:0.95 37.2 28.4 33 25.8+ 32.8+ 25.8 32.8

考虑到实际机器学习算法的需求并综合实际情况,所以选择采用NX作为运算设备

4.软件设计

4.1 基本设计理念

模块化,结构简单宜于调试,提前交付结合电控进行同步调试和开发

4.2 参考开源方案

成熟的方案做自己的适配,参考的方案自己做实现等等

4.3 通讯设计

保障可靠性和稳定性的情况下,速度优先

采用boost库的串口通讯模块进行串口通讯,采用Protobuf3进行帧信息的封装和校验以及压缩

4.4 模块设计

通讯模块、相机模块、调试模块、算法模块(识别)、坐标转化模块、预测模块

通讯模块

  • 消息收发模块
  • 帧封装和校验模块

4.5接口设计

相机模块和算法模块

图像Mat

算法模块和坐标转换模块

坐标转换模块和预测模块

预测模块和通讯模块

调试模块和各个模块的衔接

5.软件调试方案

5.1 参数调试

  1. 参数的配置文件
  2. 参数调试的热切换和实时生效
  3. 可视化调参工具,事实根据效果进行调试

5.2 功能切换

和电控进行协议的制定,并根据串口通信内容进行模块的切换

算法方案设计

算法参考

  1. 根据任务目标选择合适的算法方案,确保算法的完备性。
  2. 深入了解所选算法的原理。
  3. 搭建合适的算法测试环境,确保上场效果。

1.需求分析

目标

  • 静止的能量机关

  • 匀速旋转的能量机关

  • 正弦函数旋转的能量机关

实际需求

  • 更快速的识别和响应
  • 稳定性
  • 更好的鲁棒性,增强对不同环境的适应

2.选择算法方案

几何特征识别

分析

  • 识别正确击打位置正确区分激活、待激活、未开始
  • 获得目标到枪口的实际位置解算坐标
  • 弹道解算根据当前速度计算弹道
  • 根据实际情况做出落点的预测
  • 正确的延迟或滞后
  • 拟合实际曲线或进行时间同步

3.简述流程

  1. 目标识别
  2. 坐标解算
  3. 弹道解算
  4. 预测补偿

4.搭建测试环境方案

  1. 根据功能进行模块化

  2. 根据历史录制视频进行单元测试

  3. 交付模块程序给电控进行实际调试反馈问题

  4. 逐渐集成新的功能,直到整个程序完成

测试方案设计

  1. 根据功能设计测试case,软件、硬件、机械的同学一同参与设计,在开发的过程中留好测试接口。
  2. 掌握一些测试的方法论。(比如:黑白盒测试、持续集成、压力测试等)
  3. 进行功能逻辑、性能测试分析等

1.测试部署环境

  1. 开发环境尽可能和部署环境保持一致
  2. 检查版本库是否兼容
  3. 针对部分模块提前进行部署环境测试
  4. 进行实际部署测试

2.测试数据

单元测试

根据模块的不同有图像输入和数据输入两部分

系统测试

编写伪相机驱动,传入实际记录的图片进行测试

3.测试策略

单元测试->集成测试->系统测试->实际运行测试

3.1单元测试

  1. 传入图像/数据进行,根据输出进行黑盒测试

  2. 再次传输数据,进行白盒测试,判断程序各步骤运行是否符合预期

3.2集成测试

  1. 重点测试模块和模块之间的接口
  2. 提前交付部分完整的内容给电控进行调试

3.3系统测试

  1. 测试配置文件的加载和读取
  2. 整个系统正常运行的稳定性,及最大连续运行时间
  3. 传入数据,根据输出判断功能是否正常,进行黑盒测试
  4. 模拟串口通讯,进行白盒测试根据帧信息判断是否运行正常

4.实际测试

4.1 联调测试

  1. 以文档形式,规范完整的调试流程
  2. 记录每次程序更改的部分形成日志
  3. 向程序增添日志功能记录日志

4.2 通讯测试

  1. 检查接线问题
  2. 串口调试助手进行收发测试
  3. 检查串口参数配置
  4. 检查串口是否被占用

4.3 性能分析和瓶颈测试

在实际平台,效果不理想,针对各个模块进行时间记录和分析,根据二八法则,对程序性能瓶颈进行测试和分析

为下一步优化指明方向

技术方案参考文献

这个最后需要进行汇总即可

参考资料

  1. (34条消息) 分享一份完整的软件系统测试方案_测试萌萌-CSDN博客_软件系统测试