嵌入式移動機(jī)器人控制器設(shè)計
2013-05-24 by:廣州有限元分析、培訓(xùn)中心-1CAE.COM 來源:仿真在線
1引言
移動機(jī)器人控制器研究是機(jī)器人技術(shù)的一個重要領(lǐng)域。由于移動機(jī)器人要通過與環(huán)境的互動完成既定的任務(wù),所以其控制器的信息處理能力和實時控制性能從根本上決定了其整體性能。以往,人們通常用高性能的PC機(jī)作為車載控制系統(tǒng),然而,其相對龐大的體積和重量造成了沉重的載重負(fù)擔(dān)嚴(yán)重制約了移動機(jī)器人的微、小型化和靈活性。另一方面,將通用型PC機(jī)應(yīng)用于移動機(jī)器人會造成嚴(yán)重的資源浪費,降低了機(jī)器人的整體性價比,并且一般的桌面操作系統(tǒng)很難滿足移動機(jī)器人控制的實時性要求。
基于此,本文提出了一種基于數(shù)字信號處理器( Digital Signal Processor, DSP)和uC/OS- II實時內(nèi)核的移動機(jī)器人控制器設(shè)計方案。
2控制器硬件系統(tǒng)設(shè)計
本文所提設(shè)計方案采用基于DSP的系統(tǒng)硬件設(shè)計。TMS320F2812型32位定點DSP集數(shù)字信號處理、事件管理和嵌人式控制功能于一體,具有豐富的片內(nèi)外設(shè)資源,可以大大簡化外圍電路的設(shè)計。此外,為提高控制器的開放性采取模塊化設(shè)計,將基于DSP的最小系統(tǒng)設(shè)計為一個核心模塊(核心板),而將信號采集和處理、功率驅(qū)動等功能電路分別設(shè)計成相應(yīng)的獨立模塊。
2.1控制器電路原理設(shè)計
圖1為DSP核心板的硬件原理圖。核心板上幾個電平轉(zhuǎn)換單元的功能是實現(xiàn)SV電平和3.3 V電平的轉(zhuǎn)換,用于DSPI/O接口電平(3.3 V)與外圍器件典型電平的匹配,確保DSP芯片安全。在DSP與電機(jī)之間采用光電耦合器實現(xiàn)隔離。在需對機(jī)器人的運動進(jìn)行精確控制的場合,應(yīng)通過轉(zhuǎn)速傳感器反饋電機(jī)的轉(zhuǎn)速信號。此外,核心板上還擴(kuò)展了256 K* 16位的外部RAM。
2.2移動機(jī)器人控制器工作原理
移動機(jī)器人的最基本的功能是避障導(dǎo)航。傳感器采集環(huán)境中障礙物信息,控制器基于這些信息控制驅(qū)動電機(jī),從而控制機(jī)器人的運動。
目前用于導(dǎo)航的傳感器主要有紅外測距傳感器、超聲波測距傳感器和觸碰開關(guān)等。其輸出信號的形式為模擬電壓信號或開關(guān)電壓信號。TMS320F2812型DSP有16路12位分辨率ADC通道,可以配置為兩個獨立的8通道模塊或者一個級聯(lián)的16通道模塊,支持靈活的信號采集方式。在每次轉(zhuǎn)換前,由程序設(shè)置4個寄存器ADCCHSELSEQI-4的值,確定本次要采樣和轉(zhuǎn)換的通道。轉(zhuǎn)換完成后,數(shù)據(jù)被保存在結(jié)果寄存器組ADCRESULTn中,應(yīng)用程序訪問該寄存器組獲取傳感數(shù)據(jù)。開關(guān)型信號的采集可以通過對特定引腳的查詢或者DSP捕捉單元實現(xiàn)。DSP的捕捉單元在捕捉到引腳上的電平變化后,截取并保存定時器的當(dāng)前計數(shù)值,因此應(yīng)用程序可以計算出CPU等待此電平變化所用的時間。這種方式比較適用于采集"觸發(fā)-返回"式測距傳感器的信號。而觸碰開關(guān)因為工作方式相對簡單,適用程序查詢的方式。
TMS320F2812型DSP可以方便地實現(xiàn)多路電機(jī)控制,其事件管理模塊(EVM)支持多達(dá)16路帶可編程死區(qū)的PWM輸出??梢詽M足移動機(jī)器人的牽引電機(jī)、舵機(jī)及云臺電機(jī)的控制需求。
3控制器軟件系統(tǒng)設(shè)計
本設(shè)計采用基于實時操作系統(tǒng)的軟件設(shè)計方案。與傳統(tǒng)前后臺式程序設(shè)計相比,基于實時內(nèi)核的程序設(shè)計具有時間確定性強(qiáng)、便于功能擴(kuò)展和剪裁等優(yōu)點。uC/OS- II是一種源代碼公開的實時內(nèi)核,已經(jīng)取得了美國航空管理局(Federal Aviation Administration ,FAA)的安全認(rèn)證,是一款成熟的嵌人式操作系統(tǒng)。
uC/OS-II實時操作系統(tǒng)內(nèi)核的核心功能是任務(wù)調(diào)度和管理,通過任務(wù)調(diào)度器總是將CPU的使用權(quán)賦予就緒的具有最高優(yōu)先權(quán)的任務(wù)。任務(wù)調(diào)度器的工作流程是首先確定當(dāng)前時刻應(yīng)獲得CPU使用權(quán)的任務(wù),然后引發(fā)一次軟件中斷,在中斷服務(wù)程序中將CPU各寄存器的當(dāng)前值(即斷點數(shù)據(jù))保存在即將被剝奪CPU使用權(quán)的任務(wù)的堆棧中。最后,從待運行任務(wù)的堆棧中恢復(fù)其上一次被剝奪CPU使用權(quán)時的斷點數(shù)據(jù),實現(xiàn)任務(wù)的切換.
3.1 uC/OS-II內(nèi)核在DSP上的移植
uC/0S-II是一個通用型內(nèi)核,要在DSP上運行必須進(jìn)行移植。所謂移植就是使一個通用的操作系統(tǒng)內(nèi)核能夠在一個特定的處理器/控制器上有效地運行。
實時內(nèi)核移植的主要工作是編寫與處理器相關(guān)代碼,移植的步驟如下:
(1)編輯頭文件OS_CPU.H,將uGIOS-II自定義的數(shù)據(jù)類型與TMS320F2812DSP的數(shù)據(jù)類型匹配起來。
(2)在程序文件OS_CPU_C.C中編寫任務(wù)堆棧初始化函數(shù)OSTaskStklnit ()。文件中其他函數(shù)用于擴(kuò)展系統(tǒng)功能,在本設(shè)計中只聲明了這些函數(shù),而沒有編寫函數(shù)體。
(3)在程序文件OS_CPU_A.ASM中用匯編語言編寫4個系統(tǒng)函數(shù)OSStartHighRay() ,OSCtxSw(),OSIntCtxSw()OSTick-ISR().
(4)編輯頭文件OS CFG.H。是實現(xiàn)uC/OS- II的可剪裁性的關(guān)鍵。
(5)測試移植代碼。
(6)編寫驅(qū)動程序庫。
3.2基于實時內(nèi)核的程序設(shè)計
基于實時內(nèi)核的多任務(wù)系統(tǒng)可劃分為兩個層次,即系統(tǒng)層和應(yīng)用層。系統(tǒng)層由內(nèi)核和驅(qū)動程序庫組成,而應(yīng)用層包括用于達(dá)成機(jī)器人任務(wù)目標(biāo)的全部代碼。
在本方案應(yīng)用層程序設(shè)計中,將機(jī)器人的任務(wù)分解成AD采集、觸碰開關(guān)量信號采集、測距開關(guān)量采集、頻率量采集、機(jī)器人運動控制、決策和信息顯示等幾個用戶任務(wù)。并為共享數(shù)據(jù)和資源設(shè)置相應(yīng)的信號量保證任務(wù)的同步。系統(tǒng)中各任務(wù)及其同步機(jī)制如圖2所示。
數(shù)據(jù)采集任務(wù)將數(shù)據(jù)暫存在相應(yīng)的緩沖區(qū)中。決策任務(wù)通過融合這些信息,實現(xiàn)"感知-動作"映射。顯示任務(wù)根據(jù)各傳感數(shù)據(jù)點亮或熄滅相應(yīng)的狀態(tài)指示燈。運動控制任務(wù)根據(jù)決策任務(wù)的決策結(jié)果控制機(jī)器人的運動。本方案為4個傳感器數(shù)據(jù)緩沖區(qū)設(shè)置了信號量集,用于同步數(shù)據(jù)采集任務(wù)和決策、顯示任務(wù)。決策任務(wù)將最終決策通過消息郵箱通知運動控制任務(wù)。
4實驗及結(jié)果分析
如前所述,實時內(nèi)核移植完成后應(yīng)對移植代碼進(jìn)行測試,以驗證移植是否成功。然后,本文以三輪式小車為載體進(jìn)行了移動機(jī)器人避障實驗。
4.1實時內(nèi)核移植代碼測試
本測試建立了兩個任務(wù)Task 1()和Task2(),分別在通用UO引腳GPIOF3 、GPIOFI2上產(chǎn)生方波。Task l()和Task2()的優(yōu)先級分別為0和1,通過一個互斥型信號量flag同步。這兩個用戶任務(wù)的工作流程如表1所示程序運行后,在示波器上觀察到GPIOF3(上),GPIOFI2(下)引腳上的電平變化如圖3所示。其中,圖3(a)所示為,Task2 ( )無限期等待信號量flag情況下的引腳電平變化。圖3(b)所示是Task2()等待信號量flag的時限設(shè)為20個節(jié)拍時的引腳電平變化。
從圖3(a)可見Task 1()將GPIOF3上的電平翻轉(zhuǎn)后,延時30個節(jié)拍(對應(yīng)圖中三格)發(fā)送信號量,由于Task2()在無限期地等待信號量,所以,當(dāng)Taskl()延時期滿后,Task2)立即獲得信號量,并翻轉(zhuǎn)GPIOFI2引腳電平。在圖3(b)中,Task2()延時10個節(jié)拍(一格)后,申請信號量,但是由于Taskl()未釋放信號量,所以進(jìn)人等待狀態(tài),等待20個節(jié)拍后,放棄等待,繼續(xù)運行程序運行結(jié)果表明,實時內(nèi)核已能正常工作,移植成功。
4.2移動機(jī)器人避障實驗
本實驗采用一個三輪小車作為機(jī)器人本體。小車由左右兩個微型電機(jī)驅(qū)動,電機(jī)內(nèi)部集成了功率放大電路。車體前端安裝兩個夏普(SHARP)GP2D12型的紅外測距傳感器,輸出信號為0V-5V模擬電壓。
DSP根據(jù)測距傳感數(shù)據(jù)判斷障礙信息,依據(jù)"感知一動作"映射表作出決策,控制電機(jī)的運轉(zhuǎn),從而驅(qū)動小車避開障礙物。"感知一動作"映射表如圖4所示,該映射表以"表"的形式存儲在DSP的存儲器中。
本實驗使用4個用戶任務(wù)用戶任務(wù)task_ad(), task_decide(),task_led(),task_wm(),分別用于采集模擬數(shù)據(jù)、決策、LED顯示控制和運動控制(電機(jī)控制)。
避障實驗在小型機(jī)器人昆球場地中進(jìn)行。小車向任意初始方向出發(fā),到達(dá)場地邊緣后改為平行于場地邊緣前進(jìn)。到達(dá)拐角處,轉(zhuǎn)而沿另一邊緣前進(jìn)。圖5所示為小車到達(dá)場地邊緣和在拐角處轉(zhuǎn)向時的場景。
實驗結(jié)果表明,該控制器可以控制小車以極少的碰撞避開環(huán)境中障礙物??紤]到實驗是在只有兩個傳感器的條件下進(jìn)行的.這種碰撞是合理的。
5結(jié)束語
本文所提方案由實時多任務(wù)內(nèi)核和DSP分別構(gòu)成軟硬件平臺,一方面,克服了控制器的性能與體積的矛盾,具有較高的性價比,另一方面簡化了應(yīng)用程序設(shè)計,提高了系統(tǒng)功能的可擴(kuò)展性和剪裁性,具有較高的開放性。
相關(guān)標(biāo)簽搜索:嵌入式移動機(jī)器人控制器設(shè)計 CFD培訓(xùn) CFD流體分析培訓(xùn) cfd視頻 fluent cfx pumplinx軟件培訓(xùn) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 有限元培訓(xùn)