需要库eigen3.2.5、opencv3.2.0、ros-melodic(注意对版本要求高),需要严格对应版本否则可能出现问题。
melodic/Installation/Ubuntu - ROS Wiki
由于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
LSD SLAM需要的opencv是使用GTK而不是用QT的,所以一开始cmake的时候,需要把GTK打开而关闭QT。
进入到opencv文件夹
mkdir build
cd build
cmake-gui
进入到如下页面:
如果需要设置opencv安装路径的可以参照上述eigen安装过程,修改参数-DCMAKE_INSTALL_PREFIX=/usr/local/opencv320
然后Configure、Generate
make -j6
sudo make install
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
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
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
效果图:
鼠标点击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
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