zoukankan      html  css  js  c++  java
  • 关于Gmapping的学习2

    本篇的主旨是对gmapping的源码结构进行说明!

    参考资料来源:

    http://blog.csdn.net/David_Han008/article/details/71524141?locationNum=16&fps=1

    http://blog.csdn.net/roadseek_zw/article/details/53316177

    http://blog.csdn.net/David_Han008/article/details/71524141

    一、关于gmapping的源码说明

      gmapping来源于开源项目openslam

      ROS中有两种,一个是openslam_gmapping:是创始者Grisetti开发的对外开放的gmapping,有函数与接口可以提供调用;

      另外一个是slam_gmapping,是ROS开发者使用openslam_gmapping中的函数完成的多种功能(读数(scan,odom),处理数据(粒子滤波、scanmatch等),发布数据(map,tf等))的包。

      他们两者的关系好比openCV库 与 使用openCV中的函数与接口做的工程。换句话说,slam_gmapping是openslam_gmapping在ros下的二次封装,真正核心的代码都在后者里面。

      

    二、针对openslam_gmapping源码的分析

      这里面比较重要的函数就是 gridslamprocessor中的processScan()函数了

      这个函数依次执行了以下步骤:

      1.运动模型:

        更新t时刻粒子群(在模型中加入高斯噪声)drawfrommotion()

        计算t-1时刻到t时刻的位移增量,以及角位移增量

      2.扫描匹配:

        接下来一个if判断,包含了大部分程序:

        通过匹配选取最优粒子,如果匹配失败,返回一个默认的似然估计scanMatch()

        权重更重采样前更新一次,重采样后又更新一次updateTreeWeights()

        重采样,粒子集对目标分布的近似越差则权重方差越大...resample()

        地图更新,先得到最优的粒子(用权重和weightSum判断)

        

    ...未完待续

  • 相关阅读:
    js中split字符串分割
    获取日期,实时显示当前时间,时间相减
    5.5.4 函数内部属性
    单选按钮radio和下拉选择select,ajax返回数据回显对应值
    如何在HTML不同的页面中,共用头部与尾部?
    android-Activity(四大组件之一)
    android-ImageView及其子类
    android-ActionBar
    android- 菜单
    android-Fragment
  • 原文地址:https://www.cnblogs.com/cwyblogs/p/8213607.html
Copyright © 2011-2022 走看看