【RM2022-南航长空御风步兵机器人弹道重力补偿方案】
![Oner](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/avatar/pre/v1/000057259_avatar_big.jpg)
步兵机器人重力补偿方案
南京航空航天大学长空御风战队视觉组 李晨
步兵发射17mm荧光弹丸,由于空气阻力及其他因素影响,弹道不能由弹速、云台仰角、重力加速度计算得出;
关于弹道的计算,有的学校采用收敛法、数学建模等方式实现,由于本人才疏学浅,只能暴力拟合,最终实测效果不错。
弹道采集
使用手机或者其它设备拍摄打弹视频,注意尽量正对弹道,注意消除畸变(略有误差影响也可后期调参消除,尽量准确)
在地面放一把卷尺,来换算像素与实际距离的关系
借助opencv鼠标交互,标出每一个弹丸位置,建议将pitch转轴当作原点
导出数据,导入excel(c++可以输出到文件,输出到txt后,excel可导入txt)
借助excel拟合不同pitch弹道
大致效果入下:
(可以看出弹道基本上是一个二次曲线,此外,可以借助看出步兵弹道散布,如果散布过大,建议push机械重新装配发射机构或push电控检查摩擦轮定速)
将不同pitch角度的数据汇总:
此处计算时,由于二次项系数都很小,所以将其乘一万倍来拟合,否则excel会出问题
二次曲线函数为 y=ax^2+bx+c,x为水平相对位置,y为垂直相对位置(我们采用mm为单位)。
将a b c 用散点图画出,可以发现三条线几乎分布在三条条直线附近,用直线来拟合a,b,c,得到公式 y=(a1*p+a2)x^2+(b1*p+b2)x+(c1*p+c2),p为pitch角度(弧度制)
整理可得p=(……)/(……)可直接计算出pitch角度。
例如,我们步兵在14m/s弹速下的参数:
p=(h-5.3080887441-0.0051630465s+0.00003129689860s^2)/(94.0430063408+1.0648636974s-0.00001895768531s^2)
实测发现,此模型计算结果始终在垂直距离上差一定的距离,这是由于相机和枪口的相对位置,以及前面累计的误差导致的,参与计算时,将y加或减几cm即可得到较好的重力补偿效果。
此外,我们自瞄采用了solvepnp,左乘旋转矩阵后即可得到敌方装甲板距离己方的x,y,z,
直接带入,即可得到pitch角
我们在单片机上部署时发现,如果直接计算会得出错误结果,需将s^2 、s分别算出待入,又是奇奇怪怪的bug。
具体效果如下:
记得投币
请问这篇文章对你有用吗?
【RM2022-南航长空御风步兵机器人弹道重力补偿方案】