基于嵌入式Linux的移動(dòng)機器人控制系統

發(fā)布時(shí)間:2014-12-16 10:42    發(fā)布者:designapp

        隨著(zhù)科學(xué)技術(shù)的發(fā)展和社會(huì )的需要,移動(dòng)機器人技術(shù)得到了迅速發(fā)展,正在滲透到各行各業(yè)中,使人們的生活更加便利,F今以單片機為核心的移動(dòng)機器人存在處理數據量有限、控制系統速度低、人機交互機制單一等缺點(diǎn),不能滿(mǎn)足機器人多任務(wù)的要求。系統中增加協(xié)處理器的系統結構也得到了廣泛應用,雖然可以管理多種傳感器,但這種結構卻增加了硬件的冗余度和復雜度,見(jiàn)參考文獻。為此,提出了以嵌入式處理器S3C2440為核心的多任務(wù)機器人控制系統。
1 控制系統硬件設計
控制系統選用兩輪獨立驅動(dòng)小車(chē)為移動(dòng)式機器人平臺,后輪為一個(gè)尼龍萬(wàn)向輪。處理器為三星公司的S3C2440,系統主頻最高可達533 MHz,外接512 MB的NAND Flash和64 MB的SDRAM,支持SPI、I2C、UART等接口,滿(mǎn)足移動(dòng)機器人控制系統的需求,如圖1所示。


圖1 系統硬件組成


整個(gè)控制系統工作過(guò)程如下:語(yǔ)音識別芯片LD3320通過(guò)SPI總線(xiàn)接口接人ARM 處理器,處理器可以對識別的結果進(jìn)行分析和匯總,并通過(guò)查表提取出操作人員的命令碼;同時(shí),處理器通過(guò)串口讀取機器人當前的航向信息;超聲波測距和紅外線(xiàn)地面檢測模塊由處理器的GPIO 引腳控制;通過(guò)控制兩自由度的云臺,可以進(jìn)行多方位的超聲波障礙物檢測,利用LD3320模塊的MP3播放功能播放所檢測到的障礙物距離和路況信息?刂葡到y根據傳感器的數據和所識別的操作人員的命令碼,利用信息融合技術(shù)提取環(huán)境特征,通過(guò)路徑規劃技術(shù)作出決策,控制電機狀態(tài),最終控制機器人的姿態(tài)。
2 控制系統軟件設計
在軟件設計中,將系統中所有要處理的任務(wù)劃分為不同的、相互獨立的任務(wù)模塊。根據系統的性能指標和技術(shù)要求,可將任務(wù)劃分為:語(yǔ)音識別、航向測量與計算、超聲波測距、電機控制、信息處理等任務(wù)。
2.1 進(jìn)程的創(chuàng )建與狀態(tài)轉換
移動(dòng)機器人控制系統在初始化完成后,利用系統調用fock機制分別為語(yǔ)音識別、航向測量與計算和超聲波測距等任務(wù)產(chǎn)生相應的子進(jìn)程,實(shí)現方式如圖2所示。進(jìn)程創(chuàng )建成功后,操作系統會(huì )根據調度算法進(jìn)行進(jìn)程調度,這使系統在行駛過(guò)程中,能夠及時(shí)響應語(yǔ)音命令。


圖2 系統多進(jìn)程設計的實(shí)現方式





       
2.2 進(jìn)程間通信機制
在信息處理進(jìn)程中,需要對不同任務(wù)返回的有效數據進(jìn)行信息處理和融合。由于不同進(jìn)程的數據段、堆棧段是相互隔離的,因此,采用共享內存的進(jìn)程間通信方式,在程序中可以使用shmget從系統中取出一塊未使用的物理內存并映射到用戶(hù)空間,如圖3所示。


圖3 共享內存機制示意圖


在兩個(gè)進(jìn)程之間建立共享內存的具體實(shí)現步驟如下:
① 在調用fock()前,使用shmget創(chuàng )建新的共享內存,返回值為共享內存標識碼:
shmid = shmget(IPC_PRIVATE,1,PERM)
//申請一個(gè)字節共享內存
② 調用fock()函數,創(chuàng )建子進(jìn)程,根據fock()的返回值區分父進(jìn)程和子進(jìn)程,并分別在兩個(gè)進(jìn)程中使用shmat映射一塊共享內存,即允許當前進(jìn)程訪(fǎng)問(wèn)創(chuàng )建的共享內存:
if(fock()) p_addr= shmat(shmid,0,0);
//將共享內存映射到父進(jìn)程
else{c_addr=shmat(shmid,0,0);}//將共享內存映射到子進(jìn)程
其中,shmid為shmget()函數的返回值,即共享內存標識碼。
從用戶(hù)的角度看,在父進(jìn)程中可以對p_addr進(jìn)行讀寫(xiě)操作,實(shí)際訪(fǎng)問(wèn)的是申請的共享內存。子進(jìn)程則可以對c_addr進(jìn)行讀寫(xiě),從而實(shí)現兩個(gè)進(jìn)程間的通信。共享內存的映射和進(jìn)程之間的關(guān)系,如圖4所示。


圖4 進(jìn)程和共享內存映射關(guān)系


2.3 系統控制流程
在程序初始化完成后,為每項任務(wù)創(chuàng )建了相應的進(jìn)程,并建立了共享內存,如圖5所示。在每個(gè)進(jìn)程中采用循環(huán)執行方式,語(yǔ)音識別進(jìn)程中利用select函數監控是否有識別結果輸出,并將識別結果寫(xiě)入到相應的共享內存區。


圖5 系統控制流程圖


航向測量和計算進(jìn)程循環(huán)讀取陀螺儀的角度信息并存儲。超聲波測距進(jìn)程在接收到信息處理進(jìn)程的控制命令后進(jìn)行測距并將數據返回至信息處理進(jìn)程。信息處理進(jìn)程融合了多傳感器的數據,根據設定的路徑規劃方案,將控制信息傳輸到電機控制進(jìn)程,實(shí)現機器人姿態(tài)的調整。



       
2.4 語(yǔ)音識別
在系統運行過(guò)程中,語(yǔ)音識別進(jìn)程獨立完成對語(yǔ)音模塊的初始化和讀取識別結果的任務(wù),因此,能夠及時(shí)響應操作人員發(fā)出的語(yǔ)音指令。程序中使用了select()函數監控read()是否可讀。當語(yǔ)音識別模塊LD3320有識別結果時(shí),將在中斷引腳輸出高電平以觸發(fā)系統中斷,結束驅動(dòng)程序中的等待狀態(tài),同時(shí)應用程序可以通過(guò)read()函數讀取LD332O的識別結果,并寫(xiě)入到相應共享內存區M中。在沒(méi)有中斷時(shí),read()函數將被阻塞,如圖6所示。


圖6 語(yǔ)音識別進(jìn)程流程圖


使用select機制監控是否語(yǔ)音識別結果,在超出等待時(shí)間后,會(huì )退出等待并重新初始化語(yǔ)音模塊LD3320,釋放公共資源,這樣也使得系統能夠及時(shí)響應LD332O的MP3播放功能,避免了在長(cháng)時(shí)間沒(méi)有語(yǔ)音識別結果時(shí),系統進(jìn)入卡死狀態(tài)。
2.5 航向測量
為了使移動(dòng)機器人能夠沿指定的方向行駛并能修正由外界干擾因素產(chǎn)生的航向偏差,系統采用陀螺儀航向測量模塊MPU - 6050,該模塊將其測量的模擬量轉換為可輸出的數字量,并通過(guò)串口發(fā)送到S3C2440。系統通過(guò)read(fd_uartl,bur,10)函數讀取相應串El,得到航向數據并寫(xiě)人到共享內存區S中。
2.6 超聲波測距
本系統采用渡越時(shí)間法,超聲波測距模塊在收到發(fā)射控制信號時(shí),換能器將發(fā)出40 kHz的連續脈沖信號。接收器的輸出高電平時(shí)間和距離成正比,同時(shí)觸發(fā)處理器的中斷,上升沿中斷開(kāi)啟定時(shí)器,下降沿關(guān)閉定時(shí)器,利用處理器內部的定時(shí)器1測量出輸出信號的高電平的持續時(shí)間△T,經(jīng)過(guò)式(1)的計算,可得到檢測距離S:
S— V × △T/2 (1)
式中,V 為超聲波的傳播速度,常溫下超聲波在空氣中的傳播速度是340 m/s。程序中根據所編寫(xiě)的驅動(dòng)程序,使用ioctl(fd_chao,SEND_BEGIN)、ioctl(fd_chao,SEND_STOP)控制GPIO以實(shí)現超聲波的發(fā)射和停止。系統中對某個(gè)方向連續測量5次,進(jìn)行中值濾波并將濾波后數據傳遞到信息處理進(jìn)程。
2.7 電機控制
移動(dòng)平臺中采用L298驅動(dòng)直流減速電機,平臺尚未安裝速度反饋單元,簡(jiǎn)化了控制模式。程序通過(guò)ioctl()控制L298以實(shí)現電機的正反轉以及停止操作。
在電機驅動(dòng)程序中定義了相應GPIO的輸入/輸出方式:ioctl(fd,TURN_LEFT)中,fd為驅動(dòng)程序的文件描述符;TURN_LEFT 是命令掩碼CMD,驅動(dòng)程序根據命令掩碼CMD對相應的GPIO賦值以控制L298的狀態(tài)。



       
3 路徑規劃和避障算法
根據模糊邏輯法,移動(dòng)平臺能夠在不確定環(huán)境中實(shí)現局部路徑規劃和避障。
3.1 輸入輸出變量的模糊化
在路徑規劃過(guò)程中,信息分析模塊的輸入量為移動(dòng)平臺的行駛方向信息、與障礙物之間的相對位移信息;輸出量為移動(dòng)平臺的旋轉角度和平動(dòng)位移信息。
① 定義移動(dòng)平臺與左側障礙物的距離為DL、與右側障礙物的距離為DR、前方障礙物的距離為DF。模糊子集定義為{S,M,B},分別表示小、中、大,相應的距離隸屬度函數如圖7所示。


圖7 距離隸屬度函數


② 定義移動(dòng)平臺和目標點(diǎn)之間夾角為了,模糊子集定義為{LB,LS,Z,RS,RB},分別表示左大、左小、零、有小和右大。相應的角度隸屬度函數如圖8所示。
③ 移動(dòng)平臺的旋轉角度φ的模糊子集定義為{TIB,TLS,TZ,TRS,TRB}。分別表示左轉大、左轉小、不旋轉、右轉小、右轉大,相應的輸出隸屬度函數如圖9所示。
3.2 建立模糊控制規則
在移動(dòng)機器人遠離障礙物或不存在障礙物的情況下,依據移動(dòng)平臺的行駛軌跡,可以先對行駛方向進(jìn)行調整。當檢測到障礙物接近移動(dòng)平臺時(shí),移動(dòng)平臺應改變行駛軌跡,避免發(fā)生碰撞。移動(dòng)平臺的部分模糊控制規則如表1所列。


圖8 角度隸屬度函數



圖9 輸出隸屬度函數

表1 模糊控制規則



3.3 模糊推理和解模糊化
根據距離隸屬度函數,將超聲波測量得到的不同方位的距離數據轉換為模糊邏輯狀態(tài),再查找模糊控制規則,查表得到相應的輸出模糊量。
解模糊化是輸出模糊量映射到動(dòng)作行為的過(guò)程。模糊控制器對移動(dòng)平臺的動(dòng)作進(jìn)行了分解并編碼,將復雜的動(dòng)作分解為一系列簡(jiǎn)單動(dòng)作的疊加,使得每一個(gè)輸出模糊量對應一套動(dòng)作。
例如在檢測到前方有障礙物并確定左轉時(shí),可以將機器人動(dòng)作分解為:后退(左轉,即先后退,再左轉。這樣可以減小機器人觸碰到前方障礙物的概率。



       
4 實(shí)驗測試
使用menuconfig命令為嵌入式Linux系統內核配置添加相應驅動(dòng)程序后,進(jìn)行make編譯生產(chǎn)zImage文件。啟動(dòng)移動(dòng)機器人系統并進(jìn)入BIOS模式,將配置好的內核通過(guò)Supervivi工具燒寫(xiě)到NAND Flash。在系統啟動(dòng)后,配置Linux目錄中的/etc/init.d文件,使系統啟動(dòng)后,自動(dòng)運行所設計的程序。
如果系統初始化正常,將聽(tīng)到由語(yǔ)音模塊發(fā)出的提示聲:“校準完成”。此時(shí),操作人員可以下達“前進(jìn)”、“后退”或“測距”等設計好的語(yǔ)音指令,機器人將按照操作人員的指令完成相應的動(dòng)作,還可以通過(guò)語(yǔ)音模塊播放出測量到的距離。
結語(yǔ)
系統利用了Linux系統支持多任務(wù)和可裁剪的特點(diǎn),結合處理器豐富的接口資源,實(shí)現了多方位超聲波測距、電機控制等功能,通過(guò)對多傳感器信息的融合和分析,為模糊邏輯法進(jìn)行路徑規劃提供了判斷依據。語(yǔ)音識別功能使得機器人和操作人員之間的人機交互變得更靈活方便。在此基礎上,可以利用Linux操作系統強大的網(wǎng)絡(luò )功能,為進(jìn)一步研究服務(wù)機器人、機器人聯(lián)網(wǎng)、機器人與機器人通信等提供了一種方案。


本文地址:http://selenalain.com/thread-135403-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页