Cartographer框架簡述

catographer框架分為前端和后端

前端包括雷達數據處理;位姿預測;掃描匹配和柵格地圖更新。

后端包括后端:線程池任務與調度;向位姿圖添加節點,計算節點的子圖內約束和子圖間約束(回環檢測);多分辨率地圖;基于分支定界算法的粗匹配,優化問題的構建與求解。

前端

雷達數據處理

local_trajectory_builder_2d.AddRangeData

點云數據處理,具體包括多傳感器時間同步,點云數據去畸,以及體素濾波。

位姿預測

local_trajectory_builder_2d.AddAccumulatedRangeData.ExtrapolatePose

利用pose,以及傳入的里程計,imu數據計算出線速度和角速度,不同的情況選擇參與運算的傳感器不同。利用線速度角速度乘以時間預測平移和姿態。

詳見《》

掃描匹配

掃描匹配的目的是找到雷達點云在柵格地圖中的位置與角度。

掃描匹配包括相關性掃描匹配RealTimeCorrelativeScanMatcher2D和ceres掃描匹配

將相關性掃描匹配的位姿作為ceres掃描匹配的初始值。

詳見《Cartographer 基于ceres的掃描匹配-CSDN博客》

更新概率柵格地圖

將雷達數據寫入概率柵格地圖

詳見《Cartographer 柵格地圖更新-CSDN博客

后端

后端主要實現的是位姿圖優化。向位姿圖添加節點AddNode,計算節點的子圖內約束和子圖間約束(回環檢測);多分辨率地圖;基于分支定界算法的粗匹配,優化問題的構建與求解。

cartographer 中的節點共有兩類---關鍵幀節點和子圖節點。

關鍵幀指的是子圖關鍵幀,而子圖是由連續的若干個激光關鍵幀拼接到一起形成的子地圖。

在carto中子圖節點稱為submap,關鍵幀節點稱為node

構建約束是在這兩類節點之間構建。

圖中,三角表示子圖,圓圈表示節點,由于傳感器的一次掃描數據可能插入到多個不同的子圖,所以同一個節點可能和多個子圖之間存在一定的匹配關系。

子圖內約束:

local 坐標系下,子圖原點指向tracking_frame的坐標變換

????node和insertion_submaps之間的約束,由于在前端是,一個node只插入到了兩個submap中,所以個node最多只有兩個約束為子圖內約束。

子圖間約束:

根據global坐標計算初值,然后通過分支丁界算法粗匹配與ceres的精匹配,獲取校準后的位姿,最后計算local坐標系下,子圖原點指向校準后的節點間的坐標變換。

????????使用分支定界算法之前需要先構建多分辨率地圖。

構建優化問題,并求解:

  1. 確定2個節點在global坐標系下的相對位姿變換
  2. 通過其他方式再次獲取這兩個節點的相對位姿變換
  3. 對這2個先對位姿變換的差的最小二乘問題進行求解
  4. 進行求解之后會得到一個增量,將當前位姿加上這個增量后就得到了優化后的位姿

? ? ?cartographer中通過ceres添加殘差項構建優化問題求解。

詳見《》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696352.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++之Easyx——圖形庫的基本功能(1):界面操作

最近,我覺得使用控制臺編寫游戲太沒意思了!! 所以我開始研究圖形庫了~ 一、setinitmode 函數定義 void EGEAPI setinitmode(int mode, int x CW_USEDEFAULT, int y CW_USEDEFAULT); //設置初始化模式,mode0為普通&#xff0c…

Spark中寫parquet文件是怎么實現的

背景 本文基于 Spark 3.5.0 寫本篇文章的目的是在于能夠配合spark.sql.maxConcurrentOutputFileWriters參數來加速寫parquet文件的速度,為此研究一下Spark寫parquet的時候會占用內存的大小,便于配置spark.sql.maxConcurrentOutputFileWriters的值&#…

Javascript怎么輸出內容?兩種常見方式以及控制臺介紹

javascript是一種非常重要的編程語言,在許多網頁中它被廣泛使用,可以實現許多交互效果和動態效果。輸出是javascript中最基本的操作之一,下面將介紹兩種常見的輸出方式。 一、使用console.log()函數輸出 console.log()函數是常用的輸出函數…

Jmeter實現階梯式線程增加的壓測

安裝相應jmeter 插件 1:安裝jmeter 管理插件: 下載地址:https://jmeter-plugins.org/install/Install/,將下載下來的jar包放到jmeter文件夾下的lib/ext路徑下,然后重啟jmeter。 2:接著打開 選項-Plugins Ma…

在Linux上安裝Docker: 一站式指南

Docker 是一款強大的容器化平臺,為開發者提供了一種輕松打包、發布和運行應用的方式。在本文中,我們將探討如何在Linux操作系統上安裝Docker,為你提供一站式指南。 步驟1: 卸載舊版本 在安裝新版Docker之前,建議先卸載舊版本&am…

三十年一個大輪回!日股突破“泡沫時期”歷史高點

2月22日周四,英偉達四季報業績超預期,而且本季度業績指引非常樂觀,提振美股股指期貨并成為芯片股和AI概念股情緒的重要催化劑。今日亞洲芯片股和AI股起飛,日本在芯片股的帶動下突破1989年泡沫時期以來的歷史最高收盤價。 美股方面…

我之前炒股虧麻了,找百融云AI Agent談了談心

春節之前,A股和H股都跌麻了,但是機構的路演和調研反而多了。因為:寫不完的安撫、說不完的陪伴、聽不完的客戶指責、以及撿不完的AH股便宜貨。 有一位血液里流淌著美式咖啡的職場白領,雖然這些年在股市過得很不如意,但…

C語言---鏈表

一.定義 鏈表是由一系列節點組成,每個結點包含兩個域,一個是數據域,數據域用來保存用戶數據,另一個是指針域,保存下一個節點的地址。鏈表在內存中是非連續的。 二.分類 靜態鏈表 動態鏈表 單向鏈表 雙向鏈表 循環鏈…

maven使用問題及解決辦法匯總

文章目錄 1、maven clean后打包出現Cannot create resource output directory2、把已有jar包打包進本地maven倉庫 1、maven clean后打包出現Cannot create resource output directory 主要原因是target目錄被別的程序占用了,最笨的辦法是重啟電腦,當然也…

C++跨模塊釋放內存

linux一個進程只有一個堆,不要考慮這些問題,但是windows一個進程可能有多個堆,要在對應的堆上釋放。 一, MT改MD 一個進程的地址空間是由一個可執行模塊和多個DLL模塊構成的,這些模塊中,有些可能會鏈接到…

代碼隨想錄訓練營第29天| 491.遞增子序列、46.全排列、47.全排列 II

491.遞增子序列 題目鏈接&#xff1a;491. 非遞減子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<List<Integer>> ans new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {backtrack(nums, …

(十三)【Jmeter】線程(Threads(Users))之tearDown 線程組

簡述 操作路徑如下: 作用:在正式測試結束后執行清理操作,如關閉連接、釋放資源等。配置:設置清理操作的采樣器、執行順序等參數。使用場景:確保在測試結束后應用程序恢復到正常狀態,避免資源泄漏或對其他測試的影響。優點:提供清理操作,確保測試環境的整潔和可重復性…

租用海外服務器,自己部署ChatGPT-Next-Web,實現ChatGPT聊天自由,還可以分享給朋友用

前言 如果有好幾個人需要使用ChatGPT&#xff0c;又沒有魔法上網環境&#xff0c;最好就是自己搭建一個海外的服務器環境&#xff0c;然后很多人就可以同時直接用了。 大概是情況是要花80元租一個一年的海外服務器&#xff0c;花15元租一個一年的域名&#xff0c;然后openai 的…

centos安裝擴展

centos下安裝php擴展時遇到的問題php 1.imapgit cd /root/php-5.6.27/ext/imap /usr/local/php/bin/phpize ./configure --prefix/usr/local/imap 錯誤1github configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happe…

一 些有代表性的相位解包裹算法

Itoh首先給出了傳統解包裹算法的數學描述!。傳統的相位解包裹操作是通過對空間相鄰點相位值的比較來完成的。根據抽樣定理&#xff0c;如果相鄰采樣點的相位差不超過z&#xff0c;則對應的相位解包裹處理是非常簡單的&#xff0c;理論上以某點為起始點沿某一路徑對包裹相位的差…

中科院計算所:什么情況下,大模型才需要檢索增強?

ChatGPT等大型語言模型在自然語言處理領域表現出色。但有時候會表現得過于自信&#xff0c;對于無法回答的事實問題&#xff0c;也能編出一個像樣的答案來。 這類胡說亂說的答案對于醫療等安全關鍵的領域來說&#xff0c;是致命的。 為了彌補這一缺陷&#xff0c;研究者們提出…

ios抓包Tunnel to......443

fiddler官網下載“CertMaker for iOS and Android”插件&#xff0c;官網插件&#xff1a;https://www.telerik.com/fiddler/add-ons 雙擊運行插件后&#xff0c;重啟fiddler&#xff0c;ios重新安裝證書即可

貓頭虎分享已解決Bug || 系統更新失敗(System Update Failure):UpdateError, UpgradeFailure

博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面試準備的寶典&#xff01;《IDEA開發秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鴻蒙》 …

Java并發編程面試題53道-JUC

Java中的JUC是"Java Concurrency Utilities"的縮寫&#xff0c;它是指Java平臺從Java 5版本開始引入的一系列用于處理多線程并發編程的工具類和框架。這個包(java.util.concurrent)極大地增強了Java在并發編程領域的支持&#xff0c;提供了一系列高級抽象如線程池&am…

Sora:視頻生成模型作為世界模擬器

我們探索了視頻數據上生成模型的大規模訓練。具體來說&#xff0c;我們在可變持續時間、分辨率和長寬比的視頻和圖像上聯合訓練文本條件擴散模型。我們利用了一個在視頻和圖像潛在碼的時空塊上操作的變壓器架構。我們規模最大的模型 Sora 能夠生成一分鐘的高保真視頻。我們的結…