和尚啃源码 之 RM深大开源RP_Infantry_Plus

和尚啃源码 之 RM深大开源RP_Infantry_Plus

闲来垂钓碧溪上。这回遇到硬茬了,任务是啃完全套RM代码,想必是一场恶战,记录一下笔记:

一、万事万物从Readme开始

1.功能介绍

本套代码完成了对RoboMaster2019赛场上大小符以及机器人装甲板的识别,通过自定的通讯协议将视觉处理后的信息发送给下位机,由单片机处理视觉信息并控制云台的运动


2.效果展示
① 装甲板检测:

在6米内的识别准确率几乎100%,辅以ROI操作和多线程,处理一张图片的时间在1ms以内,跑整套代码仅需4-6ms,能够做到实时检测
autoaim

② 大小符识别:

深度学习和传统方法结合,可以做到实时预测旋转之后的位置,加上roi和多线程操作之后,处理一张图片的时间在2ms之内,加上读图也只需要4-6ms。
rune_desc


3.环境依赖
  • ubuntu 16.04.3
  • OpenCV 3.4.4
  • Qt Creator 5.10.1
  • CMake 3.5.1
  • GCC 5.4.0

4.文件架构
深大开源/
├── depends(系统动态链接库)
├── main.cpp(主函数:1.引入配置文件 2.设置串口 3.设置多线程)
├── extraFile
│   ├── AimXMl
│   │   ├── calib_no_4_1280.yml(标定配置)
│   │   └── param_config.yml(参数配置)
│   ├── caffemodel(caffe框架网络结构)
│   │   ├── armornet_iter_200000.caffemodel
│   │   ├── deploy.prototxt
│   │   ├── lenet_iter_200000.caffemodel
│   │   └── lenet_train_test_deploy.prototxt
│   └── Rune
│       ├── lenet(lenet网络结构)
│       │   ├── deploy.prototxt
│       │   ├── lenet_iter_80000.caffemodel
│       │   ├── lenet_iter_80000加了负样本.caffemodel
│       │   └── lenet_iter_80000_旋转后.caffemodel
│       ├── xml
│       │   └── Mono_out.xml
│       └── yolo(yolov2训练结果)
│           ├── tiny-yolov2-trial3-noBatch_235000.weights
│           ├── tiny-yolov2-trial3-noBatch_80000.weights
│           ├── tiny-yolov2-trial3-noBatch.cfg
│           └── 单通道
│               ├── tiny-yolov2-trial3-noBatch_80000.weights
│               └── tiny-yolov2-trial3-noBatch.cfg
├── include
│   ├── Aim
│   │   ├── AngleSolver.hpp(RectPnPSolver及其子类AngleSolver的定义)
│   │   ├── ArmorDetector.hpp(struct ArmorParam/struct matched_rect/struct candidate_target/class ArmorDetector定义)
│   │   └── Settings.hpp(Settings类定义)
│   ├── Camera
│   │   └── video.h(static uint32_t gFormatTransferTbl[]、class Video、class FrameBuffer)
│   ├── header.h(opencv、c++、Qt等头文件)
│   ├── ImageConsProd.hpp(ImageConsProd类定义)
│   ├── Rune(class Detect)
│   │   ├── Detect.h
│   └── SerialPort
│       ├── CRC_Check.h
│       └── serialport.h(class SerialPort)
├── includes (相机 SDK 包含头文件)
├── RP_Infantry_Plus.pro
├── RP_Infantry_Plus.pro.user
└── src
    ├── Aim
    │   ├── AngleSolver.cpp
    │   └── ArmorDetector.cpp
    ├── Camera
    │   └── video.cpp
    ├── ImageConsProd.cpp
    ├── Rune
    │   ├── Detect.cpp
    └── SerialPort
        ├── CRC_Check.cpp
        └── serialport.cpp

5.文件描述
文件名 用途
AngleSolver.cpp 对目标进行角度解算(DJI开源)
ArmorDetector.cpp 进行装甲板检测
video.cpp 将工业相机 SDK 封装成类
ImageConsProd.cpp 处理多线程以及数据传输
Detect.cpp 进行大小符装甲检测
serialport.cpp 与下位机通讯的通讯协议

2021年9月21日 14:50-16:40


6.实现方案(重点标注为学习点)
(1) 装甲板识别
  1. 自瞄流程图:
    peocess

  2. 基本原理:

    如果 last_result为 true,

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值