首先感谢各高校开源代码为本套代码提供的参考,以及感谢2020、2021赛季算法组师兄们的努力。秉承着开源精神,促进各战队间技术交流提升,我队决定本赛季开源本套代码,希望对其他战队提供一定的参考价值。
-
本套代码是太原科技大学NewMaker战队2022赛季哨兵开源代码,仅提供战队间技术交流使用,不得用于任何商业行为。
-
本套代码主要含有:装甲板识别、位姿解算击打等。
-
介于当前开源情况,本套代码着重介绍装甲板识别和击打逻辑等,其他部分不进行具体说明,如对代码有理解上的问题以及bug等,可联系:
- 崔津华(14704258520)
-
我们步兵选用度申相机 分辨率 1284×1024,帧率 122/211FPS,镜头是6丶8mm定焦镜头。
4.实现方案及原理介绍 相机标定 采用张正友标定法进行标定 选材上标定板一定要好的,标定的方法上可采用MATLAB相机标定工具箱网上的链接也是一堆。 作用就是相机出场在所难免都有误差,在2D转3D时会形成畸变。确定了相机的内参外参,将参数带入cv::solvePnP会减少由相机带来的误差
坐标系转换
KF 卡尔曼滤波算法(KF)是序贯数据同化的一种,是由Kalman针对随机过程状态估计提出的。KF的基本思想是利用前一时刻的状态估计值和当前时刻的观测值来获得动态系统当前时刻状态变量的最优估计,包括预报和分析两个步骤。 个人醒悟的文章: https://blog.csdn.net/knightcccc/article/details/126159201?spm=1001.2014.3001.5502 在本套代码中有采用过cv库自带的kf也是先过自己造kf,效果都一样,表现不是很好,但是对于移动较慢的目标效果还是很明显的
CRC CRC校验全称为循环冗余校验(Cyclic Redundancy Check, CRC)。 本质就是数学上的多项式除法,被除数是要进行校验的数据,除数是个人定义的多项式。双方判断用得到的余数进行匹配。 CRC其主要目的就是验证数据的正确性。只能判断是否有错误,不能判断哪个部位。 在本套代码中采用CRC查表法来校验数据的准确性,减少失误方便管理。
- 硬件
| 硬件 | 型号 | 参数 | | -------- | ----------------- | -------------------------- ---- | | 运算平台 | NUC | i5 | | 工业相机 | 度申 SC130GS | 分辨率1280 x 1024,最高帧率108fps| | 镜头 | \ | 6mm定焦 8mm定焦 |
- 软件
软件类型 | 型号版本 |
---|---|
OS | Ubuntu 20.04 |
IDE | Qt Creator-5.8.0 |
Library | OpenCV 4.1.0 |
装甲板识别主要识别机器人最明显的灯条部分,而识别灯条则分为预处理和特征提取两大部 分,首先对图像进行预处理,接着对处理后的图像进行特征提取提取灯条,找到符合条件的 灯条后对灯条间拟合装甲板。
1、预处理
2、特征提取
1)一次筛选
- 对所有轮廓长度进行筛选,大于最大阈值或小于最小阈值轮廓排除;
- 对所有轮廓最小包围矩形长宽比进行筛选,大于最大阈值或小于最小阈值轮廓排除;
- 对所有轮廓面积进行筛选,大于最大阈值或小于最小阈值轮廓排除;
- 对轮廓矩形度(轮廓面积与轮廓最小外包矩形面积之比)进行筛选,大于最大阈值或小于最小阈值轮廓排除;
- 对轮廓似圆度(轮廓面积与轮廓长度之比)进行筛选,大于最大阈值或小于最小 阈值轮廓排除;
- 多边形逼近,将轮廓拟合多边形,对多边形顶点数量做筛选,小于阈值轮廓排除。
2)二次筛选
- 对轮廓外包矩形进行角度筛选,偏移角过大则排除;
- 对轮廓颜色进行筛选,利用轮廓外包矩形四个点的坐标在原图中计算 b 通道和 r 通道的像素差值,筛选出敌方颜色灯柱。
3)装甲板检测
- 对灯条两两匹配;
- 对两灯条高度进行筛选,高度差大于最大阈值排除;
- 对两灯条角度差进行筛选,角度差大于最大阈值排除;
- 将两灯条在 x 轴上的差值与灯条高度之比进行筛选,比值小于最小阈值或大于最大阈值则排除;
- 将两灯条在 y 周上的差值与 x 轴上的差值之比进行筛选,比值大于最大阈值则排除;
- 拟合包含两灯条在内的最小矩形,对矩形面积进行筛选,小于最小阈值则排除;
- 利用两灯条计算出中间装甲板 4 个顶点位置;
- 对装甲板矩形宽高比进行筛选;
- 找到装甲板。
装甲板识别逻辑流程图
目前仍存在的问题
- 继续研究反小陀螺算法,提高反小陀螺算法的自适应程度,自动化程度,提高反小陀螺算法击打命中率;
- 将整体算法从传统算法向神经网络转移;
- 对移动目标,继续研究或发现新的解决方案,提高击打移动目标的命中率;
- 在装甲板识别中加入数字识别,降低误识别概率。