# 外部辅助数据融合
系统支持外接位置、速度、姿态等传感器,参与辅助组合导航以提高精度。输入须符合指定格式;载荷中的标准差字段一般必须给出且不可为 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 包中,可按以下四步操作:
配置 COMM 模式
若 COM2 尚未占用(COM3 空闲亦可),将其配置为 External SLAM1。配置 AID 开关
勾选 AID 中的 AID_EXT_SLAM1_UPDATE。保存配置
点击界面右下角 Save to FDI,在弹出窗口中点击 Save to Permanent Memory,然后点击 Restart 上电重启。按 FDILink 格式向该串口输入数据
本例使用 External SLAM1(MSG ID0x92)。载荷中除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。
