版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用四元数法的捷联惯性导航姿态解算程序close all;clear all;%重力产生的加速度矢量g=9.80142;%单位9.8m/s2G=0,0,-g'%*读入数据%*读入陀螺仪的数据gyro_x=load('gyrox.txt');gyro_y=load('gyroy.txt');gyro_z=load('gyroz.txt');%*读入加速度计的数据*%acc_rate=3/1024;acc_x =load('acceleratex.txt');acc_y =load('acceleratey.txt
2、9;);acc_z=load('acceleratez.txt');%加速度数字转换为模拟电压data_acc=acc_x;acc_y;acc_z;data_acc=data_acc/1024*3%将数据转换为相应的加速度值%*%加速度计三个轴向的零点电压%zero_ax=?%zero_ay=?%zero_az=?%加速度计三个轴向的电压/加速度比值%rate_ax=? %单位是m/s2/V%rate_ay=?%rate_az=?%acc_x=acc_x*acc_rate;%acc_y=acc_y*acc_rate;%acc_z=acc_z*acc_rate;aver_acc_
3、x=mean(acc_x)aver_acc_y=mean(acc_y)aver_acc_z=mean(acc_z)%采样时间dtime=0.01;tm=0:dtime:0.01* (size(gyro_x,2)-1);%个数numn_point=size(gyro_x,2);%图1figureplot(tm,data_acc(1,:),'-',tm,data_acc(2,:),'.',tm,data_acc(3,:),'-.');title('加速度计的采样曲线');legend('x_ACC','Y_AC
4、C','Z_ACC');xlabel('Time / (10ms)');ylabel('Accelerate/ (m/s'')');grid on;%plot(tm,acc_x,'-',tm,acc_y,'.',tm,acc_z,'-.');%title('加速度的计的采样曲线'):%对采样曲线进行低通滤波a=1,2,4,2,1;%gyro_x=filter(a/sum(a),1,gyro_x);%gyro_y=filter(a/sum(a),1,gyro_y
5、);%gyro_z=filter(a/sum(a),1,gyro_z);%比例变换gyro_x=gyro_x/1024*3/0.6;gyro_y=gyro_y/1024*3/0.6;gyro_z=gyro_z/1024*3/0.6;%零点电压-陀螺仪,取前80个数的平均电压zero_gx=sum(gyro_x(1:80)/80zero_gy=sum(gyro_y(1:80)/80zero_gz=sum(gyro_z(1:80)/80%减去零点gyro_x=(gyro_x-zero_gx)/0.0125/180*pi;gyro_y=(gyro_y-zero_gy)/0.0125/180*pi;g
6、yro_z=(gyro_z-zero_gz)/0.0125/180*pi;%gyro_x=(gyro_x-2.5)/0.0125/180*pi;%gyro_y=(gyro_y-2.5)/0.0125/180*pi;%gyro_z=(gyro_z-2.5)/0.0125/180*pi;%测试数据accelerate=zeros(3,n_point);accelerate(1,1:100)=10;accelerate(1,101:200)=-10; accelerate(1,201:300)=0;%陀螺仪数据gyro_x=zeros(1,n_point);gyro_y=zeros(1,n_poin
7、t);gyro_z=zeros(1,n_point);gyro_z(1:100)=pi/3;gyro_z(101:200)=-pi/3;%重力轴始终有加速度accelerate(3,:)=accelerate(3,:)+9.8;figureplot(tm,accelerate(1,:),'-',tm,accelerate(2,:),'.',tm,accelerate(3,:),'-.');title('加速度计的采样曲线');legend('x_ACC','Y_ACC','Z_ACC'
8、;);xlabel('Time / (10ms)');ylabel('Accelerate/ (m/s'')');grid on;%画出陀螺仪的采样曲线figureplot(tm,gyro_x,'r-',tm,gyro_y,'g.',tm,gyro_z,'b-.');title('陀螺仪的采样曲线');legend('x_Gyro','Y_Gyro','Z_Gyro');xlabel('Time / (10ms)');y
9、label('Angel_rate/ (degree/s)');grid on;%size(gyro_x)%size(gyro_y)%size(gyro_z)data_gyro=gyro_x;gyro_y;gyro_z;%转移矩阵-即方向余弦矩阵T=eye(3); %T是3*3的单位矩阵,初始转移矩阵 %四元数矩阵,存储每步更新之后的四元数,方便以后绘图Q=zeros(4,n_point);%四元数的初始值确定,假定一开始导航坐标系与载体坐标系是重合的,因此方向余弦矩阵,是单位矩阵,利用它们之间的关系确定四元数的初始值。 Q(1,1)=0.5
10、*sqrt(1+T(1,1)+T(2,2)+T(3,3); Q(2,1)=0.5*sqrt(1+T(1,1)-T(2,2)-T(3,3); Q(3,1)=0.5*sqrt(1-T(1,1)+T(2,2)-T(3,3); Q(4,1)=0.5*sqrt(1-T(1,1)-T(2,2)+T(3,3);%参见捷联惯性导航技术31页3.64式 在旋转90度时不适用 %Q(1,1)=0.5*sqrt(1+T(1,1)+T(2,2)+T(3,3);%Q(2,1)=
11、1/4/Q(1,1)*(T(3,2)-T(2,3);%Q(3,1)=1/4/Q(1,1)*(T(1,3)-T(3,1);%Q(4,1)=1/4/Q(1,1)*(T(2,1)-T(1,2);%求姿态角矩阵ANGLE=zeros(3,n_point);%angle1代表绕X轴转过的角度,2代表Y轴,3代表Z轴%方向余弦矩阵到欧拉角的转换关系,这里注意旋转顺序是Z-Y-X,参考文献<<一种全新的全角度元元数与欧拉角的转换算法>>%位置矩阵position=zeros(3,n_point);
12、160; %位置矩阵velocity=zeros(3,n_point);%速度矩阵%重力加速度%acc_g=0,0,-9.8'qh=0,0,0,0;for i=1:n_point %开始循环 if i>1 velocity(:,i)=(T*accelerate(:,i-1)
13、+T*accelerate(:,i)/2+G)*dtime+velocity(:,i-1);%要考虑到重力的影响,假定重量方向与子轴方向一致 position(:,i)=position(:,i-1)+(velocity(:,i-1)+velocity(:,i)*dtime/2; end %计算欧拉角,假定俯仰角在+_90度范围移动,而滚动角和偏航角在+-180度范围内取值 %ANGLE(1,i)=atan(T(2,3)/T(3,3); %ANGLE(2,i)=asin(-T(1,3);
14、 %ANGLE(3,i)=atan(T(1,2)/T(1,1); if T(3,3)>0 %根据物理意义不可能出现0 ANGLE(1,i)=-atan(T(2,3)/T(3,3);else ANGLE(1,i)=-pi*sign(T(2,3)-atan(T(2,3)/T(3,3); end%俯仰角ANGLE(2,i)=-asin(-T(1,3);%偏航角if T(1,1)>0%公式似乎有误,直接按公式计算是负值 ANGLE(3,
15、i)=-atan(T(1,2)/T(1,1);else ANGLE(3,i)=-pi*sign(T(1,2)-atan(T(1,2)/T(1,1);end ANGLE(1,i)=atan(T(3,2)/T(3,3); ANGLE(2,i)=asin(-T(3,1); ANGLE(3,i)=atan(T(2,1)/T(1,1);%更新四元数 if i<n_point %如果还没有到超出数组范围 t
16、heta=data_gyro(:,i)*dtime;%角度向量 dtheta=sqrt(theta'*theta); %i要保证当theta为零时算法仍有关效 if dtheta=0 qh=1,0,0,0; &
17、#160; else %换用简化算法试验结果 %qh=cos(dtheta);theta*sin(dtheta/2)/dtheta; qh=1;0.5*theta; end % 更
18、新四元数 Q(:,i+1)=qh(1),-qh(2),-qh(3),-qh(4); qh(2),qh(1),-qh(4),qh(3); qh(3),qh(4),qh(1),-qh(2); qh(4),-qh(3),qh(2),qh(1)*Q(:,i); %更新方向方向余弦矩阵 T=1-2*(Q(3,i+1)*Q(3,i+1)+Q(4,i)*Q(4,i+1) 2*(Q(2
19、,i+1)*Q(3,i+1)-Q(1,i+1)*Q(4,i+1) 2*(Q(2,i+1)*Q(4,i+1)+Q(1,i+1)*Q(3,i+1); 2*(Q(2,i+1)*Q(3,i+1)+Q(1,i+1)*Q(4,i+1) 1-2*(Q(2,i+1)*Q(2,i+1)+Q(4,i+1)*Q(4,i+1) 2*(Q(3,i+1)*Q(4
20、,i+1)-Q(1,i+1)*Q(2,i+1); 2*(Q(2,i+1)*Q(4,i+1)-Q(1,i+1)*Q(3,i+1) 2*(Q(3,i+1)*Q(4,i+1)+Q(1,i+1)*Q(2,i+1) 1-2*(Q(2,i+1)*Q(2,i+1)+Q(3,i+1)*Q(3,i+1); %得到姿态矩阵 end
21、 end figure ANGLE=ANGLE*180/pi;plot(tm,ANGLE(1,:),'r-',tm,ANGLE(2,:),'g.',tm,ANGLE(3,:),'b-.');legend('Pitch Angel','Roll Angel','Yaw Angel');title('Gesture Calculation');xlabel('Time / (10ms)');ylabel(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于代理合同格式
- 2025工程施工合同中核心条款有些
- 课题申报书:共同富裕下易地扶贫搬迁家庭收入不平等的测度、机理及政策创新研究
- 课题申报书:高校专业课教师课程思政元素挖掘能力提升路径研究
- 课题申报书:服务新质生产力发展的职业教育专业教学资源库建设实践路径研究
- 课题申报书:非结构化文本数据驱动的智能辅助诊疗决策方法研究
- 上海欧华职业技术学院《画法几何及建筑制图》2023-2024学年第一学期期末试卷
- 上海纽约大学《内燃机原理》2023-2024学年第一学期期末试卷
- 五年级语文上册第一单元习作我的心爱之物 公开课一等奖创新教学设计
- 26宝葫芦的秘密(节选)公开课一等奖创新教学设计
- 高毒力肺炎克雷伯菌感染
- 《条形统计图(以一当一)》教学建议
- 实验室安全检查记录表(实验场所)
- 国开作业《公共关系学》实训项目3:社区关系建设(六选一)-实训项目二社区关系建设方案-参考(含答案)98
- 1.焊工资格备案表
- 矩形顶管施工方案28
- 招聘求职简历制作表格模板可编辑下载 精品简历模板 简历封面 17
- 人教统编版高中语文必修下册第六单元(单元总结)
- DB13∕T 5542-2022 水利水电工程施工组织设计编制指南
- 【股票指标公式下载】-【通达信】六脉神剑(底部来临止跌牛势股票)
- 拔牙-ppt课件
评论
0/150
提交评论