《kobuki通信协议 .docx》由会员分享,可在线阅读,更多相关《kobuki通信协议 .docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结附录:协议说明综述Kobuki 驱动程序与机器人通过预先设定好的协议进行通信。通常,驱动会发送指令给机器人, 并且得到机器人的反馈数据或传感器消息。这些命令和反馈数据被转换为bytestream通过串口通信。通信协议规定了bytestream 的规章和形式。一、流组成1、headerHeader 包括两个字节, header0 和 header1 ,它们是 kobuki驱动命令和机器人反馈数据bytestream 的固定值。 Headers 用来检测 bytestream 的开头,相当于起始位。2、lengthLength 表示一个 bytestream中所包含的有效信息的长度
2、。Length 占一个字节,它可以用来区分不同的 bytestream ,最小值为 3。3、payloadPayload 中包涵了 bytestream的中的实际数据即有效信息。Checksum 是整个 bytestream的完整性。下面是它的一段代码:中出来 headers 外的异或值。Checksum 过程确保了bytestreamunsignedintpacket_sizebuffer.size;unsignedcharcs0;forunsignedinti = 2; i packet_size; i+cs = bufferi;returncs .false:true;5、完整的 byt
3、estreamHeadersLengthPayloadHeader0Header1Sub-payload0Sub-payload1Sub-payload2Sub-payloadN-1Checksum一个 bytestream 可以分为四个部分: headers, length , payload 和 checksum。名字Header0Header1LengthPayloadChecksum大小说明1 字节0xAA1 字节0x551 字节有效信息的字节数N 字节有效信息1 字节3.1payloadPayload 有一些 sub-payload 组成。PayloadSub-payload 0Su
4、b-payload 1Sub-payload 2Sub-payload N-13.2sub-payload 组成sub-payload 可以分为三部分: header , length 和 data.名字HeaderLengthData大小1 字节1 字节N 字节说明预定义的标识符Data 的字节位数下面描述4、checksum以上表格显示了整个bytestream结构。Payload的最小长度为3 ,payload中包含 sub-payload ,它的长度为1.理论上这个数据包 bytestream 的最小长度为 7.可编辑资料 - - - 欢迎下载精品名师归纳总结二、数据类型Sub-pay
5、load 的数据字段是下面三种数据类型的混合:byte , int 和 short 。名字说明字节长度位长数据范畴C/C+标识符Unsignedbyte8 位无符号整型180-255Unsigned charUint8_t16 位无符号整型2160-65535Unsigned shortUint16_t32 位无符号整型4320-4294967295Unsigned intUint32_tUnsigned short Unsigned int1、序列化反序列化序列化是将数据结构转化为bytestream的过程,反序列化是一个逆转过程。每个数据类型都通过 LSB -First order序列化和
6、反序列化。这就意味着有效字节中的最低位将最先进入bytestream。例如,整形数据2,864,434,3970xAABBCCDD序列化后是:0xDD所以, 0xDD 是最先进入0xCCbytestream 的。0xBB0xAA这里有 kobuki_driver 的模板函数来解决这个问题,buildVariable 和 buildBytes.三、命令包1、命令标识符IDNamedescription1Base control 底盘把握Control wheel motors 把握轮子电机2Reserved3Sound声音Play custom sounds播放定制声音4Sound sequen
7、ce声音序列Play predefined sounds 播放预定义声音 5Reserved6Reserved7Reserved8Set power 整机功率Control external Powers 把握外部功率9Request extra 额外请求Request extra informations请求额外信息10Reserved11Reserved12General purpose output通用输出Control general purpose output 把握通用输出2、底盘把握通过把握轮子的电机来移动机器人。机器人将按弧线行进,半径mm速度mm/sNamesize数值十六进
8、制数值说明Identifier110x01固定Length数据字段大小140x04固定速度2单位mm/sData半径2单位mm3、声音通过音符 note 和音长 duration 播放自定义声音Namesize数值十六进制数值说明Identifier130x03fixed固定LengthSize of data field130x03fixed固定note2数据duration1播放音符的音长按毫秒计警告:这个命令是在kobuki 的固件上实现的,而不是在驱动软件上。4、声音序列按以下说明播放预先定义的声音可编辑资料 - - - 欢迎下载精品名师归纳总结NamesizevalueValue i
9、n hexdescriptionIdentifier140x04fixedLengthSize of data field110x01fixed0 for ON sound 1 for OFF sound2 for recharge sounddataSequence number13 for button sound 4 for error sound5 for cleaning start sound6 for cleaning end sound5、整机功率外部功率: 3.3V , 5V , 12V1A, 12V5A,它与外功率一样都是通用输出的一部分。NamesizevalueValu
10、e in hexDescriptionIdentifier180x08FixedLengthSize of data field120x02fixed可编辑资料 - - - 欢迎下载精品名师归纳总结DataPower control flags2设置打开外部功率的标记符0x01 外部功率 3.3V ch.0x02 外部功率 5V ch.0x04 外部功率 12V1A ch.0x08 外部功率 12V5A ch.可编辑资料 - - - 欢迎下载精品名师归纳总结警告:这个命令是在kobuki 的固件上实现的,而不是在驱动软件上。也可以查看: General Purpose Output6、额外请求
11、从机器人请求额外的数据, 特殊是 kobuki 的版本信息: 硬件版本, 固件版本, 和 Unique Deivce IdentifierUDID,UDID 是独一无二的设备,因此可以用来识别多个机器人。NamesizevalueValue in hexdescriptionidentifier190x09FixedLengthSize of data field120x02Fixed可编辑资料 - - - 欢迎下载精品名师归纳总结dataRequest flags2Set the flags to request extra data 0x01 硬件版本0x02 固件版本0x08 设备 ID
12、可编辑资料 - - - 欢迎下载精品名师归纳总结也可以 查看 :HardwareVersion FirmwareVersion, UniqueDevice IDentifierUDID7、通用输出这条命令包含多个对象,它把握LEDs,数字输出和外部功率NamesizevalueValue in hexdescription Identifier1120x0CFixedLengthSize of data field120x02FixedSet the flags to set high on output pins of expansion port为设置高压输出插脚的扩展端口,设置如下标识符
13、:0x0001 数字输出 ch.00x0002 数字输出 ch.10x0004 数字输出 ch.2可编辑资料 - - - 欢迎下载精品名师归纳总结data数字输出 flags20x0008 数字输出 ch.3Set 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可编辑资料 - - - 欢迎下载精品名师归纳总结打开 L
14、ED时,设置如下标识符:0x0100LED1 红色0x0200LED1 绿色0x0400LED2 红色0x0800LED2 绿色也可以查看: Set power四、反馈包反馈标识符机器人启动后,ID1Namekobuki 以 50Hz 的频率发送以下默认反馈。description11Basic sensor data 传感器数据 ReservedDocking IR对接红外Inertial sensor 惯性传感器 Cliff 防跌落 Current 电流 ReservedReserved Reserved Hardware version 硬件版本 Firmware version固件版本
15、ReservedRaw data of 3-axis gyro 3 轴陀螺仪原始数据 ReservedReservedGeneral purpose input通用输入Reserved ReservedBasic core sensor data基本核心传感器数据availabilityBy default 默认234Signal from docking stationGyro data both angle and angular velocityBy defaultBy default陀螺仪数据:角度和角速度PSD data facing floor5678910Current of w
16、heel motors轮子电机电流By defaultBy defaultVersion number of kobuki hardwarekobuki 的硬件版本号Version number of kobuki firmwarekobuki 的固件版本号On request 按要求On request1213Raw ADC data of digital 3-axis gyroBy default3 轴陀螺仪的原始模数转换ADC数据141516Inputs from 25-pin expansion port25 针扩展端口输入By default171819Uniquedeviceide
17、ntifierUnique number to identify robot同过一个唯独的数字来识别或者区分机器人By default 默认值20UDIDReserved1、基本传感器数据基本的核心传感器的数据可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结LengthNamesizevalueValue in hexdescriptionFeedback identifier1反馈标识符 10x01FixedSize of data field1150x0FFixedTimestamp内部生成以毫秒为单位的时间戳:它从0 到时间戳 / 时间标记
18、265535 循环当减震器被遇到时,设置了如下标识符:Bumper 减震器 10x01:右侧减震器0x02:中心减震器0x04:左侧减震器Wheel drop当车轮掉下时,设置了如下标识符:轮跌落10x01:右车轮0x02:左车轮当悬崖被检测到时,设置了如下标识符:Cliff防跌落10x01:右侧防跌落传感器0x02:中心防跌落传感器0x04:左侧防跌落传感器数据字段大小可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结DataLeft encoder2左轮编码器Right encoder2右轮编码器Left PWM左,右车轮编码器数据累积, 这个
19、值的增加意味着前进的方向,它从0 到 65535 循环。可编辑资料 - - - 欢迎下载精品名师归纳总结左侧脉宽调制1PWM 主要是应用于左右车轮的电机马达。为了正确的表达, 这个数据应当被转换为有符可编辑资料 - - - 欢迎下载精品名师归纳总结Right PWM1右侧脉宽调制Button 按钮1Charge充电1号的数据类型。负号表示方向向后。当按按钮时,设置如下标识符:0x01:按钮 00x02:按钮 10x04:按钮 20:不充电状态 2:对接充电状态 charged6:对接充电状态 charging18:适配器充电状态 charged22:适配器充电状态 charging可编辑资料
20、- - - 欢迎下载精品名师归纳总结Battery 电池1电压 0.1V 的电池,完全充电时电压16.7V检测到过电流时,设置如下标识符:可编辑资料 - - - 欢迎下载精品名师归纳总结Over current flags1过电流标志留意: sub-payload 将默认发送。2、对接红外信号扩展坞0x01:左车轮0x02:右车轮可编辑资料 - - - 欢迎下载精品名师归纳总结NamesizevalueValue in hexdescriptionIdentifier130x03Fixed可编辑资料 - - - 欢迎下载精品名师归纳总结LengthSize of data field 数据段大
21、小 130x03Fixed检测到信号时,设置如下标识符:可编辑资料 - - - 欢迎下载精品名师归纳总结dataRight signal1Central signal1Left signal10x01:接近左边0x02:接近中心0x04:接近右边0x08:远离中心0x010:远离左边0x020:远离右边可编辑资料 - - - 欢迎下载精品名师归纳总结Kobuki 的对接站, 有 3 个红外发射器, 发射红外线灯掩盖了对接站前方的三个区域:左, 中间,右,每一个区域又分为两个子字段:近和远。由于将这些信息进行编码,机器人随时都能知道它所处的区域和子字段。由于区域和子字段能够被独立的识别,所以他们
22、的边界可以是重叠的。3、惯性传感器数据惯性传感器数据,只有1 轴陀螺仪数据可用。NamesizevalueValue in hexDescriptionIdentifier140x04FixedLengthSize of data field170x07FixedAngle角度2Factory calibrated 工厂校准 Angle rate 角速率2Factory calibrated 工厂校准 DataUnused1Unused1Unused1留意: sub-payload 将默认发送。4、防跌落传感器数据Sub-payload 供应了 PSD的 ADC 数据,当机器人在路面是行走过程
23、中遇到台阶或者的面存在高度差时。这个值与传感器和的面之间的距离有关。可以查看数据表获得更加详细的信息。这个值也可以用于基本传感器数据方面的cliff field , kobuki 以布尔类型进行处理。可编辑资料 - - - 欢迎下载精品名师归纳总结NamesizevalueValue in hexDescriptionidentifier150x05FixedLengthSize of data field160x05Fixed可编辑资料 - - - 欢迎下载精品名师归纳总结DataRight cliff sensor2右侧防跌落传感器Central cliff sensor2中间防跌落传感器
24、Left cliff sensor2左侧防跌落传感器每个 PSD的 ADC输出: 数据范畴: 0-4095距离范囲: 2-15m距离是非线性的。可编辑资料 - - - 欢迎下载精品名师归纳总结留意: sub-payload 将默认发送。也可以查看: basic sensor data 5、电流NamesizevalueValue in hexdescriptionIdentifier160x06FixedSize of dataLength120x02FixedfieldLeft motor210mARight motor210mA利用电流传感器读取车轮电机的电流data留意: sub-pay
25、load 将按请求发送6、硬件版本namesizevalueValue in hexDescriptionIdentifier1100x0AFixedSize of data field140x04FixedPatch1Minor1Major1unused100x00fixed硬件版本信息是一种三联体形式的:.Lengthdata留意: sub-payload 将发送请求。也可以查看: request extra7、固件版本namesizevalueValue in hexDescriptionIdentifier1110x0BFixedSize of data field140x04Fixe
26、dPatch1Minor1Major1unused100x00fixed固件版本信息是一种三联体形式的:.Lengthdata留意: sub-payload 将按请求发送也可以查看: request extra8、3d 陀螺仪的原始数据可编辑资料 - - - 欢迎下载精品名师归纳总结数字 3d 陀螺仪的原始 ADC数据: L3G4200D由于采集率和更新率的差异,将得到2-3 数据。Digit to deg/s ratio is 0.00875,it comes from datasheet of 3d gyro.数度比是 0.00875 ,它来自 3D 陀螺仪的数据表。namesizeval
27、ueValue in hexdescription Identifier1130x0DFixedLengthSize of data field12+6N可编辑资料 - - - 欢迎下载精品名师归纳总结Frame id 帧标识符1Followed data length13N每个传感器读数可以通过帧标识符识别, 它从 0 到 255 循环。可编辑资料 - - - 欢迎下载精品名师归纳总结DataRaw gyro data 0陀螺仪原始数据 0Raw gyro data N-1陀螺仪原始数据 N-1x-axis2y-axis2z-axis2x-axis2y-axis2z-axis2ADC 输 出
28、 每 个 轴 的 速 率 是0.00875 度/s.可编辑资料 - - - 欢迎下载精品名师归纳总结留意: sub-payload 将默认发送。警告: 3D 陀螺仪传感器与机器人不匹配,z 轴逆时针旋转 90 度,下面是转换关系:constdoubledigit_to_dps = 0.00875; angular_velocity.x = -digit_to_dps * shortraw_gyro_data.y;angular_velocity.y =digit_to_dps * shortraw_gyro_data.x; angular_velocity.z =digit_to_dps *
29、shortraw_gyro_data.z;可编辑资料 - - - 欢迎下载精品名师归纳总结9、通用输入NamesizevalueValue in hexDescription Identifier1160x10Fixed可编辑资料 - - - 欢迎下载精品名师归纳总结lengthSize of data field1160x10Fixed高电压时,设置如下标识符:0x01:数字输入 ch.0可编辑资料 - - - 欢迎下载精品名师归纳总结dataDigital input2数字输入Analog input ch.02模拟输入 ch.0Analog input ch.12模拟输入 ch.1Ana
30、log input ch.22模拟输入 ch.2Analog input ch.32模拟输入 ch.30x02: 数字输入 ch.10x04: 数字输入 ch.20x08: 数字输入 ch.3每个通道 12 位 ADC 输出: 数据范畴: 0-4095 212-1转换电压范畴: 0-3.3V可编辑资料 - - - 欢迎下载精品名师归纳总结unused2可编辑资料 - - - 欢迎下载精品名师归纳总结namesizevalueValue in hexDescriptionIdentifier1190x13Fixedunused2unused2留意: sub-payload 将默认发送。10、Unique Device IdentifierUDID设备识别码包涵了机器人特殊的识别码。这个数值对于世界上的全部机器人来讲,都是唯独存在的。 它可以由三联体形式表示:.lengthSize of data field UDID0 UDID1UDID21120x0Cfixeddata444留意: sub-payload 将按请求发送也可以查看: request extra可编辑资料 - - - 欢迎下载