slam

泡泡机器人,ORB_SLAM2介绍

醉酒当歌 提交于 2019-12-28 00:27:22
ORB-SLAM2:一种开源的VSLAM方案 泡泡机器人 泡泡机器人SLAM 2017-07-03 泡泡机器人翻译作品 原文:ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras 作者: Raúl Mur-Artal and Juan D. Tardós 翻译:韩昊旻 审核:郑卓祺 编辑:徐武民 周平 欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权 摘要 ORB-SLAM2是基于单目,双目和RGB-D相机的一套完整的SLAM方案。它能够实现地图重用,回环检测和重新定位的功能。无论是在室内的小型手持设备,还是到工厂环境的无人机和城市里驾驶的汽车,ORB-SLAM2都能够在标准的CPU上进行实时工作。ORB-SLAM2在后端上采用的是基于单目和双目的光束法平差优化(BA)的方式,这个方法允许米制比例尺的轨迹精确度评估。此外,ORB-SLAM2包含一个轻量级的定位模式,该模式能够在允许零点漂移的条件下,利用视觉里程计来追踪未建图的区域并且匹配特征点。 我们用29个广泛使用的公共数据测试的结果显示,在大多数情况下,本文方案比此前方案精度更高,此外,我们开源了ORB-SLAM2源代码,不仅仅是为了整个SLAM领域,同时也希望能够为其他领域研究者提供一套SLAM的解决方案。 I

ORB-SLAM(五)优化

纵然是瞬间 提交于 2019-12-26 09:46:52
ORB-SLAM作为单目SLAM,其精度很大程度上决定于帧与帧之间的位姿优化的是否准确。因此优化(optimization)在ORB-SLAM里面扮演了很重要的角色。这一小节探讨一下ORB-SLAM里用到的优化。 ORB-SLAM选用g2o作为图优化的方法,关于g2o可以参考 http://www.cnblogs.com/gaoxiang12/p/5304272.html 。 一、为什么要优化 因为摄像机标定(camera calibration)和追踪(tracking)的精度不够。摄像机标定的误差会体现在重建中(比如三角法重建时),而追踪的误差则会体现在不同关键帧之间的位姿中,和重建中(单目)。误差的不断累积会导致后面帧的位姿离实际位姿越来越远,最终会限制系统整体的精度。 1.1 摄像机标定 单目SLAM文献中一般假设摄像机标定的结果是准确的,并不考虑这个因素带来的误差(大概因为很多时候跑标准的数据集,认为摄像机标定的误差是相似的)。然而对于一个产品,不同类型的传感器对应的标定误差并不相同,甚至有可能差异很大。因此,如果要评估整个系统的精度,这方面的误差必须要考虑进去。 1.2 追踪 无论在单目、双目还是RGBD中,追踪得到的位姿都是有误差的。单目SLAM中,如果两帧之间有足够的对应点,那么既可以直接得到两帧之间的位姿(像初始化中那样),也可以通过求解一个优化问题得到

激光SLAM发展方向及应用

邮差的信 提交于 2019-12-25 15:39:14
1、SLAM简介 location:(L):在给定地图的情况下,估计机器人的位姿 Mapping(M):在给定机器人位姿的情况下,估计环境地图 S LAM: 同时 估计机器人的位姿和环境地图 SLAM解决的问题:(1)机器人在环境中的位姿(2)导航过程中需要的环境地图 1.1 SLAM 分类 静态环境:尺度地图:滤波器、图优化 拓扑地图:大环境 混合地图 SLAM框架 : 前端:地图构建。后端:优化 误差 ~ 0 图优化:Graph-based SLAM Node:机器人的位姿 Edge:节点之间的空间约束关系 Graph:表示SLAM的过程 滤波器:Filter-based SLAM 状态预测(State Prediction)(里程计) 测量预测(Measurement Prediction) 进行测量(Measurement) 数据关联(Data Association) 状态更新 & 地图更新(State & Map Update) 2、2D-激光SLAM 室内:二维激光雷达 室外:三维激光雷达 传感器:惯性测量单元(IMU) -- 测角度 轮式里程计(Wheel Odometry) --测距离 激光雷达(Lidar) 地图类型 :覆盖栅格地图(Occupany Grid Map) 点云地图 帧间匹配算法 ICP(Iterative Closest Point) NDT

空命名空间的意义

↘锁芯ラ 提交于 2019-12-24 01:29:15
一个类有两种成员函数:公有成员函数,外界可以使用类的对象访问;私有成员函数,外界不可以访问,但是可以看到,只能在类内部调用。 空命名空间就可以使得私有的成员函数不被外界看到也不被访问。 例子: *.h namespace robot { class Slam { } } *.cpp namespace robot { namespace { void InitialPose() { } } Slam::Slam() { InitialPose(); } } 来源: https://www.cnblogs.com/mowangaxing/p/11477034.html

计算机视觉大型攻略 —— SLAM(4) ORB SLAM2(四)Loop closing线程与全局BA

余生颓废 提交于 2019-12-19 21:51:10
ORB SLAM2系列的最后一篇,Loop closing线程与全局BA。 开源代码: https://github.com/raulmur/ORB_SLAM2.git 前三篇链接: 系统架构 , 跟踪线程 , Local Mapping线程 参考文献: [1] ORB-SLAM: a Versatile and Accurate Monocular SLAM System [2] ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras [3] Double Window Optimization for Constant Time Visual SLAM [4] Bags of Binary Words for Fast Place Recognition in Image Sequences [5] ORB: an efficient alternative to SIFT or SURF 系统架构 论文[2]中给出的算法框架图。这一篇写Loop Closing线程与全局BA线程。 Loop Closing 线程 当机器人的轨迹完成一个环的时候,称为Loop closure。Loop closing线程需要首先检测到闭环事件,之后优化Pose Graph,启动全局BA线程

计算机视觉大型攻略 —— SLAM(2) Graph-based(图优化)

☆樱花仙子☆ 提交于 2019-12-17 08:47:49
前面介绍了基于EKF的SLAM算法。EKF算法由于状态向量,协方差矩阵的大小随着特征点(路标)的增长而迅速增长,导致其不太适合大场景的应用。本文描述基于图优化的SLAM算法。目前由于SLAM图的稀疏性得到广泛认可,这种SLAM在效果和效率上的优势非常明显。 参考文献: [1] Probabilistic Robotics [2] A Tutorial on Graph-Based SLAM [3] Globally consistent range scan alignment for environment mapping. Autonomous Robots [4] A Framework for Sparse, Non-Linear Least Squares Problems on Manifolds [5] INTRODUCTION TO SMOOTH MANIFOLDS Graph-based SLAM [3]最早提出了采用全局优化的图优化SLAM算法。下图摘自[1] Probabilistic Robotics。用图G(V, E)的方式表述了SLAM问题。 上图中, 表示机器人的位姿(Pose), 表示路标(Landmark)的坐标。 图优化中,顶点是优化项,而边是约束项。优化过程就是通过全局调整优化项,使约束项的和最小。在上图中, Pose(x)与Landmark

Marker based initial positioning with ARCore/ARKit?

最后都变了- 提交于 2019-12-12 08:10:34
问题 problem situation: Creating AR-Visualizations always at the same place (on a table) in a comfortable way. We don't want the customer to place the objects themselves like in countless ARCore/ARKit examples. I'm wondering if there is a way to implement those steps: Detect marker on the table Use the position of the marker as the initial position of the AR-Visualization and go on with SLAM-Tracking I know there is something like an Marker-Detection API included in the latest build of the

R: compilation failed for package 'slam'

为君一笑 提交于 2019-12-12 04:29:35
问题 I am using R 2.15.2 and I want to install the tm package to do some text analysis. I have downloaded the compatible tm package from the CRAN archives. I downloaded tm_0.5-9 I tried to install it using install.packages("/Downloads/tm_0.5-9.tar.gz", repos = NULL, type="source", dependencies = TRUE) and got the following error Installing package(s) into ‘/Documents/R/win-library/2.15’ (as ‘lib’ is unspecified) ERROR: dependency 'slam' is not available for package 'tm' * removing '/Documents/R

gstreamer ubuntu gscam How to separate my camra left and right images

末鹿安然 提交于 2019-12-11 06:03:55
问题 This is my camera picture: My camera is special (Not a pure binocular camera), has one usb interface but two device numbersthe. device:/dev/video0 is about left and right camera images, device:/dev/video1 is the depth of the image combined with left and right cameras, I used gscam (gstream) driven out / dev / video0 is this case:The left and right camera images are in a window inside: How to separate them? divided into two windows, let the left and right camera images are displayed separately

激光SLAM学习笔记

我的梦境 提交于 2019-12-10 12:28:23
位姿表示与旋转矩阵 作业 # include <iostream> # include <Eigen/Core> # include <Eigen/Geometry> using namespace std ; int main ( int argc , char * * argv ) { // 机器人B在坐标系O中的坐标: Eigen :: Vector3d B ( 3 , 4 , M_PI ) ; // 坐标系B到坐标O的转换矩阵: Eigen :: Matrix3d TOB ; TOB << cos ( B ( 2 ) ) , - sin ( B ( 2 ) ) , B ( 0 ) , sin ( B ( 2 ) ) , cos ( B ( 2 ) ) , B ( 1 ) , 0 , 0 , 1 ; //向量、矩阵赋值使用 “<<” // 坐标系O到坐标B的转换矩阵: Eigen :: Matrix3d TBO = TOB . inverse ( ) ; // 机器人A在坐标系O中的坐标: Eigen :: Vector3d A ( 1 , 3 , - M_PI / 2 ) ; // 求机器人A在机器人B中的坐标: Eigen :: Vector3d BA ; // TODO 参照PPT // start your code here (5~10 lines) Eigen :