目录
1 TYUST-RM2023-NewMaker哨兵视觉代码
1.1 说明
1.2 算法设计
1.3 识别思路
本套代码是太原科技大学NewMaker战队2023赛季哨兵开源代码
本套代码主要含有:TYUST-RM2023赛季哨兵视觉代码,主要模块分为装甲板识别、SVM支持向量机,PNP角度解算、复活机制,双相机驱动及串口通信等。
如对代码有理解上的问题以及bug等,可联系:
景佳柱(QQ:108487627)
2.1 通过电控发送的数据确定击打颜色,进行通道分离,阈值筛选,通道相减,二值化,膨胀等过程,为后期框选识别做准备。
2.2 对处理完的图像进行轮廓检测,并计算最小包围矩形,根据灯条尺寸,装甲板两边尺寸等条件,筛选出灯条轮廓。为后续筛选装甲板,PNP 角度解算做准备。
2.3 根据灯条平行度,中心连线水平度,灯条长宽比,左右灯条长度差比值等进行装甲板初步筛选。
2.4 通过透视变换处理图像后,进行数字识别,以确保识别无误,以便后续确定击打优先级。
2.5 通过以上操作,确定极大优先级,发送击打信息给电控,以完成自动开火。
- 重要算法原理阐述、公式推导
3.1 SVM 数字识别
数字识别是装甲板检测的最后一项工作,也是能否击打装甲板的关键,是体现鲁棒性最重要的一环。 (1) 通过透视变换将各个角度的数字转换到正面,实现平衡性和共性比例不变性,提高分类效率。 (2) 通过加权来设置对步兵,英雄以及工程的击打优先级,以便更好的发挥哨兵的作用。
3.2 PNP 角度解算
通过处理,判断得到最佳装甲板后,将其进行 PNP 角度解算,得到相机坐标系中目标装甲板的坐标和相应的姿态角。经过坐标系变换到云台坐标系,并再加一定的 运算得到云台到目标装甲板的 pitch,yaw,距离等信息。提取出装甲板,旋转臂,旋转中心等关键要素,分析出目标形状位置及有效击打区域。
Z 轴: = 2( 21, 11) Y 轴: = 2(− 31, √ 32 2 + 33 2 ) X 轴: = 2( 32, 33) 通过以上处理来解算出装甲板位姿,为后续准确击打做准备。
- 自启动:
通过写脚本和用 Ubuntu 自带的‘Startup Applications’软件进行自启动。
- 串口通信:
通过 USB 转 ttl 模块,变化为 4pin 线接入主控板,与嵌入式达成通信协议,将数据发送给下位机,同时开放串口权限,并通过调用函数收取下位机发送的数据。
- 硬件:
Intel NUC11、8mm度申工业相机、USB转ttl。
- 算法性能,优缺点分析优化方案
算法性能:
目前可以精准框选装甲板以进行击打,图像处理速度较快,可以很好的完成视觉的基本功能。
优点:
(1) 本赛季新加了数字识别,使识别跟稳定,准确性更高,,以保证更强的鲁棒性。 (2) 设置了击打优先级,在识别到多兵种的情况下,可通过优先级进行击打,将哨兵作用最大化。 (3) 新增大津法自动调节阈值,保证在较暗环境下也可以稳定识别自瞄。 缺点:
(1)预测效果不佳,对移动的物体命中率不高,建议使用卡尔曼进行预测。 (2)在装甲板移动过快的情况下会掉识别,距离较远时识别会抖动等。
8.算法性能演示