运行前提:

标定摄像头(如果只是想跑通程序,这步可以跳过,等程序跑通了回头在标定也行的)

ros1 noetic摄像头标定_JT_BOT的博客-CSDN博客

已经安装好orb_slam3,没有安装好可以参考我以前的安装过程

想学ORB_SLAM3,先从编译开始,编译通不过,一切都是浮云_JT_BOT的博客-CSDN博客

一 编辑yaml文件(此步骤如果只是为跑通程序可以跳过,用程序自带的yaml文件)

找到相机标定后生成的calibrationdata文件,在文件最后有2个文本文件,我这里的文本文件是

ost.txt和ost.yaml,如下图所示:

orb-slam3目录结构,在主目录内

在ORB_SLAM3内新建文件夹cam_slam3,把标定文件ost.yaml复制进此文件夹。

参考TUM1.yaml修改ost.yaml格式。

注意:ORB Parameters和Viewer Parameters下面的不需要修改

2.camera_matrix:

对应:

# Camera calibration and distortion parameters (OpenCV)

Camera1.fx:

Camera1.fy:

Camera1.cx:

Camera1.cy:

distortion_coefficients:[k1   k2   p1   p2   k3]
参数值对应。其中ORB参数与Viewer参数不变。

修改后的 ost.yaml

%YAML:1.0#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
File.version: "1.0"Camera.type: "PinHole"# Camera calibration and distortion parameters (OpenCV)
Camera1.fx: 621.19783
Camera1.fy: 624.29785
Camera1.cx: 327.35984
Camera1.cy: 238.12506Camera1.k1: 0.112341
Camera1.k2: -0.170053
Camera1.p1: -0.004971
Camera1.p2: 0.003109
Camera1.k3: 0.000000# Camera frames per second
Camera.fps: 30# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1# Camera resolution
Camera.width: 640
Camera.height: 480#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000# ORB Extractor: Scale factor between levels in the scale pyramid
ORBextractor.scaleFactor: 1.2# ORB Extractor: Number of levels in the scale pyramid
ORBextractor.nLevels: 8# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1.0
Viewer.GraphLineWidth: 0.9
Viewer.PointSize: 2.0
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3.0
Viewer.ViewpointX: 0.0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500.0

在cam_slam3内新建cam_slam3.cpp

// cam_slam3.cpp
// 该文件将打开你电脑的摄像头,并将图像传递给ORB-SLAM3进行定位// opencv
#include <opencv2/opencv.hpp>// ORB-SLAM的系统接口
#include "System.h"
#include <string>
#include <chrono>   // for time stamp
#include <iostream>using namespace std;// 参数文件与字典文件
// 如果你系统上的路径不同,请修改它
string parameterFile = "../ost.yaml";//这个文件如果没有可以用程序里面的yaml文件代替,比如TUM1.yaml
string vocFile = "../../Vocabulary/ORBvoc.txt";int main(int argc, char **argv) {// 声明 ORB-SLAM2 系统ORB_SLAM3::System SLAM(vocFile, parameterFile, ORB_SLAM3::System::MONOCULAR, true);// 获取相机图像代码cv::VideoCapture cap(0);    // change to 1 if you want to use USB camera.// 分辨率设为640x480cap.set(cv::CAP_PROP_FRAME_WIDTH, 640);;//设置采集视频的宽度cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480);//设置采集视频的高度// 记录系统时间auto start = chrono::system_clock::now();while (1) {cv::Mat frame;cap >> frame;   // 读取相机数据auto now = chrono::system_clock::now();auto timestamp = chrono::duration_cast<chrono::milliseconds>(now - start);SLAM.TrackMonocular(frame, double(timestamp.count())/1000.0);}return 0;
}

CMakeLists.txt

# CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(cam_slam3)
find_package(OpenCV 4 REQUIRED) #opencv根据版本填写版本号
#包含头文件
include_directories(${OPENCV_INCLUDE_DIRS}
#非标准头文件包含写法,根据编译报错用: sudo find / -name System.h 搜每一个缺少的头文件路径添加在下面
~/ORB_SLAM3/include
~/ORB_SLAM3
/usr/include/eigen3
~/ORB_SLAM3/include/CameraModels
)
#生成可执行文件
add_executable(cam_slam3 cam_slam3.cpp)
#链接库文件
target_link_libraries(cam_slam3 ${OpenCV_LIBS}
#非标准的链接库文件写法,根据编译报错用:sudo find / -name libpangolin.so 搜缺少的库文件
#按绝对路径添加缺少的库文件
/usr/local/lib/libpangolin.so
/lib/x86_64-linux-gnu/libOpenGL.so.0
/lib/x86_64-linux-gnu/libGLEW.so.2.1
~/ORB_SLAM3/lib/libORB_SLAM3.so)

文件结构

编译:

cd ORB_SLAM3/cam_slam3
mkdir build
cd build
cmake ..
make

 编译完成 ./cam_slam3 运行单目程序

看到这个图像说明运行成功。

此实现难点在于编译,需要通过编译报错用 sudo find / -name 文件名  搜索缺少的头文件和库文件,通过不断调整CMakeLists.txt直至成功。

参考:

USB摄像头运行ORB-SLAM2_利用弹幕usb摄像头运行slam2_星野黎明的博客-CSDN博客

直接用笔记本摄像头跑orb_slam3单目程序 不再跑数据集相关推荐

  1. ROS USB摄像头配置(单目和双目)

    ROS USB摄像头配置(单目和双目) 原文 目前使用ROS和PX4固件控制无人机飞行,现在需要在ROS中加入USB摄像头,并且是两个.目前根据其它博客,以及ROS WIKI,对该流程进行记录 参考: ...

  2. 【机器人原理与实践(二)】单目摄像头标定与单目测距

    文章目录 摄像头标定 4.1 单目相机的建模 4.1.1 图像坐标系到像素坐标系的转换 4.1.2相机坐标系到图像坐标系的转换 4.1.3 合并矩阵 4.2 固定向下摄像头标定 4.3 俯视摄像头标定 ...

  3. 笔记本 Ubuntu 16.04 单目ORB_SLAM2 + ROS + usb_cam 环境的搭建与实现(地图的构建)

    文章目录: 1 系统和摄像头准备 1.1 首先更新apt库 1.2 安装git 1.3 安装cmake 2 安装Eigen 3 安装Pangolin 3.1 安装OpenGL的依赖 3.2 别的一些库 ...

  4. ROS环境下跑orb-slam2 单目相机

    1.配置环境.安装ROS ubuntu16.04 + kinetic 2.安装依赖 cmake opencv  Eigen3: sudo apt-get install libeigen3-dev 3 ...

  5. ubuntu各种版本上测试usb摄像头(支持单目摄像头、乐视、realsense等)是否正常工作

    一.硬件要求: ①ubuntu20.04(ubuntu18.04的话,需要把下面出现的noetic改为melodic:ubuntu16.04的话,需要把下面出现的noetic改为kinetic:) ② ...

  6. c语言小程序跑马灯,微信小程序实现跑马灯效果(完整代码)

    在微信小程序 里实现跑马灯效果,类似滚动字幕或者滚动广告之类的,使用简单的CSS样式控制,没用到JS,效果如下图: Wxml代码:一个人活着就是为了让更多的人更好的活着! Wxss代码:/*首页跑马灯 ...

  7. 一分钟让你了解人脸识别套件中的双目、单目、3D结构光摄像头的区别以及详细介绍

    宁远电子提供的人脸识别模组可支持双目摄像头和3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比单目的成本高,区别在哪里,他们的适用于哪些场景呢?在此,宁远电子技术工程师就为大家详细解析,帮助大 ...

  8. 单目和双目摄像头到底有神马差?

    单目和双目摄像头到底有神马差? 很多对智能驾驶感兴趣的朋友都知道,无人驾驶的技术可以分为三大模块,感知.认知和控制.这个顺序其实也正是一项操作进行的顺序,首先需要对环境进行准确的感知,然后对信息进行处 ...

  9. ROS下使用单目/双目摄像头发布图像话题

    1.此贴记录一下作者在ros中使用摄像头的方法,如有错误和不足请在评论区批评指正,手上有三种摄像头(1.单目摄像头 2.双目摄像头_俩usb端口 3.双目摄像头_单usb端口)不同摄像头的launch ...

最新文章

  1. selenium--iframe之模拟qq空间登录
  2. 关于Mybaits,我总结了10种通用的写法
  3. vim编辑器高级应用
  4. 侍魂胧月传说服务器维护,侍魂胧月传说手游2021年6月2日停机维护更新详解
  5. 云存储领域的那些安全难题与解决途径
  6. 机器学习的理论知识点总结
  7. js 数组移除_2020前端面试--常见的js面试题
  8. 关于M1芯片版Mac安装Photoshop后储存psd时出现程序错误提示的解决方法
  9. iso12233测试方法_详解ISO12233 Chart(分辨率测试标板)使用方法
  10. 网上书店销售管理系统java_网上书店销售管理系统的设计与实现(JSP,SQLServer)
  11. javascript原生脚本代码 飘浮广告
  12. uniapp遮罩_APP新手引导遮罩层设计与UI视觉界面设计欣赏
  13. play_framework框架--教程(一)
  14. 大疆aeb连拍_一张图带你轻松读懂摄影必备专业术语~
  15. 381个Android开源项目
  16. K8S环境部署jaeger-all-in-one
  17. 类加载初始化顺序(nullpoint异常)
  18. 数字孪生钢厂开发可视化系统-解决方案
  19. 青少年python编程比赛试题答案_Python编程及应用-中国大学mooc-试题题目及答案
  20. 启元世界获 NeurIPS 2018 多智能体竞赛Learning组冠军,决策智能平台价值凸显...

热门文章

  1. 顶级高手是如何做市场调研的
  2. java模拟加速匀速减速_步进电机加速-匀速-减速运行程序(C51源程序)
  3. win7操作系统双网卡同时上内外网
  4. 小程序锚点定位(通讯录)
  5. AIR32F103(八) 集成Helix MP3解码库播放MP3
  6. VS code 开启Livereload 失败
  7. Linux文件信息中的rwx表示什么?Linux权限理解
  8. 那个把说了20年大话都实现了的男人,这次说要制造芯片,我信了
  9. 7 PKI和密码应用
  10. 数电基础:时序逻辑电路