四旋翼无人机Simulink轨迹跟踪:应用MPC的稳定控制研究
四旋翼无人机simulink轨迹跟踪 mpc四旋翼无人机的轨迹跟踪总让人头秃——既要考虑空气动力学又要处理姿态耦合传统PID刚调完俯仰角偏航角又飘了。这时候Model Predictive ControlMPC就像个自带预判的超管提前算好未来几步的控制量直接让无人机贴着参考轨迹飞。先给飞机建个模。在Simulink里拖出六个微分方程模块分别对应位置(x,y,z)和欧拉角(φ,θ,ψ)的动态。注意这里用四元数转换会更好不过为了实时性还是选择了欧拉角简化% 四旋翼动力学核心方程片段 function dx quad_dynamics(t, x, u) Ix 0.03; % 滚转惯量 g 9.81; dx zeros(12,1); % 位置导数 dx(1:3) x(4:6); % 牛顿部分 dx(4) (sin(x(11))*sin(x(9)) cos(x(11))*sin(x(10))*cos(x(9)))*u(1); dx(5) (-sin(x(9))*cos(x(11)) sin(x(11))*sin(x(10))*cos(x(9)))*u(1); dx(6) u(1)*cos(x(10))*cos(x(9)) - g; % 角速度微分 dx(7:9) [ (u(2) - x(8)*x(9)*(Iy-Iz))/Ix ; %...省略其他轴的惯量计算 ]; end建模时最容易踩的坑是坐标系转换。有次仿真时无人机突然倒着飞查了半天发现是机体坐标系和地面系搞反了。建议把旋转矩阵单独封装成函数反复验证。MPC控制器配置才是重头戏。用MPC Designer生成代码后别急着跑先改这几个参数mpcobj.PredictionHorizon 15; % 预测步长 mpcobj.ControlHorizon 3; % 控制步长 mpcobj.Weights.OutputVariables [10 10 1 0.5]; % 位置权重姿态 mpcobj.Weights.ManipulatedVariablesRate [0.1 0.1 0.1 0.1]; % 抑制电机突变实测发现输出权重里高度方向要给高点不然遇到风扰容易掉高。控制量变化率权重能防止电机指令跳变避免烧电调。四旋翼无人机simulink轨迹跟踪 mpc调试时开着Simulink的Scope看各状态量变化突然发现滚转角跟踪滞后。这时候别急着调参先检查预测模型是否准确——把MPC的Plant模型换成实际动力学模型再跑一遍如果误差消失说明需要重新辨识模型参数。最终效果要看跟踪误差曲线和电机转速曲线。好的MPC控制应该像这样X/Y方向误差不超过5cm在2m/s速度下四个电机转速曲线平滑没有锯齿状波动遭遇阵风扰动后能在0.8秒内恢复跟踪有个骚操作是在目标轨迹生成器里加入障碍物规避算法让MPC的参考轨迹动态变化。这时候需要把预测时域拉长到25步以上不过得换用QP求解器的快速模式否则实时性撑不住。最后提醒别在树莓派上跑这个仿真之前用Jetson Nano实时测试时发现Simulink生成代码的效率比手写C低30%后来改用S-function封装C求解器才搞定。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437867.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!