ROS學習筆記(17):建圖與定位(1)

目錄

0.前言

1.定位和建圖

1.里程計(Odometry)

2.掃描匹配(Scan Matching)

3.結尾


0.前言

好久不見各位,前段時間忙著考試(6級和一些專業課)和擺爛斷更了近30天,現在哥們回來更新了。前面講了一大堆ROS和一些機器人理論知識,而這次我們將進入到SLAM(前面在小大小鬧,現在正題開始)。

1.定位和建圖

·確認機器人相對環境的狀態(位姿——位置和姿態)。

·定位可以以全局框架來進行,也可以以相對一個任意起點來進行。

·定位是Slam的關鍵組成。

簡單介紹一下經典Slam架構的主要5個部分:

1)傳感器數據:指機器人中里程計、激光雷達、雙目相機等傳感器信息的讀取。(下文的里程計里也有提及)

2)前端匹配:主要任務為對特征進行處理,估計相鄰地圖間的相對位姿,得到局部地圖。

3)后端優化(Optimization):后端接收不同時刻前端測量的相對位姿,和回環檢測的信息,對其進行優化,得到全局一致的軌跡和地圖。

4)回環檢測(Loop?Closing):回環檢測判斷機器人是否曾經到達過該位姿,檢測到回環則將信息傳遞給后端進行處理。

5)建圖(Mapping):根據估計的軌跡來建立對應的地圖。

同樣也可以參看谷歌的SLAM算法Cartographer的結構:

1.里程計(Odometry)

里程計:從一個姿態開始,結合運動控制和測量來估計當前姿態。(傳感器數據中的一種)

通常我們會使用一個速度控制器、輪式編碼器、IMU等設備來動態集成可用的信息。

速度控制器理解成為加速度配比器被我認為是更優的理解方式,因為現實中速度并不可能瞬間獲取到,而是經由加速度和時間的累積等來,同理的位移也是是由速度和時間的累積得來:

我們都希望一切的數據精準無誤,但受限于上圖的開環結構和現實中器件始終無法100%精準運行的限制導致上面的每一個環節都有可能被加入噪聲(noise)干擾:

實際表現便是我們希望機器人位移3m但實際上卻位移了3.1m。受限于開環控制沒有反饋機制來對誤差進行矯正,所以一旦噪聲出現將會隨著時間不斷累積——表現為第二次位移位移了3.2m誤差就來到了0.3m。

依舊是這張圖,當噪聲在加速度環節就產生了,那隨著加速度和時間的不斷積分變換下去,在子環節都將產生噪聲累積,且噪聲累積是幾何關系的:

一旦噪聲產生且不斷累積,機器人的位置的不確定性就會不斷增加,當時間無窮時,機器人就完全無法確認位置了。回歸到本章的重點定位和建圖,當機器人本體無法精準定位時,機器人的建圖也就失去了精確性,設想實際地圖的長度為6m但因為定位的噪聲就導致了計算得到了5.7m或者6.3m。為了解決這種情況就出現了以后我們會講到的回環檢測。

2.掃描匹配(Scan Matching)

OK,獲取到了傳感器的可用數據后需要需要進行前端匹配,而掃描匹配自然就是其中一種方式。(其實掃描匹配和視覺上經常拼接是一樣的,只是使用了專業名詞。)

這里推薦查看:An ICP variant using a point-to-line metric這篇論文,是有關迭代最近點算法的。在ROS里面就是點云了。

·掃描匹配:跨時間收集的范圍測量定位方式,掃描匹配。

在定位當中,我們需要參考世界框架來確定自己的位置,而掃描匹配大多就是使用激光雷達SLAM算法的關鍵模塊。而在使用rgb和depth camera(rgb相機和深度相機)時又將會深度探討最近點算法迭代的概念和一些實現機理。

擴展:剛巧的是,最近我在游玩鳴潮是經常受困于其索敵系統,于是打算在B站上看一下大佬們對這方面的解釋,當我漸漸觀看后巧妙的發現原來游戲的索敵系統竟和掃描匹配的思想極為類似。附上視頻鏈接:我決定自己做一套索敵系統_單機游戲熱門視頻 (bilibili.com)

谷歌的slam算法Cartographer當中掃描匹配是一個相當重要的模塊,掃描匹配在本地進行運作使地圖本地的一致性。

3.結尾

OK,因為知識量確實很大就先到這里了,下一篇文章我們來重點擴展講解掃描匹配,現在已經正式步入到了SLAM的領域,對于是自學的我來說也需要一點時間來思考如何才能將這些內容整理好、講述出來。

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

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

相關文章

計算機畢業設計Python+Spark股票基金推薦與預測系統 股票基金可視化 股票基金推薦系統 股票基金可視化系統 股票基金數據分析 股票基金爬蟲大數據

目 錄 摘 要 Abstract 第1章 前 言 1.1 項目的背景和意義 1.2 研究現狀 1.3 項目的目標和范圍 1.4 論文結構簡介 第2章 技術與原理 2.1 開發原理 2.2 開發工具 2.3 關鍵技術 第3章 需求建模 3.1 系統可行性分析 3.2 功能需求分析 3.3 非功能性…

C++Primer Plus 第十四章代碼重用:編程練習,第一題

CPrimer Plus 第十四章代碼重用:編程練習,第一題 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 CPrimer Plus 第十四章代碼重用:編程練習,第一題 提示:寫完文章后,目錄可以自動生成&am…

高職人工智能專業實訓課之“生成對抗網絡(GAN)”

一、前言 生成對抗網絡(GAN)作為人工智能領域的一項重要技術,已經在圖像生成、風格遷移、數據增強等多個領域展現出巨大的潛力和應用價值。為了滿足高職院校對GAN專業實訓課程的需求,唯眾人工智能教學實訓憑借其前沿的教育技術平…

mst[講課留檔]

最小生成樹(Minimum Spanning Tree) (1)概念 我們知道,樹是有 n n n個結點, n ? 1 n-1 n?1條邊的無向無環的連通圖。 一個連通圖的生成樹是一個極小的連通子圖,它包含圖中全部的 n n n個頂點,但只有構成一棵樹的 n ? 1 n-1 …

內容營銷專家劉鑫煒:越是賺不到錢,越要加大推廣力度

這兩天,一位跟我們有長期合作關系的小微企業主老蘇問我。 “現在錢這么不好賺,品牌推廣應該怎么做?” 我說:“這是好機會,加大投放力度!” 老蘇很是不解,這時候不開源節流,還要加…

使用Git從Github上克隆倉庫,修改并提交修改

前言 本次任務主要是進行github提交修改的操作練習實踐,本文章是對實踐過程以及遇到的問題進行的一個記錄。 在此之前,我已經簡單使用過github,Git之前已經下好了,所以就省略一些步驟。 步驟記錄 注冊github賬號,gi…

【C++】C++指針在線程中調用與受保護內存空間讀取方法

引言 在C的多線程編程中,正確地管理內存和同步訪問是確保程序穩定性和安全性的關鍵。特別是當涉及到指針在線程中的調用時,對受保護內存空間的訪問必須謹慎處理,以防止數據競爭、死鎖和內存損壞等問題。本文將詳細探討C指針在線程中調用時如何…

理解 React 的嚴格模式

文章目錄 有什么優劣優點:缺點: 使用場景如何使用為整個應用啟用嚴格模式一部分代碼啟用嚴格模式 React 的 Strict Mode(嚴格模式)是一種用于檢測應用中潛在問題的開發工具。它不會渲染任何可見的 UI 元素,而是通過激活…

element-ui如何做表單驗證

Element UI 使用表單驗證通常涉及兩個主要組件&#xff1a;el-form 和 el-form-item。 el-form 負責管理表單數據和驗證規則&#xff0c;而 el-form-item 用于定義需要驗證的表單項。 <template><el-form :model"form" :rules"rules" ref"fo…

易校網校園綜合跑腿小程序源碼修復運營版

簡介&#xff1a; 易校網校園綜合跑腿小程序源碼修復運營版&#xff0c;帶服務端客戶端前端文檔說明。 源碼安裝方法&#xff1a; 需要準備小程序服務號 服務器 備案域名 校園網跑腿小程序源碼需要準備 1.小程序 2.服務器&#xff08;推薦配置2h4g3m&#xff09; 3.域名…

使用JMeter+Grafana+Influxdb搭建可視化性能測試監控平臺

【背景說明】 使用jmeter進行性能測試時&#xff0c;工具自帶的查看結果方式往往不夠直觀和明了&#xff0c;所以我們需要搭建一個可視化監控平臺來完成結果監控&#xff0c;這里我們采用三種JMeterGrafanaInfluxdb的方法來完成平臺搭建 【實現原理】 通過influxdb數據庫存儲…

開源模型應用落地-FastAPI-助力模型交互-WebSocket篇(五)

一、前言 使用 FastAPI 可以幫助我們更簡單高效地部署 AI 交互業務。FastAPI 提供了快速構建 API 的能力,開發者可以輕松地定義模型需要的輸入和輸出格式,并編寫好相應的業務邏輯。 FastAPI 的異步高性能架構,可以有效支持大量并發的預測請求,為用戶提供流暢的交互體驗。此外,F…

【圖論】樹鏈剖分

樹鏈剖分詳解 - 自為風月馬前卒 - 博客園 (cnblogs.com) P3384 【模板】重鏈剖分/樹鏈剖分 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include<iostream> using namespace std;void dfs1(int u,int father){ fa[u]father; dep[u]dep[father]1; sz[u]1;for(int ih…

SpringBoot中整合ONLYOFFICE在線編輯

SpringBoot整合OnlyOffice SpringBoot整合OnlyOffice實現在線編輯1. 搭建私有的OnlyOffice的服務2. SpringBoot進行交互2.1 環境2.2 我們的流程2.3 接口規劃2.3.1 獲取編輯器配置的接口2.3.2 文件下載地址2.3.3 文件下載地址 3. 總結4. 注意4.1 你的項目的地址一定一定要和only…

Java中的單元測試與集成測試最佳實踐

Java中的單元測試與集成測試最佳實踐 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討Java中的單元測試與集成測試最佳實踐。在軟件開發中&am…

三層交換基礎

一、什么是三層交換 三層交換是一種在OSI模型第三層&#xff0c;即網絡層上工作的網絡設備技術&#xff0c;它整合了二層交換機的功能和路由器的部分功能&#xff0c;以實現更高效的網絡數據轉發和路由選擇。三層交換技術的核心在于結合了二層交換技術和三層轉發技術&#xff…

【RabbitMQ實戰】Springboot 整合RabbitMQ組件,多種編碼示例,帶你實踐 看完這一篇就夠了

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、對RabbitMQ管理界面深入了解1、在這個界面里面我們可以做些什么&#xff1f; 二、編碼練習&#xff08;1&#xff09;使用direct exchange(直連型交換機)&a…

2024 年的 13 個 AI 趨勢

2024 年的 13 個 AI 趨勢 人工智能對環境的影響和平人工智能人工智能支持的問題解決和決策針對人工智能公司的訴訟2024 年美國總統大選與人工智能威脅人工智能、網絡犯罪和社會工程威脅人工智能治療孤獨與對人工智能的情感依賴人工智能影響者中國爭奪人工智能霸主地位人工智能…

Java中的機器學習模型集成與訓練

Java中的機器學習模型集成與訓練 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討在Java中如何進行機器學習模型的集成與訓練。隨著人工智能和機器…

【Lua小知識】Vscode中Emmylua插件大量報錯的解決方法

起因 Vscode寫Lua用的好好的&#xff0c;最近突然出現了大量報錯。 看報錯是有未定義的全局變量&#xff0c;這里查日志才發現是由于0.7.5版本新增診斷啟用配置&#xff0c;所以導致了原先好的代碼&#xff0c;現在出現了大量的報錯。 解決方案一 最直接的方法當然是在配置中直…