Skip to content

附录 ​

姿态互转 ​

四元数顺序为 WXYZ(q0 为标量部分),Qb2n 表示载体系(b)到世界系(n)的旋转。COORD 0(载体系右-前-上,世界系东北天 ENU)使用 312 公式,COORD 4(ROS)使用 321 公式,坐标轴定义见坐标系与方向约定。各角所绕的轴、量程、正方向和俯仰接近 ±90° 的限制见姿态表示;换配置后要按对应公式从四元数重新提取欧拉角。

四元数转旋转矩阵 ​

给定 Qb2n=[q0,q1,q2,q3]T,方向余弦矩阵为:

Cb2n=[q02+q12−q22−q322(q1q2−q0q3)2(q1q3+q0q2)2(q1q2+q0q3)q02−q12+q22−q322(q2q3−q0q1)2(q1q3−q0q2)2(q2q3+q0q1)q02−q12−q22+q32]

右-前-上(COORD 0)— 312 旋转顺序(先 Z,再 X,最后 Y) ​

四元数转欧拉角:

pitch=arcsin⁡(2(q0q1+q2q3))roll=−atan2(2(q1q3−q0q2), q02−q12−q22+q32)yaw=−atan2(2(q1q2−q0q3), q02−q12+q22−q32)

欧拉角转四元数(cp=cos⁡pitch2、sp=sin⁡pitch2,cr/sr、cy/sy 同理):

q0=cpcrcy−spsrsyq1=spcrcy−cpsrsyq2=cpsrcy+spcrsyq3=cpcrsy+spsrcy

ROS(REP-103)— 321 旋转顺序(先 Z,再 Y,最后 X) ​

ROS 配置的载体系为前、左、上(FLU),用于 6 轴(相对航向)。此时世界系 X 轴指向上电时的航向零方向,Y 轴向左,Z 轴向上,上电时 yaw 为 0。

四元数转欧拉角:

roll=atan2(2(q0q1+q2q3), 1−2(q12+q22))pitch=arcsin⁡(2(q0q2−q1q3))yaw=atan2(2(q0q3+q1q2), 1−2(q22+q32))

欧拉角转四元数(cr=cos⁡roll2、sr=sin⁡roll2,cp/sp、cy/sy 同理):

q0=crcpcy+srspsyq1=srcpcy−crspsyq2=crspcy+srcpsyq3=crcpsy−srspcy

缩略词与术语 ​

缩写 / 术语全称 / 含义
IMUInertial Measurement Unit,惯性测量单元(加速度计 + 陀螺仪,可含磁力计)
AHRSAttitude and Heading Reference System,姿态航向参考系统(9 轴,绝对航向)
VRUVertical Reference Unit,垂直参考单元(6 轴,相对航向)
MRUMotion Reference Unit,运动参考单元,输出垂荡、纵荡、横荡等船舶运动量
Heave / Surge / Sway垂荡 / 纵荡 / 横荡,船舶三轴周期运动
ENU东北天世界坐标系,见坐标系与方向约定
RFU / FLU右前上 / 前左上载体坐标系;FLU 是 ROS 的载体轴约定
ROS / REP-103机器人操作系统及其坐标约定:载体前-左-上,见输出数据轴向
COORD输出数据轴向配置,见输出数据轴向
URFR安装方向编码,见安装方向
USRCAL用户级陀螺校准,见用户级陀螺校准
MAIN_STATUS16 位主状态字,见 MAIN_STATUS 状态字
MCALMagnetometer Calibration,地磁校准,见地磁校准
PMUXPin Multiplexing,多功能 IO 复用,见多功能 IO 复用
SYNC_IN / PPS同步脉冲输入 / 秒脉冲,用于触发输出与对时,见时间同步与 IO
SOUTSync Output,COM1 数据帧发送标记脉冲,见 SOUT 同步输出
RMCNMEA 推荐最简定位信息语句,PPS 对时用的时间消息
HI91 / HI83HiPNUC 二进制数据帧:定长浮点 / 变长位图,见HI91、HI83
CANFD83HI83 字段布局的 CAN FD 数据帧,见 CANFD83
SOFStart of Frame,帧头同步标志(5A A5)
CRCCyclic Redundancy Check,循环冗余校验,见 CRC 校验
PGNParameter Group Number,J1939 参数组编号,见 PGN 消息列表
SA / DASource / Destination Address,J1939 源 / 目的地址
TPDO / SDOCANopen 发送过程数据对象 / 服务数据对象,见 CANopen(CAN)
NMTNetwork Management,CANopen 网络管理
DBCCAN 数据库文件,描述 CAN 信号定义,供 CANoe / BusMaster 等导入

CANopen(CAN) ​

CANopen 为定制固件功能,如需使用请联系我司。新项目请使用 J1939,本节供已有 CANopen 项目查阅。CANopen 使用 11 位标准帧,节点 ID 与 J1939 节点地址共用,默认 8。

TPDO 映射 ​

通道帧 ID参数索引DLC数据类型 / 比例 / 单位
TPDO10x180+ID0x18006加速度 X/Y/Zi16,mG(0.001 G)
TPDO20x280+ID0x18016角速度 X/Y/Zi16,0.1 deg/s
TPDO30x380+ID0x18026欧拉角 Roll/Pitch/Yawi16,0.01 deg
TPDO40x480+ID0x18038四元数 W/X/Y/Zi16,×0.0001
TPDO60x680+ID0x18044气压i32,Pa
TPDO70x780+ID0x18058倾角仪 X/Yi32,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/s23 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
读取节点 ID40 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 DBCCAN 信号定义,便于 CAN 工具导入CAN 数据库
固件升级联系技术支持获取适用固件,通过 CHCenter 升级固件升级

联系技术支持前,请先按联系技术支持前一节准备好资料。新产品和新资料的信息发布在官网和公众号上。

官网:www.hipnuc.com

微信公众号:

Telegram:

最后更新:

IMU · AHRS · INS · RTK 技术支持中心