glvs; nn = 2;ts = 0.1; nts = nn*ts;% 子样数和采样时间 att0 = [0; 0; 30]*arcdeg; qnb0 = a2qua(att0); vn0 = [0;0;0]; pos0 = [34*arcdeg; 108*arcdeg; 100]; qnb = qnb0; vn = vn0; pos = pos0;% 姿态、速度和位置初始化 eth = earth(pos, vn); wm = qmulv(qconj(qnb),eth.wnie)*ts: vm = qmulv(qconj(qnb),-eth.gn)*ts wm = repmat(wm', nn, 1); vm = repmat(vm', nn, 1); % 仿真静态IMU数据 phi = [0.1; 0.2; 3]*arcmin: qnb = qaddphi(qnb, phi) % 失准角 eb =[0.01;0.015;0.02]*dph; web = [0.001;0.001;0.001]*dpsh; % 陀螺常值零偏,角度随机游走 系数 db = [80;90;100]*ug; wdb = [1;1;1]*ugpsHz; % 加速度计常值偏值,速度随机游走系数 Qk = diag([web; wdb; zeros(9,1)])/2*nts; rk = [[0.1;0.1;0.1];[[10;10]/Re;10]] Rk = diag(rk)/2; "zv([6n*[001:001:001] 'udpx[L'0:L'0:L'0] :[ol:ad/[0l:0l]] :[L:L:L] :Bapoyex[0L:L'0:L'0]])be!p = 0d Hk = [zeros(6,3),eye(6),zeros(6)] kf = kfinit(Qk, Rk, P0, zeros(15), Hk); % kf滤波器初始化 len = fix(3600/ts) % 仿真时长 kf = kfupdate(kf) if mod(t,1)<nts gps = [vn0; pos0] + rk.*randn(6,1); % GPS速度位置仿真 kf = kfupdate(kf, [vn;pos]-gps, 'M'); vn(3) = vn(3)- kf.Xk(6); Kt.XK(6) = O % 反馈 end avp(kk,:) = [qq2phi(qnb,qnb0); vn; pos; t]'; xkpk(kk,:) = [kf.Xk; diag(kf.Pk); t]; kk = kk+1; if mod(t,100)<nts disp(fix(t)); end % 显示进度 end avp(kk:end,:) = []; xkpk(kk:end,:) = []: tt = avp(:,end); % 状态真值与估计效果对比佟 mysubplot(321, tt, [avp(:,1:2),xkpk(:,1:2)]/arcmin, '\phi_E,\phi_N /\prime'); mysubplot(322, tt, [avp(:,3),xkpk(:,3)]/arcmin, '\phi_U /\prime'); mysubplot(323, tt, [avp(:,4:6),xkpk(:,4:6)], '\deltav /n /m/s'); mysubplot(324,t,ideltapos(avp(:7:9)),[xkpk(:,7),xkpk(:,8).*cos(avp(:,7))]*Re,xkpk(:,9)],\DeltaP m'); mysubplot(325, tt, xkpk(:,10:12)/dph, '\epsilon /\circ/h'); mysubplot(326, t, xkpk(:,13:15)/ug, '\nabla / ug'); % 均方差收敛佟 pk = sqrt(xkpk(:,16:end-1)) mysubplot(321, tt, pk(:,1:2)/arcmin, '\phi_E,\phi_N /\prime'); mysubplot(322, tt, pk(:,3)/arcmin, '\phi_U /\prime'): mysubplot(323, tt, pk(:,4:6), '\deltav in / m/s'); mysubplot(324, t, [[pk(:,7),pk(:,8)*cos(avp(1,7))]*Re,pk(:,9)], \DeltaP /m'); mysubplot(325, tt, pk(:,10:12)/dph, '\epsilon /\circ/h'); mysubplot(326, tt, pk(:,13:15)/ua, "\nabla / ua'):

时间: 2024-04-17 17:27:22 浏览: 11
这段代码是一个姿态和导航的仿真,主要包括以下几个步骤: 1. 定义了一些变量和常数,如子样数和采样时间。 2. 初始化姿态、速度和位置。 3. 生成静态IMU数据。 4. 设置失准角。 5. 定义陀螺常值零偏和角度随机游走系数,以及加速度计常值偏值和速度随机游走系数。 6. 计算状态方程和观测方程的噪声协方差矩阵。 7. 初始化卡尔曼滤波器。 8. 定义仿真时长。 9. 在循环中更新卡尔曼滤波器,并进行GPS速度和位置的仿真。 10. 保存状态真值与估计效果对比的结果。 11. 保存均方差收敛的结果。 最后,代码通过绘图显示了姿态、速度、位置等参数的变化情况,并展示了均方差的收敛情况。
相关问题

glvs; nn = 2;ts = 0.1; nts = nn*ts;% 子样数和采样时间 att0 = [0; 0; 30]*arcdeg; qnb0 = a2qua(att0); vn0 = [0;0;0]; pos0 = [34*arcdeg; 108*arcdeg; 100]; qnb = qnb0; vn = vn0; pos = pos0;% 姿态、速度和位置初始化 eth = earth(pos, vn); wm = qmulv(qconj(qnb),eth.wnie)*ts: vm = qmulv(qconj(qnb),-eth.gn)*ts wm = repmat(wm', nn, 1); vm = repmat(vm', nn, 1); % 仿真静态IMU数据 phi = [0.1; 0.2; 3]*arcmin: qnb = qaddphi(qnb, phi) % 失准角 eb =[0.01;0.015;0.02]*dph; web = [0.001;0.001;0.001]*dpsh; % 陀螺常值零偏,角度随机游走 系数 db = [80;90;100]*ug; wdb = [1;1;1]*ugpsHz; % 加速度计常值偏值,速度随机游走系数 Qk = diag([web; wdb; zeros(9,1)])/2*nts; rk = [[0.1;0.1;0.1];[[10;10]/Re;10]] Rk = diag(rk)/2; "zv([6n*[001:001:001] 'udpx[L'0:L'0:L'0] :[ol:ad/[0l:0l]] :[L:L:L] :Bapoyex[0L:L'0:L'0]])be!p = 0d Hk = [zeros(6,3),eye(6),zeros(6)] kf = kfinit(Qk, Rk, P0, zeros(15), Hk); % kf滤波器初始化 len = fix(3600/ts) % 仿真时长

这段代码是一个惯性导航系统的仿真代码。它使用了CSDN开发的一些函数和库来进行模拟。主要包括以下几个部分: 1. 初始化部分:设置了子样数和采样时间,初始的姿态、速度和位置。还初始化了一些常数和参数。 2. 仿真IMU数据部分:根据姿态和地球参数,生成了静态IMU数据。 3. 失准角部分:添加了一些失准角。 4. 零偏和随机游走部分:设置了陀螺零偏和加速度计常值偏值,并给它们添加了一些随机游走的效果。 5. 噪声部分:设置了测量噪声的参数。 6. KF滤波器初始化部分:根据设置的噪声参数,初始化了一个KF滤波器。 7. 仿真时长部分:根据采样时间计算了仿真的时长。 以上是对代码的简要介绍,具体的功能和实现细节可能需要进一步了解代码的上下文和具体实现。

% Ballistic missile trajectory & SINS/GPS simulation glvs ts = 0.01; %% trajectory simulation % stage 1: 1/4 circle T = 60; t = (0:ts:T)'; afadot2 = 2*pi/2/T^2; afa = 1/2*afadot2*t.^2; r = 60000; y = r-r*cos(afa); z = r*sin(afa); pitch = pi/2-afa; tt = t; % stage 2: leveling constant acceleration v = (y(end)-y(end-1))/ts; T = 120; t = (ts:ts:T)'; a = -2; y = [y; y(end)+v*t+1/2*a*t.^2]; z = [z; z(end)+t*0]; pitch = [pitch; t*0]; tt = [tt; tt(end)+t]; % stage 3: leveling constant velocity v = (y(end)-y(end-1))/ts; T = 120; t = (ts:ts:T)'; a = -0; y = [y; y(end)+v*t+1/2*a*t.^2]; z = [z; z(end)+t*0]; pitch = [pitch; t*0]; tt = [tt; tt(end)+t]; myfig, plot(y, z, '-'); xygo('front/m','up/m'); %% imu,avp,gps dxyz = [y*0,y,z,tt]; dxyz(:,1:3) = ar1filt(dxyz(:,1:3), 100); pos = dxyz2pos(dxyz); ap = [pitch, zeros(length(pos),2), pos]; [imu, avp0, avp] = ap2imu(ap); imuplot(imu); gps = gpssimu(avp(1:100:end, :), 0.1, 10, 1,0,0, 0); %% sins/gps imuerr = imuerrset(0.15, 100, 0.001, 10); davp = avperrset([1;1;3]*3, [1;1;1], [1;1;3]*100); imu1 = imuadderr(imu,imuerr); ins = insinit(avpadderr(avp0,davp), ts); ins.nts=ts; avp1 = sinsgps(imu1, gps, ins, davp, imuerr); avpcmpplot(avp, avp1(:,[1:9,end]), 'phi');帮我注释代码

以下是对代码的注释: ```matlab % Ballistic missile trajectory & SINS/GPS simulation glvs ts = 0.01; % 设置时间步长 %% 轨迹模拟 % 阶段1:1/4圆形轨迹 T = 60; % 转弯时间 t = (0:ts:T)'; % 时间向量 afadot2 = 2*pi/2/T^2; % 角速度 afa = 1/2*afadot2*t.^2; % 角度 r = 60000; % 距离 y = r-r*cos(afa); % y坐标 z = r*sin(afa); % z坐标 pitch = pi/2-afa; % pitch角 tt = t; % 阶段2:匀加速直线运动 v = (y(end)-y(end-1))/ts; % 初始速度 T = 120; % 时间 t = (ts:ts:T)'; % 时间向量 a = -2; % 加速度 y = [y; y(end)+v*t+1/2*a*t.^2]; % y坐标 z = [z; z(end)+t*0]; % z坐标 pitch = [pitch; t*0]; % pitch角 tt = [tt; tt(end)+t]; % 阶段3:匀速直线运动 v = (y(end)-y(end-1))/ts; % 初始速度 T = 120; % 时间 t = (ts:ts:T)'; % 时间向量 a = -0; % 加速度 y = [y; y(end)+v*t+1/2*a*t.^2]; % y坐标 z = [z; z(end)+t*0]; % z坐标 pitch = [pitch; t*0]; % pitch角 tt = [tt; tt(end)+t]; % 绘制轨迹图 myfig, plot(y, z, '-'); xygo('front/m','up/m'); %% IMU、AVP和GPS % 计算位置 dxyz = [y*0,y,z,tt]; dxyz(:,1:3) = ar1filt(dxyz(:,1:3), 100); pos = dxyz2pos(dxyz); % 计算姿态 ap = [pitch, zeros(length(pos),2), pos]; [imu, avp0, avp] = ap2imu(ap); % 绘制IMU图 imuplot(imu); % 生成GPS数据 gps = gpssimu(avp(1:100:end, :), 0.1, 10, 1,0,0, 0); %% SINS/GPS % 设置IMU误差和姿态误差 imuerr = imuerrset(0.15, 100, 0.001, 10); davp = avperrset([1;1;3]*3, [1;1;1], [1;1;3]*100); % 添加IMU误差 imu1 = imuadderr(imu,imuerr); % 初始化INS ins = insinit(avpadderr(avp0,davp), ts); ins.nts=ts; % 进行SINS/GPS解算 avp1 = sinsgps(imu1, gps, ins, davp, imuerr); % 绘制姿态角度对比曲线 avpcmpplot(avp, avp1(:,[1:9,end]), 'phi'); ```

相关推荐

% Error Distribution Method and Analysis of Observability Degree Based on the Covariances in Kalman Filter. % Copyright(c) 2009-2021, by Gongmin Yan, All rights reserved. % Northwestern Polytechnical University, Xi An, P.R.China % 2/03/2018, 16/05/2021 glvs avp0 = avpset([0;0;0], [30;108;380]); % init AVP ts = 0.1; T = 600; %% twopos = 2; % =1 for single-position; =2 for two-position alignment if twopos==1 imu = imustatic(avp0, ts, T); elseif twopos==2 xxx = []; seg = trjsegment(xxx, 'init', 0); seg = trjsegment(seg, 'uniform', T/2-10); seg = trjsegment(seg, 'turnleft', 20, 9); seg = trjsegment(seg, 'uniform', T/2-10); trj = trjsimu(avp0, seg.wat, ts, 1); imu = trj.imu; end %% phi = [.1;.1;1]*glv.deg; imuerr = imuerrset(0.03, 100, 0.001, 10); wvn = [0.01;0.01;0.01]; [att0v, attkv, xkpk, kfs] = alignvn_kfs(imuadderr(imu,imuerr), qaddphi(a2qua(avp0(1:3)),phi), avp0(7:9), phi, imuerr, wvn); myfig; % Observability plot spk = sqrt(xkpk(:,13:end-1)); t = xkpk(:,end); for k=1:12, spk(:,k)=spk(1,k)./spk(:,k); end subplot(221), semilogy(t, spk(:,1:3),'linewidth',2); title('( a )'); xygo('Observibility'); legend('\phi_E', '\phi_N', '\phi_U') subplot(222), semilogy(t, spk(:,4:6),'linewidth',2); title('( b )'); xygo('Observibility'); legend('\deltav^n_E', '\deltav^n_N', '\deltav^n_U') subplot(223), semilogy(t, spk(:,7:9),'linewidth',2); title('( c )'); xygo('Observibility'); legend('\epsilon^b_x', '\epsilon^b_y', '\epsilon^b_z') subplot(224), semilogy(t, spk(:,10:12),'linewidth',2); title('( d )'); xygo('Observibility'); legend('\nabla^b_x', '\nabla^b_y', '\nabla^b_z')帮我注释代码

zip
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

最新推荐

recommend-type

nodejs-x64-0.10.21.tgz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

node-v4.1.1-linux-armv6l.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

node-v4.1.0-linux-arm64.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

matlab S-Function 混合系统仿真

matlab绘制函数图像 MATLAB (Matrix Laboratory) 是一种用于数值计算的高级编程语言和交互式环境,由 MathWorks 公司开发。它广泛用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。以下是一些 MATLAB 的基本特性和使用方式: 1. 基本语法 变量:MATLAB 中的变量不需要预先声明,直接赋值即可。 数组:MATLAB 使用方括号 [] 创建数组,数组索引从 1 开始。 运算符:包括加、减、乘、除、乘方等。 函数:MATLAB 有大量内置函数,也可以编写自定义函数。 2. 绘图 MATLAB 提供了丰富的绘图功能,如绘制线图、散点图、柱状图、饼图等。 matlab x = 0:0.01:2*pi; y = sin(x); plot(x, y); title('Sine Function'); xlabel('x'); ylabel('y'); 3. 数据分析 MATLAB 可以处理各种类型的数据,包括矩阵、向量、数组等,并提供了许多数据分析函数,如统计函数、信号处理函数等。 4. 脚本和函数
recommend-type

智慧交通规划方案.pptx

智慧交通规划方案.pptx
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。