ORBSLAM3+ROS2foxy 调用笔记本摄像头跑单目相机程序 (Ubuntu20.04)

发布时间 2023-10-26 21:30:38作者: 滑稽果

环境要求:Ubuntu 20.04、ROS2 foxy、OpenCV 4.4.0

1. 安装 ORB_SLAM3

首先安装 ORB_SLAM3:https://github.com/zang09/ORB-SLAM3-STEREO-FIXED。

安装方法参考:https://www.cnblogs.com/xiaoaug/p/17766112.html

安装完成并且测试数据集也能够跑通后即可。

2. 下载 ROS2 foxy 版 ORB_SLAM3 程序

安装 ROS2 相关软件包:

sudo apt install ros-$ROS_DISTRO-vision-opencv && sudo apt install ros-$ROS_DISTRO-message-filters

创建 ROS2 工作空间并下载 ORB_SLAM3 ROS2 foxy 版程序:

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

修改 CMakeLists.txt,将第 5 行代码里的路径修改为你自己本机 ROS2 site-packages 的路径:

set(ENV{PYTHONPATH} "/opt/ros/foxy/lib/python3.8/site-packages/")

修改 CMakeModules/FindORB_SLAM3.cmake,将第 8 行代码里的路径修改为你自己本机安装的 ORB_SLAM3 的路径,比如我的就是:

set(ORB_SLAM3_ROOT_DIR "/home/xiao/ORB_SLAM3")

编译项目:

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

如果程序报错,输出:找不到sophus/se3.hpp,则去你的 ORB_SLAM3 文件夹内重新安装 Sophus:

cd /home/xiao/ORB_SLAM3/Thirdparty/Sophus/build
sudo make install

安装完成后重新编译一下程序即可。

3. 安装 usb_cam 驱动

经过测试,如果直接安装:sudo apt install ros-foxy-usb-cam,调用相机的时候会报错,因此选择下载 ROS2 版本 usb_cam 驱动源码进行安装。

下载链接:https://github.com/ros-drivers/usb_cam/tree/ros2

创建 usb_cam 工作空间:

cd ~
mkdir -p usb_camera/src

将刚才在 GitHub 下载的 usb_cam 压缩包解压,重命名为 usb_cam 并放入 usb_camera/src 文件夹下。

安装依赖:

cd ~/usb_camera
rosdep install --from-paths src --ignore-src -y

如果你的 rosdep 没有初始化的话,需要先初始化一下,具体百度。

编译项目:

cd ~/usb_camera
colcon build

打开 usb_camera/src/usb_cam/config/params_1.yaml 文件,修改 video_device、image_width、image_height,我的笔记本电脑相机接口是 /dev/video0,分辨率是 640x480。(一般情况下默认参数就能够跑通)

运行 usb_cam 程序:

cd ~/usb_camera
. install/local_setup.sh
ros2 run usb_cam usb_cam_node_exe --ros-args --params-file /home/xiao/usb_camera/src/usb_cam/config/params_1.yaml

如果报错:Gtk-Message: Failed to load module "canberra-gtk-module",是缺少一个依赖,安装一下即可:sudo apt-get install libcanberra-gtk-module

打开另一个终端,查看是否能显示摄像头画面:

cd ~/usb_camera
. install/local_setup.sh
ros2 run rqt_image_view rqt_image_view

若能正确显示,则程序安装成功。

4. 运行单目 ORB_SLAM3_ROS2 程序

先运行 usb_cam 程序,将摄像头启动起来(如果你上面的程序没有关闭的话,就不需要再运行了):

cd ~/usb_camera
. install/local_setup.sh
ros2 run usb_cam usb_cam_node_exe --ros-args --params-file /home/xiao/usb_camera/src/usb_cam/config/params_1.yaml

修改 colcon_ws/src/orbslam3_ros2/src/monocular/monocular-slam-node.cpp 中的图像话题名称为 /image_raw

img

重新编译文件:

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

运行程序:

cd ~/colcon_ws
. install/local_setup.sh
ros2 run orbslam3 mono ~/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ORB_SLAM3/Examples/Monocular/TUM1.yaml

看到图像就说明程序运行正常,如果只是弹出来一个黑框,但是没有图像,就移动一下笔记本摄像头,跑单目相机静止画面有时出不来图像。

img

到此就可以跑通单目相机程序了,但是要真正让程序运行好还需要给摄像头做标定,具体百度相机标定方法。