摘要:
一、入口 找入口就找main函数,定位到plan_node.cpp这个文件,可以看到main函数写了节点名为global_planner: ros::init(argc, argv, "global_planner") 继续读,后面分别声明了costmap_2d::Costmap2DROS的对象,以 阅读全文
摘要:
零、前言 此前写了一篇对move_base的解析,号称全网最全,因为把整个包都加了注释hhh。 但是那篇文章由于是以源代码+注释的形式呈现,存在诸多问题,比如:没有按照逻辑顺序解析(而阅读代码的正确步骤是 按照程序执行顺序一步一步看),没有深挖里面的函数而更多的是对本框架的理解,也没有把各个函数之间 阅读全文
摘要:
问题: error: no matching function for call to ‘ros::NodeHandle::subscribe(const char [5], int, void (*)())’ ros::Subscriber sub_map = nh_.subscribe("/ma 阅读全文
摘要:
以下仅描述需要注意的或者与C++差别较大的点: 1. print(' I/' m Yu ' )帮助编译器识别字符串中的' 符号 2. print(int(' 1' )+2)强制转换。 3. 不能是print(int(' 1.2' )+2),因为小数不能转化为整数 4. 可以写成print(float 阅读全文
摘要:
地理围栏一般是多边形,如何判断点在多边形内部呢?可以通过射线法来判断点是否在多边形内部。如下图所示,从该点出发沿着X轴画一条射线,依次判断该射线与每条边的交点,并统计交点个数,如果交点数为奇数,则在多边形内部(如图3个交点),如果焦点数是偶数,则在外部,射线法对凸和非凸多边形都适用,复杂度为O(N) 阅读全文
摘要:
Indoor Coverage Path Planning: Survey, Implementation, Analysis 概况:讲的是覆盖路径规划(CPP)算法,本文中介绍了六种算法,并进行了深入的比较,在550多个室内地图中做了实验。 一、介绍 本文是基于6\8论文的补充。 本文提供了广泛的 阅读全文
摘要:
一、全局规划器概述 对于global planner,可以采用以下三种实现之一: "navfn/NavfnROS","global_planner/GlobalPlanner","carrot_planner/CarrotPlanner" 本文分析其中一种实现:global_planner/Glob 阅读全文
摘要:
一、图搜索 如图 S是起点,G是终点,左图为真实情况,右边为模拟搜索的过程,也是数据结构 图搜索的基本步骤为: 1、首先,应该有一个容器,用于放置即将被访问的节点(初始状态当然是包含S起点) 2、执行以下循环:(1)remove 从容器中弹出一个节点 (2)expansion 扩展该节点的邻居节点 阅读全文
摘要:
一、写的不错的博客 这篇文章简单梳理了nav_core和move_base的关系,https://blog.csdn.net/u013834525/article/details/85545321 二、base_global_planner.h 1 #ifndef NAV_CORE_BASE_GLO 阅读全文
摘要:
一、概述 目测是全网最全的解析,花了几个小时通读并整理的,供大家参考学习。 本篇是直接源码配注释的,所以逻辑性不够强,我还写了一篇按照代码执行逻辑读代码的文章,个人认为比这篇有用得多,以下为链接,可以配合着看:https://www.cnblogs.com/JuiceCat/p/13040552.h 阅读全文