五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一點Cartographer的調(diào)參心得:前端篇

2023-08-03 23:26 作者:懂的都懂你細(xì)細(xì)品  | 我要投稿

上一篇文章介紹了 Cartographer 里和傳感器有關(guān)系的參數(shù)調(diào)整(傳感器篇),這次介紹一些前端部分里經(jīng)常調(diào)的參數(shù)。

Cartographer 前端部分比較簡單,主要就是負(fù)責(zé)點云匹配和生成 Submap。

參數(shù)的配置文件是 trajectory_builder_2d.lua。


調(diào)參整前端的參數(shù)之前,最好先關(guān)閉后端,方便觀察參數(shù)調(diào)整后對建圖的直接影響,可以將下面三個參數(shù)設(shè)置成 0 來關(guān)閉后端:


前端中最重要的一個參數(shù)就是?submaps.num_range_data,這個參數(shù)決定了用多少幀點云來構(gòu)造一副 Submap,取值非常有講究,需要考慮到各個傳感器的精度和運行平臺的算力。通??梢灾苯涌紤] 30/60/90 三個值作為參數(shù)。

Submap 是基于圖優(yōu)化的 SLAM 算法的精髓,使用很多幅的 Submap?來構(gòu)成一大地圖,Submap 包含了若干個 Node,每個 Node 就是一幀點云。建圖過程中的累計誤差,就是通過后端的圖優(yōu)化算法調(diào)整每一副 Submap 的位姿來消除的,讓整體地圖形成最優(yōu)。

submaps.num_range_data?取值越小,每一副 Submap 內(nèi)的累計誤差就會越小,后端的參數(shù)調(diào)的合適,那最終得到的地圖質(zhì)量就是最好的。

我們可以從兩個角度來考慮?submaps.num_range_data?的取值,一個是累計誤差,另一個是性能。

前端會帶來累計誤差的來源有兩個,分別是點云匹配誤差和傳感器誤差。

如果說傳感器質(zhì)量真的很差,會帶來大量的誤差,那最好把?submaps.num_range_data?設(shè)置成 30,讓前端生成盡可能多的 Submap,每一副 Submap 的累計誤差盡可能少。但代價就是需要消耗更多內(nèi)存,后端優(yōu)化也會需要更多的算力,如果 CPU 性能不夠,會讓整個 SLAM 算法無法實時運行,建圖和定位都出現(xiàn)延遲。如果傳感器質(zhì)量非常好,那可以毫不猶豫的把參數(shù)值設(shè)置成 90,既不影響建圖質(zhì)量,也能降低計算資源需求。


第二部分要介紹的是點云匹配器相關(guān)的參數(shù),前端中有兩個匹配器,一個是 Real Time Correlative Scan Match,另一個是 Ceres Scan Match。

Real Time Correlative Scan Match?是前端部分中的第一個匹配器,通過 use_online_correlative_scan_matching 來開關(guān)。在 Submap 構(gòu)建的流程中該匹配器用于較大范圍較粗略的搜索點云在 Submap 上的位置,目的是為了盡可能的消除傳感器帶來的錯誤。

在點云匹配前,carto 會利用先前的位姿加上 IMU 和里程計的角速度線速度來預(yù)測當(dāng)前點云可能的位置,如果里程計和IMU的質(zhì)量比較差,很可能會預(yù)測出錯誤的結(jié)果,導(dǎo)致第二個匹配器在有限的迭代步驟內(nèi)無法匹配出正確的位姿,從而給 Submap 帶來點云匹配的累計誤差,這種因為匹配失敗帶來的誤差是無法消除的,一旦插入了 Submap ,那就會永遠出現(xiàn)在地圖上了,看起來就是一面墻在地圖上有兩條黑線或者是很糊很厚。

在 IMU 和里程計的不可靠或者是沒有這倆傳感器的情況下最好打開?use_online_correlative_scan_matching 。RTCSM 匹配器的參數(shù)里,兩個搜索窗口的參數(shù)是重點觀察對象,real_time_correlative_scan_matcher.linear_search_window 和?real_time_correlative_scan_matcher.angular_search_window,這兩個參數(shù)作用指定 RTCSM 在預(yù)測位置的平移半徑和旋轉(zhuǎn)角度范圍內(nèi)進行搜索,linear_search_window?的單位是米,angular_search_window?的單位是弧度。

設(shè)置這兩個參數(shù)有一個比較直接好用的技巧,那就是先把兩個值都設(shè)置的很大,例如 1 和 math.rad(90),然后修改 carto 的源碼,?位置是?local_trajectory_builder_2d.cc 里的?AddAccumulatedRangeData 函數(shù),把函數(shù)內(nèi)的預(yù)測位姿 pose_prediction 和最終匹配位姿 pose_estimate_2d 都記錄下來,建圖完成后計算全部預(yù)測位姿和匹配位姿中的最大距離差和角度差,把這個差值作為兩個搜索窗口的參數(shù)值。

如果IMU和里程計都非??煽?,精度非常高,預(yù)測位姿和匹配位姿的差很小很小,可以嘗試關(guān)閉 RTCSM 匹配器,節(jié)約計算資源。當(dāng)搜索窗口設(shè)置的太大的時候,會消耗大量的內(nèi)存和算力,如果運行平臺的性能無法支撐,可以考慮關(guān)閉 IMU 和 里程計數(shù)據(jù)的輸入,只用激光雷達,同時保證機器人移動的盡可能慢和平滑,只有激光雷達的情況下 carto 會假設(shè)機器人是勻速移動,使用先前的兩個匹配位姿計算預(yù)估位姿。


未完待續(xù),等有空再更新





一點Cartographer的調(diào)參心得:前端篇的評論 (共 條)

分享到微博請遵守國家法律
兴宁市| 罗田县| 曲周县| 虞城县| 江油市| 林周县| 阿巴嘎旗| 女性| 枣庄市| 怀远县| 大邑县| 青田县| 深州市| 镇原县| 信阳市| 同心县| 通化市| 潍坊市| 商都县| 海林市| 甘孜县| 赤峰市| 茌平县| 曲水县| 泗阳县| 水城县| 定边县| 沙河市| 和平县| 缙云县| 高碑店市| 海兴县| 柘城县| 黄骅市| 大悟县| 新郑市| 华阴市| 伊宁县| 黎城县| 温泉县| 襄垣县|