- 博客(23)
- 收藏
- 关注
原创 cartographer analysis - second chapter
第一章中的代码是ros-cartographer,实现了对cartographer的调用。通过trajectory_builder_ 的AddHorizontalLaserFan ,AddLaserFan3D ,AddImuData 方法向cartographer提供了传感器数据。 trajectory_builder_ 属于类 GlobalTrajectoryBuilderInterface.
2017-01-08 01:03:43 1222
原创 cartographer analysis - first chapter
为了分析这个代码的运行原理,首先切到最初的版本,这样的简化代码有利于理解cartographer的运行基本方式。 如上是cartographer的调用入口。 Node 是一个类,run 函数调用了Node的三个接口:构造函数,以及SpinForever, Initialize. 可以看到仅开放了main函数调用的方法。 Initialize()方法: 1. subscribe t
2017-01-06 00:04:50 1461 1
原创 cartographer source analysis
颓废了快半年了,换了工作,该重新开始对优秀代码的分析之旅了,最近好多想分析的代码没来得及看。 继上一次对ROS navigation的分析之后,接下来推出对google的cartographer源码分析。搜了一遍,没见到满意的源码分析,失望啊。 半年不上blog ,罪过罪过
2017-01-04 23:50:36 1830
原创 最近的一些记录
自从春节结束,开始上班已经过去一个月了。忽然感觉最近很多事情不太顺利,人生的忧虑总是去了一个旧的就会来一个新的。 总体来说,过去的一个月,学习进展不大。主要的精力都在搞MIT的underactuated drive robotics课程上,以及其对应的drake软件工具。 drake对于机器人的控制,应该算是很全面的软件了,对非线性系统和目前主要应用的控制方法都完整的讲解和代码实现。对于机器人的
2016-03-19 00:01:13 641
原创 视觉伺服系统分析--PnP问题
在VISP中,为了系统的鲁棒性,主要分析的是4点的P4P问题,而不是P3P问题。基于收敛解的主要实现算法是以下这几种: DEMENTHON, DEMENTHON_VIRTUAL_VS , DEMENTHON_LOWE ; LAGRANGE, LAGRANGE_VIRTUAL_VS, LAGRANGE_LOWE 推导后面补上~
2016-01-28 17:33:30 2323 2
原创 boost 库CMakeLists.txt配置
环境:ubuntu14.04 64bit,这是在学习C++并发实战配置的。cmake_minimum_required(VERSION 3.3)project(Concurrent)find_package(Boost REQUIRED COMPONENTS system thread)include_directories( include ${Boost_INCLUDE_DIRS})lin
2016-01-13 20:02:56 1695
原创 ROS navigation planner--GlobalPlanner
在关于move base 的配置文章中,关于planner部分的分析有一句:对于global planner,可以采用以下三种实现之一:"navfn/NavfnROS","global_planner/GlobalPlanner","carrot_planner/CarrotPlanner"本文分析其中的一种实现"global_planner/GlobalPlanner" : 首先,move b
2016-01-12 20:01:06 13908 8
原创 ROS plugin原理
在costmap_2d 中,大量使用了plugin技术实现可配置的layer和planner,为程序提供了很好的扩展性,而且这种扩展是不需要重新编译就能够实现。首先来看costmap_2d中使用到的plugin:bob@bob-Think:~$ rospack plugins --attrib=plugin costmap_2dcostmap_2d /opt/ros/indigo/share/
2016-01-12 16:01:47 4840
原创 Move Base 的配置文件分析
本文分析move base 的配置文件,从配置文件设置的角度,可以更清晰的把握move base对于costmap2D,global planner,local planner的调用关系。 这里采用turtlebot_navigation package 为例:<launch> <include file="$(find turtlebot_navigation)/launch/include
2016-01-11 11:43:16 9707 4
原创 ROS naviagtion analysis: costmap_2d--InflationLayer
这是costmap_2d的最后一个重要的类了。InflationLayer 本身不存储map数据,所以所谓的地图层的概念,仅仅指的是一种对地图的操作,并不是数据层面的地图。 首先来看一个数据结构,知道有这个东西就行了:class CellData{public: CellData(double d, double i, unsigned int x, unsigned int y, un
2016-01-11 10:21:19 2940 2
原创 ROS naviagtion analysis: costmap_2d--ObstacleLayer
构造函数 ObstacleLayer() { costmap_ = NULL; // this is the unsigned char* member of parent class Costmap2D.这里指明了costmap_指针保存了Obstacle这一层的地图数据 }对于ObstacleLater,首先分析其需要实现的Layer层的方法: virtual void o
2016-01-10 23:13:52 8296
原创 ROS naviagtion analysis: costmap_2d--StaticLayer
从UML中能够看到,StaticLayer主要是在实现Layer层要求实现的接口。 virtual void onInitialize(); virtual void activate(); virtual void deactivate(); virtual void reset(); virtual void updateBounds(double robot_x, doubl
2016-01-10 20:33:19 2771 1
原创 ROS naviagtion analysis: costmap_2d--CostmapLayer
这个类是为ObstacleLayer StaticLayer voxelLayer 这种维护了自己所在层的地图数据的类,提供了一些公共的操作方法。 从UML中可以看到,这个类提供了以下方法,这些方法的参数列表均为(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)updateWithTrue
2016-01-10 18:50:57 1782
原创 ROS naviagtion analysis: costmap_2d--Layer
这个类中有一个LayeredCostmap* layered_costmap_数据成员,这个数据成员很重要,因为这个类就是通过这个指针获取到的对master map的操作。没有这个指针,所有基于Layer继承下去的地图的类,都无法操作master map。 这个类基本上没有什么实质性的操作,主要是提供了统一的接口,要求子类必须实现这些方法。这样plugin使用的时候,就可以不用管具体是什么类型的m
2016-01-10 18:28:59 2090
原创 ROS naviagtion analysis: costmap_2d--Costmap2D
Costmap2D是存储地图数据的父类。真正的地图数据就存储在数据成员unsigned char *costmap_ 。 首先,分析类的构造函数: 默认构造函数:Costmap2D::Costmap2D() :// just initialize everything to NULL by defaultCostmap2D::Costmap2D() : size_x_(0), siz
2016-01-10 17:35:10 2847 1
原创 ROS naviagtion analysis: costmap_2d--LayeredCostmap
在数据成员中,有两个重要的变量:Costmap2D costmap_; 和 std::vector<boost::shared_ptr<Layer> > plugins_; 。 这个类相对比较简单,首先来看构造函数:LayeredCostmap::LayeredCostmap(std::string global_frame, bool rolling_window, bool track_unk
2016-01-10 15:12:38 3237 3
原创 ROS naviagtion analysis: costmap_2d--Costmap2DROS
在上一篇文章中moveBase就有关于costmap_2d的使用: planner_costmap_ros_是用于全局导航的地图,controller_costmap_ros_是局部导航用的地图,地图类型为经过ROS封装的costmap_2d::Costmap2DROS*。 以下是这个ROS类的UML: 看看这个类的成员变量:LayeredCostmap* layered_costmap_
2016-01-09 23:28:52 7126 8
原创 ROS naviagtion analysis: move_base
这是navigation的第一篇文章,主要通过分析ROS代码级实现,了解navigation。本文从move_base入手。 机器人导航主要框架如图: Navigation Stack主要组成部分:move_base: 用户调用movebase是通过传入带tf参数的构造函数: move_base::MoveBase move_base( tf );以下分析move_base的构造函数
2016-01-09 01:19:17 5179 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人