(西北工業(yè)大學(xué)動(dòng)力與能源學(xué)院航海學(xué)院,陜西 西安 710129)
近幾年,仿生機(jī)器人的研制與發(fā)展十分迅速,在利用機(jī)器人進(jìn)行災(zāi)后廢墟搜救方面,由于地形不規(guī)則為這些環(huán)境共同特點(diǎn),傳統(tǒng)輪式機(jī)器人與履帶機(jī)器人的應(yīng)用受到限制,而新研制的各式仿生機(jī)器人面臨的最大問(wèn)題為體積限制與制作成本,而未來(lái)搜救機(jī)的發(fā)展要求其活動(dòng)自主性、運(yùn)動(dòng)能力,對(duì)外部的感知能力與通信能力在其體積減小、成本減少的條件下能得到提高。
蜘蛛步足3對(duì),分基節(jié)、轉(zhuǎn)節(jié)、腿節(jié)、膝節(jié)、脛節(jié)、后跗節(jié)、跗節(jié)和跗端節(jié)(上具爪),共48個(gè)自由度。這保證了蜘蛛擁有很高的靈活度,這正是小型6足救援機(jī)器人所需要的。當(dāng)然48個(gè)自由度實(shí)現(xiàn)自動(dòng)控制幾乎是不可能完成的任務(wù),所以簡(jiǎn)化了一下設(shè)計(jì),共18個(gè)自由度,同樣可以實(shí)現(xiàn)相對(duì)靈活的行動(dòng),適應(yīng)復(fù)雜地形。關(guān)節(jié)處有舵機(jī)驅(qū)動(dòng),攝像頭位于機(jī)器人前方,機(jī)身兩層夾板之間放置電池。機(jī)身尺寸為半徑20 cm的圓弧,整體高度24 cm,整體設(shè)計(jì)圖如圖1所示。
圖1 6足救援機(jī)器人機(jī)械結(jié)構(gòu)圖
基于多傳感器的6足救援機(jī)器人采用3個(gè)主要電路板,分別為舵機(jī)控制板、主控板(搭載傳感器)和樹莓派,其中樹莓派采用已有商業(yè)化產(chǎn)品,其他部分自行設(shè)計(jì)如下。
舵機(jī)控制板的主控芯片采用STM32F103RBT6芯片作為主控芯片,采用5個(gè)定時(shí)器產(chǎn)生20路PWM波對(duì)舵機(jī)進(jìn)行相應(yīng)的控制接口。采用7.4V電源進(jìn)行給舵機(jī)進(jìn)行供電,芯片的供電則通過(guò)穩(wěn)壓芯片產(chǎn)生3.3 V和5 V的電壓進(jìn)行供電??梢钥闯稣麄€(gè)電路以STM32單片機(jī)作為控制核心,通過(guò)W25Q64儲(chǔ)存相應(yīng)的數(shù)據(jù)包,通過(guò)PWM波對(duì)舵機(jī)進(jìn)行相應(yīng)的控制。
2.2.1 主控板基本電路設(shè)計(jì)
STM32F103C8T6作為主控芯片,STM32F103C8T6擁有128 K字節(jié)的系統(tǒng)內(nèi)可編程Flash,高達(dá)20 K字節(jié)的內(nèi)部SRAM,工作主頻最高為72 MHz。芯片具有足夠多的I/O口能夠滿足傳感器相應(yīng)的需求。包括超聲波模塊,熱釋紅外傳感器模塊,以及GPS模塊。
2.2.2 熱釋紅外傳感器模塊
熱釋紅外傳感器是基于紅外線技術(shù)的能夠感應(yīng)人體的自動(dòng)控制模塊。本文采用HC-SR501型號(hào)的傳感器,其采用德國(guó)原裝進(jìn)口LHI778探頭設(shè)計(jì),靈敏度高、可靠性強(qiáng)、超低電壓工作模式。
此外,還應(yīng)用了菲涅爾光學(xué)系統(tǒng),它不僅要檢測(cè)空間輻射的紅外光線聚焦到傳感器上的量,還要能敏銳地體現(xiàn)這些紅外線能量的變化。菲涅爾光學(xué)系統(tǒng)通過(guò)對(duì)光滑的光學(xué)鏡面作棱狀或柱狀處理,將檢測(cè)空間割裂為一系列交替的狹小紅外“感應(yīng)區(qū)”和“空白區(qū)”,人在其間移動(dòng),就會(huì)使有些“感應(yīng)區(qū)”內(nèi)的紅外線時(shí)有時(shí)無(wú),傳感器接受到的是相應(yīng)變化的光脈沖,從而提高接受靈敏度,使探測(cè)距離提高到10~20 m。
2.2.3 超聲波模塊
在超聲波模塊中,開始給trig一個(gè)大于10 μs的脈沖,使模塊開始工作,同時(shí)開啟定時(shí)器開始計(jì)時(shí),將外部中斷接到echo引腳上,當(dāng)模塊檢測(cè)到回波時(shí)echo被置高電平,這時(shí)外部中斷被觸發(fā),進(jìn)入中斷程序,因此我們可以在中斷程序中將時(shí)間讀出來(lái),有了時(shí)間就可以根據(jù)distance=v×t/2,計(jì)算出距離,距離值就可以用于進(jìn)一步的工作。
2.2.4 GPS模塊
GPS模塊我們采用NEO-6M UBLOX芯片模塊來(lái)實(shí)現(xiàn)。具有靈敏度高、低功耗、小型化的特點(diǎn),其極高精度靈敏度大大擴(kuò)大了其定位的覆蓋面,在普通GPS接受模塊不能定位的地方,都能夠進(jìn)行高精度定位。模塊的靈敏度高、小靜態(tài)飄逸、低功耗以及輕巧的體積,非常適用于機(jī)器人使用。
使用:NEO-6M UBLOX模塊使用串口協(xié)議進(jìn)行通信。可向用戶傳回GSV、RMC、GSA、GGA、GLL、VTG等數(shù)據(jù),但不會(huì)用到所有的數(shù)據(jù),因?yàn)榻邮芩械臄?shù)據(jù)可能對(duì)其造成麻煩。我們只需要使用串口協(xié)議,通過(guò)16字節(jié)的指令包以特定的波特率進(jìn)行訪問(wèn),就可以得到相應(yīng)的數(shù)據(jù),然后得出機(jī)器人位置。
在通信息量方面我們使用自己設(shè)計(jì)的通信協(xié)議,主要分為以下2個(gè)部分。
在舵機(jī)控制板通信協(xié)議部分,我們通過(guò)將機(jī)器人的每一個(gè)動(dòng)作都進(jìn)行相應(yīng)的打包,以及相應(yīng)的儲(chǔ)存。通過(guò)其主控板的串口通信來(lái)得到相應(yīng)的控制。舵機(jī)控制板的基本協(xié)議格式為:0×55 0×55 0×06 0×aa 0×bb 0×00。其中0×aa為相應(yīng)的動(dòng)作組,我們將機(jī)器人的每一個(gè)動(dòng)作封裝成一個(gè)相應(yīng)的動(dòng)作組數(shù)據(jù),數(shù)據(jù)中包括機(jī)器人動(dòng)作的速度,角度以及相應(yīng)的時(shí)間。0×bb為動(dòng)作執(zhí)行次數(shù)。每一個(gè)動(dòng)作組文件中的基本數(shù)據(jù)為0×FF 0×FF 0×01 0×aa 0×bb 0×cc 0×02 0×aa 0×bb 0×cc 0×03 0×aa 0×bb 0×cc…其中0×aa 0×bb為角度數(shù)據(jù),分別為高位和低位,將舵機(jī)角度分為1 500分。0×cc為舵機(jī)運(yùn)動(dòng)速度,即舵機(jī)運(yùn)行到該位置的時(shí)間。如此,我們能夠?qū)C(jī)器人的動(dòng)作一個(gè)個(gè)封裝起來(lái)。
當(dāng)主控板發(fā)送動(dòng)作控制包,舵機(jī)控制板即可以識(shí)別相應(yīng)的數(shù)據(jù)包來(lái)識(shí)別。在數(shù)據(jù)包中,難免有壞包。我們通過(guò)每一位進(jìn)行相應(yīng)的flag位定位來(lái)進(jìn)行對(duì)于動(dòng)作包的識(shí)別。
對(duì)于樹莓派和主控板的協(xié)議主要是GPS數(shù)據(jù)和樹莓派發(fā)送停止指令包。其中GPS數(shù)據(jù)主要為經(jīng)緯度,其包頭為0×ff 0×ff,后面通過(guò)2個(gè)16進(jìn)制表示經(jīng)度,而后面的2個(gè)16進(jìn)制表示維度,最后的為校驗(yàn)和。校驗(yàn)和的計(jì)算公式為CheckSum=~(0×aa 0×bb 0×cc 0×dd)即為四位數(shù)據(jù)和取反。
而停止指令包,即為舵機(jī)控制板的數(shù)據(jù)停止包。為0×55 0×55 0×07 0×00來(lái)進(jìn)行相應(yīng)的控制,主控板指令包識(shí)別方法同舵機(jī)控制板一樣,判斷完成后,即進(jìn)行相應(yīng)停止包的發(fā)送。使機(jī)器人停止運(yùn)動(dòng),并且返回GPS數(shù)據(jù)包。
本基于多傳感器的6足救援機(jī)器人軟件設(shè)計(jì)主要分為動(dòng)作庫(kù)搭建和受害者識(shí)別兩部分。
動(dòng)作庫(kù)搭建是運(yùn)用一系列的運(yùn)動(dòng)公式(機(jī)器人運(yùn)動(dòng)方程),寫出用PWM波控制舵機(jī)的底層代碼,然后將這些代碼以函數(shù)的形式封裝起來(lái),在控制機(jī)器人運(yùn)動(dòng)的時(shí)候只需要給函數(shù)相應(yīng)的參數(shù)就可以控制其運(yùn)動(dòng)。利用C#編寫動(dòng)作調(diào)試上位機(jī),通過(guò)不斷的實(shí)際測(cè)試,得出相應(yīng)的動(dòng)作參數(shù),將這些參數(shù)儲(chǔ)存,封裝起來(lái)。程序中只留出動(dòng)作控制接口,主控板只需要發(fā)送相應(yīng)的指令,調(diào)用對(duì)應(yīng)的函數(shù)即可。
本項(xiàng)目在樹莓派下進(jìn)行圖像處理,在對(duì)于樹莓派的圖像識(shí)別中,我們給樹莓派配置相應(yīng)的python庫(kù)以及OpenCV安裝包,在vim下,我們使用python交互式編程。更改樹莓派的config.int文件來(lái)使用我們的串口,設(shè)置其波特率為115 200來(lái)配合主控板進(jìn)行相應(yīng)的通信功能和識(shí)別功能。
圖像識(shí)別部分,我們用樹莓派做上位機(jī)進(jìn)行相應(yīng)的數(shù)據(jù)識(shí)別,在視覺編程中,首先,我們調(diào)用事先訓(xùn)練好的識(shí)別模型,然后進(jìn)行相應(yīng)的人臉識(shí)別。人臉識(shí)別通過(guò)直方圖均衡化也就是調(diào)整圖像的灰階分布,使得其在0~255灰階上的分布更加均衡,提高了圖像的對(duì)比度,達(dá)到改善圖像主觀視覺效果的目的,對(duì)于對(duì)比度較低的圖像更適合用其來(lái)增強(qiáng)圖像細(xì)節(jié)。