前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ORBSLAM(一)理解全文的前奏篇章

ORBSLAM(一)理解全文的前奏篇章

作者头像
用户9831583
发布2022-06-16 16:44:04
1350
发布2022-06-16 16:44:04
举报
文章被收录于专栏:码出名企路

本篇目录

代码中的多线程

1, 计算基础矩阵和单应矩阵,加快运算速度

目的:从两个矩阵中选取最佳来恢复最开始两帧之间的相对姿态,并进行三角化得到初始地图点

2. 整个系统运行比较随机,三大模块处理顺序不确定

原因:关键帧是贯穿整个系统的血脉,跟踪线程不产生关键帧,建图和回环线程基本处于空转状态,但是跟踪线程产生关键帧的频率和时机也不是确定的,需要三个线程同时运行,建图和回环线程不断循环check跟踪线程的关键帧,如果存在,则进行各自线程的处理。

多线程中的锁

1. 一个变量被多个线程同时操作,造成这个变量不知所措

方法:将成员函数本身设为私有变量,并在操作他们的公有函数内加锁;保证了某个时刻只有一个线程可以得到此成员变量,程序执行到此锁的位置,但是锁被别的线程拿着不放的话,当前线程就好停止下来,直到其他线程释放了这个锁,当前线程才能拿走锁并继续执行下去。

举例:关键帧一边被读,一边被写

2.加锁和释放锁的时机只在临时区域内

锁的有效区域只在大括号{}内,程序运行出大括号之后就释放锁了,这也是为什么有些程序莫名其妙加了括号的原因。

系统构建的概述

主要是三大步骤:

读取配置文件,初始化成员变量

创建三大线程

用关键帧的队列进行三大线程间的通信

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码出名企路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档