賽靈思 Spartan FPGA 為強大的教學(xué)工具奠定基礎(chǔ)。這種教學(xué)工具能夠根據(jù)學(xué)生的需要自我改造。
可能沒有比機器人更能吸引初中生及高中生對科學(xué)技術(shù)感興趣的教學(xué)設(shè)備了。對初中生和高中生來說,擺弄機器人是一種掌握新概念,親眼見識技術(shù)使用情況的實踐方式。構(gòu)建機器人能夠激發(fā)學(xué)生們克服智力難題,取得優(yōu)異的科學(xué)、技術(shù)成績。
為此,我藉此文介紹一種可供教師用于技校的機器人教學(xué)活動的教學(xué)平臺。該平臺理念是我任教的高中(意大利米蘭附近的ITCS Erasmo da Rotterdam)提出來的。當(dāng)時只是為了入圍 RoboCup青少年機器人世界杯(RoboCup Junior)。我們隊參加的是“救援機器人”組別的比賽,即讓機器在重現(xiàn)的災(zāi)害場景中發(fā)現(xiàn)受害者。這些機器人必須完成復(fù)雜程度不同的多重任務(wù),比如在平坦路面上沿直線行走,判斷通過崎嶇地形上各障礙物的路徑,以及拯救部分指定的受害者等。
與其它采用不同類型的微型計算機的普通傳播平臺相比,我們采用 FPGA 的設(shè)計具有開放、靈活、可不斷發(fā)展演進,以及可重復(fù)使用等基本特性。
我們使用 Digilent Nexys2 教學(xué)開發(fā)板,在賽靈思 Spartan?-3E 器件的基礎(chǔ)上制作了該機器人的 2011 版。在撰寫本文時,我們正在把這個版本移植到 Spartan-6 FPGA 上,以便參加將在 2012 年 4 月舉行的下一屆意大利青少年機器人世界杯比賽。按計劃,下一版本(2013 版)將運行于Zynq ? -7000 可擴展處理平臺器件上。
用這種方法,我們設(shè)計出的一種救援機器人能夠年復(fù)一年不斷發(fā)展演進, 從第一種原型發(fā)展到了現(xiàn)有的Nessie 2011 版本(Nessie 由 Nexys和尼斯湖水怪(Loch Ness Monster)而得名,尼斯湖水怪的長脖子與我們的機器人相似)。FPGA 具有高度的靈活性,可以在不改變其基本物理結(jié)構(gòu)以及保持相同的設(shè)計基礎(chǔ)架構(gòu)同時,讓機器人的架構(gòu)隨學(xué)生知識的增長而重構(gòu)。
挑戰(zhàn)
ITCS Erasmo da Rotterdam 是一所位于意大利北部米蘭近郊的技校,學(xué)生參差不齊,難以教導(dǎo)他們深入學(xué)習(xí)科技知識。
從四年前開始,我決定創(chuàng)辦一個開放空間,后來我取名為“機器人教學(xué)永久實驗室”,在那里學(xué)生們可以采用與標(biāo)準課堂授課完全不同的方法開展實驗。在此,他們可以在互動環(huán)境中接觸技術(shù)學(xué)科,探討一些異乎尋常的主題內(nèi)容,選修一些自己感興趣的課程,安排好自己工作并從實踐中直接得到反饋。換句話說,他們根據(jù)由來已久且為人熟知的“情景認知”模型[1] 在“積極學(xué)習(xí)空間”中開展實驗。在這里,同學(xué)們不僅可以相互協(xié)作或同輔導(dǎo)員合作,同時還可在達成共識的基礎(chǔ)上追求共同的目標(biāo)。
在這個學(xué)習(xí)空間中,學(xué)生扮演掌握多種解決方案的“認知學(xué)徒”。而教師則充當(dāng)“專家”角色,負責(zé)提出實際任務(wù)和策略的具體流程,讓學(xué)生們獨立嘗試,需要時才予以輔導(dǎo)。
為不同學(xué)科的匯聚和知識的交流提供肥沃的溫床,機器人是自然之選。我們認為參加青少年機器人世界杯比賽的樂趣強烈地刺激了學(xué)生對科技實驗的積極參與。
解決方案
我認識到,要讓這種方法有效,我必須提議數(shù)字電子學(xué)和信息學(xué)等普通課程涵蓋的課題,但主要針對哪些比學(xué)生們能夠獨立解決的應(yīng)用更復(fù)雜的應(yīng)用。這樣他們就需要分工合作,或者需要得到能夠提出正確模型的資深教師的協(xié)助。
我知道需要制作什么,但我不知道怎么制作。一切都必須在實驗室中提出和開發(fā)出來,由學(xué)生共同探討設(shè)計,尋找解決方案。
在經(jīng)過一番深思熟慮之后,我得出一個結(jié)論:最可行的就是采用一種基于某種靈活的平臺(如 FPGA),而不是標(biāo)準微型計算機上的解決方案。這是因為 FPGA 是唯一能夠滿足特性要求且能夠跟上實驗活動的動態(tài)和演變范圍的器件。
我最初選擇的是基于 Spartan-3E的教學(xué)板卡,因為它能夠提供我們一直尋求的必要特性,即開放性、靈活性、演進能力、硬件的重復(fù)利用性以及性能的豐富性。
? 開放性。由于學(xué)生必須積極參與整個設(shè)計流程, 從傳感器接口到CPU,再從 CPU 到激勵器。
? 靈活性。因為系統(tǒng)的整個架構(gòu)以及器件的性質(zhì)和類型不應(yīng)事先確定,必須從創(chuàng)造性學(xué)習(xí)環(huán)境所激發(fā)的研究過程中產(chǎn)生。
? 演進能力。因為在每次青少年機器人世界杯結(jié)束后,學(xué)生都必須認識到他們作品的缺陷,了解如何進行適當(dāng)修改,試圖找出更先進的解決方案。該系統(tǒng)必須與學(xué)生的專業(yè)知識保持同步發(fā)展。
? 可重用性。以避免硬件和學(xué)校經(jīng)費不必要的浪費。
? 低成本、高性能。我們必須控制沒有得到完全定義但需要高度并行運行的大量器件和外設(shè)。該 CPU 的功能應(yīng)非常強大,但架構(gòu)相對簡單,易于接口。
NESSIE 2012:方框圖及描述
我們用基于板載 Spartan 3E-1200 的Diligent 板卡來實現(xiàn)我們的目標(biāo),這成為四年期項目開發(fā)的統(tǒng)一主線。從圖 1 可以看到,學(xué)生們設(shè)計的救援機器人發(fā)生了明顯的變化。2008 年它還只是勉強能動,到 2011 年它讓我們從 65 支參賽團隊中脫穎而出,順利殺入 15 強,成功進入決賽。
學(xué)生的專業(yè)知識年復(fù)一年地增長,為救援機器人的進一步改進奠定了基礎(chǔ)。這些改進我們準備用在參加今年4 月舉辦的青少年機器人世界杯大賽的救援機器人上。
首先我們從 Spartan-3E 升級到Spartan-6 系列,將標(biāo)準處理器本地總線的總線基礎(chǔ)架構(gòu)升級為 AXI4 接口。其次,我們對部分用于跟蹤基準線的關(guān)鍵傳感器進行了修改,重新設(shè)計了電機接口,將用于自動速度控制的 PID算法直接移植到了 FPGA 架構(gòu)中。
圖 2 是目前設(shè)計的完整的系統(tǒng)方框圖。從這個圖上可以清楚地看到豐富的教學(xué)課題,便于教員在數(shù)字控制系統(tǒng)課程中講授。同樣顯而易見的是,與采用標(biāo)準微型計算機制作的機器人平臺相比,從性能方面來說,該系統(tǒng)具有高度的并行性。
此外,機器人實驗室中開展的活動對我們學(xué)校普通教學(xué)課程帶了了良好影響。FPGA 已成為讓技術(shù)理論迅速有效地變?yōu)楝F(xiàn)實的工具,從而激發(fā)學(xué)生對涉及的課題產(chǎn)生出濃厚的興趣。
管理 NESSIE 的行走問題
在有 Spartan-6 系列提供豐富的可用資源的情況下,我面臨的問題是如何將在連續(xù)系統(tǒng)上分析得到的 PID 控制方法變?yōu)楝F(xiàn)實,運用到數(shù)字系統(tǒng)中,讓學(xué)生有機會親手解決方程組的數(shù)字化問題,并立即將其對應(yīng)到數(shù)字電子電路的元件。
我從典型的 PID 方程式入手:
將其轉(zhuǎn)換成另一種典型的有限差分算法:
其中,Kp 為比例放大率,TI 和 TD 為積分運算和導(dǎo)數(shù)運算的時間常數(shù),TC為采樣周期。根據(jù) W. Zhao 等撰寫的《用于小型機器人的閉環(huán)控制系統(tǒng)的FPGA 實現(xiàn)方案》[2] 一文中提出的建議,我把該模型轉(zhuǎn)換為如下的非常簡單的迭代算法:
其中
Δa(n) 可通過下列算式得出:
迭代的步驟為:
Ki 系數(shù)可通過下列算式得出:
其中 PID 參數(shù)可以采用 Ziegler Nichols 方法實證性地微調(diào)。
圖 3 大致繪出了 FPGA 實現(xiàn)方案的 PID RTL 模型。圖 4 是我們?yōu)镹essie 參加 2012 年青少年機器人世界杯大賽設(shè)計的完整行走控制 IP。
?
從老師的觀點出發(fā),這種方法極富成效,因為它采用線性轉(zhuǎn)換,且其從概念到立即實現(xiàn)物理系統(tǒng)這個相關(guān)轉(zhuǎn)化容易做到。這個過程鼓勵學(xué)生嘗試更多實驗,深入掌握和學(xué)習(xí)這個系統(tǒng)。
如何讓 NESSIE 的眼睛感知光線
作為一個救援機器人,Nessie 的任務(wù)是在人為重現(xiàn)的災(zāi)難場景中發(fā)現(xiàn)受害者。機器人在崎嶇地形上行進、越過障礙物和瓦礫、搜尋待拯救的受害者,都需要用視覺跟隨白色背景上的一道黑線。
有效的跟蹤系統(tǒng)是決定青少年機器人世界杯大賽中所取成績的關(guān)鍵。成功完成有引導(dǎo)的賽段是機器人有足夠的時間完成其它比賽項目的必備起點,包括避開障礙物和瓦礫,以及拯救受害者等。
我們將通過使用內(nèi)置一個光積分與吸持電路的 128x1 線性傳感器陣列(即Taos 1401R-LH)來解決 Nessie 的視覺功能問題。
該線性陣列由一個集成有 128 個二極管的模塊和一個使用兩個電容對二極管產(chǎn)生的電荷進行積分和保持的模擬電路組成。其中一個電容負責(zé)采集電流,另一個則負責(zé)復(fù)制回來并在掃描和采集下一個電荷前予以保持。該傳感器實際上同時執(zhí)行兩項操作:完成積分、采集新的測量值,同時以掃描的方式讀取上一個周期中累計的電荷。一次掃描周期中積分的電荷掃描結(jié)束時即被轉(zhuǎn)移到保持電容中。
每個周期開始于“開始積分”(Start Integration)信號的上升沿。在第一個時鐘周期內(nèi),該信號會斷開一個內(nèi)部開關(guān),以隔離保持電容,同時刪除存儲在積分電容器中的電荷。所有 128個二極管同時并行執(zhí)行該過程。隨后周期進行新的積分過程,在這個過程中傳感器讀取新的亮度數(shù)據(jù)的全部128 個值。與此同時,在每個上升沿,保持電容器中存儲的電荷輸出到輸出放大器上,在模擬輸出引腳上讀出跨越放大器兩端的電壓。該電壓被讀取到移位寄存器中。通過這種方法,就可以一邊讀取上一次由光照所積累的電荷而產(chǎn)生的電壓,一邊在積分電容器中累計當(dāng)前采集的值。
在此,F(xiàn)PGA 再度證明其價值。釋放 CPU 負載,刷新積累的電流,并保存轉(zhuǎn)換結(jié)果值以備進一步處理。圖5 即是我們?yōu)榇四康脑O(shè)計的 IP 的圖示。它還說明了“雙緩存”機制的作用,即使用 Spartan 器件上提供的內(nèi)部BRAM,可以通過處理采集到的上一幀來覆蓋新幀的采集。通過這種方法,我們可以加快圖像處理速度,提取出機器人導(dǎo)航所需的全部信息。
高中水平的數(shù)字處理
鑒于本機器人活動的教學(xué)性質(zhì),我也使用本設(shè)計向?qū)W生講授部分簡單的數(shù)字圖像處理元件。
從圖 2 中可以看到,我們給設(shè)計加裝了一個小型圖像顯示器,以便顯示 Taos 傳感器看到的內(nèi)容,同時了解如何進行處理才能提取出用于引導(dǎo)Nessie 完成其功能所必需的信息。圖6 是一幀中采集的原始圖像。
在設(shè)計 Nessie 時,學(xué)生們必須找出一種操控掃描到的線的方法,從而在可能存在的瓦礫和廢棄物之間識別黑線的位置,并定義控制兩個電機速度的算法,讓機器人正確地跟蹤黑線行進。
通過這種方法,學(xué)生掌握了如何處理像素這樣的簡單問題,學(xué)習(xí)到不同的數(shù)學(xué)運算在實現(xiàn)這項功能上的效果。
具體來說,為了判斷黑線的位置,他們會找到一些基本的運算方法:設(shè)定閾值、椒鹽濾波、邊緣探測和線段分割。
掃描到的線需要按不同的光強度和長度分段組合,而且所有這些對象必須正確排序,才能識別方向,引導(dǎo)機器人前行。這就需要在硬件 PID 環(huán)路之外使用軟件實現(xiàn)第二個控制環(huán)路,用于優(yōu)化跟蹤基準線運動,根據(jù)傳感器軸線和黑線之間的角度以及側(cè)面白色區(qū)域的相對大小調(diào)整兩個電機的相對速度。
激勵工具
該系統(tǒng)的復(fù)雜程度對我的學(xué)生的年齡是適合的,經(jīng)證明是一種引導(dǎo)他們接觸更高難度的內(nèi)容的良好方式,比如二維圖像處理。這些初始難度的問題易于入門,能激勵學(xué)生不斷提升自己的技術(shù)和科學(xué)知識,通過解決更為復(fù)雜的問題掌握新的技能。根據(jù)我在高中教學(xué)的長期經(jīng)驗,我可以放心地說,有了這樣的經(jīng)驗,學(xué)生會更有興趣和動力繼續(xù)技術(shù)學(xué)習(xí),能更有把握地進入高等學(xué)府深造以及在所從事的專業(yè)領(lǐng)域就業(yè)。
在我講授采用這種靈活的 FPGA平臺的機器人技術(shù)的三年中,我發(fā)現(xiàn)我的學(xué)生對“實時”計算機系統(tǒng)的內(nèi)在構(gòu)造有了更深入的認知。他們還學(xué)習(xí)到如何設(shè)計出更具原創(chuàng)性的內(nèi)部外設(shè),如何增強團隊合作能力,如何增強獨立面對問題并找到正確的解決方案的能力。
鑒于本項目的教育目的,我們在ITCS Erasmo da Rotterdam 的團隊正在鼓勵學(xué)生用他們在 Nessie 上所學(xué)的知識為通過意大利的州考試,順利畢業(yè)鋪平了道路。該考試有一項單獨的內(nèi)容,就是學(xué)生必須論述自己的研究道路。Nessie 事實上激勵部分學(xué)生以優(yōu)異的成績?nèi)〉?a target="_blank">電子技術(shù)學(xué)位。
評論