ROS2安装ORB—SLAM3并用电脑摄像头运行

2024-07-06 1237阅读

安装环境: Ubuntu22.04 ros2 humble

安装参考链接

    • 一、安装ORB-SLAM3(ROS2安装ORB-SLAM3的前提)
      • 1、准备工作
        • 1.1安装依赖
        • 1.2源码下载
        • 2、安装Eugen3
        • 3、安装 Pangolin
        • 4、安装opencv4.4.0
        • 5、安装ORB-SLAM3
          • 5.1 打开 ORBSLAM3 可视化选项(可选)
          • 5.2 安装方法
          • 6、数据集下载,测试
          • 二、ROS2安装ORB-SLAM3
            • 1、编译ORB-SLAM3-ROS2
            • 2、安装摄像头驱动 usb_cam

              一、安装ORB-SLAM3(ROS2安装ORB-SLAM3的前提)

              1、准备工作

              1.1安装依赖
              sudo apt install git cmake gcc g++ mlocate
              
              1.2源码下载

              原版本:ROB-SLAM3源码下载

              修改版本:

              下面链接是适用ROS2的ORB-SLAM3修改版ORB-SLAM3-STEREO-FIXED,本文下载的是此版本

              ORB-SLAM3-STEREO-FIXED下载

              2、安装Eugen3

              sudo apt-get install libeigen3-dev
              

              3、安装 Pangolin

              原博客说使用0.6,但实测报错,而且没找到相关解决方案,最后使用如下版本

              https://github.com/stevenlovegrove/Pangolin

              # 安装
              mkdir build
              cd build
              cmake ..
              make -j4
              sudo make install
              #测试
              ## pangolin→examples→HelloPangolin
              cd Pangolin-master/examples/HelloPangolin
              mkdir build
              cd build
              cmake ..
              make
              # 直接运行./HelloPangolin可能会报错:
              #./HelloPangolin: error while loading shared libraries: libpango_windowing.so:
              # cannot open shared object file: No such file or directory
              #先运行如下指令
              sudo ldconfig
              ./HelloPangolin
              

              出现方块即安装成功

              4、安装opencv4.4.0

              参考博客:https://www.cnblogs.com/xiaoaug/p/17766112.html

              opencv4.4.0下载地址

              opencv_contrib4.4.0下载地址

              主目录新建 opencv 文件夹,把上面解压的 2 个文件夹放入 opencv 文件夹内。

              下载缺少的文件:https://wwtt.lanzouw.com/if60o1cwvv4h 密码:d5fx

              下载完成后解压,将里面的十几个文件放到 opencv_contrib-4.4.0/modules/xfeatures2d/src 文件夹内。

              修改 opencv_contrib-4.4.0/modules/xfeatures2d/test/test_features2d.cpp 文件,将里面的第 51~52 行代码路径改为:

              #include "../../../../opencv-4.4.0/modules/features2d/test/test_detectors_regression.impl.hpp"
              #include "../../../../opencv-4.4.0/modules/features2d/test/test_descriptors_regression.impl.hpp"
              

              修改 opencv_contrib-4.4.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp 文件,将里面的第 7~8 行代码路径改为:

              #include "../../../../opencv-4.4.0/modules/features2d/test/test_detectors_invariance.impl.hpp" // main OpenCV repo
              #include "../../../../opencv-4.4.0/modules/features2d/test/test_descriptors_invariance.impl.hpp" // main OpenCV repo
              

              终端输入

              sudo apt update && sudo apt install -y cmake g++ wget unzip
              cd opencv
              mkdir -p build && cd build
              cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules ../opencv-4.4.0
              make -j4
              sudo make install
              

              编译可能出现如下错误

              opencv/modules/gapi/test/gapi_async_test.cpp:448:26: error: ‘sleep_for’ is not a member of ‘std::this_thread’

              448 | std::this_thread::sleep_for(std::chrono::milliseconds{2});

              | ^~~~~~~~~

              ROS2安装ORB—SLAM3并用电脑摄像头运行解决方案

              找到gapi_async_test.cpp 和test_precomp.hpp,在程序开头加上

              #include 
              

              编译通过

              ROS2安装ORB—SLAM3并用电脑摄像头运行

              5、安装ORB-SLAM3

              5.1 打开 ORBSLAM3 可视化选项(可选)

              到之前下载的ORB-SLAM3源码文件下

              打开 Examples/Monocular 文件夹下的 mono_euroc.cc 文件,找到第 83 行:

              ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR, false);
              

              将最后的 false 改为 true。

              5.2 安装方法
              #这里我直接使用官方的方法,可以安装成功
              cd ORB_SLAM3
              chmod +x build.sh
              ./build.sh
              

              6、数据集下载,测试

              ROS2安装ORB—SLAM3并用电脑摄像头运行下载完成后,解压压缩包,里面有一个 mav0 的文件夹。

              然后在你的文件夹下(随便哪里,只要你能找到),创建一个文件夹叫 dataset。在 dataset 文件夹下再创建一个 MH01 文件夹,然后把刚才下载的 mav0 文件夹放到 MH01 里面去。

              然后打开终端,进入 ORBSLAM3 文件夹内,执行测试:

              **将最后一行指令中的 /home/xiao/dataset/MH01 改成你的 MH01 文件夹的地址。

              cd ORB_SLAM3
              cd Examples
              ./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml /home/xiao/dataset/MH01 ./Monocular/EuRoC_TimeStamps/MH01.txt
              

              ROS2安装ORB—SLAM3并用电脑摄像头运行出现说明安装成功,至此ORB-SLAM3安装完毕,接下来把它在ros2中跑起来

              二、ROS2安装ORB-SLAM3

              1、编译ORB-SLAM3-ROS2

              ROS2版ORB-SLAM3下载地址**我这里是humble版本

              1、安装ros2依赖
              sudo apt install ros-$ROS_DISTRO-vision-opencv && sudo apt install ros-$ROS_DISTRO-message-filters
              2、新建工作空间
              mkdir -p colcon_ws/src
              cd ~/colcon_ws/src
              git clone https://github.com/zang09/ORB_SLAM3_ROS2.git orbslam3_ros2 # 我是直接下载的源码
              3、修改 CMakeLists.txt,将第 5 行代码里的路径修改为你自己本机 ROS2 site-packages 的路径
              set(ENV{PYTHONPATH} "/opt/ros/humble/lib/python3.10/site-packages")
              4、修改 CMakeModules/FindORB_SLAM3.cmake,将第 8 行代码里的路径修改为你自己本机安装的 ORB_SLAM3 的路径
              set(ORB_SLAM3_ROOT_DIR "/home/lzy/colcon_orb_slam3/src/ORB_SLAM3")
              5、编译
              cd ~/colcon_ws
              colcon build --symlink-install --packages-select orbslam3
              

              2、安装摄像头驱动 usb_cam

              github下载地址

              1、创建 usb_cam 工作空间:
              cd ~
              mkdir -p usb_camera/src
              ## 有教程说需要安装依赖,我没有安装实测也没有问题,直接开始编译
              2、编译
              cd ~/usb_camera
              colcon build
              source install/setup.bash
              source ~/.bashrc
              3、运行usb_cam,注意后面选择自己的代码路径;
              这里的params_1.yaml 是摄像头配置参数,可设置帧数,图像大小等。
              ros2 run usb_cam usb_cam_node_exe --ros-args --params-file /home/lzy/usb_camera/src/usb_cam-ros2/config/params_1.yaml 
              4、查看发布的图像,以下两种都行,出现图像则说明图像发布成功
              方法一:(这个方法在我的电脑上非常卡顿)
              ros2 run rqt_image_view rqt_image_view 
              方法二:
              rviz2
              在Add中订阅/image_raw话题中的image
              

              5、修改orb-slam3-ros2代码,把发布的图像放到算法中

              修改/colcon_ws/src/ORB_SLAM3_ROS2-humble/src/monocular/monocular-slam-node.cpp的代码为/image_raw

              ROS2安装ORB—SLAM3并用电脑摄像头运行

              6、重新编译文件

              cd ~/colcon_ws
              colcon build --symlink-install --packages-select orbslam3
              

              7、运行程序

              ros2 run orbslam3 mono /home/lzy/colcon_orb_slam3/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/lzy/colcon_orb_slam3/src/ORB_SLAM3/Examples/Monocular/TUM1.yaml
              

              ROS2安装ORB—SLAM3并用电脑摄像头运行若长时间卡在

              Loading ORB Vocabulary. This could take a while…

              [ros2run]: Killed
              

              原因可能是标定文件地址错误

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]