一、安装eigen
方法一、命令行安装
sudo apt install libeigen3-dev
一般情况下,方法二同理,eigen会默认安装到/usr/include或者/usr/local/include/下的eigen目录下,需要执行复制命令,将Eigen文件夹及其内容复制到/usr/inlcude/或者/usr/local/include/下:
如果在 /usr/include
sudo cp -r /usr/include/eigen3/Eigen /usr/include
如果在 /usr/local/include
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
关于命令的说明:
因为eigen3 被默认安装到了usr/local/include里了(或者是usr/include里,这两个都差不多,都是系统默认的路径),在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。上面指令将usr/local/include/eigen3文件夹中的Eigen文件递归地复制到上一层文件夹(直接放到/usr/local/include中,否则系统无法默认搜索到 -> 此时只能在CMakeLists.txt用include_libraries(绝对路径了))
方法二、源码安装
http://eigen.tuxfamily.org/index.php?title=Main_Page
选择合适的版本。
cd eigen-3.2.10
mkdir build
cd build
cmake ..
sudo make install
二、安装pangolin
1. 安装pangolin依赖项以及安装过程中用到的工具
ctrl+alt+t打开终端,依次输入命令,安装相关依赖和工具
sudo apt update
sudo apt upgrade
sudo apt install libglew-dev cmake libboost-dev libboost-thread-dev libboost-filesystem-dev
3. 下载pangolin源文件
进入安装目录后使用git工具下载pangolin源文件
官方github下载
git clone https://github.com/stevenlovegrove/Pangolin.git
镜像gitee下载(推荐使用,或者自行在gitee上搜索一个下载地址,基本上都是克隆的github上面官方的代码,选择一个较新的就行)
git clone https://gitee.com/krisnat/pangolin.git
4.安装pangolin
依次输入命令,进入刚刚下载好的源文件目录,并进行安装
makdir build && cd build
cmake ..
sudo make -j8
-j后面的数字表示make过程使用的cpu线程数,数字越大,速度越快,根据自己的电脑配置自行调整,命令nproc看线程数
sudo make install
若要卸载,执行命令
sudo make uninstall
手动删除
sudo rm -r libeigen*
如果用VS Code需要在tasks.json的args添加lGL、lGLEW、lpangolin。
如果使用CMakeLists.txt,需要添加
cmake_minimum_required(VERSION 3.0.0)
project(slam VERSION 0.1.0)
add_executable(slam main.cpp SourceFile/EigenGeometry.cpp SourceFile/VisualizeGeometry.cpp)
cmake_policy(SET CMP0072 NEW)
include_directories( "/usr/include/eigen3" )
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIRS})
target_link_libraries(slam ${OPENGL_LIBRARIES})
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
target_link_libraries(slam ${GLEW_LIBRARIES})
find_package(Pangolin REQUIRED)
include_directories(${Pangolin_INCLUDE_DIRS})
target_link_libraries(slam ${Pangolin_LIBRARIES})