Floam在Ubuntu20.04下的编译与运行
参考链接: Loam:Ubuntu20.04下的编译与运行.
一、源码及数据集下载
源码链接: https://github.com/wh200720041/floam.git.
数据集链接:https://drive.google.com/file/d/1_qUfwUw88rEKitUpt1kjswv7Cv4GPs0b/view.
将下载好的源码放入建立好的ros工作空间下即可。
二、安装ceres
在loam的基础上我们需要安装非线性求解器ceres:
官网链接:http://ceres-solver.org/installation.html.
安装依赖项(在安装前可以locate看是否已安装):
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
sudo apt-get install libsuitesparse-dev
编译、测试、安装ceres:
tar zxf ceres-solver-2.0.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.0.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
三、Floam的运行
在终端运行:
roslaunch floam floam.launch
如果你想同步建图的话 (more cpu cost):
roslaunch floam floam_mapping.launch
播放数据集:
rosbag play bag存放地址
rviz显示:
四、可能会遇到的问题
1.ROS支持C++14
sudo vim /opt/ros/noetic/share/catkin/cmake/toplevel.cmake
set(CMAKE_CXX_FLAGS "-std=c++14 ${CMAKE_CXX_FLAGS}")
2.pcl版本问题
(1) Ubuntu20.04安装多版本pcl
在编译过程中,报出许多关于pcl的错误,猜测是由于版本不匹配造成的,ubuntu20.04默认的pcl版本为1.10,安装在/usr/include目录下,于是在 /usr/local目录下建立pcl18文件夹,用于安装1.8版本的pcl:
cd /usr/local
sudo mkdir pcl18
pcl各版本下载链接: https://github.com/PointCloudLibrary/pcl/releases.
安装依赖项:
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
进入下载源码文件:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/pcl18 \ -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON ..
make
sudo make install
安装完成后,在使用到pcl1.8代码的CMakeLists.txt中加入:
set(PCL_DIR "/usr/local/pcl18/share/pcl-1.8")
(2) Floam兼容pcl1.10
主要是让Floam支持C++14,所以只需要修改下载下来的源码中CMakeList.txt:
set(CMAKE_CXX_FLAGS "-std=c++14")
#路径
set(PCL_DIR "/usr/include/pcl-1.10")
find_package(PCL 1.10 REQUIRED)