本文主要是介绍基于Rflysim平台的无人机拦截三维比例导引算法仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【后厂村路钢铁侠出品】
一、Rflysim简介
RflySim是一套专为科研和教育打造的Pixhawk /PX4 和MATLAB/Simulink生态系统或工具链,采用基于模型设计(Model-Based Design, MBD)的思想,可用于无人系统的控制和安全测试。
基于三维比例导引的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平台的无人机拦截三维比例导引算法仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!