matlab人工势场法三维演示图,人工势场法(Artificial Potential Field Method)的学习
最近的工作重心回到到算法上之后,陆陆续续开始学习一些自动驾驶的控制算法。目前工作的方向主要是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)的学习相关推荐
- matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...
如何利用人工势场进行运动规划? 1.1 引力势场(Attractive Potential Field) 人工势场这个特殊的势场并不是一个单一的场,其实它是由两个场叠加组合而成的,一个是引力场,一个是 ...
- 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 ...
- 【全局路径规划】人工势场 Artificial Potential Field
Real-Time Obstacle Avoidance for Manipulators and Mobile Robots Oussama Khatib 1. 人工势场 U a r t U_{ar ...
- Matlab来绘制三维曲面图、等高线图等
文章目录 前言 一.Matlab插值 1.Meshgrid函数 2.Griddata函数 二.绘制 1.使用函数 (1)linspace函数 (2)peaks函数 (3)polt3函数 (4)mesh ...
- three.js创建简单的法向贴图
学习交流欢迎加群:789723098,博主会将一些demo整理共享 在上一节,我们用了three.js创建了简单的凹凸贴图效果:点击查看凹凸贴图,凹凸贴图可以呈现出比普通贴图更多细节,也更具层次感,如 ...
- ThreeJs法向贴图
皮肤的皱纹,砖墙表面的凹凸,衣服的褶皱,树皮的纹路- 这些丰富的细节在计算机的3D世界中,最常用的展现方式就是法相贴图了. 对于高模来说,如果精度足够高,近似认为一个面就是一个点,那么将其贴图揭下就是 ...
- matlab实例静电场,浅析Matlab模拟静电场三维图与恒定电流场模拟静电场
浅析Matlab模拟静电场三维图与恒定电流场模拟静电场 浅析Matlab模拟静电场三维图 与恒定电流场模拟静电场 摘要:本文利用恒定电流场模拟静电场,通过寻找等势点的方法描绘出点电荷对的电力线和电势面 ...
- 如何用matlab画电场强度三维图,浅析matlab模拟静电场三维图与恒定电流场模拟静电场...
浅析matlab模拟静电场三维图与恒定电流场模拟静电场 1 浅析 Matlab 模拟静电场三维图 与恒定电流场模拟静电场 摘要:本文利用恒定电流场模拟静电场,通过寻找等势点的方法描绘出点 电荷对的电力 ...
- 振子天线三维方向图 matlab仿真,1阵列天线方向图的MATLAB实现
阵列天线方向图的MATLAB实现 第25卷第1期 2010年6月西藏大学学报(自然科学版)JOURNALOFTIBETUNIVERSnYV01.25No.1Jun.2010 阵列天线方向图的MATLA ...
最新文章
- 阿里专家张磊:云原生为什么对云计算生态充满吸引力?
- 近期必读的9篇CVPR 2019【域自适应(Domain Adaptation)】相关论文和代码
- crossdomain.xml配置错误导致登录不了
- sqlite fts5 编译 xcode other c flags
- 通过XShell将linux服务器上的Tomcat下项目部署后,怎样对日志操作来调试
- ToString:身份哈希码的十六进制表示形式
- vue数组变化视图_vue对象数组数据变化,页面不渲染
- java 树状数据算法_使用递归算法结合数据库解析成Java树形结构的代码解析
- canal mysql5.6_超详细的Canal入门,看这篇就够了!
- [Android] Android开机启动Activity或者Service方法
- Linux Shell脚本编程-语句控制
- python滑块验证(打码)+pillow裁剪图片
- 运用Ntop监控网络流量(视频Demo)
- 华为“杀疯了”:发布“摸鱼”神器10余款新品
- Stata 基础知识 1
- 设计Date类,该类采用3个整型存储日期: month、 data和year。其函数成员具有按如下格式输出日期的功能(异常处理)
- HTML form表单添加enctype属性后获取不到input值
- 物联网专业可以插本计算机技术吗,物联网工程专业专接本考什么
- 吞吐量、QPS、并发数等概念
- 什么是即时消息(IM)?
热门文章
- python修改第三方库重写_Python安装第三方库,切换镜像源
- Adobe Acrobat Reader快捷键
- 求细胞数量pascal题解
- AtCoder AGC037D Sorting a Grid (二分图匹配)
- excel取整函数_数据分析小白学习之路(三)——Excel多练熟能生巧
- php的异常详解,PHP5中的异常处理详解
- mysql insert 1062_一则 insert 报 ERROR 1062 (23000): Duplicate entry 'xxx' for key,请帮忙看看...
- bugly怎么读_高级功能
- python 监视图_python获取zabbix监控图
- python文本关键词匹配_NLP利剑篇之模式匹配