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判断)

        

    ...未完待续

  • 相关阅读:
    Java高并发秒时啊API之Service层
    Junit测试类生成
    Java高并发秒时啊API之业务分析与Dao层2
    Java高并发秒时啊API之业务分析与Dao层1
    JSP知识_EL表达式
    Maven_3_webAPP
    Maven_2_核心知识
    添加bean的监听
    异步上传文件
    ACTIVITI工作流的集成记录
  • 原文地址:https://www.cnblogs.com/cwyblogs/p/8213607.html
Copyright © 2011-2022 走看看