大致看了一下ORB-SLAM、DF-VO等SLAM相关项目,也围绕着DF-VO做了一些修改,现在研二,也该为自己的未来作打算了,看了一下求职的信息,其实给我的感觉招雷达SLAM的会比视觉SLAM的要多,稍微统计了一下,SLAM岗下面几个要求在招聘信息出现的次数比较多。
其实之前也一直想学习一下激光SLAM相关知识,这会就拿LOAM开刀吧
这个不用多说了吧
Ceres的安装我参考了官方手册,连接在这
安装过程中也没遇到什么问题,一切都很顺利
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
当然,一般来说编译肯定不是一帆风顺的哈哈,下面是我编译过程中遇到的几个小问题
/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")
/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
找不到CV,其实ROS中noetic已经自动安装了CV4了,只不过引入不对而以link
这个时候只需要找到出错的位置,如下:
#include
改成下面这样子就可以了
#include
/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就可以了