坐标、安装与零点
设置顺序
安装方向、输出数据轴向、工作模式和姿态零点互相关联。零点按当前生效的安装方向和输出数据轴向记录,因此先设前三项,重启生效后再设零点:
- 设置安装方向
URFR、输出数据轴向COORD和工作模式,SAVECONFIG后REBOOT。 - 重启后用
LOG USRCONFIG读回,再抬车头、右侧下沉,确认姿态符号,方法见安装方向。 - 执行
CONFIG ATT RST 5清除旧零点,再按需设置新零点,SAVECONFIG保存。
重启前设置的零点按旧设置记录,重启后不再适用。改过安装方向后,旧零点不再可靠,姿态会出现固定偏差,所以第 3 步先清除旧零点。固件升级和恢复出厂之后,也要按这个顺序重新设置安装方向、输出数据轴向和零点,并验证。
坐标系与方向约定
模块涉及三个右手坐标系:
| 坐标系 | 定义 |
|---|---|
| 传感器坐标系 | 固联于模块,X / Y / Z 轴方向印在外壳或 PCB 丝印上,是安装方向编码的参照。 |
| 载体系(b 系) | 输出数据所在的坐标系。安装方向声明传感器坐标系的三个轴在载体上的指向;输出数据轴向决定数据按“右、前、上”(RFU,默认)还是 ROS 的“前、左、上”(FLU)表达。默认 URFR 024、COORD 0 且水平正放时,载体系与传感器坐标系重合。 |
| 世界系(n 系) | 姿态的参考系。COORD 0 下为 东北天 ENU(X 指东、Y 指北、Z 指天);COORD 4(ROS,6 轴)下 X 指上电时的车头方向、Y 向左、Z 向上。6 轴(相对航向)下水平轴不指向真实的东、北,见航向约定。 |
旋转正方向遵循右手定则:右手拇指指向轴正向,四指弯曲方向即为该轴正旋转方向。载体系两种轴向约定的并排图见姿态表示。
姿态表示

模块同时输出 欧拉角 与 四元数,两者描述同一个载体系到世界系的旋转
- 欧拉角:横滚
roll、俯仰pitch、航向yaw,单位度。量程 roll ∈ [−180°, 180°],pitch ∈ [−90°, 90°],yaw ∈ [−180°, 180°]。 - 四元数:顺序 WXYZ(
为标量部分)。
欧拉角的旋转顺序、各角所绕的轴和正方向随输出数据轴向而变,这是最容易套错公式的地方:
| 输出数据轴向 | 载体系 | 旋转顺序 | roll 绕 | pitch 绕 | yaw 绕 | 抬车头时 pitch | 右侧下沉时 roll |
|---|---|---|---|---|---|---|---|
右-前-上(COORD 0,默认) | RFU | 312(先 Z,再 X,最后 Y) | Y 轴 | X 轴 | Z 轴 | 正 | 正 |
ROS(COORD 4,REP-103) | FLU | 321(先 Z,再 Y,最后 X) | X 轴 | Y 轴 | Z 轴 | 负 | 正 |
两种配置的互转公式见附录:姿态互转。两者的载体轴不同、俯仰符号相反,切换后应从四元数按对应公式重新提取欧拉角,不能只给某个角加减固定角度。
注意
俯仰接近 ±90°:欧拉角不再唯一,roll 和 yaw 相互耦合,读数可能跳变或锁定。高仰角应用请使用四元数。
航向约定
各协议的 yaw 表示不同,解析时按下表逐项对应:
| 输出位置 | 航向表示 | 正方向 |
|---|---|---|
| HI91 / HI83 | 原始 yaw,±180° | 逆时针为正(从上方俯视) |
| Modbus YAW 寄存器 | 原始 yaw,±180° | 逆时针为正 |
J1939 0xFF41 前 4 字节 | 罗盘航向,0–360° | 顺时针为正 |
J1939 0xFF41 后 4 字节 | 原始 yaw,±180° | 逆时针为正 |
- 6 轴等相对航向模式:yaw 为相对航向,
COORD 0和COORD 4下都以上电时的方向为 0,随时间缓慢漂移。 - 9 轴模式:yaw 参考磁北,车头朝北时为 0(需要
COORD 0,见输出数据轴向)。模块不输出真北修正航向,需要真北时由主机按使用地点、日期和磁偏角模型修正。9 轴航向依赖地磁校准,见地磁校准。 - 罗盘航向(J1939
0xFF41前 4 字节)等于COORD 0下 yaw 取反后折算到 0–360°:9 轴下车头朝北为 0,朝东为 90°。9 轴下执行RST 0后,罗盘航向以置零方向为 0°,不再指向磁北。需要保持磁北参考时,只用RST 2/RST 3校平。
输出数据轴向
COORD 选择输出数据的 X / Y / Z 按哪种约定对应载体。它与安装方向分工不同:安装方向声明模块怎样装在载体上,输出数据轴向只决定数据怎样表达。
CONFIG IMU COORD <VAL>| VAL | 输出数据轴向 | 数据 X / Y / Z | 使用场合 |
|---|---|---|---|
| 0 | 右-前-上(默认) | 车右 / 车头方向 / 向上 | 所有工作模式 |
| 4 | ROS(REP-103) | 车头方向 / 车左 / 向上 | 6 轴(相对航向)接入 ROS |
使用 MRU 输出以及 9 轴模式时,保持 COORD 0。倾角和罗盘航向始终按右-前-上计算,不受 COORD 影响。只写入 0 或 4。欧拉角的旋转顺序和各角的正方向见姿态表示。
例如 6 轴接入 ROS:
CONFIG IMU COORD 4保存并重启后生效,流程见配置流程与保存。重启后读回 COORD,用安装方向一节的方法检查姿态符号,再按设置顺序重设零点。
COORD影响加速度、角速度、磁场、四元数和欧拉角。- 接入 ROS 时选
4:数据按 REP-103 的base_link轴向(前、左、上)输出,模块的实际安装朝向用安装方向声明。 - Modbus 写寄存器
0x0007(COORD),J1939 写参数地址0x0007。CHCenter 在配置对话框“工作模式”页的“输出数据轴向”一节设置。
安装方向
模块非默认方向安装时,用 URFR 声明外壳或 PCB 丝印上的 X / Y / Z 箭头分别指向载体的哪个方向,模块据此把输出对齐到载体。安装方向只描述安装,与输出数据轴向无关。
CONFIG IMU URFR <CODE><CODE> 为三位十进制数字 ABC(默认 024)。LOG USRCONFIG 读回时省略前导 0,显示为 URFR=24。
编码无需自行推算,按模块在载体上的朝向查表选取。三个方向必须构成右手系,共 24 种合法编码,只写入下方编码表内的编码。编码表中的“箭头指向”是印字 X / Y / Z 箭头在载体上的实际指向:前 = 车头方向,右 = 驾驶员的右手边。
常见安装:
| 安装方式 | 命令 |
|---|---|
| 水平正装(默认) | CONFIG IMU URFR 024 |
| 水平,绕 Z 转 +90° | CONFIG IMU URFR 304 |
| 水平,绕 Z 转 180° | CONFIG IMU URFR 134 |
| 水平,绕 Z 转 −90° | CONFIG IMU URFR 214 |
| 倒装(绕 X 轴翻转) | CONFIG IMU URFR 035 |
其他安装方式查下面的 24 种编码表。DATA 列是编码的十六进制值,用于写入 Modbus 寄存器 0x00A6(URFR)或 J1939 参数地址 0x00A6。在 CHCenter 配置对话框的“安装”页,用“X 箭头指向”“Y 箭头指向”两个下拉框选择,Z 自动确定,取值对应下表第一列。CHCenter 的 Modbus 和 J1939 配置窗口同样有“安装”页;倾角仪型号的配置窗口没有该页。
| 箭头指向(X,Y,Z) | 命令 | DATA(hex) |
|---|---|---|
| 右,前,上 | CONFIG IMU URFR 024 | 0018 |
| 右,后,下 | CONFIG IMU URFR 035 | 0023 |
| 右,下,前 | CONFIG IMU URFR 043 | 002B |
| 右,上,后 | CONFIG IMU URFR 052 | 0034 |
| 左,前,下 | CONFIG IMU URFR 125 | 007D |
| 左,后,上 | CONFIG IMU URFR 134 | 0086 |
| 左,上,前 | CONFIG IMU URFR 142 | 008E |
| 左,下,后 | CONFIG IMU URFR 153 | 0099 |
| 前,右,下 | CONFIG IMU URFR 205 | 00CD |
| 后,右,上 | CONFIG IMU URFR 214 | 00D6 |
| 上,右,前 | CONFIG IMU URFR 240 | 00F0 |
| 下,右,后 | CONFIG IMU URFR 251 | 00FB |
| 前,左,上 | CONFIG IMU URFR 304 | 0130 |
| 后,左,下 | CONFIG IMU URFR 315 | 013B |
| 下,左,前 | CONFIG IMU URFR 341 | 0155 |
| 上,左,后 | CONFIG IMU URFR 350 | 015E |
| 前,上,右 | CONFIG IMU URFR 402 | 0192 |
| 后,下,右 | CONFIG IMU URFR 413 | 019D |
| 下,前,右 | CONFIG IMU URFR 421 | 01A5 |
| 上,后,右 | CONFIG IMU URFR 430 | 01AE |
| 前,下,左 | CONFIG IMU URFR 503 | 01F7 |
| 后,上,左 | CONFIG IMU URFR 512 | 0200 |
| 上,前,左 | CONFIG IMU URFR 520 | 0208 |
| 下,后,左 | CONFIG IMU URFR 531 | 0213 |
例如模块绕 Y 轴翻转倒装:
CONFIG IMU URFR 125保存并重启后生效,流程见配置流程与保存。重启后按下面的方法验证,再按设置顺序重设零点。
验证安装方向:重启后用 LOG USRCONFIG 确认读回的 URFR 与所设一致,再看姿态符号。读回的 URFR 与所设不一致,或姿态符号与下面的预期不符,说明编码选错、没有生效,或模块的实际安装与编码不一致;COORD 与所设不符时同样先核对读回值。
- 水平静止,抬车头:
COORD 0下 pitch 为正,COORD 4(ROS)下 pitch 为负。 - 右侧下沉:两种输出数据轴向下 roll 均为正。
- 车头向左转(从上方俯视逆时针):yaw 增大。
姿态零点与校平
RST 在当前姿态上设置用户零点,用于消除安装倾斜,或把当前航向作为参考。执行前让载体静止,并确认 MAIN_STATUS 的 ATT_CONV 已清零(见 MAIN_STATUS 状态字),否则运动会被记入零点。
CONFIG ATT RST <VAL>| VAL | 动作 | 掉电保持 |
|---|---|---|
| 0 | 全部归零:当前 roll / pitch 置零;9 轴下航向也置零,作为航向零点 | 是 |
| 1 | 航向复位:把模块内部航向清零,不改已保存的零点 | 否,重启后清除 |
| 2 | 相对零点:当前 pitch / roll 置零,航向不变 | 是 |
| 3 | 自动校平:仅当 pitch 和 roll 都在 ±5° 以内时,把两者校平到 0° | 是 |
| 5 | 取消校平:清除已保存的零点,恢复模块原始姿态输出 | 是 |
其他数值为保留用途。Modbus 写寄存器 0x00A5(ATT_RST),J1939 写参数地址 0x00A5,写入上表的取值。
按目标选命令:
| 目标 | 做法 |
|---|---|
| 6 轴下消除固定安装倾斜;倾角仪设零点 | RST 2 |
| 模块已接近水平,只消除小的残余偏差 | RST 3,再读回姿态确认 |
| 9 轴下设置航向零点(同时校平) | RST 0 |
| 未设航向零点时,临时让航向从 0 计起 | RST 1,重启后恢复 |
| 回到模块原始姿态输出 | RST 5 |
生效与保存:RST 0、RST 2、成功的 RST 3 和 RST 5 执行后,用 SAVECONFIG 保存。是否生效,以读回的姿态为准。
示例(6 轴,模块接近水平):
→ CONFIG ATT RST 3
← OK
→ SAVECONFIG
← OK随后读几帧姿态:roll 和 pitch 应接近 0。roll 和 pitch 仍明显偏离 0,说明 RST 3 没有生效(原因见下面的说明),改用 RST 2。
说明:
RST 3在倾斜超过 ±5° 时保持原零点,应答可能是OK,也可能是ERR。始终以读回的姿态判断。- 6 轴下使用
RST 2/RST 3;RST 0只用于 9 轴航向零点。在 9 轴下做过RST 0后再切到 6 轴,上电航向会含有已保存的航向偏置,不再从 0 开始。此时先RST 5清除,再按需RST 2/RST 3。 - 9 轴下设过
RST 0后,不要再用RST 2/RST 3:它们按当前姿态重新记录零点,可能覆盖已设的航向零点。需要重新校平时,重做一次RST 0。 RST 1在 9 轴下只是临时置零,磁航向会逐渐把读数拉回。需要稳定的航向零点,用RST 0。
用户级陀螺校准
CONFIG USRCAL 标定陀螺 Z 轴比例因子,降低水平旋转载体的长期航向累计误差。它适用于能准确控制旋转角度的场景,如 AGV、大型水平移动机器人和转台;手持随意旋转或无法计量角度的场景不适用。每台模块只做一次,重复校准会覆盖上一次的结果。
CONFIG USRCAL START <ANGLE>
CONFIG USRCAL STOP| 命令 | 说明 |
|---|---|
START <ANGLE> | 开始校准,<ANGLE> 为计划旋转的总角度,单位度,范围 360~3600 |
STOP | 结束校准 |
必须先 START 再 STOP,不能单独发 STOP。STOP 成功后立即生效并掉电保持,无需 SAVECONFIG。
操作步骤:
- 测校准前误差。用 6 轴(相对航向)工作模式,因为 9 轴的磁航向会掩盖陀螺误差,使对比失真。把模块连同载体放在水平平整的地面,温度稳定,无强振动。
RST 1让 yaw 从 0 开始,以 20~100 deg/s 匀速水平转过整数圈(例如 5 圈,1800°,用转台或其他可靠的角度基准),回到起点后读回 yaw,折算到 ±180°,作为校准前误差。 - 发送
CONFIG USRCAL START 720(以旋转 2 圈为例)。 - 以 20~100 deg/s 匀速水平旋转 720°,方向任意,中途不停顿、不反向,实际旋转角度与设定值一致。
- 发送
CONFIG USRCAL STOP。 - 按步骤 1 的方法重复试验,圈数、转速和方向都相同,比较校准前后的误差。
示例(旋转 2 圈):
→ CONFIG USRCAL START 720
← OK
(水平匀速旋转 720°)
→ CONFIG USRCAL STOP
← OK判断:校准后误差明显变小,才算有效。OK 只说明命令被接受,不能证明校准有效。
误差没有变小,或 STOP 无应答时,先依次检查,再决定是否重做:是否先执行了 START;模块是否保持水平并绕竖直轴旋转;实际旋转角度是否与设定值一致。仍然异常,联系技术支持。
