博客转载自:https://blog.csdn.net/u013158492/article/details/50485418 在上一篇文章中moveBase就有关于costmap_2d的使用: planner_costmap_ros_是用于全局导航的地图,controller_costmap_ros_是局部导航用的地图,地图类型为经过ROS封装的costmap_2d::Costmap2DROS*. ROS Costmap2DROS类的UML 看看这个类的成员变量:LayeredCostmap*…
博客转载自:https://blog.csdn.net/u013158492/article/details/50483123 这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解navigation.本文从move_base入手. 机器人导航主要框架 Navigation Stack主要组成部分:move_base 用户调用movebase是通过传入带tf参数的构造函数: move_base::MoveBase move_base( tf ); 以下分析move_base的…
博客转载自:https://blog.csdn.net/u013158492/article/details/50493676 构造函数 ObstacleLayer() { costmap_ = NULL; // this is the unsigned char* member of parent class Costmap2D.这里指明了costmap_指针保存了Obstacle这一层的地图数据 } 对于ObstacleLater,首先分析其需要实现的Layer层的方法: virtual v…
博客转载自:https://blog.csdn.net/u013158492/article/details/50493246 从UML中能够看到,StaticLayer主要是在实现Layer层要求实现的接口. virtual void onInitialize(); virtual void activate(); virtual void deactivate(); virtual void reset(); virtual void updateBounds(double robot_x,…
博客转自:https://blog.csdn.net/u013158492/article/details/50490490 在数据成员中,有两个重要的变量:Costmap2D costmap_和 std::vector<boost::shared_ptr<Layer> > plugins_ . 这个类相对比较简单,首先来看构造函数: LayeredCostmap::LayeredCostmap(std::string global_frame, bool rolling_wind…
博客转自:https://blog.csdn.net/u013158492/article/details/50493220 这个类是为ObstacleLayer StaticLayer voxelLayer 这种维护了自己所在层的地图数据的类,提供了一些公共的操作方法. 从UML中可以看到,这个类提供了以下方法,这些方法的参数列表均为(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)…
博客转载自:https://blog.csdn.net/u013158492/article/details/50493113 这个类中有一个LayeredCostmap* layered_costmap_数据成员,这个数据成员很重要,因为这个类就是通过这个指针获取到的对master map的操作.没有这个指针,所有基于Layer继承下去的地图的类,都无法操作master map. 这个类基本上没有什么实质性的操作,主要是提供了统一的接口,要求子类必须实现这些方法.这样plugin使用的时候,就…
博客转载自:https://blog.csdn.net/u013158492/article/details/50492506 Costmap2D是存储地图数据的父类.真正的地图数据就存储在数据成员unsigned char *costmap_ . 首先,分析类的构造函数:,默认构造函数:Costmap2D::Costmap2D()  // just initialize everything to NULL by default Costmap2D::Costmap2D() : size_x_…
System overview move_base 源码 API nav_core BaseGlobalPlanner BaseLocalPlanner RecoveryBehavior Recovery behavior clear_costmap_recovery rotate_recovery costmap_2d costmap layer Map type code Tips System overview move_base 主要有以下两部分 Planner nav_core::Ba…
读者可以参读http://wiki.ros.org/costmap_2d   costmap_2d: 无论是激光雷达还是如kinect 或xtion pro深度相机作为传感器跑出的2D或3D SLAM地图,都不能直接用于实际的导航,必须将地图转化为costmap(代价地图),ROS的costmap通常采用grid(网格)形式.以前一直没有搞明白每个栅格的概率是如何算出来的,原因是之前一直忽略了内存的存储结构,栅格地图一个栅格占1个字节,也就是八位,可以存0-255中数据,也就是每个cell co…