国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

視覺SLAM十四講——ch10實踐(后端2)

這篇具有很好參考價值的文章主要介紹了視覺SLAM十四講——ch10實踐(后端2)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0. 實踐前小知識介紹

視覺SLAM(Simultaneous Localization and Mapping)后端是一種用于處理視覺SLAM問題的算法。視覺SLAM是指機器在未知環(huán)境中同時實現(xiàn)自身的定位和地圖構建的技術。

視覺SLAM后端的任務是在視覺SLAM中負責維護一個優(yōu)化后的地圖和機器人的軌跡。常見的視覺SLAM后端算法包括基于圖優(yōu)化的方法,如G2O、ceres等,以及基于濾波器的方法,如卡爾曼濾波器、擴展卡爾曼濾波器等。

視覺SLAM后端算法需要處理傳感器數(shù)據(jù)的噪聲和不確定性,并通過優(yōu)化算法來減小誤差和提高精度。同時,視覺SLAM后端算法還需要快速、高效地處理大量的數(shù)據(jù),并對計算結果進行實時更新和優(yōu)化。

視覺SLAM后端算法在自主駕駛、無人機、機器人等領域有廣泛的應用。

1. 實踐操作前的準備工作

  1. 在終端中進入ch10文件夾下,順序執(zhí)行以下命令進行編譯。
mkdir build
cd build
cmake ..
//注意,j8還是其他主要看自己的電腦情況
make -j8
  1. 在build文件中進行運行。
    注意: 在make過程中,會出現(xiàn)warning,但是對我們此實踐的過程幾乎沒有影響。

2. 實踐過程

2.1 g2o原生位姿圖

在build中執(zhí)行語句:

 ./pose_graph_g2o_SE3 /home/fighter/slam/slambook2/ch10/sphere.g2o

運行結果:
生成文件result.g2o;終端輸出:

read total 2500 vertices, 9799 edges.
optimizing ...
iteration= 0     chi2= 1023011093.967641         time= 0.616354  cumTime= 0.616354       edges= 9799     schur= 0        lambda= 805.622433      levenbergIter= 1
iteration= 1     chi2= 385118688.233187  time= 0.363139  cumTime= 0.979494       edges= 9799     schur= 0        lambda= 537.081622      levenbergIter= 1
iteration= 2     chi2= 166223726.693657  time= 0.350041  cumTime= 1.32953        edges= 9799     schur= 0        lambda= 358.054415      levenbergIter= 1
iteration= 3     chi2= 86610874.269316   time= 0.351792  cumTime= 1.68133        edges= 9799     schur= 0        lambda= 238.702943      levenbergIter= 1
iteration= 4     chi2= 40582782.710190   time= 0.388134  cumTime= 2.06946        edges= 9799     schur= 0        lambda= 159.135295      levenbergIter= 1
iteration= 5     chi2= 15055383.753041   time= 0.377086  cumTime= 2.44655        edges= 9799     schur= 0        lambda= 101.425210      levenbergIter= 1
iteration= 6     chi2= 6715193.487655    time= 0.363641  cumTime= 2.81019        edges= 9799     schur= 0        lambda= 37.664667       levenbergIter= 1
iteration= 7     chi2= 2171949.168382    time= 0.383848  cumTime= 3.19404        edges= 9799     schur= 0        lambda= 12.554889       levenbergIter= 1
iteration= 8     chi2= 740566.827049     time= 0.376922  cumTime= 3.57096        edges= 9799     schur= 0        lambda= 4.184963        levenbergIter= 1
iteration= 9     chi2= 313641.802464     time= 0.367001  cumTime= 3.93796        edges= 9799     schur= 0        lambda= 2.583432        levenbergIter= 1
iteration= 10    chi2= 82659.743578      time= 0.356125  cumTime= 4.29408        edges= 9799     schur= 0        lambda= 0.861144        levenbergIter= 1
iteration= 11    chi2= 58220.369189      time= 0.326571  cumTime= 4.62065        edges= 9799     schur= 0        lambda= 0.287048        levenbergIter= 1
iteration= 12    chi2= 52214.188561      time= 0.34423   cumTime= 4.96488        edges= 9799     schur= 0        lambda= 0.095683        levenbergIter= 1
iteration= 13    chi2= 50948.580336      time= 0.344858  cumTime= 5.30974        edges= 9799     schur= 0        lambda= 0.031894        levenbergIter= 1
iteration= 14    chi2= 50587.776729      time= 0.323255  cumTime= 5.633  edges= 9799     schur= 0        lambda= 0.016436        levenbergIter= 1
iteration= 15    chi2= 50233.038802      time= 0.321105  cumTime= 5.9541         edges= 9799     schur= 0        lambda= 0.010957        levenbergIter= 1
iteration= 16    chi2= 49995.082839      time= 0.321401  cumTime= 6.2755         edges= 9799     schur= 0        lambda= 0.007305        levenbergIter= 1
iteration= 17    chi2= 48876.738967      time= 0.702032  cumTime= 6.97753        edges= 9799     schur= 0        lambda= 0.009298        levenbergIter= 2
iteration= 18    chi2= 48806.625522      time= 0.373531  cumTime= 7.35107        edges= 9799     schur= 0        lambda= 0.006199        levenbergIter= 1
iteration= 19    chi2= 47790.891373      time= 0.764476  cumTime= 8.11554        edges= 9799     schur= 0        lambda= 0.008265        levenbergIter= 2
iteration= 20    chi2= 47713.626582      time= 0.344026  cumTime= 8.45957        edges= 9799     schur= 0        lambda= 0.005510        levenbergIter= 1
iteration= 21    chi2= 46869.323689      time= 0.698816  cumTime= 9.15838        edges= 9799     schur= 0        lambda= 0.007347        levenbergIter= 2
iteration= 22    chi2= 46802.585509      time= 0.359225  cumTime= 9.51761        edges= 9799     schur= 0        lambda= 0.004898        levenbergIter= 1
iteration= 23    chi2= 46128.758041      time= 0.631884  cumTime= 10.1495        edges= 9799     schur= 0        lambda= 0.006489        levenbergIter= 2
iteration= 24    chi2= 46069.133541      time= 0.309911  cumTime= 10.4594        edges= 9799     schur= 0        lambda= 0.004326        levenbergIter= 1
iteration= 25    chi2= 45553.862164      time= 0.622007  cumTime= 11.0814        edges= 9799     schur= 0        lambda= 0.005595        levenbergIter= 2
iteration= 26    chi2= 45511.762616      time= 0.311606  cumTime= 11.393         edges= 9799     schur= 0        lambda= 0.003730        levenbergIter= 1
iteration= 27    chi2= 45122.762999      time= 0.61714   cumTime= 12.0102        edges= 9799     schur= 0        lambda= 0.004690        levenbergIter= 2
iteration= 28    chi2= 45095.174397      time= 0.31117   cumTime= 12.3213        edges= 9799     schur= 0        lambda= 0.003127        levenbergIter= 1
iteration= 29    chi2= 44811.248505      time= 0.608863  cumTime= 12.9302        edges= 9799     schur= 0        lambda= 0.003785        levenbergIter= 2
saving optimization results ...

實踐中使用的時列文伯格—馬夸爾特下降的方式,迭代次數(shù)選擇的三十次。
打開文件result.g2o:
在終端運行:

g2o_viewer result.g2o

運行圖為(使用g2o自帶的頂點與邊求解的結果):
視覺SLAM十四講——ch10實踐(后端2)

2.2 李代數(shù)上的位姿圖優(yōu)化

在build中執(zhí)行語句:

 ./pose_graph_g2o_lie /home/fighter/slam/slambook2/ch10/sphere.g2o

運行結果:
生成文件result_lie.g2o;終端輸出:

read total 2500 vertices, 9799 edges.
optimizing ...
iteration= 0     chi2= 674837160.579968  time= 0.419014  cumTime= 0.419014       edges= 9799     schur= 0        lambda= 6658.554263     levenbergIter= 1
iteration= 1     chi2= 234706314.970484  time= 0.307203  cumTime= 0.726217       edges= 9799     schur= 0        lambda= 2219.518088     levenbergIter= 1
iteration= 2     chi2= 142146174.348537  time= 0.306181  cumTime= 1.0324         edges= 9799     schur= 0        lambda= 739.839363      levenbergIter= 1
iteration= 3     chi2= 83834595.145595   time= 0.309102  cumTime= 1.3415         edges= 9799     schur= 0        lambda= 246.613121      levenbergIter= 1
iteration= 4     chi2= 41878079.903257   time= 0.314584  cumTime= 1.65608        edges= 9799     schur= 0        lambda= 82.204374       levenbergIter= 1
iteration= 5     chi2= 16598628.119947   time= 0.306542  cumTime= 1.96263        edges= 9799     schur= 0        lambda= 27.401458       levenbergIter= 1
iteration= 6     chi2= 6137666.739406    time= 0.306009  cumTime= 2.26864        edges= 9799     schur= 0        lambda= 9.133819        levenbergIter= 1
iteration= 7     chi2= 2182986.250589    time= 0.313833  cumTime= 2.58247        edges= 9799     schur= 0        lambda= 3.044606        levenbergIter= 1
iteration= 8     chi2= 732676.668220     time= 0.304348  cumTime= 2.88682        edges= 9799     schur= 0        lambda= 1.014869        levenbergIter= 1
iteration= 9     chi2= 284457.115176     time= 0.305686  cumTime= 3.1925         edges= 9799     schur= 0        lambda= 0.338290        levenbergIter= 1
iteration= 10    chi2= 170796.109734     time= 0.317388  cumTime= 3.50989        edges= 9799     schur= 0        lambda= 0.181974        levenbergIter= 1
iteration= 11    chi2= 145466.315841     time= 0.305792  cumTime= 3.81568        edges= 9799     schur= 0        lambda= 0.060658        levenbergIter= 1
iteration= 12    chi2= 142373.179501     time= 0.347022  cumTime= 4.16271        edges= 9799     schur= 0        lambda= 0.020219        levenbergIter= 1
iteration= 13    chi2= 137485.756901     time= 0.304775  cumTime= 4.46748        edges= 9799     schur= 0        lambda= 0.006740        levenbergIter= 1
iteration= 14    chi2= 131202.175665     time= 0.311505  cumTime= 4.77899        edges= 9799     schur= 0        lambda= 0.002247        levenbergIter= 1
iteration= 15    chi2= 128006.202529     time= 0.30704   cumTime= 5.08603        edges= 9799     schur= 0        lambda= 0.000749        levenbergIter= 1
iteration= 16    chi2= 127587.860945     time= 0.313496  cumTime= 5.39952        edges= 9799     schur= 0        lambda= 0.000250        levenbergIter= 1
iteration= 17    chi2= 127578.599359     time= 0.322269  cumTime= 5.72179        edges= 9799     schur= 0        lambda= 0.000083        levenbergIter= 1
iteration= 18    chi2= 127578.573853     time= 0.326536  cumTime= 6.04833        edges= 9799     schur= 0        lambda= 0.000028        levenbergIter= 1
iteration= 19    chi2= 127578.573840     time= 0.328882  cumTime= 6.37721        edges= 9799     schur= 0        lambda= 0.000018        levenbergIter= 1
iteration= 20    chi2= 127578.573840     time= 0.315369  cumTime= 6.69258        edges= 9799     schur= 0        lambda= 0.000012        levenbergIter= 1
iteration= 21    chi2= 127578.573840     time= 0.308945  cumTime= 7.00152        edges= 9799     schur= 0        lambda= 0.000008        levenbergIter= 1
iteration= 22    chi2= 127578.573840     time= 3.00403   cumTime= 10.0056        edges= 9799     schur= 0        lambda= 296083660142.312988    levenbergIter= 10
saving optimization results ...

可以發(fā)現(xiàn),迭代23次后,總體誤差保持不變,事實上可以讓優(yōu)化算法停止。
打開文件result_lie.g2o:
在終端運行:

g2o_viewer result_lie.g2o

運行圖為(使用李代數(shù)自定義節(jié)點與優(yōu)化后的結果):
視覺SLAM十四講——ch10實踐(后端2)

單擊窗口中的Optimize按鈕,g2o將使用它自帶的SE3頂點進行優(yōu)化,可以在窗口下方的文本框看到以下內容:

loaded result_lie.g2o with 2500 vertices and 9799 measurements
graph is fixed by node 2499
# Using CHOLMOD poseDim -1 landMarkDim -1 blockordering 1
Preparing (no marginalization of Landmarks)
iteration= 0	 chi2= 44360.504602	 time= 1.01586	 cumTime= 1.01586	 edges= 9799	 schur= 0
iteration= 1	 chi2= 44360.466873	 time= 0.247692	 cumTime= 1.26355	 edges= 9799	 schur= 0
iteration= 2	 chi2= 44360.466872	 time= 0.253022	 cumTime= 1.51658	 edges= 9799	 schur= 0
iteration= 3	 chi2= 44360.466872	 time= 0.247728	 cumTime= 1.7643	 edges= 9799	 schur= 0
iteration= 4	 chi2= 44360.466872	 time= 0.272316	 cumTime= 2.03662	 edges= 9799	 schur= 0
iteration= 5	 chi2= 44360.466872	 time= 0.249167	 cumTime= 2.28579	 edges= 9799	 schur= 0
iteration= 6	 chi2= 44360.466872	 time= 0.248997	 cumTime= 2.53478	 edges= 9799	 schur= 0
iteration= 7	 chi2= 44360.466872	 time= 0.28726	 cumTime= 2.82204	 edges= 9799	 schur= 0
iteration= 8	 chi2= 44360.466872	 time= 0.243892	 cumTime= 3.06594	 edges= 9799	 schur= 0
iteration= 9	 chi2= 44360.466872	 time= 0.245539	 cumTime= 3.31148	 edges= 9799	 schur= 0

3. 遇到的問題及解決辦法

3.1 在運行pose_graph_g2o_lie時出現(xiàn)錯誤

  1. 出現(xiàn)的錯誤如下所示:
Sophus ensure failed in function 'void Sophus::SO3Base<Derived>::normalize() [with Derived = Sophus::SO3<double>]', file '/usr/local/include/sophus/so3.hpp', line 273.
Quaternion (   0.706662 4.32706e-17    0.707551 -4.3325e-17) should not be close to zero!
Aborted

原因:

頂點類VertexSE3LieAlgebra的讀入函數(shù)virtual bool read(istream& is)缺少返回值,會報以上錯誤。

解決辦法:

在函數(shù) virtual bool read(istream& is) 中加入 return true;文章來源地址http://www.zghlxwxcb.cn/news/detail-494080.html

到了這里,關于視覺SLAM十四講——ch10實踐(后端2)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【視覺SLAM十四講學習筆記】第五講——相機模型

    【視覺SLAM十四講學習筆記】第五講——相機模型

    專欄系列文章如下: 【視覺SLAM十四講學習筆記】第一講——SLAM介紹 【視覺SLAM十四講學習筆記】第二講——初識SLAM 【視覺SLAM十四講學習筆記】第三講——旋轉矩陣 【視覺SLAM十四講學習筆記】第三講——旋轉向量和歐拉角 【視覺SLAM十四講學習筆記】第三講——四元數(shù) 【視

    2024年01月17日
    瀏覽(27)
  • 《視覺 SLAM 十四講》V2 第 5 講 相機與圖像

    《視覺 SLAM 十四講》V2 第 5 講 相機與圖像

    空間點 投影到 相機成像平面 前面內容總結: 1、機器人如何表示自身位姿 視覺SLAM: 觀測 主要是指 相機成像 的過程 。 投影過程描述: 針孔 + 畸變 相機 內參 外參 像素坐標系 與 成像平面之間,相差了一個縮放 和一個原點的平移。 像素坐標系: 原點 o ′ o^{prime} o ′ 位

    2024年02月07日
    瀏覽(23)
  • 視覺SLAM十四講|【五】相機與IMU時間戳同步

    Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = K P Z begin{bmatrix} u \\\\ v \\\\ 1 end{bmatrix}= begin{bmatrix} f_x 0 c_x \\\\ 0 f_y c_y \\\\ 0 0 1 end{bmatrix} begin{bmatrix} X \\\\ Y \\\\ Z end{bmatrix}= KP Z ? u v 1 ? ? = ? f x ? 0 0 ? 0 f y ? 0 ? c x ? c y ? 1 ? ? ? X Y Z ? ? = K P 其中, K = [ f x 0 c x 0 f y c y 0 0

    2024年01月20日
    瀏覽(29)
  • 《視覺 SLAM 十四講》V2 第 4 講 李群與李代數(shù) 【什么樣的相機位姿 最符合 當前觀測數(shù)據(jù)】

    《視覺 SLAM 十四講》V2 第 4 講 李群與李代數(shù) 【什么樣的相機位姿 最符合 當前觀測數(shù)據(jù)】

    P71 什么樣的相機位姿 最符合 當前觀測數(shù)據(jù)。 求解最優(yōu)的 R , t bm{R, t} R , t , 使得誤差最小化。 群 : 只有一個(良好的)運算的集合。 封結幺逆 、 豐儉由你 李群 : 具有連續(xù)(光滑)性質的群。 在 t = 0 附近,旋轉矩陣可以由 e x p ( ? 0 ∧ t ) exp(phi_0^{land}t) e x p ( ? 0 ∧ ? t

    2024年02月07日
    瀏覽(28)
  • slam十四講~環(huán)境安裝以及問題記錄

    slam十四講~環(huán)境安裝以及問題記錄

    參考資料: https://zhuanlan.zhihu.com/p/452256687 https://blog.csdn.net/qq_38629044/article/details/95355859 https://blog.csdn.net/Bonaventure/article/details/122835996 https://blog.csdn.net/weixin_44986556/article/details/108962861 https://blog.csdn.net/qq_38364548/article/details/122055690 https://blog.csdn.net/rong11417/article/details/103905794 http

    2023年04月15日
    瀏覽(34)
  • 視覺SLAM14講筆記-第10講-后端1

    我們可以看到,前端視覺里程計能給出一個短時間內的軌跡和地圖,但由于不可避免的誤差累積,這個地圖在長時間內是不準確的。所以怎么辦?我們人類自己在現(xiàn)實世界中會記錄自己走了多少米,還有就是使用路面的標志物來輔助定位,和機器人的方式也是相同的,即同時

    2024年02月09日
    瀏覽(17)
  • 視覺SLAM ch12 建圖(RGB-D)

    視覺SLAM ch12 建圖(RGB-D)

    一、RGB-D稠密建圖 RGB-D相機 通結構光和飛行時間獲取深度。 稠密重建方法 :根據(jù)估計的相機位姿,將RGB-D數(shù)據(jù)轉化為點云,然后進行拼接,最終得到由離散的點組成的 點云地圖 。 在此基礎上,如果希望估計物體的表面,可以用三角網(wǎng)格(Mesh)和面片(Surfel)進行建圖;如

    2023年04月18日
    瀏覽(28)
  • 手撕 視覺slam14講 ch7 / pose_estimation_3d2d.cpp (1)

    手撕 視覺slam14講 ch7 / pose_estimation_3d2d.cpp (1)

    ?1. 讀圖,兩張rgb(cv::imread) ?2. 找到兩張rgb圖中的特征點匹配對 ?????? 2.1定義所需要的參數(shù):keypoints1, keypoints2,matches ?????? 2.2 提取每張圖像的檢測 Oriented FAST 角點位置并匹配篩選(調用功能函數(shù)1) ?3. 建立3d點(像素坐標到相機坐標) ????????3.1讀出深度圖(c

    2024年02月10日
    瀏覽(22)
  • 視覺SLAM理論到實踐系列(四)——相機模型

    視覺SLAM理論到實踐系列(四)——相機模型

    下面是《視覺SLAM十四講》學習筆記的系列記錄的總鏈接,本人發(fā)表這個系列的文章鏈接均收錄于此 下面是專欄地址: 高翔博士的《視覺SLAM14講》學習筆記的系列記錄 相機將三維世界中的坐標點(單位為米)映射到二維圖像平面(單位為像素)的過程能夠用一個幾何模型進行

    2024年02月04日
    瀏覽(25)
  • 3D 視覺 相關知識-SLAM框架-常見方案對比

    點云數(shù)據(jù) 通過測量儀器獲得 物體外觀 的點數(shù)據(jù)的集合,叫 點云 。點云是在和目標表面特性的海量點集合。 點云是在和目標表面特性的海量點集合。 根據(jù)激光測量原理得到的點云,包括三維坐標(XYZ)和激光反射強度(Intensity)。 根據(jù)攝影測量原理得到的點云,包括三維

    2024年02月13日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包