ORB_SLAM3的安装与测试

部署运行你感兴趣的模型镜像

一、编译环境

gcc 7.5
cmake 3.22 最新的那个
opencv 3.2.0,需要改cmakelist.txt的版本号。包括 DWo2,根目录,ros文件夹下的cmakelist文件
python 2.7

二、安装orb slam3

安装参考链接 link
注意boost是最高版本1.79

三、安装orb slam3 ros

1. Pangolin v0.5(如果orb是1.0版本需要pangolin0.8)

需要gcc 11。安装error问题见https://blog.youkuaiyun.com/Robert_Q/article/details/121690089#commentBox
!重要:每次sudo make install 后需要sudo ldconfig。原因见链接

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout  v0.8
mkdir build
cd build
cmake ..
make -j4 && sudo make install

2. cv_bridge

首选修改ros包里的cv_bridge,不然重连接我没成功过。
方法在sudo apt-get install ros-melodic-cv-bridge后,修改/opt/ros/melodic/shar/cv_bridge/cmake/cv_bridgeConfig.cmake文件,参考https://blog.youkuaiyun.com/weixin_44074560/article/details/122958605
根据自己的opencv版本重新编译:
https://blog.youkuaiyun.com/double_ZZZ/article/details/113254903
这篇可能也有用:
https://blog.youkuaiyun.com/weixin_41120855/article/details/81783081?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4
最后在~.bashrc中把cv_bridge引用上去

source ~/cv_bridge_ws/devel/setup.bash

3. 改代码

https://blog.youkuaiyun.com/qq_45276794/article/details/120603577

4. 按照orb3git仓库里的readme安装

就是运行./build_ros.sh

5. roscore

如果显示rosdep相关的error
source /opt/ros/melodic/setup.bash

小技巧 软链接命令:ln -s 源地址 目的地

四、使用euroc数据集测试

数据集下载地址见上面的link,保存位置与下面的命令行参数一一对应。

# 测试orb3源码好不好使
cd ORB_SLAM3
# Mono
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml /home/wang/SLAM/data/EuRoC/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono

# Monocular-Inertial
./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml /home/wang/SLAM/data/EuRoC/MH01 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/MH01.txt dataset-MH01_monoi

# 测试使用ros好不好使
# v0.4
rosrun ORB_SLAM3 Mono /home/wang/SLAM/orb_slam3/ORB_SLAM3-0.4-beta/Vocabulary/ORBvoc.txt /home/wang/SLAM/orb_slam3/ORB_SLAM3-0.4-beta/Examples/Monocular/EuRoC.yaml
# v1.0
rosrun ORB_SLAM3 Mono /home/wang/SLAM/orb_slam3/ORB_SLAM3-master/Vocabulary/ORBvoc.txt /home/wang/SLAM/orb_slam3/ORB_SLAM3-master/Examples/Monocular/EuRoC.yaml
# Monocular-Inertial
rosrun ORB_SLAM3 Mono_Inertial /home/wang/SLAM/orb_slam3/ORB_SLAM3-master/Vocabulary/ORBvoc.txt /home/wang/SLAM/orb_slam3/ORB_SLAM3-master/Examples/Monocular-Inertial/EuRoC.yaml true

rosbag play ~/SLAM/data/EuRoC/MH_01_easy.bag

结果如下
在这里插入图片描述

五、使用海康威视单目相机测试

海康威视单目相机ROS包及参数标定方法https://blog.youkuaiyun.com/qq_37534947/article/details/116432115#t2
注意这个ros包发的 /hik_cam_node/hik_camera 中没有frame_id参数,暂时没解决这个问题
海康威视单目相机参数,其中camera matrix是内参矩阵,得到
[fx 0 cx]
[0 fy cy]
[0 0 1]
distortion是畸变参数,得到k1 k2 p1 p2 k3.

注意,如果点commit保存相机参数文件失败,需要手动将 /tmp/calibrationdata.tar.gz 解压,其中的 ost.yaml 重命名为 hik_camera.yaml 并保存至 ~/.ros/camera_info 文件夹下面。hik_camera与相机名称一致

下面是在终端中显示的标定结果

**** Calibrating ****
D = [-0.30318064649726423, 0.069185487190414, 0.0012419587934706482, -0.0030126245934705576, 0.0]
K = [700.1655092579188, 0.0, 642.3937890798327, 0.0, 703.867733396442, 341.6599142357398, 0.0, 0.0, 1.0]
R = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P = [475.14862060546875, 0.0, 628.049404518315, 0.0, 0.0, 641.0703125, 338.66773242736235, 0.0, 0.0, 0.0, 1.0, 0.0]
None
# oST version 5.0 parameters
[image]
width
1280
height
720
[narrow_stereo]
camera matrix
700.165509 0.000000 642.393789
0.000000 703.867733 341.659914
0.000000 0.000000 1.000000
distortion
-0.303181 0.069185 0.001242 -0.003013 0.000000
rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
projection
475.148621 0.000000 628.049405 0.000000
0.000000 641.070312 338.667732 0.000000
0.000000 0.000000 1.000000 0.000000

将其中参数提取出来保存为 zhen_mono.yaml (这个名字我起的)文件,具体内容参考链接https://blog.youkuaiyun.com/qq_42025235/article/details/123247083
下面开始测试

记得把orb3文件夹中ros_mono.cc里的topic换成 /hik_cam_node/hik_camera,然后重新./build_ros.sh 编译

# 标定摄像头参数的代码
roslaunch hikvision_ros hik.launch ip_addr:=192.168.1.64 password:=12345678ABC
rosrun camera_calibration cameracalibrator.py --size 8x5 --square 0.026 image:=/hik_cam_node/hik_camera  camera:=/hik_cam_node/hik_camera
# 8*5是指棋盘格中横竖方向黑白对顶角个数,0.026是每格实际宽度0.026m
# 测试使用海康威视单目摄像头运行的代码
roslaunch hikvision_ros hik.launch ip_addr:=192.168.1.64 password:=12345678ABC
rosrun ORB_SLAM3 Mono /home/wang/SLAM/orb_slam3/ORB_SLAM3-0.4-beta/Vocabulary/ORBvoc.txt /home/wang/zhenrobot/calibrationdata/zhen_mono.yaml

结果如下:
在这里插入图片描述

六、ros下输出pose

参考链接 link
除了加代码,还需要改代码:加上判断buf中是否有图像的语句

    if(!Tcw.empty()) {

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### YOLO_ORB_SLAM3 安装教程及相关依赖配置 #### 一、YOLO_ORB_SLAM3安装流程 为了成功安装并运行 YOLO_ORB_SLAM3,需按照以下方法操作: 1. **克隆源码仓库** 需要在 `home` 下打开终端,并执行如下命令来获取项目的源代码: ```bash git clone https://github.com/YWL0720/YOLO_ORB_SLAM3.git ``` 此命令会将整个项目文件夹下载到本地目录中[^1]。 2. **安装 libtorch 库** 接下来需要完成对 PyTorch C++ 前端库 (libtorch) 的安装。这一步对于支持 YOLOv5 物体检测模块至关重要。具体安装方式可以参考官方文档或者通过包管理工具完成。 --- #### 二、YOLO_ORB_SLAM3 的核心特性功能简介 该项目是一个基于 ORB-SLAM3 改进的版本,融合了 YOLOv5 深度学习模型用于实时目标检测。这种组合使得系统能够在动态场景下具备更强的地图构建能力以及定位精度提升的功能[^2]。 --- #### 三、运行环境准备 在 ROS 环境下部署 YOLO_ORB_SLAM3 时需要注意以下几个方面: 1. **ROS Core 启动** 打开一个新的终端窗口启动 ROS 核心服务: ```bash roscore ``` 2. **运行 SLAM 节点** 在另一个终端切换至 YOLO_ORB_SLAM3 文件夹路径后输入以下指令加载必要的参数文件和词典表单: ```bash rosrun YOLO_ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml ``` 3. **播放数据集袋文件** 使用第三个终端回放测试用的数据记录文件以验证系统的正常工作状态: ```bash rosbag play rgbd_dataset_freiburg3_walking_xyz.bag ``` 上述步骤能够帮助开发者快速上手该框架的实际应用案例[^3]。 --- #### 四、常见依赖项及其解决办法 以下是可能涉及的主要软件组件列表及对应的解决方案建议: - **CMake**: 至少需要版本号大于等于 3.10。 - **OpenCV**: 推荐选用 OpenCV4 或更高版次以便充分利用现代图像处理算法优势。 - **Eigen3**: 数学运算所需的线性代数库之一。 - **Pangolin**: 提供图形界面渲染的支持作用。 - **Boost**: 辅助开发过程中各种通用型模板类定义集合。 如果遇到缺失某些特定头文件错误提示,则可以通过 Linux 发行版自带APT-get 工具链轻松补全这些外部资源需求。 --- ### 总结 综上所述,从基础环境搭建直至最终调试完毕均涵盖了较为详尽的操作指南说明。希望以上内容能给初次接触此课题的朋友带来一定启发价值!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值