LVI-SAM安装与测试

2023-05-16

1 介绍

就在昨天,LVI-SAM开源了,它是一个lidar-visual-inertial里程计和建图系统,在系统级别结合了LIO-SAM和Vins-Mono的优势。作者之前还开源了LeGO-LOAM和LIO-SAM,膜拜并致敬。

Github:https://github.com/TixiaoShan/LVI-SAM

论文:https://arxiv.org/abs/2104.10831

Demo:
在这里插入图片描述
PS:上传这个gif真不容易,原始文件大小为12.5MB,经过一系列的裁剪,缩放,压缩操作,变成4.7MB,这才成功上传。

论文摘要:

We propose a framework for tightly-coupled lidar-visual-inertial odometry via smoothing and mapping, LVI-SAM, that achieves real-time state estimation and map-building with high accuracy and robustness. LVI-SAM is built atop a factor
graph and is composed of two sub-systems: a visual-inertial system (VIS) and a lidar-inertial system (LIS). The two sub-systems are designed in a tightly-coupled manner, in which the VIS leverages LIS estimation to facilitate initialization. The accuracy of the VIS is improved by extracting depth information for visual features using lidar measurements. In turn, the LIS utilizes VIS estimation for initial guesses to support scan-matching. Loop closures are first identified by the VIS and further refined by the LIS. LVI-SAM can also function when one of the two sub-systems fails, which increases its robustness in both texture-less and feature-less environments. LVI-SAM is extensively evaluated on datasets gathered from several platforms over a variety of scales and environments. Our implementation is available at https://git.io/lvi-sam.

系统结构图:
在这里插入图片描述
更详细的内容,请阅读论文,本篇博客只关注安装和测试。

2 安装

2.1 安装依赖

需要安装以下依赖:

  • ROS
  • GTSAM
  • Ceres

1.安装ROS

kinetic和melodic版本都适用,根据Ubuntu系统版本安装对应版本即可。

以安装ROS Kinetic为例:

# install [ros] kinetic"
# "Make sure your os is ubuntu 16.04. or you should install other distribution of ros"
# refer to http://wiki.ros.org/kinetic/Installation/Ubuntu
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo rosdep init
rosdep update

2.安装GTSAM

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j4

3.安装Ceres

sudo apt-get install -y libgoogle-glog-dev
sudo apt-get install -y libatlas-base-dev
wget -O ~/Downloads/ceres.zip https://github.com/ceres-solver/ceres-solver/archive/1.14.0.zip
cd ~/Downloads/ && unzip ceres.zip -d ~/Downloads/
cd ~/Downloads/ceres-solver-1.14.0
mkdir ceres-bin && cd ceres-bin
cmake ..
sudo make install -j4

注意:如果自己电脑上已经安装了其他版本的GTSAM或Ceres,可以先尝试编译,看看是否成功。如果报错,就需要安装作者指定的版本了。

2.2 编译

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LVI-SAM.git
cd ..
catkin_make

注意:如果电脑运行内存较小,建议使用catkin_make -j1命令编译,否则电脑会死机。

3 数据集

采集数据的传感器套件包括:

  • LiDAR: Velodyne VLP-16
  • Camera: FLIR BFS-U3-04S2M-CS
  • IMU: MicroStrain 3DM-GX5-25
  • GPS: Reach RS+

在这里插入图片描述
本文所用数据集可从Google Drive下载,下载链接为:

https://drive.google.com/drive/folders/1q2NZnsgNmezFemoxhHnrDnp1JV_bqrgV?usp=sharing

注意:所提供的bag文件中的图像均为压缩格式。因此,launch/include/module_sam.launch的最后一行有解压缩命令。即:

<!-- Image conversion -->
<node pkg="image_transport" type="republish" name="$(arg project)_republish" args="compressed in:=/camera/image_raw raw out:=/camera/image_raw" output="screen" respawn="true"/>

如果你自己的bag文件记录了原始图像数据,请注释此解压缩命令。

手持数据集采集环境:
在这里插入图片描述

4 运行

1.配置参数

config文件夹中的.yaml文件中配置传感器参数。

为了快速测试,这里采用默认参数。

2.运行launch文件

roslaunch lvi_sam run.launch

报错:

terminate called after throwing an instance of 'image_transport::TransportLoadException'
  what():  Unable to load plugin for transport 'compressed', error string:
According to the loaded plugin descriptions the class image_transport/compressed_sub with base class type image_transport::SubscriberPlugin does not exist. Declared types are  image_transport/raw_sub
[lvi_sam_republish-11] process has died [pid 27659, exit code -6, cmd /opt/ros/kinetic/lib/image_transport/republish compressed in:=/camera/image_raw/compressed raw out:=/camera/image_raw __name:=lvi_sam_republish

安装ros-kinetic-image-transport-plugins

sudo apt install ros-kinetic-image-transport-plugins

3.播放bag文件

rosbag play handheld.bag

作者提供了3个bag,其中handheld.bag大小相对较小,所以先用这个测试。
在这里插入图片描述
查看handheld.bag的信息:

rosbag info /path/to/handheld.bag

输出:

path:        /path/to/handheld.bag
version:     2.0
duration:    27:22s (1642s)
start:       Jul 10 2020 00:01:19.49 (1594310479.49)
end:         Jul 10 2020 00:28:42.42 (1594312122.42)
size:        9.6 GB
messages:    1716700
compression: none [10736/10736 chunks]
types:       sensor_msgs/CompressedImage [8f7a12909da2c9d3332d540a0977563f]
             sensor_msgs/Imu             [6a62c6daae103f4ff57a132d6f95cec2]
             sensor_msgs/NavSatFix       [2d3a8cd499b9b4a0249fb98fd05cfa48]
             sensor_msgs/PointCloud2     [1158d486dd51d683ce2f1be655c3c181]
topics:      /camera/image_raw/compressed    49283 msgs    : sensor_msgs/CompressedImage
             /gps/fix                         8215 msgs    : sensor_msgs/NavSatFix      
             /imu_correct                   821457 msgs    : sensor_msgs/Imu            
             /imu_raw                       821456 msgs    : sensor_msgs/Imu            
             /points_raw                     16289 msgs    : sensor_msgs/PointCloud2

运行截图:
在这里插入图片描述
但是还有一个问题,终端报错:

[lvi_sam_visual_odometry-9] process has died [pid 5906, exit code -11, cmd /LVI-SAM_ws/devel/lib/lvi_sam/lvi_sam_visual_odometry __name:=lvi_sam_visual_odometry 
[lvi_sam_visual_odometry-9] restarting process
process[lvi_sam_visual_odometry-9]: started with pid [5959]
[ INFO] [1619149659.416106352]: ----> Visual Odometry Estimator Started.

可以看出是lvi_sam_visual_odometry节点崩溃了,由于module_sam.launch中的lvi_sam_visual_odometry节点存在respawn="true"参数,所以会重启崩溃的节点。即:

<node pkg="$(arg project)" type="$(arg project)_visual_odometry" name="$(arg project)_visual_odometry" output="screen" respawn="true"/>

暂时不知道lvi_sam_visual_odometry节点崩溃的原因,先到这里,后续继续跟踪吧。


上面的测试是在Ubuntu 16.04系统上进行的,我又在Ubuntu 18.04系统上测试了一下,没有出现lvi_sam_visual_odometry节点崩溃的问题。运行截图:
在这里插入图片描述
不要高兴太早,可以看出,轨迹和地图飘了,同时终端输出警告信息:

[ WARN] [1619181869.418229923]: Large velocity, reset IMU-preintegration!
[ WARN] [1619181915.626756290]: image discontinue! reset the feature tracker!
[ WARN] [1619181915.627181759]: restart the estimator!
[ WARN] [1619181921.062276696]: Large bias, reset IMU-preintegration!
[ WARN] [1619181932.393410513]: Large velocity, reset IMU-preintegration!
[ WARN] [1619181933.702082376]: throw img, only should happen at the beginning
[ WARN] [1619181934.043777764]: TF to MSG: Quaternion Not Properly Normalized

尝试降低bag的播放速度:

rosbag info /path/to/handheld.bag -r 0.5

最终生成的全局点云地图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
地图没有明显漂移,轨迹也与采集路线基本一致。
在这里插入图片描述
综上,得到以下结论:

  1. 使用Ubuntu 18.04系统
  2. 降低bag文件的播放速度,经测试,0.5倍速可实现良好效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVI-SAM安装与测试 的相关文章

  • 蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(二)——LCD

    02 LCD屏 蓝桥杯正式比赛时会给参赛选手一个数据包 xff0c 里面会有LCD屏相关配置文件和库函数 xff0c 所以这里的例程相当于只是一个代码移植 具体LCD屏的学习可以参考火哥的视频 我们打开之前的工程文件以及 ioc文件 xff
  • Vscode如何设置代码保存后自动格式化

    方法一 xff1a 1 打开vscode xff0c 点击设置 2 搜索框输入格式化 xff0c 如图勾选这三个选项 方法二 xff1a 1 打开设置 xff0c 搜索框不要输入东西 xff0c 点击如图标识 2 点击后 xff0c 会打开
  • 解决桌面右键文件夹卡死的问题

    新买的电脑莫名其妙的右键文件夹就会卡死 xff0c 弄了好几天 xff0c 终于弄好了 xff0c 记录一下 原因大概率是因为右键选项中的一些第三方软件功能异常造成的 xff08 极大概率是百度云或者QQ导致 xff09 xff0c 使用S
  • wsl2与vscode的安装

    网页搜索wsl xff0c 可以看到微软的wsl官方文档 1 安装 开始菜单搜索功能 xff0c 找到启用或关闭Windows功能 勾选适用于linux的windows子系统 xff0c 和虚拟机平台 确定 xff0c 重启 打开微软商店
  • wsl2常用工具的安装及gitlab上搭建仓库

    1 安装wsl2 安装vscode 2 安装相应工具 apt install cmake apt install make apt install g 43 43 3 编写一个函数hello c 想要编译需要创建一个CMakeLists t
  • wsl2里java离线安装方法

    链接 xff1a https pan baidu com s 1azeWBSkaFbPXyfZX 5lAjA 提取码 xff1a 0312 1 把离线安装包放在任意路径下 例如 xff1a usr java下 2 解压tar xzvf op
  • 数据库SQL--数据表与索引(二)

    一 数据表 xff08 xff09 数据表是数据库中最基本的用于存储数据的对象 xff0c 可以认为数据表是以行和列组成的二维表格 xff0c 通常把行称为记录 xff0c 列称为字段 SQL中的常用数据类型 字符型数据 xff1a 大小写
  • Gstreamer学习(一)——安装Gstreamer

    Gstreamer学习 Gstreamer官方网站为https gstreamer freedesktop org 1 安装Gstreamer 官方文档 xff1a https gstreamer freedesktop org docum
  • Gstreamer学习(二)——播放一个视频

    1 参考范例 官方文档 include lt gst gst h gt int main int argc char argv GstElement pipeline GstBus bus GstMessage msg Initialize
  • 菜鸟笔记之计算机网络(3)

    万维网 了解万维网概念相关概念 声明 xff1a 以下是看的视频并结合网上资料所记的笔记 xff0c 侵权请联系删除 可能会有一些错误 xff0c 发现了会修改 了解万维网 概念 万维网 xff08 World Wide Web xff0c
  • STM32串口中断接收实验

    STM32串口中断接收实验的详细说明 准备代码实现总结 准备 材料 xff1a STM32F407ZGT6最小系统板 xff0c 串口1通过跳线帽连接到了CH340上 需求 xff1a 从电脑向板子的串口1发送一个字符串 xff08 以回车
  • 使用C++将网络字节流转为数字(大端与小端区别)

    首先需要了解下大端和小端存储的区别 xff1a 大端方式 xff1a 用存储器的低字节地址单元来存放数据的最高字节 小端存放 xff1a 用存储器的低字节地址单元来存放数据的最低字节 如下图所示 xff1a 网络上都是以字节流的方式传输数据
  • 响应式移动Web测试题

    第一题 下列选项中对bootstrap中的能让元素只在小屏设备隐藏的类是 B A xff1a hidden xs B xff1a hidden sm C xff1a hidden md D xff1a hidden lg 解析 xff1a
  • ROS path [0]=/opt/ros/melodic/share/ros这种错误所有的可能性

    1 没有在ros workspace目录下source devel setup bash 2 roslauch启动节点时 xff0c launch文件包名打错了也会出现这个错误提示 ERROR cannot launch node of t
  • 【curl】 Linux上用curl 查看请求头和响应头

    curl xff0c 全称CommandLine URL 或 CommandLine Uniform Resource Locator xff0c 顾名思义 xff0c curl命令是在命令行方式下工作 xff0c 利用URL的语法进行数据
  • 【开启新阶段】进入本科末段学习的计划

    简单总结 xff1a 经过本科四年的学习 xff0c 博主只能说取得了一个差强人意的结果 xff0c 但生活总是这样 xff0c 难以尽善尽美 在进入大四下半阶段后 xff0c 准备开始新的学习阶段 xff0c 不再像之前一样有着需要自己不
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(运动学)

    前言 随着我们了解到机器人如何建立运动学模型和动力学模型之后 xff0c 我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证 xff0c 并且可以通过内置的函数进行简单的轨迹规划和可视化观察 xff0c 本节涉及到的工具箱是M
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    文章目录 前言一 空间位姿描述1 二维空间2 三维空间3 旋转的不同表示方法1 xff09 欧拉角2 xff09 RPY角3 xff09 双向量表示4 xff09 轴与旋转角5 xff09 四元数表示 二 动力学1 动力学参数2 正动力学函
  • 平面2R机器人的运动学/动力学建模实例

    文章目录 前言平面2R机器人1 问题假设2 建立运动学模型1 xff09 DH参数法2 xff09 指数积方法3 xff09 雅可比矩阵 xff08 微分变换法 xff09 4 xff09 逆运动学求解 xff08 几何法 xff09 3
  • 2023最新jmeter接口测试入门到精通实战讲解,手把手教学

    一 线程组 线程组元件是任何一个测试计划的开始点 在一个测试计划中的所有元件都必须在某个线程组下 所有的任务都是基于线程组 xff1a 通俗理解 xff1a 线程组 xff1a 就是一个线程组 xff0c 里面有若干个请求 xff1b 线程

随机推荐

  • 2023最新全方面了解接口自动化,看完还不会你锤我

    一 自动化分类 现在流行的是金字塔状的分层测试 xff0c 将测试从上到下分为UI测试层 接口测试层 单元测试层三层 在传统的UI自动化的基础之上更多实施基于代码的低级别自动化测试 xff0c 而不仅仅通过用户界面进行端到端的测试 按照测试
  • pytest接口自动化测试框架搭建

    fixture 特点 xff1a 命令灵活 xff1a 对于setup xff0c teardown可以省略 数据共享 xff1a 在conftest py配置里写方法可以实现数据共享 xff0c 不需要import导入 xff0c 可以跨
  • App自动化测试怎么做?实战分享App自动化测试全流程

    一 什么是app测试 xff1f 什么是app自动化测试 xff1f 概念 xff1a 所谓app测试也称之为移动测试 xff0c 通俗易懂的理解就是测试我们平时手机使用的程序 那什么是app自动化测试呢 xff1f 通常情况下是随app产
  • 究极版-计算机四级错题集【操作系统单选题】

    计算机四级究极版错题集 1 解析 按照资源管理的观点 xff0c 操作系统的功能主要可以分为进程线程管理 xff08 处理器管理 xff09 存储管理 文件管理 作业管理和设备管理 2 若用户编程需要打印输出 xff0c 需要系统调用wri
  • 【干货分享】2023美团软件测试面试题汇总

    前言 本篇分享的软件测试面试题内容主要包括 xff1a 测试总体 需求分析 测试计划 测试策略 测试用例 缺陷报告 测试总结报告 白盒测试 单元测试 集成测试 系统测试 验收测试等等26个模块 https www bilibili com
  • 三面百度软件测试岗,都被问到自闭

    1 HR已读不回问题分析以及如何解决 哔哩哔哩 bilibili 1 HR已读不回问题分析以及如何解决是2023最新软件测试面试大全看完offer拿到手软的第1集视频 xff0c 该合集共计21集 xff0c 视频收藏或关注UP主 xff0
  • 抖音软件测试三面,21个面试题复盘

    2023最新软件测试面试大全看完offer拿到手软 哔哩哔哩 bilibili 2023最新软件测试面试大全看完offer拿到手软共计21条视频 xff0c 包括 xff1a 1 HR已读不回问题分析以及如何解决 2 HR已读不回之针对性进
  • 大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • 接口自动化测试面试题大全(合适各级软件测试人员)

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • 阿里90道常问面试题(软件测试岗位)

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • curl 发送json格式数据 请求

    curl H 34 Content Type application json 34 X POST data 39 34 userID 34 10001 39 http localhost 8085 GetUserInfo
  • 在keil中使用头文件实现多文件编程

    如上图所示 xff0c 在这里 xff0c MAX7219driver c为将被包含的源文件 xff0c max7219 h为对应MAX7219driver c的头文件 xff0c 而 xff08 驱动测试 xff09 显示PZ 12234
  • PHP中使用CURL之php curl详细解析和常见大坑

    这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 xff0c 现在分享给大家 xff0c 也给大家做个参考 一起跟随小编过来看看吧 七夕啦 xff0c 作为开发 xff0c 妹子没得撩就 撩 下服务器吧 xff0c
  • KMP字符串

    给定一个字符串 S xff0c 以及一个模式串 P xff0c 所有字符串中只包含大小写英文字母以及阿拉伯数字 模式串 P 在字符串 S 中多次作为子串出现 求出模式串P在字符串S中所有出现的位置的起始下标 输入格式 第一行输入整数 N x
  • 一个简单实用的分离器件锂电池充电电路

    下面推荐一个由分离器件搭建的锂电池充电电路 xff0c 如下图 简单说明一下各器件的功能及电路原理 xff1a 简单说明一下各器件的功能及电路原理 F 43 为充电器的正极 xff0c BT 43 为电池正极 xff0c CH与单片机的一个
  • Android自定义节点进度条NodeProgressBar

    NodeProgressBar 一 简介 Android日常开发中我们可能会遇到开发一个带节点的进度条的需求 xff0c 这个需求看似简单 xff0c 实际上可以挖掘出不少东西 做的好的话也可以做成相对通用的自定义组件 二 自定义属性 sp
  • Http工具类 HttpUtils

    import java io IOException import java nio charset Charset import java security KeyManagementException import java secur
  • 【STM32基础】第二篇、STM32串口的使用

    目录 第一部分 如何取出串口接收到的数据 xff1f 第二部分 如何将串口接收的数据与目标数据进行匹配 xff1f 第三部分 串口常用的发送数据的函数 1 发送一个字符 xff08 8位 xff09 2 发送一个16位数据 xff08 16
  • 使用FlyMCU往STM32中烧写程序

    0 软硬件环境 1 操作系统 xff1a Windows 2 软件 xff1a KeilFlyMcu 3 硬件 xff1a PCSTM32最小系统开发板USB转TTL CH340G 1 生成hex文件 编写好要烧写的程序后 xff0c 点击
  • LVI-SAM安装与测试

    1 介绍 就在昨天 xff0c LVI SAM开源了 xff0c 它是一个lidar visual inertial里程计和建图系统 xff0c 在系统级别结合了LIO SAM和Vins Mono的优势 作者之前还开源了LeGO LOAM和