嵌入式系統(tǒng)在機器人視覺中的應用
隨著Internet技術與信息家電、工業(yè)控制技術等的結合日益緊密,嵌入式設備與Internet的結合已成為大勢所趨。此時期新的微處理器層出不窮,要求嵌入式操作系統(tǒng)的設計更加便于移植,支持更多的微處理器。嵌入式系統(tǒng)的開發(fā)需要強大的硬件開發(fā)工具和軟件支持包。通用計算機上使用的新技術、新觀念開始逐步移植到嵌入式系統(tǒng)中,如嵌入式數(shù)據(jù)庫、移動代理、實時CORBA等。各類嵌入式Linux操作系統(tǒng)在全球數(shù)以百萬計愛好者的合力開發(fā)下迅速發(fā)展,由于具有源代碼開放、系統(tǒng)內(nèi)核小、執(zhí)行效率高、網(wǎng)絡功能強,多媒體人機交互界面友好等特點,很適合信息家電等嵌入式系統(tǒng)的需要。
一嵌入式系統(tǒng)的技術特點
早期的嵌入式系統(tǒng)設計方法,通常采用"硬件優(yōu)先"原則,即在只粗略估計軟件任務需求的情況下,首先進行硬件設計與實現(xiàn)。然后,在此硬件平臺上再進行軟件設計。因而很難達到充分利用軟硬件資源,取得最佳性能的效果。同時,一旦需要對設計進行修改時,整個設計流程將重新進行,這對成本和設計周期的影響很大。這種傳統(tǒng)的設計方法只能改善軟件/硬件各自的性能,在有限的設計空間不可能對系統(tǒng)做出較好的性能綜合優(yōu)化,在很大程度上依賴
于設計者的經(jīng)驗和反復實驗。
上世紀90年代以來,隨著電子系統(tǒng)功能的日益強大和微型化,硬件和軟件也不再是截然分開的兩個概念,而是緊密結合、相互影響的。因而出現(xiàn)了軟硬件協(xié)同(codesign)設計方法,即使用統(tǒng)一的方法和工具對軟件和硬件進行描述、綜合和驗證。在系統(tǒng)目標要求的指導下,通過綜合分析系統(tǒng)軟硬件功能及現(xiàn)有資源,協(xié)同設計軟硬件體系結構,以最大限度地挖掘系統(tǒng)軟硬件能力,避免由于獨立設計軟硬件體系結構而帶來的種種弊病,得到高性能低代價的優(yōu)化設計方案。
二嵌入式系統(tǒng)的發(fā)展趨勢
在網(wǎng)絡、通信、微電子發(fā)展的基礎上,以及勢不可擋的數(shù)字化信息產(chǎn)品的強大需求推動下,嵌入式技術具有廣闊的發(fā)展創(chuàng)新空間。
(1)低功耗、高性能、高可靠性的系統(tǒng)需求對我國芯片設計是一個機遇。以嵌入式處理器為領頭的國產(chǎn)CPU、片上系統(tǒng)(SoC)、片上網(wǎng)絡系統(tǒng)(NoC)將有很大的發(fā)展。
(2)Linux正逐漸成為嵌入式操作系統(tǒng)的主流;J2ME技術也將對嵌入式軟件的發(fā)展產(chǎn)生深遠影響。目前自由軟件技術備受青睞,并對軟件技術的發(fā)展產(chǎn)生了巨大的推動作用。嵌入式操作系統(tǒng)內(nèi)核不僅需要具有微型化、高實時性等基本特征,還將向高可信性、自適應性、構件組件化方向發(fā)展;支撐開發(fā)環(huán)境將更加集成化、自動化、人性化;系統(tǒng)軟件對無線通信和能源管理的功能支持將日益重要。近幾年來,為使嵌入式設備更有效地支持Web服務而開發(fā)的操作系統(tǒng)不斷推出。這種操作系統(tǒng)在體系結構上采用面向構件、中間件技術,為應用軟件乃至硬件的動態(tài)加載提供支持,即所謂的"即插即用",在克服以往的嵌入式操作系統(tǒng)的局限性方面顯示出明顯的優(yōu)勢。
(3)Java虛擬機與嵌入式Java將成為開發(fā)嵌入式系統(tǒng)的有力工具。嵌入式系統(tǒng)的多媒體化將變成現(xiàn)實。它在網(wǎng)絡環(huán)境中的應用已是不可抗拒的潮流,并將占領網(wǎng)絡接入設備的主導地位。
(4)嵌入式系統(tǒng)與人工智能、模式識別技術的結合,將開發(fā)出各種更具人性化、智能化的實際系統(tǒng)。智能手機、數(shù)字電視,以及汽車電子的嵌入式應用,是這次機遇中的切入點。伴隨網(wǎng)絡技術、網(wǎng)格計算的發(fā)展,以嵌入式移動設備為中心的"無所不在的計算"將成為現(xiàn)實。
三嵌入式系統(tǒng)在機器人技術中的應用
不論是在工業(yè)控制中,還是在商業(yè)領域里,機器人技術都得到了廣泛的應用。從用于生產(chǎn)加工的傳統(tǒng)工業(yè)機器人到豐富大眾生活的現(xiàn)代娛樂機器人,都與嵌入式系統(tǒng)密不可分。現(xiàn)有的大多數(shù)機器人,都采用單片機作為控制單元,以8位和16位最為常見,其處理速度較低,沒有操作系統(tǒng),無法實現(xiàn)豐富的多任務功能,系統(tǒng)的潛力沒有得到充分的發(fā)掘和應用。
基于ARM9的機器人視覺系統(tǒng)的目標是在選定好的S3C2410平臺上移植并配置Linux操作系統(tǒng),針對平臺和應用的特點,制作合適的文件系統(tǒng),為機器人視覺系統(tǒng)構建穩(wěn)定的軟硬件開發(fā)環(huán)境。其次編寫應用程序,通過S3C2410平臺,從USB攝像頭實時采集圖像,并利用這款嵌入式處理器的強大運算能力,對圖像進行后期的處理,完成目標識別與定位,作為機器人動作單元的輸入。最后針對機器人關節(jié)所使用的電機,編寫特定的設備驅動程序,保證操作系統(tǒng)可準確地控制機器人動作,響應視覺處理的結果,開發(fā)一套完整的"機器人視覺系統(tǒng)"。
1。硬件平臺的選型和搭建
機器人系統(tǒng)如圖1所示。全身由24個舵機組成,控制24個關節(jié)。通過對舵機的控制,可實現(xiàn)機器人的動作。
(1)視覺系統(tǒng)
采用USB攝像頭作為視覺采集器件。其優(yōu)點是接口通用,驅動豐富,傳輸速率快。同時,Linux操作系統(tǒng)對于USB設備的支持較好,方便了應用程序的編寫和調試。網(wǎng)眼(WebEye)v2000攝像頭,采用了ov511芯片(Linux源代碼中有相應的驅動程序),適合用于開發(fā)。
這里采用高端的32位嵌入式微處理器:基于ARM體系結構的S3C2410芯片(由三星公司生產(chǎn)),其主頻為200MHz。它提供了豐富的內(nèi)部設備:分開的16kB指令Cache和16kB數(shù)據(jù)Cache、MMU虛擬存儲器管理、LCD控制器、支持NANDFlash系統(tǒng)引導、系統(tǒng)管理器、3通道UART、4通道DMA、4通道PWM定時器、I/O端口、RTC、8通道10位ADC和觸摸屏接口、IIC-BUS接口、USB主機、USB設備、SD主卡和MMC卡接口、2通道的SPI以及內(nèi)部PLL時鐘倍頻器。S3C2410采用了ARM920T內(nèi)核,0。18μm工藝的CMOS標準宏單元和存儲器單元。
(2)硬件平臺組成
見圖2,一塊核心母板,配備CPU、16MB的NORFlash、64MB的NANDFlash、32MB的SDRAM,并設置系統(tǒng)從NANDFlash啟動;一塊外設電路板,負責系統(tǒng)和外設器件的連接,布設有2個USB接口、1個UART口、24個3針插座(用于控制機器人的關節(jié))以及電源接口等。核心母板與外設電路板通過內(nèi)存插槽進行連接。
分開設計的好處有:升級核心母板可實現(xiàn)系統(tǒng)處理能力的提高;而更換外設電路則可適應不同的應用。這樣就大大節(jié)約了硬件成本,對于開發(fā)和調試也是非常有利的。同時,核心母板本身就是一個最小系統(tǒng),在嵌入式系統(tǒng)設計中,保證最小系統(tǒng)的可靠性是開發(fā)的第一步。
調試核心母板以及外設電路至工作正常。確保開發(fā)板與PC機通信(利用Windows下的超級終端工具,通過串口線連接開發(fā)板與PC機)。
2。軟件平臺的構建和配置
目前,越來越多的嵌入式系統(tǒng)采用了Linux作為操作系統(tǒng)。Linux功能強大,運行穩(wěn)定,驅動齊全,配置靈活,內(nèi)核緊湊,從來就與嵌入式系統(tǒng)有密不可分的關系。Linux內(nèi)核版本眾多,其中2。4系列比較成熟,在嵌入式平臺中應用廣泛,資料齊全。這里使用Linux-2。4。18-rmk7-pxa1版本。
a。配置開發(fā)板軟件環(huán)境
將系統(tǒng)引導程序(俗稱bootloader,其功能相當于PC機中的BIOS)燒寫進入S3C2410核心母板。這里采用了三星公司推薦的vivi程序。通過對vivi中參數(shù)的設置,完成對Flash的分區(qū)。
b。配置、編譯、下載內(nèi)核
(1)下載源代碼,在PC端建立交叉編譯環(huán)境;armv4l-unknown-linux-gcc可以將Linux內(nèi)核編譯為適用于ARM體系結構的二進制代碼;
(2)配置內(nèi)核:使用makemenu-config命令,將USB設備支持、USB攝像頭驅動(針對OV511芯片)、NANDFlash驅動,以及掛載嵌入式文件系統(tǒng)所需要的驅動程序靜態(tài)編譯到內(nèi)核中;
(3)編譯內(nèi)核:使用交叉編譯工具,將源代碼編譯為可執(zhí)行二進制內(nèi)核鏡像,生成文件zImage;
(4)下載內(nèi)核:將zImage通過串口線,利用vivi的數(shù)據(jù)燒寫功能,下載到Flash的內(nèi)核分區(qū)中(kernel);
c。制作文件系統(tǒng)
嵌入式系統(tǒng)中常見的文件系統(tǒng)有CRAMFS、JFFS、JFFS2、YAFFS等。考慮到實際的需求,這里采用了CRAMFS。在內(nèi)核配置時對CRAMFS的驅動代碼進行靜態(tài)編譯,并且利用mkcramfs工具制作經(jīng)過仔細裁剪的文件系統(tǒng)映像,利用vivi的燒寫指令下載到Flash的root分區(qū)。最終的文件系統(tǒng)映像小于3MB,這是由嵌入式系統(tǒng)較為緊張的存儲資源決定的。
啟動系統(tǒng),通過PC機的超級終端,可看到啟動信息:包括內(nèi)核的版本、Flash分區(qū)表、交叉編譯器的版本,以及內(nèi)核中靜態(tài)編譯的組件等。
3。驅動程序的編寫和應用程序的開發(fā)
視覺功能的最終實現(xiàn),首先需要為機器人的關節(jié)電機編寫驅動程序,使操作系統(tǒng)可完成對機器人動作的控制,作為對視覺結果的響應。視覺絕非最終目的,而是機器人獲取信息的一種途徑,其根本目的在于為機器人的動作、行為提供策略或數(shù)據(jù)支持。單純的視覺并沒有意義。
機器人全身的關節(jié)均為舵機。舵機結構簡單,控制方便,外部只有3個引腳:電源、地、PWM信號。對舵機的控制實際上就是要產(chǎn)生頻率、脈寬合適的PWM波。
S3C2410芯片內(nèi)部集成4個PWM發(fā)生單元。驅動程序利用其中的一個作為機器人頭部電機的控制信號源,通過改寫寄存器的值,改變頻率和占空比,產(chǎn)生期望的PWM波。
將驅動程序交叉編譯為模塊,在系統(tǒng)啟動后動態(tài)地插入內(nèi)核中。模塊加載前獨立于內(nèi)核,方便了驅動程序的調試。編寫簡短的測試程序,確認關節(jié)電機可以正常工作。
這里為機器人視覺系統(tǒng)搭建了一個實際的應用場景:活動的目標小球在背景中運動,期望機器人可以識別目標并對其定位,最后控制頭部跟隨目標運動(好像機器人在盯著活動目標觀察一樣)。
機器人視覺處理程序的主要功能為:
(1)從USB攝像頭實時讀取視頻數(shù)據(jù),進行簡單的預處理;
(2)隨后進行圖像處理,主要完成空域的圖像增強。通過對圖像進行二值化,將目標小球從背景中提取出來;
(3)計算目標的位置,進而計算出機器人頭部的旋轉角度,通過舵機驅動程序,控制機器人頭部轉動到目標所在角度,實現(xiàn)對目標物體的跟蹤。
經(jīng)過實驗,機器人頭部可較好地跟蹤目標,實現(xiàn)了視覺原型系統(tǒng)。
4。拓展性工作
機器人視覺系統(tǒng)的開發(fā)只是嵌入式系統(tǒng)在機器人領域中應用的一個方面。事實上,還有很多值得我們繼續(xù)去實現(xiàn)的子系統(tǒng),諸如語音系統(tǒng)(語音識別、語音輸出)、行走控制(設計算法,實現(xiàn)平穩(wěn)的行走)、網(wǎng)絡系統(tǒng)(未來的機器人將不再會是獨立的個體,多機器人的協(xié)同工作是必然的趨勢;同時,機器人同其他設備的連接需求也越來越迫切)等等。應當承認,雖然目前的嵌入式處理器已經(jīng)具備了比較強大的功能,但是受功耗、體積、成本因素的限制,在實時視頻(音頻)處理、多媒體協(xié)同計算等方面,其速度仍然無法滿足需求;所以,更強勁的嵌入式處理器也是將來在為機器人選擇控制單元時的重要考慮因素。
四嵌入式系統(tǒng)的前景
從本文所述的機器人視覺系統(tǒng)中就可看出嵌入式系統(tǒng)的強大功能與廣闊應用領域。在當今數(shù)字信息和網(wǎng)絡技術高速發(fā)展的后PC(Post-PC)時代,嵌入式系統(tǒng)已被廣泛應用于移動計算平臺(PDA、掌上計算機)、信息家電(數(shù)字電視、機頂盒、網(wǎng)絡設備)、無線通信設備(智能手機、股票接收設備)、工業(yè)/商業(yè)控制(智能工控設備、POS/ATM機)、電子商務平臺、甚至軍事應用等諸多領域,其前景無疑是令人非常樂觀的。