• 沒有找到結果。

第四章 系統架構

4.2 WISE Middleware

者,所以程式中有防呆機制,透過 Arduino 函式庫內的 TimerOne ,定時讓反應器停 止或定時進行監測功能。讓這些反應器被限制為每作動一段時間後將休息一段時間,

避免裝置不斷產熱。

4.2 WISE Middleware

從距離實驗中 BLE 的連線容易因為使用者遠離的情形而呈現不穩定狀態,而且基 於物聯網的 WISE.Item 是非 IP 網路,所以需要一個方便能放在身上充當 BLE 和無線 /有線網路多方轉傳功能的中介服務器,我們稱之為 WISE Middleware,其由軟硬體共 同構成。作為中介裝置的硬體要能同時支援 BLE 和多種連線方式,現成設備選擇為樹

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 13 : 模型關節部位名稱圖

WISE Middleware 的核心功能在軟體部分的處理資料和節點監控,要能收集各個 WISE Item 經過 BLE 傳送來的資料轉化成規範好的格式,透過無線或有線網路傳送至 WISE Platform;或是透過紀錄各個節點的 MAC Address 反過來傳送反應指令至特定的 WISE Item。傳輸資料方面,樹莓派上的藍牙接收器會在不同的時間點,分別收到各個 WISE Item 所傳來的資料,其中並沒有固定的順序與頻率,在收集彙整好資料後會轉 好格式,再將整理好的資料傳輸出去。

4.2.1 連線速度問題

BLE Dongle 的特性一次僅容許一個 BLE 進行連線,也就是說連線時是 singleton 模式,其他 BLE 需要等正在連線的裝置連線完成後才能搶著唯一權利來連線,而從連 pitch, Roll,進到步驟二後會開始進行連線判斷。

4.2.2 連線中斷問題

無線訊號容易受外在因素的干擾而導致連線中斷,每次的中斷將使得呈現出來的 動畫不流暢,甚至出現姿態扭曲。因此需要在最短時間內即時恢復連線,所幸藍牙 4.0 不需要配點,能快速建立連線,在 WISE Middleware 程式中實作了自動重新連線的機 制。接收程式在 loop 迴圈中不斷執行,當發現 300 ms 內沒有接收到新資料時,就判 斷連線已中斷,然後重新連線。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

4.2.3 Protobuf 和傳輸協定

原有的資料以 Json 格式傳輸,但格式上多餘的 ", {, }, : 等字元增加了相當多 overhead,以公式來計算每秒資料傳輸量(Bytes)

每秒傳輸量 Bytes = 資料大小 ( header ( createTime, id 等資訊佔用的 Bytes ) + wiseItem 組數 x 每筆 json 資料大小(Bytes) ) X 每秒資料數

18 組 WISE Items 每秒 60 筆資料來計算

( 68 Bytes + 18 * 36 Bytes ) x 60 = 42.96 KBps

在 1M ( 128 KB/sec ) 網路頻寬會造成約 330 ms 的 delay,加上 json String 的 處理時間約為 10~20 ms ,故單筆資料即產生了 340~350 ms 的延遲,遠高於資料產生 的速度(16 ms),雖然因應網路頻寬的提升可以降低影響,但整體計算並不適合用來異 地傳輸。

圖 15 : Json 格式

相同的資料用 protobuf 序列化後的大小大約是 json 格式的十多分之一,xml 格

現制定出新的協定 spec 用於 WISE Middleware 和 WISE Platform 的結構化溝通。

參考 HTTP 的封包格式來設計協定,並以物件導向中封裝的概念來實現所有動作,

只有兩種動作 GET 和 SET ,但搭配不同的行為設定可達成各種動作,像傳輸 WISE Item 資料,獲得 WISE Item PPS、連線狀態甚至是進行校正,反應回饋這樣較複雜的 行為,也進一步達成發現、監查、控制和互動這些在物聯網常見的行為。

表 9 : 協定結構

標頭欄位 內容值 描述 必頇欄位

Header wear/1.0

seq=${序列號}

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

4.2.5 姿態歪斜問題

每組 WISE Item 都是獨立的,所產生的資料只代表每個節點的轉動情形,所以需 要透過影像模型將這些節點連接起來才能產生出全身的動畫,這種行為我們稱為『連 動』。透過連動將各組關節點連接起來,才能讓真實反應使用者各種姿態動作,像舉手 時,從上手臂、前手臂到手腕的提升便是連動功能產生出來。

但這樣的連動造成一個問題,如果連動組合中有某一節點突然斷線,其他節點仍 然正常產出資料時,連動效果的運算便會出現錯誤,這會造成整個姿態模型呈現歪斜 甚至擺出反轉 180 度這種不可能的人體姿態。當出現姿態歪斜現像時只能透過校正來 強制矯正,但卻讓表演中擺出校正姿勢的機率增加,也增添了中段表演的可能。

所以針對姿太歪斜進行了設計改進,將原來構成全身的獨立節點也跟著連動設計 進行分組,根據表現分為左上半身、右上半身、左下半身、右上半身四大組,身體中 線幾個重要的點則可以重複出現在不同分組中。當各個節點開始連線時,便會將這些 節點加入到連動組合中,WISE Middleware 傳輸資料時是向連動組合索取資料,當組 合判斷資料齊全時便正常傳出資料,反之則阻塞資料,這樣當節點斷線或無法取得資 料時,畫面會突然停住後再恢復正常,有效避免了姿態歪斜,讓使用者在表演中不必 擔心姿太歪斜而加入多餘的校正動作,而可以順利的進行演出。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 16 : 姿體模型四種分組

相關文件