鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros2机器人foxy版用笔记本摄像头跑单目orb_slam3

    已定时 已固定 已锁定 已移动
    移动平台分享
    ros2 foxy orbslam3
    10
    30
    5.1k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 毛哥成山轮胎机油保养毛
      毛哥成山轮胎机油保养 活跃VIP
      最后由 毛哥成山轮胎机油保养 编辑

      环境:
      Ubuntu 20.04
      ROS2 foxy
      OpenCV 4.4.0(4版本以上的应该都可以)

      安装orb_slam3 搭建环境参考:

      https://mp.csdn.net/mp_blog/creation/editor/129137521

      git clone https://github.com/zang09/ORB-SLAM3-STEREO-FIXED.git ORB_SLAM3
      cd ORB_SLAM3
      chmod +x build.sh
      ./build.sh
      

      这将在lib文件夹中创建libORB_SLAM3.so,只需要安装到这一步,生成 libORB_SLAM3.so 动态库即可。后面的ros程序安装是ros1的,ros1早晚会被ros2替代的,所以后面的ros程序我们就不在安装了。
      2023-03-05 17-10-53屏幕截图.png
      安装ros2 foxy版orb_slam3程序:

      安装相关的ROS2软件包:

      sudo apt install ros-$ROS_DISTRO-message-filters
      

      安装orb_slam3_ros2

      mkdir -p colcon_ws/src
      cd ~/colcon_ws/src
      git clone https://github.com/zang09/ORB_SLAM3_ROS2.git orbslam3_ros2
      

      2023-03-05 17-42-53屏幕截图.png

      按自己的目录结构修改CMakeLists.txt 第五行

      set(ENV{PYTHONPATH} "/opt/ros/foxy/lib/python3.8/site-packages/")
      2023-03-05 17-45-42屏幕截图.png
      修改 FindORB_SLAM3.cmake 第八行为自己的ORB_SLAM3路径,比如我的:

      set(ORB_SLAM3_ROOT_DIR "~/ORB_SLAM3")
      2023-03-05 17-49-37屏幕截图.png
      编译:

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

      编译报错找不到sophus/se3.hpp:
      cd ~/ORB_SLAM3/Thirdparty/Sophus/build
      sudo make install

      重新编译直至成功。

      安装笔记本摄像头驱动:

      sudo apt install ros-foxy-usb-cam //foxy安装摄像头驱动
      ros2 run usb_cam usb_cam_node_exe //启动摄像头节点
      查看摄像头话题:ros2 topic list
      /camera_info
      /image_raw
      /image_raw/compressed
      /image_raw/compressedDepth
      /image_raw/theora
      /parameter_events
      /rosout

      摄像头发布话题为 : /image_raw

      和程序里面的接收话题不一样,需要修改程序内的接收话题名与摄像头发布话题名一致
      2023-03-05 18-08-28屏幕截图.png
      修改 monocular-slam-node.cpp
      2023-03-05 18-09-54屏幕截图.png
      修改好话题后要重新编译。

      运行程序:

      1. 打开终端开启摄像头节点

      ros2 run usb_cam usb_cam_node_exe

      1. 重新打开一个终端开启单目orbslam3程序

      source ~/colcon_ws/install/local_setup.bash

      ros2 run orbslam3 mono ~/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ORB_SLAM3/Examples/Monocular/RealSense_D435i.yaml

      上面命令是ros主程序+ ORBvoc.txt + RealSense_D435i.yaml (摄像头配置文件)路径需要按自己电脑实际路径修改。
      可能我的笔记本配置低,需要等待十几秒才能看到图像
      ros2slam3.png
      看到图像说明程序正常运行了,如果只是一个黑框出不来图像,移动一下笔记本,跑单目静止画面有时出不来图像。
      2023-03-05 18-31-06屏幕截图.png
      我们这里的目的是跑通程序,真正要让程序运行好还需要给摄像头做标定。

      参考网址:

      GitHub - zang09/ORB-SLAM3-STEREO-FIXED: Fixed version of ORB-SLAM3 stereo mode

      GitHub - zang09/ORB_SLAM3_ROS2: ROS2 wrapping package for orbslam3 library

      SciMakerS 1 条回复 最后回复 回复 引用 0
      • SciMakerS
        SciMaker @毛哥成山轮胎机油保养
        最后由 编辑

        @毛哥成山轮胎机油保养 你好,我用的是galactic版本,步骤一样但在编译ROS2包的时候会报错:
        /usr/bin/ld: /home/turtlebot/origin_slam/ORB_SLAM3/lib/libORB_SLAM3.so: undefined reference to DUtils::Random::RandomInt(int, int)' /usr/bin/ld: /home/turtlebot/origin_slam/ORB_SLAM3/lib/libORB_SLAM3.so: undefined reference to DUtils::Random::SeedRandOnce()'
        /usr/bin/ld: /home/turtlebot/origin_slam/ORB_SLAM3/lib/libORB_SLAM3.so: undefined reference to DUtils::Random::SeedRandOnce(int)' /usr/bin/ld: /home/turtlebot/origin_slam/ORB_SLAM3/lib/libORB_SLAM3.so: undefined reference to DBoW2::FORB::L'
        请问你遇到过这个问题么

        毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
        • 毛哥成山轮胎机油保养毛
          毛哥成山轮胎机油保养 活跃VIP @SciMaker
          最后由 编辑

          @SciMaker 按你的提示应该是缺少libORB_SLAM3.so这个文件,你搜一下这个文件看看你机子里面有吗,有的话把他复制到/usr/lib/文件夹下。
          搜索命令:sudo find / -name libORB_SLAM3.so

          SciMakerS T 2 条回复 最后回复 回复 引用 1
          • L
            lightwxz
            最后由 编辑

            @毛哥成山轮胎机油保养 在 ros2机器人foxy版用笔记本摄像头跑单目orb_slam3 中说:

            zang09

            xin@MOSS:~/Code/Test$ colcon build --symlink-install --packages-select orbslam3
            Starting >>> orbslam3
            --- stderr: orbslam3                         
            Traceback (most recent call last):
              File "/opt/ros/rolling/share/ament_cmake_core/cmake/package_templates/templates_2_cmake.py", line 21, in <module>
                from ament_package.templates import get_environment_hook_template_path
            ModuleNotFoundError: No module named 'ament_package'
            CMake Error at /opt/ros/rolling/share/ament_cmake_core/cmake/ament_cmake_package_templates-extras.cmake:41 (message):
              execute_process(/usr/bin/python3.10
              /opt/ros/rolling/share/ament_cmake_core/cmake/package_templates/templates_2_cmake.py
              /home/xin/Code/Test/build/orbslam3/ament_cmake_package_templates/templates.cmake)
              returned error code 1
            Call Stack (most recent call first):
              /opt/ros/rolling/share/ament_cmake_core/cmake/ament_cmake_coreConfig.cmake:41 (include)
              /opt/ros/rolling/share/ament_cmake/cmake/ament_cmake_export_dependencies-extras.cmake:15 (find_package)
              /opt/ros/rolling/share/ament_cmake/cmake/ament_cmakeConfig.cmake:41 (include)
              CMakeLists.txt:18 (find_package)
            
            
            ---
            Failed   <<< orbslam3 [0.32s, exited with code 1]
            
            Summary: 0 packages finished [0.42s]
            
            

            我编译的时候遇到这个问题,可以帮我看看吗

            毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
            • 毛哥成山轮胎机油保养毛
              毛哥成山轮胎机油保养 活跃VIP @lightwxz
              最后由 编辑

              @lightwxz
              这是我编译的过程,你看看对你是否有帮助
              https://blog.csdn.net/m0_73694897/article/details/129137521?spm=1001.2014.3001.5502

              T 1 条回复 最后回复 回复 引用 0
              • SciMakerS
                SciMaker @毛哥成山轮胎机油保养
                最后由 编辑

                @毛哥成山轮胎机油保养 谢谢回复,我的设备中是有个文件的,目前通过改写CMakelists把路径加进去了,问题解决了啦

                T 1 条回复 最后回复 回复 引用 0
                • 26893245742
                  blue moon
                  最后由 编辑

                  Starting the Viewer
                  [ros2run]: Segmentation fault
                  最后一步的时候会这样,是什么原因

                  毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                  • 毛哥成山轮胎机油保养毛
                    毛哥成山轮胎机油保养 活跃VIP @2689324574
                    最后由 编辑

                    @2689324574 程序跑起来了吗?

                    1 条回复 最后回复 回复 引用 0
                    • 11573543821
                      大预言家·福尔摩斯·睿
                      最后由 编辑

                      此回复已被删除!
                      11573543821 1 条回复 最后回复 回复 引用 0
                      • 11573543821
                        大预言家·福尔摩斯·睿 @1157354382
                        最后由 编辑

                        此回复已被删除!
                        1 条回复 最后回复 回复 引用 0
                        • 11573543821
                          大预言家·福尔摩斯·睿
                          最后由 编辑

                          2023-07-16 15-56-18 的屏幕截图.png
                          你好 出现这种错 这是沙玩意儿

                          毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                          • 毛哥成山轮胎机油保养毛
                            毛哥成山轮胎机油保养 活跃VIP @1157354382
                            最后由 毛哥成山轮胎机油保养 编辑

                            @1157354382 你这是跑的单目的程序,需要启动摄像头的,你的主程序已经启动,正在等你的摄像头数据,如果你的摄像头已经启动了,那要检查摄像头发布的话题和你的主程序接收的话题是否一致
                            ros2 topic list 查看话题

                            11573543821 2 条回复 最后回复 回复 引用 0
                            • 11573543821
                              大预言家·福尔摩斯·睿 @毛哥成山轮胎机油保养
                              最后由 编辑

                              @毛哥成山轮胎机油保养 是的 这些我都修改好了,好奇怪

                              1 条回复 最后回复 回复 引用 0
                              • 11573543821
                                大预言家·福尔摩斯·睿 @毛哥成山轮胎机油保养
                                最后由 编辑

                                @毛哥成山轮胎机油保养 我看了一眼里面的代码,好像执行到这一步就没了好像是直接死掉了
                                2023-07-17 14-28-26 的屏幕截图.png
                                后面哪怕我加了 cout 也不显示,但是我用 ./运行 exalmple,就能正常显示,我不懂啊
                                2023-07-17 14-30-23 的屏幕截图.png

                                毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                                • 毛哥成山轮胎机油保养毛
                                  毛哥成山轮胎机油保养 活跃VIP @1157354382
                                  最后由 编辑

                                  @1157354382 m@ubun:~$ ros2 run orbslam3 mono ~/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ORB_SLAM3/Examples/Monocular/RealSense_D435i.yaml

                                  ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
                                  ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
                                  This program comes with ABSOLUTELY NO WARRANTY;
                                  This is free software, and you are welcome to redistribute it
                                  under certain conditions. See LICENSE.txt.

                                  Input sensor was set to: Monocular
                                  Loading settings from /home/m/ORB_SLAM3/Examples/Monocular/RealSense_D435i.yaml
                                  Camera1.k3 optional parameter does not exist...
                                  -Loaded camera 1
                                  Camera.newHeight optional parameter does not exist...
                                  Camera.newWidth optional parameter does not exist...
                                  -Loaded image info
                                  -Loaded ORB settings
                                  Viewer.imageViewScale optional parameter does not exist...
                                  -Loaded viewer settings
                                  System.LoadAtlasFromFile optional parameter does not exist...
                                  System.SaveAtlasToFile optional parameter does not exist...
                                  -Loaded Atlas settings
                                  System.thFarPoints optional parameter does not exist...
                                  -Loaded misc parameters

                                  SLAM settings:
                                  -Camera 1 parameters (Pinhole): [ 382.613 382.613 320.183 236.455 ]
                                  -Camera 1 distortion parameters: [ 0 0 0 0 ]
                                  -Original image size: [ 640 , 480 ]
                                  -Current image size: [ 640 , 480 ]
                                  -Sequence FPS: 30
                                  -Features per image: 1250
                                  -ORB scale factor: 1.2
                                  -ORB number of scales: 8
                                  -Initial FAST threshold: 20
                                  -Min FAST threshold: 7

                                  Loading ORB Vocabulary. This could take a while...
                                  Vocabulary loaded!

                                  Initialization of Atlas from scratch
                                  Creation of new map with id: 0
                                  Creation of new map with last KF id: 0
                                  Seq. Name:
                                  There are 1 cameras in the atlas
                                  Camera 0 is pinhole
                                  slam changed

                                  Starting the Viewer
                                  你的下一步该加载摄像头配置了,看看你的摄像头配置文件路径对吗?

                                  11573543821 1 条回复 最后回复 回复 引用 0
                                  • 11573543821
                                    大预言家·福尔摩斯·睿 @毛哥成山轮胎机油保养
                                    最后由 编辑

                                    @毛哥成山轮胎机油保养 无论我是对的还是错的,都直接结束程序了,莫名其妙的,用ros2来驱动

                                    1 条回复 最后回复 回复 引用 0
                                    • 35322067913
                                      LBZ686
                                      最后由 编辑

                                      9c67e0ac-4e52-4b03-b879-79d6be83701b-Y3`K2GMDN(M}KW)X~1<a class=@WK%2.png" class=" img-fluid img-markdown" />
                                      您好,wo'xian我想结合ros2——orbslam3和gazebo仿真,在订阅到图像后,在运行程序后,orbslam3也显示出来有图像接收到了,但是在可视化界面根本没有图像,这是什么原因,困扰很久了,真心想解决这个问题

                                      毛哥成山轮胎机油保养毛 1 条回复 最后回复 回复 引用 0
                                      • 毛哥成山轮胎机油保养毛
                                        毛哥成山轮胎机油保养 活跃VIP @3532206791
                                        最后由 毛哥成山轮胎机油保养 编辑

                                        @3532206791 你让仿真的小车移动一下,也许就会出来图像,我没有跑过仿真的,但是用实体的摄像头跑单目跑到你这个地方也卡了我很久,有一次无意中移动了一下摄像头图像就出来了。他计算第一帧和第二帧图像,如果摄像头没动,第一帧和第二帧图像是同一个图像,初始化不了,不知道你碰到的问题和我曾经碰到的问题是否一样。

                                        35322067913 2 条回复 最后回复 回复 引用 0
                                        • 35322067913
                                          LBZ686 @毛哥成山轮胎机油保养
                                          最后由 编辑

                                          @毛哥成山轮胎机油保养 哎,我尝试了,不管怎么动小车都没有图像显示,不知道是不是代码方面还有什么其他的问题,还是说只进行话题的订阅还不够,还需要调整其他参数?不明白

                                          1 条回复 最后回复 回复 引用 0
                                          • 35322067913
                                            LBZ686 @毛哥成山轮胎机油保养
                                            最后由 编辑

                                            @毛哥成山轮胎机油保养 还是说需要用这个文件 RealSense_D435i.yaml

                                            1 条回复 最后回复 回复 引用 0
                                            • 第一个帖子
                                              最后一个帖子
                                            皖ICP备16016415号-7
                                            Powered by NodeBB | 鱼香ROS