測試感測器: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陀螺儀姿態演算法入門
測試感測器 mpu9250,九軸感測器,其中有三個軸就是陀螺儀的三個方向角速度。陀螺儀在每個取樣點獲得 取樣時刻 單位微妙 xyz三個方向的角速度 單位弧度 秒 記為 wx,wy,wz。陀螺儀靜止時,wx,wy,wz也是有讀數的,這就是陀螺儀的零漂。實驗一 將陀螺儀繞x軸旋轉時,只有wx有讀數 將陀...
陀螺儀的學習
從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...
陀螺儀工作原理
陀螺儀是用來測量平衡和轉速的工具,在載體高速轉動的時候,陀螺儀始終要通過自我調節,使得轉子保持原有的平衡,這一點是如何做到的?帶著這個問題,我們來看一下這個古老而又神秘的裝置的工作原理。我把三個gimbal環用不同的顏色做了標記,底部三個軸向,rgb分別對應xyz。假設現在這個陀螺儀被放在一艘船上,...