1. 設計介紹
(Preliminary Paper)
設計介紹
當前軍事科技的展望,除了致力於火力及裝甲上的升級外,另一方面即是研究所謂的無人載具並加以實作,目前廣為人知耳熟能詳的即是美軍的無人飛行載具(Unmanned Aerial Vehicle, UAV),但當前這種無人載具能完成的協同作業僅有協同偵察任務,特殊的攻擊行動往往仍是透過遠端人員遙控完成,我們發展的系統即是希望無人載具可以跳脫過去一對一的控制系統,達成一對多的控制概念。
主控端可以規劃戰術後將戰術傳達至受控端,讓受控端去執行特殊的協同作業,並隨時回報行動區域中最新的資訊(諸如各隊員相對位置等)。
由於 Altera DE2-70 有觸控螢幕的模組可以向外擴充做使用,且為可程式化之面板,因此透過 Altera DE2-70 作為主控端系統並另外裝設藍芽組件建立一組藍芽區域網路來連接三組樂高機器人(Lego NXT)以實作上述的控制概念。應用的領域大可至軍事之無人駕駛科技的發展應用(例如:前述的一對多遙控系統),小可至機器平台之部分組件之協同運作(例如:一隻機器人的左手臂與右手臂)。
由於偏向小單元結合成大單元的方式去做各個硬體的連接及應用,所以未來的擴充性很強,無論是無線網路的模組替代,或是受控端機體的更換甚至控制介面的進步等,都相當容易去做更新及搭配。
(Revision: 4 / 2010-06-30 22:24:12)
2. 功能描述
(Final Project Paper)
Lego NXT 可外接超音波感應器,能夠偵測障礙物並回傳該障礙物之距離,我們讓 Lego NXT 在原地自轉掃描四周,在旋轉的過程中,一直偵測場地界線之圍牆與 Lego NXT 之距離,經藍芽傳送到 Altera DE2-70 做運算,利用取得的距離之遞增遞減判別該 Lego NXT 與場地四邊圍牆之相對位置,並加以量化,定義出場地之專屬之座標軸。
在自動定位時,如果在回傳障礙物距離的過程中,突然大幅減少,就可知道偵測到的障礙物不是周圍圍牆而是其他機器人,利用這個特點,經由 Altera DE2-70 做運算,計算出機器人彼此的相對位置。
經由觸碰式螢幕,可以自行描述機器人的行為,因為所有的運算都是在 Altera DE2-70 上,機器人本身只有簡單的指令,前進、後退、馬達轉動等基本的 Java API,因此會將整個作業任務儲存在 Altera DE2-70 記憶體的一段區域中,並利用 Queue 的方式〈 FIFO 〉,一個一個動作 pop 出來並透過藍芽傳遞給 Lego NXT 執行,藉此讓機器人完成使用者自行定義戰術之功能。
(Revision: 3 / 2010-06-30 22:10:21)
3. 效能參數
(Final Project Paper)
機器人硬體參數:
旋轉角度:5/147(單位:度/迴圈次數)
前進速率:1/2.53(單位:m/sec)
後退速率:1/2.53(單位:m/sec)
超音波有效距離(Max):255
超音波有效距離(Min):0
超音波有效範圍:± 35 度
藍芽有效範圍:10 m
藍芽模組參數:
Baud Rate:9600
Data Bit:8 bits
Stop Bit:1 bit
Parity Bit:None
實驗板硬體參數:
NiosII CPU Clock:50MHz
(Revision: 4 / 2010-09-17 23:10:08)
4. 設計架構
(Preliminary Paper)
設計架構
基本上可概略切割為四個區塊做介紹,分別為 Main System、Control Interface、Network Interface 以及 Motion System。而所有功能皆圍繞在 Main System 及 Motion System 之協調及溝通,其中透過 Control Interface 和 Network Interface 兩個介面來完成前述的協調及溝通之任務。
在硬體的設計上,我們利用 Altera DE2-70 做為主機並向外擴充觸控螢幕及藍芽模組,並利用藍芽遠端連線控制 Lego NXT。藍芽模組的使用上,利用人工在外部建構線路去連接 Altera DE2-70 上的 Expansion Header 1 擴充槽,藉此替 Altera DE2-70 擴充出藍芽功能。
在軟體的設計上我們利用 Altera DE2-70 做為主機並利用 SOPC 建構出 HAL,再以 C 語言去設計出傳遞資料及執行特殊運算的軟體功能,而 Lego NXT 則是運用 Java 語言去設計軟體功能,供 Lego NXT 去確實的執行我們所期望的運動模式。在軟體及硬體的協調動作下完成整個 Real-Time System 之設計。
《圖一》架構在此硬體設計上之 System 及 Interface
以下將介紹各個 System 及 Interface:
- Main System:

《圖二》配合 Main System 之硬體模組
藉由 Main System 整合其他三組系統以完成協同作業之概念。
- Main System 與 Network Interface 之運作:
Main System 會統整並處理所有資訊,藉由藍芽模組傳遞出控制訊給 Lego NXT,相反 Lego NXT 亦可藉由此 Interface 向 Main System 提出動作請求、回傳機體方位等資訊。
- Main System 與 Control Interface 之運作:
利用觸控螢幕提供使用者一個控制介面,當使用者拖曳螢幕上的機器人時 Control Interface 會告知 Main System 該機器人的目標位置,並顯示在觸控螢幕上;不論任何情況 Main System 皆會告知 Control Interface 該機器人的當前位置以幫助 Control Interface 在觸控螢幕上顯示正確的資訊,藉此完成一對多的控制之設計概念。
- Main System 與 Motion System 之運作:
當 Main System 透過 Control Interface 得到移動機器人之必要資訊後,會根據機器人當前之狀態設計一連串動作使該機器人完成使用者在控制時所下達的任務要求(例:從A點移動至B點),並將一連串指令存入記憶體的某個區段中,接著透過Network Interface將指令傳輸至受控端以利完成一個指令做一個動作之設計概念。
- Control Interface:

《圖三》配合 Control Interface 之硬體模組
透過 Control Interface 做為人、機溝通之平台。
自 Altera DE2-70 以擴充槽 Expansion Header 2 向外擴充觸控螢幕之模組。Main System 會檢查 Control Interface是否有傳遞控制命令碼過來,當控制命令碼傳遞過來時,Main System 會取得需要的資料進行統整,接著將透過 Network Interface 將控制指令傳送給受控端。在任何情況下,Main System 都會傳遞各個受控端之正確方位供 Control Interface 正確的顯示各個受控端之位置。
以下介紹觸控螢幕在本系統的應用方式:
透過觸控螢幕顯示該隊伍的三隻機器人在場地中的相對位置,如下圖 (圖四),其中,著色圓為「控球機器人」,另外兩個未著色的圓為「護衛機器人」。
螢幕右側有四個圖示按鈕可以使用:
其中三個代表三種可供選擇的組織模式(Alfa、Beta、Gamma)點選後系統將透過藍芽發出一連串指令去驅動每一隻機器人,使其產生組織性的移動。Alfa、Beta、Gamma 代表三種直線衝刺隊形,根據狀況使用者會選擇不同戰術去衝刺。
另外一個按鈕提供自訂戰術模式,使用者啟動該模式後可透過拖曳螢幕上的機器人來對該機器人下達一連串控制指令,每拖曳一次(手指壓住不放拖曳至目標位置後放開)代表一個控制指令。
(1).jpg)
《圖四》觸控面板顯示之圖形的設計
- Network Interface:

《圖五》配合 Network Interface 之硬體模組
主控系統連接他牌之藍芽組件後,透過「星型網路」的連接方式來統合受支配的三隻機器人。藉由該星型網路完成機器人間的溝通及控制指令(動作請求)的傳輸任務,如下圖(圖六)。
.jpg)
《圖六》透過星型網路將加裝藍芽模組之 Altera DE2-70 面板連結三台 Lego NXT 示意圖
- Motion System:

《圖七》配合 Motion System 之硬體模組
Motion System 將建構在 Lego Ministorm NEX,藉由 NXT 的擴充性,利用其它樂高組件組合出所需要的功能。一個樂高機器人可向外擴充七個周邊裝置,其中三個為輸出端, 四個輸入端;輸出端可連接馬達、燈泡等,而輸入端可連接光源感應器、紅外線感應器、超音波感應器等等。因此可依照需求去擴充需要的模組。
Lego 機器人有內建藍芽的功能,因此 Altera DE-70 可以透過 Network Interface 和 Lego NXT 進行溝通,提供 Main System 一個可以送出控制命令、接收 Lego NXT 數據的平台。機器人內含基本的移動功能和偵測的功能,會接收一連串指令後順序執行對應的功能和回傳所偵測的值。若控制模式為「命令模式」時,會接受一個指令做一個動作,並可中斷並放棄當前的動作來執行新的指令、新的任務。
由於 Lego NXT 主要是建構在 Java 的語法上,所以我們除了可以用 Lego NXT 本身的 API 外,也可以套用 一般常用的 Java API 來完成我們需要的軟體功能。設計概念上,我們將主要的運算部分都放在 Altera DE2-70上,機器人本身只有一些簡單的 function 做搭配,透過藍芽的傳輸,讓 Lego NXT 知道要執行哪個 function,需要執行多長的時間,轉多少角度等等來完成正確的運動模式。
主要應用到 Lego NXT 所提供的 API 如下:
- 馬達:
setSpeed(int) : 設定馬達轉速,參數值可從0到900。
stop( ) : 讓馬達馬上停止轉動。
rotate(int) : 讓馬達轉多少角度。
forward() : 讓馬達一直往正向轉動。
backward() : 讓馬達一直往負向轉動。
- 超音波感應器:
getDistance() : 回傳所偵測到最近障礙物的距離,單位為公分。
(Revision: 12 / 2010-09-17 12:30:07)
5. 設計方法
(Final Project Paper)
對於本設計之內容,在架構上區分為 Main System、Control Interface、Network Interface 以及 Motion System。本設計之核心概念在於遠端遙控與軟硬體之整合,係以Network Interface作為優先實現之設計,同時研發Altera DE2-70開發板與樂高機器人(LEGO NXT)之藍芽通訊;接著實作的是分辨指令並加以執行的Motion System;再者為系統與使用者溝通之介面,用來接收使用者控制之指令並同步顯示機器人位置的Control Interface;最後則為連接以上系統及介面之整合資訊的系統設計──Main System。
Network Interface:
在Network Interface之實作上,必須完成的功能如下:RS232之溝通、藍芽連接與配對、以及藍芽封包的傳輸。
RS232:
首先我們必須在Altera DE2-70上實作出RS232的通訊方式,用來連接我們外加的藍芽模組,因此我們利用QuartusII提供用來建構SOPC的功能建構出HAL(Hardware Abstract Layer),在SOPC上我們使用了兩種QuartusII所提供的RS232元件(圖一),分別作接收與傳送的工作。一旦RS232之通訊方式完成後,我們只需透過RS232傳送特定訊號給藍芽模組後進行連接與配對之動作。
《圖一》在SOPC中建構出RS232
以下為RS232對藍芽模組之控制碼:
QUERY_MODULE:01 00 00
START_MODULE:91 01 00 00
SEARCH_DEVICE:97 01 00 05
PAIR_DEVICE:9D 06 00
CONNECT_DEVICE:9F 07 00
SEND_PACKET:A1
藍芽模組之啟動:
QUERY_MODULE:01 00 00
START_MODULE:91 01 00 00
透過RS232依序傳遞上述兩個序列訊號後即啟動模組並開啟SPP(Serial Port Profile)之傳輸功能。
藍芽連接與配對:
假設欲配對連接對象的Mac Address為00:16:53:08:F1:AD時
送出下列序列訊號後則進行與特定Mac的藍芽配對動作
PAIR_DEVICE:9D 06 00 00 16 53 08 F1 AD
送出下列序列訊號後則進行與特定Mac的藍芽連接動作
CONNECT_DEVICE:9F 07 00 00 16 53 08 F1 AD 00
藍芽封包傳輸:
SEND_PACKET:A1 01 00 30 則會送出內含1 個Byte的藍芽封包其內容為16進位的Byte "30"
接著我們利用Verilog硬體描述語言撰寫出我們用來控制藍牙模組的控制元件,用來透過RS232傳輸特定控制指令的模組,如此便完成Altera DE2-70開發板端的Network Interface需負責的工作。機器人端則是應用其內建的藍牙模組及Java API來實作其藍牙功能。兩方經過藍牙的配對及連接即完成整個Network Interface。
Motion System:
而在Motion System上因為機器人端有Java API可以實作,利用程式碼在機器人內部建立出一個記憶體區塊作為控制指令的Buffer區域,在接收特定指令後原則上將以FIFO的方式作出一個指令一個動作的行為模式。另外,在Motion System上,提供了機器人自動定位這個特殊的功能,由於使用的是樂高機器人提供的超音波測距器,所以在定位上機器人將需要Altera DE2-70開發板端的協助。當機器人面向特定方位並啟動定位功能時,每轉90度就進行一次測距的動作,在接收四個數值後利用Network System傳遞該組數值給Main System,而後只要Main System下達控制指令,無論是機器人的旋轉或移動都會重新設定機器人的定位數值,但不會將新的數值傳送給機器人端。應用相同的原理來得知其他機器人的位置,並將機器人位置呈現在觸控螢幕上。
機器人須完成的功能如下:即時控制模式與任務控制模式。
即時控制模式:
當接收並解譯出Main System傳送過來的控制指令代碼時,馬上執行對應的Motion動作,整體程式的流程如下圖(圖二)。
《圖二》機器人在即時控制模式時的程式流程圖
任務控制模式:
不斷接收控制指令並將通過的指令代碼存入一段活動式的記憶體Buffer,再接收到特殊的控制指令代碼前都會不斷的進行存入的動作,一旦收到特殊的控制指令代碼便將上述的記憶體Buffer中的控制指令代碼一個一個提出,藉此控制機器人之動作,機器人在接收到控制指令代碼後馬上執行對應的Motion動作,整體程式流程如下圖(圖三)。
《圖三》機器人在任務控制模式時的程式流程圖
Control Interface:
Control Interface之實作上,必須完成的功能如下:顯示控制介面及偵測受到按壓的觸控點。在實作上先撰寫Verilog硬體描述語言去設計出控制顯示圖像的元件以及偵測觸控事件的元件,接著利用QuartusII提供用來建構SOPC的功能建構出HAL(Hardware Abstract Layer)並設計腳位連接觸控面板(圖四)。
《圖四》在SOPC中建構出觸控面板(LTM)
該元件之輸入及輸出訊號如下:
Input:
iCLK_50 -- 內部頻率
reset_n -- reset 訊號
iKEY -- 當按下時會進行reset的動作
GPIO_CLKIN_N0 -- GPIO Connection 0 Clock Input 0
GPIO_CLKIN_P0 -- GPIO Connection 0 Clock Input 1
address -- 整個元件的Memory Map的記憶體偏移量
read -- 當記憶體被讀取時值為 1
write -- 當記憶體被寫入時值為 1
Output:
readdata -- 被讀取出來的資料
Bidir:
GPIO_0 -- GPIO Connection 0 I/O
GPIO_CLKOUT_N0 -- GPIO Connection 0 Clock Output 0
GPIO_CLKOUT_P0 -- GPIO Connection 0 Clock Output 1
顯示控制介面:
當write為 1 時且address為 1 時則在機器人的座標位置印出代表機器人的圖示。
偵測觸控點:
當read為 1 時且address為 0 時則可以讀取觸控事件發生的觸控點之座標位置。
Main System:
Main System是對所有系統及介面做資訊整合的中央系統,不論是藍芽封包的收送或觸控面板的中斷感應及圖像的顯示,皆須透過Main System來處理機器人的位置及動作等資訊,透過Main System來整合所有資訊以協助觸控螢幕將資料庫中的資料具體並正確的呈現在螢幕上,讓使用者能輕鬆上手進行機器人的控制,因此為了完成本設計中各系統及介面的合作溝通以及Real Time System的實做我們在Altera DE2-70上利用SOPC建構一顆Nios II CPU(圖五)用來執行我們所撰寫的C code程式去執行複雜的計算。
《圖五》利用SOPC嵌入需要的硬體以供Main System使用
Main System需要完成的功能如下:更新機器人在場地中的座標位置、計算出螢幕顯示的場地與實際的場地之比例尺以及根據使用者在Control Interface所下達的中斷要求做出適當的回應,整體的流程如下圖(圖六)。
《圖六》Main System程式流程圖
(Revision: 6 / 2010-09-17 18:23:44)
6. 設計特點
(Preliminary Paper)
設計特點
硬體方面:
擴充性高的主控系統,利用 Altera DE2-70 作為架構主控系統之平台。各項資料、指令的發送及接收皆由 Altera DE2-70 所掌控。在人、機互動的介面以及無線網路之架構等,其硬體皆能彈性的更換。
過去在 Altera 面板上擴充藍芽之功能皆是以一般電腦主機做主控端連結至 Altera 面板,本設計之概念跳脫此概念,是以 Altera DE2-70 作為主控系統進行一對多的無線藍芽網路控制。
利用擴充槽向外擴充特殊硬體,本設計利用 Altera DE2-70 上的 RS232 連接藍芽模組。
以觸控螢幕作為人、機介面提供直覺式的控制方式,利用 Altera DE2-70 上的 Expression Header 1 連結觸控螢幕達成硬體上的支援。
軟體方面:
利用 Quartus II 建構 SOPC 之功能完成 HAL (Hardware Abstract Layer) 之設計,並將其燒錄至 Altera DE2-70 之面板上。
軟體設計上廣泛運用各類程式語言,其中包括 C 、Java、verilog 等。
Embedded System 之實作,利用 Altera DE2-70 面板可程式化之特性完成軟硬體之整合。
(Revision: 3 / 2010-09-17 12:28:54)
7. 總結
(Final Project Paper)
這場設計大賽過程中,從題目訂定到功能實作的過程中,我們深刻體會到一個小組的運作順利與否跟小組會議有很大的關係,因為每個人分工作業的不同,因此每個人所掌握的技術與資訊也不盡相同,透過小組會議讓大家相互交換工作資訊,藉此當發現設計上有缺陷時,每個人都可以從自己拿手的部分去思考該缺陷的解決方式,並提出有用的提議,而當所有提議進行整合後,我們往往可以從中得到較好的解決辦法。
過程中我們也深刻的體會到業界常說「硬體做不到的用軟體做,軟體做不到的用硬體做」這句話的道理,當軟體在硬體上執行速度過慢而產生訊號再timing上的延遲時,可以用硬體進行加速來彌補;當演算法過於複雜不適合用硬體去實作時,可以用軟體進行運算來彌補。
透過這個比賽,我們接觸了 Verilog 硬體描述語言、Java 以及 C 程式語言並研讀了關於RS232、藍芽傳輸原理等技術,獲益匪淺。相信經過這場設計大賽我們各組員無論是在創造或實作上的能力都更上層樓。
(Revision: 6 / 2010-09-17 16:46:08)
|