简介:

LiDAR-based real-time 3D localization and mapping

github:https://github.com/erik-nelson/blam.git

官方视频:https://youtu.be/08GTGfNneCI

一、安装依赖包

1、安装ROS

2、安装 GTSAM

sudo apt-get install libboost-all-dev
sudo apt-get install cmakegit clone https://bitbucket.org/gtborg/gtsam.git
cd gtsam
mkdir build
cd build
cmake ..
sudo make install

二、安装BLAM

git clone https://github.com/erik-nelson/blam.gitcd blam
./update

常见问题

1、fatal error: ros/ros.h: No such file or directory

cd blam/internal/src/geometry_utils
vim package.xml
#添加一下内容
<build_depend>roscpp</build_depend>
<run_depend>roscpp</run_depend>vim CMakeList.txt
#修改find_package(catkin REQUIRED)为
find_package(catkin REQUIRED COMPONENTS roscpp)
#添加
include_directories(include ${catkin_INCLUDE_DIRS})

2、Invalid (NaN, Inf) point coordinates given to nearestKSearch!

pcl中NaN数据处理

在blam/src/point_cloud_filter/src/PointCloudFilter.cc的filter函数最后面添加如下内容

if (!points->is_dense)
{points_filtered->is_dense = false;std::vector<int> indices;pcl::removeNaNFromPointCloud(*points_filtered,*points_filtered, indices);
}

以上nan问题主要是因为所使用的点云数据is_desne:false也就是说,点云里面可能含有nan所以在filter里面

统一做了去除无效值

3、按照以上方法修改后,在回环后还是出现Invalid (NaN, Inf) point coordinates given to nearestKSearch

修改”BlamSlam.cc”,修改以下几行(这几行不是连在一起的),即把使用原始msg的地方替换为msg_filtered

//1、change loop_closure_.AddKeyScanPair(0, msg); to
loop_closure_.AddKeyScanPair(0, msg_filtered);  //2、change if (HandleLoopClosures(msg, &new_keyframe)) to
if (HandleLoopClosures(msg_filtered, &new_keyframe))//3、localization_.TransformPointsToFixedFrame(*msg, msg_fixed.get());
localization_.TransformPointsToFixedFrame(*msg_filtered, msg_fixed.get());

三、使用

使用自己的数据集,修改test_online.launch文件

<remap from="~pcld" to="/rslidar_points"/> <!--/rslidar_points替换成自己的话题名-->roslaunch rslidar rslidar_16.launch   //运行激光雷达
source your_path/blam-master/internal/devel/setup.zsh//或./workon
roslaunch blam_example test_online.launch

使用自定义数据集常见问题

1、效果不好

点云数量少就修改point_cloud_filter/config/parameters.yaml

#关闭voxel grid filter
grid_filter: false

2、按照1修改了,效果还不好,旋转特别大

修改point_cloud_localization/config/parameters.yaml

  # Maximum acceptable incremental rotation and translation.transform_thresholding: true #falsemax_translation: 0.5 #0.05max_rotation: 0.3 #0.1

3、不回环

观察你的pose相差多远,修改laser_loop_closure/config/parameters.yaml

#默认0.5米检测一次回环或记录关键帧,值越大效率越高,发现构图缓慢的时候可以放大这个值
translation_threshold: 1.0 #0.5#默认是在1.5米范围内匹配,根据你自己的回环误差放大这个值
proximity_threshold: 10 #1.5#ICP "fitness score" must be less than this number,就是越小越难回环
max_tolerable_fitness: 5 #0.15#根据你自己的地图大小适当放宽跳过回环的点数,一般地图越大值越大
skip_recent_poses: 100 #40
poses_before_reclosing: 100 #40

4. rviz查看

rosrun rviz rviz -d blam_example/rviz/lidar_slam.rviz

参考博客

https://blog.csdn.net/xmy306538517/article/details/81122663

16线激光雷达3Dslam建图算法BLAM使用相关推荐

  1. 3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)

    Ubuntu18.04使用速腾16线激光雷达RS-16测试3D建图算法 LeGO-LOAM 的使用 1. 安装gtsam因子图库 2. 新建ROS工程目录文件夹,下载源码进行编译 3. 下载相关数据集 ...

  2. gazebo中机器人搭载16线激光雷达建图导航

    gazebo中机器人搭载16线激光雷达建图导航 如果用过古月的教程大家就会知道,古月教程中的机器人采用的是单线激光雷达,但有的时候仿真需要多线激光雷达,这里就教一下怎么搭载16线激光雷达建图导航. 首 ...

  3. 采用16线激光雷达调用cartographer室内建图

    采用16线激光雷达调用cartographer室内建图 要用cartographer建图,我们需要的前期准备工作有: 1 安装cartographer功能包 这是一个谷歌编写的开源功能包,还是非常好用 ...

  4. 使用速腾16线激光雷达与IMU 实现Cartographer 3D建图

    平台:ubuntu18.04 + rosmelodic 设备: 速腾16线激光雷达(RS-Helios-16P).IMU(WHT901B-485),使用方法见前文 1.创建backpack_2d_rs ...

  5. gazebo中给机器人添加16线激光雷达跑LIO-SAM

    目录: 前言 1.下载雷达仿真包 2.添加雷达支架描述文件 3.添加雷达描述文件 4.启动仿真 5.添加IMU模块 6.添加RGB-D相机 7.LIO-SAM仿真 安装依赖 安装GTSAM 编译LIO ...

  6. 镭神16线激光雷达跑SC-LeGo-LOAM算法

    一.运行环境 环境:ubutu18.04+ros:melodic+pcl:1.8+gtsam+metis 环境配置: Eigen 3.3.4 PCL 1.8.1 (1.11不能用) ceres 2.0 ...

  7. 采用16线激光雷达调用cartographer室内定位

    采用16线激光雷达调用cartographer室内定位 之前进行了16线激光雷达调用cartographer包进行室内建图,这方面很多朋友都知道,cartographer是google的一个开源SLA ...

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

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

  9. 搭建实验室3d slam 移动小车 4.1jackal小车+镭神32线激光雷达lego-loam建图

    搭建实验室3d slam 移动小车 4.1.1jackal小车+镭神32线激光雷达lego-loam建图 镭神32线 lego-loam建图 视频链接 镭神32线 lego-loam建图 参考博客: ...

最新文章

  1. GBDT和GNN结合,结果怎么样?
  2. MIT联合波士顿咨询:全球21个行业,对话3000名高管,AI如何重塑商业形态? | 雷报
  3. android 多个应用,Android中一个应用实现多个图标的几种方式
  4. 好程序员Java教程分享之jvm篇
  5. SAP/SD - 做SD你要知道的透明表
  6. WIN7系统激活后无法正常启动
  7. QT的QCalendarWidget类的使用
  8. PAT_B_1060_Java(25分)
  9. 第13讲nbsp;日期和时间nbsp;EXCEL2010…
  10. 流量专家为114搜索提供权威流量访问统计
  11. Dos命令tasklisttaskkill强大命令
  12. sockaddr_in结构体、socklen_t类型、bzero函数简要记录
  13. 斐讯盒子T1_【YYF固件】无语音实用版刷机固件及教程分享
  14. 单片机基础学-按键篇
  15. linux下find搜索jpg格式图片,Linux文件查找命令-find
  16. python调用qq互联_实现QQ互联一键登录代码教程
  17. webstorm汉化怎样切回英文_我不小心把NS切成英文/日文系统了,怎样回到中文系统?...
  18. 服务器cpu哪个型号主频最高,史上最高主频 默认4.4GHz至强CPU发布
  19. 在html标签中写alert,文本不会写入页面,但会显示在alert()消息中。 JavaScript和HTML...
  20. 2018年创翼 开wifi方法 适合电脑小白

热门文章

  1. Java中的继承与接口
  2. 框架 --mybatis(ORM映射)-数据库技术
  3. Android机器人纯HTML
  4. 专业软件测试工程师必备之软件测试要学什么技能?
  5. HTML5 weui笔记
  6. 金额按千分位划分、数字按千分位划分
  7. ROS(七):移动机器人的导航和SLAM(一)
  8. 音视频开发——概述(含TUTK demo iOS)
  9. Java判断Long类型相等问题
  10. Text-CNN 文本分类