ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用

一、lsd-slam依赖的库

需要库eigen3.2.5、opencv3.2.0、ros-melodic(注意对版本要求高),需要严格对应版本否则可能出现问题。

1、ros-melodic版本安装这个请参照官网

melodic/Installation/Ubuntu - ROS Wiki

2、eigen3.2.5(多版本切换)

由于ubuntu18.04的eigen版本为3.3.4,此版本eigen版本编译lsd-slam运行rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info时候出现错误:

double free or corruption(out)

Aborted(core dumped)

所以我们需要对eigen进行多版本安装去eigen官网下载eigen3.2.5源码

cd /usr/include
sudo mkdir eigen325

解压eigen3.2.5到主目录

cd ~/eigen-3.2.5
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/include/eigen325 .. //安装到usr/include/eigen325
make
sudo make install

然后我们需要对eigen版本进行切换,切换为eigen-3.2.5

cd /usr/include
sudo mkdir eigen334
sudo mv eigen3 eigen334
sudo mv /usr/include/eigen325/eigen3 /usr/include

3、源码安装opencv3.2.0

LSD SLAM需要的opencv是使用GTK而不是用QT的,所以一开始cmake的时候,需要把GTK打开而关闭QT。

进入到opencv文件夹
mkdir build
cd build
cmake-gui

进入到如下页面:

ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用_第1张图片

 ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用_第2张图片

 如果需要设置opencv安装路径的可以参照上述eigen安装过程,修改参数-DCMAKE_INSTALL_PREFIX=/usr/local/opencv320

然后Configure、Generate

make -j6
sudo make install

二、lsd-slam安装

1、 安装lsd-slam所需依赖

sudo apt-get install ros-melodic-libg2o ros-melodic-cv-bridge liblapack-dev libblas-dev freeglut3-dev libsuitesparse-dev libx11-dev
sudo apt install libqglviewer-dev-qt4
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libQGLViewer-qt4.so libQGLViewer.so

2、编译源码

ubuntu18.04下用catkin_make编译的lsd-slam版本参考博主大佬改得版本

GitHub - Rick0514/Ubuntu18.04-LSD-SLAM: LSD SLAM runs on ubuntu 18.04

mkdir -p ~/ros_lsd/src
cd ~/ros_lsd/src
git clone https://github.com/Rick0514/Ubuntu18.04-LSD-SLAM.git 
cd ../
catkin_make

 3、测试

1)

跑lsd-slam自带的数据集https://vision.in.tum.de/research/vslam/lsdslam?s%5B%5D=%2Alsd%2A&s%5B%5D=%2Aroom%2A

roscore
echo "source ~/ros_lsd/devel/setup.bash" >> ~/.bashrc
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info
rosbag play ~/LSD_room.bag

 2)

跑TUM数据集rgbd_dataset_freiburg3_long_office_household。(跑fx1类型数据集会出现问题)

cd到数据集文件夹

touch calib.cfg
gedit calib.cfg

添加以下内容到文件中

0.820315 1.09375 0.49921875 0.498958333 0
640 480
none
640 480

 运行数据集

roscore
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core dataset _files:/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/rgb _hz:30 _calib:=/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/calib.cfg

运行bag数据集

roscore
rosrun lsd_slam_viewer viewer
rosrun lsd_slam_core live_slam image:=/camera/rgb/image_color  _/calib:=/home/x1/Data/rgbd_dataset_freiburg3_long_office_household/calib.cfg

效果图:

ubuntu18.04 用LSD-SLAM跑通rgbd数据集以及地图重用_第3张图片

三、地图保存

鼠标点击PointCloud Viewer窗口,在想要保存的地图时间点长按p键就会保存地图到lsd_slam_viewer文件夹中的.ply文件夹

如果想要利用.ply文件,按需要将文件转为相应类型的文件,本人转的是.pcd文件

创建个文件夹ply2pcd,在文件夹里如下操作:

如下代码,创建文件main.cpp,内容如下:

#include 
#include 
#include 

using namespace pcl;
using namespace pcl::io;

int main (int argc, char** argv)
{
    pcl::PLYReader reader;
    pcl::PointCloud::Ptr cloud (new pcl::PointCloud);
    reader.read("/home/x1/orbslam2saved_map/pc.ply", *cloud);
    pcl::io::savePCDFile("/home/x1/orbslam2saved_map/pointcloud.pcd", *cloud );

    return 0;
}

创建CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)
project(ply2pcd)

set(CMAKE_CXX_STANDARD 11)
find_package(PCL 1.8 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})


add_executable(ply2pcd main.cpp)
target_link_libraries(ply2pcd ${PCL_LIBRARIES})

对代码进行编译(代码需要安装pcl库):

mkdir build
cd build
cmake ..
make -j4

进入build文件夹,在此文件夹中打开终端:

./ply2pcd


 

 运行bug解决方法:

1、当运行之后发现画面不显示点云

解决方法:

弹出的DebugWindow DEPTH窗口不能正常显示。

解决方法一:将lsd_slam/lsd_slam_core/src/util/settings.cpp的第38行更改为:bool displayDepthMap = false;//true

此时DebugWindow DEPTH窗口不再显示。

解决方法二:修改lsd_slam/lsd_slam_core/src/IOWrapper/OpenCV/ImageDisplay_OpenCV.cpp:在line 73增加

cv::imshow(displayQueue.back().name, displayQueue.back().img);
cv::waitKey();
displayQueue.pop_back();

2、

what(): basic_string::substr: __pos (which is 140) > this->size() (which is 67)错误解决方法

更换上述数据集或者更换相机参数

参考链接:Ubuntu 18.04上跑通LSD SLAM_gy_Rick的博客-CSDN博客

参考链接:
GitHub - qixuxiang/ply2pcd: convert ply file to pcd file

你可能感兴趣的:(lsd-slam,ros,ubuntu,ubuntu,slam,c++)