ROS noetic版本安装使用ORB_SLAM2

项目要用到视觉导航和建图,但是ROS noetic版本安装全桌面版直接安装了opencv4.2,而ORB_SLAM2仅仅支持到opencv3+,故需要进行部分修改,下面记录了全过程,整理后备用及给他人一些思路。

以下三个文章给了较大启发:

https://blog.csdn.net/Carminljm/article/details/86353775
https://www.jianshu.com/p/f39bf76cfc61
https://blog.csdn.net/K4762/article/details/105270600

步骤:

检查自己ROS noetic是否是完整版,然后按序执行:

1.安装git cmake 和一些库

sudo apt-get install git cmake
sudo apt-get install libblas-dev liblapack-dev

2.安装Pangolin

sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
sudo apt-get install libpython2.7-dev
sudo apt-get install build-essential
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make

3.安装OpenCV 注:ROS noetic已经安装了opencv4.2,此步骤不必执行

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

OpenCV
OpenCV的版本:Required at leat 2.4.3. Tested with OpenCV 2.4.11 and OpenCV 3.2.
我装的是3.2.0

下载完后解压,进入OpenCV文件夹进行编译安装(opencv下哪问题好像都不大)

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

4.Eigen3
我发现这一趟安装下来,用pkg-config --modversion eigen3查看eigen3的版本已经有3.2.92,就没继续装eigen3了
版本要求:Required at least 3.1.0.
据说:下载3.2.10版本,如果用3.3.x版本可能会造成ORB-SLAM2编译失败,因为eigen3.3.4版本修改了文件目录结构。

5.ORB_SLAM2

cd catkin_ws
git clone https://github.com/raulmur/ORB_SLAM2.git 
cd ORB_SLAM2
chmod +x build.sh
nano build.sh 

此步骤可以将build.sh的make -j改成make 防止多线程编译错误或者死机。

./build.sh

此时可能会出现typedef allocator的错误,按照下述内容修改:

https://github.com/raulmur/ORB_SLAM2/pull/585/commits/d5c04468ce85d600f8a0a23fa280b0153fe115e0

找到

Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;

改为:

Eigen::aligned_allocator<std::pair<KeyFrame* const, g2o::Sim3> > > KeyFrameAndPose;

然后继续

./build.sh

此时,返回到~目录下

gedit .bashrc

写入export

ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/(user)/catkin_ws/ORB_SLAM2/Examples/ROS

接着去编译build_ros.sh

chmod +x build.sh

可以同上步一样,将build_ros.sh的make -j改成make

nano build_ros.sh

在/Examples/ROS/ORB-SLAM2/CMakeLists.txt文件下修改 加上 -lboost_system(我没加这个的时候会有关于stl的错误)

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system  #此处
)
./build_ros.sh

编译会产生关于opencv的错误,类似"FATAL_ERROR "OpenCV > 2.4.3 not found."的错误

解决办法:

①修改cmakelist.txt,将opencv3.0改为4.2,我遇到两个地方,一个是orbslam2文件夹,另一个好像是DBoW2文件夹,可以根据错误信息查看。

 find_package(OpenCV 4.2 QUIET)
 if(NOT OpenCV_FOUND)
    find_package(OpenCV 2.4.3 QUIET)
    if(NOT OpenCV_FOUND)
       message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
    endif()
 endif()

②多个文件出现#include <opencv/cv.h>的错误
这个问题主要是opencv4更换了一些定义,需要替换为:

#include<opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui_c.h>

③CV_LOAD_IMAGE_UNCHANGED的错误
同样的,在opencv4中名称也改了不少,对应处替换为:

cv::IMREAD_UNCHANGED

以上3点全部修改后,可以正常

./build_ros.sh

至此,编译完成

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值