• d~cy
    了解作者
  • matlab
    开发工具
  • 25KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 5
    下载次数
  • 2019-02-23 22:40
    上传日期
采用人工势场法实现从起点到目标点的运动,并且正确躲避障碍物。
Path-planning.rar
  • Path-planning
  • bizhangrobot
  • main.m
    2.9KB
  • compute_repulsion.m
    1KB
  • 1.bmp
    823.8KB
  • compute_angle.m
    562B
  • Thumbs.db
    5.5KB
  • compute_Attract.m
    463B
  • no3.fig
    7KB
  • 2.bmp
    816.6KB
内容介绍
%main %障碍和目标,起始位置都已知的路径规划,意图实现从起点可以规划出一条避开障碍到达目标的路径。 %初始化车的参数 Xo=[0 0];%起点位置 k=2;%计算引力需要的增益系数 K=0;%初始化 m=5;%计算斥力的增益系数,都是自己设定的。 Po=2;%障碍影响距离,当障碍和车的距离大于这个距离时,斥力为0,即不受该障碍的影响。也是自己设定。 n=7;%障碍个数 l=0.5;%步长 J=200;%循环迭代次数 %如果不能实现预期目标,可能也与初始的增益系数,Po设置的不合适有关。 %end %给出障碍和目标信息 Xsum=[13 12;1 1.2;3 2.5;4 4.5;3 6;6 2;5.5 5.5;8 8.5];%这个向量是(n+1)*2维,其中[13 12]是目标位置,剩下的都是障碍的位置。 Xj=Xo;%j=1循环初始,将车的起始坐标赋给Xj %***************初始化结束,开始主体循环****************** for j=1:J%循环开始 Goal(j,1)=Xj(1)%Goal是保存车走过的每个点的坐标。刚开始先将起点放进该向量。 Goal(j,2)=Xj(2) %调用计算角度模块 Theta=compute_angle(Xj,Xsum,n)%Theta是计算出来的车和障碍,和目标之间的与X轴之间的夹角,统一规定角度为逆时针方向,用这个模块可以计算出来。 %调用计算引力模块 Angle=Theta(1)%Theta(1)是车和目标之间的角度,目标对车是引力。 angle_at=Theta(1)%为了后续计算斥力在引力方向的分量赋值给angle_at [Fatx,Faty]=compute_Attract(Xj,Xsum,k,Angle)%计算出目标对车的引力在x,y方向的两个分量值。 %for i=1:n %if i==1 % Fatxx(i)=Fatx % Fatyy(i)=Faty %else % Fatxx(i)=0 % Fatyy(i)=0 %end %end%这段循环是为了将引力的两个分量值扩展成向量,和后面的斥力叠加时,可以维数相同。 %end for i=1:n angle_re(i)=Theta(i+1)%计算斥力用的角度,是个向量,因为有n个障碍,就有n个角度。 end %调用计算斥力模块 [Frerxx,Freryy,Fataxx,Fatayy]=compute_repulsion(Xj,Xsum,m,angle_at,angle_re,n,Po)%计算出斥力在x,y方向的分量数组。 %计算合力和方向,这有问题,应该是数,每个j循环的时候合力的大小应该是一个唯一的数,不是数组。应该把斥力的所有分量相加,引力所有分量相加。 Fsumyj=Faty+Freryy+Fatayy%y方向的合力 Fsumxj=Fatx+Frerxx+Fataxx%x方向的合力 Position_angle(j)=atan(Fsumyj/Fsumxj)%合力与x轴方向的夹角向量 %计算车的下一步位置 Xnext(1)=Xj(1)+l*cos(Position_angle(j)) Xnext(2)=Xj(2)+l*sin(Position_angle(j)) %保存车的每一个位置在向量中 Xj=Xnext %判断 if ((Xj(1)==Xsum(1,1)))&((Xj(2)==Xsum(1,2)))%是应该完全相等的时候算作到达,还是只是接近就可以?现在按完全相等的时候编程。 K=j%记录迭代到多少次,到达目标。 break; %记录此时的j值 end%如果不符合if的条件,重新返回循环,继续执行。 end%大循环结束 K=j Goal(K,1)=Xsum(1,1);%把路径向量的最后一个点赋值为目标 Goal(K,2)=Xsum(1,2); %***********************************画出障碍,起点,目标,路径点************************* %画出路径 %for i=1:K %X(i)=Goal(i,1) %Y(i)=Goal(i,2) %end X=Goal(:,1) Y=Goal(:,2) %路径向量Goal是二维数组,X,Y分别是数组的x,y元素的集合,是两个一维数组。 x=[1 3 4 3 6 5.5 8];%障碍的x坐标 y=[1.2 2.5 4.5 6 2 5.5 8.5]; plot(x,y,'o',13,12,'v',0,0,'ms',X,Y,'.r')%把路径点,障碍,起点,目标分别用不同的标记画出。 %有问题。 axis([0,20,0,20])
评论
    相关推荐
    • path-planning.zip
      首先建立水下水平面内路径规划的模糊规则,并应用A/B模型进行静态和动态障碍物的避障.同时考虑到模糊边界的选择具有很大的随意性,所生成的路径并非最优,利用PSO算法进行模糊集合的优化,使得最终生成的路径最优.应用...
    • 5机器人路径规划.zip
      做机器人路径规划或者避障的同学,该文档有很高的参考性。
    • Desktop.rar
      移动机器人自主避障系统的设计方法多种多样,其中基于模糊控制的机器人避障系统主要是利用模糊逻辑控制器对机器人周围环境信息进行分析和判断,并规划出一条到达目标点的无碰撞路径。该方法有着占用资源小,反应迅速...
    • pathPlanning4m-master.rar
      通过matlab建立环境障碍物模型,通过遗传算法规划一条无碰撞路径,完成路径规划!
    • path_planning-master.zip
      人工势场法避障 实现从势能高出往低处运动 ,实现路径规划 和避障
    • robot-path-planning-.rar
      机器人路径规划问题 利用物体的势能来解决问题
    • main.zip
      用蚁群算法做的机器人路径规划,比较实用,值得下载
    • 人工势场避障代码matlab-Obstacle-Avoidance-CarLike-Robot-Arduino:Arduino项
      人工势场避障代码matlab 避障汽车 自主差动驱动机器人的仿真和实现,该机器人通过仅接收x和y坐标所需的位置作为外部输入,自动跟踪已知位置中已知固定障碍物的在线计算参考。 CarLike机器人 该实现是通过使用以下...
    • 粒子群优化算法在机器人的应用
      Known map of a robot path planning environment, including the global path planning and local amendments to the Road King planning. Is to study the path planning and dynamic obstacle avoidance ...
    • qpopper2.53.tar.Z
      pop3 server