文章目录

  • 前言
  • 1 A-LOAM
  • 2 预备条件
    • 2.1 Ubuntu和ROS
    • 2.2 Ceres Solver(Ceres求解器)
    • 2.3 PCL(Point Cloud Library)
  • 3 创建A-LOAM工程
  • 3 使用A-Loam进行SLAM
  • 总结

前言

上文介绍使用自己的多线激光雷达来可视化、采数据,接下来就是介绍怎么使用港科大改进的A-Loam进行建图。

注意注意!第六和第七章使用的都是Ubuntu18.04系统!!!!!!

前文链接如下

  • SLAM实操入门(一):在已有WIN10的电脑上安装Ubuntu20.04

  • SLAM实操入门(二):Ubuntu20.04安装ROS Noetic并运行“小乌龟”程序

  • SLAM实操入门(三):Ubuntu20.04安装Turtlebot3并运行SLAM例程仿真

  • SLAM实操入门(四):使用ROS连接自己的激光雷达并可视化扫描结果

  • SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)

  • SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化


1 A-LOAM

参考论文如下:LOAM: Lidar odometry and mapping in real-time

A-LOAM 是 LOAM的先进实现(Advanced Implementation),使用 Eigen 和 Ceres Solver 库来简化代码结构。它一种实时的里程计和映射方法,使用来自 6 自由度移动的 2 轴激光雷达的距离测量。距离测量是在不同的时间接收的,并且运动估计中的错误会导致结果点云的错误配准。迄今为止,可以通过离线批处理方法构建连贯的 3D 地图,通常使用闭环来校正随时间的漂移(建图过程走一个闭环路线,进行重新匹配与地图修正)。我们的方法无需高精度测距或惯性测量即可实现低漂移和低计算复杂度。获得这种性能水平的关键思想是同时定位和映射的复杂问题的划分,该问题旨在通过两种算法同时优化大量变量。

  • 一种算法以高频率但低保真度执行里程计来估计激光雷达的速度
  • 另一种算法以低一个数量级的频率运行,用于点云的精细匹配和配准

两种算法的组合允许该方法实时映射。该方法已通过大量实验以及 KITTI 里程计基准进行了评估。结果表明,该方法可以达到最先进的离线批处理方法水平的准确性(2014年,目前来看任然很好用)。

Github工程的链接如下:Advanced implementation of LOAM

此代码是从 LOAM 和LOAM_NOTED修改的,简洁明了且没有复杂的数学推导和冗余操作。对于 SLAM 初学者来说是很好的入门学习项目

2 预备条件

2.1 Ubuntu和ROS

Ubuntu 要求为64位16.04版本或18.04版本。
ROS为 Kinetic 或 Melodic 。

(18.04以上应该也能运行,但是可能会有一些小bug,建议还不熟悉的同学使用推荐版本搭建项目)

2.2 Ceres Solver(Ceres求解器)

Ceres安装的参考地址:Ceres Solver

Ceres Solver 是一个开源 C++ 库,用于建模和解决大型、复杂的优化问题。它可用于解决具有边界约束和一般无约束优化问题的非线性最小二乘问题。也是A-LOAM的支持包。

  • 首先安装依赖包
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev

依赖包安装完成

  • 进入下载链接,点击如图所示连接,下载Ceres安装包

  • 进入下载文件
cd Downloads/
  • 使用ls看看文件名叫啥,使用tar解压
tar zxf ceres-solver-2.1.0.tar.gz

  • 创建工程文件,进入,编译
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0

  • 成功后,执行以下命令
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install

安装完成

2.3 PCL(Point Cloud Library)

PCL安装网址:Point Cloud Library

sudo apt install libpcl-dev

3 创建A-LOAM工程

  • 回到主页,创建工程文件
sudo mkdir -p catkin_ALoam/src/
  • 进入工程文件中
cd catkin_ALoam/src/
  • 拉取工程
sudo git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git

  • 返回上级目录,编译
cd ..
catkin_make

source一下bash文件以配置环境变量

source devel/setup.bash

搞定!

3 使用A-Loam进行SLAM

这时候得把第六章的代码一起跑,一个拿数据,一个来建图。

  • Ctrl+Alt+T打开新终端,启动激光雷达
roslaunch velodyne_pointcloud VLP16_points.launch
  • 启动A-Loam建图
 roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch

结果如下


把雷达拿起来动一动试试!

注意动作幅度最好不好太大,也不要给俯仰和滚转的运动。

  • 创建地图的过程视频如下,我简单站起来走了两步

A-Loam建图过程

建图效果如下


运动轨迹如下(站起来鬼畜)


看看地图的细节和不同角度

A-Loam创建的地图


总结

本文介绍了使用Velodyne的16线激光雷达进行建图,算法是港科大2014年重构的A-Loam,希望能帮到大家。

  • SLAM实操入门(一):在已有WIN10的电脑上安装Ubuntu20.04

  • SLAM实操入门(二):Ubuntu20.04安装ROS Noetic并运行“小乌龟”程序

  • SLAM实操入门(三):Ubuntu20.04安装Turtlebot3并运行SLAM例程仿真

  • SLAM实操入门(四):使用ROS连接自己的激光雷达并可视化扫描结果

  • SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)

  • SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化

SLAM实操入门(七):使用Velodyne16线激光雷达与A-Loam进行三维SLAM相关推荐

  1. SLAM实操入门(三):Ubuntu20.04安装Turtlebot3并运行SLAM例程仿真

    文章目录 前言 在Turtlebot3进行SLAM仿真 1 安装Turtlebot3依赖包 2 创建项目并安装Turtlebot3 3 使用Turtlebot3进行建图 4 使用扫描地图进行自动导航仿 ...

  2. SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化

    文章目录 前言 1 Velodyne激光雷达 2 配置网络 3 创建ROS工程 4 启动并可视化 5 录包与播放 总结 前言 好久没更新这部分了,最近在搞中期答辩的东西,简单补充一部分多线激光雷达建图 ...

  3. SLAM实操入门(五):无里程计仅使用激光雷达建图(GMapping算法)

    文章目录 前言 1 Gmapping算法 2 laser_scan_matcher库 2.1 安装laser_scan_matcher库 2.2 修改demo_gmapping.launch文件 3 ...

  4. Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)

    Python自学笔记10:实操案例七(根据星座测试性格特点.模拟12306火车订票下单) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=157 ...

  5. 搭建实验室3d slam 移动小车 2.3镭神32线激光雷达ROS-RVIZ上方向确定

    搭建实验室3d slam 移动小车 2.3镭神32线激光雷达ROS-RVIZ上方向确定 ROS上坐标系 参考博客: ROS坐标系统,常见的坐标系和其含义 如图红色为x轴,绿色为y轴,蓝色为z轴 确定镭 ...

  6. RIKIBOT-FX4多线激光雷达与LIO-SAM算法构建三维地图

    目录 简介 硬件环境的准备 lio_sam环境准备 多线激光雷达环境准备 录制数据包 播放数据包建图 关键参数配置 交流方式 简介 前面几篇文章介绍了多线激光雷达转单线,多线激光雷达用cartogra ...

  7. iSCSI target介绍及LIO实操入门

    前文介绍了iSCSI的基本架构及启动器的基本操作,也就是在客户端的操作.今天我们介绍一下目标器的相关概念.开源实现和基本操作.Linux操作系统下面有很多目标器的开源实现,比如LIO.SCST和TGT ...

  8. unity-概念与实操入门

    文章目录 编译器推荐(Rider) 坐标 世界坐标系 相对坐标系 资源商店快捷入口 地面制作 脚本 新建脚本 生命周期 vs测试打印 对象 标签(自带集合属性) 图层 预设体 创建预设体(cocos相 ...

  9. Velodyne16线激光雷达点云数据中的线束(ring)是如何分布的

    将sensor_msgs::PointCloud2转为pcl::PointCloud后的点云数据线束(ring)是从下往上进行递增排序. 在下图中线束0为深蓝色,线束1是红色,线束2为淡蓝色,线束3为 ...

最新文章

  1. Oracle Spatial构建自定义投影坐标系
  2. swift optionals - 1
  3. Chaincode for Operators(运营商的链码手册)
  4. SAP销售订单-订单组合
  5. 操作系统 课堂练习题03【20道 经典题目】
  6. mongodb存入mysql_关于mongodb转存MySQL
  7. 7、Flask实战第7天:Jinjia2模板
  8. 计算机导论的试题,计算机导论试题
  9. [FxCop.设计规则]13. 定义自定义属性参数的访问属性
  10. jdk 8 集合对象排序_使用JDK 8流在包装对象的集合和包装对象的集合之间转换
  11. 中软python编码规范考试试题_卓越分享 | 如何写出一手漂亮的Python代码?
  12. C#移除HTML标记
  13. linux共享内存变量 tiaojianbianliang,低压集抄系统中Linux共享内存使用分析
  14. 揭秘Facebook官方底层C++函数Folly
  15. 第八章、面向对象设计
  16. ESXi虚拟机装系统,报错 /vmlinuz has invalid signature 解决方法
  17. wordpress漏洞工具_WordPress自由职业者,设计师和开发人员的43种顶级工具
  18. m个苹果放入n个盘子
  19. 通过Python做葡萄酒成分与质量的关系分析并可视化--GBDT/随机森林特征选取
  20. 简单几步骤导出网易考拉海购中多个商品的图片

热门文章

  1. 迅雷云点播 播放器 单文件 去广告版
  2. linux centos6安装postgresql
  3. C语言100题打卡—第6题
  4. 英雄联盟登录后服务器显示乱码,英雄联盟大区ID变成乱码,进游戏就闪退,用这三种方法试试看!...
  5. 开关电源EMI实际整改经验大全
  6. 云媒易:抖音短视频推广小技巧汇总
  7. FPGA芯片选型和命名规则
  8. 华农计算机研究生分数线,2020华南农业大学研究生分数线汇总(含2016-2019历年复试)...
  9. uniapp:HBuilderX运行uniapp项目到夜神模拟器
  10. snapchat数据统计_如何使用旅行模式在Snapchat中保存数据