LSD-SLAM深入學習(3)-程式碼解析
前言
在LSD-SLAM深入學習(2)中我們已經對演算法進行分析,此處假設讀者對於ros的基本操作都已經很熟悉,而且已經編寫了一定量的的程式碼,我們直接上乾貨。此處分析的程式如下
main_live_odometry.cpp,這個可以實時讀取視訊的主函式
主函式
XInitThreads();用於多執行緒顯示imshow();
實時資料流參考下面的,利用每一張圖片的可以參考main_on_images.cpp
然後劃定輸入輸出,把輸入輸出傳遞到一個slam物件中去。
monoodometry初始化中開啟了下面的執行緒,mapping、constraint以及optimization
tracking執行緒
要開啟其他執行緒,完成tracking的任務。Tracking的主要目的是配準兩幅圖,得到位姿變化。
相對位姿可以通過最小化方差歸一化的光學誤差來計算。地圖剛開始會隨機進行深度資訊的初始化,然後才能進行跟蹤幀。
跟蹤幀的任務如下
這個是se3的tracker,執行trackframe的任務……函式比較大,也很重要,主要求解李群下面的問題。
map執行緒
具體的doMappingIteration()內容如下
Mapping的很多工作都是在下面的updatekeyframe函式中實現的……
一個很重要的函式是dolinestereo,就是在極線上進行立體匹配。
constrait執行緒
optimization執行緒
改變bool變數doFinalOptimization的值是在最後完成的,和其他執行緒沒關係的……也就是採集不到新的圖時……
相關推薦
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深入學習(3)Deployment
上一篇《部署過程解析與安裝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-2)DaemonSet與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: +