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