測量一個平台的動態翻滾(roll)和俯仰(pitch)角度,對於各種不同的應用都十分有幫助。典型的例子之一是飛機的垂直陀螺儀或姿態儀,能夠為飛行員在空中操作飛機時提供相對於地平線的參考。最近,越來越多的動態傾斜應用開始出現在無人機、機器人和自動駕駛車系統中。

本文介紹使用慣性測量單元(IMU)估算在動態條件下翻滾和俯仰的基本物理學和數學,並提供可用的開放來源程式碼參考,可用於在ACEINNA的OpenIMU平台上實現數學計算。

保持平衡,別傾倒了…

測量傾斜的首要也是最基本的方法是進行液位(liquid level)測量,例如木匠師傅採用水平測量工具。想想看,這其實只是對於地球引力的簡單加速度測量。

ACEINNA-01-tilt

液位是靜態重力加速度的簡單測量(來源:ACEINNA)

IMU中的三軸加速度計可以在靜態條件下直接測量該響應。這種測量的靜態精確度通常受到整個加速度計偏置精確度的影響,包括溫度效應。

靜態翻滾和俯仰測量的完整數學計算如下所示。此數學計算方式建置在稱為‘Leveler’的簡單ACEINNA OpenIMU應用程式中。您可以從此來源的ACEINNA OpenIMU下載並安裝該程式碼,也可以使用ACEINNA Developer Website和編譯程式碼將其上傳至OpenIMU。

ACEINNA-02-equations

使用IMU進行靜態傾斜的方程式簡介(來源:ACEINNA)

當然,問題在於加速度計如何響應平台的傾斜,以及平台的線性加速度,如下圖所示。再者,光是使用加速度計,也不太可能區分出上述兩者。

ACEINNA-03-tilt-plus-linear-acceleration

在動態條件下基於加速度的傾斜測量誤差(來源:ACEINNA)

值得慶幸的是,IMU內建一個三軸速率陀螺儀(或陀螺儀),可以響應三軸中每個軸的角度變化率。簡單的偏斜率示例如下圖。關於角速率陀螺儀的好消息是它並不會直接響應線性加速度或線性運動;壞消息則是將角速率轉換為角度的過程涉及積分,將會因為陀螺儀的偏置和雜訊而隨時間漂移。此外,陀螺儀並沒有實際的水平測量值,因而無法確定絕對水平,如氣泡水平儀或是基於加速度的重力測量等。

ACEINNA-04-gyro

角速率陀螺儀測量角度的變化率(來源:ACEINNA)

當然,下一步是將兩種測量形式結合於一個解決方案中。加速度計用於作為靜態水平的長期參考;即「垂直」。這一數據與姿態變化的「陀螺儀」測量值融合,為整體提供精確且無漂移動態響應。這種「垂直+陀螺儀」的經典感測器融合,是飛機「垂直陀螺儀」來源的基礎。在實作中進行這種測量的一種好方法是使用四元數更新,沿著卡爾曼(Kalman)濾波器將角速率傳播到姿態。該數學計算方式如下:

ACEINNA-05-equations

以IMU實現動態姿態的卡爾曼濾波等式(來源:ACEINNA)

就像靜態水平儀程式碼一樣,ACEINNA的開放來源OpenIMU平台提供了上述數學計算的高性能調諧建置。只需安裝適於Visual Studio Code的ACEINNA Extension,然後點選「客製IMU示例」(Custom IMU Examples)。動態傾斜應用程式稱為‘VG_AHRS’,還包括使用板載磁力計以及硬/軟鐵補償,以實現動態穩定航向測量。

最後,請查看以下視訊,或許更有助於清楚地瞭解本文所描述的概念。

當然,我還是一如往常地歡迎你的評論與提問。

編譯:Susan Hong

(參考原文:Measuring Dynamic Attitude for Drones, Robotics, and Autonomous Vehicles,by Mike Horton)