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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

9、0x01fixeddataSequence 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 hexDescriptionIdentifier180x08FixedLengthSize of data field120x

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

11、escriptionidentifier190x09FixedLengthSize of data field120x02FixeddataRequest flags2Set the flags to request extra data0x01 硬件版本0x02 固件版本0x08 設(shè)備ID也可以查看:Hardware Version Firmware Version, Unique Device IDentifier(UDID)7、通用輸出這條命令包含多個(gè)對(duì)象,它控制LEDs,數(shù)字輸出和外部功率NamesizevalueValue in hexdescriptionIde

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

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

14、served3Docking IR(對(duì)接紅外)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 default7Reserved8Reserved9Reserved10Hardware version (硬件版本)

15、Version number of kobuki hardware(kobuki的硬件版本號(hào))On request(按要求)11Firmware version (固件版本)Version number of kobuki firmware(kobuki的固件版本號(hào))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 default14Reserved15Reserved16General purpose input(

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

17、field(數(shù)據(jù)字段大小)1150x0FFixedDataTimestamp(時(shí)間戳/時(shí)間標(biāo)記)2內(nèi)部生成以毫秒為單位的時(shí)間戳:它從0到65535循環(huán)Bumper(減震器)1當(dāng)減震器被碰到時(shí),設(shè)置了如下標(biāo)識(shí)符:0x01:右側(cè)減震器0x02:中心減震器0x04:左側(cè)減震器Wheel drop(輪跌落)1當(dāng)車輪掉下時(shí),設(shè)置了如下標(biāo)識(shí)符:0x01:右車輪0x02:左車輪Cliff(防跌落)1當(dāng)懸崖被檢測(cè)到時(shí),設(shè)置了如下標(biāo)識(shí)符:0x01:右側(cè)防跌落傳感器0x02:中心防跌落傳感器0x04:左側(cè)防跌落傳感器Left encoder(左輪編碼器)2左,右車輪編碼器數(shù)據(jù)累積,這個(gè)值的增加意味著前進(jìn)的方向,它

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

19、ver current flags(過電流標(biāo)志)1檢測(cè)到過電流時(shí),設(shè)置如下標(biāo)識(shí)符:0x01:左車輪0x02:右車輪注意:sub-payload將默認(rèn)發(fā)送。2、對(duì)接紅外信號(hào)擴(kuò)展塢NamesizevalueValue in hexdescriptionIdentifier130x03FixedLengthSize of data field(數(shù)據(jù)段大小)130x03FixeddataRight signal1檢測(cè)到信號(hào)時(shí),設(shè)置如下標(biāo)識(shí)符:0x01:接近左邊0x02:接近中心0x04:接近右邊0x08:遠(yuǎn)離中心0x010:遠(yuǎn)離左邊0x020:遠(yuǎn)離右邊Central signal1Left signa

20、l1Kobuki的對(duì)接站,有3個(gè)紅外發(fā)射器,發(fā)射紅外線燈覆蓋了對(duì)接站前方的三個(gè)區(qū)域:左,中間,右,每一個(gè)區(qū)域又分為兩個(gè)子字段:近和遠(yuǎn)。由于將這些信息進(jìn)行編碼,機(jī)器人隨時(shí)都能知道它所處的區(qū)域和子字段。由于區(qū)域和子字段能夠被獨(dú)立的識(shí)別,所以他們的邊界可以是重疊的。3、慣性傳感器數(shù)據(jù)慣性傳感器數(shù)據(jù),只有1軸陀螺儀數(shù)據(jù)可用。NamesizevalueValue in hexDescriptionIdentifier140x04FixedLengthSize of data field170x07FixedDataAngle(角度)2Factory calibrated(工廠校準(zhǔn))Angle rate(

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

22、FixedDataRight cliff sensor(右側(cè)防跌落傳感器)2每個(gè)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 hexdescriptionIdentifier160x06FixedLengthSize of data field120x02FixeddataLef

23、t motor210mARight motor210mA注意:sub-payload將按請(qǐng)求發(fā)送6、硬件版本硬件版本信息是一種三聯(lián)體形式的:<major>.<minor>.<patch>namesizevalueValue in hexDescriptionIdentifier1100x0AFixedLengthSize of data field140x04FixeddataPatch1Minor1Major1unused100x00fixed注意:sub-payload將發(fā)送請(qǐng)求。也可以查看:request extra7、固件版本固件版本信息是一種三聯(lián)體

24、形式的:<major>.<minor>.<patch>namesizevalueValue in hexDescriptionIdentifier1110x0BFixedLengthSize of data field140x04FixeddataPatch1Minor1Major1unused100x00fixed注意:sub-payload將按請(qǐng)求發(fā)送也可以查看:request extra8、3d陀螺儀的原始數(shù)據(jù)數(shù)字3d陀螺儀的原始ADC數(shù)據(jù):L3G4200D由于采集率和更新率的差異,將得到2-3數(shù)據(jù)。Digit to deg/s ratio is 0.

25、00875,it comes from datasheet of 3d gyro.數(shù)度比是0.00875,它來自3D陀螺儀的數(shù)據(jù)表。namesizevalueValue in hexdescriptionIdentifier1130x0DFixedLengthSize of data field12+6NDataFrame id (幀標(biāo)識(shí)符)1每個(gè)傳感器讀數(shù)可以通過幀標(biāo)識(shí)符識(shí)別,它從0到255循環(huán)。Followed data length13NRaw gyro data 0(陀螺儀原始數(shù)據(jù)0)x-axis2ADC輸出每個(gè)軸的速率是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軸逆時(shí)針旋轉(zhuǎn)90度,下面是轉(zhuǎn)換關(guān)系:const double digit_to_dps = 0.00

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論