回覆列表
  • 1 # 使用者6149482108578

    如果你希望用加速度計來記錄一個可以在三維空間中自由移動旋轉的物體的位移,你可能需要多做一些工作。

    地球上的非自由落體的物體都能感受到重力,你的加速度計也是,理論上它在放平完全靜止的情況下某個軸會輸出±1g左右的加速度分量,因為這個分量的存在你的位移加速度分量資料會受到“汙染”,所以想要使用加速度計來測量位移必須將重力幹掉。

    想幹掉重力就得知道重力的方向,在地球表面上的任意一區域平行於海平面做三維直角座標系,其中Z軸垂直於海平面向上(地球座標系),其中的物體受到重力方向幾乎豎直向下,所以在地球座標系中重力向量為一個定值,用向量在xyz上的分量表示為[0,0,-1]。

    對於待測物體來說重力向量則不是一個定值,假如該物體是一個正方體,以它的中心為原點做一個三維直角座標系,ijk為直角座標系的三個軸,分別垂直於正方體的三個面,設這個座標系為物體座標系,物體座標系會隨著物體移動而移動,也會跟隨物體旋轉,以物體的視角看該座標系永遠靜止。現在隨著物體的旋轉,物體座標系上的重力向量也會跟著發生變化。

    如果我們有辦法將物體座標系下的重力向量轉化為地球座標系下的重力向量,或者反過來將地球座標系下的重力向量轉化為物體座標系下的重力向量,再使用總向量減去重力向量是不是就能將其消除了呢。

    當然可以的啦,否則浪費這麼多字元幹嘛,要做到這一點首先需要知道物體座標系相對於地球座標系是怎麼旋轉的,要知道這一點推薦使用加速度計陀螺儀互補更新代表旋轉的四元數(記錄旋轉),這樣速度快精度高很適合微控制器來運算,而且單純求位移的話其產生的yaw角漂移沒有影響,當然不想用陀螺儀也可以只使用加速度計更新四元數(記錄旋轉),只要濾波的當問題不大。

    接下來的事情就很簡單了,將世界座標系下的重力向量右乘四元數(世界座標系旋轉到物體座標系)將得到物體座標下的重力向量,或者將物體的總向量右乘四元數的逆(物體座標系旋轉到世界座標系)將得到世界座標系下的物體總向量,詳細步驟這裡不提及,請自行搜尋姿態解算。不管哪一種只要將統一座標系下的物體總向量減去重力向量都可以得到天然無新增位移向量。

    只記錄平面上不旋轉的物體的位移不需要上述步驟,PS:我就是現在才說你咬我呀。

    得到天然無新增空間位移向量之後問題就很簡單的了,我們可以用加速度跟著時間積分來得到速度,然後速度在跟著時間積分得到位移量,對於離散資料做積分可以使用一階的龍格庫塔法。設a表示加速度向量;v表示速度向量;s表示位移向量,已知位移 而速度 ,使用龍格庫塔法更新位移 更新速度也一樣 ,而 實際上就是速度和加速度。

    現在我們已經得到了位移,講道理應該結束的啦,大功告成的啦,可以回去吃包的啦,但是稍微懂點微積分的人都知道,積分不過是在求線段與座標軸所圍成的面積,而龍哥庫塔法所求的不過是長度為 寬度為 的矩形的面積和,與真實線段的邊沿存在鋸齒狀誤差,這些誤差可能會一起隨著時間積分而導致誤差越來越大,所以需要儘可能的消除它們。

    我們將相鄰的兩個矩形與所求真實線段所圍成的影象近似為三角形,只要加上(或減去)三角形的面積,誤差就能被消除很大一部分,實際情況取決於微控制器更新的速度,速度越快誤差越小,三角形的面積由面積公式長乘高除以二推導得面積 。

    所以完全體應該是:

    ; 。

  • 中秋節和大豐收的關聯?
  • 幼兒園餐具消毒記錄表應該怎麼填寫?