pixhawk的位置解算分為兩部分,第一部分主要為感測器的資料獲取,而該部分最主要的就是gps資料的提取。第二部分為與慣性器件之間的組合導航。組合導航的好處我就不用多說了。
pixhawk**中目前主要有兩處組合導航的**:
1)firmware/src/examples/ekf_att_pos_estimator
2)firmware/src/modules/ekf2 + firmware/src/lib/ecl/ekf
第乙個狀態變數的維數為22,第二個是24,整體上沒有太大區別。以第乙個為例:
該部分**完全是按照慣性導航與組合導航的方法進行姿態和位置解算的,起到了類似於大型無人機捷聯組合導航系統的作用。
該部分卡拉曼濾波組合導航採用22階kalman,所需要估計的狀態矩陣為:
index // state vector: 注釋
// 0-3: quaternions (q0, q1, q2, q3) 四元數
// 4-6: velocity - m/sec (north, east, down) 地理系速度
// 7-9: position - m (north, east, down) 地理系位置
// 10-12: delta angle bias - rad (x,y,z) 陀螺漂移
// 13: delta velocity bias - m/s (z) 加計零偏
// 14-15: wind vector - m/sec (north,east) 地理水平風速
// 16-18: earth magnetic field vector - gauss (north, east, down) 地理系磁場
// 19-21: body magnetic field vector - gauss (x,y,z) 機體系磁場
量測量包括: gps速度位置、磁力計、空速、光流、
整體程式分為以下幾個部分:
1、 捷聯慣性導航
該部分內容完全是規規矩矩的捷聯慣性導航的步驟,在這裡不多做解釋。**內容可以看以光衢的《慣性導航原理》或者秦永元的《慣性導航》。
經過慣性導航解算,採用陀螺和加計的原始資料,得到了狀態0-9的更新。
2、 資料提取
在task_main()中,首先進行了資料提取。
3、 kalman濾波
在進行kalman濾波之前,首先判斷了量測量是否可靠,需要根據量測量的可靠與否,在更新測量矩陣h,旨在決定是否要引入或者捨棄某些量測量資訊。
4、 publish組合導航的資料
Pixhawk學習6 2 姿態解算
在px4中,採用三軸陀螺,三軸加計,三軸磁力計採用ekf進行姿態解算。現在在examples attitude estimator ekf裡面,在cmake裡面並沒有開啟,nuttx px4fmu v2 default裡面用的是ekf2 該演算法中估計的是機體系下的量。定義機體座標系 前右下 導航座...
shell 三 位置引數
執行 shell 指令碼檔案時我們可以給它傳遞一些引數,這些引數在指令碼檔案內部可以使用 n的形式來接收,例如,1 表示第乙個引數,2 表示第二個引數,依次類推 在講解變數的命名時,我們提到 變數的名字必須以字母或者下劃線開頭,不能以數字開頭 但是位置引數卻偏偏是數字,這和變數的命名規則是相悖的,所...
Pixhawk學習10 2 多旋翼位置控制
10.1中介紹了目標位置點的計算邏輯,知道下一時刻的目標位置後,飛控需要根據當前位置進行計算,依次得到期望速度,期望拉力向量,期望姿態。至此就完成了多旋翼的位置控制。1 期望速度計算 上篇計算得到期望位置之後,根據飛機當前位置,可知道位置差向量。在位置速度串級pid中,位置環只採用了比例,速度環採用...