机器人局部避障的动态窗口法(dynamic window approach)





  1. 首先在V_m∩V_d的范围内采样速度:
  2. allowable_v = generateWindow(robotV, robotModel)
  3. allowable_w = generateWindow(robotW, robotModel)
  4. 然后根据能否及时刹车剔除不安全的速度:
  5. for each v in allowable_v
  6. for each w in allowable_w
  7. dist = find_dist(v,w,laserscan,robotModel)
  8. breakDist = calculateBreakingDistance(v) //刹车距离
  9. if (dist > breakDist) //如果能够及时刹车,该对速度可接收
  10. 如果这组速度可接受,接下来利用评价函数对其评价,找到最优的速度组

  1. 来源:http: //adrianboeing.blogspot.com/2012/05/dynamic-window-algorithm-motion.html
  2. BEGIN DWA(robotPose,robotGoal,robotModel)
  3. laserscan = readScanner()
  4. allowable_v = generateWindow(robotV, robotModel)
  5. allowable_w = generateWindow(robotW, robotModel)
  6. for each v in allowable_v
  7. for each w in allowable_w
  8. dist = find_dist(v,w,laserscan,robotModel)
  9. breakDist = calculateBreakingDistance(v)
  10. if (dist > breakDist) //can stop in time
  11. heading = hDiff(robotPose,goalPose, v,w)
  12. //clearance与原论文稍不一样
  13. clearance = (dist-breakDist)/(dmax - breakDist)
  14. cost = costFunction(heading,clearance, abs(desired_v - v))
  15. if (cost > optimal)
  16. best_v = v
  17. best_w = w
  18. optimal = cost
  19. set robot trajectory to best_v, best_w
  20. END




(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)





  1. 首先在V_m∩V_d的范围内采样速度:
  2. allowable_v = generateWindow(robotV, robotModel)
  3. allowable_w = generateWindow(robotW, robotModel)
  4. 然后根据能否及时刹车剔除不安全的速度:
  5. for each v in allowable_v
  6. for each w in allowable_w
  7. dist = find_dist(v,w,laserscan,robotModel)
  8. breakDist = calculateBreakingDistance(v) //刹车距离
  9. if (dist > breakDist) //如果能够及时刹车,该对速度可接收
  10. 如果这组速度可接受,接下来利用评价函数对其评价,找到最优的速度组

  1. 来源:http: //adrianboeing.blogspot.com/2012/05/dynamic-window-algorithm-motion.html
  2. BEGIN DWA(robotPose,robotGoal,robotModel)
  3. laserscan = readScanner()
  4. allowable_v = generateWindow(robotV, robotModel)
  5. allowable_w = generateWindow(robotW, robotModel)
  6. for each v in allowable_v
  7. for each w in allowable_w
  8. dist = find_dist(v,w,laserscan,robotModel)
  9. breakDist = calculateBreakingDistance(v)
  10. if (dist > breakDist) //can stop in time
  11. heading = hDiff(robotPose,goalPose, v,w)
  12. //clearance与原论文稍不一样
  13. clearance = (dist-breakDist)/(dmax - breakDist)
  14. cost = costFunction(heading,clearance, abs(desired_v - v))
  15. if (cost > optimal)
  16. best_v = v
  17. best_w = w
  18. optimal = cost
  19. set robot trajectory to best_v, best_w
  20. END




(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)

猜你喜欢

转载自blog.csdn.net/u010312937/article/details/80970007