博客转载自: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. 剑指Offer面试题:11.调整数组顺序使奇数位于偶数前面

    一 题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 二 解题思路 如果不考虑时间复杂度 ...

  2. Sublimetext3的下载与安装

    https://www.sublimetext.com/ Sublimetext价格不菲,但是作者允许无限期的免费试用,请不要下载破解版 使用国内汉化版的很有可能感染病毒,请善待电脑 百度搜索找到官网 ...

  3. 如果有人问你ZooKeeper是什么,就把这篇文章发给他。

    前言 提到ZooKeeper,相信大家都不会陌生.Dubbo,Kafka,Hadoop等等项目里都能看到它的影子.但是你真的了解 ZooKeeper 吗?如果面试官让你给他讲讲 ZooKeeper 是 ...

  4. 使用Volley框架中的ImageLoader来异步的加载图片

    Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.ImageLoader的内部使用ImageRequest来实现,它的构造器可 ...

  5. 转载pll工作模式解析

    PLL共有四种工作模式,只有理解了这四种工作模式的特点,才能在设计中选用恰当的模式,完成自己设计的预期功能.这四种工作模式分别是普通模式(Normal Mode).零延迟缓冲模式(Zero Delay ...

  6. 更新pip

    python -m pip install pip --upgrade pip要保持最新的,才可以去下载最新的其他的第三方包

  7. 解决安装Weblogic domain卡住问题(Primeton BPS)

    这两天一直有一个问题困扰我,在suse10+weblogic(920,923,100,103)上安装bpm产品失败.有些版本是创建domain的时候卡在create security informat ...

  8. eclipse配置storm1.1.0开发环境并本地跑起来

    storm的开发环境搭建比hadoop(参见前文http://www.cnblogs.com/wuxun1997/p/6849878.html)简单,无需安装插件,只需新建一个java项目并配置好li ...

  9. (转)WebApi发送HTML表单数据:文件上传与多部分MIME

    5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/282 ...

  10. 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例

    消息队列函数由msgget.msgctl.msgsnd.msgrcv四个函数组成.下面的表格列出了这四个函数的函数原型及其具体说明. 1.   msgget函数原型 msgget(得到消息队列标识符或 ...