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

Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结

程序员文章站 2022-04-22 12:09:50
文章目录下载第一步,编译g2o编译ORB_SLAM2_modified终于到运行啦参考链接完结撒花下载首先从GitHub上下载,然后解压:有点没看懂这个单独的第一个文件夹要怎么用,就按其他博客上的来吧先把上图中的压缩文件解压:然后就在这里边操作就好。第一步,编译g2o1. 进入g2o_with_orbslam2,对cmakelists.txt下的代码进行注释2. 同时对g2o文件夹下的cmakelists.txt下的代码进行注释3. 回到g2o_with_orbslam2主文件夹,进...



下载

首先从GitHub上下载,然后解压:
Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结
有点没看懂这个单独的第一个文件夹要怎么用,就按其他博客上的来吧
先把上图中的压缩文件解压:Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结
然后就在这里边操作就好。

第一步,编译g2o

1. 进入g2o_with_orbslam2,对cmakelists.txt下的代码进行注释
Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结

2. 同时对g2o文件夹下的cmakelists.txt下的代码进行注释
Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结
3. 回到g2o_with_orbslam2主文件夹,进行编译
cd g2o_with_orbslam2
mkdir build
cd build
cmake ..
make -j
sudo make install

在make过程中出现的报错:
(1) Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结
解决:修改 g2o_with_orbslam2/g2o/types/slam2d/edge_se2_pointxy_bearing.cpp

t.setRotation(t.rotation().angle()+_measurement);
改为
t.setRotation((Eigen::Rotation2Dd)(t.rotation().angle()+_measurement));

(2) Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结
解决:修改g2o_with_orbslam2/g2o/solvers/eigen/linear_solver_eigen.h(注意:eigen3.2.8不用修改此处,以上版本需修改,如3.2.10) 我的eigen版本 3.2.10 。


typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;
改为
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::StorageIndex> PermutationMatrix;

应该就是这两个问题了,然后开始

编译ORB_SLAM2_modified

1. 先编译Thirdparty下的DBoW2
编译之前先把之前编译的build删掉
然后修改一下CMakeLists下的opencv版本
然后就是进去DBoW2
cd Thirdparty/DBoW2/ rm -rf build
mkdir build
cd build
cmake ..
make -j

这一步应该没什么问题的

2. 编译ORB_SLAM2_modified

  • 先修改一下ORB_SLAM2_modified下的CMakeLists下的opencv版本,原来指定的opencv2.4.3,可以根据自己的版本调整,也可以直接把2.4.3删掉,但要注意这里 的opencv版本要和刚刚DBoW2的opencv版本一致。 我是修改成了2.4

由于我用的是2.4,没出现什么问题,直接就编译成功了。

  • 但是在之前试了一下用3.X版本的opencv,会出现如下报错:
    Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结

解决:新版本的OpenCV修改了接口名,将CV_LOAD_IMAGE_UNCHANGED 换为了 cv::IMREAD_UNCHANGED

这应该就没什么问题了!

终于到运行啦

  • 由于文件里的Vocabulary这个文件夹是空的,所以要把ORB_SLAM2下的ORBoc.txt复制过来(注意是解压之后的喔)
  • 利用association.py,操作就和ORB_SLAM2一样,在Examples/RGB-D/下生成数据集对应的association.txt文件。
cd Examples/RGB-D/
python associate.py /home/y/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_xyz/rgb.txt /home/y/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_xyz/depth.txt > associations_loop.txt 

这里注意rgb.txt在前,depth.txt在后。

  • 运行
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM2.yaml /home/y/SLAM/DataSets/TUM/rgbd_dataset_freiburg2_desk /home/y/SLAM/OpenSource/ORB_SLAM2/Examples/RGB-D/associations.txt 

在这报错:Ubuntu18.04下编译安装ORBSLAM2_with_pointcloud_map总结

解决:把ORB_SLAM2_modified下的CMakeLists中的 -march = native 删掉就ok啦

运行之后,如果看到viewer窗口就是红绿蓝,这个时候华东一下鼠标滚轮就可以看到了。

参考链接

https://blog.csdn.net/dxc7216783/article/details/103736825
https://blog.csdn.net/oliongs/article/details/79696376
https://blog.csdn.net/LOVE1055259415/article/details/79903571
https://blog.csdn.net/Night___Raid/article/details/104298423

完结撒花

本文地址:https://blog.csdn.net/weixin_44694952/article/details/108247118