久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2141|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求一歐拉角與四元數(shù)算程序(希望有注釋)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:337204 發(fā)表于 2018-5-24 12:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求一歐拉角與四元數(shù)算程序(希望有注釋)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:574341 發(fā)表于 2019-7-9 13:13 | 只看該作者
所以在軟件解算中,我們要首先把加速度計采集到的值(三維向量)轉(zhuǎn)化為單位向量,即向量除以模,傳入?yún)?shù)是陀螺儀x、y、z值和加速度計x、y、z值:
void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az)
{ float norm;
float vx, vy, vz; float ex, ey, ez;           
norm = sqrt(ax*ax + ay*ay + az*az);      
ax = ax / norm;
ay = ay / norm;
az = az / norm;  
下面把四元數(shù)換算成方向余弦中的第三行的三個元素。剛好vx、vy、vz 。其實就是上一次的歐拉角(四元數(shù))的機體坐標(biāo)參考系換算出來的重力的單位向量。
estimated direction of gravity vx = 2*(q1*q3 - q0*q2);
vy = 2*(q0*q1 + q2*q3);
vz = q0*q0 - q1*q1 - q2*q2 + q3*q3;
axyz是機體坐標(biāo)參照系上,加速度計測出來的重力向量,也就是實際測出來的重力向量。
axyz是測量得到的重力向量,vxyz是陀螺積分后的姿態(tài)來推算出的重力向量,它們都是機體坐標(biāo)參照系上的重力向量。
那它們之間的誤差向量,就是陀螺積分后的姿態(tài)和加計測出來的姿態(tài)之間的誤差。
向量間的誤差,可以用向量叉積(也叫向量外積、叉乘)來表示,exyz就是兩個重力向量的叉積。
這個叉積向量仍舊是位于機體坐標(biāo)系上的,而陀螺積分誤差也是在機體坐標(biāo)系,而且叉積的大小與陀螺積分誤差成正比,正好拿來糾正陀螺。(你可以自己拿東西想象一下)由于陀螺是對機體直接積分,所以對陀螺的糾正量會直接體現(xiàn)在對機體坐標(biāo)系的糾正。
integral error scaled integral gain exInt = exInt + ex*Ki;
eyInt = eyInt + ey*Ki;
ezInt = ezInt + ez*Ki;
用叉積誤差來做PI修正陀螺零偏
integral error scaled integral gain exInt = exInt + ex*Ki;
eyInt = eyInt + ey*Ki;
ezInt = ezInt + ez*Ki;  // adjusted gyroscope measurements
gx = gx + Kp*ex + exInt;
gy = gy + Kp*ey + eyInt;
gz = gz + Kp*ez + ezInt;
四元數(shù)微分方程,其中T為測量周期,為陀螺儀角速度,以下都是已知量,這里使用了一階龍哥庫塔求解四元數(shù)微分方程:
integrate quaternion rate and normalise
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;   
最后根據(jù)四元數(shù)方向余弦陣和歐拉角的轉(zhuǎn)換關(guān)系,把四元數(shù)轉(zhuǎn)換成歐拉角,所以有:
ANGLE.Yaw = atan2(2 * q1 * q2 + 2 * q0 * q3, -2 * q2*q2 - 2 * q3* q3 + 1)* 57.3; // yaw
ANGLE.Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch
ANGLE.Roll= atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本特黄a级高清免费大片 特黄色一级毛片 | 欧美一级在线免费 | 国产精品免费一区二区三区 | 自拍偷拍第一页 | 免费毛片网站在线观看 | 国产精品一区二区久久 | 日韩一级不卡 | 国产亚洲一区二区三区 | 97国产精品 | 99精品网| 欧美一区二区三区在线观看视频 | 成人福利在线视频 | 欧美jizzhd精品欧美巨大免费 | 中文日韩在线 | 一级黄色片一级黄色片 | 午夜欧美| 黄免费观看视频 | 久热精品在线观看视频 | 日本精品一区二区三区在线观看视频 | 午夜电影网| 国产精品国产三级国产aⅴ中文 | 在线观看国产三级 | www.久久久久久久久久久 | 亚洲成网站 | 青春草91| 国产精品久久久久久婷婷天堂 | 午夜在线影院 | 国产午夜精品一区二区三区四区 | 免费美女网站 | 黄色国产视频 | 成人三级电影 | 一级黄片一级毛片 | 亚洲一区二区三区四区五区中文 | 国产天堂 | 日韩免费看片 | 浴室洗澡偷拍一区二区 | 一区二区在线 | 久久久亚洲一区 | 成人国产精品久久久 | 亚洲综合一区二区三区 | 一级免费在线视频 |