• 沒有找到結果。

資料傳輸方式從有線傳輸改為無線傳輸

第三章 系統架構與實作過程

3.2 資料傳輸方式從有線傳輸改為無線傳輸

‧ 國

立 政 治 大 學

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}},更多 的節點則以此類推。

相關文件