最近的工作重心回到到算法上之后,陆陆续续开始学习一些自动驾驶的控制算法。目前工作的方向主要是online trajectory generation和底层控制。

对于在线路径规划,一个重要的概念是其应该能提供给车辆一个速度和方向控制命令,使底层控制器跟随这个输入去执行运动控制操作。

人工势场法(Artificial Potential Field Method)是一个典型的在线路径算法。其运用了'水往低处流'的思路,很自然的能够理解车辆路径的产生规律。

话不多说,直接上Matlab代码看一下。

close all;clear

%% Copyright@https://www.jianshu.com/u/1f9b23cfe862

density = 0.2;

Grid_X = 0:density:10;

Grid_Y = 0:density:10;

Basic_Z = ones(length(Grid_X), length(Grid_Y));

P0 = 20;

a = 20; %斥力影响因素

b = 10; %引力影响因素

%%

Goal = [10,10]; %目标

Obs = [3,2;

3,3;

5,7;

5.3,6;

6,6;

2,4;

3,8;

4,7;

8,9]; %障碍物坐标

for k1 = 1: length(Grid_X)

for k2 =1:length(Grid_Y)

X_c = Grid_X(k1);

Y_c = Grid_Y(k2);

rre =[];

rat = sqrt((Goal(1)-X_c)^2 +(Goal(2)-Y_c)^2);

Y_rre = [];

Y_ata = [];

for k3 = 1:length(Obs)

rre(k3) = sqrt((Obs(k3,1)-X_c)^2 +(Obs(k3,2)-Y_c)^2);

Y_rre(k3) = a*(1/rre(k3) - 1/P0 ) *1/(rre(k3)^2); %基本斥力场公式

if isinf(Y_rre(k3))==1|| Y_rre(k3)>150 %为显示效果做的限制处理

Y_rre = 150;

end

end

Y_ata = b*rat; %基本引力场公式,注意这里引力只有一个值

Field_rre(k1,k2) = sum(Y_rre);

Field_ata(k1,k2) = Y_ata;

end

end

SUM = Field_rre + Field_ata;

surf(Grid_X,Grid_Y,SUM) %总力场

下面两个图是基于以上代码最后的路径和总势场。 [10,10] 是目标点,而[0,0]是我们的初始位置。

Path

Field

其实该方法有很多局限性,比如如果障碍物很靠近终点(如[9,9]),则可能无法达到。如果某个地方应力与斥力相等,则可能陷入布局最优。因此有很多改进法。后续再谈。

matlab人工势场法三维演示图,人工势场法(Artificial Potential Field Method)的学习相关推荐

  1. matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...

    如何利用人工势场进行运动规划? 1.1 引力势场(Attractive Potential Field) 人工势场这个特殊的势场并不是一个单一的场,其实它是由两个场叠加组合而成的,一个是引力场,一个是 ...

  2. MATLAB Code of Artificial Potencial Field Method for Robot Path Planning 人工势场法 局部极小问题

    APF_Code download 模拟退火法处理局部极小问题源代码 MATLAB Code of Artificial Potencial Field Method for Robot Path P ...

  3. 【全局路径规划】人工势场 Artificial Potential Field

    Real-Time Obstacle Avoidance for Manipulators and Mobile Robots Oussama Khatib 1. 人工势场 U a r t U_{ar ...

  4. Matlab来绘制三维曲面图、等高线图等

    文章目录 前言 一.Matlab插值 1.Meshgrid函数 2.Griddata函数 二.绘制 1.使用函数 (1)linspace函数 (2)peaks函数 (3)polt3函数 (4)mesh ...

  5. three.js创建简单的法向贴图

    学习交流欢迎加群:789723098,博主会将一些demo整理共享 在上一节,我们用了three.js创建了简单的凹凸贴图效果:点击查看凹凸贴图,凹凸贴图可以呈现出比普通贴图更多细节,也更具层次感,如 ...

  6. ThreeJs法向贴图

    皮肤的皱纹,砖墙表面的凹凸,衣服的褶皱,树皮的纹路- 这些丰富的细节在计算机的3D世界中,最常用的展现方式就是法相贴图了. 对于高模来说,如果精度足够高,近似认为一个面就是一个点,那么将其贴图揭下就是 ...

  7. matlab实例静电场,浅析Matlab模拟静电场三维图与恒定电流场模拟静电场

    浅析Matlab模拟静电场三维图与恒定电流场模拟静电场 浅析Matlab模拟静电场三维图 与恒定电流场模拟静电场 摘要:本文利用恒定电流场模拟静电场,通过寻找等势点的方法描绘出点电荷对的电力线和电势面 ...

  8. 如何用matlab画电场强度三维图,浅析matlab模拟静电场三维图与恒定电流场模拟静电场...

    浅析matlab模拟静电场三维图与恒定电流场模拟静电场 1 浅析 Matlab 模拟静电场三维图 与恒定电流场模拟静电场 摘要:本文利用恒定电流场模拟静电场,通过寻找等势点的方法描绘出点 电荷对的电力 ...

  9. 振子天线三维方向图 matlab仿真,1阵列天线方向图的MATLAB实现

    阵列天线方向图的MATLAB实现 第25卷第1期 2010年6月西藏大学学报(自然科学版)JOURNALOFTIBETUNIVERSnYV01.25No.1Jun.2010 阵列天线方向图的MATLA ...

最新文章

  1. 阿里专家张磊:云原生为什么对云计算生态充满吸引力?
  2. 近期必读的9篇CVPR 2019【域自适应(Domain Adaptation)】相关论文和代码
  3. crossdomain.xml配置错误导致登录不了
  4. sqlite fts5 编译 xcode other c flags
  5. 通过XShell将linux服务器上的Tomcat下项目部署后,怎样对日志操作来调试
  6. ToString:身份哈希码的十六进制表示形式
  7. vue数组变化视图_vue对象数组数据变化,页面不渲染
  8. java 树状数据算法_使用递归算法结合数据库解析成Java树形结构的代码解析
  9. canal mysql5.6_超详细的Canal入门,看这篇就够了!
  10. [Android] Android开机启动Activity或者Service方法
  11. Linux Shell脚本编程-语句控制
  12. python滑块验证(打码)+pillow裁剪图片
  13. 运用Ntop监控网络流量(视频Demo)
  14. 华为“杀疯了”:发布“摸鱼”神器10余款新品
  15. Stata 基础知识 1
  16. 设计Date类,该类采用3个整型存储日期: month、 data和year。其函数成员具有按如下格式输出日期的功能(异常处理)
  17. HTML form表单添加enctype属性后获取不到input值
  18. 物联网专业可以插本计算机技术吗,物联网工程专业专接本考什么
  19. 吞吐量、QPS、并发数等概念
  20. 什么是即时消息(IM)?

热门文章

  1. python修改第三方库重写_Python安装第三方库,切换镜像源
  2. Adobe Acrobat Reader快捷键
  3. 求细胞数量pascal题解
  4. AtCoder AGC037D Sorting a Grid (二分图匹配)
  5. excel取整函数_数据分析小白学习之路(三)——Excel多练熟能生巧
  6. php的异常详解,PHP5中的异常处理详解
  7. mysql insert 1062_一则 insert 报 ERROR 1062 (23000): Duplicate entry 'xxx' for key,请帮忙看看...
  8. bugly怎么读_高级功能
  9. python 监视图_python获取zabbix监控图
  10. python文本关键词匹配_NLP利剑篇之模式匹配