XSTD 标准化通讯接口
- 硬件连接标准
- CAN总线配置
- CAN协议构架说明
- COM协议构架说明
- 通用CAN协议标准
- 底盘类CAN协议标准
- 运载平台类CAN协议标准
- 灯光类CAN协议标准
- 电源类CAN协议标准
- 电子开关类CAN协议标准
- 惯导类CAN协议标准
硬件连接标准
XSTD的标准规定了CAN接口的规范,目前所有具有CAN功能的设备皆采用此连接方式。该接口采用 EDGK3.5 4P 端子,一般为橘黄色,接线方式如下:
-
红线:V
-
黑线:G
-
黄线:CAN-H
-
绿/蓝线:CAN-L
端口定义如下图:
CAN通讯连接拓展案例如下图所示:
如果扩展网络中有电源转换器存在,请将底盘与电源先相连,防止大电流通过HUB等其他设备造成过流烧毁
端子使用时请注意正确拧开螺钉如下图,安装完成后请检查CAN是否有短路
连接底盘时请先断电,如果底盘使用航空接口一般会有方向性,请对准后插入,不要强行硬插
CAN总线配置
CAN总线原理
如果您没有购买IMU,距离传感器等独立于 底盘/机器人 设备的产品,您无需阅读本节。
读前知识点
CAN总线的物理限制要求,CAN总线的末端必须配备两个120欧姆的终端电阻。
HEXMOVE CAN 配置
HexMove的CAN设备均为CAN2.0B,500K。一般的使用场景如下图所示:
上图中的 End Device 一般是 工控机/工控机的USB转CAN 设备。结合以上使用场景,HEXMove只有两类设备默认接入了120欧姆:
- 底盘/导航塔(如上图左边的产品所示)
- CAN-HUB
HEXMove 提供的所有 CAN 转接器都默认开启 120 欧,这意味着您使用时,只需要保证最后一个插着的设备是CAN-HUB即可。如果您使用自己的CAN转接设备,需要保证转接设备上的120欧正确接入。
但如果您没有结合我们的底盘/导航塔 使用,这意味着上图左边的CAN终端电阻缺失。您需要通过焊线或其他方式(如在接一个CAN-HUB挂在那里纯充当120用)确保另一头也具有120欧姆的终端电阻。
CAN协议构架说明
XSTD是一套基于CAN网络,可扩展到ROS使用的通讯协议规范。该规范为支持多设备和模组设计,在保持简洁易懂的同时提供给各模组充分的拓展空间,并支持多个同种设备同时在线工作。协议对同类型设备采用统一规范,牺牲少量效率换来极大的便捷性,非常便于早期功能开发与学习。
1.设备状态定义
使能(通讯设备默认状态)
▪设备所有功能正常运行。
▪对CAN和COM指令做出反馈。
▪默认关闭次要反馈,可通过指令开启。
失能(普通设备默认状态)
▪设备进入通讯静默状态,内部任然运行。
▪只接受通用指令,不接受专用指令。
▪只发送心跳反馈和通用指令的反馈,不发送专用指令反馈。
▪射频遥控器等设备自身安装的控制设备任然有效,并拥有更高优先级。
2.设备的分类与识别
每个设备有三个主要识别属性:大类、型号、编号
▪大类是按设备类型共分为30类,编码从0x01~0x1E,0x1F作为广播编码 。
▪型号是从0x01~0xFE的序号,在同一大类中,型号是确定且唯一的,与设备名称绑定的,0xFF下作为广播编码。
▪编号是从0x01~0xFE的序号,可以在XVIEW上设置,用于区分同大类且同型号的设备,0xFF作下为广播编码。
在使用指令时,需要对应的大类、型号、编号,对应的大类与型号代码请在对应设备的用户手册中查询。
3.指令类型
指令分为通用指令和专用指令
▪通用指令只通过CAN ID区分接受设备,数据内容对所有大类都是相同的,主要用于基础功能下设置和反馈
▪专用指令是按大类区分,每个大类的功能是不同的,同个大类中功能按需取用
▪通用指令的功能编码从0x 01开始,对应反馈从 0x A1开始(心跳包反馈为0x B0)
▪专用指令的功能编码从0x 11开始,对应反馈从 0x B1开始
4.CAN数据结构
产品中CAN通讯采用CAN2.0B(扩展帧),通讯波特率为500K。
CAN ID 编码规范:
CAN 数据位:Byte[0]~Byte[7]:
CAN使用的CAN信息为上述提到的CANID与CAN_DATA,总计12个字节数据。使用时,针对不同CANID进行相应的CAN_DATA数据传输。
CANID中大类与型号是设备的固定参数,数值不会改变,编号默认为1,当有多个同类设备同时使用时,可以通过通用指令修改。
|
CAN数据帧 |
|||||
|
数据定义 |
ID[0] |
ID[1] |
ID[2] |
ID[3] |
DATA [4~11] |
|
数据类型 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
0~8 x unsigned int8 |
|
说明 |
设备大类 |
设备型号 |
设备编号 |
设备功能 |
0~8字节数据 |
5.指令集查询说明
CAN协议分为设备通用指令与设备专用指令。通用指令操作对系统所有模块配件均适用,常见用于设备启动,系统升级,版本查询,系统复位等;设备专用指令专属于不同设备模块,不同模块根据需要选择使用部分专用指令,对特殊设备可定制专用指令。
CAN闭环控制系统,对绝大数指令均有应答机制。即命令帧,反馈帧一一对应。根据反馈帧实时监控数据流准确性。对部分功能可能需要先使能反馈或设置反馈周期。
6.CAN分析仪
如果有使用CAN-COM HUB或WiFi HUB,可以使用XVIEW的CAN分析仪功能来测试
COM协议构架说明
为了简化协议和方便解析,COM协议本质上就是对CAN指令的封装,其中包含的4~12位数据为4位CAN ID和8位CAN数据。由于COM报文长度是8~16位,使用固定表头0x55,请先阅读标准CAN协议再阅读以下内容。
COM 报文设置
通信波特率:460800
标准:自定义协议串口
|
COM 报文结构 |
|||||
|
数据定义 |
HEAD |
LEN |
DATA [0~11] |
Frame ID |
Checksum |
|
数据类型 |
unsigned int8 |
unsigned int8 |
4~12 x unsigned int8 |
unsigned int8 |
unsigned int8 |
|
说明 |
表头固定0x55 |
COM报文长度0x08~0x10 |
4位CAN ID 0~8位CAN报文数据 |
帧ID 可固定也可累加 连贯数据的序列戳 |
前7~15位内容的累加和 再取最低位的int8反馈 |
|
DATA [0~11] |
|||||
|
数据定义 |
ID[0] |
ID[1] |
ID[2] |
ID[3] |
DATA [0~7] |
|
数据类型 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
0~8 x unsigned int8 |
|
说明 |
设备大类 |
设备型号 |
设备编号 |
设备功能 |
0~8字节数据 |
报文内容解释
Frame ID
- 设计上是一个序列戳,方便对连续的数据包进行校验,帮助发现掉包现象。
- 该序列从0到255,溢出后自动循环
- 对非连续指令或不需要严格防掉包指令可以固定某一数值
- 一般用于上位机校验,设备一般不使用该值
Checksum
- 对报文前7~15位(总共8~16位)的累加和,取和的最低位字节,用于简单的数据校验
- 代码案例如下:
unsigned char checksum(unsigned char* data) {
unsigned char sum = 0x00;
for (int i = 0; i < data[1] - 1; i++) {
sum += data[i];
}
return sum;
}
通用CAN协议标准
通用指令是所有设备都会用到的指令,包含了各项设备基础功能。
请注意使用设备CANID替换表中XX部分
请先确保阅读了CAN协议构架说明再开始以下内容
通用指令在设备失能情况下也是可以使用的,其中心跳包是任何情况下都会反馈的,是设备是否在线的标识
通用指令总表
此表展示了通用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
||||||||||
|
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
设备重启 |
xx |
xx |
xx |
01 |
xx |
xx |
xx |
A1 |
准备重启 |
对命令反馈 |
必备 |
设备完全重置,相当于上电操作 |
|
|
软体版本查询 |
xx |
xx |
xx |
02 |
xx |
xx |
xx |
A2 |
软体版本反馈 |
对命令反馈 |
必备 |
大版本查询,不同于bin文件固件号 |
|
|
通用设置 |
xx |
xx |
xx |
03 |
xx |
xx |
xx |
A3 |
通用设置成功 |
对命令反馈 |
必备 |
使能和编号设置 |
|
|
特殊状态复位 |
xx |
xx |
xx |
04 |
xx |
xx |
xx |
A4 |
特殊复位成功 |
对命令反馈 |
必备 |
清除错误等特殊状态 |
|
|
运动状态复位 |
xx |
xx |
xx |
05 |
xx |
xx |
xx |
A5 |
运动复位成功 |
对命令反馈 |
选备 |
清除里程计等运动数据,非运动设备可无视指令 |
|
|
编号设置 |
xx |
xx |
xx |
06 |
xx |
xx |
xx |
A6 |
编号设置成功 |
对命令反馈 |
必备 |
用于设置设备编号 |
|
|
查找设备 |
xx |
xx |
xx |
07 |
/ |
/ |
/ |
/ |
/ |
/ |
选备 |
收到后设备利用可用的方式 (包括不限于蜂鸣器,LED,灯光等) 将自身与其他同类设备区分出来 便于人类寻找到特定设备 |
|
|
/ |
/ |
/ |
/ |
/ |
xx |
xx |
xx |
B0 |
设备心跳包 |
周期反馈 |
必备 |
||
|
进入升级模式 |
xx |
xx |
xx |
F1 |
/ |
/ |
/ |
/ |
/ |
/ |
选备 |
如果没有boot loader则无视指令 |
|
|
升级模式专用 |
xx |
xx |
xx |
F2~FF |
xx |
xx |
xx |
F2~FF |
升级模式专用 |
对命令反馈 |
不需要 |
主程序直接忽略,bootloader使用 |
|
1. 设备重启/准备重启
设备重启会导致设备对外输出关闭,有其他用电设备例如工控机时,请谨慎使用
|
设备重启 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 01 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同 ) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号(与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
准备重启反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A1 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
注:当系统中有多台机器同时使用时,可更改设置设备编号,设备编号默认为0x01。发送指令数据长度为8,无效位补0(后文同)。
举例:向型号0x02 编号0x03的底盘发送CANID:0x01 02 03 01 数据:01 02 03,系统重启。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 01
数据帧
扩展帧
3
01 02 03
上位机
0x01 02 03 A1
数据帧
扩展帧
0
/
2. 固件版本查询
|
设备重启 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 02 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
/ |
/ |
/ |
|
|
准备重启反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A2 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
硬件版本字符[0] |
unsigned int8ASCII |
用于电控的版本号,PCB修改时更新 |
|
|
byte[1] |
硬件版本字符[1] |
unsigned int8ASCII |
||
|
byte[2] |
硬件版本字符[2] |
unsigned int8ASCII |
||
|
byte[3] |
硬件版本字符[3] |
unsigned int8ASCII |
||
|
byte[4] |
软件版本字符[0] |
unsigned int8ASCII |
用于大更新的版本号,不同于bin文件的固件号 |
|
|
byte[5] |
软件版本字符[1] |
unsigned int8ASCII |
||
|
byte[6] |
软件版本字符[2] |
unsigned int8ASCII |
||
|
byte[7] |
软件版本字符[3] |
unsigned int8ASCII |
||
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 02 数据:NULL。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 02
数据帧
扩展帧
0
/
上位机
0x01 02 03 A2
数据帧
扩展帧
8
XX XX XX XX XX XX XX XX
3. 通用设置/通用设置成功
通用设置指令用于对设备进行设备使能操作,一般是上电后第一要使用的指令
|
通用设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 03 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号 (与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3] |
使能 |
unsigned int8 |
0x00: 关闭设备 / 0x01: 使能设备 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A3 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
注:底盘默认上电是失能状态。
举例:使能设备型号0x02 编号0x03 的底盘,向系统ID:0x01 02 03 03发送指令01 02 03 01,设备使能。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 03
数据帧
扩展帧
4
01 02 03 01
上位机
0x01 02 03 A3
数据帧
扩展帧
0
/
4. 特殊状态复位 / 特殊复位成功
特殊状态复位用于系统异常(发生错误)时清错重置
|
特殊状态复位 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 04 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
状态复位 |
unsigned int8 |
0xCC:复位 / 其他值无操作 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
复位成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A4 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 04 数据:CC 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 04
数据帧
扩展帧
1
CC
上位机
0x01 02 03 A4
数据帧
扩展帧
0
/
5. 运动状态复位 / 运动复位成功
运动状态复位用于系统重置运动数据,例如里程计数据,该指令只对有运动能力的设备有效
|
运动状态复位 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 05 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
状态复位 |
unsigned int8 |
0xCC:复位 / 其他值无操作 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
复位成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A5 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 05 数据:CC 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 05
数据帧
扩展帧
1
CC
上位机
0x01 02 03 A5
数据帧
扩展帧
0
/
6. 编号设置
编号设置指令用于对设备设置新编号。当系统只有单一设备时,编号始终默认为0x01,当系统中有多台设备时可自定义设置设备编号
|
编号设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 06 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
大类 |
unsigned int8 |
按设备型号分配表中大类(与ID中相同) |
|
|
byte[1] |
型号 |
unsigned int8 |
按设备型号分配表中型号 (与ID中相同 ) |
|
|
byte[2] |
编号 |
unsigned int8 |
初始为1(与ID中相同 ) |
|
|
byte[3] |
新编号 |
unsigned int8 |
如果不改变编号则与原编号相同 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX A6 (此处反馈为原编号) |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
举例:设备型号0x02 编号0x03 的底盘更改设备编号为0x02,向系统ID:0x01 02 03 06发送指令01 02 03 02 ;设备编号由0x03切换为0x02。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 06
数据帧
扩展帧
4
01 02 03 02
上位机
0x01 02 03 A6
数据帧
扩展帧
0
/
7. 查找设备
当有多个设备存在无法分辨需要寻找的设备时,可以使用该功能是设备LED或蜂鸣器做出响应,方便寻找
|
查找设备 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x XX XX XX 07 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
该条指令无反馈消息
举例:查找设备大类0x02 型号0x02 编号0x03 的设备。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x02 02 03 07
数据帧
扩展帧
0
/
上位机
/
/
/
/
/
8. 设备心跳包
心跳包在设备失能和使能时都能持续发出,不需要任何指令控制,是设备是否在线的标识
|
设备心跳 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x XX XX XX B0 |
1 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
使能状态 |
unsigned int8 |
0x00: 已关闭 / 0x01: 已使能 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
该条反馈持续每500ms发出,不接受任何指令控制
举例: 型号0x02 编号0x03 使能的底盘反馈心跳包。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x01 02 03 B0
数据帧
扩展帧
1
01
底盘类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
运载平台类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为运载平台用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
运载平台类设备的大类ID为 03
运载平台指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
运载平台 |
平台状态设置 |
03 |
xx |
xx |
11 |
03 |
xx |
xx |
B1 |
平台状态信息 |
周期反馈 |
必备 |
||
|
平台工作范围查询 |
03 |
xx |
xx |
12 |
03 |
xx |
xx |
B2 |
工作范围信息 |
对命令反馈 |
必备 |
|||
|
平台移动速度控制 |
03 |
xx |
xx |
13 |
03 |
xx |
xx |
B3 |
平台移动信息 |
周期反馈 |
选备 |
适用于有移动轴的平台 |
||
|
平台移动位置控制 |
03 |
xx |
xx |
14 |
03 |
xx |
xx |
B4 |
平台位置信息 |
周期反馈 |
选备 |
适用于有移动轴的平台 |
||
1. 平台状态设置/ 平台状态信息
|
平台状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 11 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
启动零点较准 |
uint8 |
0x00: 不启动 / 0x01:启动 | |
|
byte[1] |
移动速度上限低8位 |
unsigned int16 |
位置控制模式专用 单位:mm/s |
|
|
byte[2] |
移动速度上限高8位 |
|||
|
byte[3~7] |
/ |
/ |
/ |
|
|
平台状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B1 |
6 |
100 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设备状态 |
uint8 |
0x00: 正常 / 0x01:异常 |
|
|
byte[1] |
零点较准状态 | uint8 | 0x00: 较准完成 / 0x01:校准中 | |
|
byte[2] |
特殊状态 | uint16 | 查看特殊状态表 | |
|
byte[3] |
||||
|
byte[4] |
移动速度上限低8位 |
unsigned int16 |
位置控制模式专用 单位:mm/s |
|
|
byte[5] |
移动速度上限高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
特殊状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1:触发 |
x平移限位触发 |
|
bit[1] |
0: 正常 / 1:触发 |
y平移限位触发 |
|
bit[2] |
0: 正常 / 1:触发 |
z平移限位触发 |
|
bit[3] |
0: 正常 / 1:堵转 |
x电机堵转 |
|
bit[4] |
0: 在线 / 1:堵转 |
y电机堵转 |
|
bit[5] |
0: 正常 / 1:堵转 |
z电机堵转 |
|
bit[6] |
0: 正常 / 1:过温 |
x电机过温 |
|
bit[7] |
0: 在线 / 1:过温 |
y电机过温 |
|
bit[8] |
0: 正常 / 1:过温 |
z电机过温 |
|
bit[9~15] |
/ |
/ |
启动校准后平台会缓慢寻找零点并停在零点处
移动速度上限是指位置控制模式下,移动的最大可达速度
举例: 型号0x02 编号0x03 的平台启动校准,上限速度0.5m/s,发送CANID:0x03 02 03 11 数据:01 F4 01。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 11
数据帧
扩展帧
3
01 F4 01
上位机
0x03 02 03 B1
数据帧
扩展帧
4
00 01 00 00
2. 平台工作范围查询 / 平台工作范围信息
用于获得平台移动轴的运动范围,是设备的固定参数
|
平台移动范围查询 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 12 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
|
平台移动范围信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B2 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x移动范围高8位 |
|||
|
byte[2] |
y移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y移动范围高8位 |
|||
|
byte[4] |
z移动范围低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z移动范围高8位 |
|||
|
byte[6] |
移动速度范围低8位 |
unsigned int16 |
单位: mm/s |
|
|
byte[7] |
移动速度范围高8位 |
|||
速度范围是指设备允许的最大速度,是由设备机械结构决定的,是一个确定值
举例: 型号0x02 编号0x03 的平台获取移动范围x=1000mm,发送CANID:0x03 02 03 12。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 12
数据帧
扩展帧
0
/
上位机
0x03 02 03 B2
数据帧
扩展帧
8
E8 03 00 00 00 00 E8 03
3. 平台速度控制 / 平台速度信息
通过控制速度来移动平台
|
平台速度控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 13 |
6 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
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] |
z方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[5] |
z方向速度高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
平台速度信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B3 |
6 |
50 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
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] |
z方向速度低8位 |
signed int16 |
单位:mm/s |
|
|
byte[5] |
z方向速度高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
需要实时读取位置信息,可能会出现超限
举例: 型号0x02 编号0x03 的平台设置移动x=1m/s,发送CANID:0x03 02 03 13,数据:E8 03 00 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 13
数据帧
扩展帧
6
E8 03 00 00 00 00
上位机
0x03 02 03 B3
数据帧
扩展帧
6
E8 03 00 00 00 00
4. 平台位置控制 / 平台位置信息
通过控制位置来移动平台
|
平台位置控制 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 03 XX XX 14 |
6 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x方向位置高8位 |
|||
|
byte[2] |
y方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y方向位置高8位 |
|||
|
byte[4] |
z方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z方向位置高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
|
平台位置信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 03 XX XX B4 |
6 |
50 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[1] |
x方向位置高8位 |
|||
|
byte[2] |
y方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[3] |
y方向位置高8位 |
|||
|
byte[4] |
z方向位置低8位 |
signed int16 |
单位:mm |
|
|
byte[5] |
z方向位置高8位 |
|||
|
byte[6~7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的平台设置移动到位置 x=1m ,发送CANID:0x03 02 03 14。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x03 02 03 14
数据帧
扩展帧
6
E8 03 00 00 00 00
上位机
0x03 02 03 B4
数据帧
扩展帧
6
E8 03 00 00 00 00
灯光类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为灯光使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
灯光类设备的大类ID为 04
灯光控制器指令总表
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 ( 00~FF) |
功能 ( 00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
灯光控制器 |
控制器状态设置 |
04 |
xx |
xx |
11 |
04 |
xx |
xx |
B1 |
控制器状态信息 |
周期反馈 |
必备 |
||
|
单点灯光状态设置 |
04 |
xx |
xx |
12 |
/ |
/ |
/ |
/ |
/ |
/ |
必备 |
|||
|
呼吸模式设置 |
04 |
xx |
xx |
13 |
04 |
xx |
xx |
B3 |
设置成功 |
单次反馈 |
必备 |
|||
1. 控制器状态设置 / 控制器状态信息
|
控制器状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 11 |
3 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100(最大亮度百分比,用于总控) |
|
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
控制器状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 04 XX XX B1 |
8 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
查看工作模式表 |
|
|
byte[1] |
亮度倍率 |
unsigned int8 |
1~100 |
|
|
byte[2] |
灯光数量 |
unsigned int8 |
控制的灯光LED数量 |
|
|
byte[3~7] |
/ |
/ |
/ |
|
|
触碰开关表 |
||
|
位 |
值 |
说明 |
|
byte[0] |
0x00 |
待机模式(蓝色呼吸灯) |
|
0x01 |
警报模式(红色快闪) |
|
|
0x02 |
单点控制 |
|
|
0x03 |
呼吸模式 |
|
举例: 型号0x02 编号0x03 的灯光使用警报模式 100亮度 50个led,发送CANID:0x04 02 03 11 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 11
数据帧
扩展帧
3
01 64 32
上位机
0x04 02 03 B1
数据帧
扩展帧
3
01 64 32
2. 单点灯光状态设置
用于单一LED的控制,可以每个LED都有不同颜色
|
控制器状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 12 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[2] |
G值 |
unsignedint8 |
RGB的G值 |
|
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
|
byte[4] |
灯光ID |
unsigned int8 |
ID从1开始,0为空 |
|
|
byte[5] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[6] |
G值 |
unsignedint8 |
RGB的G值 |
|
|
byte[7] |
B值 |
unsigned int8 |
RGB的B值 |
|
每次至多设置两个LED,可以连续发送,单个LED可以设置另一个ID为0
需要工作模式为单点控制才有效
举例: 型号0x02 编号0x03 的灯光设置第一个LED 白色,发送CANID:0x04 02 03 12 数据:01 FF FF FF 00 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 12
数据帧
扩展帧
8
01 FF FF FF 00 00 00 00
上位机
/
/
/
/
/
3. 呼吸模式设置 / 设置成功
呼吸模式是所有灯以一种颜色渐变
|
呼吸模式设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 04 XX XX 13 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
呼吸周期 |
unsigned int8 |
单位:S |
|
|
byte[1] |
R值 |
unsigned int8 |
RGB的R值 |
|
|
byte[2] |
G值 |
unsigned int8 |
RGB的G值 |
|
|
byte[3] |
B值 |
unsigned int8 |
RGB的B值 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
设置成功 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 04 XX XX B3 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
需要工作模式为呼吸模式才有效
举例: 型号0x02 编号0x03 的灯光设置LED 白色1s呼吸,发送CANID:0x04 02 03 13 数据:01 64 32 。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x04 02 03 13
数据帧
扩展帧
4
01 FF FF FF
上位机
0x04 02 03 B3
数据帧
扩展帧
0
/
电源类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电源使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电源类设备的大类ID为 06
电源指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
电池 |
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B1 |
BMS状态信息 |
周期反馈 |
必备 |
||
|
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B2 |
BMS数据反馈 |
周期反馈 |
必备 |
|||
|
充电站 |
充电站设置 |
06 |
xx |
xx |
13 |
06 |
xx |
xx |
B3 |
充电站状态信息 |
周期反馈 |
必备 |
||
|
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B4 |
充电站数据反馈 |
周期反馈 |
必备 |
|||
|
数字电源 |
数字电源设置 |
06 |
xx |
xx |
15 |
06 |
xx |
xx |
B5 |
电源数据反馈 |
周期反馈 |
必备 |
||
1. BMS状态信息
用于带有BMS功能的电池包的数据采集
|
BMS状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B1 |
4 |
1000 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作状态 |
unsigned int8 |
0x00: 正常 / 0x01: 警告 /0x02: 保护 |
|
|
byte[1] |
警告状态 |
unsigned int8 |
警告状态表 |
|
|
byte[2] |
保护状态 |
unsigned int8 |
保护状态表 |
|
|
byte[3] |
充电标识 |
unsigned int8 |
0x00: 未充电 / 0x01: 充电中 |
|
|
byte[4~7] |
/ |
/ |
/ |
|
|
警告状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1: 警告 |
电池过压警告 |
|
bit[1] |
0: 正常 / 1: 警告 |
电池欠压警告 |
|
bit[2] |
0: 正常 / 1: 警告 |
电池高温警告 |
|
bit[3] |
0: 正常 / 1: 警告 |
电池低温警告 |
|
bit[4] |
0: 正常 / 1: 警告 |
放电过流警告 |
|
bit[5] |
0: 正常/ 1: 警告 |
充电过流警告 |
|
bit[6] |
0: 正常 / 1: 警告 |
低电量警告(SOC<20%) |
|
bit[7] |
/ |
/ |
|
保护状态表 |
||
|
位 |
值 |
说明 |
|
bit[0] |
0: 正常 / 1: 触发 |
电池过压保护 |
|
bit[1] |
0: 正常 / 1: 触发 |
电池欠压保护 |
|
bit[2] |
0: 正常 / 1: 触发 |
电池高温保护 |
|
bit[3] |
0: 正常 / 1: 触发 |
电池低温保护 |
|
bit[4] |
0: 正常 / 1: 触发 |
放电过流保护 |
|
bit[5] |
0: 正常 / 1: 触发 |
充电过流保护 |
|
bit[6] |
0: 正常 / 1: 触发 |
低电量保护(SOC<10%) |
|
bit[7] |
0: 正常 / 1: 触发 |
短路保护 |
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 充电中。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B1
数据帧
扩展帧
4
00 00 00 01
2. BMS数据反馈
用于带有BMS功能的电池包的数据采集
|
BMS数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B2 |
8 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
SOC |
unsigned int8 |
范围 0~100 |
|
|
byte[1] |
SOH |
unsigned int8 |
范围 0~100 |
|
|
byte[2] |
电池电压低8位 |
unsigned int16 |
单位:0.01V |
|
|
byte[3] |
电池电压高8位 |
|||
|
byte[4] |
电池电流低8位 |
signed int16 |
单位:0.1A |
|
|
byte[5] |
电池电流高8位 |
|||
|
byte[6] |
电池温度低8位 |
signed int16 |
单位:0.1℃ |
|
|
byte[7] |
电池温度高8位 |
|||
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 满电48V反馈。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B2
数据帧
扩展帧
8
64 64 C0 12 00 00 68 01
3. 充电站设置
用于配套的自动充电站的设置
|
充电站设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 06 XX XX 13 |
5 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动(默认) /1:手动 查看工作模式功能表 |
|
|
byte[1] |
手动开关设置(仅手动模式有效) |
unsigned int8 |
0:断开(默认) /1:连接 查看工作模式功能表 |
|
|
byte[2] |
蜂鸣器使能(报警无法关闭) |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
|
byte[3] |
再充电压差值(与满电电压的压差) |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
|
byte[4] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
|
byte[5~7] |
/ |
/ |
/ |
|
|
充电站状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B3 |
7 |
500/接触触发(看备注) |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动 /1:手动 |
|
|
byte[1] |
充电站探测状态 |
unsigned int8 |
0:未接触 /1:已接触 |
|
|
byte[2] |
工作状态 |
unsigned int8 |
0: 断开/ 1:连接 / 2:已充满(低电流) / 3:错误 |
|
|
byte[3] |
错误状态 |
unsigned int8 |
查看错误状态表 |
|
|
byte[4] |
蜂鸣器使能状态 |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
|
byte[5] |
再充电压差值 |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
|
byte[6] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
|
byte[7] |
/ |
/ |
/ |
|
|
错误状态表 |
||
|
字节 |
状态值 |
说明 |
|
byte[3] |
0x00 |
无错误 |
|
0x01 |
电源过压 |
|
|
0x02 |
充电过流 |
|
|
0x03 |
短路保护 |
|
|
工作状态指示表 |
||
|
工作状态 |
LED状态 |
蜂鸣器状态 |
|
断开(未接触) |
无灯 |
无 |
|
断开(已接触) |
绿灯闪烁 |
无 |
|
连接 |
红绿交替 |
无 |
|
已充满 |
绿灯常亮 |
无 |
|
错误 |
红灯常亮 |
按规定的错误发声模式 |
|
工作模式功能表 |
|||
|
工作模式 |
探测状态 |
手动开关 |
工作状态 |
|
自动 |
未接触 |
无效 |
断开 |
|
接触 |
无效 |
连接 |
|
|
手动 |
未接触 |
无效 |
断开 |
|
接触 |
连接 |
连接 |
|
|
断开(默认) |
断开 |
||
一般反馈周期为500ms,如果出现充电站探测变化则立即发送充电站状态信息帧
再冲电电压差指完成第一次充电后,如果电池电压下降超过设置的压差值,会再次启动充电
举例: 型号0x02 编号0x03 的充电站 手动控制连接。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x06 02 03 13
数据帧
扩展帧
5
01 01 00 0A 02
上位机
0x06 02 03 B3
数据帧
扩展帧
7
01 01 01 00 00 0A 02
4. 充电站数据反馈
用于配套的自动充电站的充电数据反馈
|
充电站数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B4 |
4 |
500 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
充电电压低8位 |
unsigned int16 |
单位:0.01V |
|
|
byte[1] |
充电电压高8位 |
|||
|
byte[2] |
充电电流低8位 |
signed int16 |
单位:0.1A |
|
|
byte[3] |
充电电流高8位 |
|||
|
byte[4~7] |
/ |
/ |
/ |
|
举例: 型号0x02 编号0x03 的充电站48V 1A充电。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 02 03 B4
数据帧
扩展帧
4
C0 12 0A 00
5. 数字电源设置
用于专用的数字电源
|
数字电源设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 06 XX XX 15 |
8 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
|
byte[2] |
反馈周期 |
unsigned int8 |
单位ms |
|
|
byte[3] |
/ |
/ |
/ |
|
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
|
byte[5] |
||||
|
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
|
byte[7] |
||||
|
数字电源数据反馈 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 06 XX XX B5 |
8 |
按设置周期 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
|
byte[2] |
错误码 |
unsigned int8 |
查看错误状态码 |
|
|
byte[3] |
/ |
/ |
/ |
|
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
|
byte[5] |
||||
|
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
|
byte[7] |
||||
|
错误状态表 |
||
|
字节 |
状态值 |
说明 |
|
byte[2] |
0x00 |
无错误 |
|
0x01 |
电源过压 |
|
|
0x02 |
电源过流 |
|
|
0x03 |
电源过温 | |
电子开关类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电子开关使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电子开关类设备的大类ID为 0A
电子开关指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
电子开关 |
可控开关状态设置 |
0A |
xx |
xx |
11 |
0A |
xx |
xx |
B1 |
可控开关状态信息 |
周期反馈 |
选备 |
开关性质只能是其中一种 | |
|
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B2 |
按键状态信息 |
周期反馈 |
选备 |
|||
|
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B3 |
AD状态信息 |
周期反馈 |
选备 |
|||
|
反馈周期设置 |
0A |
xx |
xx |
14 |
0A |
xx |
xx |
B4 |
反馈周期信息 |
即时反馈 |
选备 |
|||
1. 可控开关状态设置 / 可控开关状态信息
用于可控的IO设备
|
可控开关状态设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0A XX XX 11 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置开关 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
|
可控开关状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0A XX XX B1 |
7 |
默认1000/触发模式 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
开关状态 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
可控开关指通过单一变量控制启停的设备,包括灯光、门锁、气泵、电磁阀等
保持每次操作间隔超过 500ms,先读取状态再操作,防止过频繁烧毁部件
举例: 型号0x02 编号0x03 的开关开启, 发送CANID:0x 0A 02 03 11 数据:01。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 11
数据帧
扩展帧
1
01
上位机
0x0A 02 03 B1
数据帧
扩展帧
1
01
2. 按键状态信息
用于按键单输入设备的控制
|
按键状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B2 |
8 |
默认100/触发模式 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
按键1 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[1] |
按键2 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[2] |
按键3 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[3] |
按键4 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[4] |
按键5 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[5] |
按键6 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[6] |
按键7 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
|
byte[7] |
按键8 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
使用触发模式要注意按键抖动问题
举例: 型号0x02 编号0x03 的按键1按下。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B2
数据帧
扩展帧
8
01 00 00 00 00 00 00 00
3. AD状态信息
用于AD输入设备的控制
|
AD状态信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 01 XX XX B3 |
8 |
默认100 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
AD1低8位 |
signed int16 |
|
|
|
byte[1] |
AD1高8位 |
|||
|
byte[2] |
AD2低8位 |
signed int16 |
|
|
|
byte[3] |
AD2高8位 |
|||
|
byte[4] |
AD3低8位 |
signed int16 |
|
|
|
byte[5] |
AD3高8位 |
|||
|
byte[6] |
AD4低8位 |
signed int16 |
|
|
|
byte[7] |
AD4高8位 |
|||
举例: 型号0x02 编号0x03 的AD1 = 80%。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B3
数据帧
扩展帧
8
50 00 00 00 00 00 00 00
4. 反馈周期设置 / 反馈周期信息
|
反馈周期设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0A XX XX 14 |
4 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
设置周期 |
unsigned int32 |
0: 触发模式 / 其他数值单位ms |
|
|
byte[1] |
||||
|
byte[2] |
||||
|
byte[3] |
||||
|
byte[4~7] |
/ |
/ |
/ |
|
|
反馈周期信息 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0A XX XX B4 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0~7] |
/ |
/ |
/ |
|
当反馈周期设置为0时进入触发模式,该模式下只有开关状态变化才会反馈
举例: 型号0x02 编号0x03 的设置反馈周期100ms, 发送CANID:0x 0A 02 03 14 数据:64 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 14
数据帧
扩展帧
4
64 00 00 00
上位机
0x0A 02 03 B4
数据帧
扩展帧
0
/
惯导类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为惯导设备使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
惯导类设备的大类ID为 0B
惯导传感器指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
|
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
|
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
|
惯导传感器 |
角度信息设置 |
0B |
xx |
xx |
11 |
0B |
xx |
xx |
B1 |
传感器角度信息 |
周期反馈 |
必备 |
||
|
角速度信息设置 |
0B |
xx |
xx |
12 |
0B |
xx |
xx |
B2 |
传感器角速度信息 |
周期反馈 |
必备 |
|||
|
加速度信息设置 |
0B |
xx |
xx |
13 |
0B |
xx |
xx |
B3 |
传感器加速度信息 |
周期反馈 |
必备 |
|||
|
四元数信息设置 |
0B |
xx |
xx |
14 |
0B |
xx |
xx |
B4 |
传感器四元数信息1 |
使能后周期反馈 |
选备 |
|||
|
/ |
/ |
/ |
/ |
/ |
0B |
xx |
xx |
B5 |
传感器四元数信息2 |
使能后周期反馈 |
选备 |
|||
1. 角度信息设置 / 传感器角度信息
|
角度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 11 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 传感器角度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B1 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x轴旋转角[7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[1] |
x轴旋转角[8:15] |
|||
|
byte[2] |
y轴旋转角 [7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[3] |
y轴旋转角 [8:15] |
|||
|
byte[4] |
z轴旋转角[7:0] |
signed int16 |
单位:0.01deg(°) |
|
|
byte[5] |
z轴旋转角[8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5° y=1.0° z=1.5°。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 11
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B1
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
2. 角速度设置 / 角速度信息
|
角速度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 12 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 角速度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B2 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向角速度[7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[1] |
x方向角速度 [8:15] |
|||
|
byte[2] |
y方向角速度 [7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[3] |
y方向角速度 [8:15] |
|||
|
byte[4] |
z方向角速度 [7:0] |
signed int16 |
单位:0.01 deg/s |
|
|
byte[5] |
z方向角速度 [8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5°/s y=1.0°/s z=1.5°/s。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 12
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B2
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
3. 加速度设置 / 加速度信息
|
加速度信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 13 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭/ 1~10: 10ms / 10~255:设定值(默认10ms) |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 加速度信息 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B3 |
8 |
默认10 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
x方向加速度[7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[1] |
x方向加速度 [8:15] |
|||
|
byte[2] |
y方向加速度 [7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[3] |
y方向加速度 [8:15] |
|||
|
byte[4] |
z方向加速度 [7:0] |
signed int16 |
单位:0.01m/s² |
|
|
byte[5] |
z方向加速度 [8:15] |
|||
|
byte[6] |
发布时间戳[7:0] |
unsigned int16 |
单位:ms |
|
|
byte[7] |
发布时间戳[8:15] |
|||
举例: 型号0x01 编号0x02 的IMU 设置10ms,反馈x=0.5m/s y=1.0m/s z=1.5m/s。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0B 01 02 13
数据帧
扩展帧
1
14
上位机
0x0B 01 02 B3
数据帧
扩展帧
8
32 00 64 00 96 00 01 00
4. 四元数信息设置
|
四元数信息设置 |
||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
外部 |
本设备 |
0x 0B XX XX 14 |
1 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
发送周期设置 |
unsigned int8 |
0: 关闭(默认)/ 1~10: 10ms / 10~255:设定值 |
|
|
byte[1~7] |
/ |
/ |
/ |
|
| 四元数信息1 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B4 |
8 |
默认关闭 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
四元数qw[0:7] |
float |
||
|
byte[1] |
四元数qw[8:15] |
|||
|
byte[2] |
四元数qw[16:23] |
|||
|
byte[3] |
四元数qw[24:31] |
|||
|
byte[4] |
四元数qx[0:7] |
float |
||
|
byte[5] |
四元数qx[8:15] |
|||
|
byte[6] |
四元数qx[16:23] |
|||
|
byte[7] |
四元数qx[24:31] |
|||
| 四元数信息2 | ||||
|
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
|
本设备 |
外部 |
0x 0B XX XX B5 |
8 |
默认关闭 |
|
数据位 |
功能 |
数据类型 |
说明 |
|
|
byte[0] |
四元数qy[0:7] |
float |
||
|
byte[1] |
四元数qy[8:15] |
|||
|
byte[2] |
四元数qy[16:23] |
|||
|
byte[3] |
四元数qy[24:31] |
|||
|
byte[4] |
四元数qz[0:7] |
float |
||
|
byte[5] |
四元数qz[8:15] |
|||
|
byte[6] |
四元数qz[16:23] |
|||
|
byte[7] |
四元数qz[24:31] |
|||