人工势场法matlab讲解_【机器人路径规划】人工势场法

人工势场法matlab讲解_【机器人路径规划】人工势场法阅读本文需要的基础知识为:理解机器人的构型空间。建议阅读:机器人运动规划中的Cspace怎样理解?为什么不直接在笛卡尔坐标系下运算呢?本文的实现程序与使用说明见我的学习工具箱:小明工坊:【个人开源】机器人运动规划学习工具箱使用说明基本原理1.概述我们打两个比方来说明人工势场法的作用机理。首先,我们把构型空间比作一个电势场平面,机器人(的当前构型)比作空间中一点。如果让机器人的起点和障碍物带正…

大家好,又见面了,我是你们的朋友全栈君。

27abab6d8f1c7b28a6e7ba40cb1c068f.png

阅读本文需要的基础知识为:

  • 理解机器人的构型空间。建议阅读:机器人运动规划中的C space怎样理解?为什么不直接在笛卡尔坐标系下运算呢?

本文的实现程序与使用说明见我的学习工具箱:小明工坊:【个人开源】机器人运动规划学习工具箱使用说明

基本原理

1.概述

我们打两个比方来说明人工势场法的作用机理。首先,我们把构型空间比作一个电势场平面,机器人(的当前构型)比作空间中一点。如果让机器人的起点和障碍物带正电荷,终点带负电荷,机器人带正电荷。由于同性电荷相斥,异性电荷相吸的原理,机器人将会在电场力的作用下沿着某条路径向终点移动 ,并避开带正电荷的障碍物,如图1所示。

92e81a12ef1e1d27bb20eb1ab827d9ed.png
图 1 电势场

类似的,我们也可以把构型空间比作一个有起伏地形的区域。其中,起点和障碍物位于较高的区域,终点位于较低的区域,机器人视作一个球体。那么在重力的作用下,机器人将沿着某条轨迹从较高的起点滑落到较低的终点,并避开较高的障碍物。如图2[2]所示。

a093aac0baa712dc10f889f8613ccf20.png
图 2 重力势场 (图片来源于参考文献[2])

以上的两个例子其实就是电势场与重力势场的作用机制,电势场和重力势场都是自然势场。而人工势场法就是在已知起点、终点和障碍物位置的情况下,构建一个人工势场来模仿这种作用机制。人工势场法的优点在于,它其实是一种反馈控制策略,对控制和传感误差有一定的鲁棒性;缺点在于存在局部极小值问题,因此不能保证一定能找到问题的解。

2.引力势场和斥力势场(Additive Attractive/Repulsive Potential)

我们利用势函数

人工势场法matlab讲解_【机器人路径规划】人工势场法 来建立人工势场。

势(场)函数是一种可微函数,空间中某点处势函数值的大小,代表了该点的势场强度。最简单的势函数是
引力/斥力势函数。其作用思路很简单:让目标对机器人产生吸引力,障碍物对机器人产生排斥力。某点

人工势场法matlab讲解_【机器人路径规划】人工势场法 处的势函数
人工势场法matlab讲解_【机器人路径规划】人工势场法 表达为引力势和斥力势之和:

人工势场法matlab讲解_【机器人路径规划】人工势场法

其中,最常见的引力势函数表达式如下:

人工势场法matlab讲解_【机器人路径规划】人工势场法

人工势场法matlab讲解_【机器人路径规划】人工势场法 ——引力增益

人工势场法matlab讲解_【机器人路径规划】人工势场法 ——当前点
人工势场法matlab讲解_【机器人路径规划】人工势场法 到目标点
人工势场法matlab讲解_【机器人路径规划】人工势场法 之间的距离

最常见的斥力势函数表达式如下:

人工势场法matlab讲解_【机器人路径规划】人工势场法

人工势场法matlab讲解_【机器人路径规划】人工势场法 ——点
人工势场法matlab讲解_【机器人路径规划】人工势场法 与其最近障碍物的距离

人工势场法matlab讲解_【机器人路径规划】人工势场法 ——斥力增益

人工势场法matlab讲解_【机器人路径规划】人工势场法 ——障碍物的作用距离阈值,大于此距离的障碍物不会产生斥力影响

当然,以上引力和斥力势函数的设计在某些情况下会产生问题,因此也有许多改进方法,这个我们以后再说。

3.梯度下降法(Gradient Descent)

如果把某点

人工势场法matlab讲解_【机器人路径规划】人工势场法 处的势函数的取值
人工势场法matlab讲解_【机器人路径规划】人工势场法 看作该点的能量大小,那么

梯度

人工势场法matlab讲解_【机器人路径规划】人工势场法 则可以看作该点的力向量,其定义为:

人工势场法matlab讲解_【机器人路径规划】人工势场法

可以看出,某点处梯度的方向即为势函数增长最快的方向

梯度下降法,就是让机器人从初始点开始,不停地沿着梯度的反方向行走,直到梯度为0。用伪代码表示如下:

输入:一种计算q点处梯度的方法∇U (q)
输出:一组轨迹序列{q(0), q(1), ..., q(i)}
q(0) = q_start
i = 0
while ∇U (q(i)) ≠ 0 do
    q(i + 1) = q(i) + α(i)∇U (q(i))
    i = i + 1
end while

其中步长 α 的选择比较重要,如果太小,计算速度会变慢;太大,机器人可能会“跨进”障碍物中。

实现方法

下面以运动规划学习工具箱中的人工势场方法 pf_planning() 为例,说明人工势场法的实现步骤:

1.预处理

首先读入包含障碍物的构型空间的bmp图像,为了便于碰撞检测,将其二值化。并读入引力增益、斥力增益、障碍物作用范围、最大搜索次数等参数。

## 预处理

34ad6e42ad8dbdf205515ef7436c3abc.png
原图像
8e9a765e59a34e21f36ab6c69e34640e.png
二值化图像

2.创建势场图

对于每一个像素点,按照前文所述势场函数建立势场图

## 创建势场图

3.梯度下降法

在已经建立好的势场图中,按照前文所述的方法执行梯度下降法:

point_current 

4.绘图

在给出的示例图中分别执行人工势场法,得到结果如下:

cbcf95c2e20f24a2b5e1bfa6900c9289.png

241ecf4fee6c8f358fef0dd3d404d81a.png

问题与改进说明

本文仅仅演示了最简单的人工势场法的实现。要想在实际问题中进行应用,人工势场法往往会面临一些问题,需要进行相应的改进,下面对常见问题及其解决方法进行简要说明:

引力势函数的改进:现有引力势函数的取值,与

人工势场法matlab讲解_【机器人路径规划】人工势场法 成正比。在这样的设计中,如果当前点与目标点的距离太远,会形成很大的引力势,使得机器人的运动速度过快。对此,我们可以采用分段的引力势函数解决问题,即在距离较远时降低
人工势场法matlab讲解_【机器人路径规划】人工势场法 的幂。

斥力势函数的改进:现有斥力势函数的取值,取决于当前点与最近障碍物的距离。在这样的设计中,如果当前点与两个障碍物等距,可能会造成机器人在障碍物间的中线上来回跳动。对此,我们可以重新定义斥力势函数为当前点与最近的障碍物点之间的距离。即不考虑障碍物本身的坐标位置,只要障碍物上的某点离当前点最近,就以此距离定义斥力势函数。

距离的计算:一般来说,我们用直线距离来度量两点间的距离。但对于像素图或网格图,如何快速且合理地计算出两个像素点或网格之间的距离呢?参考文献[1]给出了一种 Brushfire算法 以供使用

局部极小值问题:如图所示,人工势场法有时候会遇到局部极小值问题。在局部极小值点,虽然梯度为零,但并不是我们想要的终点。对这样的情况,我们一般引入抽样规划的思想,在局部最小值处加入一个扰动(随机行走)或回溯,以期跳出局部极小值。也可采用一种名为波前规划(wave-front plann)的方法,通过引入时间参数来消除局部最小值的问题。

ac98537e3284275a69c263df3e86c342.png
人工势场法陷入局部极小值

参考文献

[1] Choset H, Lynch K, Hutchinson S, et al. Principles of robot motion: Theory, algorithms, and implementations. MIT Press, Cambridge, MA[J]. Proceedings of the Society for Experimental Biology & Medicine Society for Experimental Biology & Medicine, 2005, 147(1):512-512.

[2] 人工势场法(Artificial Potential Field Method)的学习

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149376.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’.

    Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’.

    2021年3月12日
    167
  • 大数据告诉你中老年人上网爱干什么[通俗易懂]

    大数据告诉你中老年人上网爱干什么[通俗易懂]中老年人最爱用微信,最喜欢看心灵鸡汤,最易被“免费领红包”骗……昨天,中国社科院国情调查与大数据研究中心和腾讯社会研究中心联合发布《中老年互联网生活研究报告》,报告对50岁以上人群的互联网生活进行了多方面解读。数据显示,中老年人不仅将微信作为即时通讯工具,还将其视作表达情感和维系社交的互动平台,如在微信里发表情和图片(81.8%)或小视频(68.9%),在朋友圈与他人互动(81.6%),接收或发微…

    2022年10月5日
    4
  • 小波去噪程序c语言,小波去噪c语言程序

    小波去噪程序c语言,小波去噪c语言程序小波去噪c语言程序1、小波阈值去噪理论小波阈值去噪就是对信号进行分解,然后对分解后的系数进行阈值处理,最后重构得到去噪信号。该算法其主要理论依据是:小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。可以认为,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度…

    2022年6月17日
    36
  • mtk-keypad[通俗易懂]

    mtk-keypad[通俗易懂]一.keypad基本原理col作为输出,row作为输入检测,低电平有效colA~D轮流输出低电平,通过rol1~4上的低电平可以检测是哪个按键按下了但是存在这样的问题,A1,A2,B1同时按下,会造成B2按下的假象,称为鬼影(这3个键导通,colB打开,row2处也会检测到低电平)可以通过增加二极管的方式防止鬼影问题二.keypadporti…

    2022年5月4日
    66
  • 【移动端】手机界面的设计尺寸

    【移动端】手机界面的设计尺寸从设计方面来看,做手机界面设计的尺寸一般分为iPhone和Android两种设备。iPhone的分辨率设备 逻辑分辨率(point)(pt) 物理分辨率(pixel)(px) 屏幕尺寸 缩放因子(scale) 像素密度PPI 比例(近似) iPhone2G/3/3GS 320×480 320×480 3.5寸 @1x 163 2:3 iPhone4/4S 320×480 640..

    2022年6月21日
    28
  • scrollIntoView动画效果

    scrollIntoView动画效果经常有这样的需求:点击一个链接(内链)跳转到当前页面中间某个部分。对于这样的需求,很容易想到使用锚点实现。但有一个问题:滚动,太过生硬了,体验极差。我还是比较喜欢平滑滚动。HTML5中提供了CSS属性 scroll-behavior 并且修改了一系列滚动函数的可接受参数用于支持平滑滚动特性。scroll-behavior这个CSS属性就只接受两个自定义值:auto 和 smo…

    2022年6月18日
    139

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号