四旋翼慣導融合之觀測傳感器滯后問題匯總與巴特沃斯低通濾波器設計(氣壓計MS5611、GPS模塊M8N、超聲波、PX4FLOW等)

前文講到APM的三階互補方案,之前附的圖是從學長博客里面摳的,感覺還不是很詳細,于是自己就畫了下,順便重新理一下思路。

上圖中下標為O的表示原始量(Origion),C表示矯正后的量(Correction),a,v,s這些一目了然,表示加速度、速度、位置,其中帶下標c的表示融合后的狀態(tài)量,即在控制中用作實際反饋的量,讀者可以結合上圖與上文博客后面所貼的相關代碼、注釋閱讀。

鏈接如下:

四旋翼定高篇之慣導加速度+速度+位置三階互補融合方案

上文最后提到由于觀測傳感器滯后性(主要原因:1、支持的最大采樣頻率?。?、原始數(shù)據(jù)輸出噪聲大、大多數(shù)時候需要數(shù)字低通濾波造成時延),造成的直接把當前慣導估計值與觀測傳感器做差比較得到狀態(tài)誤差的方式不可取。

在提出解決辦法前,首先我們來談下傳感器采樣周期造成的觀測傳感器滯后的問題:

首先以大家熟悉的超聲波傳感器為例,其中辨識度最高的為HC-SR04

直接給出采集時序圖:

超聲波傳感器工作需要模塊發(fā)射頭向外發(fā)射波長約為6mm、頻率為40khz的超聲波信號,觸發(fā)模塊開始工作需要在模塊觸發(fā)引腳產生一個不少于10us的高電平,取觸發(fā)時刻為T0,當前方有物體時,聲波會反射回來,反射回來的信號被模塊上的接收頭所接收,并且在模塊的輸出引腳上產生一個回響應電平信號,取響應時刻回T1,根據(jù)聲波一來一往的總時間與聲音在空氣中傳播的速度,即可計算距前方物體距離。

此模塊為了防止發(fā)射信號對回響信號的影響,需要兩次發(fā)射間隔至少為60ms,模塊測量距離范圍為2cm~400cm,實際使用過程中,也就發(fā)現(xiàn)2.5m以內數(shù)據(jù)還好,超過2.5m后,稍微有點角度誤差就很大,我們就按照最大檢測距離為2.5m計算,最大采集時間為60ms+(2.5*2/340)*1000ms=74.7ms

至此我們總結下,常見的HC-SR04模塊最小采樣周期為60ms,最

大接近75ms。

75ms似乎完全可以接受,下面再以常用的M8N GPS為例:

直接截取ublox軟件設置截圖:

這里首先可以看到GPS時鐘源,一般就選GPS time即可,接著是

測量周期,一般模塊初始化為1Hz,對于一般的應用來講,1Hz刷新

速率完全夠了,這也是模塊默認的刷新速率。更快的刷新速率意

味著需要占用芯片的更大通訊資源、處理壓力,同時模塊的功耗

也就越大。

(尚不了解刷新速率加大是否會對數(shù)據(jù)輸出精度有影響。。。)

本文當前采用的不是串口解析Nema標準字符數(shù)據(jù)幀形式,本文只

對UBX里面PVT語句進行解析,PVT數(shù)據(jù)幀信息如下圖所示:

PVT語句基本上包含了GPS定點所需的所有常用信息,本文直接

GPS測量頻率設置成M8N所能允許的最大采樣頻率10Hz后,此時

的GPS采樣時間即為100ms。

下面接著討論常用高度觀測傳感器———氣壓計MS5611,數(shù)據(jù)

手冊截圖如下:

其中氣壓計采集過程為氣壓、溫度交替采集,采樣頻率可設置,

采集時,需要先開啟ADC(氣壓、溫度)轉換,然后采集,這里

Responce Time表示的為開啟到采樣的所需間隔時間。一般為

保證壓力數(shù)據(jù)、溫度數(shù)據(jù)的實時同步性,在采集溫度前、開啟氣

壓ADC數(shù)據(jù)轉換,同理,采集氣壓前,亦開啟溫度ADC轉換。這

樣可以實現(xiàn)采樣周期的最小化。

從MS5611數(shù)據(jù)手冊可以很容易的知道溫度+氣壓采樣周期最小為

0.5*2=1ms,最大為8.22*2=16.44ms,這里需要注意的是不同采

樣頻率下,傳感器的輸出精度是不一樣的,從

0.012mbar到0.065mbar,其中當采樣周期為16.44ms時,氣壓

誤差為0.012mbar,采樣周期為1.0ms時,氣壓誤差為

0.065mbar,這里出現(xiàn)的mbar表示氣壓單位毫帕。單位轉換關系如

下圖:

故0.0012mbar=1.20Pa,有常識可知1Pa誤差約等于10cm,將氣

壓誤差轉換為距離后誤差在12cm~65cm。更小采樣的采樣周期

意味著更大的采樣誤差,不同的噪聲誤差對應著卡爾曼濾波時觀

測噪聲的選取大小。

這里我們參考Autoquad飛控里面的采樣設置,直接摳圖如下:

這里可以看到,傳感器ADC轉換時,溫度與氣壓均設置成4096,

即此時最小采樣周期為16.44ms,在AQ飛控CoOS任務調度周期為

2.5ms,意味著只能實現(xiàn)最小20ms的氣壓計采樣周期。(其中緣

由大家自己算下加法即可)。

最后在介紹一種位置觀測傳感器:光流PX4FLOW

下面一段話為官網PX4FLOW中文介紹截取部分:

PX4Flow 是一款智能光學流動傳感器。傳感器擁有原752×480像素分辨率,計算光

學流的過程中采用了4倍分級和裁算法,計算速度達到250Hz(白天,室外),具備

非常高的感光度。與其他滑鼠傳感器不同,它可以以 120Hz(黑暗,室內)的計算速度

在室內或者室外暗光環(huán)境下工作,而無需照明LED。你也可以對它重新編程,用于執(zhí)行

其他基礎的,高效率的低等級機器視 覺任務。

PX4FLOW支持USB、串口、I2C兩種方式對數(shù)據(jù)進行解析,為了減小芯片開銷

作者采用的方式為I2C形式,其中I2C相關數(shù)據(jù)為如下圖:

其中包含:光流點數(shù)、光流積分量、結合高度轉換后的光流速度、超聲波距離、圖像

質量、三軸角速度、超聲波測量時間、陀螺儀內部溫度等數(shù)據(jù)。

其中:光流速度、超聲波距離、圖像質量為定點、定高所需的有用數(shù)據(jù),作者在這里只

對這三組數(shù)據(jù)進行了獲取。

PX4FLOW主控采用的是STM32F405,芯片主要資源開銷為DCMI獲取攝像頭數(shù)據(jù)與處理

+融合高度、陀螺儀光流算法(其余超聲波數(shù)據(jù)采集、板載陀螺儀SPI數(shù)據(jù)采集、

Mavlink、USB等基本上可以忽略)。

這里PX4FLOW給出了最大處理速度時耗時4ms,尚不清楚這部分指的是處理完一場圖

像數(shù)據(jù)加融合的總開銷,還是只是針對融合算法。

作者主控采用的是STM32F103RCT6,采用模擬I2C采集PX4FLOW數(shù)據(jù),為保證陀螺儀

、加計采樣以及控制周期最小化,在采集I2C時,對PX4FLOW采用的是隊列采集模式,

即第一個2ms采集X軸流速、第二個2ms采集Y軸流速、第三個2ms采集超聲波距離、第

四個2ms采集圖像質量,光流數(shù)據(jù)更新一次為8ms。

至此我們列舉幾種常見傳感器采樣周期如

下:

超聲波HC-SR04:75ms

GPS M8N:100ms

氣壓計MS5611:20ms

PX4FLOW:8ms

上述我們只是討論了數(shù)字傳感器采集過程中的傳感器采樣周期造成的時延。

這里我們討論的時延是相對于慣性導航主導傳感器——加速度計而言的。

MPU6500加速度計當不設置內部數(shù)字低通時,陀螺儀最大輸出頻率為8Khz,加速度計為

4Khz,對于四旋翼而言,最大采樣頻率為1Khz就完全夠用了,足夠高的采樣周期能減小

數(shù)據(jù)融合時的積分誤差(頻率混疊可以忽略),同時保證傳感器數(shù)據(jù)數(shù)字低通時的群時

延也更小。

作者由于STM32F103RCT6芯片運算速度限制,MEMS傳感器組合為MPU6500、HMC5983、

MS5611,這三組傳感器數(shù)據(jù)通過SPI采集進來分別耗時:73us、56us、82us。

姿態(tài)解算最大耗時約:320us

GPS串口解析最大耗時約:200us

PX4FLOW單個數(shù)據(jù)采集最大耗時約:0.5ms

三軸慣導卡爾曼融合最大耗時約:270us

控制器、數(shù)字濾波等最大耗時約:150us

系統(tǒng)總時間開銷約為1.65ms

作者選取總定時調度周期為2.0ms

上面我們考慮的是一類原始數(shù)據(jù)采集過程中的滯后,接下來介紹一類因數(shù)字低

濾波器造成的傳感器時延問題。

傳感器數(shù)字低通的滯后性:

首先以氣壓計傳感器為例子,上文講到當MS5611氣壓傳感器設置成精度最高時,即開啟

ADC采集時,溫度、氣壓轉換都設置成4096,此時官方給出的傳感器誤差為12cm,Okay,

現(xiàn)在我們先來一組原始氣壓通過壓差法獲取的相對高度值波形。

上圖中,中間藍色線表示速度波形、灰色表示加速度波形、上面總共有三條線,放大后

如下:噪聲比較大的為原始氣壓通過壓差換算高度值、平滑點的紅色線表示慣導估計高

度,較為滯后的綠色線表示,巴特沃斯2Hz截止頻率后的濾波滯后的高度值。

這里注意到,氣壓計原始高度波動比較大,高度噪聲基本上在50cm以內,數(shù)字低通后的

氣壓高度即波動比較小,不考慮傳感器靜止漂移情況下,短時間內波動在15cm以內,但

是運動起來后,發(fā)現(xiàn)滯后性很明顯。(曲線從一定高度至另一高度的跟蹤出現(xiàn)明顯

先后)

如果覺得還不夠明顯,當速度快一點后,就立馬一目了然了。

注意速度峰值大的地方,慣導位置估計高度與低通后的氣壓觀測高度,明顯都是紅色線

先起來、觀測傳感器后起來,中間來回上下拖動飛機一段更為明顯。后面最后一個速度

峰值較小時,兩曲線基本重合,看不出明顯差異。

下面給出利用MATLAB設計巴特沃斯低通濾波器過程(Tip:作者信號與系統(tǒng)很渣,只會依葫

蘆畫瓢):

首先本文巴特沃斯濾波器為2階,階數(shù)越高,雖然保證了阻帶更快衰減,但是系統(tǒng)相

延亦增長。

1、調用MATLAB濾波器設計工具箱,命令行輸入fdatool即可,界面如下。

2、左下方分別勾選Lowpass、IIR、濾波器階數(shù)、采樣頻率、截止頻率即可。

3、點擊Design Filter濾波器設計完成,得到系統(tǒng)幅頻響應如下。

4、點擊Analysis,選Phase Delay即可看到系統(tǒng)相延特性。

上面兩個圖的差異在于設置的濾波器階次不一樣,對比可知,階次越高系統(tǒng)相延越

大。

二階巴特沃斯數(shù)字低通濾波器參數(shù)如上圖所示。

通過fdatool濾波器工具箱導出的濾波器參數(shù),由巴特沃斯數(shù)字濾波器了離散方程:

數(shù)字控制器設計時,根據(jù)實時采樣的加速度計數(shù)據(jù),遞推更新即可。

/*************************************************

函數(shù)名: LPButterworth(float curr_input,Butter_BufferData *Buffer,Butter_Parameter *Parameter)

說明: 二階巴特沃斯數(shù)字低通濾波器

入口: float curr_input 當前輸入

出口: 濾波器輸出值

備注: 2階Butterworth低通濾波器

*************************************************/

float LPButterworth(float curr_input,Butter_BufferData *Buffer,Butter_Parameter *Parameter)

{

static int LPB_Cnt=0;

/*加速度計Butterworth濾波*/

/*獲取最新x(n) */

Buffer->Input_Butter[2]=curr_input;

if(LPB_Cnt>=500)

{

/* Butterworth濾波*/

Buffer->Output_Butter[2]=

Parameter->b[0] * Buffer->Input_Butter[2]

+Parameter->b[1] * Buffer->Input_Butter[1]

+Parameter->b[2] * Buffer->Input_Butter[0]

-Parameter->a[1] * Buffer->Output_Butter[1]

-Parameter->a[2] * Buffer->Output_Butter[0];

}

else

{

Buffer->Output_Butter[2]=Buffer->Input_Butter[2];

LPB_Cnt++;

}

/* x(n)序列保存*/

Buffer->Input_Butter[0]=Buffer->Input_Butter[1];

Buffer->Input_Butter[1]=Buffer->Input_Butter[2];

/* y(n)序列保存*/

Buffer->Output_Butter[0]=Buffer->Output_Butter[1];

Buffer->Output_Butter[1]=Buffer->Output_Butter[2];

return (Buffer->Output_Butter[2]);

}

相關結構體定義如下。

typedef struct

{

//volatile

float Input_Butter[3];

//volatile

float Output_Butter[3];

}Butter_BufferData;

typedef struct

{

float a[3];

float b[3];

}Butter_Parameter;

自研飛控視頻,鏈接如下:

四旋翼GPS戶外定點篇(F330機架)

四旋翼GPS定點F450青山江邊

此篇博客廢話太多,疏于整理,難免有不正之處,歡迎交流指正?。?!

下節(jié)討論傳感器延時修正的簡單處理方法與慣性導航數(shù)據(jù)融合的細節(jié)部分。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容