附录
姿态互转
四元数顺序为 WXYZ(COORD 0(载体系右-前-上,世界系东北天 ENU)使用 312 公式,COORD 4(ROS)使用 321 公式,坐标轴定义见坐标系与方向约定。各角所绕的轴、量程、正方向和俯仰接近 ±90° 的限制见姿态表示;换配置后要按对应公式从四元数重新提取欧拉角。
四元数转旋转矩阵
给定
右-前-上(COORD 0)— 312 旋转顺序(先 Z,再 X,最后 Y)
四元数转欧拉角:
欧拉角转四元数(
ROS(REP-103)— 321 旋转顺序(先 Z,再 Y,最后 X)
ROS 配置的载体系为前、左、上(FLU),用于 6 轴(相对航向)。此时世界系 X 轴指向上电时的航向零方向,Y 轴向左,Z 轴向上,上电时 yaw 为 0。
四元数转欧拉角:
欧拉角转四元数(
缩略词与术语
| 缩写 / 术语 | 全称 / 含义 |
|---|---|
| IMU | Inertial Measurement Unit,惯性测量单元(加速度计 + 陀螺仪,可含磁力计) |
| AHRS | Attitude and Heading Reference System,姿态航向参考系统(9 轴,绝对航向) |
| VRU | Vertical Reference Unit,垂直参考单元(6 轴,相对航向) |
| MRU | Motion Reference Unit,运动参考单元,输出垂荡、纵荡、横荡等船舶运动量 |
| Heave / Surge / Sway | 垂荡 / 纵荡 / 横荡,船舶三轴周期运动 |
| ENU | 东北天世界坐标系,见坐标系与方向约定 |
| RFU / FLU | 右前上 / 前左上载体坐标系;FLU 是 ROS 的载体轴约定 |
| ROS / REP-103 | 机器人操作系统及其坐标约定:载体前-左-上,见输出数据轴向 |
| COORD | 输出数据轴向配置,见输出数据轴向 |
| URFR | 安装方向编码,见安装方向 |
| USRCAL | 用户级陀螺校准,见用户级陀螺校准 |
| MAIN_STATUS | 16 位主状态字,见 MAIN_STATUS 状态字 |
| MCAL | Magnetometer Calibration,地磁校准,见地磁校准 |
| PMUX | Pin Multiplexing,多功能 IO 复用,见多功能 IO 复用 |
| SYNC_IN / PPS | 同步脉冲输入 / 秒脉冲,用于触发输出与对时,见时间同步与 IO |
| SOUT | Sync Output,COM1 数据帧发送标记脉冲,见 SOUT 同步输出 |
| RMC | NMEA 推荐最简定位信息语句,PPS 对时用的时间消息 |
| HI91 / HI83 | HiPNUC 二进制数据帧:定长浮点 / 变长位图,见HI91、HI83 |
| CANFD83 | HI83 字段布局的 CAN FD 数据帧,见 CANFD83 |
| SOF | Start of Frame,帧头同步标志(5A A5) |
| CRC | Cyclic Redundancy Check,循环冗余校验,见 CRC 校验 |
| PGN | Parameter Group Number,J1939 参数组编号,见 PGN 消息列表 |
| SA / DA | Source / Destination Address,J1939 源 / 目的地址 |
| TPDO / SDO | CANopen 发送过程数据对象 / 服务数据对象,见 CANopen(CAN) |
| NMT | Network Management,CANopen 网络管理 |
| DBC | CAN 数据库文件,描述 CAN 信号定义,供 CANoe / BusMaster 等导入 |
CANopen(CAN)
CANopen 为定制固件功能,如需使用请联系我司。新项目请使用 J1939,本节供已有 CANopen 项目查阅。CANopen 使用 11 位标准帧,节点 ID 与 J1939 节点地址共用,默认 8。
TPDO 映射
| 通道 | 帧 ID | 参数索引 | DLC | 数据 | 类型 / 比例 / 单位 |
|---|---|---|---|---|---|
| TPDO1 | 0x180+ID | 0x1800 | 6 | 加速度 X/Y/Z | i16,mG(0.001 G) |
| TPDO2 | 0x280+ID | 0x1801 | 6 | 角速度 X/Y/Z | i16,0.1 deg/s |
| TPDO3 | 0x380+ID | 0x1802 | 6 | 欧拉角 Roll/Pitch/Yaw | i16,0.01 deg |
| TPDO4 | 0x480+ID | 0x1803 | 8 | 四元数 W/X/Y/Z | i16,×0.0001 |
| TPDO6 | 0x680+ID | 0x1804 | 4 | 气压 | i32,Pa |
| TPDO7 | 0x780+ID | 0x1805 | 8 | 倾角仪 X/Y | i32,0.01 deg |
- 表中 ID 为节点 ID。TPDO5 未使用,多字节字段低字节在前。出厂时所有 TPDO 周期为 0,总线上默认只有 J1939 数据。
- CANopen 的比例因子与 Modbus、J1939 不同,不能套用。示例(节点 8):帧 ID
0x188,数据4A 00 1F 00 C8 03,加速度 X = 74 mG、Y = 31 mG、Z = 968 mG。
SDO 配置
使用 expedited SDO。主机发 0x600+ID,模块应答 0x580+ID,数据 8 字节:CS | Index_L | Index_H | SubIndex | Data0..Data3(Index 与 Data 小端)。写 4 字节用 CS 0x23,读请求用 0x40;应答 0x60 只表示报文已被接收,数值是否生效要读回确认;0x43 为 4 字节读应答,0x80 为中止。厂商对象索引为 0x2000 + 参数地址(与 Modbus、J1939 参数地址一致)。下表为节点 8、发送到 0x608 的常用报文:
| 操作 | 数据 |
|---|---|
| 修改节点 ID(对象 0x209C,1–127) | 23 9C 20 00 [ID] 00 00 00 |
| CAN 速率(对象 0x209A):0 = 1 Mbit/s、2 = 500 kbit/s、3 = 250 kbit/s、4 = 125 kbit/s | 23 9A 20 00 [VAL] 00 00 00 |
| 关闭 J1939 周期输出(总开关,对象 0x209D) | 23 9D 20 00 00 00 00 00 |
| 保存配置(对象 0x2000 写 0) | 23 00 20 00 00 00 00 00 |
| 复位(对象 0x2000 写 0xFF),可能无应答 | 23 00 20 00 FF 00 00 00 |
| 读取节点 ID | 40 9C 20 00 00 00 00 00 |
| TPDO1 周期 10 ms(对象 0x1800 子索引 5;0 为关闭) | 2B 00 18 05 0A 00 00 00 |
| 心跳周期 100 ms(对象 0x1017,0 为禁用) | 2B 17 10 00 64 00 00 00 |
- 节点 ID 与速率写入后,先保存再复位。复位后模块按新参数通信,主机随之切换速率或节点 ID,再用 SDO 读回确认。关闭 J1939 周期输出(对象 0x209D)同样要保存并复位,复位前总线上仍有 J1939 数据。
- TPDO 周期和心跳是标准对象(0x1800 起、0x1017),可用 2 字节写(CS=0x2B)。其他通道的周期把 Index_L 改为
01(角速度)至05(倾角仪),对应 0x1801 至 0x1805。设置后同样保存并读回。 - 恢复出厂向对象 0x2000 写 1(
23 00 20 00 01 00 00 00),不要用标准对象 0x1011 代替。该命令可能无应答,以重启后能否通信判断;执行前先记录当前通信参数,见恢复出厂。
示例(节点 8,→ 发送,← 应答):读节点 ID,再改为 9。
→ 0x608: 40 9C 20 00 00 00 00 00 read node ID
← 0x588: 43 9C 20 00 08 00 00 00 node ID = 8
→ 0x608: 23 9C 20 00 09 00 00 00 write node ID = 9
← 0x588: 60 9C 20 00 00 00 00 00 frame accepted; save, reset, then read back两个易错点
注意
- 厂商对象(0x2000 起)一律用 4 字节写(CS=0x23)。2 字节或 1 字节写(0x2B、0x2F)同样收到
0x60应答,但不保证数值生效。 - 复位用 NMT Reset Node(COB-ID
0x000,数据81 <节点 ID>),也可按上表向对象 0x2000 写 0xFF。 - 不要使用 NMT Reset Communication:它会清零运行中的 TPDO 周期和心跳,TPDO 随即停止发送;已保存的配置不变,重启模块后恢复。
开发资源与技术支持
| 资源 | 用途 | 获取 |
|---|---|---|
| CHCenter 上位机 | 模块连接、参数配置、数据曲线 / 姿态可视化、数据记录与回放、固件升级 | 下载中心 |
| C / C++、STM32、ROS、Python SDK | 按平台接收、解析和使用模块数据 | 驱动与例程 |
| J1939 DBC | CAN 信号定义,便于 CAN 工具导入 | CAN 数据库 |
| 固件升级 | 联系技术支持获取适用固件,通过 CHCenter 升级 | 固件升级 |
联系技术支持前,请先按联系技术支持前一节准备好资料。新产品和新资料的信息发布在官网和公众号上。
微信公众号:

Telegram:

