Processing math: 100%

2017年10月1日 星期日

加速規信號的零點校正

這一個問題緣起於我們希望對四旋翼直升機上的加速度信號做「零點校正」。

假設從 MPU6500 取得的加速度信號分別是 x_i, y_i, 以及 z_i,這三個軸未知零點的數值分別是 x_0, y_0, 以及 z_0,而且重力加速度 g 不變。

如果我們量測三次,得到 (x_1, y_1, z_1), (x_2, y_2, z_2), (x_3, y_3, z_3) 三組數據,那麼我們就可以有以下三個關係式
(x_1-x_0)^2+(y_1-y_0)^2+(z_1-z_0)^2 = g^2, (x_2-x_0)^2+(y_2-y_0)^2+(z_2-z_0)^2 = g^2, (x_3-x_0)^2+(y_3-y_0)^2+(z_3-z_0)^2 = g^2.
第一式減去第二式可以得到
x_1^2 + y_1^2 + z_1^2 - x_2^2 - y_2^2 - z_2^2 = 2(x_1-x_2)x_0 + 2(y_1-y_2)y_0 + 2(z_1-z_2)z_0
第一式減去第三式可以得到
x_1^2 + y_1^2 + z_1^2 - x_3^2 - y_3^2 - z_3^2 = 2(x_1-x_3)x_0 + 2(y_1-y_3)y_0 + 2(z_1-z_3)z_0
第二式減去第三式可以得到
x_2^2 + y_2^2 + z_2^2 - x_3^2 - y_3^2 - z_3^2 = 2(x_2-x_3)x_0 + 2(y_2-y_3)y_0 + 2(z_2-z_3)z_0

寫成矩陣的形式
\left[ \begin{array}  .2(x_1-x_2) & 2(x_1-x_3) & 2(x_2-x_3) \\  2(y_1-y_2) & 2(y_1-y_3) & 2(y_2-y_3) \\  2(z_1-z_2) & 2(z_1-z_3) & 2(z_2-z_3) \end{array} \right] \left[ \begin{array}  .x_0 \\  y_0 \\  z_0 \end{array} \right] = \left[ \begin{array}  .x_1^2 + y_1^2 + z_1^2 - x_2^2 - y_2^2 - z_2^2 \\  x_1^2 + y_1^2 + z_1^2 - x_3^2 - y_3^2 - z_3^2 \\  x_2^2 + y_2^2 + z_2^2 - x_3^2 - y_3^2 - z_3^2 \end{array} \right]

因此,這三個軸未知零點的數值 x_0, y_0, 以及 z_0,就可以利用以下的公式求出來,當然前提是反矩陣存在。
\left[ \begin{array}  .x_0 \\  y_0 \\  z_0 \end{array} \right] = \left[ \begin{array}  .2(x_1-x_2) & 2(x_1-x_3) & 2(x_2-x_3) \\  2(y_1-y_2) & 2(y_1-y_3) & 2(y_2-y_3) \\  2(z_1-z_2) & 2(z_1-z_3) & 2(z_2-z_3) \end{array} \right]^{-1} \left[ \begin{array}  .x_1^2 + y_1^2 + z_1^2 - x_2^2 - y_2^2 - z_2^2 \\  x_1^2 + y_1^2 + z_1^2 - x_3^2 - y_3^2 - z_3^2 \\  x_2^2 + y_2^2 + z_2^2 - x_3^2 - y_3^2 - z_3^2 \end{array} \right]

只是從 MPU6500 取得的加速度信號通常很髒,因此 (x_1, y_1, z_1), (x_2, y_2, z_2), (x_3, y_3, z_3) 這三組數據,究竟應該是濾波後的結果,還是不需要呢?另外,反矩陣的計算其實對寫程式而言不是很友善,因此如何利用其他的演算法(如 Recursive Least Square的方法)來實現,也是值得討論。


迴圈線迷宮(looped line maze)的搜尋與路徑簡化

迴圈線迷宮(如下圖),專指一個由直交線段組成的迷宮中,包含「迴圈」的路徑。在每年教育部主辦的「 電腦鼠暨智慧輪型機器人競賽 」中,屬於高中職與大專組的「 線迷宮鼠 」競賽活動。規則請參考以下連結  https://sites.google.com/gm.lhu.edu.tw/20...