# 外部辅助数据融合

系统支持外接位置、速度、姿态等传感器,参与辅助组合导航以提高精度。输入须符合指定格式;载荷中的标准差字段一般必须给出且不可为 0,否则外部融合不生效。下文分三部分说明外部输入数据融合。

# 外部辅助数据格式

输入格式须符合 FDILink 协议,帧结构如下(亦见 数据帧组成):

帧头 数据区 帧尾
起始 指令类别 数据长度 流水序号 帧头 CRC8 数据 CRC16 载荷 结束
字节数 1 1 1 1 1 2 1–255 1
数值 0xFC A B C D 高字节 (E) 低字节 (E) 0xFD

表:FDILink 数据帧结构

数据区载荷当前支持的外部输入类型如下。External SLAM1 可包含姿态数据;若需输入外部 ODOM,见 里程计校准。各数据包字段定义见 FDILink 数据帧。

外部输入类型 含义 MSG ID
External Position & Velocity 外部速度、位置 0x68
External Position 外部位置 0x69
External Velocity 外部速度 0x6A
External SLAM1 外部 SLAM 0x92
External Odom 外部 ODOM 0x90

表:外部输入数据类型

# 外部输入串口模式配置

在 FDIGroundStation 的 Config 面板 COMM 配置框中,将用于接收外部数据的串口模式配置为上表对应类型(如 External SLAM1)。含义见上表;字段定义见 FDILink 协议。COMM 口说明亦可参考 Config界面。

# 外部输入 AID 开关

串口模式配置完成后,按指定格式向该串口写入数据,模组即可解析。要使数据参与融合解算,还需在 Config 面板 AID 配置框中勾选对应融合开关(如 AID_EXT_SLAM1_UPDATE)。各开关说明见 AID 开关说明。

# 具体应用案例

假定需将外部姿态与速度输入模组做融合解算。姿态与速度字段定义在 External SLAM1 包中,可按以下四步操作:

  1. 配置 COMM 模式
    若 COM2 尚未占用(COM3 空闲亦可),将其配置为 External SLAM1。

  2. 配置 AID 开关
    勾选 AID 中的 AID_EXT_SLAM1_UPDATE。

  3. 保存配置
    点击界面右下角 Save to FDI,在弹出窗口中点击 Save to Permanent Memory,然后点击 Restart 上电重启。

  4. 按 FDILink 格式向该串口输入数据
    本例使用 External SLAM1(MSG ID 0x92)。载荷中除 Velocity_X/Y/Z、Roll、Pitch、Yaw 外,对应六个标准差字段也必须写入且不能为 0。标准差表示该类数据的噪声:越小表示越精确、越可靠,融合权重越大;反之权重越小。完整字段定义见 MSG_EXT_SLAM1。

Offset Size Format Field Unit Description 本例中的值
0 4 float32_t Position_X m X 轴坐标 0
4 4 float32_t Position_Y m Y 轴坐标 0
8 4 float32_t Position_Z m Z 轴坐标 0
12 4 float32_t Velocity_X m/s X 轴速度 用户给定
16 4 float32_t Velocity_Y m/s Y 轴速度 用户给定
20 4 float32_t Velocity_Z m/s Z 轴速度 用户给定
24 4 float32_t Roll rad 横滚角 用户给定
28 4 float32_t Pitch rad 俯仰角 用户给定
32 4 float32_t Yaw rad 偏航角 用户给定
36 4 float32_t Position_X_standard_deviation m X 轴坐标标准差 0
40 4 float32_t Position_Y_standard_deviation m Y 轴坐标标准差 0
44 4 float32_t Position_Z_standard_deviation m Z 轴坐标标准差 0
48 4 float32_t Velocity_X_standard_deviation m/s X 轴速度标准差 用户给定,不能为 0
52 4 float32_t Velocity_Y_standard_deviation m/s Y 轴速度标准差 用户给定,不能为 0
56 4 float32_t Velocity_Z_standard_deviation m/s Z 轴速度标准差 用户给定,不能为 0
60 4 float32_t Roll_standard_deviation rad 横滚角标准差 用户给定,不能为 0
64 4 float32_t Pitch_standard_deviation rad 俯仰角标准差 用户给定,不能为 0
68 4 float32_t Yaw_standard_deviation rad 偏航角标准差 用户给定,不能为 0

表:External SLAM1(0x92)载荷示例取值

# 一帧示例

下面给出一帧 External SLAM1 输入数据示例:

FC 92 48 9A 86 31 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 40 00 00 00 00 00 00 00 00 CD CC CC 3D CD CC 4C 3E 00 00 00 3F 00 00 00 00 00 00 00 00 00 00 00 00 0A D7 23 3C 0A D7 23 3C 0A D7 23 3C 6F 12 83 3A 6F 12 83 3A 6F 12 83 3A FD

其中:

  • 红色 00 00 A0 40:Velocity_X,约 5 m/s;其余两轴速度为 0。
  • 绿色 CD CC CC 3D:Roll,约 0.1 rad;Pitch、Yaw 分别约为 0.2 rad、0.5 rad。
  • 蓝色 0A D7 23 3C:Velocity_X_standard_deviation,约 0.01 m/s;Y、Z 轴同为 0.01 m/s。
  • 紫色 6F 12 83 3A:Roll_standard_deviation,约 0.001 rad;俯仰角、偏航角标准差同为 0.001 rad。