基于卡尔曼滤波进行四旋翼动力学建模(Simulink&Matlab)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

****🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️**座右铭:**行百里者,半于九十。

📋📋📋++本文目录如下:++🎁🎁🎁

目录

[💥1 概述](#💥1 概述)

[📚2 运行结果](#📚2 运行结果)

[🎉3 参考文献](#🎉3 参考文献)

[🌈4 Matlab代码实现](#🌈4 Matlab代码实现)


💥1 概述

文献来源:

摘要:由于近年来民用和军事领域对无人机的兴趣日益浓厚,自主微型飞行机器人的研究得到了极大的加强。本文总结了OS4项目建模和控制部分的最终成果,重点是四旋翼飞行器的设计和控制。介绍了考虑车辆运动引起的气动系数变化的仿真模型。利用该模型得到的控制参数在不重新整定的情况下成功地应用于直升机。本文的最后一部分描述了控制方法(积分反演)和我们提出的四旋翼飞行器(姿态、高度和位置)的完全控制方案。

最后给出了自主起飞、悬停、着陆和避碰的结果。

原文摘要:

Abstract--- The research on autonomous miniature flying robots has intensified considerably thanks to the recent growth of civil and military interest in Unmanned Aerial Vehicles

(UAV). This paper summarizes the final results of the modeling and control parts of OS4 project, which focused on design and control of a quadrotor. It introduces a simulation model which takes into account the variation of the aerodynamical coefficients due to vehicle motion. The control parameters found with this model are successfully used on the helicopter without re-tuning. The last part of this paper describes the control approach (Integral Backstepping) and the scheme we propose for full control of quadrotors (attitude, altitude and position). Finally, the results of autonomous take-off, hover, landing and

collision avoidance are presented.
对以下内容进行了建模: - 四旋翼动力学

  • 电机动力学 - 用于状态估计的卡尔曼滤波 - 简单的传感器模型/ADC转换

以下内容未建模:

  • 螺旋桨动力学

  • 控制规律

  • 动力子系统

此SIM卡可用于:

  • 系统可行性研究

  • 系统性能评估和权衡

  • 控制律性能评估

📚 2 运行结果

部分代码:

%% simulation set up

step_time = 0.5; % simulation step time(sec)

end_time = 1000; % simulation end time (sec)

%end_time = 86400;

%% attitude estimator gains

Tatd = 0.5; % attitude estimator update time (sec)

Tqint = 0.5; % discrete quaternion integration period (sec)

Tsen_out = 0.5; % sensor output period (sec)

TkfProp = 0.5; % Kalman filter propagation period (sec)

KfupdatePeriodInCycle = 1; % Kalman filter update period (propagation cycle)

f_bw_atd = 0.02; % attitude determination bandwidth (hz)

%f_bw_atd = 0.005;

zeta = 0.7;

Krp = (2*pi*f_bw_atd)^2 * eye(3);

Kpp = 2*zeta*2*pi*f_bw_atd*eye(3);

qest0 = [0*1e-4; 0; 0; 1]; % initial estimator quaternion

delta_west0 = zeros(3,1); % initial deviation of estimator angular rate (rad/sec)

max_delta_w = 0.1*pi/180;

delta_w_lim = 2e-4; %0.1/pi/Tqint;

delta_th_lim= 1e-4; %0.1*pi/180/Tqint;

q0 = [0; 0; 0; 1];

%% for estimate error standard deviation prediction calculation

wn=sqrt(diag(Krp));

k=sqrt((wn.^4+4*zeta^2)./(4*zeta*wn));

%% for using Lyapunove equation to solve for expected estimation error

C=[1 0]; K=[Kpp(1,1);Krp(1,1)]; A=[0 1;0 0]-K*C; B=K;

H=[1 0]; K=[Kpp(1,1);Krp(1,1)]*Tatd; F=[1 Tatd;0 1]-K*H; G=K;

%% Kalman filter setups

Fmat = [eye(3) TkfProp*eye(3);zeros(3,3) eye(3)];

Hmat = [eye(3) zeros(3,3)];

therr0 = max([abs(qest0(1:3)); 5*1e-4]); % initial error estimate, assuming q0=[0 0 0 1]

P0 = diag([therr0^2*ones(1,3) 3e-6^2*ones(1,3)]);

R = TkfProp*KfupdatePeriodInCycle*diag(position_uncertainty_var);%1e-3^2*eye(3)*

Q = diag([1e-5^2*ones(1,3), 1e-7^2*ones(1,3)])*TkfProp;

max_rate = pi/180;

P0 = diag([1e-32*ones(1,3) 1e-5^2*ones(1,3)]);

Q = diag([1e-5^2*ones(1,3), 5e-6^2*ones(1,3)])*TkfProp;

max_bias = 1*pi/180/3600;

%% start simulation

Tcapt = Tsen_out; % sim variable capture rate (sec)

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

相关推荐
lingggggaaaa1 分钟前
PHP模型开发篇&MVC层&RCE执行&文件对比法&1day分析&0day验证
开发语言·学习·安全·web安全·php·mvc
独特的螺狮粉4 分钟前
开源鸿蒙跨平台Flutter开发:跨越 OOM 内存崩溃陷阱:基于 async* Generator 与流式 I/O 的生命科学数据底座构筑
开发语言·flutter·开源·harmonyos
jwn9995 分钟前
Laravel2.x:探索PHP框架的起源
开发语言·php
Dream of maid13 分钟前
Python-基础1(数据类型)
开发语言·python
lzhdim14 分钟前
C#中加载图片的资源释放
开发语言·c#
cch891819 分钟前
ThinkPHP3.x核心特性全解析
开发语言·后端·golang
℡終嚸♂68020 分钟前
PHP 反序列化漏洞详解
开发语言·php
SomeB1oody24 分钟前
【Python深度学习】1.2. 多层感知器MLP(人工神经网络)实现非线性分类理论
开发语言·人工智能·python·深度学习·机器学习·分类
派大星酷26 分钟前
Java 多线程创建方式
java·开发语言·多线程
科雷软件测试6 小时前
Python中itertools.product:快速生成笛卡尔积
开发语言·python