原创 Hector_slam源碼框架分析

這是另一個激光slam系統,特點是用IMU解決了激光的運動畸變問題,另外主要貢獻還是對掃描匹配和柵格地圖的構建提出了新的思路。下面,我將從閱讀源碼的角度,對該slam系統做一個簡單的分析,也當作是個人的學習筆記。 參考:Hecto

原创 Karto_slam源碼框架分析

Karto_slam可以說第一次把因子圖優化內容用於slam當中,是具有劃時代意義的開源激光slam系統。 它的主要貢獻有兩個:(1)提出了一個效果更好的掃描匹配過程; (2)利用觀測信息、位姿關係構建因子圖,求解最佳迴環估計。

原创 EKFmonocularSLAM論文閱讀筆記(一)

論文全名是:1-Point RANSAC for EKF Filtering. Application to Real-Time Structure from Motion and Visual Odometry 論文下載鏈接,可以去

原创 從程序中學習EKF-SLAM(五)

七、狀態更新 在完成了數據關聯後,就確定了路標是新路標還是舊路標,最後就能進行狀態更新了。這裏同樣有新landmark下的狀態更新和舊landmark下的狀態更新。 這裏先介紹舊landmark下的狀態更新,大致有下面幾個步驟: (1

原创 從程序中學習EKF-SLAM(三)

四、ekf預測 ekf預測過程主要有兩個重要過程: (1)機器人位姿的預測; (2)預測位姿的協方差更新。 對應到僞代碼裏,就是開頭兩句: μ‾t=g(ut,μt−1)Σ‾t=GtvΣt−1GtvT+GtuQGtuT \overlin

原创 從程序中學習EKF-SLAM(四)

六、數據關聯 數據關聯的概念在之前的博客中已經解釋了,這裏就不在贅述了,這裏重點說說程序中的兩種實現,在本project裏有兩種數據關聯: (1)已知數據關聯,是指路標landmark的觀測順序已知,即觀測的信息含有路標id代號(這一

原创 在ROS中使用Kdevelop編譯環境的技巧

在ROS中使用kdevelop這麼久了,越來越覺得它非常好用啊,現在就總結一下 它的使用技巧,希望對大家有幫助,謝謝。 參考博客:Kdevelop的簡單使用和簡單調試 用kdevelop構建ROS程序包 ROS入門教程-1.1.3 創

原创 從程序中學習EKF-SLAM(二)

三、ekf預測之前 1.離線數據初始化 進入主循環的第一個部分,就是保存當前狀態下的數據。這裏順帶提一下系統裏的數據格式。首先看數據離線化保存的方法: STATE temp; OffLine_data.i = 0; OffLine_d

原创 從程序中學習EKF-SLAM(一)

在一次課程的結課作業上,作業要求複寫一個EKF-SLAM系統,我從中學到了好多知識。作爲一個典型輕量級slam系統,這個小項目應該特別適合於slam系統入門,可以瞭解到經典卡爾曼濾波器在slam系統中的應用以及一個slam系統的重要組

原创 從程序中學習UKF-SLAM(三)

下面接着說UKF的更新部分,在這個環節裏需要分開兩種情況進行講述: 觀測到已知路標時,需要對已有的所有的狀態變量和協方差進行更新; 觀測到未知路標時,需要將新路標的信息添加到狀態變量中,同時更新協方差(換句話說,就是需要對狀態變量和

原创 從程序中學習UKF-SLAM(一)

然間從GitHub上發現一個小項目,做的是一個基於UKF的狀態估計,使用C++版本的mathplot做顯示,編譯之後卻發現顯示一直有問題,於是萌生了一個想法:能不能把它移植到ROS中?然後就有了接下來的學習過程,以此記錄。如有問題,歡

原创 從程序中學習UKF-SLAM(二)

接下來具體說說UKF中的狀態預測部分,將會從原理和代碼兩個方面來進行說明。 四、狀態預測 1.UKF概述 概括起來說,就是指解決一個高斯分佈經過非線性變換後,怎麼用另一個高斯分佈近似它。假設x=N(μx,Σxx),y=g(x)x=N\

原创 在Ubuntu下配置Bayes++ Library庫環境

近期由於需要,開始關注bayes++庫的使用,Bayes++是一個開源的C++類庫。這些類表示並實現了用於離散系統的貝葉斯濾波的各種數值算法。該庫中的類提供測試和一致的數值方法,並且用層次明確的結構表明了各種濾波算法和系統模型類型。

原创 給英偉達TK1安裝固態硬盤系統盤

用過英偉達TK1板子的都知道,它的使用空間特別小,它的存儲是16GB快速eMMC 4.51(路由到SDMMC4),所以安裝東西多了之後經常容易卡頓。當然,它畢竟是老式ARM板,和TK2,TX2比不了,但是我又想使用它,畢竟不想浪費了。

原创 在Gmapping中的Bresenham算法解析

引入 在gmapping算法中,需要計算激光在每個粒子相應的位姿所掃描到的區域,這一步驟用到了Bresenham算法,他的實現函數是: void GridLineTraversal::gridLineCore( IntPoint st