# 底盘类CAN协议标准 为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为底盘使用的专用CAN协议。

请先确保阅读了[CAN协议构架说明](https://docs.hexmove.cn/books/hexmove/page/can-Zxd)再开始以下内容

请注意使用设备CANID替换表中XX部分

底盘类设备的大类ID为 01

--- ### 底盘指令总表 此表展示了专用指令的所有指令内容,方便快速查询和定位
指令集 反馈集 重要性 说明
设备对象 命令内容 大类 (00~1F) 型号 (00~FF) 编号 (00~FF) 功能 (00~FF) 大类 (00~1F) 型号 (00~FF) 编号 (00~FF) 功能 (00~FF) 反馈内容 周期性
移动底盘 底盘状态设置 01 xx xx 11 01 xx xx B1 底盘状态信息 周期反馈 必备
底盘运动控制 01 xx xx 12 01 xx xx B2 底盘运动信息 周期反馈 必备
/ / / / / 01 xx xx B3 主轮里程计 周期反馈 必备
/ / / / / 01 xx xx B4 次轮里程计 周期反馈 选备 主要用于正交轮和麦克纳姆轮体系
遥控器信息发送使能 01 xx xx 15 01 xx xx B5 车载遥控器信息 使能后周期反馈 必备
安全传感器发送使能 01 xx xx 16 01 xx xx B6 车载安全传感器信息 使能后周期反馈 选备
驱动器运动信息发送使能 01 xx xx 17 01 xx xx B7 驱动器运动信息 使能后周期反馈 选备
驱动器状态信息发送使能 01 xx xx 18 01 xx xx B8 驱动器状态信息 使能后周期反馈 选备
底盘零点较准 01 xx xx 19 01 xx xx B9 零点较准信息 对命令反馈 选备 主要用于阿克曼底盘的方向舵较准
/ / / / / 01 xx xx BA 错误状态信息 周期反馈 必备
获取RTC时间 01 xx xx 1B 01 xx xx BB RTC时间信息 对命令反馈 选备 需要具有板载时钟芯片
设置RTC时间 01 xx xx 1C 01 xx xx BC 设置RTC时间反馈 对命令反馈 选备
设置唤醒时间 01 xx xx 1D 01 xx xx BD 设置唤醒时间反馈 对命令反馈 选备 用于需要睡眠模式的设备
电源输出控制 01 xx xx 1E 01 xx xx BE 电源输出反馈 对命令反馈 选备 配合睡眠模式使用
机械参数设置 01 xx xx 1F 01 xx xx BF 机械参数反馈 对命令反馈 必备
odom设置 01 xx xx 20 01 xx xx C0 odom-位移反馈 周期反馈 选备
/ / / / / 01 xx xx C1 odom-旋转反馈 周期反馈 选备
--- ### 1. 底盘状态设置 / 底盘状态信息 底盘的基础设置,某些功能如刹车、特殊功能等只对部分车型有效,请查阅对应车型的用户手册
底盘状态设置
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 11 4 /
数据位 功能 数据类型 说明
byte\[0\] 设置控制模式 unsigned int8 0x00: 待机 / 0x01: 遥控 / 0x02: CAN控制 / 0x03: 随动
byte\[1\] 使能蜂鸣器 unsigned int8 0x00: 关闭 / 0x01: 开启(默认) 手动控制蜂鸣器,不影响报警的蜂鸣器
byte\[2\] 使能刹车 unsigned int8 0x00: 松开 / 0x01: 锁止(如有刹车则默认)
byte\[3\] 使能特殊功能 unsigned int8 0x00: 关闭(默认) / 0x01: 开启
byte\[4~7\] / / /
底盘状态信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B1 8 100
数据位 功能 数据类型 说明
byte\[0\] 设备状态 unsigned int8 0x00: 正常 / 0x01: 异常(出现错误报警)
byte\[1\] 控制模式 unsigned int8 0x00: 待机 / 0x01: 遥控 / 0x02: CAN控制 / 0x03: 随动
byte\[2\] 电池电压低8位 unsigned int16 单位:0.1V
byte\[3\] 电池电压高8位
byte\[4\] 蜂鸣器状态 unsigned int8 0x00: 关闭 / 0x01: 开启(默认) 手动控制蜂鸣器,不影响报警的蜂鸣器
byte\[5\] 遥控器状态 unsigned int8 0: 在线 / 1: 离线
byte\[6\] 刹车状态 unsigned int8 0x00: 松开 / 0x01: 锁止(如有刹车则默认)
byte\[7\] 特殊功能状态 unsigned int8 0x00: 关闭(默认) / 0x01: 开启

当使用有线方式控制底盘时,需先切换控制模式至CAN模式。如果使用了遥控器,请将遥控器SWA拨到最下面的CAN模式,遥控器说明请看设备的用户手册。

刹车使能只适用于有刹车功能的底盘,无刹车功能的默认该位保持0x00,有刹车功能的默认开启刹车。

特殊功能根据底盘而不同,例如阿克曼底盘为差速锁功能,不是所有底盘都有特殊功能。特殊功能也可由遥控器开启,参见对应设备的用户手册。

> 举例: 型号0x02 编号0x03 的底盘更改为CAN模式控制并使能蜂鸣器, 发送CANID:0x 01 02 03 11 数据:02 01 00 00。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 11 > > 数据帧 > > 扩展帧 > > 4 > > 02 01 00 00 > >
上位机 > > 0x01 02 03 B1 > > 数据帧 > > 扩展帧 > > 7 > > 00 02 XX XX 01 00 00 > >
--- ### 2. 底盘运动控制 / 底盘运动信息 底盘的基础控制指令,对不同车型有所不同,注意区分
底盘运动控制
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 12 8 /
数据位 功能 数据类型 说明
byte\[0\] x方向速度低8位 signed int16 单位:mm/s
byte\[1\] x方向速度高8位
byte\[2\] y方向速度低8位 signed int16 单位:mm/s
byte\[3\] y方向速度高8位
byte\[4\] 角速度低8位 signed int16 阿克曼模式不可作为输入控制,但可以反馈 单位:mrad/s
byte\[5\] 角速度高8位
byte\[6\] 角度低8位 signed int16 阿克曼模式专用 单位:mrad
byte\[7\] 角度高8位
底盘运动信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B2 8 20
数据位 功能 数据类型 说明
byte\[0\] x方向速度低8位 signed int16 单位:mm/s
byte\[1\] x方向速度高8位
byte\[2\] y方向速度低8位 signed int16 单位:mm/s
byte\[3\] y方向速度高8位
byte\[4\] 角速度低8位 signed int16 单位:mrad/s
byte\[5\] 角速度高8位
byte\[6\] 角度低8位 signed int16 阿克曼模式专用 单位:mrad
byte\[7\] 角度高8位

Y方向速度只对麦克纳姆轮系等具有平移功能的车型才有效,其他车型默认为0

由于电机执行有精度问题,系统反馈值会与设定值有细微偏差

阿克曼车型只使用角度控制,但同时提供角度和角速度反馈。该处角度指前轮转向角

> 举例: 型号0x02 编号0x03 的底盘以0.5m/s的速度前进,同时以-0.1rad/s的角度转动,发送CANID:0x01 02 03 12 数据:F4 01 00 00 9C FF 00 00。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 12 > > 数据帧 > > 扩展帧 > > 8 > > F4 01 00 00 9C FF 00 00 > >
上位机 > > 0x01 02 03 B2 > > 数据帧 > > 扩展帧 > > 8 > > F4 01 00 00 9C FF 00 00 > >
--- ### 3. 里程计反馈
主里程计
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B3 8 20
数据位 功能 数据类型 说明
byte\[0\] 左轮里程计 \[7:0\] signed int32 单位:mm
byte\[1\] 左轮里程计 \[15:8\]
byte\[2\] 左轮里程计\[23:16\]
byte\[3\] 左轮里程计\[31:24\]
byte\[4\] 右轮里程计 \[7:0\] signed int32 单位:mm
byte\[5\] 右轮里程计\[15:8\]
byte\[6\] 右轮里程计\[23:16\]
byte\[7\] 右轮里程计\[31:24\]
次里程计
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B4 8 20
数据位 功能 数据类型 说明
byte\[0\] 左后轮里程计\[7:0\] signedint32 适用全向轮和麦轮系统 单位:mm
byte\[1\] 左后轮里程计\[15:8\]
byte\[2\] 左后轮里程计\[23:16\]
byte\[3\] 左后轮里程计\[31:24\]
byte\[4\] 右后轮里程计\[7:0\] signedint32 适用全向轮和麦轮系统 单位:mm
byte\[5\] 右后轮里程计\[15:8\]
byte\[6\] 右后轮里程计\[23:16\]
byte\[7\] 右后轮里程计\[31:24\]

两轮差速和四轮差速只使用主里程计,全向轮和麦克纳姆轮系统同时使用两组里程计

> 举例: 型号0x02 编号0x03 的底盘反馈里程计数据 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > / > > / > > / > > / > > / > >
上位机 > > 0x01 02 03 B3 > > 数据帧 > > 扩展帧 > > 8 > > XX XX XX XX XX XX XX XX > >
--- ### 4. 遥控器信息发送使能 /遥控器信息 该指令用于配套的手持射频遥控器数据的设置,可以读取遥控器所有按键数据
遥控器信息发送使能
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 15 1 /
数据位 功能 数据类型 说明
byte\[0\] 发送周期设置 unsigned int8 0: 关闭(默认) / 1~20:20ms / 20~255:设定值
byte\[1~7\] / / /
车载遥控器信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B5 7 20~255(默认关闭)
数据位 功能 数据类型 说明
byte\[0\] 拨动开关 unsigned int8 按照拨动开关档位表
byte\[1\] 左摇杆水平轴 signed int8 范围:-100~100
byte\[2\] 左摇杆垂直轴 signed int8 范围:-100~100
byte\[3\] 右摇杆水平轴 signed int8 范围:-100~100
byte\[4\] 右摇杆垂直轴 signed int8 范围:-100~100
byte\[5\] 左旋钮VRA signed int8 范围:-100~100
byte\[6\] 右旋钮VRA signed int8 范围:-100~100
byte\[7\] / / /
拨动开关档位表
说明
bit\[0\] 0: 失效 1: 上档 2: 中档 3: 下档 SWA
bit\[1\]
bit\[2\] 0: 失效 1: 上档 2: 中档 3: 下档 SWB
bit\[3\]
bit\[4\] 0: 失效 1: 上档 2: 中档 3: 下档 SWC
bit\[5\]
bit\[6\] 0: 失效 1: 上档 2: 中档 3: 下档 SWD
bit\[7\]
> 举例: 型号0x02 编号0x03 的底盘设置100ms遥控反馈,发送CANID:0x01 02 03 15 数据:64。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 15 > > 数据帧 > > 扩展帧 > > 1 > > 64 > >
上位机 > > 0x01 02 03 B5 > > 数据帧 > > 扩展帧 > > 7 > > XX XX XX XX XX XX XX > >
--- ### 5. 安全传感器信息发送使能 /安全传感器信息 该指令用提供碰撞传感器和超声波等安全传感器信息
安全传感器信息发送使能
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 16 1 /
数据位 功能 数据类型 说明
byte\[0\] 发送周期设置 unsigned int8 0: 关闭(默认) / 1~20:20ms / 20~255:设定值
byte\[1~7\] / / /
车载安全传感器信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B6 7 20~255(默认关闭)
数据位 功能 数据类型 说明
byte\[0\] 触碰开关 unsigned int8 参考触碰开关表
byte\[1\] 超声波0 unsigned int8 0:失效/1~255:距离单位cm
byte\[2\] 超声波1 unsigned int8 0:失效/1~255:距离单位cm
byte\[3\] 超声波2 unsigned int8 0:失效/1~255:距离单位cm
byte\[4\] 超声波3 unsigned int8 0:失效/1~255:距离单位cm
byte\[5\] 超声波4 unsigned int8 0:失效/1~255:距离单位cm
byte\[6\] 超声波5 unsigned int8 0:失效/1~255:距离单位cm
byte\[7\] / / /
触碰开关表
说明
bit\[0\] 0:未触发 / 1:触发 触碰开关0
bit\[1\] 0:未触发 / 1:触发 触碰开关1
bit\[2\] 0:未触发 / 1:触发 触碰开关2
bit\[3\] 0:未触发 / 1:触发 触碰开关3
bit\[4\] 0:未触发 / 1:触发 触碰开关4
bit\[5\] 0:未触发 / 1:触发 触碰开关5
bit\[6\] 0:未触发 / 1:触发 触碰开关6
bit\[7\] 0:未触发 / 1:触发 触碰开关7

仅限安装了防撞边条或触碰传感器的设备才反馈该数据

> 举例: 型号0x02 编号0x03 的底盘设置100ms安全反馈,发送CANID:0x01 02 03 16 数据:64 。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 16 > > 数据帧 > > 扩展帧 > > 1 > > 64 > >
上位机 > > 0x01 02 03 B6 > > 数据帧 > > 扩展帧 > > 7 > > XX XX XX XX XX XX XX > >
--- ### 6. 驱动器运动信息使能 / 驱动器运动信息 此数据为系统最底层来自驱动器的直接记数,用户可根据原始数据自行求解里程计和速度
驱动器运动信息发送使能
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 17 1 /
数据位 功能 数据类型 说明
byte\[0\] 发送周期设置 unsigned int8 0: 关闭(默认) / 1~20:20ms / 20~255:设定值
byte\[1~7\] / / /
驱动器运动信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B7 7 20~255(默认关闭)
数据位 功能 数据类型 说明
byte\[0\] 驱动编号 unsigned int8 可选0,1,2,3,4,5,6,7(轮流发送)
byte\[1\] 转速低8位 signed int16 单位:Rpm
byte\[2\] 转速高8位
byte\[3\] 位置值 \[7:0\] signed int32 单位:脉冲数
byte\[4\] 位置值 \[15:8\]
byte\[5\] 位置值 \[23:16\]
byte\[6\] 位置值 \[31:24\]
byte\[7\] / / /
> 举例: 型号0x02 编号0x03 的底盘设置100ms驱动器运动反馈,发送CANID:0x01 02 03 17 数据:64 。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 17 > > 数据帧 > > 扩展帧 > > 1 > > 64 > >
上位机 > > 0x01 02 03 B7 > > 数据帧 > > 扩展帧 > > 7 > > XX XX XX XX XX XX XX > >
--- ### 7. 驱动器状态信息使能 / 驱动器状态信息 此数据为驱动器和电机的工作数据,可用于驱动的安全监控
驱动器状态信息发送使能
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 18 1 /
数据位 功能 数据类型 说明
byte\[0\] 发送周期设置 unsigned int8 0: 关闭(默认) / 1~100: 100ms / 100~255:设定值
byte\[1~7\] / / /
驱动器状态信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B8 8 100~255(默认关闭)
数据位 功能 数据类型 说明
byte\[0\] 驱动编号 unsigned int8 可选0,1,2,3,4,5,6,7(轮流发送)
byte\[1\] 电压低8位 unsigned int16 单位:0.1V
byte\[2\] 电压高8位
byte\[3\] 电流低8位 unsigned int16 单位:0.1A
byte\[4\] 电流高8位
byte\[5\] 驱动器温度 signed int8 单位:1°C
byte\[6\] 电机温度 signed int8 单位:1°C
byte\[7\] 特殊状态 unsignedint8 按照驱动器特殊状态表
触碰开关表
说明
bit\[0\] 0: 正常 / 1: 过低 驱动低压报警
bit\[1\] 0: 正常 / 1: 过温 驱动过温报警
bit\[2\] 0: 正常 / 1: 过流 电机过流报警
bit\[3\] 0: 正常 / 1: 过温 电机过温报警
bit\[4\] 0: 正常 / 1: 卡死 电机卡死报警
bit\[5~7\] / /
> 举例: 型号0x02 编号0x03 的底盘设置100ms驱动器状态反馈,发送CANID:0x01 02 03 18 数据:64 。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 18 > > 数据帧 > > 扩展帧 > > 1 > > 64 > >
上位机 > > 0x01 02 03 B8 > > 数据帧 > > 扩展帧 > > 8 > > XX XX XX XX XX XX XX XX > >
--- ### 8. 底盘零点较准 / 底盘零点较准信息 此数据为驱动器和
底盘零点较准
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 19 8 /
数据位 功能 数据类型 说明
byte\[0\] 零点偏移量1 int32 单位:mrad
byte\[1\]
byte\[2\]
byte\[3\]
byte\[4\] 零点偏移量2 int32 单位:mrad
byte\[5\]
byte\[6\]
byte\[7\]
零点较准信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX B9 8 /
数据位 功能 数据类型 说明
byte\[0\] 零点偏移量1 int32 单位:mrad
byte\[1\]
byte\[2\]
byte\[3\]
byte\[4\] 零点偏移量2 int32 单位:mrad
byte\[5\]
byte\[6\]
byte\[7\]

单阿克曼使用偏移量1;前后阿克曼前转向用1,后转向用2;双舵轮左边用1,右边用2

> 举例: 型号0x02 编号0x03 的单阿克曼底盘设置1000mrad偏移,发送CANID:0x01 02 03 19 数据:E8 03 00 00 00 00 00 00 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 19 > > 数据帧 > > 扩展帧 > > 8 > > E8 03 00 00 00 00 00 00 > >
上位机 > > 0x01 02 03 B9 > > 数据帧 > > 扩展帧 > > 8 > > E8 03 00 00 00 00 00 00 > >
--- ### 9. 底盘错误状态 反馈底盘的报错信息
错误状态反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BA 5 500
数据位 功能 数据类型 说明
byte\[0\] 电机故障 unsigned int8 查看电机故障表
byte\[1\] 驱动故障 unsigned int8 查看驱动故障表
byte\[2\] 通讯故障 unsigned int8 查看通讯故障表
byte\[3\] 其他故障 unsigned int8 查看其他故障表
byte\[4\] 电源故障 unsigned int8 查看其电源障表
byte\[5\] / / /
电机故障表
说明
bit\[0\] 0: 正常 / 1:故障 电机过流报警
bit\[1\] 0: 正常 / 1:故障 电机过温报警
bit\[2\] 0: 正常 / 1:故障 编码器故障
bit\[3\] 0: 正常 / 1:故障 霍尔传感器故障
bit\[4~7\] / /
驱动故障表
说明
bit\[0\] 0: 正常 / 1:故障 驱动低压报警
bit\[1\] 0: 正常 / 1:故障 驱动过温报警
bit\[2~7\] / /
通讯故障表
说明
bit\[0\] 0: 在线 / 1:离线 1号驱动通讯故障
bit\[1\] 0: 在线 / 1:离线 2号驱动通讯故障
bit\[2\] 0: 在线 / 1:离线 3号驱动通讯故障
bit\[3\] 0: 在线 / 1:离线 4号驱动通讯故障
bit\[4~7\] / /
其他故障表
说明
bit\[0\] 0: 正常 / 1:警告 电池低电压提醒 (<15%) ( 蜂鸣器提醒,设备正常工作)>
bit\[1\] 0: 正常 / 1:故障> 电池低电压报警 (<5%)( 设备输出异常状态,驱动停止输出)>
bit\[2\] 0: 未触发 / 1:触发 触碰传感器触发
bit\[3\] 0: 未触发 / 1:触发 急停开关
bit\[4~7\] / /
电源故障表
说明
bit\[0\] 0: 正常 / 1:故障> 主继电器故障
bit\[1\] 0: 正常 / 1:故障> 缓启动故障
bit\[2\] 0: 正常 / 1:故障> 缓启动升压故障
bit\[3\] 0: 正常 / 1:故障> 输出过流故障
bit\[4\] 0: 正常 / 1:故障> 纽扣电池故障
bit\[5~7\] //
> 举例: 型号0x02 编号0x03 的底盘反馈触碰传感器触发。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > / > > / > > / > > / > > / > >
上位机 > > 0x01 02 03 BA > > 数据帧 > > 扩展帧 > > 5 > > 00 00 00 04 00 > >
--- ### 10. 获取RTC时间 对安装有RTC计数模块的底盘可以获取芯片时间
获取RTC时间
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 1B 0 /
数据位 功能 数据类型 说明
byte\[0~7\] / / /
RTC时间信息
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BB 4 /
数据位 功能 数据类型 说明
byte\[0\] 当前unix 时间\[0:7\] unsigned int32 unix时间,从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
byte\[1\] 当前unix 时间\[8:15\]
byte\[2\] 当前unix时间\[16:23\]
byte\[3\] 当前unix时间\[24:31\]
byte\[4~7\] / / /

底盘必须具有RTC时间功能,该功能为特别订制

> 举例: 型号0x02 编号0x03 的底盘获取时间为2024-01-01 00:00:30。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 1B > > 数据帧 > > 扩展帧 > > 0 > > / > >
上位机 > > 0x01 02 03 BB > > 数据帧 > > 扩展帧 > > 4 > > 1E 90 91 65 > >
--- ### 11. 设置RTC时间
设置RTC时间
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 1C 4 /
数据位 功能 数据类型 说明
byte\[0\] unix时间 \[0:7\] unsigned int32 unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数
byte\[1\] unix时间\[8:15\]
byte\[2\] unix时间\[16:23\]
byte\[3\] unix时间\[24:31\]
byte\[4~7\] / / /
设置RTC时间反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BC 1 /
数据位 功能 数据类型 说明
byte\[0\] 设置RTC反馈 unsigned int8 0:设置成功 1:数据错误,设置失败
byte\[1~7\] / / /
> 举例: 型号0x02 编号0x03 的底盘设置RTC时间为2024-01-01 00:00:30。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 1C > > 数据帧 > > 扩展帧 > > 4 > > 1E 90 91 65 > >
上位机 > > 0x01 02 03 BC > > 数据帧 > > 扩展帧 > > 1 > > 00 > >
--- ### 12. 设置唤醒时间 设置RTC时钟的自动唤醒功能,在使用休眠等节能需求时候使用
设置唤醒时间
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 1D 4 /
数据位 功能 数据类型 说明
byte\[0\] unix时间 \[0:7\] unsigned int32 unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数
byte\[1\] unix时间\[8:15\]
byte\[2\] unix时间\[16:23\]
byte\[3\] unix时间\[24:31\]
byte\[4~7\] / / /
设置唤醒时间反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BD 5 /
数据位 功能 数据类型 说明
byte\[0\] 设置唤醒时间反馈 unsigned int8 0:设置成功 1-闹钟时间小于当前时间,设置失败
byte\[1\] 唤醒时间 \[0:7\] unsigned int32 unix时间,从格林威治时间 1970年01月01日00时00分 00 秒起至现在的总秒数
byte\[2\] 唤醒时间\[8:15\]
byte\[3\] 唤醒时间\[16:23\]
byte\[4\] 唤醒时间\[24:31\]
byte\[5\] / / /
> 举例: 型号0x02 编号0x03 的底盘设置唤醒时间为2024-01-01 00:00:30。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 1D > > 数据帧 > > 扩展帧 > > 4 > > 1E 90 91 65 > >
上位机 > > 0x01 02 03 BD > > 数据帧 > > 扩展帧 > > 5 > > 00 1E 90 91 65 > >
--- ### 13. 电源输出控制 控制底盘对外部的电源输出,如果是电池直出则不受影响
电源输出控制
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 1E 1 /
数据位 功能 数据类型 说明
byte\[0\] 电源输出控制 unsigned int8 0:关闭电源 1:启动电源 2:查询当前电源状态
byte\[1~7\] / / /
电源输出反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BE 2 /
数据位 功能 数据类型 说明
byte\[0\] 电源输出控制反馈 unsigned int8 0:操作成功 1:唤醒时间未设置,关闭失败 2:开启失败,电源未关闭
byte\[1\] 电源输出状态反馈 unsigned int8 0:电源已关闭 1:电源已开启
byte\[2~7\] / / /

如果有工控机等外部设备请谨慎使用该功能,该功能需要具备RTC时间功能的底盘,并需要先设置唤醒时间才能关闭电源

> 举例: 型号0x02 编号0x03 的底盘关闭输出电源。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 1E > > 数据帧 > > 扩展帧 > > 1 > > 00 > >
上位机 > > 0x01 02 03 BE > > 数据帧 > > 扩展帧 > > 2 > > 00 01 > >
--- ### 14. 机械参数设置 底盘的结构参数,用于补偿里程计和速度差异
机械参数设置
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 1F 2 /
数据位 功能 数据类型 说明
byte\[0\] 设置轮径 uint16 0: 不设置 单位:mm
byte\[1\]
byte\[2~7\] / / /
机械参数反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX BF 7 /
数据位 功能 数据类型 说明
byte\[0\] 运动模型uint8参考运动模型ID表
byte\[1\] 轴距 uint16 单位:mm
byte\[2\]
byte\[3\] 轮距 uint16 单位:mm
byte\[4\]
byte\[5\] 轮径 uint16 单位:mm
byte\[6\]
byte\[7\] / / /
运动模型ID表
字节 状态码的取值 状态说明
byte\[0\] 0x00 未知模型
0x01 两轮差速
0x02 四轮差速
0x03 阿克曼
0x04 麦轮
0x05 三正交轮
0x06 四正交轮

机械参数设置会严重影响里程计与速度数据输出,请谨慎使用

> 举例: 型号0x02 编号0x03 轴距500mm 轮距300mm 的底盘设置轮径为200mm。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 1F > > 数据帧 > > 扩展帧 > > 1 > > C8 00 > >
上位机 > > 0x01 02 03 BF > > 数据帧 > > 扩展帧 > > 7 > > 01 F4 01 2C 01 C8 00 > >
--- ### 15. odom设置 用于开启底盘计算odom模式,会比上位机计算精确,并可开启IMU较准
odom设置
发送方 接收方 CAN ID 数据长度 周期(ms
外部 本设备 0x 01 XX XX 20 2 /
数据位 功能 数据类型 说明
byte\[0\] 使能odom反馈 uint8 0: 失能(默认) / 1:使能
byte\[1\] IMU较准 uint8 0: 不使用 / 1:使用(默认) 如果底盘没有IMU则不可使用
byte\[2~7\] / / /
odom-位移反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX C0 8 20
数据位 功能 数据类型 说明
byte\[0\] odom\_x \[7:0\] signed int32 单位:mm
byte\[1\] odom\_x\[15:8\]
byte\[2\] odom\_x\[23:16\]
byte\[3\] odom\_x\[31:24\]
byte\[4\] odom\_y\[7:0\] signed int32 单位:mm
byte\[5\] odom\_y\[15:8\]
byte\[6\] odom\_y\[23:16\]
byte\[7\] odom\_y\[31:24\]
odom-旋转反馈
发送方 接收方 CAN ID 数据长度 周期(ms)
本设备 外部 0x 01 XX XX C1 4 20
数据位 功能 数据类型 说明
byte\[0\] odom\_th \[7:0\] signed int32 单位:mrad
byte\[1\] odom\_th \[15:8\]
byte\[2\] odom\_th \[23:16\]
byte\[3\] odom\_th \[31:24\]
byte\[4~7\] / / /

只有具备车载IMU功能的底盘才能开启IMU较准

> 举例: 型号0x02 编号0x03 底盘开启IMU较准 odom,odom位置为x=1m y= 1m。 > >
发送实例 > >
传输目标 > > CAN ID > > 帧格式 > > 帧类型 > > 数据长度 > > 数据位(L->H) > >
设备 > > 0x01 02 03 20 > > 数据帧 > > 扩展帧 > > 2 > > 01 01 > >
上位机 > > 0x01 02 03 C0 > > 数据帧 > > 扩展帧 > > 8 > > E8 03 00 00 E8 03 00 00 > >
上位机 > > 0x01 02 03 C1 > > 数据帧 > > 扩展帧 > > 4 > > 00 00 00 00 > >