LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述

2023-11-12

一、github

二、安装依赖

1. ROS

Ubuntu 64-bit 16.04  ROS Kinetic

比较常规,就不赘述了

2. gtsam

(Georgia Tech Smoothing and Mapping library, 4.0.0-alpha2)

cd ~/projects  # 切换到下载目录,可以任意配置
# wget 不行,尝试直接浏览器下载
wget -O ./gtsam-4.0.0-alpha2.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip 
unzip gtsam-4.0.0-alpha2.zip
cd gtsam-4.0.0-alpha2
mkdir build && cd build
cmake ..
make -j4
sudo make install   # 安装至系统目录, /usr/local/include, /usr/local/lib/

3. pcl

sudo apt install libpcl-dev

三、编译

1. 下载代码至 catkin_ws

cd ~/catkin_ws/src
# LeGO-LOAM
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git

2. 编译

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

 

3. 可能遇到的问题

3.1 没有找到 eigen3

 原因:

Eigen的安装位置是 /usr/local/include/eigen, 而ROS系统中 Eigen 的默认安装位置是 /usr/include/eigen

在ROS使用自己安装的eigen时的cmake错误_bluewhalerobot的博客-CSDN博客

解决:创建软链接

sudo ln -s /usr/local/include/eigen3 /usr/include/eigen3

3.2 找不到 cloud_msgs/cloud_info.h

 原因:并行编译导致依赖的 cloud_msgs 没有完成编译

解决:

catkin_make -j1

四、运行 example

1. 数据集下载

官方链接:https://drive.google.com/drive/folders/1_t5fX5yIqY-y6sAifY8pVWX4O9LCK5R2?usp=sharing

网友链接:(LeGO-LOAM运行数据集_Wanqing_W的博客-CSDN博客

链接:https://pan.baidu.com/s/1UswMElc81AKY8hnpmkjnrA
提取码:l5rl

2. 运行 ros

roscore

3. 启动 lego-loam

roslaunch lego_loam run.launch

4. 播放 bag

cd $DATASET_DIR # 切换至存放 bag 目录
rosbag play nsh_indoor_outdoor.bag --clock --topic /velodyne_points /imu/data

5. 效果

五、ros 节点组织

1. launch 文件解析

<launch>
    
    <!--- Sim Time -->
    <param name="/use_sim_time" value="true" />

    // 运行可视化
    <!--- Run Rviz-->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam)/launch/test.rviz" />

    <!--- TF -->
    <node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" />
    <node pkg="tf" type="static_transform_publisher" name="base_link_to_camera" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" />

    <!--- LeGO-LOAM -->
    // 运行 4 个 bin 
    <node pkg="lego_loam" type="imageProjection"    name="imageProjection"    output="screen"/>
    <node pkg="lego_loam" type="featureAssociation" name="featureAssociation" output="screen"/>
    <node pkg="lego_loam" type="mapOptmization"     name="mapOptmization"     output="screen"/>
    <node pkg="lego_loam" type="transformFusion"    name="transformFusion"    output="screen"/>

</launch>

(1). 可执行文件

lego_loam: imageProjection

lego_loam: featureAssociation

lego_loam: mapOptmization

lego_loam: transformFusion

(2). 可视化

rviz

2. topic 订阅

 

可以看到,运行的三个可执行文件是串行方式:

imageProjection——> featureAssociation——> mapOptmization——> transformFusion

六、算法流程

 预处理(imageProjection):分割,特征提取

Lidar Odometry: scan-to-scan,10Hz

Lidar Mapping:scan-to-map,2Hz

最终,两种算法输出的位姿融合,输出 10HZ 的运动轨迹

和原始 LOAM 算法区别

1. 侧重于:轻量级,地面优化

2. 引入语义分割

3. 引入了回环检测和位姿图优化,是一个完整的 SLAM 框架

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述 的相关文章

随机推荐

  • 现场总线和工业以太网

    随着传统制造企业正在加快智能制造转型的进程 工业互联网迅速在全世界范围内兴起 在工业互联网的技术构架中 通过各类通讯方式接入不同设备 系统和产品 来采集海量数据是其重要的一环 本文将介绍工业底层设备的两种通讯方式 现场总线和工业以太网 一
  • 容器集群k8s从入门到精通之 Pod详解(第五章)

    第五章 Pod详解 本章节将详细介绍Pod资源的各种配置 yaml 和原理 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器 这些容器可以分为两类 用户程序所在的容器 数量可多可少 Pause容器 这是每个Pod都会有的一个根
  • 12款AI代码生成工具,都很能打

    1 Anania Anania 是一个机器人数据分析师 可以通过简单 自然的英语对话来分析您的数据 连接数据源并以简单的英语提问 无需任何设置或配置 在幕后 Anania 正在使用一个 AI 系统 该系统将文本转换为 SQL 和 Pytho
  • 数值分析与matlab学习笔记——多项式插值法

    文章目录 多项式插值 一点背景 多项式插值的存在唯一性 Lagrange插值法 n次插值基函数 拉格朗日插值函数 matlab代码及效果 Newton插值 均差 差商 均差的三种理解 N 基函数 牛顿插值函数 matlab代码及效果 误差分
  • openGL之API学习(一零六)wglGetProcAddress

    获取当前显卡中OpenGL函数的指针地址 PROC wglGetProcAddress LPCSTR Arg1 Arg1 Points to a null terminated string that is the name of the
  • 学习Linux命令的正确姿势

    大家好 我是良许 大家应该注意到了 最近我的公众号文章末尾都挂着自己录制的 Linux命令从小白到大神 课程 这个课程我从开始录制到制作完成 足足花了一个半月 如果加上前期的资料收集与教案准备 肯定有将近三个月 首先跟大家讲讲我为什么要开发
  • 电器元件——LM7805

    LM7805是一款常用的线性三端稳压IC 其外形封装虽然有多种 但输出电压皆为5V 区别就是封装不同 最大输出电流可能不一样 最常用的是如下图所示的TO 220封装的7805 TO 220封装的7805 上图所示的这种封装的7805 最高输
  • 设计模式 - Provider Pattern(提供者模式)

    设计模式 Provider Pattern 提供者模式 作者 webabcd 介绍 为一个API进行定义和实现的分离 示例 有一个Message实体类 对它的操作有Insert 和Get 方法 持久化数据在SqlServer数据库中或Xml
  • tcpreplay-tcprewrite

    1 介绍 参考链接 https www cnblogs com zlslch p 7325599 html utm source itdadao utm medium referral tcpreplay是一种pcap包的重放工具 它可以将
  • 【OpenCV】形态学图像处理学习笔记

    目录 腐蚀操作 膨胀操作 开运算操作 闭运算操作 梯度运算操作 礼帽运算操作 黑帽运算操作 腐蚀操作 cv2 erode 图像对象 内核 卷积核 interations 内核 核越大 腐蚀程度越高可自行定义 例如 kernel np one
  • Java面试题--shiro

    Shiro可以做哪些工作 Shiro可以帮助我们完成 认证 授权 加密 会话管理 与Web集成 缓存等 shiro有哪些组件 Authentication 身份认证 登录 验证用户是不是拥有相应的身份 Authorization 授权 即权
  • PG数据库恢复指定错误备份文件时怎么解决

    项目场景 测试环境中对分库分表PG库的同步数据 表结构等操作 问题描述 当我们在给分库分表执行备份恢复时 把不是本分片库的备份文件导入至本分片库 导致数据错乱 比如我们将一个8分库 0 7 的备份文件命名为dump 0 ddl dump 1
  • Sqli-labs之Less-20和Less-21和Less-22

    Less 20 基于错误的cookie头部POST注入 首先从已知的条件中我们知道这又是一道 头部注入 那么我们先输入正确的用户名和密码看一下登录成功是什么样子的 回显有User Agent IP这样从当次Request直接获取的 也有Co
  • 兴业银行利用以太坊区块链发行债券,金融科技冲击下的银行业未来(上篇)

    点击上方 蓝色字 可关注我们 暴走时评 日前 兴业银行通过以太坊区块链发行了类证券代币的债券 兴业银行的举动可能意味着银行承认 即使比特币或以太等无许可协议可能会带来颠覆性的威胁 他们依旧无法放弃其中潜在的巨大机遇 作者 Michael J
  • PHP+Laravel框架RabbitMQ简单使用

    RabbitMQ安装教程请转到 RabbitMQ安装教程 超详细 1 创建生产者 在app Http Controllers里创建一个php控制器文件 namespace App Http Controllers use App Http
  • docker中安装jupyter,并远程打开jupyter

    一 拉取镜像 拉取一个自带miniconda的镜像源 docker pull continuumio miniconda3 二 启动容器 docker run id p 宿主机端口 容器端口 name 自己取的容器名 v 宿主机目录 容器目
  • Python 综合应用小项目一

    数据库报错重连机制 利用异常捕获来获取mysql断开的报错 然后再重连 1 import MySQLdb as mysql 2 3 class DB 4 def init self host user passwd db name 5 se
  • 基于spring validation多层对象校验

    1 第一层对象定义 package com ybw validation demo vo import lombok AllArgsConstructor import lombok Data import lombok NoArgsCon
  • idea workspace.xml 报错

    1 找到 workspace xml 位置并删除 2 重新install
  • LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述

    一 github GitHub RobustFieldAutonomyLab LeGO LOAM 二 安装依赖 1 ROS Ubuntu 64 bit 16 04 ROS Kinetic 比较常规 就不赘述了 2 gtsam Georgia