如何调节 rm.cv.std 的自瞄参数?

Step 1 连接小电脑

Step 1.1 配置网线 IPv4 地址

用网线连接你的电脑和车车的小电脑。

配置网线的 IPv4 地址为 192.168.137.1(对于有些小电脑需调成 192.168.1.1),子网掩码 255.255.255.0

Step 1.2 用终端连接小电脑

  • Windows: 用网线连接小电脑网线接口,按 Win + R 后输入 powershell,回车进入终端。
  • Linux: 进入终端。

等待小电脑开机。在终端输入 ssh nvidia@192.168.137.xxx(xxx 就是贴在小电脑上的序号,有些小电脑是 192.168.1.xxx),然后输入密码 nvidia,此时进入小电脑的用户文件夹。

输入 vim ~/Workspace/rm.cv.std/assets/base.param.toml,终端开始编辑预测器参数表。

如何使用 vim 编辑器?按 i 键进入正常编辑模式,可以开始修改数值。编辑完后,按 Esc 退出编辑模式,输入 :w + 回车(英文冒号 + 小写字母 w + 回车) 则保存。输入 :q + 回车 则退出 vim。

自瞄参数是实时更新的。

Step 1.3 打开自瞄网页端

在浏览器地址栏输入 192.168.137.xxx:3001,回车进入自瞄网页端,网页如下。

先勾选 show auto_aim.predictor.aim 左边的小方框。

然后点击“实时视频”栏目中的 auto_aim.predictor.aim,进入一个视频界面,如下,左边是网页,右边是终端 vim。

Step 2 调落点

自瞄打击到装甲板的位置被称为落点。不知道为什么每隔几个小时,落点就可能有偏差。此时我们通过调节偏置来修复这个问题。

在参数表中找到以下两个参数。

[auto-aim.aim-offset]
# @brief 打击方向 yaw 补偿
# @param +: 调大将向左打击
yaw = 0.0
# @brief 打击方向 pitch 补偿
# @param +: 调大将向上打击
pitch = 0.0

找来一个静止装甲板作为目标,放在前方 2 ~ 4m 处,数字朝车车的方向摆着。

启动自瞄,连续发射 3 颗以上子弹。

  • 若落点的均值偏离装甲板中心较远,调节 [auto-aim.aim-offset] 下的 yawpitch(单位为角度制),调节效果见注释。直到落点在装甲板中心附近。

Step 3 调延迟

某些延迟的存在,比如视觉到电控的信号传输延迟,会导致自瞄打不中运动靶。因此我们要测量出这些延迟,让自瞄去进行一个预测。每隔几个小时,延迟参数可能也需要重新测量。

Step 3.1 调节额外发送量 additional-predict-time

在参数表中找到这个参数。延迟数值都以 为单位。

[auto-aim.cmd]
# ...
# @brief 根据角速度,给电控指令的额外预测时间
# @param +: 调大将使对运动靶的跟踪更超前
additional-predict-time = 0.060

视频中有很多不同颜色的小圆圈,某些情况下还会重叠。他们的意思是:

  • 白色:图像中心
  • 绿色:相机光心(相机坐标系 z 轴的投影)
  • 橙色:希望电控能到的角度
  • 黄色:发给电控的角度(偏大,因为电控控制移动角度时有滞后)
  • 红色:子弹模拟

你开启自瞄,先瞄准一个静止靶,这个时候,黄色、橙色和绿色点是重合的。

然后让靶子向左或者向右平移运动,此时黄点和橙点会偏离绿点,且橙点长出了红箭头,见下图。我们希望追踪平移靶时,橙点与绿点大致重合。

  • 下图这种情况称为“橙点朝着红箭头的方向偏移绿点”。需要调大 additional-predict-time 几十毫秒。

  • 下图这种情况称为“橙点朝着红箭头的反方向偏移绿点”。需要调小 additional-predict-time 一些。

Step 3.2 测量 send-to-control 延迟

找到如下参数:

[auto-aim.latency]
# @brief 信号传输总延迟(测量值)
# @param +: 调大将使对运动靶的跟踪更超前
send-to-control = -18e-3

开启自瞄,发子弹打击 匀速运动的目标。最好等到跟随稳定后发弹,因为开始跟随时都会有点跟不上

  • 如果预测总体跟不上,调大 send-to-control
  • 如果预测超前,调小 send-to-control

一般调节 15 ~ 40ms 就会有肉眼可见的变化。本参数在调好后可能是一个负的值,比如 -0.020。

Step 3.3 测量 control-to-fire 延迟

找到下面这个参数:

[auto-aim.latency]
# ...
# @brief 控制到开火的延迟(测量值)
# @param +: 调大将提早反陀螺模型的打击
control-to-fire = 20e-3

调节该参数之前,应将下方:

  • [auto-aim.top-model]aim.max-orientation-angle 参数暂时设为 0.0(只瞄中心)
  • [auto-aim.top-model]aim.max-out-error 暂时设为 0.2(收紧打击时机宽度)。

调节完毕后再改回原数值。

开自瞄,打击距离自己 2 米左右的匀速原地陀螺的敌人,敌人转速须在 20rpm 以上。观察子弹打击时机是否正确。

  • 若打击某块装甲板的时候,装甲板都快转过去了,说明子弹需提早打击,所以调大该参数。
  • 若打击装甲板的时候,装甲板还没转过来,说明需要延缓打击时机,所以调小该参数。

你调完啦!其他参数也可以调节,只需看注释即可捏。