-
附录:协议说明
综述
Kobuki
驱动程序与机器人通过预先设定好的协议进行通信。通常,驱动会发送指令
给机器人,
并且得到机器人的反馈数据或传感器消息。
这些命令
和反馈数据被转换为
bytestream
通过串口通
信。通信协议规定了
bytestream
的规
则和形式。
一、流组成
一个
bytestream
可以分为四个部分:<
/p>
headers
,
length
,
payload
和
c
hecksum
。
名字
大小
说明
Header0
1
字节
0xAA
Header1
1
字节
0x55
Length
1
字节
有效信息的字节数
Payload
N
字节
有效信息
Checksum
1
字节
1
、
header
< br>Header
包括两个字节,
header0
和
header1
,
它们
是
kobuki
驱动命令和机器人反馈数据
bytestream
的固定值。
Headers
用来检测
bytestream
的开始,相当于
起始位。
2
、
length
< br>Length
表示一个
bytestream
中所包含的有效信息的长度。
Length
占一个
字节,它可以用来区别
不同的
bytestream
,最小值为
3
。
3
、
payload
Payload
中包涵了
bytestream
的中的实际数据即有效信息。
3.1
payload
Payload
有一些
sub-
payload
组成。
Sub-
payload 0
Sub-payload 1
Payload
Sub-payload 2
…
Sub-payload N-1
3.2
sub-payload
组成
sub-payload
可以分为三部分:
header
,
length
和<
/p>
data.
名字
大小
说明
Header
1
字节
预定义的标识符
Length
1
字节
Data
的字节位数
Data
N
字节
下面描述
4
、
checksum
Checksum
是整个
bytestream
p>
中出来
headers
外的异或值。
Checksum
过程确保了
bytestr
eam
的
完整性。
下面是它的一段代码:
unsigned
int
packet_size(());
unsigned
char
cs(0);
for
(
unsigned
int
i = 2; i < packet_size;
i++)
{
cs ^= buffer[i];
}
return
cs ?
false
:
true
;
5
、完整的
bytestream
Headers
Header0
Header1
Lengt
h
Payload
Sub-payload0
Sub-payload1
Sub-
payload
2
Sub-payload
…
N-1
Checksu
m
以上表格显示了整
个
bytestream
结构。
p>
Payload
的最小长度为
3
,
payload
中包含
sub-payload
,它的长度为
1.
< br>理论上这个数据包(
bytestream
)的最小长度
为
7.
二、数据类型
Sub-payload
的数据字段是下面三种数据类型的混合
:
byte
,
int
< br>和
short
。
名字
Unsigned
byte
Unsigned
short
Unsigned int
说明
8
位无符号整型
16
位无符号整型
32
位无符号整型
字节长度
1
2
4
位长
8
16
32
数据范围
0-255
0-65535
0-4294967295
C/C++
标识符
Unsigned char
Unsigned short
Unsigned int
Uint8_t
Uint16_t
Uint32_t
1
、序列化—反序列化
序列化是将数据结构转化为
bytestream
的
过程,
反序列化是一个逆转过程。
每个数据类型都通过
LSB
-First order
序
列
化
和
反
序
列
化
。
这
就
意
味
着
有
效
字
节<
/p>
中
的
最
低
位
将
最
先
进
入
bytestream
。例如,整形数据
2,864,434,397
(
0xAABBCCDD
)序列化后是:
0xDD
0xCC
0xBB
0xAA
所以,
0xDD
是最先进入
bytestream
的。
这里有
kobuki_driver
的模板函数来解决这个问题,
buildVariable()
和
buildBytes().
三、命令包
1
、命令标识符
ID
1
2
3
4
5
6
7
8
9
10
11
12
Name
Base
control
(底盘控制)
Reserved
Sound(
声音
)
Sound
sequence
(声音序列)
Reserved
Reserved
Reserved
Set power
(整机功率)
Request
extra
(额外请求)
Reserved
Reserved
General purpose output
(通用输出)
description
Control wheel
motors
(控制轮子电机)
Play custom
sounds
(播放定制声音)
Play predefined sounds
(
播放预定义声音
)
Control
external Powers
(控制外部功率)
Request extra informations
(请求额外信息)
Control general purpose
output
(控制通用输出)
2
、底盘控制
通过控制轮子的电机来移动机器人。机器人将按弧线行进,半径
mm
速度
mm/s
Length
Data
Name
Identifier
数据字段大小
速度
半径
size
1
1
2
2
数值
1
4
十六进制数值
0x01
0x04
说明
固定
固定
单位
mm/s
单位
mm
3
、声音
通
过音符
(note)
和音长
(dura
tion)
播放自定义声音
Length
数据
Name
Identifier
Size of data
field
note
duration
size
1
1
2
1
数值
3
3
十六进制数值
0x03
0x03
说明
fixed
(固定)
fixed
(固定)
播放音符的音长按毫秒计
警告:这个命令是在
kobuki
的固件上实现
的,而不是在驱动软件上。
4
、声音序列
按以下说明播放预先定义的声音
Length
Name
Identifier
Size of data field
size
1
1
value
4
1
Value in hex
0x04
0x01
data
Sequence number
1
description
fixed
fixed
0 for
ON sound
1 for OFF sound
2
for recharge sound
3 for button sound
4 for error sound
5 for
cleaning start sound
6 for cleaning end
sound
5
、整机功率
外部功率:
3.3V, 5V, 12V1A,
12V5A
,它与外功率一样都是通用输出的一部分。
Length
Name
Identifier
Size of data field
size
1
1
value
8
2
Value in hex
0x08
0x02
Description
Fixed
fixed
设置打开外部功率的标记符
0x01
外部功率
3.3V ch.
0x02
外部功率
5V ch.
0x04
外部功率
12V1A ch.
0x08
外部功率
12V5A
ch.
Data
Power
control flags
2
警告:这个命令是在
kobuki
的固
件上实现的,而不是在驱动软件上。
也可以查看:
General Purpose Output
6
、额外请求
从机器人请求额外的数据,尤其是
kobuki
的版本信息:
硬件版本,固件版本,和
Unique Deivce
Ide
ntifier(UDID),UDID
是独一无二的设备,因此可以用来识别多个机器
人。
Length
data
Name
identifier
Size of data
field
Request flags
size
1
1
2
value
9
2
Value in hex
0x09
0x02
description
Fixed
Fixed
Set the flags to
request extra data
0x01
硬件版本
0x02
固件版本
0x08
设备
ID
也可以查看:
Hardware Version
Firmware Version, Unique Device
IDentifier(UDID)
7
、通用输出
这条命令包含多个对象,它控制
LEDs
,数字输出和外部功
率
Length
Name
Identifier
Size of data
field
size
1
1
value
12
2
Value in hex
0x0C
0x02
description
Fixed
Fixed
Set
the flags to set high on output pins of
expansion port
为设置高压输出插脚的扩展端
口,设置
如下标识符:
0x0001
数字输出
ch.0
0x0002
数字输出
ch.1
0x0004
数字输出
ch.2
0x0008
数字输出
ch.3
Set the
flags to turn on enternal powers
打来外部功率时,设置如下标识符:
0x0010
外部功率
3.3V
ch.
0x0020
外部功率
5V
ch.
0x0040
外部功率
12V1A ch.
0x0080
外部功率
12V5A
ch.
Set the flags to turn on LEDs
打开
LED
时,设置如下标识符:
data
数字输出
flags
2
0x0100
LED1
红色
0x0200
LED1
绿色
0x0400
LED2
红色
0x0800
LED2
绿色
也可以查看:
Set power
四、反馈包
反馈标识符
机器人启动后,
kobuki
以
50Hz
的频率发送以下默认反馈。
ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Name
Basic sensor data
(
传感器数据
)
Reserved
Docking
IR
(对接红外)
Inertial
sensor
(
惯性传感器
)
Cliff (
防跌落
)
Current(
电流
)
Reserved
Reserved
Reserved
Hardware version
(
硬件版本
)
Firmware version
(固件版本)
Reserved
Raw data of 3-axis gyro
(3
轴陀螺仪原始数据
)
Reserved
Reserved
General purpose input
(通用输入)
Reserved
Reserved
Unique
device
identifier
(
UDID
)
Reserved
description
Basic core sensor data
(基本核心传感器数据)
Signal from docking station
Gyro data both angle and angular
velocity
(
陀螺仪数据:角度和角速度
)
PSD data facing floor()
Current of wheel motors
(轮子电机电流)
Version number
of kobuki hardware
(
kobuki
p>
的硬件版本号)
Version
number of kobuki firmware
(
k
obuki
的固件版本号)
Raw ADC data of digital 3-axis gyro
(
3
轴陀螺仪的原始模数转换(
ADC
)数据)
Inputs from 25-pin
expansion port
(
25
针扩展端口输入)
Unique number to identify robot
(同过一个唯一的数字来识别或者辨别机器人)
By default
(默认值)
By default
By default
On
request
By default
By
default
On
request
(
按要求)
By default
By
default
availability
By
default
(默认)
1
、基本传感器数据
基本的核心传感器的数据
-
-
-
-
-
-
-
-
-
上一篇:Final Cut Pro简易教程
下一篇:昆虫的拉丁目名 目名 拉丁科名 科名