里程计在激光雷达slam中的作用

在tf树中的父坐标系和子坐标系中间的odom

机器人在平直走廊中由于缺少参照物的变化,无法估计自己的位移;可以通过轮子转动的圈数和一

圈的位移来计算距离,这种通过电机转速计算机器人位移的方法就是常用的电机里程计;里程计不

是硬件而是一种软件算法,该算法会运行在机器人的驱动节点中,此位移信息也是以tf消息包的形

式发布到话题/tf中去。

激光雷达SLAM输出的是map到base_footprint的tf,里程计输出的是odom到base_footprint

                     

 通过里程计的位移信息就能推算机器人的当前位置,还不会受参照物特征的误导,那激光雷达 

SLAM中通过雷达点云和参照物配准所实现的定位功能的用处在于?

通过电机里程计推算的位移数据只是理论值,必然和实际情况存在一些偏差

如何进行修正呢?→障碍物点云配准的定位算法

机器人的实际位置处使用激光雷达扫描障碍物得到雷达点云如下所示

接下来将点云挪到里程计估算的位置上,点云和障碍物并没有重合

 误差如何弥补呢?将点云直接贴合到障碍物上的同时机器人的位置也会拉到原位置,在里程计估

算的位置上加上一小段位移即可得到点云和障碍物相吻合。

问题在于,里程计输出的是odom到base_footprint,没办法在base_footprint和机器人底盘之间插

入新的tf→SLAM节点迁就里程计,base_footprint已经被里程计占用,那么SLAM节点将这段tf挪到

根端的odom之前,也就是下图1到2的变化,

map→odom→base_footprint就实现了map到base_footprint的tf

以上的操作就是gmapping的核心

 hector的核心:直接将雷达点云贴合障碍物的轮廓所得出的机器人位移作为最终的定位结果,也就

是map到scanmatcher的过程,不是为了修正里程计误差,而是让base_footprint的位置始终和

scanmatcher_frame保持一致。

另外,要实现rviz显示地图和模型,就必须实现map到base_footprint的tf,这样才能将机器人本身 

的tf和map连接上,实现完整的tf树。

总结:gmapping中机器人的位移主要由里程计推算,激光雷达点云配准算法只是在修正里程计出

现的误差;而hector  mapping在单位过程中,完全不考虑里程计的数据,只使用雷达点云和障碍

物配准的方法来进行定位,为了在rviz中显示地图和模型勉强输出一段map到odom的tf去抵消不断

增长的里程计tf好让base_footprint的位置始终和scanmatcher_frame保持一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单高效的在线拾色器工具 - 为您的设计工作提供便利

你是否曾在寻找完美颜色时感到困扰?现在,有了这个简单而强大的在线拾色器工具,选择理想的颜色变得轻而易举! 网址: https://potatoh5games.fun/tools/#ColorPickr 这款拾色器工具具有以下特点: 用户友好…

golang 文件

golang 文件 概念 文件是计算机系统中用于存储和管理的 数据集合,具有唯一的名称,存在于存储介质上,包含创建、修改等属性,通过文件系统进行组织,用户可进行读取、写入等操作 文件流 文件输入流(InputS…

Linux进程控制——进程等待

文章目录 进程等待进程等待的必要性进程等待的方法status参数option参数 进程等待 进程等待的过程其实是父进程等待子进程死亡的过程 进程等待的必要性 如果子进程退出,父进程不进行处理,子进程会变成僵尸进程,有内存泄漏的风险 僵尸进程…

Adobe Acrobat Pro DC for Mac:PDF处理软件

Adobe Acrobat Pro DC for Mac是一款专为Mac用户设计的PDF处理软件,它凭借出色的功能和卓越的性能,成为了处理PDF文件的理想选择。 首先,Acrobat Pro DC for Mac支持全方位的PDF编辑。用户可以对PDF文档进行文本编辑、图像处理、表格制作等操…

Paddlenlp测试

1、环境安装 使用华为云euleros操作系统,python版本3.9.5,CPU无GPU服务器: (1)pip3 install setuptools_scm -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com (2&#xf…

机器学习算法与Python实战 | 两行代码即可应用 40 个机器学习模型--lazypredict 库!

本文来源公众号“机器学习算法与Python实战”,仅用于学术分享,侵权删,干货满满。 原文链接:两行代码即可应用 40 个机器学习模型 今天和大家一起学习使用 lazypredict 库,我们可以用一行代码在我们的数据集上实现许多…

雪花算法及MP实现方式

根据当前项目推进的情况,我们会发现用户注册时,从来没有考虑主键生成的问题。为什么呢?因为咱们的数据表现在都是通过数据库自增长方式获取主键id的。不过,这个主键自增长的方案好不好呢?我们一起来了解一下程序发展的…

SNP过滤

SNP过滤 文章目录 SNP过滤前言一. 利用Perl脚本get_vcf_stats.pl统计位点信息二. 利用R脚本149toTZC.2allele.filtered.R画图并获得过滤后的位点位置信息三. 用vcftools保留过滤后的位点四、get_vcf_stats.pl 脚本存放处 总结 SNP过滤 所属目录:紫菜创建时间&#…

如何查找下载安装安卓APK历史版本?

在安卓设备上,有时候我们可能希望安装某个软件的旧版本,可能是因为新版本不兼容、功能改变不符合需求或是其他原因。 安卓系统并不像iOS那样提供直观的历史版本下载界面。 不过,通过一些第三方市场和网站,我们仍然可以找到并安装…

docker环境下的verdaccio设置权限并配置域名.md

权限配置 一个管理员叫admin,可以读也可以发布一个普通用户叫qiuye,只可以读,不可以发布添加账号就自行创建添加即可,只需要更改config文件的配置项即可 packages:*/*: access: admin qiuyepublish: admin unpublish: admin **:access: admin qiuyepublish: admin unpublish…

Linux——CPU占不上去的解决办法

一、将调节器升至performance: 1.1 查看当前的调节器: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor如果不是 performance ,则进入root账户 1.2 进入root账户 先进入管理员账户输入命令: su root如果没有roo…

【小程序爬虫入门实战】使用Python爬取易题库

文章目录 1. 写在前面2. 抓包分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研…

iPhone 在 App Store 中推出的 PC 模拟器 UTM SE

PC 模拟器是什么?PC 模拟器是一种软件工具,它模拟不同硬件或操作系统环境,使得用户可以在一台 PC 上运行其他平台的应用程序或操作系统。通过 PC 模拟器,用户可以在 Windows 电脑上体验 Android 应用、在 Mac 电脑上运行 Windows …

科普文:详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储

在高性能计算场景中,往往采用全闪存架构和内核态并行文件系统,以满足性能要求。随着数据规模的增加和分布式系统集群规模的增加,全闪存的高成本和内核客户端的运维复杂性成为主要挑战。 JuiceFS,是一款全用户态的云原生分布式文件…

SQL优化相关

文章目录 SQL优化1. 数据插入2. 主键优化页分裂页合并索引设计原则 3. order by 优化4. group by 优化5. limit优化6. count优化7. update 优化 SQL优化 1. 数据插入 当我们需要插入多条数据时候,建议使用批量插入,因为每次插入数据都会执行一条SQL&am…

【Linux】多线程4——线程同步/条件变量

1.Linux线程同步 1.1.同步概念与线程饥饿问题 先来理解同步的概念 什么是线程同步 在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地…

centos stream 9安装 Kubernetes v1.30 集群

1、版本说明: 系统版本:centos stream 9 Kubernetes版本:最新版(v1.30) docker版本:27.1.1 节点主机名ip主节点k8s-master172.31.0.10节点1k8s-node1172.31.0.11节点2k8s-node2172.31.0.12 2、首先,使用Vagrant和Virt…

前端缓存问题(浏览器缓存和http缓存)- 解决办法

问题描述:前端代码更新,但因浏览器缓存问题,导致页面源代码并未更新 查看页面源代码的方法:鼠标右键,点击查看页面源代码 如图: 解决方法: 注:每执行一步,就检查一下浏览…

string indices must be integers

string indices must be integers 目录 string indices must be integers 【常见模块错误】 【解决方案】 常见原因及解决方法 具体案例分析 总结 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出…

Java1.1标准之重要特性及用法实例(十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…