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

        

    ...未完待续

  • 相关阅读:
    Tomcat配置
    Tomcat介绍和jbk安装
    nginx企业级优化
    linux 部署lnmp平台
    linux nginx服务
    linux rsync
    openssh远程连接及tcpwrappers防护
    linux 日志文件系统
    linux 解析文件系统原理
    linux 安全配置二
  • 原文地址:https://www.cnblogs.com/cwyblogs/p/8213607.html
Copyright © 2011-2022 走看看