kobuki通信协议.docx

上传人:b****8 文档编号:10250890 上传时间:2023-02-09 格式:DOCX 页数:23 大小:49.11KB
下载 相关 举报
kobuki通信协议.docx_第1页
第1页 / 共23页
kobuki通信协议.docx_第2页
第2页 / 共23页
kobuki通信协议.docx_第3页
第3页 / 共23页
kobuki通信协议.docx_第4页
第4页 / 共23页
kobuki通信协议.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

kobuki通信协议.docx

《kobuki通信协议.docx》由会员分享,可在线阅读,更多相关《kobuki通信协议.docx(23页珍藏版)》请在冰豆网上搜索。

kobuki通信协议.docx

kobuki通信协议

附录:

协议说明

综述

Kobuki驱动程序与机器人通过预先设定好的协议进行通信。

通常,驱动会发送指令给机器人,并且得到机器人的反馈数据或传感器消息。

这些命令和反馈数据被转换为bytestream通过串口通信。

通信协议规定了bytestream的规则和形式。

一、流组成

一个bytestream可以分为四个部分:

headers,length,payload和checksum。

名字

Header0

Header1

Length

Payload

Checksum

大小

1字节

1字节

1字节

N字节

1字节

说明

0xAA

0x55

有效信息的字节数

有效信息

1、header

Header包括两个字节,header0和header1,它们是kobuki驱动命令和机器人反馈数据bytestream的固定值。

Headers用来检测bytestream的开始,相当于起始位。

2、length

Length表示一个bytestream中所包含的有效信息的长度。

Length占一个字节,它可以用来区别不同的bytestream,最小值为3。

3、payload

Payload中包涵了bytestream的中的实际数据即有效信息。

3.1payload

Payload有一些sub-payload组成。

Payload

Sub-payload0

Sub-payload1

Sub-payload2

Sub-payloadN-1

3.2sub-payload组成

sub-payload可以分为三部分:

header,length和data.

名字

Header

Length

Data

大小

1字节

1字节

N字节

说明

预定义的标识符

Data的字节位数

下面描述

4、checksum

Checksum是整个bytestream中出来headers外的异或值。

Checksum过程确保了bytestream的完整性。

下面是它的一段代码:

unsignedintpacket_size(buffer.size());

unsignedcharcs(0);

for(unsignedinti=2;i

{

cs^=buffer[i];

}

returncs?

false:

true;

5、完整的bytestream

Headers

Length

Payload

Checksum

Header0

Header1

Sub-payload0

Sub-payload1

Sub-payload2

Sub-payloadN-1

以上表格显示了整个bytestream结构。

Payload的最小长度为3,payload中包含sub-payload,它的长度为1.

理论上这个数据包(bytestream)的最小长度为7.

二、数据类型

Sub-payload的数据字段是下面三种数据类型的混合:

byte,int和short。

名字

说明

字节长度

位长

数据范围

C/C++标识符

Unsignedbyte

8位无符号整型

1

8

0-255

Unsignedchar

Uint8_t

Unsignedshort

16位无符号整型

2

16

0-65535

Unsignedshort

Uint16_t

Unsignedint

32位无符号整型

4

32

0-4294967295

Unsignedint

Uint32_t

1、序列化—反序列化

序列化是将数据结构转化为bytestream的过程,反序列化是一个逆转过程。

每个数据类型都通过LSB-First order序列化和反序列化。

这就意味着有效字节中的最低位将最先进入bytestream。

例如,整形数据2,864,434,397(0xAABBCCDD)序列化后是:

0xDD

0xCC

0xBB

0xAA

所以,0xDD是最先进入bytestream的。

这里有kobuki_driver的模板函数来解决这个问题,buildVariable()和buildBytes().

三、命令包

1、命令标识符

ID

Name

description

1

Basecontrol(底盘控制)

Controlwheelmotors(控制轮子电机)

2

Reserved

3

Sound(声音)

Playcustomsounds(播放定制声音)

4

Soundsequence(声音序列)

Playpredefinedsounds(播放预定义声音)

5

Reserved

6

Reserved

7

Reserved

8

Setpower(整机功率)

ControlexternalPowers(控制外部功率)

9

Requestextra(额外请求)

Requestextrainformations(请求额外信息)

10

Reserved

11

Reserved

12

Generalpurposeoutput(通用输出)

Controlgeneralpurposeoutput(控制通用输出)

2、底盘控制

通过控制轮子的电机来移动机器人。

机器人将按弧线行进,半径mm速度mm/s

Name

size

数值

十六进制数值

说明

Identifier

1

1

0x01

固定

Length

数据字段大小

1

4

0x04

固定

Data

速度

2

单位mm/s

半径

2

单位mm

3、声音

通过音符(note)和音长(duration)播放自定义声音

Name

size

数值

十六进制数值

说明

Identifier

1

3

0x03

fixed(固定)

Length

Sizeofdatafield

1

3

0x03

fixed(固定)

数据

note

2

duration

1

播放音符的音长按毫秒计

警告:

这个命令是在kobuki的固件上实现的,而不是在驱动软件上。

4、声音序列

按以下说明播放预先定义的声音

Name

size

value

Valueinhex

description

Identifier

1

4

0x04

fixed

Length

Sizeofdatafield

1

1

0x01

fixed

data

Sequencenumber

1

0forONsound

1forOFFsound

2forrechargesound

3forbuttonsound

4forerrorsound

5forcleaningstartsound

6forcleaningendsound

5、整机功率

外部功率:

3.3V,5V,12V1A,12V5A,它与外功率一样都是通用输出的一部分。

Name

size

value

Valueinhex

Description

Identifier

1

8

0x08

Fixed

Length

Sizeofdatafield

1

2

0x02

fixed

Data

Powercontrolflags

2

设置打开外部功率的标记符

0x01外部功率3.3Vch.

0x02外部功率5Vch.

0x04外部功率12V1Ach.

0x08外部功率12V5Ach.

警告:

这个命令是在kobuki的固件上实现的,而不是在驱动软件上。

也可以查看:

GeneralPurposeOutput

6、额外请求

从机器人请求额外的数据,尤其是kobuki的版本信息:

硬件版本,固件版本,和UniqueDeivceIdentifier(UDID),UDID是独一无二的设备,因此可以用来识别多个机器人。

Name

size

value

Valueinhex

description

identifier

1

9

0x09

Fixed

Length

Sizeofdatafield

1

2

0x02

Fixed

data

Requestflags

2

Settheflagstorequestextradata

0x01硬件版本

0x02固件版本

0x08设备ID

也可以查看:

HardwareVersion FirmwareVersion, UniqueDeviceIDentifier(UDID)

7、通用输出

这条命令包含多个对象,它控制LEDs,数字输出和外部功率

Name

size

value

Valueinhex

description

Identifier

1

12

0x0C

Fixed

Length

Sizeofdatafield

1

2

0x02

Fixed

data

数字输出flags

2

Settheflagstosethighonoutputpinsofexpansionport

为设置高压输出插脚的扩展端口,设置如下标识符:

0x0001数字输出ch.0

0x0002数字输出ch.1

0x0004数字输出ch.2

0x0008数字输出ch.3

Settheflagstoturnonenternalpowers

打来外部功率时,设置如下标识符:

0x0010外部功率3.3Vch.

0x0020外部功率5Vch.

0x0040外部功率12V1Ach.

0x0080外部功率12V5Ach.

SettheflagstoturnonLEDs

打开LED时,设置如下标识符:

0x0100LED1红色

0x0200LED1绿色

0x0400LED2红色

0x0800LED2绿色

也可以查看:

Setpower

四、反馈包

反馈标识符

机器人启动后,kobuki以50Hz的频率发送以下默认反馈。

ID

Name

description

availability

1

Basicsensordata

(传感器数据)

Basiccoresensordata

(基本核心传感器数据)

Bydefault(默认)

2

Reserved

3

DockingIR(对接红外)

Signalfromdockingstation

Bydefault

4

Inertialsensor

(惯性传感器)

Gyrodatabothangleandangularvelocity

(陀螺仪数据:

角度和角速度)

Bydefault

5

Cliff(防跌落)

PSDdatafacingfloor()

Bydefault

6

Current(电流)

Currentofwheelmotors(轮子电机电流)

Bydefault

7

Reserved

8

Reserved

9

Reserved

10

Hardwareversion

(硬件版本)

Versionnumberofkobukihardware

(kobuki的硬件版本号)

Onrequest(按要求)

11

Firmwareversion

(固件版本)

Versionnumberofkobukifirmware

(kobuki的固件版本号)

Onrequest

12

Reserved

13

Rawdataof3-axisgyro

(3轴陀螺仪原始数据)

RawADCdataofdigital3-axisgyro

(3轴陀螺仪的原始模数转换(ADC)数据)

Bydefault

14

Reserved

15

Reserved

16

Generalpurposeinput

(通用输入)

Inputsfrom25-pinexpansionport

(25针扩展端口输入)

Bydefault

17

Reserved

18

Reserved

19

Uniquedeviceidentifier(UDID)

Uniquenumbertoidentifyrobot

(同过一个唯一的数字来识别或者辨别机器人)

Bydefault(默认值)

20

Reserved

1、基本传感器数据

基本的核心传感器的数据

 

Name

size

value

Valueinhex

description

Feedbackidentifier

(反馈标识符)

1

1

0x01

Fixed

Length

Sizeofdatafield

(数据字段大小)

1

15

0x0F

Fixed

Data

Timestamp

(时间戳/时间标记)

2

内部生成以毫秒为单位的时间戳:

它从0到65535循环

Bumper(减震器)

1

当减震器被碰到时,设置了如下标识符:

0x01:

右侧减震器

0x02:

中心减震器

0x04:

左侧减震器

Wheeldrop

(轮跌落)

1

当车轮掉下时,设置了如下标识符:

0x01:

右车轮

0x02:

左车轮

Cliff(防跌落)

1

当悬崖被检测到时,设置了如下标识符:

0x01:

右侧防跌落传感器

0x02:

中心防跌落传感器

0x04:

左侧防跌落传感器

Leftencoder

(左轮编码器)

2

左,右车轮编码器数据累积,这个值的增加意味着前进的方向,它从0到65535循环。

Rightencoder

(右轮编码器)

2

LeftPWM

(左侧脉宽调制)

1

PWM主要是应用于左右车轮的电机(马达)。

为了正确的表达,这个数据应该被转换为有符号的数据类型。

负号表示方向向后。

RightPWM

(右侧脉宽调制)

1

Button(按钮)

1

当按按钮时,设置如下标识符:

0x01:

按钮0

0x02:

按钮1

0x04:

按钮2

Charge(充电)

1

0:

不充电状态

2:

对接充电状态(charged)

6:

对接充电状态(charging)

18:

适配器充电状态(charged)

22:

适配器充电状态(charging)

Battery(电池)

1

电压0.1V的电池,完全充电时电压16.7V

Overcurrentflags

(过电流标志)

1

检测到过电流时,设置如下标识符:

0x01:

左车轮

0x02:

右车轮

注意:

sub-payload将默认发送。

2、对接红外

信号扩展坞

 

Name

size

value

Valueinhex

description

Identifier

1

3

0x03

Fixed

Length

Sizeofdatafield

(数据段大小)

1

3

0x03

Fixed

data

Rightsignal

1

检测到信号时,设置如下标识符:

0x01:

接近左边

0x02:

接近中心

0x04:

接近右边

0x08:

远离中心

0x010:

远离左边

0x020:

远离右边

Centralsignal

1

Leftsignal

1

Kobuki的对接站,有3个红外发射器,发射红外线灯覆盖了对接站前方的三个区域:

左,中间,右,每一个区域又分为两个子字段:

近和远。

由于将这些信息进行编码,机器人随时都能知道它所处的区域和子字段。

由于区域和子字段能够被独立的识别,所以他们的边界可以是重叠的。

3、惯性传感器数据

惯性传感器数据,只有1轴陀螺仪数据可用。

Name

size

value

Valueinhex

Description

Identifier

1

4

0x04

Fixed

Length

Sizeofdatafield

1

7

0x07

Fixed

Data

Angle(角度)

2

Factorycalibrated(工厂校准)

Anglerate(角速率)

2

Factorycalibrated(工厂校准)

Unused

1

Unused

1

Unused

1

注意:

sub-payload将默认发送。

4、防跌落传感器数据

Sub-payload提供了PSD的ADC数据,当机器人在路面是行走过程中遇到台阶或者地面存在高度差时。

这个值与传感器和地面之间的距离有关。

可以查看数据表获得更加详细的信息。

这个值也可以用于基本传感器数据方面的clifffield,kobuki以布尔类型进行处理。

Name

size

value

Valueinhex

Description

identifier

1

5

0x05

Fixed

Length

Sizeofdatafield

1

6

0x05

Fixed

Data

Rightcliffsensor

(右侧防跌落传感器)

2

每个PSD的ADC输出:

数据范围:

0-4095

距离范囲:

2-15m

距离是非线性的。

Centralcliffsensor

(中间防跌落传感器)

2

Leftcliffsensor

(左侧防跌落传感器)

2

注意:

sub-payload将默认发送。

也可以查看:

basicsensordata

5、电流

利用电流传感器读取车轮电机的电流

Name

size

value

Valueinhex

description

Identifier

1

6

0x06

Fixed

Length

Sizeofdatafield

1

2

0x02

Fixed

data

Leftmotor

2

10mA

Rightmotor

2

10mA

注意:

sub-payload将按请求发送

6、硬件版本

硬件版本信息是一种三联体形式的:

..

name

size

value

Valueinhex

Description

Identifier

1

10

0x0A

Fixed

Length

Sizeofdatafield

1

4

0x04

Fixed

data

Patch

1

Minor

1

Major

1

unused

1

0

0x00

fixed

注意:

sub-payload将发送请求。

也可以查看:

requestextra

7、固件版本

固件版本信息是一种三联体形式的:

..

name

size

value

Valueinhex

Description

Identifier

1

11

0x0B

Fixed

Length

Sizeofdatafield

1

4

0x04

Fixed

data

Patch

1

Minor

1

Major

1

unused

1

0

0x00

fixed

注意:

sub-payload将按请求发送

也可以查看:

requestextra

8、3d陀螺仪的原始数据

数字3d陀螺仪的原始ADC数据:

L3G4200D

由于采集率和更新率的差异,将得到2-3数据。

Digittodeg/sratiois0.00875,itcomesfromdatasheetof3dgyro.

数度比是0.00875,它来自3D陀螺仪的数据表。

name

size

value

Valueinhex

description

Identifier

1

13

0x0D

Fixed

Length

Sizeofdatafield

1

2+6N

Data

Frameid(帧标识符)

1

每个传感器读数可以通过帧标识符识别,它从0到255循环。

Followeddatalength

1

3N

Rawgyrodata0

(陀螺仪原始数据0)

x-axis

2

ADC输出每个轴的速率是0.00875度/s.

y-axis

2

z-axis

2

RawgyrodataN-1(陀螺仪原始数据N-1)

x-axis

2

y-axis

2

z-axis

2

注意:

sub-payload将默认发送。

警告:

3D陀螺仪传感器与机器人不匹配,z轴逆时针旋转90度,下面是转换关系:

constdoubledigit_to_dps=0.00875;

angular_velocity.x=-digit_to_dps*(short)raw_gyro_data.y;

angular_velocity.y=digit_to_dps*(short)raw_gyro_data.x;

angular_velocity.z=digit_to_dps*(short)raw_gyro_data.z;

9、通用输入

Name

size

value

Valueinhex

Description

Identifier

1

16

0x10

Fixed

length

Sizeofdatafield

1

16

0x10

Fixed

data

Digitalinput

数字输入

2

高电压

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1