ubuntu20运行A-LOAM记录

13 篇文章 1 订阅

前言

大致看了一下ORB-SLAM、DF-VO等SLAM相关项目,也围绕着DF-VO做了一些修改,现在研二,也该为自己的未来作打算了,看了一下求职的信息,其实给我的感觉招雷达SLAM的会比视觉SLAM的要多,稍微统计了一下,SLAM岗下面几个要求在招聘信息出现的次数比较多。

  • ROS
  • C++
  • LOAM
  • ORB-SLAM
  • cartographer
  • VINS
  • 非线性优化
  • 卡尔曼

其实之前也一直想学习一下激光SLAM相关知识,这会就拿LOAM开刀吧

安装依赖

1. Ubuntu和ROS

这个不用多说了吧

2. Ceres

Ceres的安装我参考了官方手册,连接在这
安装过程中也没遇到什么问题,一切都很顺利

3. PCL

PCL我也参考了官网的操作流程,我在CSDN上搜索ubuntu20安装PCL,看了一些,感觉安装流程都很麻烦,直到我看到了官网的安装教程,只需要一句话而以!!
官方手册在这
官网在这
终端打开并输入以下命令一键安装

sudo apt-get install libpcl-dev

编译过程

下载和编译

cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

当然,一般来说编译肯定不是一帆风顺的哈哈,下面是我编译过程中遇到的几个小问题

问题1
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
   #error PCL requires C++14 or above

就是工作空间里面的PCL得用C++14吧,而编译时候指定的是11,所以需要该一下,这个时候打开cmakeLists.txt文件,第五行如下:

set(CMAKE_CXX_FLAGS "-std=c++11")

只要改成下面这个就可以了

set(CMAKE_CXX_FLAGS "-std=c++14")
问题2
/home/a/catkin_ws/src/A-LOAM/src/laserMapping.cpp:43:10: fatal error: pcl_conversions/pcl_conversions.h: 没有那个文件或目录
 #include <pcl_conversions/pcl_conversions.h>

我搜了,看到了这篇博客,终端打开输入以下命令即可解决

sudo apt-get install ros-noetic-pcl-conversions
/home/a/catkin_ws/src/A-LOAM/src/scanRegistration.cpp:44:10: fatal error: opencv/cv.h: 没有那个文件或目录
 #include <opencv/cv.h>
问题3

找不到CV,其实ROS中noetic已经自动安装了CV4了,只不过引入不对而以link
这个时候只需要找到出错的位置,如下:

#include <opencv/cv.h>

改成下面这样子就可以了

#include <opencv2/imgproc.hpp>
问题4
/home/a/catkin_ws/src/A-LOAM/src/kittiHelper.cpp:91:64: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
         cv::Mat left_image = cv::imread(left_image_path.str(), CV_LOAD_IMAGE_GRAYSCALE);

C++我不是很懂,我找到博客有说明这个问题的

找到出错位置,如下

cv::Mat left_image = cv::imread(left_image_path.str(), CV_LOAD_IMAGE_GRAYSCALE);

改成以下的就行了

cv::Mat left_image = cv::imread(left_image_path.str(), cv::IMREAD_GRAYSCALE);

运行

运行这部分,前面indoor数据比较容易运行起来,就直接上kitti数据吧。

这里得下载KITTI odometry数据集,官网在这

但是这个地方下载贼慢,我看到有博主把东西下载下来了,传到了云盘,可以在这找

然后这是我数据集的格式,根规定的稍微有点区别,所以代码要改一下下。

.
└── KITTI
    ├── results
    │   ├── 00.txt
    │   ├── 01.txt
    │   └── 10.txt
    ├── sequences
    │   ├── 00
    │   │   ├── calib.txt
    │   │   ├── image_0
    │   │   │   ├── 000000.png
    │   │   │   └── 000002.png
    │   │   ├── image_1
    │   │   │   ├── 000000.png
    │   │   │   └── 000002.png
    │   │   ├── times.txt
    │   │   └── velodyne
    │   │       ├── 000000.bin
    │   │       └── 000001.bin
    │   ├── 01
    │   │   ├── calib.txt
    │   │   ├── image_0
    │   │   │   ├── 000000.png
    │   │   │   └── 000002.png
    │   │   ├── image_1
    │   │   │   ├── 000000.png
    │   │   │   └── 000002.png
    │   │   ├── times.txt
    │   │   └── velodyne
    │   │       ├── 000000.bin
    │   │       └── 000001.bin
    │   └── 10
    │       ├── calib.txt
    │       ├── image_0
    │       │   ├── 000000.png
    │       │   └── 000002.png
    │       ├── image_1
    │       │   ├── 000000.png
    │       │   └── 000002.png
    │       ├── times.txt
    │       └── velodyne
    │           ├── 000000.bin
    │           └── 000001.bin
    └── velodyne
        └── sequences
            ├── 00
            │   ├── calib.txt
            │   ├── image_0
            │   ├── image_1
            │   └── times.txt
            ├── 01
            │   ├── calib.txt
            │   ├── image_0
            │   ├── image_1
            │   └── times.txt
            └── 10
                ├── calib.txt
                ├── image_0
                ├── image_1
                └── times.txt

在原文的132行,把第一个velodyne/去掉就可以了,这样子数据集好看一点。

lidar_data_path << dataset_folder << "velodyne/sequences/" + sequence_number + "/velodyne/" 

改称这样子

lidar_data_path << dataset_folder << "sequences/" + sequence_number + "/velodyne/" 

然后编译,按照github项目先更改launch文件,再运行两个launch就可以了

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值