下载此文档

新手四旋翼算法总结.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
(匿名版程序)首先,程序中一般用了两种求解姿态的方法,一种为欧拉角法,一种为四元数法(1)欧拉角法静止状态,或者总加速度只是稍微大于g时,由加计算出的值比较准确。使用欧拉角表示姿态,令Φ,θ和Φ代表ZYX欧拉角,分别称为偏航角、俯仰角和横滚角。载体坐标系下的加速度(axB,ayB,azB)和参考坐标系下的加速度(axN,ayN,azN)之间的关系可表示为(1)。其中c和s分别代表cos和sin。axB,ayB,azB就是mpu读出来的三个值。这个矩阵就是三个旋转矩阵相乘得到的,因为矩阵的乘法可以表示旋转。(1)飞行器处于静止状态,此时参考系下的加速度等于重力加速度,即(2)把(2)代入(1)可以解的(3)(4)即为初始俯仰角和横滚角,通过加速度计得到载体坐标系下的加速度即可将其解出,偏航角可以通过电子罗盘求出。(2)四元数法(通过处理单位采样时间内的角增量(mpu的陀螺仪得到的就是角增量),为了避免噪声的微分放大,应该直接用角增量-------抄的书)上匿名的程序voidIMUupdate(floatgx,floatgy,floatgz,floatax,floatay,floataz){floatnorm;//floathx,hy,hz,bx,bz;floatvx,vy,vz;//wx,wy,wz;floatex,ey,ez;//先把这些用得到的值算好floatq0q0=q0*q0;floatq0q1=q0*q1;floatq0q2=q0*q2;//floatq0q3=q0*q3;floatq1q1=q1*q1;//floatq1q2=q1*q2;floatq1q3=q1*q3;floatq2q2=q2*q2;floatq2q3=q2*q3;floatq3q3=q3*q3; if(ax*ay*az==0) return; norm=sqrt(ax*ax+ay*ay+az*az);//acc数据归一化ax=ax/norm;ay=ay/norm;az=az/norm;//estimateddirectionofgravityandflux(vandw)vx=2*(q1q3-q0q2); //四元素中xyz的vy=2*(q0q1+q2q3);vz=q0q0-q1q1-q2q2+q3q3;//errorissumofcrossproductbetweenreferencedirectionoffieldsanddirectionmeasuredbysensorsex=(ay*vz-az*vy); //向量外积在相减得到差分就是误差ey=(az*vx-ax*vz);ez=(ax*vy-ay*vx);exInt=exInt+ex*Ki; //对误差进行积分eyInt=eyInt+ey*Ki;ezInt=ezInt+ez*Ki;//adjustedgyroscopemeasurementsgx=gx+Kp*ex+exInt; //将误差PI后补偿到陀螺仪,即补偿零点漂移gy=gy+Kp*ey+eyInt;gz=gz+Kp*ez+ezInt; //这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减//integratequaternionrateandnormalise //四元素的微分方程q0=q0+(-q1*gx-q2*gy-q

新手四旋翼算法总结 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xyb333199
  • 文件大小62 KB
  • 时间2019-10-18