• 沒有找到結果。

第二章 硬體評估

2.5 電池

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 6:9V 電池及 3.7V 鋰電池實拍圖

另外在一些演出活動,因劇情設計的關係,讓玩家攜帶筆電一同移動遊玩,但筆 電電池電量不足以供應一整天的演出使用,因此需額外準備行動電源供筆電使用,我 們選用的筆電功耗相當高,約 100 瓦以上,遍尋市面上的行動電源,大多無法提供足 夠的功率,能提供足夠功率的行動電源,費用又過於昂貴,不符合我們的預期低成本 的要求,於是我們在筆電電源供應方面,選擇使用汽車電池。

圖 7:12V 汽車電池實拍圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第三章

系統架構與實作過程

3.1 評估六軸姿態感測器可行性

為了評估六軸感測器的可行性,以 Arduino uno 模組再加上六軸姿態感測器 MPU6050(三軸陀螺儀+三軸加速計)不斷的收集人體姿態資料,並透過 USB 傳輸線,

將 Arduino uno 上的資料傳輸到電腦,如下圖所示。

圖 8:六軸感測器姿態收集系統架構圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 9:六軸感測器姿態收集系統實拍圖

透過這個方式,在筆電上每秒約能收集到 100 至 110 次姿態資料,速率遠高於原 先期望的每秒 30 次。每次感應到的數據為感測器偵測到 x 軸、y 軸、z 軸相對於原點 的角度。於人體重要肢體關節附近安置感測器,同時間將多點的資料傳至筆電,即可 知道這些節點的 3 軸目前的角度資料,進而得知人體的姿態。

再做進一步測試,一次安裝多個感測器,確定同時運作起來速率也沒問題。先於 人體四肢各安裝一個感測器,每一個節點與腰部的 USB 集線器間以一條 USB 傳輸線 連接。再於 USB 集線器上,透過一條 USB 傳輸線,與做為資料收集中心的筆電連接。

設計架構如下圖所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 10:人體姿態感測收集系統架構圖

圖 11:人體姿態感測收集系統實拍圖

同時在身上穿戴了四個感測器,在筆電上收集到的四個感測器的偵測速率依然維 持在每秒 100 次至 110 次,正確性也無誤,符合設定標準,因此確定以六軸感測器做 為姿態偵測是沒有問題的。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

為從端,而數據收集中心樹莓派為主端。由做為主端的樹莓派向做為從端的 Arduino 發出建立連線請求,建立連線後,由做為從端的 Arduino 對樹莓派不斷的傳送 3 軸姿 態資料。系統設計如下圖。

圖 12:六軸感測器姿態收集系統-無線傳輸版架構圖

圖 13:六軸感測器姿態收集系統-無線傳輸版實拍圖

人體穿戴的 Arduino 每一次收到的資料為表示三個軸的轉動角度資料,數值範圍 介於正負 180 之間,Arduino 再將這三個資料加上 360,使得產生的數值皆為正整數,

並以 16 個位元來表示一個軸的轉動角度資料,48 個位元為一筆表示三個軸的轉動角

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

度資料。再使用藍牙感測器傳出這一筆姿態資料。

在 Arduino 的姿態資料傳出頻率方面,由於 Arduino 每秒可從 MPU6050 收到 110 次,但為了減低頻寬的使用量,又因為要使動畫看起來流暢,每秒的傳輸率還是必需 高於 30 次。為了同時符合這兩個條件,所以在 Arduino 程式中做了控制,將程式設計 為每收到 3 筆資料,才傳送出 1 筆姿態資料,如此就可將姿態資料傳出頻率控制在每 秒 37 次左右,每 1 次傳出 48 個位元,換算為每秒傳輸量則為 1776 個位元,傳輸速率 同時符合每秒高於 30 次及降低傳輸量的兩項標準。

圖 14:人體姿態感測收集系統-無線傳輸版架構圖

與前一版雛型差異在於這一版著重在資料傳輸無線化,設計在身上裝置了少 USB 線和 USB 傳輸線。穿戴於人體上的實際照片:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 15:姿態感測系統無線傳輸版-人體實際穿戴實拍圖

樹莓派收集身體各節點數據後,透過網路線,將資料傳送到負責顯示資料的 PC 上,再由 PC 上的 UNITY 動畫程式,依所收到的各節點三軸資料,繪製成人體骨架動 畫並呈現在螢幕上。架構如下圖所示

圖 16:人體姿態感測收集系統-完整版架構圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

樹莓派系統在開始接收 Arduino 資料前,需預先設定要感測的所有節點的資料,

包含這個節點所要表示的人體部位名稱以及負責傳送這個節點的藍牙感測器代號。如 此才能在每一次收到資料後,依據這筆資料傳送者的藍牙裝置代號,得知這是表示哪 一個人體部位的資料。

圖 17:人體關節部位名稱圖

在樹莓派資料傳出方面,由於樹莓派上的藍牙接收器會在不同的時間點,分別收 到許多人體節點所傳來的資料,沒有固定的順序與頻率,因此樹莓派必需收集彙整資 料,再定時將整理好的資料傳輸出去。由於動畫品質的要求,所以輸出頻率設計為每 秒 30 次,也就是每隔 0.033 秒傳送一次,每次會傳出所有節點的三軸資料。

在樹莓派上,會以一個列表記錄所有的節點,並記錄每個節點最新的姿態資料,

只要收到資料,就更新該節點的姿態資料。在無窮迴圈中,不斷的更新每個節點的姿 態資料,並每隔 0.033 秒,將所以節點的姿態資料,傳送出去。資料的格式表示法,

是以 JSON(JavaScript Object Notation)[13]格式來表示。例如傳送一個節點的資料

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

字串會是{“RightHand“: {x:50, y:60, z:70}},傳送兩個節點的資料字串則是 {“RightHand“: {x:50, y:60, z:70}, “LeftHand“:{x:50, y:60, z:70}},更多 的節點則以此類推。

3.3 連線中斷問題

由於無線訊號容易受外在因素的干擾而導致連線中斷,若無法在最短時間內即時 恢復連線,會使得在螢幕上呈現出來的動畫看起來不流暢,甚至是造成無法感測到人 體節點動作,嚴重影響品質。因此,系統得在最短時間內自動回復連線。過去的藍牙 版本的連線是需要配對,但藍牙 4.0 版本不需要配點,在建立連線的過程中,能更節 省時間。為了解決斷線問題,我們在數據整合中心『樹莓派』上的資料接收程式上,

加入了自動重新連線的機制。

接收程式在無窮迴圈中不斷的執行,當發現無法接收到新資料時,就累加無資料 秒數,當累加的無資料秒數數字大於設於設定的斷線秒數,就判斷現在連線已中斷,

於是呼叫重新連線程式,重新建立連線。為系統加上了自動重連機制後,就能不間斷 的運作,就解決了連線中斷導致動畫中斷的問題。設計如下圖所示。

圖 18:斷線重連機制設計圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

鍵修正』鈕,將修正指令傳送至樹莓派上,由樹莓派上的程式對每個感測感節點逐一 計算出修正參數並修正每個節點,監控人員按完『一鍵修正』鈕後,只需在等待監控 畫面上的人體骨架姿態與舞者的人體骨架姿態相符,就能得知修正動作已完畢。即可 通知舞者修正程序已完成,可以繼續進行表演。整個修正機制如下圖所示

圖 19:數值轉換修正機制架構圖

當樹莓派收到修正指令後,會認為舞者的姿態已經為預設約定好的修正姿態,於 是會將這個時間點所收到的姿態資料記錄下來,並與預設的修正姿態的預設資料相互 比較,得出差異值,則為修正值。以右手節點”RightHand”為例說明如下:當系統剛始 運作系統時,右手的節點姿態資料應為{“RightHand”: {x:0, y:0, z:0}},並將此數據命名 為原點數據,當感測器運作一段時間後數值產生偏差,系統監控者開始進行修正、使 用者擺出修正姿態後,樹莓派收到了右手節點資料偏差成{“RightHand”: {x:50, y:-30, z:200}},並將此數據命名為偏差數據。於是將原點數據與減掉偏差數據,即獲得

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

{“RightHand”: {x:-50, y:30, z:-200}},並將此數據命名為修正數據。

並依此類推處理所有的節點,即可獲得所有節點的修正數據,完成修正程序。往 後在每隔 0.033 秒要傳送人體姿態資料要傳輸人體姿態資料前,先將每個節點的姿態 資料減掉修正數據,即可得到修正後數據,再將修正後數據傳送出去。

當系統發展出這個方便的修正方式後,不僅在表演過程中可以迅速完成修正。連 在系統啟動前,也可以快速的完成修正工作。大幅減少系統啟動時間,進而減少演出 的準備時間,原本 1 個節點人工修正時間約需 30 秒,若全身有 14 個感測點,就需要 7 分鐘。若以新方法修正,只需短短約 2 至 4 秒即可完成修正。下面附上以此版本測 試時的數張照片。

圖 20:測試者擺出一鍵修正姿態實拍圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 21:修正後實測動作實拍圖第一部份

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 22:修正後實測動作實拍圖第二部份

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

3.5 製作展演裝置

前一階段雛型測試結果相當不錯,於是接著進行縮小化設計,準備做出一個於展 演中使用的硬體。在電力供應方面,我們的裝置消耗功率大約為 0.1 瓦至 0.15 瓦,於 是我們選用電壓 3.7V,容量為 0.3A 的鋰電池,評估電量足夠使用 7 至 11 個小時。

其他零件方面,Arduino 選用 nano、藍牙選用 Ble4.0、姿態感測器選用 MPU6050。

在主板版面設計上,左方放置 Arduino nano、右上方放置藍牙感測器,右下方設計 5 個孔位供拉線外接六軸感測器,正右方設計 2 個孔位接電池。主板設計的電路圖如下 數張圖所示:

圖 23:1 比 1 電路圖與零件試擺放實拍圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 24:焊接完成的電路板、電池擺放示意圖及六軸感測器實拍圖

原本的設計並無開關設計,在需要使用感測器時,再將電池插入主板右方的電池 插槽,由於縮小化的因素,所以主板上的電池插槽零件選用非常小的款式,由於插槽 很小電池的拔插很不容易,得花費很多時間,使用上不方便。於是再擴充加入開關線 路設計,使用一個開關控制,往上撥動則使得充電接頭與電池間通電,可以對電池充 電。往下撥動,則能使 nano 與電池間通電就能開機。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 25:開關線路示意圖及裝置尚未裝入盒內的裝置實拍圖

再使用 3D 印表機,列印出用來放置感測器的容器,並以熱熔膠將電路板粘貼固 定於盒內,並將開關拉出裝置外,以方便開關,充電線也拉出裝置外,以方便沒電的 時候可以充電。

圖 26:將電路板置於盒內的照片及將裝置穿戴於人體的實拍圖

相關文件