costmap 簡單介紹(二)

2021-08-28 14:03:53 字數 1261 閱讀 1941

costmap程式架構

obstaclayer主要處理機械人移動過程中產生的障礙物資訊。

inflationlayer主要處理機械人導航地圖上的障礙物資訊膨脹(讓地圖上的障礙物比實際障礙物的大小更大一些),盡可能使機械人更安全的移動。

costmap在mapupdateloop執行緒中執行更新地圖的操作,每個層的工作流程如下:

(1)staticlayer工作流程

上圖是staticlayer的工作流程,updatebounds階段將更新的界限設定為整張地圖,updatecosts階段根據rolling引數(這個引數是什麼意思)(是否採用滾動視窗)設定的值,如果是,那靜態地圖會隨著機械人移動而移動,則首先要獲取靜態地圖座標系到全域性座標系的轉換,再更新靜態地圖層到master map裡。

(2)obstaclelayer工作流程

上圖是obstaclelayer的工作流程,updatebounds階段將獲取感測器傳來的障礙物資訊經過處理後放入乙個觀察佇列中,updatecosts階段則將障礙物的資訊更新到master map。

(3)inflationlayer工作流程

上圖是inflationlayer的工作流程,updatebounds階段由於本層沒有維護的map,所以維持上一層地圖呼叫的bounds值(處理區域)。updatecosts階段用了乙個celldata結構儲存master map中每個grid點的資訊,其中包括這個點的二維索引和這個點附近最近的障礙物的二維索引。改變每個障礙物cell附近前後左右四個cell的cost值,更新到master map就完成了障礙物的膨脹。

上面具體過程還是要檢視原版的code具體形式。

併發queue的簡單介紹(二)

priorityblockingqueue基於優先順序的阻塞佇列 優先順序的判斷通過建構函式傳入的compator物件來決定,也就是傳入的物件必須實現comparable介面 在實現priorityblockingqueue時,內部執行緒同步鎖採用的是公平鎖,他也是個無界的對列。測試 public ...

區塊鏈的簡單介紹(二)

一般來說雙花問題包含兩個子問題,一種是同一筆錢,因為同步延遲的問題被多次使用,像我們剛才舉的例子就是這種情況,另一種是一筆錢雖然只使用一次,但是通過黑客攻擊或者造假錢的方式,把這筆錢又複製了乙份,再次使用,雙花問題目前主要是通過第三方機構來解決的。像第一種情況,現實生活中我們的交易會交給銀行,銀行會...

thrift介紹及應用(二) 簡單應用

接上文 thrift介紹及應用 一 介紹 thrift檔案 demo.thirft,來自官網 如下 struct userprofile service userstorage 執行 thrift gen cpp demo.thrift則生成的檔案如下 需要強調的是,thrift有自己的網路傳輸格式...