美文网首页程序员SLAM技术交流Linux
# 动态窗口算法运动规划

# 动态窗口算法运动规划

作者: 8416ac9040d9 | 来源:发表于2019-03-06 20:31 被阅读2次

动态窗口算法运动规划

image

引自 http://adrianboeing.blogspot.com/2012/05/dynamic-window-algorithm-motion.html

动态窗口方法是一种基于速度的局部规划器,可计算达到目标所需的机器人的最佳无碰撞(“允许”)速度。它将笛卡尔目标(x,y)转换为移动机器人的速度(v,w)命令。

该算法有两个主要的步骤,计算有效的速度 搜索空间,并选择 最佳速度搜索空间由一组能够产生安全的运动轨迹(即允许机器人在碰撞前停止)的速度构成,这些速度是机器人在其动态(“动态窗口”)的下一个时间片中可以实现的速度集。选择最佳速度以最大化机器人与障碍物的间隙,最大化速度并获得最接近目标的航向。

下面是DWA算法的伪代码:

BEGIN DWA(robotPose,robotGoal,robotModel)
   desiredV = calculateV(robotPose,robotGoal)
   laserscan = readScanner()
   allowable_v = generateWindow(robotV, robotModel)
   allowable_w  = generateWindow(robotW, robotModel)
   for each v in allowable_v
      for each w in allowable_w
      dist = find_dist(v,w,laserscan,robotModel)
      breakDist = calculateBreakingDistance(v)
      if (dist > breakDist)  //can stop in time
         heading = hDiff(robotPose,goalPose, v,w)
         clearance = (dist-breakDist)/(dmax - breakDist)
         cost = costFunction(heading,clearance, abs(desired_v - v))
         if (cost > optimal)
            best_v = v
            best_w = w
            optimal = cost
    set robot trajectory to best_v, best_w
END

代码解释

  • 首先,我们可以根据当前位置(robotPose)和目的地(robotGoal)计算到目标的所需速度。(例如,如果我们离得很远就走得快,如果我们离得很近就慢。)
  • 给定小车底盘再运动学上允许的速度(v,w)那么当前速度的allowable_v的范围受到加速度的制约应该为[v-at, v+at],其中a为加速度,t为时间片。角速度w也同样适用。
  • 搜索所有允许的速度(v, w)。
  • 对每一个速度进行碰撞检测。
  • 确定到最近障碍物的距离是否在机器人停止距离内。如果机器人无法及时停止,则忽略此建议的机器人速度。
  • 否则,速度是“可接受的”,因此我们现在可以计算目标函数所需的值。在我们的例子中,机器人前进和清除。
  • 计算建议速度的“cost”。如果cost优于其他任何目标,请将此设置为我们的最佳选择。
  • 最后,将机器人所需的轨迹设置为最佳建议速度。

总结

通过这篇简短的伪代码,我们大致了解了ROS中常用的一种局部避障规划算法DWA,如果你觉得这篇文章帮助到了你,请分享给其他人,或者扫码关注公众号 : )。

参考链接

相关文章

  • # 动态窗口算法运动规划

    动态窗口算法运动规划 引自 http://adrianboeing.blogspot.com/2012/05/dy...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • Swift 算法实战:动态规划

    Swift 算法实战:动态规划 Swift 算法实战:动态规划

  • 程序员算法基础——动态规划

    程序员算法基础——动态规划 程序员算法基础——动态规划

  • 动态规划

    --tags: 算法,动态规划 动态规划解题 引入:动态规划 和贪心法 都是算法的思想方法 贪心算法——像 第一类...

  • 动态规划 Dynamic Programming

    从运筹学和算法的角度综合介绍动态规划 算法分类总结动态规划与静态规划的关系浅析静态规划和动态规划动态规划解非线性规...

  • 动态规划-js

    动态规划 参考:算法分析与设计-贪心&动归 漫画:什么是动态规划? 【数据结构与算法】 DP 动态规划 介绍 介绍...

  • 动态规划

    动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...

  • 2018-11-14

    今天学了动态规划一些知识,着重看了一下动态规划之背包算法(主要是0-1算法和部分算法),关于动态规划的问题重点是建...

  • 动态规划

    算法-动态规划 Dynamic Programming

网友评论

    本文标题:# 动态窗口算法运动规划

    本文链接:https://www.haomeiwen.com/subject/orxfpqtx.html