【路径规划】使用人工势场的路径规划以及为非线性系统设计控制器 (Matlab实现)

“在代码的海洋里,有无尽的知识等待你去发现。我就是那艘领航的船,带你乘风破浪,驶向代码的彼岸。

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

 此主题主要涉及两个关键方面。一方面是利用人工势场进行路径规划,通过构建虚拟的势能场来引导目标物体或系统沿着期望的路径运动。人工势场方法考虑了目标位置的吸引力和障碍物的排斥力,从而计算出最优或近似最优的路径。 另一方面是针对非线性系统设计控制器。非线性系统具有复杂的动态特性,设计控制器需要充分考虑这些特性以实现有效的控制。可能会运用先进的控制理论和技术,如自适应控制、模糊控制或滑模控制等,以确保系统在各种工况下能够稳定、准确地运行,并跟踪给定的参考信号或满足特定的性能指标。 总的来说,这一研究旨在为具有复杂动态和环境约束的系统提供高效的路径规划和精确的控制策略。

📚2 运行结果

主函数部分代码:

%% Advance Dynamics Project 2018
% Path Planning, Controller Design and Simulation
% for a nonlinear Mobile-Robot 
% 1- Run Path Planning 
% 2- Run Simulation

%%
clear;clc;close all

%% Add Directory
ds=genpath(pwd);
addpath(ds);

%% Linearization
[A,B,C]=Linear_Matrix_Maker(0,0,0,0,0,0.01,0.01);
% 
%% LQR (Feedback Gains)
Q = diag([150,150,2e-16,1,1]);
R = diag([1000,1000]);

K = lqr(A,B,Q,R);
save('Data\Kmat.mat','K')

%% Simulation
load('Data\path.mat'); % Loading All Pathes

sol=struct; % Solution Structure 

% Defining Cost Matrix for All the Solutions
total_cost=zeros(length(path_n),1);

% Solving for all Pathes, Inside a Loop
for path_num=1:length(path_n)
    %% Solving Process
    
    tspan=[0 path_n(path_num).t(end)+20;];
    initialc=[0 0 0 0 0 0 0 0 0 0];
    y0=initialc;
    options = odeset('RelTol',1e-3);
    [t,y]=ode45(@(t,y) odefunc(t,y,path_num) ,tspan,y0,options);
    
    %% Trajectory Tracking
    xdesire=zeros(length(t),1);
    ydesire=zeros(length(t),1);
    for i=1:length(t)
        [xdesire(i) ,ydesire(i)]=trajectory(t(i),path_num);
    end
    
    %% Control effort
    inputmat=[0;0];
    save('Data\input_mat.mat','inputmat');
    u=zeros(2,length(t));
    for i=1:length(t)
        u(:,i)=control_function(y(i,:),t(i),path_num);
    end
    
    %% Computations for Cost function and Making Them Dimensionless
    
    n=length(t);
    
    % Phi dot 
    phi_d=zeros(n,1);
    phi_d(2:end,:)=diff(y(:,3));
    phi_d=phi_d/max(phi_d);
    
    % First Input
    u1=u(1,:)';
    u1c=u1.^2/max(u1.^2);
    
    % Second Input
    u2=u(2,:)';
    u2c=u2.^2/max(u2.^2);
    
    % Error 
    ex=y(:,1)-xdesire(end);
    ey=y(:,2)-ydesire(end);
    exc=ex.^2/max(ex.^2);
    eyc=ey.^2/max(ey.^2);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]师泽宇,陈阳舟,安树科.基于交通预测信息的电动汽车充电路径规划[J/OL].北京工业大学学报,2024(08):974-984[2024-06-30].http://kns.cnki.net/kcms/detail/11.2286.T.20240626.0914.012.html.

[2]焦俊阳. J企业生鲜果品配送中心选址及路径规划与布局研究[D].山东财经大学,2024.

🌈4 Matlab代码实现

图片

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值