以嵌入式Linux開(kāi)發(fā)平臺(tái)為基礎(chǔ),根據(jù)模糊控制算法進(jìn)行機(jī)器人路徑規(guī)劃,同時(shí)將兩自由度云臺(tái)和超聲波測(cè)距模塊相結(jié)合,擴(kuò)大了障礙物檢測(cè)范圍。根據(jù)測(cè)試,移動(dòng)機(jī)器人可以根據(jù)操作人員的語(yǔ)音指令,實(shí)現(xiàn)前進(jìn)、后退、測(cè)量距離等動(dòng)作,并通過(guò)MP3播放功能播放出所測(cè)量到的距離值和機(jī)器人當(dāng)前的運(yùn)行狀態(tài)。在運(yùn)行過(guò)程中,機(jī)器人可以自動(dòng)檢測(cè)方位并修正,實(shí)現(xiàn)無(wú)碰撞行駛。
隨著科學(xué)技術(shù)的發(fā)展和社會(huì)的需要,移動(dòng)機(jī)器人技術(shù)得到了迅速發(fā)展,正在滲透到各行各業(yè)中,使人們的生活更加便利。現(xiàn)今以單片機(jī)為核心的移動(dòng)機(jī)器人存在處理數(shù)據(jù)量有限、控制系統(tǒng)速度低、人機(jī)交互機(jī)制單一等缺點(diǎn),不能滿(mǎn)足機(jī)器人多任務(wù)的要求。系統(tǒng)中增加協(xié)處理器的系統(tǒng)結(jié)構(gòu)也得到了廣泛應(yīng)用,雖然可以管理多種傳感器,但這種結(jié)構(gòu)卻增加了硬件的冗余度和復(fù)雜度
移動(dòng)機(jī)器人屬于能夠自動(dòng)執(zhí)行工作任務(wù)的機(jī)器,不但能夠按照事先編譯的程序運(yùn)行,同時(shí)人類(lèi)還可對(duì)其指揮。當(dāng)前主要被運(yùn)用在生產(chǎn)業(yè)、建筑業(yè)以及航空航天領(lǐng)域,而該領(lǐng)域的發(fā)展情況直接關(guān)系到國(guó)家綜合實(shí)力的提升速度,對(duì)此加強(qiáng)對(duì)移動(dòng)機(jī)器人控制系統(tǒng)的發(fā)展情況,以及未來(lái)發(fā)展方向的研究勢(shì)在必行。?
國(guó)內(nèi)外常見(jiàn)的移動(dòng)機(jī)器人控制系統(tǒng)??
相對(duì)于國(guó)內(nèi)在移動(dòng)機(jī)器人的研究狀況,能夠看出國(guó)外在該領(lǐng)域的研究是較早的,其中具有代表性的有Saphira、TeamBots以及ISR。而在國(guó)內(nèi)方面,代表性的有OSMOR、ZJMR以及Agent。下面,便對(duì)較為常用的控制系統(tǒng)進(jìn)行介紹:??
1.1?國(guó)外移動(dòng)機(jī)器人控制系統(tǒng)????
1.1.1?Saphira控制系統(tǒng)??
Saphira控制系統(tǒng)是移動(dòng)機(jī)器人領(lǐng)域中最早的系統(tǒng),是有SRI國(guó)際人工智能中心在1990年所研發(fā)的,此系統(tǒng)是基于本地感知空間的共享內(nèi)存與黑板,來(lái)實(shí)現(xiàn)協(xié)調(diào)與通信進(jìn)程。由于Saphira是采用C語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā)的,同時(shí)支持Windows與Unix系統(tǒng),因此具有文檔資料相對(duì)完整、系統(tǒng)資源占用少等特征。但是需注意的是,由于Saphira系統(tǒng)在定位方面無(wú)法達(dá)到當(dāng)前的實(shí)際需求,因此運(yùn)用是相對(duì)較少的。???
1.1.2?TeamBots控制系統(tǒng)??
本系統(tǒng)是基于Java包與Java應(yīng)用程序而構(gòu)建的,經(jīng)過(guò)20余年的發(fā)展后,此系統(tǒng)截止到目前已經(jīng)被運(yùn)用到多種類(lèi)型的機(jī)器人平臺(tái)當(dāng)中。除此之外,在適用的操作系統(tǒng)方面,其中具有代表性的有Windows、MacOS以及Linux等,因此其運(yùn)用的范圍是更加廣泛的。???
1.1.3?ISR控制系統(tǒng)??
ISR是基于行為的控制模式,其中是有任務(wù)執(zhí)行層、反映層以及推理層所構(gòu)成的,是有CAS研究中心所研發(fā)的。其中,任務(wù)執(zhí)行層的作用是執(zhí)行推理層所傳輸?shù)闹噶睿环从硨悠渲邪Y源、控制器以及行為;推理層的功能是根據(jù)用戶(hù)的指令來(lái)對(duì)決策進(jìn)行制定。此外,ISR控制系統(tǒng)僅能夠在Linux中進(jìn)行操作,并且沒(méi)有公開(kāi)化使用。???
1.2?國(guó)內(nèi)移動(dòng)機(jī)器人控制系統(tǒng)??
OSMOR是我國(guó)首個(gè)機(jī)器人系統(tǒng),此系統(tǒng)在傳感器處理方面具有明顯的優(yōu)勢(shì),并且為了能夠防止出現(xiàn)數(shù)據(jù)處理的復(fù)雜性與傳感器多樣性的影響,本控制系統(tǒng)將傳感器數(shù)據(jù)的處理劃分為單獨(dú)結(jié)構(gòu)當(dāng)中。但是需注意的是,OSMOR屬于沈陽(yáng)自動(dòng)化研究所的實(shí)驗(yàn)室自主開(kāi)發(fā)的機(jī)器人系統(tǒng),因此被沒(méi)有得到廣泛的運(yùn)用。??
與此同時(shí),我國(guó)各個(gè)高校也加大了對(duì)移動(dòng)機(jī)器人的研究力度。其中,浙江大學(xué)構(gòu)建了ZJMR系統(tǒng);中南大學(xué)研究了室外自主導(dǎo)航系統(tǒng);南京理工大學(xué)經(jīng)過(guò)研究后,提出了Agent系統(tǒng)。河海大學(xué)提出了集控式足球機(jī)器人系統(tǒng);東北大學(xué)研發(fā)了基于自主式足球機(jī)器人的底層控制系統(tǒng);清華大學(xué)是基于多機(jī)器人協(xié)作的層面為核心,并構(gòu)建了系統(tǒng)框架,由于此框架不夠成熟,因此并沒(méi)有運(yùn)用到市場(chǎng)中。???
基于嵌入式Linux的移動(dòng)機(jī)器人控制系統(tǒng)
1 控制系統(tǒng)硬件設(shè)計(jì)
控制系統(tǒng)選用兩輪獨(dú)立驅(qū)動(dòng)小車(chē)為移動(dòng)式機(jī)器人平臺(tái),后輪為一個(gè)尼龍萬(wàn)向輪。處理器為三星公司的S3C2440,系統(tǒng)主頻最高可達(dá)533 MHz,外接512 MB的NAND Flash和64 MB的SDRAM,支持SPI、I2C、UART等接口,滿(mǎn)足移動(dòng)機(jī)器人控制系統(tǒng)的需求,如圖1所示。
圖1 系統(tǒng)硬件組成
整個(gè)控制系統(tǒng)工作過(guò)程如下:語(yǔ)音識(shí)別芯片LD3320通過(guò)SPI總線(xiàn)接口接人ARM 處理器,處理器可以對(duì)識(shí)別的結(jié)果進(jìn)行分析和匯總,并通過(guò)查表提取出操作人員的命令碼;同時(shí),處理器通過(guò)串口讀取機(jī)器人當(dāng)前的航向信息;超聲波測(cè)距和紅外線(xiàn)地面檢測(cè)模塊由處理器的GPIO 引腳控制;通過(guò)控制兩自由度的云臺(tái),可以進(jìn)行多方位的超聲波障礙物檢測(cè),利用LD3320模塊的MP3播放功能播放所檢測(cè)到的障礙物距離和路況信息。控制系統(tǒng)根據(jù)傳感器的數(shù)據(jù)和所識(shí)別的操作人員的命令碼,利用信息融合技術(shù)提取環(huán)境特征,通過(guò)路徑規(guī)劃技術(shù)作出決策,控制電機(jī)狀態(tài),最終控制機(jī)器人的姿態(tài)。
2 控制系統(tǒng)軟件設(shè)計(jì)
在軟件設(shè)計(jì)中,將系統(tǒng)中所有要處理的任務(wù)劃分為不同的、相互獨(dú)立的任務(wù)模塊。根據(jù)系統(tǒng)的性能指標(biāo)和技術(shù)要求,可將任務(wù)劃分為:語(yǔ)音識(shí)別、航向測(cè)量與計(jì)算、超聲波測(cè)距、電機(jī)控制、信息處理等任務(wù)。
2.1 進(jìn)程的創(chuàng)建與狀態(tài)轉(zhuǎn)換
移動(dòng)機(jī)器人控制系統(tǒng)在初始化完成后,利用系統(tǒng)調(diào)用fock機(jī)制分別為語(yǔ)音識(shí)別、航向測(cè)量與計(jì)算和超聲波測(cè)距等任務(wù)產(chǎn)生相應(yīng)的子進(jìn)程,實(shí)現(xiàn)方式如圖2所示。進(jìn)程創(chuàng)建成功后,操作系統(tǒng)會(huì)根據(jù)調(diào)度算法進(jìn)行進(jìn)程調(diào)度,這使系統(tǒng)在行駛過(guò)程中,能夠及時(shí)響應(yīng)語(yǔ)音命令。
圖2 系統(tǒng)多進(jìn)程設(shè)計(jì)的實(shí)現(xiàn)方式
2.2 進(jìn)程間通信機(jī)制
在信息處理進(jìn)程中,需要對(duì)不同任務(wù)返回的有效數(shù)據(jù)進(jìn)行信息處理和融合。由于不同進(jìn)程的數(shù)據(jù)段、堆棧段是相互隔離的,因此,采用共享內(nèi)存的進(jìn)程間通信方式,在程序中可以使用shmget從系統(tǒng)中取出一塊未使用的物理內(nèi)存并映射到用戶(hù)空間,如圖3所示。
圖3 共享內(nèi)存機(jī)制示意圖 在兩個(gè)進(jìn)程之間建立共享內(nèi)存的具體實(shí)現(xiàn)步驟如下:
① 在調(diào)用fock()前,使用shmget創(chuàng)建新的共享內(nèi)存,返回值為共享內(nèi)存標(biāo)識(shí)碼:
shmid = shmget(IPC_PRIVATE,1,PERM)
//申請(qǐng)一個(gè)字節(jié)共享內(nèi)存
② 調(diào)用fock()函數(shù),創(chuàng)建子進(jìn)程,根據(jù)fock()的返回值區(qū)分父進(jìn)程和子進(jìn)程,并分別在兩個(gè)進(jìn)程中使用shmat映射一塊共享內(nèi)存,即允許當(dāng)前進(jìn)程訪(fǎng)問(wèn)創(chuàng)建的共享內(nèi)存:
if(fock()) p_addr= shmat(shmid,0,0);
//將共享內(nèi)存映射到父進(jìn)程
else{c_addr=shmat(shmid,0,0);}//將共享內(nèi)存映射到子進(jìn)程
其中,shmid為shmget()函數(shù)的返回值,即共享內(nèi)存標(biāo)識(shí)碼。
從用戶(hù)的角度看,在父進(jìn)程中可以對(duì)p_addr進(jìn)行讀寫(xiě)操作,實(shí)際訪(fǎng)問(wèn)的是申請(qǐng)的共享內(nèi)存。子進(jìn)程則可以對(duì)c_addr進(jìn)行讀寫(xiě),從而實(shí)現(xiàn)兩個(gè)進(jìn)程間的通信。共享內(nèi)存的映射和進(jìn)程之間的關(guān)系,如圖4所示。
圖4 進(jìn)程和共享內(nèi)存映射關(guān)系
2.3 系統(tǒng)控制流程
在程序初始化完成后,為每項(xiàng)任務(wù)創(chuàng)建了相應(yīng)的進(jìn)程,并建立了共享內(nèi)存,如圖5所示。在每個(gè)進(jìn)程中采用循環(huán)執(zhí)行方式,語(yǔ)音識(shí)別進(jìn)程中利用select函數(shù)監(jiān)控是否有識(shí)別結(jié)果輸出,并將識(shí)別結(jié)果寫(xiě)入到相應(yīng)的共享內(nèi)存區(qū)。
圖5 系統(tǒng)控制流程圖
航向測(cè)量和計(jì)算進(jìn)程循環(huán)讀取陀螺儀的角度信息并存儲(chǔ)。超聲波測(cè)距進(jìn)程在接收到信息處理進(jìn)程的控制命令后進(jìn)行測(cè)距并將數(shù)據(jù)返回至信息處理進(jìn)程。信息處理進(jìn)程融合了多傳感器的數(shù)據(jù),根據(jù)設(shè)定的路徑規(guī)劃方案,將控制信息傳輸?shù)?a target="_blank">電機(jī)控制進(jìn)程,實(shí)現(xiàn)機(jī)器人姿態(tài)的調(diào)整。
2.4 語(yǔ)音識(shí)別
在系統(tǒng)運(yùn)行過(guò)程中,語(yǔ)音識(shí)別進(jìn)程獨(dú)立完成對(duì)語(yǔ)音模塊的初始化和讀取識(shí)別結(jié)果的任務(wù),因此,能夠及時(shí)響應(yīng)操作人員發(fā)出的語(yǔ)音指令。程序中使用了select()函數(shù)監(jiān)控read()是否可讀。當(dāng)語(yǔ)音識(shí)別模塊LD3320有識(shí)別結(jié)果時(shí),將在中斷引腳輸出高電平以觸發(fā)系統(tǒng)中斷,結(jié)束驅(qū)動(dòng)程序中的等待狀態(tài),同時(shí)應(yīng)用程序可以通過(guò)read()函數(shù)讀取LD332O的識(shí)別結(jié)果,并寫(xiě)入到相應(yīng)共享內(nèi)存區(qū)M中。在沒(méi)有中斷時(shí),read()函數(shù)將被阻塞,如圖6所示。
圖6 語(yǔ)音識(shí)別進(jìn)程流程圖
使用select機(jī)制監(jiān)控是否語(yǔ)音識(shí)別結(jié)果,在超出等待時(shí)間后,會(huì)退出等待并重新初始化語(yǔ)音模塊LD3320,釋放公共資源,這樣也使得系統(tǒng)能夠及時(shí)響應(yīng)LD332O的MP3播放功能,避免了在長(zhǎng)時(shí)間沒(méi)有語(yǔ)音識(shí)別結(jié)果時(shí),系統(tǒng)進(jìn)入卡死狀態(tài)。
2.5 航向測(cè)量
為了使移動(dòng)機(jī)器人能夠沿指定的方向行駛并能修正由外界干擾因素產(chǎn)生的航向偏差,系統(tǒng)采用陀螺儀航向測(cè)量模塊MPU - 6050,該模塊將其測(cè)量的模擬量轉(zhuǎn)換為可輸出的數(shù)字量,并通過(guò)串口發(fā)送到S3C2440.系統(tǒng)通過(guò)read(fd_uartl,bur,10)函數(shù)讀取相應(yīng)串El,得到航向數(shù)據(jù)并寫(xiě)人到共享內(nèi)存區(qū)S中。
2.6 超聲波測(cè)距
本系統(tǒng)采用渡越時(shí)間法,超聲波測(cè)距模塊在收到發(fā)射控制信號(hào)時(shí),換能器將發(fā)出40 kHz的連續(xù)脈沖信號(hào)。接收器的輸出高電平時(shí)間和距離成正比,同時(shí)觸發(fā)處理器的中斷,上升沿中斷開(kāi)啟定時(shí)器,下降沿關(guān)閉定時(shí)器,利用處理器內(nèi)部的定時(shí)器1測(cè)量出輸出信號(hào)的高電平的持續(xù)時(shí)間△T,經(jīng)過(guò)式(1)的計(jì)算,可得到檢測(cè)距離S: S- V × △T/2 (1) 式中,V 為超聲波的傳播速度,常溫下超聲波在空氣中的傳播速度是340 m/s.程序中根據(jù)所編寫(xiě)的驅(qū)動(dòng)程序,使用ioctl(fd_chao,SEND_BEGIN)、ioctl(fd_chao,SEND_STOP)控制GPIO以實(shí)現(xiàn)超聲波的發(fā)射和停止。系統(tǒng)中對(duì)某個(gè)方向連續(xù)測(cè)量5次,進(jìn)行中值濾波并將濾波后數(shù)據(jù)傳遞到信息處理進(jìn)程。
2.7 電機(jī)控制
移動(dòng)平臺(tái)中采用L298驅(qū)動(dòng)直流減速電機(jī),平臺(tái)尚未安裝速度反饋單元,簡(jiǎn)化了控制模式。程序通過(guò)ioctl()控制L298以實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)以及停止操作。
在電機(jī)驅(qū)動(dòng)程序中定義了相應(yīng)GPIO的輸入/輸出方式:ioctl(fd,TURN_LEFT)中,fd為驅(qū)動(dòng)程序的文件描述符;TURN_LEFT 是命令掩碼CMD,驅(qū)動(dòng)程序根據(jù)命令掩碼CMD對(duì)相應(yīng)的GPIO賦值以控制L298的狀態(tài)。
3 路徑規(guī)劃和避障算法
根據(jù)模糊邏輯法,移動(dòng)平臺(tái)能夠在不確定環(huán)境中實(shí)現(xiàn)局部路徑規(guī)劃和避障。
3.1 輸入輸出變量的模糊化
在路徑規(guī)劃過(guò)程中,信息分析模塊的輸入量為移動(dòng)平臺(tái)的行駛方向信息、與障礙物之間的相對(duì)位移信息;輸出量為移動(dòng)平臺(tái)的旋轉(zhuǎn)角度和平動(dòng)位移信息。
① 定義移動(dòng)平臺(tái)與左側(cè)障礙物的距離為DL、與右側(cè)障礙物的距離為DR、前方障礙物的距離為DF.模糊子集定義為{S,M,B},分別表示小、中、大,相應(yīng)的距離隸屬度函數(shù)如圖7所示。
圖7 距離隸屬度函數(shù)
② 定義移動(dòng)平臺(tái)和目標(biāo)點(diǎn)之間夾角為了,模糊子集定義為{LB,LS,Z,RS,RB},分別表示左大、左小、零、有小和右大。相應(yīng)的角度隸屬度函數(shù)如圖8所示。
③ 移動(dòng)平臺(tái)的旋轉(zhuǎn)角度φ的模糊子集定義為{TIB,TLS,TZ,TRS,TRB}。分別表示左轉(zhuǎn)大、左轉(zhuǎn)小、不旋轉(zhuǎn)、右轉(zhuǎn)小、右轉(zhuǎn)大,相應(yīng)的輸出隸屬度函數(shù)如圖9所示。
3.2 建立模糊控制規(guī)則
在移動(dòng)機(jī)器人遠(yuǎn)離障礙物或不存在障礙物的情況下,依據(jù)移動(dòng)平臺(tái)的行駛軌跡,可以先對(duì)行駛方向進(jìn)行調(diào)整。當(dāng)檢測(cè)到障礙物接近移動(dòng)平臺(tái)時(shí),移動(dòng)平臺(tái)應(yīng)改變行駛軌跡,避免發(fā)生碰撞。移動(dòng)平臺(tái)的部分模糊控制規(guī)則如表1所列。
圖8 角度隸屬度函數(shù)
圖9 輸出隸屬度函數(shù)
表1 模糊控制規(guī)則
3.3 模糊推理和解模糊化
根據(jù)距離隸屬度函數(shù),將超聲波測(cè)量得到的不同方位的距離數(shù)據(jù)轉(zhuǎn)換為模糊邏輯狀態(tài),再查找模糊控制規(guī)則,查表得到相應(yīng)的輸出模糊量。
解模糊化是輸出模糊量映射到動(dòng)作行為的過(guò)程。模糊控制器對(duì)移動(dòng)平臺(tái)的動(dòng)作進(jìn)行了分解并編碼,將復(fù)雜的動(dòng)作分解為一系列簡(jiǎn)單動(dòng)作的疊加,使得每一個(gè)輸出模糊量對(duì)應(yīng)一套動(dòng)作。
例如在檢測(cè)到前方有障礙物并確定左轉(zhuǎn)時(shí),可以將機(jī)器人動(dòng)作分解為:后退(左轉(zhuǎn),即先后退,再左轉(zhuǎn)。這樣可以減小機(jī)器人觸碰到前方障礙物的概率。
4 實(shí)驗(yàn)測(cè)試
使用menuconfig命令為嵌入式Linux系統(tǒng)內(nèi)核配置添加相應(yīng)驅(qū)動(dòng)程序后,進(jìn)行make編譯生產(chǎn)zImage文件。啟動(dòng)移動(dòng)機(jī)器人系統(tǒng)并進(jìn)入BIOS模式,將配置好的內(nèi)核通過(guò)Supervivi工具燒寫(xiě)到NAND Flash.在系統(tǒng)啟動(dòng)后,配置Linux目錄中的/etc/init.d文件,使系統(tǒng)啟動(dòng)后,自動(dòng)運(yùn)行所設(shè)計(jì)的程序。
如果系統(tǒng)初始化正常,將聽(tīng)到由語(yǔ)音模塊發(fā)出的提示聲:“校準(zhǔn)完成”。此時(shí),操作人員可以下達(dá)“前進(jìn)”、“后退”或“測(cè)距”等設(shè)計(jì)好的語(yǔ)音指令,機(jī)器人將按照操作人員的指令完成相應(yīng)的動(dòng)作,還可以通過(guò)語(yǔ)音模塊播放出測(cè)量到的距離。
結(jié)語(yǔ)
系統(tǒng)利用了Linux系統(tǒng)支持多任務(wù)和可裁剪的特點(diǎn),結(jié)合處理器豐富的接口資源,實(shí)現(xiàn)了多方位超聲波測(cè)距、電機(jī)控制等功能,通過(guò)對(duì)多傳感器信息的融合和分析,為模糊邏輯法進(jìn)行路徑規(guī)劃提供了判斷依據(jù)。語(yǔ)音識(shí)別功能使得機(jī)器人和操作人員之間的人機(jī)交互變得更靈活方便。在此基礎(chǔ)上,可以利用Linux操作系統(tǒng)強(qiáng)大的網(wǎng)絡(luò)功能,為進(jìn)一步研究服務(wù)機(jī)器人、機(jī)器人聯(lián)網(wǎng)、機(jī)器人與機(jī)器人通信等提供了一種方案。
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6657瀏覽量
110788 -
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210136 -
移動(dòng)機(jī)器人
+關(guān)注
關(guān)注
2文章
765瀏覽量
33606
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論