基于Rflysim平台的无人机拦截三维比例导引算法仿真

2024-03-28 05:28

本文主要是介绍基于Rflysim平台的无人机拦截三维比例导引算法仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【后厂村路钢铁侠出品】

一、Rflysim简介

RflySim是一套专为科研和教育打造的Pixhawk /PX4 MATLAB/Simulink生态系统或工具链,采用基于模型设计(Model-Based DesignMBD)的思想,可用于无人系统的控制和安全测试。

基于三维比例导引的Rflysim仿真

二、三维比例导引简介

浅入深出的介绍比例导引法原理及分析-CSDN博客

导引导弹概述和相对运动方程-CSDN博客

三维比例制导律matlab代码(含注释)_matlab三维求导-CSDN博客

三、无人机拦截数学建模

3.1常用坐标系定义

地面坐标系OXYZ、无人机坐标系、轨迹坐标系、速度坐标系、视线坐标系

3.2无人机动力学和运动学建模

3.3无人机-目标运动信息计算

四、算法仿真结果

4.1基于差分法matlab仿真二维比例导引

clear all;
close all;
clc
% 假设sphere_pos和pos_info是已经定义好的变量,其中sphere_pos是一个3x1的数组,pos_info是一个结构体,包含mav_pos字段,也是一个3x1的数组  
sphere_pos = [20, 45];
mav_pos=[0,0];
self.temp1=0
self.temp2=0
self.temp3=0
self.temp4=0
self.K=6;
dt=0.01;
% 计算los向量  
cmd_v=[0,0];
i=1;
pmr=[];
% 计算LOS的横向通道、竖向通道角度 
while i<100000
los = [sphere_pos(1) - mav_pos(1), sphere_pos(2) - mav_pos(2)];
q_x = atan2(los(2), los(1)); % 注意MATLAB中atan2的参数顺序与Python不同  
dqx = q_x - self.temp1;  
self.temp1 = q_x;  theta_x = atan2(cmd_v(2), cmd_v(1)); % 注意MATLAB中atan2的参数顺序  
self.temp3 = theta_x;  % 比例导引:计算期望速度角度  
theta_xd = (self.K * dqx) + self.temp3;  % 计算V的横向通道、竖向通道角度  
cmd_v = [cos(theta_xd),sin(theta_xd)];   
cmd_v = cmd_v / norm(cmd_v);  
cmd_v = cmd_v * 4; % 调整速度向量的幅度
mav_pos=mav_pos+(dt.*cmd_v);
i=i+1;
pmr(i,:)=mav_pos;
if los(2)<1break;
end
end
plot(pmr(:,1),pmr(:,2),'r')
xlabel('X(m)');ylabel('Y(m)');%给三维图加坐标轴标注
text(0, 0,'\leftarrow起始点');%给目标轨迹加标注
text(sphere_pos(1), sphere_pos(2),'\leftarrow目标飞行器');%给目标轨迹加标注

仿真结果:

4.2基于差分法matlab仿真三维比例导引 

三维的仿真代码是两个二维耦合的。

仿真结果:

 4.3基于Rflysim仿真结果

基于三维比例导引的Rflysim仿真

仿真侧拍

这篇关于基于Rflysim平台的无人机拦截三维比例导引算法仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854565

相关文章

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时