
ROS
ROS
BRAND-NEO
这个作者很懒,什么都没留下…
展开
-
【ROS-Navigation】Recovery Behavior恢复行为源码解读
记录学习阅读ROS Navigation源码的理解,本文为RecoveryBehavior恢复行为源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。RecoveryBehavior用来应对导航过程中各模块的故障,当全局规划故障、局部规划故障、震荡时都会进入到恢复行为中,它先清理周围一定范围以外的costmap(障碍层),接下来重新执行规划,若不奏效,则旋转180度,再执行规划。交替两次后,已转过360度,若还是没能排除故障,则恢复行为失败,原创 2020-03-15 23:32:12 · 6069 阅读 · 6 评论 -
【ROS-Navigation】Costmap2D代价地图源码解读-膨胀层InflationLayer
记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。InflationLayer没有自身的栅格地图要维护,直接在主地图上进行操作,它根据膨胀参数设置用来膨胀的“参考矩阵”,并在主地图上从障碍物出发,不断传播更新,完成对整个地图障碍的膨胀,等效于完成一个由“将机器人...原创 2020-03-15 00:38:05 · 6947 阅读 · 7 评论 -
【ROS-Navigation】Costmap2D代价地图源码解读-障碍层ObstacleLayer
记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。障碍层地图通过订阅传感器话题,将传感器输出的障碍物信息存进buffer(剔除过高、过远的点),在本层地图上将观测到的点云标记为障碍物,将传感器到点云点连线上的点标记为FREE_SPACE。最后,在bound范围内,将本层地图合并到主地图上。原创 2020-03-14 21:15:37 · 4533 阅读 · 3 评论 -
【ROS-Navigation】Costmap2D代价地图源码解读-静态层StaticLayer
记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。本篇记录静态地图部分的内容,主要是开启地图的订阅,以及bound和cost的更新。静态地图默认只更新一次,地图的边界也只更新一次,对于rolling地图,需要随着机器人的运动位置不断更新附近的cost,而对于非r...原创 2020-03-13 22:45:27 · 2892 阅读 · 0 评论 -
【ROS-Navigation】Costmap2D代价地图源码解读-2
记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。LayeredCostmap类的地图更新函数主要分为两步,先更新bound,再更新cost,它调用Layer类方法,它在各层子地图中被重载。CostmapLayer类作为静态层和障碍层的基类,提供了一些对地图层进...原创 2020-03-13 21:14:33 · 2025 阅读 · 1 评论 -
【ROS-Navigation】Costmap2D代价地图源码解读-1
记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Costmap通过各层地图订阅话题、接收传感器数据,维护各层地图数据,并最终整合出一张用于路径规划的主地图。【结构示意图】 【相关文件】 costmap_2d/src/costmap_2d_r...原创 2020-03-13 16:45:08 · 5457 阅读 · 12 评论 -
【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-3
记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。本篇记录局部规划器生成路径时用到的几个“辅助工具”,内容简单也比较少。MapCell类与MapGrid类用于获取轨迹点与目标点/全局路径之间的距离,为路径打分提供参考,CostmapModel类则能够获取点、连线、多边形边缘(机器人足迹)的cost,是局部规划器与costmap间的一个桥梁。原创 2020-03-07 22:24:10 · 2135 阅读 · 1 评论 -
【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-2
记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。局部规划器以当前速度为参考,产生一个合理且可达的速度采样范围,确定下一步的速度。那么如何筛选呢?它用采样速度生成相应的仿真路径,借助costmap,从障碍物、与目标的距离、与全局规划路径的距离几...原创 2020-03-07 12:56:38 · 4098 阅读 · 28 评论 -
【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-1
记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Movebase使用的全局规划器默认为TrajectoryPlannerROS,它循环检查是否到达目标点位置(给定位置误差范围内),若未到达,则调用TrajectoryPlanner类函数来进行局部路径规划,得到下一步速度,反馈给Movebase;若已到达,则检查是否到达目标姿态,若未到达,先给机器人降速至原创 2020-03-05 17:04:56 · 6673 阅读 · 3 评论 -
【ROS-Navigation】NavFn全局规划源码解读-2
记录学习阅读ROS Navigation源码的理解,本文为NavFn全局规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。全局规划中使用Dijkstra算法进行实际计算的部分在NavFn类里完成,它通过传入的costmap来设置costarr数组,再通过costarr数组对存储地图上所有cell点Potential值的potarr数组进行更...原创 2020-03-04 02:45:32 · 2975 阅读 · 11 评论 -
【ROS-Navigation】NavFn全局规划源码解读-1
记录学习阅读ROS Navigation源码的理解,本文为NavFn全局规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Movebase使用的全局规划器默认为NavFn,默认使用Dijkstra算法,在地图上的起始点和目标点间规划出一条最优路径,供局部规划器具体导航使用。在理解这部分的过程中也参考了很多博客,NavFn的源码中实际上是有A...原创 2020-03-04 00:10:03 · 5277 阅读 · 4 评论 -
【ROS-Navigation】Movebase主体源码解读
记录学习阅读ROS Navigation源码的理解,本文为Movebase主体源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Movebase的主干部分是一个Action服务器,接收用户发送的目标位置,并调用全局规划器和局部规划器,基于各层代价地图的信息进行路径规划,得到最优路径,向用户反馈机器人速度指令,驱动机器人按照指令运动,最终到达目标...原创 2020-03-01 02:19:04 · 6493 阅读 · 7 评论