Lio-sam代码分析(1)-基本框架说明

news/2024/11/30 1:30:37/

Lio-sam代码分析(1)-基本框架说明

  • 概述
  • LIO-SAM整体框架
  • imageProjecion图像映射节点
  • FeatureExtraction 特征提取
  • mapOptmization 图优化节点
  • imuPreintergration IMU预积分

概述

LIO-SAM是Tixiao又一次的升级,主要是加入了IMU进行了紧耦合(而gps和loop可有可无,不是主要更新部分).本着学习为目的对整个工程进行了分析.但实际上这并不是一个SLAM工程,其主要是输出一个高频率的里程计信息.工程较为简单仅包含以下四个文件:

  • imageProjecion
  • FeatureExtraction
  • mapOptmization
  • imuPreintergration
    这四个文件

LIO-SAM整体框架

整个工程包含四个文件,同时也是4个功能模块,其功能框架和topic 输入输出如下图所示.与之前开源的lego-slam其主要区别在于增加了IMU预积分功能,而预积分模块也是输出高频率odom核心节点.
在这里插入图片描述

在这里插入图片描述

imageProjecion图像映射节点

此节点主要是对接收的原始点云进行去畸变处理,而logo-loam假设了匀速处理,没有进行畸变处理,直接进行了特征提取,而LIO-SAM框架弥补了这不足,从而适应能力更强.
该节点订阅了3个消息,分别是imu原数据, imu预计分提供的odom数据和cloud原始数据,通过imu和imu_odom进行点云去畸变处理然后进行特征提取.
注意,由于预积分进程较为特殊,需要经过一段时间后才能输出稳定的imu_odom,因此在开始时,即初始化时,仅采用imu原始数据进行去畸变处理.

FeatureExtraction 特征提取

此节点仅是对去畸变后的点云进行了角点和平面点进行特征提取,并将处理后的点云发布出去,此节点功能和代码内容延续了lego-slam.

mapOptmization 图优化节点

slam的主要流程,根据预处理后的点云数据进行点云匹配,并增加闭环处理,(采用了因子图优化功能),输出lidar odom.此节点实际上就是一个完整的基于优化思想slam过程.最后输出基于map坐标系的全局lidar odom,用于预积分节点.

imuPreintergration IMU预积分

根据imu原始数据和lidar odom进行因子图优化,估计IMU的零偏,最后积分输出高频率的IMU odom.此节点也是作者最重要的更新的部分.


http://www.ppmy.cn/news/1057239.html

相关文章

SpringSecurity原理

最近在研究SpringSecurity,肝了好多天,算是有点收获,在这里分享下 SpringSecurity是什么? SpringSecurity是一个强大的可高度定制的认证和授权框架,对于Spring应用来说它是一套Web安全标准。SpringSecurity注重于为J…

Java“牵手”天猫店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,天猫API申请指南

天猫商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。天猫商品详情可以帮助消费者更好的了解宝贝信息,从而做出购买决策。同时,消费者也可以通过商品详情了解其他买家对宝贝的评价&#xf…

Putty连接登录Linux centos7

一、下载Putty 下载网址 https://www.putty.org/ 安装完成后会有两个重要的软件 Putty是用于连接Linux的客户端 PuTTYgen是通过客户端下载的service.ppk生成本地登录要用到的key 二、运行putty 双击putty.exe可以打开程序(程序小,学习linux可以把该…

IDEA创建Spring,Maven项目没有resources文件夹

有时新建Spring或Maven项目时,会出现目录中main下无resources文件夹的情况,来一起解决一下: FIles|Project Structure 在Modules模块找到对应路径,在main下创建resources,右键main,选择新文件夹 输入文件…

【Python百日进阶-Web开发-Peewee】Day274 - Peewee API文档 - 模型(二)class Model

文章目录 11.5.5 class Modelclassmethod alias([aliasNone])classmethod select(*fields)classmethod update([__data无[, **update ]])classmethod insert([__dataNone[, **insert ]])classmethod insert_many(rows [,fields None])classmethod insert…

ClassLoad Of Java

序言 简单学习下ClassLoad的过程cuiyaonan2000163.com 过程 我们有一个x.java文件通过执行javac命令可以变成x.class文件,当我们调用Java命令的时候class文件会被装载到内存中,这个过程叫做classloader。 一般情况下我们自己写代码的时候会用到Java的类…

扎实写完这篇博客

(论文阅读) 作者自述:到了新的实验室,原本的实验方向发生了巨大的改变,对自动驾驶和车联网一头雾水,所以从综述入手,了解轨迹预测任务的头尾,以及对于现阶段的研究点做出初步的统计和积累,为后…

Apache StreamPark系列教程第二篇——项目打包和开发

一、项目打包 项目依赖maven、jdk8.0、前端(node、npm) //下载代码 git clone//maven打包相关内容 mvn -N io.takari:maven:wrapper //前端打包相关内容 curl -sL https://rpm.nodesource.com/setup_16.x | bash - yum -y install nodejs npm -v npm install -g pnpm默认是h2…