依赖与架构准备

This commit is contained in:
2026-03-22 19:42:38 +08:00
commit 338ca9d2b7
18 changed files with 7304 additions and 0 deletions

310
docs/IMU/command.md Normal file
View File

@@ -0,0 +1,310 @@
# FDILink指令配置示例
## 进入配置模式
```uart
#fconfig\r\n
```
## 滤波器开关配置示例——将3D磁力计的融合开关打开
```uart
#fconfig\r\n // 1. 进入配置模式
#fparam get AID_MAG_V_MAGNETIC\r\n // 2. 获取当前滤波器状态
#fparam set AID_MAG_V_MAGNETIC 1\r\n // 3. 设置3D磁辅助为打开状态
#fsave\r\n // 4. 保存设置
#freboot\r\n // 5. 重启设备
```
## 将COM2 改成NMEA(OUT) 协议
```uart
#fparam get AID_GNSS_VEL_UPDATE\r\n
#fparam get MAG_GEOMAGFIELD_B\r\n
#fconfig\r\n
#fdeconfig\r\n
#fsave\r\n
#freboot\r\n
y\r\n
#fconfig\r\n
```
## 设置端口1的类型为MAIN
```uart
#fparam set COMM_STREAM_TYP1 1\r\n
```
## 设置端口4的类型为NONE
```uart
#fparam set COMM_STREAM_TYP4 0\r\n
```
## 波特率修改配置
```uart
#fimucal_gyro\r\n
#fmagcal3d\r\n
#faxis\r\n
#fmsg 40 100\r\n
#fmsg\r\n
#fante\r\n
```
```c
Stream_TxBlock(stream, "UNLOG\r\n", strlen("UNLOG\r\n"));
// Stream_TxBlock(stream, "GPGGA 1\r\n", strlen("GPGGA 1\r\n")); //增加NMEA解析数据会有2-3s延迟 字符形式解析慢
Stream_TxBlock(stream, "AGRICB 0.1\r\n", strlen("AGRICB 0.1\r\n"));
Stream_TxBlock(stream, "LOG PSRDOPB ONCHANGED\r\n", strlen("LOG PSRDOPB ONCHANGED\r\n"));
Stream_TxBlock(stream, "LOG PSRVELB ONTIME 0.1\r\n", strlen("LOG PSRVELB ONTIME 0.1\r\n"));
// Stream_TxBlock(stream, "LOG PSRPOSB ONTIME 0.1\r\n", strlen("LOG PSRPOSB ONTIME 0.1\r\n"));
Stream_TxBlock(stream, "LOG HEADINGB ONTIME 0.1\r\n", strlen("LOG HEADINGB ONTIME 0.1\r\n"));
// Stream_TxBlock(stream, "LOG BESTXYZB ONTIME 0.1\r\n", strlen("LOG BESTXYZB ONTIME 0.1\r\n"));
```
## fconfig指令
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fconfig** |
| 说明 | 使导航设备由导航模式进入配置模式,配置模式下设备不再进行导航也不输出数据。所有配置命令仅在配置模式下有效。配置完成后请保存,否则已配置项不会保存和生效 |
| 格式 | `#fconfig<CR><LF>` |
| 需要确认 | 否 |
| 重启生效 | 否 |
| 示例 | 输入:`#fconfig` — 导航设备停止输出导航结果,并输出: `#OK` |
## fdeconfig指令
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fdeconfig** |
| 说明 | 使导航设备由配置模式恢复导航模式 |
| 格式1 | `#fdeconfig<CR><LF>` |
| 需要确认 | 否 |
| 重启生效 | 否 |
| 示例 | 输入:`#fdeconfig` — 导航设备重新输出导航数据 |
| 回复 | `*#OK` — 成功进入导航模式 |
## freboot
| 属性 | 内容 |
|:---|:---|
| **命令** | **#freboot** |
| 说明 | 重新热启动设备 |
| 格式 | `#freboot` |
| 需要确认 | 是 |
| 重启生效 | 否 |
| 示例 | 输入`#freboot`,设备重新热启动 |
| 备注 | 重新启动时所有未保存的设置将不会保存,也不会生效。重新启动命令不会重启 gnss 模组 |
## freset
| 属性 | 内容 |
|:---|:---|
| **命令** | **#freset** |
| 说明 | 将配置恢复到出厂初始值,恢复出厂配置后用户配置将全部清除,固件版本保持不变 |
| 格式 | `#freset` |
| 需要确认 | 是 |
| 重启生效 | 否 |
| 示例 | `#freset` |
| 备注 | 通过上位机的参数导出按钮可以将重置之前的用户配置保存下来 |
## fsave
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fsave** |
| 说明 | 配置保存 |
| 格式 | `#fsave` |
| 需要确认 | 否 |
| 重启生效 | 否 |
| 示例 | `#fsave` |
| 备注 | 几乎所有的配置更改后都需要执行配置保存操作,这样重启后才能保证配置生效 |
## fante
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fante** |
| 说明 | 配置双天线航向与载体前向夹角 |
| 格式1 | `#fante<CR><LF>` — 查询GNSS天线配置信息双天线航向偏角、双天线基线长度、天线杆臂 |
| 格式2 | `#fanteheadbias angle<CR><LF>` — 其中 angle 为角度值,值域在 0 至 360°间 |
| 格式3 | `#fantebaseline length<CR><LF>` — 配置双天线之间基线的长度length单位为米m |
| 格式4 | `#fantearm x y z<CR><LF>` — 配置GNSS主天线到IMU的杆臂命令 |
| 示例 | 将双天线航向与载体前向夹角设置为 270 度:<br>输入:`#fanteheadbias 270.0`<br>输出:`*#OK` |
| 备注 | 定义主天线到从天线为基线矢量正方向从IMU正上方看去顺时针为天线航向偏角的正方向 |
## fimucal
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fimucal** |
| 说明 | 校准陀螺仪、加表的常值零偏以及调平 |
| 格式1 | `#fimucal_level<CR><LF>` — 将IMU坐标系调平至水平面不改变陀螺和加表零偏 |
| 格式2 | `#fimucal_acce<CR><LF>` — 执行加速度计零偏校准 |
| 格式3 | `#fimucal_gyro<CR><LF>` — 执行陀螺仪零偏校准 |
| 需要确认 | 否 |
| 重启生效 | 是 |
| 示例 | 输入`#fimucal_level`IMU调平校准 |
| 备注 | **注意!** 格式1和格式2需要在水平静止状态下执行该命令格式3只需要模块保持静止 |
## fmsg
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fmsg** |
| 说明 | 配置发送的数据内容 |
| 格式1 | `#fmsg` — 查询当前数据包信息。显示内容包括所有支持的数据包以及数据包ID以及其发送频率 |
| 格式2 | `#fmsg msg freq` — msg为2位十六进制数字表示数据包IDfreq为设置指定数据包的发送频率 |
| 需要确认 | 否 |
| 重启生效 | 是 |
| 示例 | 输入:`#fmsg 40 100`表示IMU数据以100Hz的频率发送<br>输出:`IMU [40] 100.0Hz`表示IMU数据已经设置为100Hz的发送频率 |
## fparam
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fparam** |
| 说明 | 读取或配置参数 |
| 格式1 | `#fparam get paramName` — paramName 需要获取的参数名称 |
| 格式2 | `#fparam set paramName paramValue` — paramName需要设置的参数名称paramValue参数的数值十进制 |
| 需要确认 | 否 |
| 重启生效 | 是 |
| **配置说明1串口波特率配置** | paramName的值和paramValue的值见表1 (DETA系列) 和表2 (EPSILON系列)默认配置中COMM_BAUD1 (端口1) 的波特率被设置为921600bps |
| **示例1** | 输入:`#fparam get COMM_BAUD2\r\n`<br>输出:`COMM_BAUD2=5`表示现在端口2为 115200bps<br>输入:`#fparam set COMM_BAUD2 8\r\n`<br>输出:`*#OK`表示成功将端口2改为921600bps |
| **备注1** | 默认端口1配置为Main协议若端口1配置为其它波特率则保存重启后波特率也需要重新选择同时**强烈不建议**将Main协议端口的波特率设置在115200bps以下 |
| **配置说明2滤波开关配置** | 除了在上位机配置滤波器开关外用户同样可以使用串口指令进行配置paramName的值可见表3相应的paramValue为0或者10表示关闭1表示打开 |
| **示例2** | 输入:`#fparam get AID_MAG_2D_MAGNETIC\r\n`<br>输出:`AID_MAG_2D_MAGNETIC=1`表示磁力计2D辅助开关是打开的<br>输入:`#fparam set AID_MAG_2D_MAGNETIC 0\r\n`<br>输出:`*#OK`,表示不使用磁力计进行融合 |
| **备注2** | 滤波开关的配置最好在测试前进行,测试中对滤波开关进行配置可能会破坏滤波器的稳定,容易导致位姿的突变与发散 |
| **配置说明3传感器参数修改** | 用户可以使用串口指令查看或者修改位于上位机 Onboard Parameters里的所有传感器参数包含imu参数、GNSS参数、DEBUG参数等等 |
| **示例3** | 输入:`#fparam get IMU_ACC_AVG\r\n`<br>输出:`IMU_ACC_AVG=9.794700`表示当地重力加速度计为9.794700m/s²<br>输入:`#fparam get GNSS_MIN_VACC\r\n`<br>输出:`GNSS_MIN_VACC=2.500000`表示当GNSS垂直方向的精度小于2.5m这个阈值时才会使用GNSS进行组合导航<br>输入:`#fparam set GNSS_MIN_VACC 0.1\r\n`<br>输出:`*#OK`表示成功将GNSS垂直方向的阈值设置为0.1m这在客户使用RTK高精度组合导航时是有用的可以防止在GNSS信号变差时对系统造成一定的负面影响 |
| **备注3** | 传感器参数的修改一般只用于FDISYSTEMS研发人员的调试阶段除非用户对该领域很熟悉否则不建议自行修改 |
| **配置说明4端口协议配置** | 端口协议除了在上位机配置外还能使用串口指令进行配置端口协议见表4常用的端口协议为Main、NAV、RTCM、NMEA和Ublox |
| **示例4** | 输入:`#fparam get COMM_STREAM_TYP1\r\n`<br>输出:`COMM_STREAM_TYP1=1`表示端口1配置为Main协议<br>输入:`#fparam set COMM_STREAM_TYP2 2\r\n`<br>输出:`*#OK`表示将端口2配置为NAV协议即可以通过端口2获取FDILink协议的数据此时用户通过端口1或端口2均能获取数据此外端口1还能连接上位机便于实时调试<br>输入:`#fparam set COMM_STREAM_TYP3 6\r\n`<br>输出:`*#OK`表示将端口3配置为Ublox模式如果端口3有接收到Ublox类型的数据保存重启后即可实现GPS/INS组合导航 |
| **备注4** | 上述所有配置内容都需要`#fsave`保存,否则重新上电后失效;<br>此外所有端口中必须有一个配置为Main协议只有该端口可以连接上位机 |
## fmagcal2d
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fmagcal2d** |
| 说明 | 磁力计2d校准指令输入完成后用户在平面上沿模块中心缓慢旋转一周后完成校准完成后自动保存校准数据并退出当前的配置模式 |
| 格式1 | `#fmagcal2d` |
| 需要确认 | 否 |
| 重启生效 | 是 |
| 示例 | 输入:`#fmagcal2d\r\n`<br>输出:`*#OK`表示可以开始进行2d校准<br>输出:`This is a magnetometer 2D calibration. Please wait until the magnetometer progress bar reaches 100 percent Now: 0 percent`<br>表示2D校准的实时进度刷新频率为1HZ。当进度到达100 percent表示校准成功系统将立即退出当前配置模式重新发送FDILink数据 |
## fmagcal3d — 3D磁校准指令
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fmagcal3d** |
| 说明 | 磁力计3d校准指令输入完成后用户在空中缓慢画8字进行校准完成后自动保存校准数据退出当前的配置模式 |
| 格式1 | `#fmagcal3d` |
| 需要确认 | 否 |
| 重启生效 | 是 |
| 示例 | 输入:`#fmagcal3d\r\n`<br>输出:`*#OK`表示可以开始进行3d校准<br>输出:<br>`This is a magnetometer 3D calibration.`<br>`The fitting error of the current calculation: xxx`<br>`Calibration Algorithm: xxx`<br>表示3D校准的实时状态刷新频率为1HZ。"The fitting error of the current calculation : xxx"表示当前计算的拟合误差,参数类型为单精度浮点数类型。"Calibration Algorithm: xxx"表示的是校准算法等级参数等级分为Low, Mid, High三种。当计算的拟合误差小于3.000f并算法等级等于High时表示校准成功系统将立即退出当前配置模式即重新发送FDILink数据 |
## fdgnss
| 属性 | 内容 |
|:---|:---|
| **命令** | **#fdgnss** |
| 说明 | 读取或配置上位机DGNSS栏参数 |
| 格式1 | `#fdgnss get gnssName`<br>gnssName 需要获取的参数名称,包含:<br>`RTCM_TYPE` — 发送或接收RTCM的方式<br>`NET_INFO_IMEI` — SIM卡的IMEI信息无法配置<br>`NET_INFO_CCID` — SIM卡的CCID信息无法配置<br>`NTRIP_SVR_DOMAIN` — Ntrip的IP地址<br>`NTRIP_SVR_PORT` — Ntrip的IP端口<br>`NTRIP_MOUNT` — Ntrip的挂载点<br>`NTRIP_ACCOUNT` — Ntrip账号<br>`NTRIP_PASSWORD` — Ntrip密码<br>`FDI_AUTH` — FDI云鉴权码 |
| 格式2 | `#fdgnss set gnssName gnssValue`<br>gnssName 需要设置的参数名称<br>gnssValue 参数的数值,十进制<br><br>**RTCM_TYPE参数特殊定义**<br>• 0 — Radio<br>• 1 — 千寻位置SDK<br>• 2 — Ntrip配置<br>• 3 — FDI云<br><br>其余gnssValue无特殊定义 |
| 需要确认 | 否 |
| 重启生效 | 是 |
| 示例1 | 输入:`#fdgnss get NTRIP_SVR_PORT\r\n`<br>输出:`NTRIP_SVR_PORT8002`表示Ntrip的IP端口为8002 |
| 示例2 | **完整配置NTRIP账号过程**<br>1. 输入:`#fdgnss set RTCM_TYPE 3\r\n` → 输出:`*#OK`切换为NTRIP配置<br>2. 输入:`#fdgnss set NTRIP_SVR_DOMAIN xxx.xxx.xx.xxx\r\n` → 输出:`*#OK`IP配置成功<br>3. 输入:`#fdgnss set NTRIP_SVR_PORT 8002\r\n` → 输出:`*#OK`端口配置为8002<br>4. 输入:`#fdgnss set NTRIP_MOUNT RTCM32_GGB\r\n` → 输出:`*#OK`挂载点配置为RTCM32_GGB<br>5. 输入:`#fdgnss set NTRIP_ACCOUNT qxx1234\r\n` → 输出:`*#OK`账号配置为qxx1234<br>6. 输入:`#fdgnss set NTRIP_PASSWORD 12345678\r\n` → 输出:`*#OK`密码配置为12345678 |
| 备注 | 上述所有配置内容都需要`#fsave`保存,否则重新上电后失效 |
## 附录表格
### 表1DETA 系列v2端口波特率配置说明
| paramName | 端口说明 | paramValue | 对应波特率 |
|:---|:---|:---:|:---|
| COMM_BAUD1 | UART, TTL电平, 设置范围9600bps-921600bps | 1 | 9600bps |
| | | 2 | 19200bps |
| | | 3 | 38400bps |
| COMM_BAUD2 | UART, TTL电平, 设置范围9600bps-921600bps | 4 | 76800bps |
| | | 5 | 115200bps |
| | | 6 | 230400bps |
| COMM_BAUD3 | UART, TTL电平, 设置范围9600bps-921600bps | 7 | 460800bps |
| | | 8 | 921600bps |
| | | 9 | 2625000bps |
| COMM_BAUD4 | UART, TTL电平, 设置范围9600bps-921600bps | 10 | 5250000bps |
| | | 11 | 10500000bps |
| | | 12 | 100000bps |
| COMM_BAUD5 | CAN, 可设置波特率为250000bps、500000bps、1000000bps | 13 | 250000bps |
| | | 14 | 500000bps |
| | | 15 | 1000000bps |
### 表2EPSILON系列端口波特率配置说明
| paramName | 端口说明 | paramValue | 对应波特率 |
|:---|:---|:---:|:---|
| COMM_BAUD1 | RS232设置范围9600bps-921600bps | 1 | 9600bps |
| | | 2 | 19200bps |
| | | 3 | 38400bps |
| COMM_BAUD2 | RS232设置范围9600bps-921600bps | 4 | 76800bps |
| | | 5 | 115200bps |
| | | 6 | 230400bps |
| COMM_BAUD3 | RS422设置范围9600bps-921600bps | 7 | 460800bps |
| | | 8 | 921600bps |
| | | 9 | 2625000bps |
| COMM_BAUD4 | GPIO TTL设置范围9600bps-921600bps | 10 | 5250000bps |
| | | 11 | 10500000bps |
| | | 12 | 100000bps |
| COMM_BAUD5 | CAN可设置波特率为250000bps、500000bps、1000000bps | 13 | 250000bps |
| | | 14 | 500000bps |
| | | 15 | 1000000bps |
### 表3SPKF融合开关说明
| paramName | 说明 |
|:---|:---|
| AID_ACCEL_GRAVITY | 加速度计融合开关 |
| AID_BRO_ALT_UPDATE | 气压计融合开关 |
| AID_CAR_CENT_ACCEL_NHC_ENABLED | 汽车向心加速度补偿开关 |
| AID_CAR_YZ_ZERO_VEL_NHC_ENABLED | 汽车零速更新开关 |
| AID_EXT_HEADING_UPDATE | 外部航向输入开关 |
| AID_GNSS_POS_UPDATE | GNSS 位置融合开关 |
| AID_GNSS_TRACK_HEADING_UPDATE | GNSS 航迹角融合开关 |
| AID_GNSS_VEL_UPDATE | GNSS 速度融合开关 |
| AID_GYO_TURN_ON_TARE_ENABLED | 开机时静态陀螺零偏估计开关 |
| AID_INIT_YAW_USE_MAG | 磁力计初始化航向角开关 |
| AID_MAG_2D_MAGNETIC | 磁航向融合开关 |
| AID_MAG_3D_MAGNETIC | 磁矢量融合开关 |
| AID_ODOMETER_VEL_UPDATE | 里程计融合开关 |
| AID_OPTICFLOW_UPDATE | 光流计融合开关 |
| AID_ZERO_POS_UPDATE | 零位置更新开关 |
| AID_ZERO_RATE_UPDATE | 零角速度更新开关 |
| AID_ZERO_VEL_UPDATE | 零速度更新 |
### 表4端口协议类型与说明
| paramName | 端口协议 | 说明 | paramValue |
|:---|:---|:---|:---:|
| **COMM_STREAM_TYP(1-5)** | **None** | 空 | 0 |
| | **Main** | 主协议导航数据收发和连接上位机通过0xF0切换模式 | 1 |
| | **NAV** | 导航模式,收发 | 2 |
| | **RTCM** | 接收差分修正数据v3版D3 00开头 | 3 |
| | **NMEA** | 接收NMEA格式数据 | 4 |
| | **NMEA(OUT)** | 导航输出NMEA格式数据 | 5 |
| | **Ublox** | 接收UBX格式数据 | 6 |
| | **External Position** | 接收外部位置数据 | 7 |
| | **External Velocity** | 接收外部速度数据 | 8 |
| | **External Position&Velocity** | 接收外部位置和速度数据 | 9 |
| | **External Attitude angle** | 接收外部姿态数据 | 10 |
| | **External Time** | 接收外部时间数据 | 11 |
| | **External Heading** | 接收外部航向数据 | 12 |
| | **External Depth** | 接收外部深度数据 | 13 |
| | **External SLAM1** | 接收外部slam1数据 | 14 |
| | **External SLAM2** | 接收外部slam2数据 | 15 |
| | **External Pitot Pressure** | 接收外部气压计数据 | 16 |
| | **External Air speed** | 接收外部空速数据 | 17 |
| | **External Odom** | 接收外部里程计数据 | 18 |
| | **External LIDAR** | 接收外部雷达数据 | 19 |