跳转到主要内容

底盘类CAN协议标准

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

请先确保阅读了CAN协议构架说明再开始以下内容

请注意使用设备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