clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
Xo=[0,0];%起点位置
k=10;%计算引力需要的增益系数
K=0;%初始化
m=1;%计算斥力的增益系数,自己设定
d=2;%障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响,自己设定
n=10;%障碍个数
l=0.5;%步长
J=200;%循环迭代次数
X_target=[10,10];
X_obs=[1 1.5;3 3;4 4.5;3 6;6 2.5;5.5 7;8 8.5;9,9.5;10 5;7 6];%这个向量是n*2维,障碍的位置
X_robot=Xo;%X_robot是机器人的定位坐标,将车的起始坐标Xo赋给X_robt
%***************初始化结束,开始主体循环******************/
for j=1:J
RobotPoint(j,1)=X_robot(1);%赋初值,RobotPoint存放机器人走过的每个点的坐标,刚开始先将起点放进该向量
RobotPoint(j,2)=X_robot(2);
%调用计算角度模块
[angle_at,angle_re]=compute_angle(X_robot,X_target,X_obs,n);%angle_at,angle_re是计算出来的机器人和目标/障碍之间的与X轴之间的夹角,统一规定角度为逆时针方向
%调用计算引力模块,x_at/y_at是引力在x/y轴的分量之和
[x_at,y_at]=compute_attraction(X_robot,X_target,k,angle_at);%机器人坐标,目标点,增益常数,角度
%调用斥力模块
[x_re,y_re]=compute_repultion(X_robot,X_target,X_obs,m,angle_re,n,d);%输入参数为当前坐标,Xsum是障碍物的坐标向量,增益常数,障碍物方向的角度,障碍物个数,影响阈值
%计算合力在x,y轴的分量
F_xj=x_at+x_re;
F_yj=y_at+y_re;
%计算合力与x轴夹角
if F_xj>0
angle_F(j)=atan(F_yj/F_xj);
else
angle_F(j)=pi+atan(F_yj/F_xj);
end
%下一步行进方向
Xnext(1)= X_robot(1)+l*cos(angle_F(j));
Xnext(2)= X_robot(2)+l*sin(angle_F(j));
%保存机器人的每一个位置
X_robot=Xnext;
%判断是否到达目标点,距离在一个步长之内认为到达目标点
r_target=sqrt((X_robot(1)-X_target(1))^2+(X_robot(2)-X_target(2))^2);
%考虑靠近目标点的情况,尽量直线运动,防止反复来回震荡
if(r_target>l&&r_target<2*l)
[d_obs_line] = distance_fuzzyControl( X_robot,X_target,X_obs,n);
if( d_obs_line>=0.5)%far,不会影响机器人的直线运动
Xnext(1)= X_robot(1)+l*cos(angle_at);
Xnext(2)= X_robot(2)+l*sin(angle_at);
X_robot=Xnext;
end
end
%判断是否到达目标点,距离在一个步长之内认为到达目标点
if(r_target<=l)
K=j;%记录迭代到多少次,到达目标。
break;
end%如果不符合if的条件,重新返回循环,继续执行。
end%大循环结束
%***********************************画出规划路径*************************
x=RobotPoint(:,1);
y=RobotPoint(:,2);
x_obs=[1,3,4,3,6,5.5,8,9,10,7];%障碍的x坐标
y_obs=[1.5,3,4.5,6,2.5,7,8.5,9.5,5,6];%障碍的y坐标
plot(x_obs,y_obs,'o',10,10,'v',0,0,'ms',x,y,'r')%把路径点,障碍,起点,目标分别用不同的标记画出
%plot(RobotPoint(:,1),RobotPoint(:,2));
clear;


fpga和matlab

- 粉丝: 19w+
最新资源
- 支路电气介数Matlab仿真研究:HVDC、FACTS(TCSC与UPFC)模型的选择与对比 · Matlab仿真 参考
- 我的自己总结的知识点总结
- 基于GA遗传优化的混合发电系统(Matlab)优化配置算法:风力、光伏与蓄电池发电
- 基于PI控制的PMSM永磁同步电机Simulink建模与仿真技术研究 - Matlab2022a版
- 基于PSO优化的MPPT光伏发电系统Simulink仿真:构建与优化详解 · MATLAB 文档
- 基于MATLAB的车辆行驶控制运动学模型建模与仿真及其应用 - MATLAB (2025-07-28)
- 基于Simulink的Flyback反激型电路建模与仿真:Matlab 2022a版全流程解析
- 电力系统负荷损失与潮流计算matlab仿真下的节点攻击对比研究:最高度数、最高介数及最高关键度的停电规模评估
- 100KW三相光伏并网逆变器设计方案:原理图、PCB、源码及元器件详解 故障保护 深度版
- 基于Copula函数的风光联合场景生成与K-means聚类削减算法研究
- COMSOL冻土水热耦合模型:PDE建模与降水入渗的入门指南
- 基于springboot的车辆充电桩系统_join1375.zip
- ADC建模与数字校准:基于MATLAB的模数转换器及模拟IC设计实践教程
- 基于SMIC18EE工艺的24位高精度Sigma Delta ADC调制器电路设计学习包
- 复现OEA顶刊论文:紧聚焦矢量光束激发纳米颗粒MIe散射物理模型,多极分解与任意矢量光设置和激发
- 基于FLAC3D点安全系数法的边坡安全系数计算与软件内置强度折减法的对比分析 · FLAC3D 2025版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
前往页