当前位置: 首页 > 编程日记 > 正文

ptam tracking

并行追踪与制图(Parallel Tracking and Mapping)简称PTAM,于2007年由英国牛津大学主动视觉实验室的Georg Klein和David Murray提出。PTAM在机器导航,机器探索,人机互动,三维重建等方面都有应用。在这之前已经有人尝试用slam(simultaneous localization and mapping)算法来进行机器探索。PTAM系统主要是通过双核处理器将追踪和制图分开在两个线程中来实现。追踪线程用来对相机的位姿进行实时的追踪,制图线程用来绘制从视频帧中观察得到的特征点以形成三维的地图,主要是为我们的追踪线程提供数据源,不要求其为实时的操作。两个独立线程的应用,使得一些计算复杂的优化技术在不要求实时性的情况下得以运行,从而为机器导航提供了精确性和鲁棒性。




1、同时定位与地图创建允许机器人在未知环境中,依靠自身所带的传感器递增式地创建环境地图,并同时给出机器人所在位置。

2、移动机器人的定位有两种类型:全局定位/绝对定位(Global/Absolute Localization)位置跟踪(Position Tracking)
全局定位:给定环境地图,在没有其他先验信息的情况下,机器人依靠自身所带来的传感器获得的信息确定其在地图中的位置。全局定位用来解决“Lost Robot”问题,对机器人位置进行初始化。全局定位必须要求有一个预先知道的环境地图。匹配技术或数据关联方法常用于移动机器人全局定位,通过比较当前的局部地图信息与全局地图信息,确定机器人的位置。但是由于环境的近似性和对称性,一般的匹配方法不能保证有效地解决全局定位问题。目前,基于贝叶斯滤波技术的概率方法成为解决全局定位问题的流行方法。通过递归地计算在机器人位置空间上的概率分布,来确定机器人在工作环境中最可能的位置。
位置跟踪:基于一定的初始信息,对机器人的位置进行跟踪估计。一般地,可将机器人位姿看作是系统状态,运用滤波技术对机器人的位姿进行滤波估计。最常用的方法是卡尔曼滤波。卡尔曼滤波是一种经典的线性最优递归估计算法。它将机器人的位姿表示为一个高斯概率分布函数,均值方差即为机器人的位姿估计及其估计误差。卡尔曼滤波只能处理高斯线性问题,但是机器人的运动方程及观测方程一般都是高度分线性的,这大大限制了卡尔曼滤波算法的应用。因此,运用各种不同的近似技术进行次优的滤波估计成为重要的定位手段
3、同时定位与地图创建(SLAM)
SLAM的动机在于不需要先验地图而能精确定位,并且它维持的地图能够随环境的变化进行扩展和自适应。SLAM通过机器人的传感器探测环境特征,然后由机器人的位姿估计特征位置,并把地图特征存入地图。当特征被重复观测时,特征位置的不确定性逐渐降低,此时可用这些特征位置去提高机器人的位姿估计,使得能够得到收敛的位姿估计与环境地图
****当机器人探索位置区域得到特征的相对观测时,所有特征位置的估计都是相关的,因为他们都是基于共同的机器人位姿估计误差****
****相关性是得到满足收敛性估计结果的关键因素,处理过程中特征相关性维持的越好,将会得到更好的结果。****
****基于状态空间的SLAM实际上是一个联合状态向量的估计问题,该联合状态向量包括机器人的位姿x观测到的的静态特征的位置m。在这种比较特殊的结构中,过程模型/运动模型(Process Model/Motion Model)只影响机器人位姿状态,而观测模型(Observation Model)只和单个机器人位姿特征有关。****
****几乎所有的状态估计算法都会遇到数据关联的问题。SLAM中,数据关联用来建立观测与地图中已有特征的关系,但是由于机器人位姿的不确定、特征密度的变化、环境中动态目标的干扰及观测中虚假成分的存在使得关联是一个非常困难、复杂的过程。数据关联算法包含以下两个基本方面:(1)用来检验传感器观测地图特征相容性的条件;(2)从满足相容性的特征中挑出最佳匹配的选择标准。****
****延时地图创建:只有距离和方位的单个信息不足以确定一个特征的位置,需要机器人多个位置的多个测量才能确定。但是,单个测量产生了一个分高斯分布特征,而多个测量后需要得到一个近似的高斯分布。为了得到近似的高斯分布特征位置估计,可以采用延时初始化,并在延迟的时间段积累测量数据。这种延时策略的思想是通过积累信息,延时做出决策以提高鲁棒性。为了保证延时数据的一致性,需要在状态向量中以增广的方式记录每一观测时刻的机器人位姿,并采用一个辅助向量来记录对应每一个机器人位姿的观测。****
****环境地图模型:典型的环境地图表示方法为特征地图,环境模型为由特征点构成的环境地图,每个特征点用它在全局坐标系中的位置Li来表示。因此,环境地图可表示为M=[L1,L2...Ln]。由于SLAM是解决未知环境中的定位导航问题,所以地图创建的过程本质上是一系列特征点的位置估计问题,并且地图是不断更新的,因为特征点的位置将和机器人位姿一起进行估计与更新。****
****机器人位置模型:定位是对机器人的位姿进行估计的过程,也就是确定机器人在全局坐标系中的位置及车体方向的过程。

相关文章:

【ACM】杭电OJ 2050

直线&#xff1a; 平行线 折线 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> using namespace std; int main () {int n,m;scanf("%d",&n);while…

ASP.NETCore学习记录(一)

ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.NETCore是一个新的开源和跨平台的框架&#xff0c;用于构建如Web应用、物联网&#xff08;IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET …

ptam程序流程

程序运行基本流程&#xff1a;Step1: System::System(){ 1、注册一系列命令、添加相对应的功能按钮。 2、创建摄像机mpCamera new ATANCamera("Camera"); 实现的功能包括&#xff1a;加载camera.cfg配置文件中的摄像机内参&#xff08;mvFocal[0]、mvFocal[1]、mvCe…

js / jquery 零散收集

2019独角兽企业重金招聘Python工程师标准>>> <select id"typeSelector" οnchange"choiceoption(this.options[this.options.selectedIndex])"> <option id"xx" value"a">A</option> </select> &…

【ACM】杭电OJ 2057

思路&#xff1a; 本题注意十六进制的输入输出格式。 注意&#xff1a; 1.别忘了需要用__int64&#xff0c;因为数据比较大&#xff1b; 2.两数相加为负数的时候&#xff0c;想着分开考虑。 #include <iostream> #include <cstdio> #include <cstring> #…

OpenCV学习系列教程第五篇:测试和提高代码的效率

Opencv-Python学习系列教程第五篇 来自opencv-python官方学习文档&#xff0c;本人谨做翻译和注释&#xff0c;以及一些自己的理解 本文由作者翻译并进行代码验证&#xff0c;转载请注明出处~ 官方文档请参阅&#xff1a;https://docs.opencv.org/4.0.1/dc/d71/tutorial_py_opt…

ORB-SLAM论文翻译

ORB-SLAM: a Versatile and Accurate Monocular SLAM System 原文发表于&#xff1a;IEEE Transactions on Robotics (Impact Factor: 2.43). 10/2015 摘要&#xff1a; 本文主要讲了ORB-SLAM&#xff0c;一个基于特征识别的单目slam系统&#xff0c;可以实时运行&#xff0…

UVa11300 - Spreading the Wealth

题意 n个人围成一圈&#xff0c;每个人都有一定数量的金币&#xff0c;金币总数可被n整除&#xff0c;现可将手中金币给左右相邻的人&#xff0c;最终使每人手中的金币数相等&#xff0c;求最少转移的金币数量。 思路 设a[i]给了a[i-1]x1个金币&#xff0c;从a[i1]拿到x2个金币…

【ACM】杭电OJ 1862

用了三个快速排序的子函数进行排序&#xff0c;排序结束后&#xff0c;再从头循环&#xff0c;判断成绩或者姓名是否相同。 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <alg…

Custom Client Side Drag and Drop Behavior in ASP.NET AJAX

这是我的一篇在http://aspalliance.com/上的英文文章&#xff0c;限于版权协议中的排他性条款&#xff0c;这里只能给出一部分摘要引用。有兴趣的朋友可以到这里看到完整的全文&#xff1a;《Custom Client Side Drag and Drop Behavior in ASP.NET AJAX》。 Published: 19 Jun…

SLAM的开源以及在移动端AR的适用分析

当前的开源方案 当下部分总结引用自blog:http://blog.csdn.net/OnafioO/article/details/73175835文章总结很好没本文关于其在移动端方面加以总结&#xff0c;希望大家参与讨论&#xff0c;不足之处&#xff0c;请指正。 本讲的前半部分将带领读者参观一下当前的视觉SLAM方案…

用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

本文适合 Vue 的初学者&#xff0c;以及对 webpack 不熟悉的同学阅读。前提是你要会用基本的命令行、 Node 和 NPM&#xff0c;以及掌握 ES2015 的基础知识。本文都是在 macOS 环境下运行&#xff0c;要求使用 npm > 3, node > 4 的环境。我们会以 Vue 2.0 搭配 Webpack …

【算法导论】【ACM】归并排序总结

许多有用的算法在结构上是递归的&#xff1a;为了解决一个给定的问题&#xff0c;算法一次或多次递归地调用其自身以解决紧密相关地若干子问题。这些算法典型的遵循分治法地思想&#xff1a;将原问题分解成几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题…

C++ 纯虚方法

1、纯虚方法解决什么样的问题&#xff0c;为什么要设计出纯虚方法&#xff1f; 考虑下面的需求&#xff0c;基类声明了一个方法&#xff0c;这个方法只针对具体的子类才有意义&#xff0c;比如Animal的Eat()方法&#xff0c;调用Animal的Eat方法是没有意义的。比如Dog吃肉&…

C++标准库中各种排序归纳

一、简介所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。我们在编程过程中会经常接触到排序&#xff0c;比如游戏中的排行榜等。C标准库中提供了各种不同的排序算法&#xff0c;这篇博客将逐一介绍。…

【数据结构】最小生成树 Prim算法 Kruskal算法

最小生成树应用场景&#xff1a; 假设以下场景&#xff0c;有一块木板&#xff0c;板上钉上一些钉子&#xff0c;这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来&#xff0c;那么一定存在这样得情况&#xff0c;即用最少的细绳把所有的钉子连…

.net内存回收与Dispose﹐Close﹐Finalize方法

.net内存回收与Dispose﹐Close﹐Finalize方法 一. net的对象使用一般分为三种情况﹕ 1.创建对象2.使用对象3.释放对象 二.创建对象1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象 2.变量类型宣告(declare),如﹕ FileStream fs这行代码会在当前的变量作用域空间(栈或堆)…

SLAM学习--------相机位姿表示-李群李代数

slam 求解相机的位姿求解核心思想&#xff1a;将有约束的李群问题转换成无约束的李代数问题&#xff0c;然后使用高斯牛顿算法或者LM(列文伯格-马夸尔特法)求解。 人们找了很多以相机位姿为变量的误差函数&#xff0c;比如光度误差&#xff0c;重投影误差&#xff0c;3D几何误…

【ACM】杭电OJ 2063

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2063 借鉴&#xff1a;http://blog.sina.com.cn/s/blog_ac5ed4f30101ewjk.html 二分图&#xff08;二部图&#xff09;&#xff1a;图论中的一种特殊模型。设G(V,E)是一个无向图&#xff0c;如果顶点V可以分割…

AngularJs表单自动验证

angular-auto-validate 地址&#xff1a;https://github.com/jonsamwell/angular-auto-validate 引用&#xff1a; <script src"/Assets/JS/AngularJS/angular-auto-validate/dist/jcs-auto-validate.js" charset"utf-8"></script> 依赖&#…

AlwaysVisibleControlExtender

今天早上学习了AlwaysVisibleControlExtender控件&#xff0c;感觉还是不错。下午就写点东西&#xff0c;总结一下使用方法。 简单使用示例(显示当前时间) 1&#xff09;在VS下&#xff0c;新建一个ASP.NET AJAX-Enabled Web Project项目&#xff0c;命名为AlwaysVisibleC…

Depth graph

深度相机 定义&#xff1a;可以直接获取场景中物体距离摄像头物理距离的相机。在计算机视觉系统中&#xff0c;三维场景信息为图像分割、目标检测、物体跟踪等各类计算机视觉应用提供了更多的可能性&#xff0c;而深度图像&#xff08;Depth map&#xff09;作为一种普遍的三维…

【ACM】POJ 1852

【问题描述】 一队蚂蚁在一根水平杆上行走&#xff0c;每只蚂蚁固定速度 1cm/s. 当一只蚂蚁走到杆的尽头时&#xff0c;立即从秆上掉落. 当两只蚂蚁相遇时它们会掉头向相反的方向前进. 我们知道每只蚂蚁在杆上的初始位置, 但是, 我们不知道蚂蚁向哪个方向前行. 你的任务是计算…

ZStack--通过Ansible实现全自动化

2019独角兽企业重金招聘Python工程师标准>>> Agent是一种常见的IaaS软件管理设备的方式&#xff1b;例如&#xff0c;ZStack使用Python agents去管理KVM主机。因为海量的设备&#xff0c;安装和升级agents成为巨大的挑战&#xff0c;所以大多数IaaS软件把这个问题留…

SVO 半直接视觉里程计

SVO 从名字来看&#xff0c;是半直接视觉里程计&#xff0c;所谓半直接是指通过对图像中的特征点图像块进行直接匹配来获取相机位姿&#xff0c;而不像直接匹配法那样对整个图像使用直接匹配。整幅图像的直接匹配法常见于RGBD传感器&#xff0c;因为RGBD传感器能获取整幅图像的…

css构造文本

1. 1. 文本缩进text-indent&#xff1a;值&#xff1b;值为数字&#xff0c;最常用的数值单位是px(像素)&#xff0c;也可以直接是百分比&#xff01;text-indent:100px;text-indent:10%;2. 文本对齐text-align:对其方式;可以的值为&#xff1a;left、center、right3. 文本行高…

【数据结构】单链表的逆序输出(两种方法)

第一种方法&#xff1a;转换指针方向 即&#xff1a;将一个已经创建好的单链表进行指针域的改变 今天突然被问到单链表逆序的问题&#xff0c;弄了好久才看出别人的程序有啥问题&#xff0c;就重新写了一遍。 今天才在CSDN客户端上看到美团的面试题是冒泡排序。 一个看似简单…

koa+mongoose基础入门

1.mongoose基本使用 1.安装mongodb npm install mongodb 2.引入mongodb数据表&#xff0c;连接mongodb&#xff0c;通过node来对mongodb进行异步的增删改查 const mongodb requrie(mongodb); mongodb.MongoClient.connect("mongodb://localhost/db1", function(err,…

视觉SLAM学习(三)--------SLAM 综述

SLAM概述 参考资料分享来自本人博客&#xff1a;https://blog.csdn.net/Darlingqiang/article/details/78840931 SLAM一般处理流程包括track和map两部分。所谓的track是用来估计相机的位姿&#xff0c;也叫front-end。而map部分(back-end)则是深度的构建&#xff0c;通过前面…

【数据结构】所有顶点对的最短路径 Floyd算法

所有顶点对的最短路径问题是指&#xff1a;对于给定的有向图G(V&#xff0c;E),求任意一对顶点之间的最短路径。 可以求解得到的 的递推公式&#xff1a; #include <stdio.h> #include <stdlib.h> const int FINITY 5000; const int M 20; typedef struct {ch…