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