在理想無任何延遲的狀況下,由感測器送出的資料封包會依序立即到達負責接收的 主機端,在這種情況下,可以很簡單的從主機端收到的時間來計算兩個感測器之間的 offset,如圖 13可以很輕易找出兩個感測器的差距並調整。
圖 13: 無延遲下多感測器時間軸
t(k)ij : 以第 k 個 sensor 的時間軸為基準,第 i 個 sensor 的第 j 筆資料的取樣時間。
Tij: 系統收到第 i 個 sensor 的第 j 筆資料的時間。
但是在實際環境中,由於封包在傳送的過程中會有延遲,因此封包不一定是按照固 定的時間差到達主機端,主機有可能會在同一個時間點同時收進多數個封包,並且每 個封包間的時間差並不固定,我們認為會造成這類延遲的理由有可能是傳送過程的延 遲,或是主機端暫存造成的延遲。
圖 14為兩個感測器傳輸下的假設情境時間軸,在後續內容我們將 Sensor 1 稱為主 感測器,Sensor 2 稱為副感測器,可以看出主感測器以及副感測器起始的時間點不同,
在傳輸過程中也會因為上述的理由,造成可能會在同一個時間點一起收進來好幾個封 包。
圖 14: 實際下多感測器時間軸
在發現上述情況後,我們提出以主機端收到的時間為中介,搭配感測器本身的計時 器來將副感測器往主要感測器的時間軸對齊的非即時同步方法。首先在接收完一個完 整的動作資訊後,在各感測器的記錄檔中每一筆資料會有感測器的時間戳記以及主機
收到的時間戳記,而後各感測器各自計算出主機時間與感測器時間的最小值,這個最 小值可以看成該感測器資料在與主機端之間的時間差,我們將主要感測器的時間差稱 為 ∆T1,副感測器的時間差稱為 ∆T2。
∆Tj = min
i (Tji− t(j)ji )
在取得 ∆T1 及 ∆T2 後,將 ∆T2− ∆T1 就可以得到副感測器與主感測器之間的時間 差,就可將副感測器的時間軸轉成主感測器的時間軸。
t(1)2 = t(2)2i + T12, T12 = ∆T 2− ∆T 1
在對齊到相同的時間軸後,必須將感測器的資料調整成是在同一個時間點開啟,一 般來說是將提早開啟傳輸的感測資料刪除,但是由於有多個感測器需要同步調整,因 此必須在副感測器全部調整完時間後,根據最慢開始傳輸的感測器時間軸來調整資料。
圖 15為以兩個感測器做一同步實驗測試結果,X 軸為時間,單位 0.01 秒,Y 軸為 感測器加速度讀數,單位為 G。實驗方法為將兩個感測器重疊擺放,之後同時給予感 測器一短暫振動,如此一來兩個感測器的數值波形應該是同時發生以及同時結束,但 是從前兩張波形可以很清楚看到,Sensor 1 以及 Sensor 2 的開始時間明顯有段差距。
因此以上述的流程計算過後,將 Sensor 2 的時間軸朝 Sensor 1 的時間軸對齊後再調整 資料,從第三張的結果可以清楚看出兩個感測器的波形已經完全吻合。
圖 15: 感測器時間同步
四 、 軌跡重繪
高爾夫揮桿動作中,桿頭在揮動過程形成的軌跡是本次揮桿好壞很重要的一個要 點。因此以感測資訊為基礎的揮桿軌跡還原是很動要的一環,在以感測資訊還原軌跡 中,最重要的是必須將在不同座標軸下的加速度透過旋轉矩陣轉至同一個座標軸後,
在以轉換後的加速度重建揮桿軌跡。本章節在 4.1 描述各個座標及旋轉矩陣的定義,
4.2 介紹在持續改變的座標下將資料轉回原始座標,4.3 描述如何用在固定座標下的加 速度資訊計算軌跡。