欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SLAM开发环境

程序员文章站 2024-03-25 10:14:16
...

准备

  • 操作系统ubuntu18.04

  • 《视觉 SLAM 十四讲》第二版源码在高翔GitHub上下载GitHub

  • #安装必要库,将安装一堆新包,包括gcc,g ++和make
    sudo apt install build-essential

  • 打开 /etc/ld.so.conf 添加一行内容:/usr/local/lib,保存退出再运行 udo ldconfig,避免错误 ***: cannot open shared object file(没有配置共享库所在文件夹的路径)

  • 使用的是opencv-4.3.0 安装教程

CMAKE

cmake 用来管理c++项目源代码
	cmake ..  		根据CMakeLists.txt文件,去生成makefile
	make -j4  		根据makefile文件内容编译工程,即生成可执行文件
	make install 	将可执行文件、第三方依赖包和文档复制到正确的路径

安装cmake

#到cmake官网下载最新的cmake
https://cmake.org/download/

#下载后解压,然后进入目录执行:
cd cmake-3.**
./bootstrap
make -j8
sudo make install
#验证版本
cmake --version

#使用以下指令解决缺库问题(Could not find OpenSSL):
sudo apt-get install libssl-dev

slam开发环境

在ubuntu上安装slam发环境建议先安装opencv,opencv的依赖与下面要安装的依赖有重复。

安装Eigen

#终端输入
sudo apt-get install libeigen3-dev

安装sophus

#无需要安装直接将sophus复制到/usr/include中(qt中直接引库,调用.hpp)
sudo cp -r /slambook2/3rdparty/Sophus/sophus /usr/include 

安装Pangolin(在slambook2/3rdpart/Pangolin)

#安装依赖库
	sudo apt-get install libglew-dev # OpenGL库
	sudo apt-get install pkg-config
	sudo apt-get install doxygen

#进入Pangolin源码目录,创建build 目录,cd build 运行
sudo mkdir build && cd build
#生成Makefile
sudo cmake ..
#编译
sudo make -j8
#安装
sudo make install

#错误信息
	CMake Error at external/pybind11/tools/FindPythonLibsNew.cmake:95 (message):
	  Python config failure:
	  Traceback (most recent call last):
	    File "<string>", line 1, in <module>
	  ImportError: cannot import name 'sysconfig'

#解决
	sudo apt-get install python3-pip

安装ceres

#安装日志和测试工具(glog、gtest)
sudo apt install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev 
#进入ceres-solver源码目录,创建build 目录,cd build 运行
sudo mkdir build && cd build
#生成Makefile
sudo cmake ..
#编译
sudo make -j8
#安装
sudo make install

安装g2o

#安装依赖项
sudo apt install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3 
#进入g2o源码目录,创建build 目录,cd build 运行
sudo mkdir build && cd build
#生成Makefile
sudo cmake ..
#编译
sudo make -j8
#安装
sudo make install

安装DBoW3(先装opencv)ch11

#进入DBoW3源码目录,创建build 目录,cd build 运行
sudo mkdir build && cd build
#生成Makefile
sudo cmake ..
#编译
sudo make -j8
#安装
sudo make install

安装点云库PCL(依赖boost、vtk库)

#qt使用依赖库 /usr/include/vtk-6.3;/usr/include/boost
sudo apt install libpcl-dev pcl-tools
报错:
	The following packages have unmet dependencies:libpcl-dev : Depends: libvtk6-dev but it is not going to be installed Depends: libvtk6-qt-dev but it is not going to be installed E: Unable to correct problems, you have held broken packages.
解决
	#使用aptitude 安装
	sudo aptitude install libpcl-dev #先选择n,在选择y

安装八叉树地图octomap和对应的可视化工具octovis

sudo apt install liboctomap-dev octovis 

cmake编译运行slam部分章节代码的错误与解决

slam项目ch5 opecv cmake 编译注意(只在ch5/imageBasics下 build cmake)

#修改/slam2/slambook2/ch5/imageBasics/CMakeLists.txt 配置文件,添加opencv库路径
	project(imageBasics)
	set(OpenCV_DIR "/usr/lib/opencv")
	find_package(OpenCV REQUIRED COMPONENTS core imgproc highgui)

	add_executable(imageBasics imageBasics.cpp)
	# 链接OpenCV库
	target_link_libraries(imageBasics ${OpenCV_LIBS})

	add_executable(undistortImage undistortImage.cpp)
	# 链接OpenCV库
	target_link_libraries(undistortImage ${OpenCV_LIBS})

slam项目ch6 g2o make 编译注意

错误:./g2oCurveFitting: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
解决:打开 sudo gedit /etc/ld.so.conf
	添加内容:/usr/local/lib
	启动配置:sudo ldconfig

slam项目ch11 DBoW3 make 编译注意

 错误:make[2]: *** 没有规则可制作目标“/usr/local/lib/libDBoW3.a”,由“gen_vocab” 需求。 停止。
1解决:打开ch11下面的 sudo gedit CMakeFiles.txt 修改libDBoW3.a为libDBoW3.so


 运行错误:terminate called after throwing an instance of 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >' 已放弃 (核心已转储)
2解决:管理员运行:sudo ./feature_training 

slam项目ch12 pcl/octomap 编译注意(只在ch12/dense_RGBD下 build cmake)

在终端使用octovis命令打开.bt文件:octovis octomap.bt
在使用pcl_viewer命令打开.pcd文件:pcl_viewer map.pcd 

使用QT开发slam的pro配置

INCLUDEPATH +=  /usr/include/eigen3 \
                /usr/include/opencv4 \
                /usr/include/sophus \
                /usr/include/glog \
                /usr/include/suitesparse \
                /usr/local/include/ceres \
                /usr/local/include/g2o \
                /usr/local/include/DBoW3 \
                /usr/include/vtk-6.3 \
                /usr/local/include/boost \
                /usr/include/pcl-1.8 \
                /usr/include/octomap \

LIBS +=  /usr/lib/opencv/libopencv_*.so \
         /usr/local/lib/libceres.a \
         /usr/local/lib/libg2o_*.so \
         /usr/local/lib/libDBoW3.so \
         /usr/lib/x86_64-linux-gnu/libcholmod.so \
         /usr/lib/x86_64-linux-gnu/liblapack.so \
         /usr/lib/x86_64-linux-gnu/libblas.so \
         /usr/lib/x86_64-linux-gnu/libcxsparse.so \
         /usr/lib/x86_64-linux-gnu/libglog.so \
         /usr/lib/x86_64-linux-gnu/libvtk*.so \
         /usr/lib/x86_64-linux-gnu/libboost_*.so \
         /usr/lib/x86_64-linux-gnu/libpcl_*.so \
         /usr/lib/liboctomath.so \
         /usr/lib/liboctomap.so \

QT编译运行slam部分章节代码的错误与解决

1错误:
error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’
1解决:
opencv图片路径错误,或 图片的名称和路径改成英文或数字

2错误:
undefined reference to google::LogMessage::stream()' undefined reference togoogle::FlagRegisterer::FlagRegisterer(char const*, char const*, char const*, bool*, bool*)’
2解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/glog
LIBS += /usr/lib/x86_64-linux-gnu/libglog.so

3错误:
error: vtkSmartPointer.h: No such file or directory
#include <vtkSmartPointer.h>
^~~~~~~~~~~~~~~~~~~
3解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/vtk-6.3
LIBS += /usr/lib/x86_64-linux-gnu/libvtk*.so

4错误:
/usr/lib/liboctomath.so.1.8???? error: error adding symbols: DSO missing from command line
4解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/octomap
LIBS += /usr/lib/liboctomath.so

5错误:
reorder_program.cc:(.text+0x396): undefined reference to `cholmod_free_sparse’
5解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/suitesparse
LIBS += /usr/lib/x86_64-linux-gnu/libcholmod.so

6错误:
/usr/lib/x86_64-linux-gnu/liblapack.so.3: error adding symbols: DSO missing from command line
6解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/suitesparse
LIBS += /usr/lib/x86_64-linux-gnu/liblapack.so

7错误:
/usr/local/lib/libceres.a(cxsparse.cc.o): In function ceres::internal::CXSparse::Solve(cs_di_symbolic*, cs_di_numeric*, double*)': cxsparse.cc:(.text+0x92): undefined reference tocs_di_ipvec’
7解决:
在qt的pro中添加共享库
INCLUDEPATH += /usr/include/suitesparse
LIBS += /usr/lib/x86_64-linux-gnu/libcxsparse.so

相关标签: QT Linux

上一篇: opencv

下一篇: Groovy中的特色知识点