环境要求: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
重新编译文件:
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
看到图像就说明程序运行正常,如果只是弹出来一个黑框,但是没有图像,就移动一下笔记本摄像头,跑单目相机静止画面有时出不来图像。
到此就可以跑通单目相机程序了,但是要真正让程序运行好还需要给摄像头做标定,具体百度相机标定方法。
标签:Ubuntu20.04,usb,ROS2foxy,SLAM3,install,单目,cam,cd,ORB From: https://www.cnblogs.com/xiaoaug/p/17790458.html