在ros上使用mrpt_graphslam_2d建立地图

    GraphSLAM又被称为Graph-based SLAM,它的基本思想是将机器人不同时刻的位姿抽象为点(pose),机器人在不同位置上的观测所产生的约束被抽象为点之间的边,或者叫约束(constraint)。
所谓的约束可以有多种多样的形式,比如机器人在A点和B点都看到同一个消防栓(我们可以认为这是固定在地图上的landmark),那么机器人在AB点观测到消防栓的相对位置,就对机器人在A点和B点的位姿产生了约束,进一步的,AB两点之间也产生了就约束。
    GraphSLAM就是在机器人运动的过程中构建出若干点(pose)和边(constraint)组成的图(Graph),再从全图的角度进行优化。

     我最近手里面只有一台激光雷达,于是就尝试了使用mrpt_graphslam_2d在ros上进行建图.

     首先需要克隆pkg到自己的工作空间, git clone https://github.com/mrpt-ros-pkg/mrpt_slam.git

     这个包下面有非常多的使用mrpt库的slam方法,今天主要介绍graph slam,其他的使用方法请看我其他博客.

     在ros上使用mrpt_graphslam_2d建立地图_第1张图片

     接下来就是编译了,我习惯用catkin_make --only-pkg-with-deps这个命令编译,方便定位package可能出现的error.

     编译过了以后,我们需要修改它的sr_graphslam_demo.launch文件来自己使用.由于launch源文件已经被我改的面目全非了,所以我还是把我修改好的launch文件贴上来吧.

在ros上使用mrpt_graphslam_2d建立地图_第2张图片

    其实修改思路就是把各个frame和topic修改为自己实际机器人发出的.然后把关于bag的语句都删掉,因为我们不需要跑数据集.

    需要注意的是这个launch文件还include了一个graphslam.launch.我还是贴出来把(在源文件上修修改改真的不是一个好习惯)

在ros上使用mrpt_graphslam_2d建立地图_第3张图片

 在ros上使用mrpt_graphslam_2d建立地图_第4张图片在ros上使用mrpt_graphslam_2d建立地图_第5张图片

 在ros上使用mrpt_graphslam_2d建立地图_第6张图片

 

你可能感兴趣的:(ros)