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

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

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

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

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

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

目录

💥1 概述

人工势场路径规划的基本原理:

面向非线性系统的控制设计:

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

人工势场方法是一种在机器人导航和路径规划领域中广泛应用的技术,它通过模拟物理中的引力和斥力概念来指导机器人从起始位置移动到目标位置,同时避免遇到障碍物。这种方法结合了吸引势场(引导机器人向目标移动)和排斥势场(促使机器人远离障碍物)的概念,以形成一个综合的势能场,机器人沿着该场的梯度下降找到最优路径。

人工势场路径规划的基本原理:

  1. 吸引势场:对于每一个机器人位置,计算一个指向目标点的力,这个力的大小通常与当前位置到目标点的距离成反比。这样设计可以保证机器人在接近目标时速度减慢,直到到达目标。

  2. 排斥势场:在机器人的周围及障碍物周围设定一个排斥区域,当机器人靠近这些区域时,计算一个指向安全区域外的力,其大小随着距离障碍物的减小而急剧增加,以确保安全避障。

  3. 组合势场:将吸引势场和所有排斥势场所产生的力进行矢量合成,得到总力的方向和大小,机器人根据这个总力的方向移动,从而实现路径规划。

面向非线性系统的控制设计:

非线性系统因其动态行为复杂多变,给控制设计带来了挑战。为这类系统设计控制器时,可以采用多种先进的控制理论和技术,包括但不限于:

  1. 自适应控制:能够在线调整控制器参数以应对系统参数变化或不确定性,适用于某些类型的非线性系统。

  2. 滑模控制:通过设计一个滑动面,使得系统状态能够快速地滑向并保持在其上,从而达到稳定控制的目的。适用于处理具有不确定性和外部扰动的非线性系统。

  3. 模型预测控制(MPC):基于系统的数学模型预测未来状态,并基于这些预测优化控制输入。虽然主要应用于线性系统,但通过非线性模型和合适的优化策略也可应用于非线性系统。

  4. 反馈线性化:通过坐标变换将非线性系统转化为等效的线性系统,然后应用线性控制理论设计控制器。此方法适用于可完全反馈线性化的系统。

  5. 智能控制方法:如神经网络控制、模糊控制或基于遗传算法的控制,利用学习能力和模糊逻辑处理非线性关系,尤其适合于难以建立精确数学模型的复杂系统。

将人工势场方法应用于非线性系统时,需要考虑系统动态特性的非线性影响,可能需要对势场模型进行适当的修正或扩展,以确保控制策略的有效性和鲁棒性。此外,控制器的设计需与系统动力学模型紧密结合,可能还需要引入上述提到的一些高级控制技术来提高性能和适应性。

📚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代码实现

图片

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值