ubuntu20.04编译运行lego_loam、lio_sam及问题解决

环境搭建


1.安装ros:
添加ros软件源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list

添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

安装ros

sudo apt update
sudo apt install ros-noetic-desktop-full

添加环境变量

echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

安装rosinstall

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

2.安装gtsam4.0.3
下载安装包

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.3.zip

解压

cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.3/

编译安装

mkdir build
cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
make check -j1
sudo make install 

LeGO-LOAM安装运行及问题解决


1.源码下载及编译

cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

2.编译问题
opencv版本问题:由于 20.04 自带的是OpenCV4,所以要对 LIO-SAM 代码做一点改动,在 utility.h 中的

#include

改为

#include

pcl问题:
ubuntu20.04编译运行lego_loam、lio_sam及问题解决_第1张图片
pcl的问题主要是需要 C++14的编译,这里修改 lio-sam 的编译配置就行 ,打开 liosam的CMakeLists.txt:
将第5行的

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

改为

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

3.编译成功在下面网址下载数据包:

https://github.com/RobustFieldAutonomyLab/jackal_dataset_20170608

4.运行:

roslaunch lego_loam run.launch
rosbag play 2017-06-08-15-52-45_3.bag --clock --topic /velodyne_points /imu/data

5.运行过程中发现rviz报点云坐标系的错误:transform from[/camera]to[map],原因是TF2之后坐标系名称前面省略了/,解决方法是在代码中所有涉及到frame_id的地方去掉/.
6.rviz不显示点云的解决方案是,关闭硬件加速:

export LIBGL_ALWAYS_SOFTWARE=1

ok,成功运行!!!

LIO-SAM安装运行及问题解决


1.源码下载及编译:

cd ~/catkin_ws/src
git clone https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

2.下载作者官网提供的数据包注意,不同的数据包对应的点云话题、imu话题、参数矩阵是不同的,要注意在参数文件中修改
3.运行:

roslaunch lio_sam run.launch
rosbag play your-bag.bag -r 3

4.保存地图服务

 rosservice call [service] [resolution] [destination]
 rosservice call /lio_sam/save_map 0.2 "/home/gym/amari.gao/maps"

ok,成功运行!!!

你可能感兴趣的:(slam,c++,ubuntu,linux)