原创 ORB_SLAM2源碼閱讀(二)初始化過程

VSLAM的前端又稱爲視覺里程計,它通過多視圖幾何的方法對相機的位姿進行估計。通過我們之前的閱讀以及《十四講》的學習,可以發現幀和幀之間精準的像素匹配是極爲重要的,而稀疏的特徵點法也是VSLAM實時運行的基礎,因此我們從ORB特徵匹配開始

原创 Navigation源碼閱讀之dwa_local_planner(DWA動態窗口法)

DWAPlannerROS是封裝類,提供了與move_base的接口,而DWAPlanner是具體實現類,它非常依賴costmap(當然不指望讓小車動態避障的話就無所謂了),因此我們在使用時需要保證代價地圖的膨脹度以及實時更新頻率。btw

原创 Jetson tx2 配置Yolov3與deep-sort環境的具體步驟

首先明確的一點是,tx2是arm內核並自帶cuda9.0,至於cudnn的版本也需要得知,用cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2 進行查看,tx2自帶的cudnn版本爲7。 一、

原创 ros源碼分析(一)從ros::init開始

在初次接觸ros時,roswiki告訴我們ros是一種通信中間件,能夠通過近乎完美的封裝,實現進程之間的通信,使得數據傳輸省略了冗長的socket編寫。而之後的學習與應用中,我們主要是基於這一既定事實進行愉快的代碼編寫與GUI的使用,對它

原创 v-loam源碼閱讀(一)視覺特徵

在一開始寫lego-LOAM的時候,我就對v-loam有所耳聞,畢竟同出於大神之手,但我一直錯誤地以爲它是將視覺與激光雷達點雲融合成一個大型的rgbd,就像我之前的某種錯誤的打開方式,用單目相機和雷達融合進行slam操作。。。當然,這個v

原创 三維SLAM算法SegMap源碼閱讀(三)後端篇

在slam的過程中,再精確的前端也會帶入一些細小誤差,強如lego_loam的特徵匹配也會偶爾陷入局部最優,看不出來只是因爲尺度還不夠大而已!-_-。像經典的小場景建圖算法gmapping,它相當於只攜帶了前端的里程計誤差模型,不太適用於

原创 ros源碼分析(二)topic調用了publish之後發生了什麼?

隔了很久才寫第二篇實在是抱歉。繼續從ros wiki的角度下手,最開始接觸的publisher和subscriber的demo十分經典,而進程間通信這一過程本身就是它的最大賣點,發佈器、接收器這樣的名詞以及advertise、publis

原创 ORB_SLAM2源碼閱讀(一)概要

今天斥資十塊錢買了一個可愛的單目攝像頭,那麼做一個偉大的項目還遠嗎?——沃鎡基碩德 在算法領域遨遊的這些年,我們的能力、見識都在飛速增長,代碼一行行看,博客知乎一篇篇刷,書本一本本買,從最最開始的《C++ primer》和《21天精通Py

原创 v-loam源碼閱讀(四)深度圖點雲與建圖部分

在這一套代碼中,激光部分其實是比較簡略的,它主要起的是融合視覺並提供深度,避免了逆深度的求解(這不還是大號rgbd嘛。。。),而不是激光里程計的作用。 首先是processDepthMap,它接收了第二部分的視覺里程計與原有的點雲,給第三

原创 v-loam源碼閱讀(二)視覺里程計

再轉到VisualOdometry這一節點,這是我們在loam系列中沒有接觸過的,但對於熟悉視覺里程計以及loam系列的激光里程計的我們來說也不算太難,根據論文,前端是採用msckf作爲視覺里程計,但從本版本的代碼來看,它是偏向於繼承lo

原创 v-loam源碼閱讀(三)光束平差法和位姿融合

又到了人見人愛的bundle adjustment部分,ba作爲一種普適性的精配準方法,可以用於兩幀之間的位姿校準,也可用於多幀之間的聯合優化(例如基於滑動窗口法的優化)。在這個節點,作者採取了類似於滑動窗口的方法(代碼中設爲5幀的處理隊