博客转载自:https://blog.csdn.net/xmy306538517/article/details/78772066

ROS局部路径导航包括Trajectory Rollout 和 Dynamic Window Approach (DWA)两种方法,理论上来说分别对应base_local_planner和dwa_local_planner两个包,但其实dwa的大部分代码都放在了base_local_planner包里面。

框架

以上接口是局部规划的核心,简单来说:

  1. TrajectorySampleGenerator产生一系列轨迹
  2. 然后TrajectoryCostFunction遍历轨迹打分
  3. TrajectorySearch找到最好的轨迹拿来给小车导航
  4. 由于小车不是一个质点,worldModel会检查小车有没有碰到障碍物

流程

1.初始化

包括参数,地图,车身数据,比例系数

2.更新局部地图和代价

  • 将全局路径中第一个离开局部地图的点作为全局目标(或者使用最后一个在局部地图内的点作为全局目标)
  • 更新局部地图中每个点的代价,具体是在computeTargetDistance中实现的,实现的方法是用队列实现了一格格膨胀的效果,eg 终点为0,相邻的点cost+1 ,同理路径上的点为0,膨胀+1,注意同一个点取最小值

3.寻找最优路径

  • 然后TrajectoryCostFunction遍历轨迹打分

  • 每条轨迹遍历代价函数,比例求和

本DWA中主要使用了如下几种评分函数:

  • OscillationCostFunction oscillation_costs_ 震荡代价 ;是否震荡
  • ObstacleCostFunction obstacle_costs_ 障碍物代价 ; 看看是否撞到障碍
  • base_local_planner::MapGridCostFunction path_costs_ 路径代价 ;是否靠近全局路径规划
  • base_local_planner::MapGridCostFunction goal_costs_ 目标代价;是不是朝着目标行驶
  • base_local_planner::MapGridCostFunction goal_front_costs_ 前向预判的距离针对目标;
  • base_local_planner::MapGridCostFunction alignment_costs_ 前向预判的距离针对路径;

    优点可扩展

    base_local_planner::PreferForwardCostFunction prefer_forward_costs_ 优先选择前向行驶;

ROS源码解读(一)--局部路径规划的更多相关文章

  1. ROS源码解读(二)--全局路径规划

    博客转载自:https://blog.csdn.net/xmy306538517/article/details/79032324 ROS中,机器人全局路径规划默认使用的是navfn包 ,move_b ...

  2. Ros学习——Movebase源码解读

    1.总体框架 goal global planner-------global_costmap<——map server amcl local planner---------local_cos ...

  3. ros局部路径规划-DWA学习

    ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...

  4. 第二十五课:jQuery.event.trigger的源码解读

    本课主要来讲解jQuery.event.trigger的源码解读. trigger = function(event, data, elem, onlyHandlers){ if(elem & ...

  5. seajs 源码解读

    之前面试时老问一个问题seajs 是怎么加载js 文件的 在网上找一些资料,觉得这个写的不错就转载了,记录一下,也学习一下 seajs 源码解读 seajs 简单介绍 seajs是前端应用模块化开发的 ...

  6. SDWebImage源码解读之SDWebImageCache(上)

    第五篇 前言 本篇主要讲解图片缓存类的知识,虽然只涉及了图片方面的缓存的设计,但思想同样适用于别的方面的设计.在架构上来说,缓存算是存储设计的一部分.我们把各种不同的存储内容按照功能进行切割后,图片缓 ...

  7. SDWebImage源码解读之SDWebImageCache(下)

    第六篇 前言 我们在SDWebImageCache(上)中了解了这个缓存类大概的功能是什么?那么接下来就要看看这些功能是如何实现的? 再次强调,不管是图片的缓存还是其他各种不同形式的缓存,在原理上都极 ...

  8. AFNetworking 3.0 源码解读 总结(干货)(下)

    承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...

  9. AFNetworking 3.0 源码解读 总结(干货)(上)

    养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...

随机推荐

  1. ACM学习历程—51NOD 1685 第K大区间2(二分 && 树状数组 && 中位数)

    http://www.51nod.com/contest/problem.html#!problemId=1685 这是这次BSG白山极客挑战赛的E题. 这题可以二分答案t. 关键在于,对于一个t,如 ...

  2. ecmall在linux下的安装注意事项(转) ----ecmall系统迁移

    linux+apache+mysql+php,然后自己开始在linux下安装ecmall并做迁移,整理了一下中间碰到的问题.1.系统选择的环境是centos6.3,安装不做介绍. 2.安装 MySQL ...

  3. QQ2008自动聊天精灵delphi源码

    QQ2008自动聊天精灵delphi源码   unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Grap ...

  4. php foreach 跳出本次循环/当前循环与终止循环的方法

    PHP中用foreach()循环中,想要在循环的时候,当满足某个条件时,想要跳出本次循环继续执行下次循环,或者满足某个条件的时候,终止foreach()循环,分别会用到:continue 与 brea ...

  5. mina中责任链模式的实现

    一.mina的框架回顾 责任链模式在mina中有重要的作用,其中Filter机制就是基于责任链实现的. 从上图看到消息的接受从IoService层先经过Filter层过滤处理后最后交给IoHander ...

  6. mongdb与mysql的联系和区别

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值. ...

  7. JetBrains ReSharper Ultimate 2017.2.2激活方法

    先提供两个链接, 需要直接拿去用即可 第一个: http://xidea.online 第二个:  http://idea.iteblog.com/key.php  (我用的这个) 方法下图: 继续: ...

  8. VS2017自定义代码片段, 实现快捷输入

    点击VS2017的工具→代码片段管理器, 下图: 语言选择C#, 路径定位到 Visual C#, 然后复制这个路径在电脑中打开 这里以增加 crk 快捷方式输出 Console.ReadKey()来 ...

  9. 用一两句话说一下你对“盒模型”这个概念的理解,和它都涉及到哪些css属性

    网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 这些属性我们可以用日常生活中的常见事物——盒子作一 ...

  10. flask系列三之Jinja2模板

    1.如何渲染模板 模板在‘templates’文件夹下(htnl页面) 从flask中导入render_template函数---渲染html模板 在视图函数中,使用render_template 函 ...