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