《2022年kobuki通信协议.docx》由会员分享,可在线阅读,更多相关《2022年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中所包含的有效信息的长度;L
2、ength 占一个字节,它可以用来区分不同的 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、完整的 bytes
3、treamHeadersLengthPayloadHeader0Header1Sub-payload0Sub-payload1Sub-payload2Sub-payloadN-1Checksum一个 bytestream 可以分为四个部分: headers, length , payload 和 checksum;名字Header0Header1LengthPayloadChecksum大小说明1 字节0xAA1 字节0x551 字节有效信息的字节数N 字节有效信息1 字节3.1payloadPayload 有一些 sub-payload 组成;PayloadSub-payload 0Sub-
4、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-payload 的数据字段是下面三种数
5、据类型的混合: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 sequence声音序列Play prede
7、fined sounds 播放预定义声音 5Reserved6Reserved7Reserved8Set power 整机功率Control external Powers 把握外部功率9Request extra 额外请求Request extra informations请求额外信息10Reserved11Reserved12General purpose output通用输出Control general purpose output 把握通用输出2、底盘把握通过把握轮子的电机来移动机器人;机器人将按弧线行进,半径mm速度mm/sNamesize数值十六进制数值说明Identifier1
8、10x01固定Length数据字段大小140x04固定速度2单位mm/sData半径2单位mm3、声音通过音符 note 和音长 duration 播放自定义声音Namesize数值十六进制数值说明Identifier130x03fixed固定LengthSize of data field130x03fixed固定note2数据duration1播放音符的音长按毫秒计警告:这个命令是在kobuki 的固件上实现的,而不是在驱动软件上;4、声音序列按以下说明播放预先定义的声音欢迎下载精品学习资源NamesizevalueValue in hexdescriptionIdentifier140x
9、04fixedLengthSize 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,它与外功率一样都是通用输出的一部分;NamesizevalueValue in hexDescriptionIdentifier1
10、80x08FixedLengthSize of data field120x02fixed欢迎下载精品学习资源DataPower control flags2设置打开外部功率的标记符0x01 外部功率 3.3V ch.0x02 外部功率 5V ch.0x04 外部功率 12V1A ch.0x08 外部功率 12V5A ch.欢迎下载精品学习资源警告:这个命令是在kobuki 的固件上实现的,而不是在驱动软件上;也可以查看: General Purpose Output6、额外请求从机器人请求额外的数据, 特殊是 kobuki 的版本信息: 硬件版本, 固件版本, 和 Unique Deivce
11、 IdentifierUDID,UDID 是独一无二的设备,因此可以用来识别多个机器人;NamesizevalueValue in hexdescriptionidentifier190x09FixedLengthSize of data field120x02Fixed欢迎下载精品学习资源dataRequest flags2Set the flags to request extra data 0x01 硬件版本0x02 固件版本0x08 设备 ID欢迎下载精品学习资源也可以 查看 :HardwareVersion FirmwareVersion, UniqueDevice IDentifi
12、erUDID7、通用输出这条命令包含多个对象,它把握LEDs,数字输出和外部功率NamesizevalueValue in hexdescription Identifier1120x0CFixedLengthSize of data field120x02FixedSet the flags to set high on output pins of expansion port为设置高压输出插脚的扩展端口,设置如下标识符:0x0001 数字输出 ch.00x0002 数字输出 ch.10x0004 数字输出 ch.2欢迎下载精品学习资源data数字输出 flags20x0008 数字输出
13、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欢迎下载精品学习资源打开 LED时,设置如下标识符:0x0100LED1 红色0x0200LED1 绿色0x0400LED2 红色0x0800LED2 绿色也可以查看: Set power四、反馈包反馈标识符机器人启动后,ID1Namekobuki 以 5
14、0Hz 的频率发送以下默认反馈;description11Basic sensor data 传感器数据 ReservedDocking IR对接红外Inertial sensor 惯性传感器 Cliff 防跌落 Current 电流 ReservedReserved Reserved Hardware version 硬件版本 Firmware version固件版本ReservedRaw data of 3-axis gyro 3 轴陀螺仪原始数据 ReservedReservedGeneral purpose input通用输入Reserved ReservedBasic core se
15、nsor data基本核心传感器数据availabilityBy default 默认234Signal from docking stationGyro data both angle and angular velocityBy defaultBy default陀螺仪数据:角度和角速度PSD data facing floor5678910Current of wheel motors轮子电机电流By defaultBy defaultVersion number of kobuki hardwarekobuki 的硬件版本号Version number of kobuki firmwa
16、rekobuki 的固件版本号On request 按要求On request1213Raw ADC data of digital 3-axis gyroBy default3 轴陀螺仪的原始模数转换ADC数据141516Inputs from 25-pin expansion port25 针扩展端口输入By default171819UniquedeviceidentifierUnique number to identify robot同过一个唯独的数字来识别或者区分机器人By default 默认值20UDIDReserved1、基本传感器数据基本的核心传感器的数据欢迎下载精品学习资
17、源欢迎下载精品学习资源LengthNamesizevalueValue in hexdescriptionFeedback identifier1反馈标识符 10x01FixedSize of data field1150x0FFixedTimestamp内部生成以毫秒为单位的时间戳:它从0 到时间戳 / 时间标记265535 循环当减震器被遇到时,设置了如下标识符:Bumper 减震器 10x01:右侧减震器0x02:中心减震器0x04:左侧减震器Wheel drop当车轮掉下时,设置了如下标识符:轮跌落10x01:右车轮0x02:左车轮当悬崖被检测到时,设置了如下标识符:Cliff防跌落1
18、0x01:右侧防跌落传感器0x02:中心防跌落传感器0x04:左侧防跌落传感器数据字段大小欢迎下载精品学习资源欢迎下载精品学习资源DataLeft encoder2左轮编码器Right encoder2右轮编码器Left PWM左,右车轮编码器数据累积, 这个值的增加意味着前进的方向,它从0 到 65535 循环;欢迎下载精品学习资源左侧脉宽调制1PWM 主要是应用于左右车轮的电机马达;为了正确的表达, 这个数据应当被转换为有符欢迎下载精品学习资源Right PWM1右侧脉宽调制Button 按钮1Charge充电1号的数据类型;负号表示方向向后;当按按钮时,设置如下标识符:0x01:按钮 0
19、0x02:按钮 10x04:按钮 20:不充电状态 2:对接充电状态 charged6:对接充电状态 charging18:适配器充电状态 charged22:适配器充电状态 charging欢迎下载精品学习资源Battery 电池1电压 0.1V 的电池,完全充电时电压16.7V检测到过电流时,设置如下标识符:欢迎下载精品学习资源Over current flags1过电流标志留意: sub-payload 将默认发送;2、对接红外信号扩展坞0x01:左车轮0x02:右车轮欢迎下载精品学习资源NamesizevalueValue in hexdescriptionIdentifier130x
20、03Fixed欢迎下载精品学习资源LengthSize of data field 数据段大小 130x03Fixed检测到信号时,设置如下标识符:欢迎下载精品学习资源dataRight signal1Central signal1Left signal10x01:接近左边0x02:接近中心0x04:接近右边0x08:远离中心0x010:远离左边0x020:远离右边欢迎下载精品学习资源Kobuki 的对接站, 有 3 个红外发射器, 发射红外线灯掩盖了对接站前方的三个区域:左, 中间,右,每一个区域又分为两个子字段:近和远;由于将这些信息进行编码,机器人随时都能知道它所处的区域和子字段;由于区
21、域和子字段能够被独立的识别,所以他们的边界可以是重叠的;3、惯性传感器数据惯性传感器数据,只有1 轴陀螺仪数据可用;NamesizevalueValue in hexDescriptionIdentifier140x04FixedLengthSize of data field170x07FixedAngle角度2Factory calibrated 工厂校准 Angle rate 角速率2Factory calibrated 工厂校准 DataUnused1Unused1Unused1留意: sub-payload 将默认发送;4、防跌落传感器数据Sub-payload 供应了 PSD的 A
22、DC 数据,当机器人在路面是行走过程中遇到台阶或者地面存在高度差时;这个值与传感器和地面之间的距离有关;可以查看数据表获得更加详细的信息;这个值也可以用于基本传感器数据方面的cliff field , kobuki 以布尔类型进行处理;欢迎下载精品学习资源NamesizevalueValue in hexDescriptionidentifier150x05FixedLengthSize of data field160x05Fixed欢迎下载精品学习资源DataRight cliff sensor2右侧防跌落传感器Central cliff sensor2中间防跌落传感器Left cliff
23、 sensor2左侧防跌落传感器每个 PSD的 ADC输出: 数据范畴: 0-4095距离范囲: 2-15m距离是非线性的;欢迎下载精品学习资源留意: sub-payload 将默认发送;也可以查看: basic sensor data 5、电流NamesizevalueValue in hexdescriptionIdentifier160x06FixedSize of dataLength120x02FixedfieldLeft motor210mARight motor210mA利用电流传感器读取车轮电机的电流data留意: sub-payload 将按请求发送6、硬件版本namesiz
24、evalueValue in hexDescriptionIdentifier1100x0AFixedSize of data field140x04FixedPatch1Minor1Major1unused100x00fixed硬件版本信息是一种三联体形式的:.Lengthdata留意: sub-payload 将发送请求;也可以查看: request extra7、固件版本namesizevalueValue in hexDescriptionIdentifier1110x0BFixedSize of data field140x04FixedPatch1Minor1Major1unuse
25、d100x00fixed固件版本信息是一种三联体形式的:.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 陀螺仪的数据表;namesizevalueValue in hexdescription Identifier11
26、30x0DFixedLengthSize 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 输 出 每 个 轴 的 速 率 是0.00875 度/s.欢迎下载精品学习资源留意: sub-payload 将默认发送;警告: 3D 陀
27、螺仪传感器与机器人不匹配,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 * shortraw_gyro_data.z;欢迎下载精品学习资源9、通用输入NamesizevalueValue in hexDescription Identi
28、fier1160x10Fixed欢迎下载精品学习资源lengthSize of data field1160x10Fixed高电压时,设置如下标识符:0x01:数字输入 ch.0欢迎下载精品学习资源dataDigital input2数字输入Analog input ch.02模拟输入 ch.0Analog input ch.12模拟输入 ch.1Analog input ch.22模拟输入 ch.2Analog input ch.32模拟输入 ch.30x02: 数字输入 ch.10x04: 数字输入 ch.20x08: 数字输入 ch.3每个通道 12 位 ADC 输出: 数据范畴: 0-
29、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欢迎下载