MEMS陀螺儀姿態演算法入門

2022-07-19 23:33:28 字數 2195 閱讀 1426

測試感測器:mpu9250,九軸感測器,其中有三個軸就是陀螺儀的三個方向角速度。

陀螺儀在每個取樣點獲得:取樣時刻(單位微妙),xyz三個方向的角速度(單位弧度/秒),記為:wx, wy, wz。陀螺儀靜止時,wx, wy, wz也是有讀數的,這就是陀螺儀的零漂。

實驗一:將陀螺儀繞x軸旋轉時,只有wx有讀數;將陀螺儀繞y軸旋轉時,只有wy有讀數;將陀螺儀繞z軸旋轉時,只有wz有讀數;

實驗二:將陀螺儀繞xy面上的軸旋轉,wz讀數為零,即與旋轉軸垂直的軸上的角速度為零。

因為陀螺儀取樣率很高(1000hz),通過瞬時讀數計算姿態,可以看做:先繞x軸旋轉,再繞y軸旋轉,再繞z軸旋轉。

下面這段**實現了乙個簡單的陀螺儀姿態演算法,開機並靜置幾十秒後,拿著陀螺儀旋轉,十幾分鐘內姿態是正確的,之後由於積分累積,誤差就越來越大了。

//

引數說明:

//samplets : 取樣時刻,單位:微秒

//wx, wy, wz :陀螺儀取樣,單位:弧度/秒

void gyroexperiment(uint64_t samplets, float wx, float wy, float

wz)

//採用啟動後5秒-35秒的採用平均值作為陀螺儀零漂

//在此期間,應保持陀螺儀靜止

static

float s_wx = 0, s_wy = 0, s_wz = 0; //

陀螺儀零漂

static uint64_t s_elapsed = 0

;

if(s_elapsed < 35000000

) s_elapsed += (samplets -s_lasttime);

s_lasttime =samplets;

}//初始姿態,採用三個軸向量表示

static

float xx=1,xy=0,xz=0; //

x軸static

float yx=0,yy=1,yz=0; //

y軸static

float zx=0,zy=0,zz=1; //

z軸

//根據陀螺儀讀數計算三個軸的旋轉量

float interval = (samplets - s_lasttime) /1e6;

float rx = (wx - s_wx) *interval;

float ry = (wy - s_wy) *interval;

float rz = (wz - s_wz) *interval;

//分別構造繞三個軸旋轉的四元數

float

cos,sin;

cos = cosf(rx/2); sin = sinf(rx/2); quaternion qx(cos, xx * sin, xy * sin, xz *sin);

cos = cosf(ry/2); sin = sinf(ry/2); quaternion qy(cos, yx * sin, yy * sin, yz *sin);

cos = cosf(rz/2); sin = sinf(rz/2); quaternion qz(cos, zx * sin, zy * sin, zz *sin);

//依次旋轉三個軸向量

quaternion q = qx*qz*qy; q.normalize(); quaternion qi =q.inverse();

quaternion qx(

0, xx, xy, xz); qx = q*qx*qi; qx.normalize(); xx = qx.q2; xy = qx.q3; xz = qx.q4; //

旋轉x軸;

quaternion qy(0, yx, yy, yz); qy = q*qy*qi; qy.normalize(); yx = qy.q2; yy = qy.q3; yz = qy.q4; //

旋轉y軸;

quaternion qz(0, zx, zy, zz); qz = q*qz*qi; qz.normalize(); zx = qz.q2; zy = qz.q3; zz = qz.q4; //

旋轉z軸;

//每1秒輸出一次姿態資料

s_lasttime =samplets;

if(samplets - s_lastlog > 1000000

)}

MEMS陀螺儀抗震動研究

機械振動極大的影響mems陀螺儀的測量精度,如何消除機械振動對mems 測量的影響是這個行業的核心工作 原理框圖如下 專案使用梳齒結構mems陀螺儀表頭 驅動電路 檢測電路.mems表頭採用孟氏c v轉換電路,孟氏c v轉換電路不同於常見的c v轉換電路的地方是,孟氏c v轉換電路巧妙地利用了mem...

陀螺儀計算姿態待完善

測試感測器 mpu9250,九軸感測器,其中有三個軸就是陀螺儀的三個方向角速度。陀螺儀在每個取樣點獲得 取樣時刻 單位微妙 xyz三個方向的角速度 單位弧度 秒 記為 wx,wy,wz。陀螺儀靜止時,wx,wy,wz也是有讀數的,這就是陀螺儀的零漂。實驗一 將陀螺儀繞x軸旋轉時,只有wx有讀數 將陀...

陀螺儀的學習

從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...