AHRS

void AHRSupdate(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) {

float norm;

float hx, hy, hz, bx, bz;

float vx, vy, vz, wx, wy, wz; //v*當前姿態(tài)計算得來的重力在三軸上的分量

float ex, ey, ez;

// auxiliary variables to reduce number of repeated operations

float q0q0 = q0*q0;

float q0q1 = q0*q1;

float q0q2 = q0*q2;

float q0q3 = q0*q3;

float q1q1 = q1*q1;

float q1q2 = q1*q2;

float q1q3 = q1*q3;

float q2q2 = q2*q2;

float q2q3 = q2*q3;

float q3q3 = q3*q3;

// normalise the measurements

norm = sqrt(ax*ax + ay*ay + az*az);

ax = ax / norm;

ay = ay / norm;

az = az / norm;

norm = sqrt(mx*mx + my*my + mz*mz);

mx = mx / norm;

my = my / norm;

mz = mz / norm;

// compute reference direction of magnetic field

hx = 2*mx*(0.5 - q2q2 - q3q3) + 2*my*(q1q2 - q0q3) + 2*mz*(q1q3 + q0q2);

hy = 2*mx*(q1q2 + q0q3) + 2*my*(0.5 - q1q1 - q3q3) + 2*mz*(q2q3 - q0q1);

hz = 2*mx*(q1q3 - q0q2) + 2*my*(q2q3 + q0q1) + 2*mz*(0.5 - q1q1 - q2q2);

bx = sqrt((hx*hx) + (hy*hy));

bz = hz;

// estimated direction of gravity and magnetic field (v and w)

//參考坐標n系轉(zhuǎn)化到載體坐標b系的用四元數(shù)表示的方向余弦矩陣第三列即是背蟆。

//處理后的重力分量

vx = 2*(q1q3 - q0q2);

vy = 2*(q0q1 + q2q3);

vz = q0q0 - q1q1 - q2q2 + q3q3;

//處理后的mag粥庄,反向使用DCM得到

wx = 2*bx*(0.5 - q2q2 - q3q3) + 2*bz*(q1q3 - q0q2);

wy = 2*bx*(q1q2 - q0q3) + 2*bz*(q0q1 + q2q3);

wz = 2*bx*(q0q2 + q1q3) + 2*bz*(0.5 - q1q1 - q2q2);

// error is sum of cross product between reference direction of fields and direction measured by sensors 體現(xiàn)在加速計補償和磁力計補償,因為僅僅依靠加速計補償沒法修正Z軸的變差菲嘴,所以還需要通過磁力計來修正Z軸叭首。(公式28)谋梭。《四元數(shù)解算姿態(tài)完全解析及資料匯總》的作者把這部分理解錯了哑姚,不是什么叉積的差祭饭,而叉積的計算就是這樣的。計算方法是公式10叙量。

ex = (ay*vz - az*vy) + (my*wz - mz*wy);

ey = (az*vx - ax*vz) + (mz*wx - mx*wz);

ez = (ax*vy - ay*vx) + (mx*wy - my*wx);

// integral error scaled integral gain

exInt = exInt + ex*Ki* (1.0f / sampleFreq);

eyInt = eyInt + ey*Ki* (1.0f / sampleFreq);

ezInt = ezInt + ez*Ki* (1.0f / sampleFreq);

// adjusted gyroscope measurements

//將誤差PI后補償?shù)酵勇輧x倡蝙,即補償零點漂移。通過調(diào)節(jié)Kp绞佩、Ki兩個參數(shù)寺鸥,可以控制加速度計修正陀螺儀積分姿態(tài)的速度。(公式16和公式29)

gx = gx + Kp*ex + exInt;

gy = gy + Kp*ey + eyInt;

gz = gz + Kp*ez + ezInt;

/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末品山,一起剝皮案震驚了整個濱河市胆建,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肘交,老刑警劉巖笆载,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異涯呻,居然都是意外死亡凉驻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門复罐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涝登,“玉大人,你說我怎么就攤上這事效诅≌凸觯” “怎么了咳短?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛛淋。 經(jīng)常有香客問我,道長篡腌,這世上最難降的妖魔是什么褐荷? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嘹悼,結(jié)果婚禮上叛甫,老公的妹妹穿的比我還像新娘。我一直安慰自己杨伙,他們只是感情好其监,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著限匣,像睡著了一般抖苦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上米死,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天锌历,我揣著相機與錄音,去河邊找鬼峦筒。 笑死究西,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的物喷。 我是一名探鬼主播卤材,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峦失!你這毒婦竟也來了扇丛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤宠进,失蹤者是張志新(化名)和其女友劉穎晕拆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體材蹬,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡实幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堤器。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆庇。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闸溃,靈堂內(nèi)的尸體忽然破棺而出整吆,到底是詐尸還是另有隱情拱撵,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布表蝙,位于F島的核電站拴测,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏府蛇。R本人自食惡果不足惜集索,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汇跨。 院中可真熱鬧务荆,春花似錦、人聲如沸穷遂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚪黑。三九已至盅惜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忌穿,已是汗流浹背酷窥。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伴网,地道東北人蓬推。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像澡腾,于是被迫代替她去往敵國和親沸伏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容