由于项目需要手动安装平板系统进行软件布置,将构建方法写入如下:
1.ROS系统部署
力推鱼香肉丝,避免链接超时等一系列问题
wget http://fishros.com/install -O fishros && . fishros

第一步输入1,一键安装ROS版本,ubuntu20.04对应的ROS版本为 noetic
第二步安装完ROS后一定要 安装rosdep(为ROS安装运行依赖的工具)
2.ORBSLAM2的附属包编译
pangolin0.5 下载链接
pangolin运行需要的前置依赖 libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev ,但是一般ROS环境是自带了的
前置安装快捷指令
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
编译命令
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install
opencv3.4.5 下载链接 (因为ubuntu20.04的ROS自带opencv4,但是稠密建图版本的ORBSLAM2编译环境依赖opencv3.x,github有移植到opencv4的ORBSLAM2 传送门
opencv3.4.5的依赖,下面有快捷安装命令
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
注:可能遇到报错
无法定位软件包 libjasper-dev
解决方案:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
编译安装指令
cd opencv3.4.5
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.5 -D CMAKE_BUILD_TYPE="Rlease" -D OPENCV_GENERATE_PKGCONFIG=ON ..
make
sudo make install
编译完成后需要让ORBSLAM2编译的时候找对正确的opencv版本,因为现在系统存在opencv3和4两个版本
# 第一步
sudo gedit /etc/ld.so.conf.d/opencv.conf
输入:
/usr/local/opencv3.4.5/lib
# 第二步
sudo ldconfig
sudo gedit ~/.bashrc
在末尾输入:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opencv3.4.5/lib/pkgconfig
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/opencv3.4.5/lib
# 第三步
source ~/.bashrc
pkg-config --modversion opencv
出现3.4.5即可
pkg-config --modversion opencv4
出现4.2.0是ros中的版本
注意:!!!在find(OpenCV REQUIRED)前输入:set(CMAKE_PREFIX_PATH “/usr/local/opencv3.4.5”)指定opencv3的环境路径,否则会找不到
3.ORBSLAM2_with_pointcloud_map编译执行,及其依赖包编译
ORBSLAM2_with_pointcloud_map 下载链接
依赖包g2o的编译
cd g2o_with_orbslam2
mkdir build
cmake ..
make
sudo make install
下面是一个常见的编译报错:

前面所说的怕ORBSLAM2找不到对应的依赖环境
1.将这个-march=native删除,不然后续会出现核心已转储的报错,其实主要是g2o的第三方库里面的需要删除,
但是避免问题,每一个CMakeLists.txt文件里的-march=native我都删除了
2.为了避免pcl的编译问题,在第三行加
set( CMAKE_CXX_STANDARD 14)
3.opencv3.4.5配置,在find_package(OpenCV 3.0 REQUIRED)上一行添加,其实每一个文件中用到opencv都得这样设置
set(CMAKE_PREFIX_PATH "/usr/local/opencv3.4.5")
4.Eigen3 改为对应的版本
find_package(Eigen3 3.3.7 REQUIRED)
5.pcl的版本
find_package( PCL 1.10 REQUIRED )
编译Thirdparty包
不建议直接跑build.sh文件,出现问题不好改
打开build.sh文件,自己逐个编译,有问题也好找
DBoW2里的CMakeLists.txt文件也需要改
这个-march=native删除
在find_package(OpenCV 3.0 REQUIRED)上一行添加
set(CMAKE_PREFIX_PATH “/usr/local/opencv3.4.5”)
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
g2o里的CMakeLists.txt文件也需要改 这个-march=native删除
cd Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
编译ORBSLAM2包
cd ORB_SLAM2_modified/
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
ROS下编译ORBSLAM2包
gedit ~/.bashrc
添加一下命令,如果以前配置过ORB_SLAM2的ROS的话,需要将以前的配置注释掉
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/你的目录/ORB_SLAM2_modified/Examples/ROS
保存,关闭
source ~/.bashrc
sudo updatedb
rospack profile
echo ${ROS_PACKAGE_PATH}
会出现你刚刚加的ros路径
最后就成功了!看图->

这里有常见的报错解决合集: 传送门1





