ORB-SLAM3调用摄像头的使用教程
本文主要以电脑自带摄像头为例,介绍了如何使用ORB-SLAM3调用摄像头的详细过程。
一、测试相机:
1.安装usb_cam驱动
2.在虚拟机设置中选择USB3.1

3.虚拟机连接摄像头

4.选择摄像头
4.1
在“其他位置/计算机/opt/ros/noetic/share/usb_cam/launch”中(可以用cd指令)用以下指令打开usb_cam-test.launch文件:
4.2
修改图中部分来选择摄像头

可以通过以下指令查看所有摄像头接口
一般默认的0为电脑自带摄像头。
5.打开摄像头
二、标定相机
1.安装标定工具
2.打开标定工具
注意:打开标定工具前要先打开摄像头窗口。
3.进行标定
3.1
下载并打印标定板:
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf
3.2
将标定板对着摄像头依次左右、上下、前后、倾斜移动来填充X、Y、Size、Skew条。
3.3
全部变成绿条后,点击CALIBRATE按钮,终端中会出现标定结果,再依次点击SAVE、COMMIT按钮保存标定结果,保存位置在"其他位置/计算机/tmp/calibrationdata.tar.gz"
其中的ost.yaml就是我们要用到的标定数据。
三、调用相机
在ORB-SLAM3文件夹中新建一个cam_slam3文件夹
在cam文件夹中用以下命令新建3个文件:

下面对这三个文件进行配置
mycam.yaml:
由于这次我们用的是电脑摄像头,是单目相机,因此我们将ORB-SLAM3→Examples→Monocular中的TUM1.yaml文件作为模板,将里面的内容全部复制到mycam.yaml中。
再根据上面得到的ost.yaml文件修改mycam.yaml

数据对应关系如下,在ost.yaml中寻找相应的数据:

distortion_coefficients:[k1 k2 p1 p2 k3]
cam_slam3.cpp:
复制以下内容
修改“cv::VideoCapture cap(0);”中的数字来调用不同的摄像头。
CMakeLists.txt:
复制以下内容
其中两处路径部分需要根据编译时的报错内容使用“sudo find / -name 文件名”搜索路径进行添加。可以参考我添加的路径进行修改。


要搜索的文件(仅供参考):
头文件:System.h、BowVector.h、LU、se3.hpp、GeometricCamera.h
库文件:libpangolin.so、libOpenGL.so.0、libGLEW.so.2.1、libORB_SLAM3.so
注意:搜索头文件时报错内容中可能会是一段文件路径,此时只需搜索最后的那个文件名,但在最终添加时需要删除报错提示的路径部分。
修改好这3个文件后,再创建一个build文件夹,进入并右键打开终端,输入以下指令编译:
每次修改这3个文件后都要重新执行一遍上面的编译指令。
运行:
在build文件夹的终端中输入以下指令运行:
TIPS:
用虚拟机运行时不要忘记每次都要连接摄像头。
运行时可能需要等待一段时间才能接收到图像。
参考文章:
http://t.csdn.cn/n1rnt
http://t.csdn.cn/OOUej
http://t.csdn.cn/kNO8f