一種基于嵌入式Linux的移動(dòng)機(jī)器人控制系統(tǒng)
使用select機(jī)制監(jiān)控是否語(yǔ)音識(shí)別結(jié)果,在超出等待時(shí)間后,會(huì)退出等待并重新初始化語(yǔ)音模塊LD3320,釋放公共資源,這樣也使得系統(tǒng)能夠及時(shí)響應(yīng)LD3320的MP3播放功能,避免了在長(zhǎng)時(shí)間沒(méi)有語(yǔ)音識(shí)別結(jié)果時(shí),系統(tǒng)進(jìn)入卡死狀態(tài)。
本文引用地址:http://m.butianyuan.cn/article/262537.htm2.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,buf,10)函數(shù)讀取相應(yīng)串口,得到航向數(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,SEN D_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所示。
?、诙x移動(dòng)平臺(tái)和目標(biāo)點(diǎn)之間夾角為γ,模糊子集定義為{LB,LS,Z,RS,RB},分別表示左大、左小、零、右小和右大。相應(yīng)的角度隸屬度函數(shù)如圖8所示。
?、垡苿?dòng)平臺(tái)的旋轉(zhuǎn)角度中的模糊子集定義為{TLB,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所列。
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ī)器人通信等提供了一種方案。
linux相關(guān)文章:linux教程
評(píng)論