k o b u k i通信协议精编 Document number:WTT-LKK-GBB-08921-EIGG-22986
附录:协议说明综述
Kobuki驱动程序与机器人通过预先设定好的协议进行通信。通常,驱动会发送指令给机器人,并且得到机器人的反馈数据或传感器消息。这些命令和反馈数据被转换为bytestream通过串口通信。通信协议规定了bytestream的规则和形式。
一、流组成
一个bytestream可以分为四个部分:headers,length,payload和checksum。
1、header
Header包括两个字节,header0和header1,它们是kobuki驱动命令和机器人反馈数据bytestream的固定值。Headers用来检测bytestream的开始,相当于起始位。2、length
Length表示一个bytestream中所包含的有效信息的长度。Length占一个字节,它可以用来区别不同的bytestream,最小值为3。
3、payload
Payload中包涵了bytestream的中的实际数据即有效信息。
payload
Payload有一些sub-payload组成。
sub-payload组成
sub-payload可以分为三部分:header,length和data.
4、checksum
Checksum是整个bytestream中出来headers外的异或值。Checksum过程确保了bytestream的完整性。
下面是它的一段代码:
5、完整的bytestream
以上表格显示了整个bytestream结构。
Payload的最小长度为3,payload中包含sub-payload,它的长度为1.
理论上这个数据包(bytestream)的最小长度为7.
二、数据类型
Sub-payload的数据字段是下面三种数据类型的混合:byte,int和short。
1、序列化—反序列化
序列化是将数据结构转化为bytestream的过程,反序列化是一个逆转过程。每个数据类型都通过-Firstorder序列化和反序列化。这就意味着有效字节中的最低位将最先进入bytestream。例如,整形数据2,864,434,397
(0xAABBCCDD)序列化后是:
所以,0xDD是最先进入bytestream的。
这里有kobuki_driver的模板函数来解决这个问题,buildVariable()和buildBytes().
三、命令包
1、命令标识符
2、底盘控制
通过控制轮子的电机来移动机器人。机器人将按弧线行进,半径 mm 速度 mm/s
3、声音
通过音符(note)和音长(duration)播放自定义声音
警告:这个命令是在kobuki的固件上实现的,而不是在驱动软件上。
4、声音序列
按以下说明播放预先定义的声音
5、整机功率
外部功率:, 5V, 12V1A, 12V5A,它与外功率一样都是通用输出的一部分。
警告:这个命令是在kobuki的固件上实现的,而不是在驱动软件上。
也可以查看:General Purpose Output
6、额外请求
从机器人请求额外的数据,尤其是kobuki的版本信息:硬件版本,固件版本,和Unique Deivce
Identifier(UDID),UDID是独一无二的设备,因此可以用来识别多个机器人。
也可以查看:,
7、通用输出
这条命令包含多个对象,它控制LEDs,数字输出和外部功率
也可以查看:Set power
四、反馈包
反馈标识符
机器人启动后,kobuki以50Hz的频率发送以下默认反馈。
1、基本传感器数据
基本的核心传感器的数据
注意:sub-payload将默认发送。
2、对接红外
信号扩展坞
Kobuki的对接站,有3个红外发射器,发射红外线灯覆盖了对接站前方的三个区域:左,中间,右,每一个区域又
分为两个子字段:近和远。由于将这些信息进行编码,机器人随时都能知道它所处的区域和子字段。由于区域和子字段能够被独立的识别,所以他们的边界可以是重叠的。
3、惯性传感器数据
惯性传感器数据,只有1轴陀螺仪数据可用。
Name size value
Value
in
hex
Description Identifier140x04Fixed Length
Size of
data field
170x07Fixed Data
Angle(角
度)
2
Factory
calibrated(工
厂校准)
Angle
rate(角速
率)
2
Factory
calibrated(工
厂校准) Unused1
Unused1
Unused1
注意:sub-payload将默认发送。
4、防跌落传感器数据
Sub-payload提供了PSD的ADC数据,当机器人在路面是行走过程中遇到台阶或者地面存在高度差时。
这个值与传感器和地面之间的距离有关。可以查看数据表获得更加详细的信息。
这个值也可以用于基本传感器数据方面的cliff field,kobuki以布尔类型进行处理。
注意:sub-payload将默认发送。