一種智能機器人系統(tǒng)設(shè)計和實現(xiàn)
3.1 控制系統(tǒng)總體軟件結(jié)構(gòu)
軟件系統(tǒng)主要由應(yīng)用軟件、內(nèi)核、系統(tǒng)服務(wù)、驅(qū)動程序等組成。其構(gòu)成示意圖如圖2.
圖2中硬件平臺是指核心控制模塊及其外圍擴展模塊,如視頻采集模塊、語音采集模塊等;驅(qū)動程序是指系統(tǒng)對LCD、直流電機、攝像頭模塊、語音采集模塊等程序;內(nèi)核是指嵌入式操作系統(tǒng),本系統(tǒng)采用的是μC/OS-Ⅱ操作系統(tǒng);系統(tǒng)服務(wù)是指圖形界面μC/GUI和文件系統(tǒng)等;應(yīng)用程序是指為完成控制系統(tǒng)所規(guī)劃的任務(wù)等程序。
3.2 基于μC/GUI的界面設(shè)計
μC/GUI是嵌入式應(yīng)用中通用的圖形軟件,是為帶LCD的圖形應(yīng)用系統(tǒng)提供高效的圖形用戶接口而設(shè)計的,它不依賴于處理器和LCD控制器。μC/GUI在多任務(wù)環(huán)境下工作與在單任務(wù)環(huán)境下工作性能同樣卓越,任何尺寸大小的顯示設(shè)備,不管是物理的或是虛擬的,只要具備LCD控制器和處理器,都可以運用μC/GUI.μC/GUI產(chǎn)品包中包含有所有的源代碼。實際上,在所有的嵌入式圖形用戶接口中,μC/GUI提供的源代碼是最整潔最統(tǒng)一的。μC/GUI提供的所有服務(wù)都以該模塊相關(guān)的前綴開始(如:GUI,WM),這將易于理解應(yīng)用程序中與μC/GUI相關(guān)的函數(shù)。同時,μC/GUI所有的服務(wù)都有很明晰的分類:GUI表示二維圖形,GUI_AA表示反鋸齒等。
中間件μC/GUI界面應(yīng)用程序向用戶提供了豐富的API接口函數(shù),為窗口設(shè)計提供了方便。在設(shè)計中,為了繪制一幅背景圖片,首先使用位圖轉(zhuǎn)換工具把bmp格式的位圖轉(zhuǎn)換成μC/GUI支持的C文件,供μC/GUI函數(shù)調(diào)用。然后根據(jù)μC/GUI提供的API函數(shù)設(shè)計系統(tǒng)界面。用到的API函數(shù)主要有位圖顯示函數(shù)、窗口創(chuàng)建函數(shù)、窗口客戶區(qū)句柄獲取函數(shù)、按鈕創(chuàng)建函數(shù)、文本框創(chuàng)建函數(shù)和滑動進度條創(chuàng)建函數(shù)等。設(shè)計的界面最終在8英寸LCD液晶屏上顯示。本系統(tǒng)設(shè)計的窗口主要由兩個子窗口組成:上方窗口主要用于視頻顯示,可以通過觸摸屏點擊開始或結(jié)束,視頻數(shù)據(jù)將自動存入規(guī)劃好的內(nèi)存圖像存儲區(qū),以便進一步處理利用,并可選擇機器人所處環(huán)境的特定算法程序,且運行相應(yīng)的程序;下方的窗口工具條主要完成機器人現(xiàn)場音頻數(shù)據(jù)的收集、播放及停止采集,錄制的音頻信息將自動存入規(guī)劃好的內(nèi)存音頻數(shù)據(jù)存儲區(qū)Sound_Buffer中,而播放的音頻數(shù)據(jù)放在內(nèi)存Play_Buffer中,它們采用的都是內(nèi)存映射技術(shù)。
3.3 用戶任務(wù)設(shè)計
基于μC/OS-Ⅱ的任務(wù)管理機制,根據(jù)系統(tǒng)的功能要求,劃分為6個系統(tǒng)任務(wù),并設(shè)置每個任務(wù)的優(yōu)先級,如表1所示。
(1)Motor_Drive_Task——定時中斷節(jié)拍進行計時,在任務(wù)循環(huán)塊中,接收圖像處理控制算法中形成的電機驅(qū)動參數(shù),即Image_Analyze_Task任務(wù)中產(chǎn)生的電機驅(qū)動參數(shù),更新PWM輸出,完成機器人所需運動軌跡姿態(tài)的調(diào)整,隨后掛起自身。
(2)Image_Analyze_Task——獲取在內(nèi)存循環(huán)隊列中的圖像數(shù)據(jù),在任務(wù)循環(huán)塊中檢測圖像信號量。如果沒有在一定時期內(nèi)進行任務(wù)調(diào)度,則掛起自身;若有則對獲取內(nèi)存循壞隊列中的圖像數(shù)據(jù)進行分析處理,得出電機驅(qū)動參數(shù)并發(fā)送該信息至消息隊列中,然后釋放圖像信號量,再掛起自身。
(3)Sound_Record_Task——用于采集、存儲機器人周圍環(huán)境聲音信息數(shù)據(jù)到聲音隊列中。
(4)Sound_Play_Task——定時從內(nèi)存聲音播放存儲處,即Play_Buffer中提取數(shù)據(jù)放到隊列中進行播放。
(5)Image_Collect_Task——建立窗口界面,在任務(wù)循壞塊中檢測圖像信號量。如果沒有在一定時期內(nèi)進行任務(wù)調(diào)度,則掛起自身;如果檢測到圖像信號量,則采集一幅圖像到圖像存儲循壞隊列中,采集完成,再釋放圖像信號量,掛起自身。
(6)GUI_Update_Task——按照μC/GUI手冊規(guī)定,當其使用窗口回調(diào)機制,建議把它設(shè)為最低優(yōu)先級別的任務(wù),用來更新回調(diào)信息,并且該任務(wù)必須實現(xiàn),且要定期調(diào)用。
評論