RoboMaster2019能量机关

8m定点打靶(移动与不移动)的任务
获取图像——>图像处理——>运动预测——>转动云台及射击

1、获取图像:使用摄像头获取能量机关图像
2、图像处理:识别算法部分,识别一些关键元素,如装甲板,旋转中心,旋转臂的灯效种类。
3、运动预测:由于大风车是在运动,还需要进行大风车运动预测,同时子弹的运动不是一条直线,也需要进行子弹弹道补偿。
4、转动云台及射击:预测过后,就能得到云台所要旋转的pitch,yaw角,发送给stm32底层,完成控制。(需要电控组协调)

获取图像
相机安装位置:
由于大风车在固定位置旋转,摄像头安装在底盘上,底盘保持不动,则摄像头相对大风车是静止的,可以大大简化图像计算,并且避免了不必要的干扰。相对于安装云台上,提高了准确率和速度。

相机镜头焦距选择:
采用1/2” CMOS传感器芯片,130万像素分辨率
像素尺寸 4.8μm×4.8μm
分辨率 1280(H)×1024(V)
焦距计算公式:http://www.microimage.com.cn/xwjs/2010/0715/article_1649.html
镜头焦距 = (镜头到物体的距离)×(相机机型号尺寸)/ 物体的高度
f = 1500mm × 4.8 /250 = 28.8mm

风车半径为0.8m,则大小为1.61.6m,需要图像留有余量,方便机器人对位,这里视野取目标的3倍,则视野大小应为4.8 4.8m。
大风车距离桥头(镜头)距离为8m
相机尺寸为4.8um1024=4.8mm
8004.8/480 = 8mm
所以考虑选择8mm的镜头(其实6mm的也行)

图像处理
二值图,过滤掉背景噪音后,在二值图上可以方便的提取关键元素
提取关键元素:
装甲板:提取装甲板,后续可以使用pnp算法解算位置,得到打击目标位置。
旋转臂:由于需要区分激活状态的旋转臂和未激活的旋转臂,所以需要提取该部分元素进行区分。
旋转中心:发光R,由于大风车处于旋转状态,需要进行圆周预测,那么圆心位置是必不可少的。

findcontours()和minAreaRect() ,然后使用约束条件进行匹配选择,如长宽比,大小,角度等。

运动预测


1.建立大风车运动模型:

由于大风车旋转,对于识别到的打击目标,需要进行预测才能真正的打中目标。大风车做匀速圆周运动,需要获取圆周运动的圆心(待测),半径(已知)和速度(已知),通过建立大风车运动模型来进行预测
方案一:记录多个装甲板点(开始只进行图像处理),建立装甲板运动在3维空间的圆的方程,从而进行预测。
方案二:平面简化版模型,在图像上,得到大风车中心点,得到装甲板目标中心,直接得到图像平面圆方程,从而进行预测。优点为简单,便于实现;缺点为对于打击能量机关的位置很敏感,必须正对能量机关,不正对会带来预测误差。
在这里插入图片描述

固定预测时间t(在stm32端实现,采用一个定时器,固定延时发射子弹),从而固定的预测旋转角度theta

2.建立子弹抛物模型:

由于距离较远,必须考虑重力对子弹的影响,可以建立重力模型,对子弹进行建模,从而对云台所需要的仰角进行补偿。


3.建立一个pitch偏移表,通过偏移量查表来进行补偿。

误差分析

相机标定误差:
由于涉及视觉测量,相机参数在进行视觉测量中,具有重要的作用,其误差会直接导致视觉测量误差。所以,需要减小其相机标定误差。多次标定,去掉偏差较大的标定结果,取中位标定结果来减小误差

相机安装位置误差
由于相机安装在底盘上,相机与发射云台有个坐标变换,包含一个平移向量和一组旋转参数,理想安装位置,相机与云台安装没有旋转关系,只有平移关系。

平移向量直接采用直尺测量,精度在mm级别,不会引入太大误差。
旋转参数选择参数采用欧拉角方式,理想状态均为0,由于误差,其真实值并不为0。
可通过经验补偿方式减小误差

算法误差(图像识别与单目定位)
采用PnP定位算法,来对目标进行定位。
定位深度距离误差预估为:8m*(1/50)*100% = 16cm
对于单目测距来说,远距离识别误差大,很大原因是被测量物体分辨率不够,像素波动对于定位误差影响很大。可以考虑其他的一些高精度定位方案,如双目定位等,来减小算法误差.

弹道误差
机械因素:包含枪管等子弹发射经过的机构设计,导致子弹发射并不是平行于枪管中轴线,而形成散射的效果。
射速因素:由于远距离设计,子弹并不是直线发射,所以,还受发射速度的影响,不稳定的发射速度也会影响弹道的上下偏移。
射速影响理论计算:(理想)
在这里插入图片描述