1. 程式人生 > >LSD-SLAM深入學習(3)-程式碼解析

LSD-SLAM深入學習(3)-程式碼解析

前言

     在LSD-SLAM深入學習(2)中我們已經對演算法進行分析,此處假設讀者對於ros的基本操作都已經很熟悉,而且已經編寫了一定量的的程式碼,我們直接上乾貨。此處分析的程式如下

main_live_odometry.cpp,這個可以實時讀取視訊的主函式

image

主函式

XInitThreads();用於多執行緒顯示imshow();

實時資料流參考下面的,利用每一張圖片的可以參考main_on_images.cpp

image

然後劃定輸入輸出,把輸入輸出傳遞到一個slam物件中去。

image

monoodometry初始化中開啟了下面的執行緒,mapping、constraint以及optimization

image

image

tracking執行緒

要開啟其他執行緒,完成tracking的任務。Tracking的主要目的是配準兩幅圖,得到位姿變化。

相對位姿可以通過最小化方差歸一化的光學誤差來計算。地圖剛開始會隨機進行深度資訊的初始化,然後才能進行跟蹤幀。

image

跟蹤幀的任務如下

image

這個是se3的tracker,執行trackframe的任務……函式比較大,也很重要,主要求解李群下面的問題。

image

map執行緒

image

具體的doMappingIteration()內容如下

image

Mapping的很多工作都是在下面的updatekeyframe函式中實現的……

image

一個很重要的函式是dolinestereo,就是在極線上進行立體匹配。

constrait執行緒

image

optimization執行緒

改變bool變數doFinalOptimization的值是在最後完成的,和其他執行緒沒關係的……也就是採集不到新的圖時……

image

相關推薦

LSD-SLAM深入學習3-程式碼解析

前言      在LSD-SLAM深入學習(2)中我們已經對演算法進行分析,此處假設讀者對於ros的基本操作都已經很熟悉,而且已經編寫了一定量的的程式碼,我們直接上乾貨。此處分析的程式如下 main_live_odometry.cpp,這個可以實時讀取視訊的主函式 主函式 XIni

LSD-SLAM深入學習2-演算法解析

前言      在LSD-SLAM深入學習(1)中我們已經完成基本的安裝與測試,在此我們繼續解析演算法與程式碼,由於lsd-slam本身利用了一部分李群與李代數的知識,需要一定的數學功底。 預備知識-李群與李代數 下面需要形成一個最基礎的概念,就是李群與對應的李代數的對映關係。不然很

LSD-SLAM深入學習1-基本介紹與ros下的安裝

前言      借鑑來自RGB-D資料處理的兩種方法-基於特徵與基於整體的,同樣可以考慮整個圖片的匹配,而不是隻考慮特徵點的…… 主要介紹        主要參考一下幾篇文章,都是來自tum的。以後演算法與程式碼介紹都是基於這幾篇文章的,建議仔細研究,必定受益匪淺。  

LSD-SLAM深入學習4-非ROS改造

前言      沒錯,距離上一次部落格的釋出已經倆月了,今天是聖誕節,聖誕快樂。      在前幾篇中已經完成了ROS下面的一系列操作。如有任何問題,feel free to contact me at [email protected] 基本工作      主要的改造工作如

基於 Django1.10 文件的深入學習3—— models.py 之 FileField

class FileField(upload_to=None, max_length=100, **options)[source] 檔案上傳欄位。 注意: primary_key引數不受支援

ASP.NET Core on K8S深入學習3Deployment

上一篇《部署過程解析與安裝Dashboard》中我們瞭解K8S的部署過程,這一篇我們來了解一下K8S為我們提供的幾種應用執行方式:Deployment、DaemonSet與Job,它們是Kubernetes最重要的核心功能提供者。考慮到篇幅和更新速度,我將其分為兩篇文章,本篇會主要介紹Deployment,主

以太坊原始碼深入分析3-- 以太坊RPC通訊例項和原理程式碼分析

上一節提到,以太坊在node start的時候啟動了RPC服務,以太坊通過Rpc服務來實現以太坊相關介面的遠端呼叫。這節我們用個例項來看看以太坊 RPC是如何工作的,以及以太坊RPC的原始碼的實現一,RPC通訊例項1,RPC啟動命令 :geth --rpcgo-ethereu

ASP.NET Core on K8S深入學習3-2DaemonSet與Job

本篇已加入《.NET Core on K8S學習實踐系列文章索引》,可以點選檢視更多容器化技術相關係列文章。 上一篇《3-1 Deployment》中介紹了Deployment,它可以滿足我們大部分時候的應用部署(無狀態服務類容器),但是針對一些特殊的場景應用,就可以用到今天介紹的DaemonSet和Job

基於Qt的OpenGL可編程管線學習3- 使用Instanced方式繪制

qt opengl shader instanced 繪制多個重復的模型時,使用Instanced方式繪制可以大大加快顯然速度。繪制效果如下圖所示:1、Vertex Shader中定義如下:attribute vec3 pos; attribute vec2 coord; attribute

OSChinaclient源代碼學習3--輪詢機制的實現

man data 本地變量 其它 失敗 cbo cancel seh ref 主要以OSChina Androidclient源代碼中Notice的輪詢機制進行解讀。 一、基礎知識 一般IM(即使通訊)的實現有兩種方式:推送和輪詢,推送就是se

PYTHON設計模式學習3:Singleton pattern

blog ora 參考 擁有 沒有 _屬性 ces cti ttr 參考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print ‘--------------

IDEA 學習筆記之 Java項目開發深入學習1

java項目 bsp 重構 str 代碼提示 log pan ora tro Java項目開發深入學習(1): 定義編譯輸出路徑: 繼承以上工程配置 重新定義新的項目編譯路徑 添加source目錄:點擊添加,再點擊移除: 編譯項目: 常用快捷鍵總結: Ctr

tcpdump 學習3:MySQL Query

說明 server gen rollback 命令 復雜 pro 關於 col 在MySQL線上環境我們一般只打開了binary log,slow log,有時我們需要查看general log呢?因為該log記錄所有的請求,打開該日誌肯定給磁盤造成很大壓力,IO能力有所下

Django學習3模板定制

ase 我們 頻繁 ping upload shang star 2.0 asc   在Django學習(一)一首情詩中,views.py中HTML被直接硬編碼在代碼之中,雖然這樣便於解釋視圖是如何工作的,但直接將HTML硬編碼到視圖卻不算一個好主意。因為: 對頁面設計進

機器學習基石筆記11——機器可以怎樣學習3

1.2 div esc 怎樣 學習 clas regress 1.3 1.4 Lecture 11: Linear Models for Classification 11.1 Linear Models for Binary Classification 11.2 S

java入門學習3—循環,選擇,基礎算法,API概念

思想 冒泡 方法 就是 最大的 接口 兩個 循環控制 得到 1、順序結構:也就是順著程序的前後關系,依次執行。2、選擇分支:利用if..else , / switch(){case [ 這個必須是常量]:}; / if..else if….. ….else..等語句讓程序在

web前端學習3:認識HTML基本標簽

鼠標 首頁 一份 格式 所在地 有著 同時 網上 今天 本章主旨:   介紹常用的文本相關標簽,如<h>,<p>,<a>;簡介常見的HTML標簽屬性,如title屬性,href屬性,id/class屬性等;重點掌握<a>標簽。

Python爬蟲學習3

collect nbsp pri div time urlparse links ews 是否 在慕課網學習並創建了一個簡單的爬蟲包,爬取百度百科相關詞條信息 程序中會用到第三方解析包(BeautifulSoup4),Windows環境下安裝命令:pip install B

java===java基礎學習3---數據類型轉換,運算符級別,枚舉類型

test [] sof 進度 如果 nbsp math 否則 枚舉 數據類型轉換: 有的時候,程序需要將數據類型,比如 int + float ,結果是float, 這裏的int就被轉換為float類型,屬於合法轉換。 Java中的合法轉換如下圖: 紅色表示無信息丟失的轉

perl學習3模式匹配與正則表達式

.... 表達式 正則表達 pos 匹配模式 模式匹配 $2 多個 info 一:模式匹配中的特殊字符 1:  點號 .     匹配任何單個字符(換行符\n除外) 2:  反斜線 \     轉義字符,用於特殊符號前,使其失去特殊字符的作用變成普通字符 3:  +