ubuntu20运行A-LOAM记录

前言

大致看了一下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 

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

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 

问题3

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

#include 

改成下面这样子就可以了

#include 

问题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就可以了

你可能感兴趣的:(SLAM,ROS,自动驾驶,人工智能)