自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BjtRob的专栏

记录学习和思考的点点滴滴

  • 博客(23)
  • 收藏
  • 关注

原创 cartographer analysis - second chapter

第一章中的代码是ros-cartographer,实现了对cartographer的调用。通过trajectory_builder_ 的AddHorizontalLaserFan ,AddLaserFan3D ,AddImuData 方法向cartographer提供了传感器数据。 trajectory_builder_ 属于类 GlobalTrajectoryBuilderInterface.

2017-01-08 01:03:43 1200

原创 cartographer analysis - first chapter

为了分析这个代码的运行原理,首先切到最初的版本,这样的简化代码有利于理解cartographer的运行基本方式。 如上是cartographer的调用入口。 Node 是一个类,run 函数调用了Node的三个接口:构造函数,以及SpinForever, Initialize. 可以看到仅开放了main函数调用的方法。 Initialize()方法: 1. subscribe t

2017-01-06 00:04:50 1437 1

原创 cartographer source analysis

颓废了快半年了,换了工作,该重新开始对优秀代码的分析之旅了,最近好多想分析的代码没来得及看。 继上一次对ROS navigation的分析之后,接下来推出对google的cartographer源码分析。搜了一遍,没见到满意的源码分析,失望啊。 半年不上blog ,罪过罪过

2017-01-04 23:50:36 1804

原创 最近的一些记录

自从春节结束,开始上班已经过去一个月了。忽然感觉最近很多事情不太顺利,人生的忧虑总是去了一个旧的就会来一个新的。 总体来说,过去的一个月,学习进展不大。主要的精力都在搞MIT的underactuated drive robotics课程上,以及其对应的drake软件工具。 drake对于机器人的控制,应该算是很全面的软件了,对非线性系统和目前主要应用的控制方法都完整的讲解和代码实现。对于机器人的

2016-03-19 00:01:13 618

转载 机器人运动学

差分移动机器人的运动学离散方程:

2016-01-29 00:18:30 1777

原创 视觉伺服系统分析--PnP问题

在VISP中,为了系统的鲁棒性,主要分析的是4点的P4P问题,而不是P3P问题。基于收敛解的主要实现算法是以下这几种: DEMENTHON, DEMENTHON_VIRTUAL_VS , DEMENTHON_LOWE ; LAGRANGE, LAGRANGE_VIRTUAL_VS, LAGRANGE_LOWE 推导后面补上~

2016-01-28 17:33:30 2264 2

原创 DWA算法分析

先晒一个UML类图,接下来补上

2016-01-15 16:34:19 14267 3

原创 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 1664

原创 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 13732 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 4756

原创 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 9638 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 2887 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 8168

原创 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 2725 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 1748

原创 ROS naviagtion analysis: costmap_2d--Layer

这个类中有一个LayeredCostmap* layered_costmap_数据成员,这个数据成员很重要,因为这个类就是通过这个指针获取到的对master map的操作。没有这个指针,所有基于Layer继承下去的地图的类,都无法操作master map。 这个类基本上没有什么实质性的操作,主要是提供了统一的接口,要求子类必须实现这些方法。这样plugin使用的时候,就可以不用管具体是什么类型的m

2016-01-10 18:28:59 2053

原创 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 2776 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 3181 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 7041 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 5128 2

原创 Matlab ecoder学习笔记

因为和嵌入式接触比较多,所以对

2014-08-27 22:56:35 558

原创 Python 笔记

在Python中,最基本的数据结构是序列(sequence)

2014-06-12 23:48:47 383

原创 双系统环境下,重装win7,恢复ubuntu的办法

利用livecd,重启,进入livecd环境

2014-06-06 00:11:40 414

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除