kobuki通信協(xié)議范本_第1頁
kobuki通信協(xié)議范本_第2頁
kobuki通信協(xié)議范本_第3頁
kobuki通信協(xié)議范本_第4頁
kobuki通信協(xié)議范本_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、PAGE10PAGE10附錄:協(xié)議說明綜述Kobuki驅(qū)動程序與機(jī)器人通過預(yù)先設(shè)定好的協(xié)議進(jìn)行通信。通常,驅(qū)動會發(fā)送指令給機(jī)器人,并且得到機(jī)器人的反饋數(shù)據(jù)或傳感器消息。這些命令和反饋數(shù)據(jù)被轉(zhuǎn)換為bytestream通過串口通信。通信協(xié)議規(guī)定了bytestream的規(guī)則和形式。一、流組成一個bytestream可以分為四個部分:headers,length,payload和checksum。名字Header0Header1LengthPayloadChecksum大小1字節(jié)1字節(jié)1字節(jié)N字節(jié)1字節(jié)說明0 xAA0 x55有效信息的字節(jié)數(shù)有效信息1、headerHeader包括兩個字節(jié),heade

2、r0和header1,它們是kobuki驅(qū)動命令和機(jī)器人反饋數(shù)據(jù)bytestream的固定值。Headers用來檢測bytestream的開始,相當(dāng)于起始位。2、lengthLength表示一個bytestream中所包含的有效信息的長度。Length占一個字節(jié),它可以用來區(qū)別不同的bytestream,最小值為3。3、payloadPayload中包涵了bytestream的中的實際數(shù)據(jù)即有效信息。3.1 payloadPayload有一些sub-payload組成。PayloadSub-payload 0Sub-payload 1Sub-payload 2Sub-payload N-1 3

3、.2 sub-payload組成sub-payload可以分為三部分:header,length和data.名字HeaderLengthData大小1字節(jié)1字節(jié)N字節(jié)說明預(yù)定義的標(biāo)識符Data的字節(jié)位數(shù)下面描述4、checksumChecksum是整個bytestream中出來headers外的異或值。Checksum過程確保了bytestream的完整性。下面是它的一段代碼:unsigned int packet_size(buffer.size();unsigned char cs(0);for (unsigned int i = 2; i packet_size; i+) cs = bu

4、fferi;return cs false : true;5、完整的bytestreamHeadersLengthPayloadChecksumHeader0Header1Sub-payload0Sub-payload1Sub-payload2Sub-payload N-1以上表格顯示了整個bytestream結(jié)構(gòu)。Payload的最小長度為3,payload中包含sub-payload,它的長度為1.理論上這個數(shù)據(jù)包(bytestream)的最小長度為7.二、數(shù)據(jù)類型Sub-payload的數(shù)據(jù)字段是下面三種數(shù)據(jù)類型的混合:byte,int和short。名字說明字節(jié)長度位長數(shù)據(jù)范圍C/C+標(biāo)

5、識符Unsigned byte8位無符號整型180-255Unsigned charUint8_tUnsigned short16位無符號整型2160-65535Unsigned shortUint16_tUnsigned int32位無符號整型4320-4294967295Unsigned intUint32_t1、序列化反序列化序列化是將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為bytestream的過程,反序列化是一個逆轉(zhuǎn)過程。每個數(shù)據(jù)類型都通過LSB-Firstorder序列化和反序列化。這就意味著有效字節(jié)中的最低位將最先進(jìn)入bytestream。例如,整形數(shù)據(jù)2,864,434,397(0 xAABBCCDD)

6、序列化后是:0 xDD0 xCC0 xBB0 xAA所以,0 xDD是最先進(jìn)入bytestream的。這里有kobuki_driver的模板函數(shù)來解決這個問題,buildVariable()和buildBytes().三、命令包1、命令標(biāo)識符IDNamedescription1Base control (底盤控制)Control wheel motors(控制輪子電機(jī))2Reserved3Sound(聲音)Play custom sounds(播放定制聲音)4Sound sequence(聲音序列)Play predefined sounds (播放預(yù)定義聲音)5Reserved6Reserv

7、ed7Reserved8Set power (整機(jī)功率)Control external Powers (控制外部功率)9Request extra (額外請求)Request extra informations (請求額外信息)10Reserved11Reserved12General purpose output (通用輸出)Control general purpose output(控制通用輸出)2、底盤控制通過控制輪子的電機(jī)來移動機(jī)器人。機(jī)器人將按弧線行進(jìn),半徑 mm 速度 mm/sNamesize數(shù)值十六進(jìn)制數(shù)值說明Identifier110 x01固定Length數(shù)據(jù)字段大小1

8、40 x04固定Data速度2單位 mm/s半徑2單位 mm3、聲音通過音符(note)和音長(duration)播放自定義聲音Namesize數(shù)值十六進(jìn)制數(shù)值說明Identifier130 x03fixed(固定)LengthSize of data field130 x03fixed(固定)數(shù)據(jù)note2duration1播放音符的音長按毫秒計警告:這個命令是在kobuki的固件上實現(xiàn)的,而不是在驅(qū)動軟件上。4、聲音序列按以下說明播放預(yù)先定義的聲音NamesizevalueValue in hexdescriptionIdentifier140 x04fixedLengthSize of

9、data field110 x01fixeddataSequence number10 for ON sound1 for OFF sound2 for recharge sound3 for button sound4 for error sound5 for cleaning start sound6 for cleaning end sound5、整機(jī)功率外部功率:3.3V, 5V, 12V1A, 12V5A,它與外功率一樣都是通用輸出的一部分。NamesizevalueValue in hexDescriptionIdentifier180 x08FixedLengthSize of

10、data field120 x02fixedDataPower control flags2設(shè)置打開外部功率的標(biāo)記符0 x01 外部功率 3.3V ch.0 x02 外部功率5V ch.0 x04 外部功率12V1A ch.0 x08外部功率12V5A ch.警告:這個命令是在kobuki的固件上實現(xiàn)的,而不是在驅(qū)動軟件上。也可以查看:General Purpose Output6、額外請求從機(jī)器人請求額外的數(shù)據(jù),尤其是kobuki的版本信息:硬件版本,固件版本,和Unique Deivce Identifier(UDID),UDID是獨一無二的設(shè)備,因此可以用來識別多個機(jī)器人。Namesiz

11、evalueValue in hexdescriptionidentifier190 x09FixedLengthSize of data field120 x02FixeddataRequest flags2Set the flags to request extra data0 x01 硬件版本0 x02 固件版本0 x08 設(shè)備ID也可以查看:Hardware VersionFirmware Version,Unique Device IDentifier(UDID)7、通用輸出這條命令包含多個對象,它控制LEDs,數(shù)字輸出和外部功率NamesizevalueValue in hexde

12、scriptionIdentifier1120 x0CFixedLengthSize of data field120 x02Fixeddata數(shù)字輸出flags2Set the flags to set high on output pins of expansion port為設(shè)置高壓輸出插腳的擴(kuò)展端口,設(shè)置如下標(biāo)識符:0 x0001 數(shù)字輸出ch.00 x0002 數(shù)字輸出ch.10 x0004 數(shù)字輸出ch.20 x0008 數(shù)字輸出ch.3Set the flags to turn on enternal powers打來外部功率時,設(shè)置如下標(biāo)識符:0 x0010 外部功率3.3V

13、ch.0 x0020 外部功率5V ch.0 x0040 外部功率12V1A ch.0 x0080 外部功率12V5A ch.Set the flags to turn on LEDs打開LED時,設(shè)置如下標(biāo)識符:0 x0100 LED1 紅色0 x0200 LED1 綠色0 x0400 LED2 紅色0 x0800 LED2 綠色也可以查看:Set power四、反饋包反饋標(biāo)識符機(jī)器人啟動后,kobuki以50Hz的頻率發(fā)送以下默認(rèn)反饋。IDNamedescriptionavailability1Basic sensor data(傳感器數(shù)據(jù))Basic core sensor data(基

14、本核心傳感器數(shù)據(jù))By default(默認(rèn))2Reserved3Docking IR(對接紅外)Signal from docking stationBy default4Inertial sensor (慣性傳感器)Gyro data both angle and angular velocity(陀螺儀數(shù)據(jù):角度和角速度)By default5Cliff (防跌落)PSD data facing floor()By default6Current(電流)Current of wheel motors (輪子電機(jī)電流)By default7Reserved8Reserved9Reserve

15、d10Hardware version (硬件版本)Version number of kobuki hardware(kobuki的硬件版本號)On request(按要求)11Firmware version (固件版本)Version number of kobuki firmware(kobuki的固件版本號)On request12Reserved13Raw data of 3-axis gyro(3軸陀螺儀原始數(shù)據(jù))Raw ADC data of digital 3-axis gyro(3軸陀螺儀的原始模數(shù)轉(zhuǎn)換(ADC)數(shù)據(jù))By default14Reserved15Reserv

16、ed16General purpose input(通用輸入)Inputs from 25-pin expansion port(25針擴(kuò)展端口輸入)By default17Reserved18Reserved19Unique device identifier(UDID)Unique number to identify robot(同過一個唯一的數(shù)字來識別或者辨別機(jī)器人)By default(默認(rèn)值)20Reserved1、基本傳感器數(shù)據(jù)基本的核心傳感器的數(shù)據(jù)NamesizevalueValue in hexdescriptionFeedback identifier(反饋標(biāo)識符)110

17、x01FixedLengthSize of data field(數(shù)據(jù)字段大?。?150 x0FFixedDataTimestamp(時間戳/時間標(biāo)記)2內(nèi)部生成以毫秒為單位的時間戳:它從0到65535循環(huán)Bumper(減震器)1當(dāng)減震器被碰到時,設(shè)置了如下標(biāo)識符:0 x01:右側(cè)減震器0 x02:中心減震器0 x04:左側(cè)減震器Wheel drop(輪跌落)1當(dāng)車輪掉下時,設(shè)置了如下標(biāo)識符:0 x01:右車輪0 x02:左車輪Cliff(防跌落)1當(dāng)懸崖被檢測到時,設(shè)置了如下標(biāo)識符:0 x01:右側(cè)防跌落傳感器0 x02:中心防跌落傳感器0 x04:左側(cè)防跌落傳感器Left encoder(

18、左輪編碼器)2左,右車輪編碼器數(shù)據(jù)累積,這個值的增加意味著前進(jìn)的方向,它從0到65535循環(huán)。Right encoder(右輪編碼器)2Left PWM(左側(cè)脈寬調(diào)制)1PWM主要是應(yīng)用于左右車輪的電機(jī)(馬達(dá))。為了正確的表達(dá),這個數(shù)據(jù)應(yīng)該被轉(zhuǎn)換為有符號的數(shù)據(jù)類型。負(fù)號表示方向向后。Right PWM(右側(cè)脈寬調(diào)制)1Button(按鈕)1當(dāng)按按鈕時,設(shè)置如下標(biāo)識符:0 x01:按鈕00 x02:按鈕10 x04:按鈕2Charge(充電)10:不充電狀態(tài)2:對接充電狀態(tài)(charged)6:對接充電狀態(tài)(charging)18:適配器充電狀態(tài)(charged)22:適配器充電狀態(tài)(charg

19、ing)Battery(電池)1電壓0.1V的電池,完全充電時電壓16.7VOver current flags(過電流標(biāo)志)1檢測到過電流時,設(shè)置如下標(biāo)識符:0 x01:左車輪0 x02:右車輪注意:sub-payload將默認(rèn)發(fā)送。2、對接紅外信號擴(kuò)展塢NamesizevalueValue in hexdescriptionIdentifier130 x03FixedLengthSize of data field(數(shù)據(jù)段大小)130 x03FixeddataRight signal1檢測到信號時,設(shè)置如下標(biāo)識符:0 x01:接近左邊0 x02:接近中心0 x04:接近右邊0 x08:遠(yuǎn)離

20、中心0 x010:遠(yuǎn)離左邊0 x020:遠(yuǎn)離右邊Central signal1Left signal1Kobuki的對接站,有3個紅外發(fā)射器,發(fā)射紅外線燈覆蓋了對接站前方的三個區(qū)域:左,中間,右,每一個區(qū)域又分為兩個子字段:近和遠(yuǎn)。由于將這些信息進(jìn)行編碼,機(jī)器人隨時都能知道它所處的區(qū)域和子字段。由于區(qū)域和子字段能夠被獨立的識別,所以他們的邊界可以是重疊的。3、慣性傳感器數(shù)據(jù)慣性傳感器數(shù)據(jù),只有1軸陀螺儀數(shù)據(jù)可用。NamesizevalueValue in hexDescriptionIdentifier140 x04FixedLengthSize of data field170 x07Fix

21、edDataAngle(角度)2Factory calibrated(工廠校準(zhǔn))Angle rate(角速率)2Factory calibrated(工廠校準(zhǔn))Unused1Unused1Unused1注意:sub-payload將默認(rèn)發(fā)送。4、防跌落傳感器數(shù)據(jù)Sub-payload提供了PSD的ADC數(shù)據(jù),當(dāng)機(jī)器人在路面是行走過程中遇到臺階或者地面存在高度差時。這個值與傳感器和地面之間的距離有關(guān)。可以查看數(shù)據(jù)表獲得更加詳細(xì)的信息。這個值也可以用于基本傳感器數(shù)據(jù)方面的cliff field,kobuki以布爾類型進(jìn)行處理。NamesizevalueValue in hexDescription

22、identifier150 x05FixedLengthSize of data field160 x05FixedDataRight cliff sensor(右側(cè)防跌落傳感器)2每個PSD的ADC輸出:數(shù)據(jù)范圍:0-4095距離范囲:2-15m距離是非線性的。Central cliff sensor(中間防跌落傳感器)2Left cliff sensor(左側(cè)防跌落傳感器)2注意:sub-payload將默認(rèn)發(fā)送。也可以查看:basic sensor data5、電流利用電流傳感器讀取車輪電機(jī)的電流NamesizevalueValue in hexdescriptionIdentifier

23、160 x06FixedLengthSize of data field120 x02FixeddataLeft motor210mARight motor210mA注意:sub-payload將按請求發(fā)送6、硬件版本硬件版本信息是一種三聯(lián)體形式的:.namesizevalueValue in hexDescriptionIdentifier1100 x0AFixedLengthSize of data field140 x04FixeddataPatch1Minor1Major1unused100 x00fixed注意:sub-payload將發(fā)送請求。也可以查看:request extra

24、7、固件版本固件版本信息是一種三聯(lián)體形式的:.namesizevalueValue in hexDescriptionIdentifier1110 x0BFixedLengthSize of data field140 x04FixeddataPatch1Minor1Major1unused100 x00fixed注意:sub-payload將按請求發(fā)送也可以查看:request extra8、3d陀螺儀的原始數(shù)據(jù)數(shù)字3d陀螺儀的原始ADC數(shù)據(jù):L3G4200D由于采集率和更新率的差異,將得到2-3數(shù)據(jù)。Digit to deg/s ratio is 0.00875,it comes from

25、 datasheet of 3d gyro.數(shù)度比是0.00875,它來自3D陀螺儀的數(shù)據(jù)表。namesizevalueValue in hexdescriptionIdentifier1130 x0DFixedLengthSize of data field12+6NDataFrame id (幀標(biāo)識符)1每個傳感器讀數(shù)可以通過幀標(biāo)識符識別,它從0到255循環(huán)。Followed data length13NRaw gyro data 0(陀螺儀原始數(shù)據(jù)0)x-axis2ADC輸出每個軸的速率是0.00875 度/s.y-axis2z-axis2Raw gyro data N-1(陀螺儀原始數(shù)據(jù)N-1)x-axis2y-axis2z-axis2注意:sub-payload將默認(rèn)發(fā)送。警告:3D陀螺儀傳感器與機(jī)器人不匹配,z軸逆時針旋轉(zhuǎn)90度,下面是轉(zhuǎn)換關(guān)系:cons

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論