RMUC2022弹道补偿

Authors

HarryWen

Contact

858601365@qq.com

Date

2022/09/8

Copyright

This document has been placed in the public domain.

概述

在RMU竞赛中,由于弹丸受重力影响,对于远距离打击如果不进行弹道补偿,弹丸会打到目标偏下的位置,而影响自瞄系统击打的准确率。

为消除弹丸下坠的影响,引入了弹道补偿模块。该文档将阐述弹道补偿模块中的理想抛物线模型。

1. 模型定义与假设

1.1 坐标系定义

Note

坐标系定义原则上参考 REP103,但针对RMU进行了一定的简化,请参阅 Bubble坐标系

云台坐标系通过yaw轴与pitch轴连接在底盘上,初始坐标系O_{gimbal\_xyz}。 其中前方为{x}正方向,左方为{y}正方向,上侧为{z}正方向。重力加速度 g 方向为 z 轴负方向。

相机坐标系通过yaw轴与pitch轴连接在于云台上,初始坐标系O_{camara_optical\_xyz}

1.2 模型符号定义

符号

符号说明

备注

t

弹丸从枪管飞出到击打到装甲板的飞行时间

即下坠时间

s

弹丸从枪管飞出到击打到装甲板的飞行距离

/

\delta_h

弹丸沿枪管朝向射出的目标点位置和实际
命中点的高度差,即下落高度

/

||\vec{v}||

弹丸初速度

通过裁判系统获得

gimbal_{yaw}

gimbal_{pitch}

在底盘坐标系下云台相对底盘中心偏转角度

/

target_{yaw}

target_{pitch}

在相机坐标系下目标相对相机光心的偏转角度

/

comp_{yaw}

comp_{pitch}

在底盘坐标系下云台用于补偿弹丸下落的偏转角度

comp_{yaw} 默认为零

1.3 模型假设

  1. 弹丸不受空气阻力影响

  2. 弹丸从枪管飞出的速度为裁判系统获取到的速度

2. 模型数学推导

s_{hor} = s * sin (gimbal_{yaw} + target_{yaw} + comp_{yaw})

s_{ver} = s * cos (gimbal_{pitch} + target_{pitch} + comp_{pitch})

t = s / \vec{v}

\delta_h = 1/2 g t^2

error_{value} = s_ver - \delta_h - s * cos (gimbal_{pitch} + target_{pitch})

iter_{radian} = math.atan(\frac{Y+error_{value}}{ori_Z})

iter_{dis} = \frac{ori_Z}{iter_{radian}}

1. 功能实现

采用反推模型的方法

运动补偿的相关代码位于 bubble_contrib/bubble_aming 模块下

目标点 P_0(x_0, y_0, z_0) 信息通过识别器经由 PnP解算 获得。 PnP解算将世界坐标系下目标的位姿信息转换为相机坐标系下:

设置最终目标点targetPoint 设临时目标点tempPoint=targetPoint 循环迭代10次:

计算仰角angle=枪管指向tempPoint的角度

利用抛物线模型,计算实际命中点realPoint.

得到误差,即下落高度deltaH=targetPoint-realPoint

更新tempPoint=tempPoint+deltaH

输出仰角angle,与误差deltaH