【无人机控制】基于matlab虚拟刚体模型四旋翼无人机群复杂障碍物的环境中航行控制【含Matlab源码 2799期】

💥💥💥💥💞💞💞💞💞💞欢迎来到玄武科研社博客之家💞💞💞💞💞💞💥💥💥💥
在这里插入图片描述
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:玄武科研社
🏆代码获取方式:扫描文章底部QQ二维码

⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
Matlab路径规划(玄武科研社版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、四旋翼飞行器简介

0 引 言
四旋翼飞行器由于具有可垂直起降、机动性强、操作方便等诸多优点,在军事和民用场合得到广泛应用,从而成为众多学者的研究热点。四旋翼飞行器是具有四输入、六输出的欠驱动、非线性、强耦合系统。其姿态控制精度和抗干扰问题一直是研究重点。目前国内较普遍的飞行器控制算法主要包括:反步法、自适应控制、H控制、滑模控制、自抗扰控制等,对实现四旋翼飞行器的姿态控制具有重要的理论和实践意义。文献提出应用反步算法为飞行器上下、前后、左右、偏航4个子系统配置控制律,实现了四旋翼飞行器对设定轨迹的精确跟踪。该算法在构造Lyapunov函数的过程中,是以其导数小于零为前提,因此应用受到局限。文献针对传统的离散线性滑模应用于四旋翼飞行器控制具有跟踪误差大、响应速度慢、不能有限时间收敛等问题,提出了干扰观测器补偿的自适应离散终端滑模控制,使响应时间更快、跟踪效果更理想、鲁棒性更强。文献利用线性扩张状态观测器对四旋翼飞行器内部不确定干扰和外部干扰进行实时估计,进而采取线性状态反馈控制对扰动的估计值进行在线补偿,以实现四旋翼飞行器的姿态控制。

1 四旋翼飞行器动力学模型的建立
1. 1 四旋翼飞行器受力分析
对于飞行器的每个旋翼,剖面呈非对称,一旦旋翼旋转,由于上表面空气流速比下表面快,故上表面受到的空气压力小于下表面,上下表面受到的压差形成升力,如图1所示。旋翼1、3逆时针旋转,旋翼2、4顺时针旋转。由叶素动量理论可知,每个旋翼产生的升力Fi与电机转速ωi的平方成正比,即Fi=kFω2i(i=1,2,3,4),其中kF为升力系数。
在这里插入图片描述
图1 四旋翼飞行器受力分析图
当旋翼旋转时,空气阻力会阻碍其旋转。这种阻力形成施加在机体上的反扭转力矩,当4个旋翼转速相等时,旋翼产生的反扭矩作用相互抵消。四旋翼飞行器通过改变2对正反螺旋桨的转速实现对其运动控制。在4个旋翼转速相等的情况下,同时增加或者减少4个旋翼转速,可以实现飞行器上升或者下降。如果4个旋翼产生的升力之和等于机体重力,可以实现飞行器空中悬停。保持旋翼2、4的转速不变,改变旋翼1或者旋翼3的转速,飞行器在力矩l(F3-F1)或l(F1-F3)的作用下(其中l为电机轴线到飞行器中心距离),可实现俯仰运动。保持旋翼1和旋翼3的转速不变,改变旋翼2或者旋翼4的转速,飞行器在力矩l(F4-F2)或l(F2-F4)的作用下,可实现横滚运动。如果同时改变旋翼1和旋翼3的转速,或者同时改变旋翼2和旋翼4的转速,并保持飞行器总升力与机体重力相等,飞行器会在反扭矩的作用下实现偏航运动。由此可见,实现飞行器垂直运动的升力,以及实现俯仰、横滚、偏航运动的旋转力矩可以表示为
在这里插入图片描述
式中: F——飞行器垂直运动的升力;
Mx、My、Mz——四旋翼俯仰、横滚和偏航运动的旋转力矩;
kF——升力系数;
kM——旋转力矩系数。

1. 2 动力学模型建立
为了描述飞行器的姿态和运动状态,需要引入地理坐标系n(X,Y,Z)与载体坐标系b(x,y,z)。地理坐标系又称为东北天坐标系,载体坐标系与飞行器固连,原点为飞行器中心。将地理坐标系与载体坐标系原点重合,并将地理坐标系分别绕X、Y、Z轴旋转3次之后可得到载体坐标系,地理坐标系到载体坐标系的转换矩阵可表示为
在这里插入图片描述
在这里插入图片描述
由式(5)和式(2)可求得地理坐标系n中飞行器在X、Y、Z轴方向所受旋翼升力向量:
在这里插入图片描述
在这里插入图片描述
在低速飞行过程中,角速度矢量较小,式(8)中左边第二项可近似认为为零,则式(8)可化简为
在这里插入图片描述
将式(10)转换可得:
在这里插入图片描述
由式(7)和式(11)可得四旋翼飞行器在低速飞行情况下的非线性动力学模型:
在这里插入图片描述
由式(12)可知,四旋翼飞行器线运动不影响角运动,但是角运动会影响线运动。以u1、u2、u3、u4为系统输入,通过改变这4个输入变量的值,可以改变飞行器的3个线位移和3个角位移,从而实现对飞行器的运动控制。

2 四旋翼飞行器的控制系统构建与仿真
经典PID算法结构简单,基于偏差设计反馈律,不依赖受控对象的具体数学模型,在很多过程控制中均有良好表现。尽管各种新的控制算法不断涌现,但是并没有改变PID控制算法在工业控制中的主导地位。本文根据四旋翼在飞行过程中经常会遇到不确定外界干扰等情况,设计了基于小扰动的PID控制器,如图2所示。
在这里插入图片描述
图2 PID控制器结构图
在这里插入图片描述

⛄二、部分源代码

close all

syms t x y z a1 a2 a3 a4 V(x) V(y) V(z)
addpath(‘VRB’);
addpath(‘VRB/potential’);
addpath(‘SE(3)controller(11_11)/matlab’);

%% Settings

%Set the scenario you want to test:
%- Two obstacles: used for all tests
%- Six obstacles: specially made for 32-line test
%- Empty: used to test transformation

scenario = 2; %Values: [0,2,6]
transformation = false; %Only between line and square
change = 1; %Flag for transformation
VRB_orientation = true;

if scenario == 0

transformation = true;  

%VRB start and goal position
start = [20.001;20.001;0.001];
goal  = [120;20;0];

%No obstacles
obstacles = [];
n_obs = size(obstacles,2);

end

if scenario == 2

%VRB start and goal position
start = [20.001;-20.001;0.001];
goal  = [70;80;0];

%Define cylinder obstacles [x,y,z,r]
obs_pos1 = [35;17;0;15];
obs_pos2 = [80;30;0;15];
obstacles = [obs_pos1 obs_pos2];
n_obs = size(obstacles,2);

end

if scenario == 6

%VRB start and goal position
start = [ 0.001; 42.001;0.001];
goal  = [120;42;0];

%Define cylinder obstacles [x,y,z,r]
obs_pos1 = [35;12;0;15];
obs_pos2 = [35;72;0;15];
obs_pos3 = [70;22;0;10];
obs_pos4 = [70;62;0;10];
obs_pos5 = [90;30;0; 5];
obs_pos6 = [90;54;0; 5];
obstacles = [obs_pos1 obs_pos2 obs_pos3 obs_pos4 obs_pos5 obs_pos6];
n_obs = size(obstacles,2);

end

%Number of UAVs:
%For “line” and “square” formations --> [4,8,16,32]
%For “M-shape” formation --> [5,12,30]
n_uavs=4;

%Formation: [“line”, “square”, “M-shape”]
formation = “line”;
formation_pos_relative = set_formation(n_uavs, formation);
param;
trans = formation;

%Plot settings
simulation = true;

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]刘岩,杨牧.四旋翼飞行器飞行控制系统研究与设计[J].山东工业技术. 2019,(07)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

<think>嗯,我现在需要做一个关于四旋翼无人机障碍物地图中避障和路径规划的仿真模型,用MATLAB来实现,还要结合动力学方程。首先,我得理清楚整个流程需要哪些步骤,可能遇到的难点,以及如何解决。 首先,四旋翼的动力学方程。这部分我之前学过一点,四旋翼是通过四个电机的转速变化来控制姿态和位置的。动力学方程通常分为平移运动和旋转运动。平移运动可能涉及到牛顿方程,考虑重力、推力和阻力。旋转运动可能用欧拉方程,考虑转动惯量、力矩等。可能需要建立状态方程,包括位置、速度、姿态角(欧拉角或四元数)、角速度等变量。 然后,建立仿真模型MATLAB里可以用Simulink,或者直接编写ODE函数用ODE45求解。需要把动力学方程转化为微分方程的形式,用数值积分的方法来解算。可能需要考虑刚体运动方程,电机动力学模型,以及控制器的设计,比如PID控制器或者更高级的控制方法。 接下来是路径规划和避障。路径规划算法有很多,比如A*算法、RRT(快速随机探索树)、Dijkstra算法等。避障的话可能需要实时检测障碍物,调整路径。这里可能需要将地图表示为栅格地图或者二维平面上的障碍物区域,然后在其中寻找可行路径。可能需要将规划好的路径转化为无人机的目标点,通过控制器跟踪这些目标点。 然后是如何将这些模块整合在一起。整个系统可能需要分为几个部分:动力学模型控制器、路径规划器、环境地图。仿真的时候,可能需要每个时间步更新无人机状态,检查是否接近障碍物,触发避障算法,重新规划路径,或者调整轨迹。 接下来是具体实现的问题。比如,如何在MATLAB中表示地图和障碍物?可能需要用矩阵或二维数组表示栅格地图,障碍物占据某些栅格。路径规划算法需要读取地图信息,生成路径。然后,无人机的运动需要根据动力学模型控制指令来更新位置,同时实时检测是否与障碍物碰撞,如果有碰撞风险,则重新规划路径。 控制器的设计也很重要。可能需要分层控制,外环控制位置,生成望的姿态和推力,内环控制姿态,调整电机转速。或者直接使用位置控制,将望的位置转化为各电机的推力变化。这需要根据动力学方程来设计控制律,比如线性化模型后使用PID,或者使用非线性控制方法如反馈线性化、滑模控制等。 另外,仿真中的实时性可能需要考虑。如果路径规划算法计算时间较长,可能需要简化算法,或者采用更高效的方法。例如,RRT*虽然能生成较优路径,但计算量较大,而RRT可能更快,但路径不一定最优。或者使用势场法,在检测到障碍物时生成斥力,实时调整路径,但容易陷入局部最小值。 关于动力学模型的具体实现,我需要写出微分方程。例如,四旋翼的位置动力学方程可能为: m * d²x/dt² = (sinψ sinφ + cosψ sinθ cosφ) * U1 - Kx * dx/dt 类似这样的方程,其中U1是总推力,φ、θ、ψ是欧拉角(滚转、俯仰、偏航),Kx是空气阻力系数。而姿态动力学可能涉及转动惯量矩阵I,角加速度由力矩减去角速度的叉乘惯性项,即I * dω/dt = τ - ω × (I * ω),其中τ是力矩,由电机的转速差产生。 然后,将这些方程转化为状态空间形式。例如,状态向量可能包括位置、速度、欧拉角、角速度,共12个状态变量。然后编写MATLAB函数,输入当前状态和控制量,输出状态的导数。 接下来是控制器的设计。假设需要让无人机从起点飞到目标点,同时避开障碍物。位置控制器可能需要根据当前位置和目标位置生成望的俯仰和滚转角度,以及总推力。姿态控制器则根据望的欧拉角和当前姿态,生成力矩,进而控制电机转速。或者采用更简化的模型,比如直接控制无人机的加速度,然后积分得到速度和位置。 路径规划部分,比如用A*算法,首先需要定义地图。例如,创建一个二维网格,0代表自由空间,1代表障碍物。然后根据当前位置和目标位置,用A*寻找路径。当无人机沿路径飞行时,如果检测到新的障碍物(或者在已知的静态地图中),则重新规划路径。或者使用动态窗口法,根据当前速度和障碍物位置,选择最佳速度方向。 在MATLAB中实现这些可能需要不同的工具箱。比如,Robotics System Toolbox提供了路径规划的函数,如pathPlannerRRT等。或者自己编写A*算法的代码。图形显示可以用plot函数画出无人机的位置、轨迹、障碍物等。 可能的步骤总结: 1. 定义四旋翼的动力学模型,编写ODE函数。 2. 设计控制器(位置和姿态控制)。 3. 构建障碍物地图,实现路径规划算法。 4. 仿真循环:在每个时间步,根据当前位置和目标,规划或调整路径,生成控制指令,更新无人机状态,检测碰撞。 5. 可视化结果,显示无人机轨迹和障碍物。 现在需要处理的具体问题: - 动力学模型的准确性。是否需要考虑复杂的空气动力学效应,或者使用简化模型? - 控制器的稳定性和响应速度,是否会导致发散? - 路径规划算法的效率和实时性,如何在仿真中处理计算时间? - 碰撞检测的实现,如何判断无人机当前位置是否与障碍物相交? 比如,碰撞检测可以简化为检查无人机当前位置所在的栅格是否为障碍物,或者计算无人机障碍物边界的距离是否小于安全阈值。 可能的MATLAB代码结构: 主脚本: - 初始化参数(无人机质量、惯性矩阵、地图等)。 - 初始化无人机状态(初始位置、速度、姿态等)。 - 定义目标点。 - 主循环: - 路径规划:根据当前位置和目标,生成路径点。 - 控制指令计算:根据下一个路径点,计算所需的推力、姿态。 - 更新无人机状态:使用ODE求解器积分动力学方程。 - 检查是否到达目标或碰撞,终止循环。 - 更新图形显示。 函数: - 动力学模型函数(输入t, state, control,输出dstate)。 - 控制器函数(输入当前状态和目标,输出控制量)。 - 路径规划函数(输入地图、起点、终点,输出路径点)。 - 碰撞检测函数。 可能需要处理的问题: 1. 在仿真中使用ODE45时,如何实时调整控制输入?因为ODE45是变步长求解,可能需要将控制输入作为时间函数,或者在每个步长中调用控制器函数。 2. 如何将路径规划产生的离散路径点转化为连续的轨迹,比如生成平滑的路径,或者使用路径跟踪算法(如纯追踪算法)。 3. 如何处理三维空间中的避障,而不仅仅是二维?可能需要将地图扩展到三维,但会增加计算复杂度。不过用户的问题可能只需要二维平面中的避障,无人机在高度上保持固定。 可能需要简化问题,比如假设无人机在二维平面上移动,或者只在三维中处理,但障碍物是垂直的柱子等。 现在,关于具体的MATLAB代码,可能需要分步编写: 首先,动力学模型部分: 假设状态向量为 [x, y, z, vx, vy, vz, phi, theta, psi, p, q, r],其中phi、theta、psi是滚转、俯仰、偏航角,p、q、r是角速度(体坐标系)。 动力学方程需要考虑推力、重力、力矩等。 总推力 F_total = k_f * (w1^2 + w2^2 + w3^2 + w4^2),其中k_f是推力系数,w是电机转速。 力矩的计算需要考虑每个电机的力产生的扭矩,以及电机转速平方的反扭矩。比如,tau_phi = l * k_f * (w4^2 - w2^2),tau_theta = l * k_f * (w3^2 - w1^2),tau_psi = k_m * (w1^2 + w3^2 - w2^2 - w4^2),其中l是电机到质心的距离,k_m是扭矩系数。 然后将这些力和力矩代入到刚体动力学方程中。 不过这可能比较复杂,作为仿真可能需要简化。例如,假设直接控制无人机的推力在z轴方向,以及滚转、俯仰、偏航力矩,从而简化模型。 或者采用更常见的四旋翼模型,其中控制输入为总推力U1和三个力矩U2, U3, U4。 然后,动力学方程: dx/dt = vx dy/dt = vy dz/dt = vz dvx/dt = ( (cosψ sinθ cosφ + sinψ sinφ ) * U1 ) / m - Kx * vx/m dvy/dt = ( (sinψ sinθ cosφ - cosψ sinφ ) * U1 ) / m - Ky * vy/m dvz/dt = ( cosφ cosθ * U1 ) / m - g - Kz * vz/m 姿态角的导数可以通过欧拉角微分方程与体坐标系角速度的关系: dphi/dt = p + (q sinφ + r cosφ) tanθ dtheta/dt = q cosφ - r sinφ dpsi/dt = (q sinφ + r cosφ) / cosθ 角速度的变化由欧拉方程: Ix dp/dt = U2 + (Iy - Iz) q r Iy dq/dt = U3 + (Iz - Ix) p r Iz dr/dt = U4 + (Ix - Iy) p q 其中,Ix, Iy, Iz是转动惯量,U2, U3, U4是滚转、俯仰、偏航力矩。 这些方程需要转化为MATLAB函数,供ODE求解器使用。 接下来,控制器部分可能需要根据望的位置(来自路径规划)计算需要的U1,以及姿态角phi和theta,然后通过姿态控制器计算U2, U3, U4。 例如,位置控制器可能使用PID控制,计算望的倾斜角度,使得无人机朝目标方向加速。例如,x方向的加速度需求可以转换为theta角,y方向转换为phi角。 然后,姿态控制器根据当前的欧拉角和角速度,计算需要的力矩U2, U3, U4,使姿态跟踪望的phi, theta, psi。 路径规划部分,例如在二维地图中,用A*算法找到从起点到终点的路径,避开障碍物。然后将路径点作为目标点,无人机依次前往每个路径点。 在MATLAB中实现A*算法需要创建节点、开放列表、封闭列表,计算启发式函数(如曼哈顿距离或欧氏距离),并处理障碍物。 最后,将这些部分整合,并在每个仿真步骤中更新路径(如果是动态环境)或跟踪路径。 可能遇到的问题: - 动力学模型控制器的参数调整困难,导致无人机不稳定。 - 路径规划算法在复杂地图中效率低下,导致仿真速度慢。 - 三维可视化可能比较复杂,需要MATLAB的三维绘图功能。 可能需要先简化模型,验证各个模块的正确性,再逐步整合。例如,先测试动力学模型是否能正确响应控制输入,再测试控制器是否能稳定无人机,然后测试路径规划是否能生成有效路径,最后综合起来。 总之,这是一个涉及多个领域的复杂问题,需要分模块逐步解决,并进行充分的测试和调试。</think>为了在MATLAB中实现四旋翼无人机的避障与路径规划仿真,可以按照以下步骤进行: --- ### **1. 四旋翼动力学模型** 四旋翼的运动方程分为平移和旋转两部分。假设无人机质量为`m`,重力加速度为`g`,转动惯量为`Ix, Iy, Iz`,状态向量为: ``` 状态 = [x, y, z, vx, vy, vz, φ, θ, ψ, p, q, r] ``` 控制输入为总推力`U1`和力矩`U2, U3, U4`。 #### **平移动力学** \[ \begin{cases} \ddot{x} = \frac{(\cos\psi\sin\theta\cos\phi + \sin\psi\sin\phi)U1}{m} - \frac{K_x \dot{x}}{m} \\ \ddot{y} = \frac{(\sin\psi\sin\theta\cos\phi - \cos\psi\sin\phi)U1}{m} - \frac{K_y \dot{y}}{m} \\ \ddot{z} = \frac{\cos\phi\cos\theta U1}{m} - g - \frac{K_z \dot{z}}{m} \end{cases} \] #### **旋转动力学** \[ \begin{cases} \dot{\phi} = p + (q \sin\phi + r \cos\phi)\tan\theta \\ \dot{\theta} = q \cos\phi - r \sin\phi \\ \dot{\psi} = \frac{q \sin\phi + r \cos\phi}{\cos\theta} \\ I_x \dot{p} = U2 + (I_y - I_z)qr \\ I_y \dot{q} = U3 + (I_z - I_x)pr \\ I_z \dot{r} = U4 + (I_x - I_y)pq \end{cases} \] --- ### **2. 控制器设计** #### **位置控制器(外环)** - 使用PID控制生成望俯仰角`θ_d`和滚转角`φ_d`。 - 总推力`U1`由高度误差计算。 #### **姿态控制器(内环)** - 根据望姿态角`(φ_d, θ_d, ψ_d)`,使用PID生成力矩`U2, U3, U4`。 --- ### **3. 路径规划与避障** #### **地图表示** 使用栅格地图,0表示自由空间,1表示障碍物: ```matlab map = [ 0 0 0 0 0; 0 1 1 1 0; 0 0 0 1 0; 0 1 0 0 0; ]; ``` #### **A* 算法实现** ```matlab function path = AStar(start, goal, map) % 实现A*算法,返回路径点 % 使用优先队列和启发式函数(欧氏距离) end ``` --- ### **4. MATLAB仿真代码** #### **主程序框架** ```matlab % 初始化参数 m = 1.0; g = 9.81; Ix = 0.1; Iy = 0.1; Iz = 0.2; Kx = 0.1; Ky = 0.1; Kz = 0.1; % 初始状态 state0 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; % 地图和路径规划 map = zeros(10,10); % 自定义障碍物 start = [1,1]; goal = [10,10]; path = AStar(start, goal, map); % 仿真时间 tspan = [0 20]; % 控制器参数 Kp_pos = 1.0; Ki_pos = 0.1; Kd_pos = 0.5; % 使用ODE45求解动力学方程 options = odeset('RelTol',1e-4); [t, state] = ode45(@(t, state) drone_dynamics(t, state, path, Kp_pos, Ki_pos, Kd_pos), tspan, state0, options); % 可视化 figure; show(map); hold on; plot(state(:,1), state(:,2), 'r-'); ``` #### **动力学模型函数** ```matlab function dstate = drone_dynamics(t, state, path, Kp, Ki, Kd) % 解析当前状态 x = state(1); y = state(2); z = state(3); vx = state(4); vy = state(5); vz = state(6); phi = state(7); theta = state(8); psi = state(9); p = state(10); q = state(11); r = state(12); % 路径跟踪:获取当前目标点 target = get_current_target(path, [x,y,z]); % 位置控制器计算U1, phi_d, theta_d [U1, phi_d, theta_d] = position_controller([x,y,z], target, Kp, Ki, Kd); % 姿态控制器计算U2, U3, U4 [U2, U3, U4] = attitude_controller(phi, theta, psi, p, q, r, phi_d, theta_d, 0); % 动力学方程 dstate = zeros(12,1); % 平移部分 dstate(1:3) = [vx; vy; vz]; ax = (cos(psi)*sin(theta)*cos(phi) + sin(psi)*sin(phi)) * U1/m - Kx*vx/m; ay = (sin(psi)*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值