跳到正文

Wiki

terrain_analysis(近場地面與障礙高差分析)

約 22 分鐘閱讀

本文由簡體中文內容確定性轉換,並受版本化術語表保護。

1.terrain_analysis(近場地面與障礙高差分析)

1.1.地形分析節點分工

節點 主要分工 輸出 當前使用者
terrain_analysis 較細的近場地形分析,當前下采樣尺度為 0.05 m terrain_map 區域性代價地圖
terrain_analysis_ext 擴充套件更大範圍,當前下采樣尺度為 0.1 m terrain_map_ext 全域性代價地圖

兩個節點都訂閱 loam_interface 的 lidar_odometry 和 registered_scan;ext 還訂閱 terrain_map,當前以輸入里程計的位置為中心,4 m內採用近場結果、4 m外計算擴充套件結果,再合併輸出。本塊只整理 terrain_analysis,terrain_analysis_ext 的引數留到下一塊。

本節點在 odom 的水平格子內估計地面高度,輸出點的 intensity 改為相對地面的高度差,單位為 m,已經不是雷達反射強度。當前區域性代價地圖的 IntensityVoxelLayer 按該欄位篩選障礙,允許範圍為0.1~2.0 m,並另外檢查點座標高度、距離等條件;不是把正負高度相加為通行代價。

1.2.上坡下坡先看哪些引數

先抓住兩個問題:正常的坡會不會被當成障礙,以及坡上的地面點有沒有被過濾掉。 這段講的是導航系統如何看待坡;目前沒有坡道測試,不能從這些數值判斷實車最多能爬幾度。

你看到的現象 先看哪些引數 用直白的話解釋
正常坡被畫成障礙,小車不願意走 useSorting、quantileZ 系統要先給每一小片區域選一個“地面高度”。選得太低,斜坡較高的一側就可能看起來像凸出的障礙。當前 True、0.2是在採用較低的一檔高度估計地面,不是開啟了“允許上坡”
上坡遠處的地面點消失 maxRelZ 當前地面點若高到輸入雷達位置上方0.5 m之外,會被過濾。要檢查坡是不是被這個上限截掉,而不是一看到不上坡就改排序開關
下坡遠處的地面點消失 minRelZ 當前地面點若低到輸入雷達位置下方1.5 m之外,會被過濾。這個下限影響系統能不能繼續看到較低處的坡面
下坡較低部分被當成坑或落差 considerDrop True 會把“低於這一小片估計地面”的點也按高差處理,可能識別坑,也可能誤判正常坡。當前 False沒有開啟這種處理,不表示禁止下坡;它也會忽略一部分真實凹陷
坡上的小高差被當成障礙 下游 min_obstacle_intensity 當前區域性代價地圖採用0.1 m,也就是10 cm的高度差下限。滿足其他條件時,達到或超過這個門檻的點可能被畫成障礙。這項在後續代價地圖引數塊中,不是本節點的引數
改了 disRatioZ,遠處坡點仍然消失 disRatioZ 與上面的高度上下限 它只在前面的快取篩選中放寬高度範圍,最後輸出仍受 minRelZ/maxRelZ 限制,所以不能簡單靠調大它解決坡點丟失

這裡的高低按程式碼當前使用的高度方向計算,實際座標方向仍需核對。正常下坡是一片連續降低的地面;坑、斷崖或向下臺階則涉及地面突然降低,不能把它們都歸為同一個“下坡開關”。

例如,其他條件都滿足時:同一個坡上的點,若被算成比這一小片地面高6 cm,會低於當前10 cm障礙門檻;若地面高度估計偏低,把它算成高15 cm,就可能被畫成障礙。這裡是區域性地面高度差,不是整條坡的總高度。調整地面估計或抬高障礙門檻,可能減少坡面誤判,也可能讓真實低障礙被忽略,不能只看坡能不能通過。

vehicleHeight=0.5 限制的是正常輸出點相對估計地面的高度差。它沒有表示“車輛能爬0.5 m高的臺階”,也沒有規定允許的坡度。

所以,坡道分析先沿著這條順序看:地面高度選得對不對 → 坡點有沒有被刪掉 → 下游是否把正常高差當成障礙。 動態物體清理、舊點保留時間和更新次數主要解決其他問題;當坡麵點缺失時再檢查它們的間接影響。

1.3.引數

1.3.1.ros__parameters(ROS節點引數)

1.3.1.1.參數列
terrain_analysis:
  ros__parameters:
    scanVoxelSize: 0.05
    decayTime: 0.5
    noDecayDis: 0.0
    clearingDis: 0.0
    useSorting: True
    quantileZ: 0.2
    considerDrop: False
    limitGroundLift: False
    maxGroundLift: 0.3
    clearDyObs: True
    minDyObsDis: 0.3
    minDyObsAngle: 0.0
    minDyObsRelZ: -0.3
    absDyObsRelZThre: 0.2
    minDyObsVFOV: -28.0
    maxDyObsVFOV: 33.0
    minDyObsPointNum: 1
    noDataObstacle: False
    noDataBlockSkipNum: 0
    minBlockPointNum: 10
    vehicleHeight: 0.5
    voxelPointUpdateThre: 100
    voxelTimeUpdateThre: 1.0
    minRelZ: -1.5
    maxRelZ: 0.5
    disRatioZ: 0.2
引數名 當前值 單位 實車處理建議 作用 調大效果 調小效果 生效條件/備註
scanVoxelSize 0.05 m,三維體素邊長 實物執行時重點觀察,有問題再針對性調整 對累計點雲進行體素降取樣 點通常更少,計算和快取負擔下降,小障礙細節可能減少 點通常更多,細節增加,負擔上升 應為正數;不是地面格子尺寸或定位精度;還會影響地面樣本數
decayTime 0.5 s,輸入點雲時間 實物執行時重點觀察,有問題再針對性調整 更新快取時剔除過期代表點 儲存歷史更久,地面樣本更充足,舊障礙殘留也可能更久 歷史更短,變化跟隨更快,可能因點少出現空洞 僅體素更新時檢查;近距離免衰減可繞過;不是0.5秒準時清除
noDecayDis 0.0 m,水平距離 根據實際功能需求開啟或設定 指定不受時間衰減限制的近距離區域 免衰減範圍擴大,近場歷史和舊點保留更多 免衰減範圍縮小;0表示不保留免衰減區 使用 d < noDecayDis;還用於無資料障礙初始化的移動距離門檻
clearingDis 0.0 m,水平清圖半徑 根據實際功能需求開啟或設定 外部觸發清圖時清除半徑內的快取點 一次清除範圍擴大 一次清除範圍縮小;0沒有正半徑清除區 僅清圖事件生效;方向是半徑內,不是半徑外;map_clearing 訊息可覆蓋此變數
useSorting True 不適用,布林 通常保持當前值,不作為優先除錯項 地面高度採用排序分位值或最小值 不適用 不適用 True 使用 quantileZ;False 使用最小高度;不保證上坡,也沒有正負高度抵消
quantileZ 0.2 無量綱,分位比例 實物執行時重點觀察,有問題再針對性調整 選擇排序高度中的地面樣本 地面估計通常抬高,凸起相對高度下降,可能漏掉低障礙 地面估計通常降低,凸起相對高度上升,更易受低離群點影響 useSorting=True 時生效;按 floor(q×N) 取下標並截到有效範圍,宜在0~1內設定
considerDrop False 不適用,布林 根據實際功能需求開啟或設定 是否把低於估計地面的高度差也取絕對值輸出 不適用 不適用 False 時負高度差點被過濾;True 為 abs(z−地面);能與排序同時執行,但坡面可能出現額外障礙
limitGroundLift False 不適用,布林 根據實際功能需求開啟或設定 限制分位地面相對最低樣本的抬升幅度 不適用 不適用 僅排序分支使用;當前關閉,不限制地面抬升
maxGroundLift 0.3 m,相對最低樣本的高度差 當前執行不使用這個引數,暫不調整 地面抬升限制的上限 開啟限制後:允許地面抬得更高 開啟限制後:更接近最低樣本,可能提高障礙高度差 當前 limitGroundLift=False,不影響輸出;還需 useSorting=True
clearDyObs True 不適用,布林 實物執行時重點觀察,有問題再針對性調整 根據歷史點與本幀回波篩掉疑似動態殘留格 不適用 不適用 當前開啟;不是目標跟蹤或永久禁行記錄,可能受遮擋、稀疏回波影響
minDyObsDis 0.3 m,水平距離 實物執行時重點觀察,有問題再針對性調整 劃分近距離直接計數與較遠的角度篩選分支 近距離直接計數區擴大 近距離直接計數區縮小 僅動態清理使用;近點直接增加計數,不是簡單忽略近點;本幀點仍可重置該格
minDyObsAngle 0.0 °,度 實物執行時重點觀察,有問題再針對性調整 對歷史候選和本幀重置使用同一仰角門檻 提高兩輪角度門檻,淨清理效果不單調 降低兩輪角度門檻,淨清理效果不單調 僅動態清理使用;角度公式含 minDyObsRelZ,不能只按“越大清得越少”理解
minDyObsRelZ -0.3 m,相對輸入位姿的 z 偏置 上實物前必須核對並正確配置 調整候選仰角計算的垂直基準 同一點的計算仰角下降 同一點的計算仰角上升 僅動態清理使用;同時影響候選計數和本幀重置;當前角門檻0°對應 Δz > -0.3 m
absDyObsRelZThre 0.2 m,雷達自身 z 頻寬 實物執行時重點觀察,有問題再針對性調整 讓靠近雷達自身水平面的歷史候選繞過垂直視場視窗 旁路帶擴大,更多點可被計數 旁路帶縮小 僅動態清理使用;條件是 abs(z_L)<阈值,與視場判斷為“或”關係
minDyObsVFOV -28.0 °,度 上實物前必須核對並正確配置 動態候選在雷達自身系的垂直角下界 下界提高,角視窗收窄 下界降低,角視窗擴大 僅動態清理使用;有高度帶旁路;這是軟體篩選視窗,不能直接當 MID360 標稱視場
maxDyObsVFOV 33.0 °,度 上實物前必須核對並正確配置 動態候選在雷達自身系的垂直角上界 上界提高,角視窗擴大 上界降低,角視窗收窄 僅動態清理使用;應大於下界;需結合實際雷達座標軸和篩選目的核對
minDyObsPointNum 1 點計數閾值 實物執行時重點觀察,有問題再針對性調整 候選計數達到門檻後,篩掉該格本輪輸出 較遠區域通常需要更多候選才剔除,殘留可能增加 更容易剔除候選格,誤刪風險可能增加 僅動態清理使用,宜為正整數;近距離分支直接增加此閾值,不是純粹的實測點數門檻
noDataObstacle False 不適用,布林 根據實際功能需求開啟或設定 是否為欠缺地面樣本的格子合成障礙點 不適用 不適用 還需無資料處理初始化完成;False 不合成障礙,不代表下游一定把未知區域視為可通行
noDataBlockSkipNum 0 次,格子邊界跳過迭代 當前執行不使用這個引數,暫不調整 合成無資料障礙前,跳過靠近有效資料的部分欠資料格 開啟無資料障礙後:通常跳過更多邊界格 開啟無資料障礙後:跳過更少,0不跳過 當前 noDataObstacle=False,不影響結果;不是米或幀數,使用非負整數
minBlockPointNum 10 點,鄰域高度樣本數 實物執行時重點觀察,有問題再針對性調整 規定正常地形輸出需要的最低地面樣本數 輸出更保守,稀疏格更容易缺失 更多稀疏格可以輸出,地面估計穩定性可能下降 正常輸出一直使用;無資料功能開啟時還用於判斷欠資料;不是隻在 noDataObstacle=True 時生效
vehicleHeight 0.5 m,相對估計地面的高度上限 上實物前必須核對並正確配置 限制正常地形點輸出的高度差 保留更高的點,也可能引入懸空結構 更多高點被過濾,可能漏障 正常點需 0≤h<0.5;不是相對雷達的高度,也不能直接當作已確認的整車高度
voxelPointUpdateThre 100 點,每個快取格的新入點計數 通常保持當前值,不作為優先除錯項 達到計數門檻時重做該快取格的降取樣與過期篩選 點數觸發更新通常更少,等待更久 點數觸發更新通常更頻繁,計算增加 與時間門檻、清圖事件為“或”;不是整幀點數或快取總點數
voxelTimeUpdateThre 1.0 s,輸入點雲時間 通常保持當前值,不作為優先除錯項 距該快取格上次更新達到門檻後重做篩選 時間觸發更新更稀疏,過期點可能保留更久 時間觸發更新更頻繁,計算增加 僅收到新點雲進入處理時檢查;與 decayTime 是不同門檻
minRelZ -1.5 m,相對輸入位姿的 odom z 上實物前必須核對並正確配置 有效高度下界 下界抬高,更多低點/地面點被過濾 下界降低,接受更低的點 地面取樣與正常輸出都嚴格使用此下界;地面相對雷達的高度需實測核對
maxRelZ 0.5 m,相對輸入位姿的 odom z 上實物前必須核對並正確配置 有效高度上界 接受更多高點,頂棚或懸空結構也可能進入 過濾更多高點,可能漏障 與 vehicleHeight 的參考基準不同;地面取樣與正常輸出嚴格使用此上界
disRatioZ 0.2 無量綱,m/m 實物執行時重點觀察,有問題再針對性調整 隨水平距離擴大入快取的上下高度視窗 遠處快取候選高度範圍更寬 遠處快取候選範圍更窄,0不擴大 入快取及更新篩選使用;最終地面取樣與輸出仍用固定 minRelZ/maxRelZ,不能保證擴大後的坡麵點會輸出
1.3.1.2.引數詳解
1.3.1.2.1.scanVoxelSize(點雲降取樣尺度)

當前0.05 m表示累計點雲重取樣時的三維體素邊長。同一小體素中的點合成代表點,可以壓縮重複掃描;調得更大可能減少窄障礙、邊緣和有效地面樣本,調得更小則增加點數和處理負擔。

原始碼另外固定了1.0 m的歷史快取分塊和0.2 m的平面地面格子。scanVoxelSize 不改變這兩種格子的尺寸,也不等於代價地圖解析度。地面樣本來自平面格子的3×3鄰域,minBlockPointNum 判斷的是這個鄰域收集到的高度樣本數。

1.3.1.2.2.decayTime、noDecayDis 與 clearingDis(舊點保留、免衰減與事件清圖)

新點進入快取時,intensity 暫存“該幀時間戳減首次點雲時間戳”,用於歷史管理;輸出時再改為高度差。容器 PCL 的體素濾波預設平均各欄位,因此年齡判定針對重取樣代表點,不能理解為逐個原始點精確保留時間。

快取格只有滿足以下任一條件才重做降取樣和篩選:新入點累計達到100、距離上次更新達到1.0秒、收到清圖事件。檢查時按如下關係保留點:

高度在缓存允许窗口内
且(代表点年龄 < decayTime,或水平距离 < noDecayDis)
且不属于本次触发清图的半径内

因此 decayTime=0.5 是更新時檢查的年齡閾值,不是點到0.5秒就立刻消失。稀疏快取格可能等到時間更新門檻才重新檢查;沒有新點雲時,這段處理不會執行。增大衰減時間有利於保留地面樣本,也可能延長舊物體殘留;減小則需觀察稀疏格是否出現空洞。

當前 noDecayDis=0,沒有近距離免衰減區域。這個值還參與無資料功能的初始化:從記錄位置移動至少該距離才進入無資料處理狀態,0時首次里程計回撥即可滿足距離條件;當前 noDataObstacle=False,後者不會生成障礙。

clearingDis 僅在清圖事件觸發後使用,清掉的是 d < clearingDis 的點。當前0沒有正半徑清除區;joy 的第6個按鈕可觸發清圖,map_clearing 的 Float32 訊息會覆蓋清圖半徑並觸發處理。原註釋“該距離外的點會被清除”方向相反,不能照此理解。清圖隻影響本節點快取,不是刪除 Point-LIO 地圖;本輪未釋出任何清圖訊息。

1.3.1.2.3.useSorting、quantileZ 與 considerDrop(地面高度選擇與低處高差處理)

每個0.2 m平面格先收集鄰域高度。useSorting=True 時排序並取下標 floor(quantileZ×N) 的高度;當前 quantileZ=0.2,例如10個樣本會取下標2,即從低到高第3個樣本。它可以減少極低離群點對“最低地面”的影響,但分位比例過高也可能把障礙底部或坡面較高部分當作地面。

地面高度記為 g,原始高度差為 h=z−g:

  • 當前 considerDrop=False:只輸出非負高度差,低於估計地面的點被過濾。
  • True:先取 abs(z−g),凹下去的點也可能作為高度差輸出;仍需通過其他高度和樣本數條件。

原始碼沒有坡面正負高度相加抵消的步驟,也沒有禁止這兩個開關同時開啟。它們可以同時執行,但坡面較低部分取絕對值後可能被當作障礙。useSorting 是地面估計方式,是否能上坡還取決於座標軸、坡度、高度視窗、下游障礙閾值及車輛能力,不能保證“開啟就能上坡”。

當前區域性代價地圖的強度下限為0.1 m。地面估計抬高會降低凸起的高度差,可能讓低障礙低於該門檻;估計過低則可能把正常地面標成障礙。後續實物應同時檢查地面、低障礙和坡面,不能只看點雲是否連續。

1.3.1.2.4.limitGroundLift 與 maxGroundLift(地面估計抬升限制)

啟用限制且使用排序時,地面估計不會高於“鄰域最低高度 + maxGroundLift”。它限制的是分位地面相對最低樣本的抬升,不是雲臺升降、底盤離地高度或每幀地面變化率。

當前 limitGroundLift=False,所以 maxGroundLift=0.3 不影響結果,暫不調整。最低樣本本身若為低離群點,開啟限制也可能將地面壓低。

1.3.1.2.5.clearDyObs 及其幾何門檻(動態殘留點篩選)

這個開關用舊點與最新回波做格子級候選篩選,不估計物體速度,也不建立“動態物體走過就永久禁行”的區域。候選計數每輪重建,最後只篩掉本輪仍被標記的格子輸出;快取老點的移除另由衰減等規則處理。

當前過程是:

  1. 累計點雲中,水平距離不大於 minDyObsDis=0.3 m 的點直接給格子增加 minDyObsPointNum;不是忽略近點。
  2. 較遠的點先滿足 angle1 > minDyObsAngle,再轉到輸入位姿對應的雷達自身系;自身仰角在視場視窗內,或 abs(z_L)<absDyObsRelZThre,就給格子計數。
  3. 最新一幀裁剪點中,只要該格有滿足 angle1 > minDyObsAngle 的點,就把計數歸零;這一輪沒有再次要求視場視窗或0.3 m距離門檻。
  4. 最終計數達到 minDyObsPointNum=1 的格子不進入正常地形輸出。

這裡的第一個仰角按 odom 中相對輸入位姿的位置計算:

θ1=atan2⁡(Δz−minDyObsRelZ,d)180π\theta_1=\operatorname{atan2}(\Delta z-\text{minDyObsRelZ},d)\frac{180}{\pi}

當前0°角門檻和-0.3 m高度偏置,在非零水平距離處等價於要求 Δz>-0.3 m。minDyObsAngle 與 minDyObsRelZ 同時影響歷史候選和最新回波重置,調整後的淨清理效果不能只按一個方向推斷。

第二個仰角在雷達自身系中計算,單位同樣是度。當前視窗為(-28°,33°),另外 abs(z_L)<0.2 m 可繞過該視窗。MID360 官方標稱垂直視場為 -7°~52°;這與當前軟體視窗不同,但視窗還承擔候選篩選,不能據此直接判定兩項數值必須替換。Livox 官方規格

上實物前需要核對輸入位姿究竟代表 IMU 還是雷達、逆旋轉後的軸向,以及這個視窗的篩選目的。雷達自身系已經扣除安裝姿態,不應把整機傾斜角隨意加到視場上下界;這裡度制的閾值也不能與弧度制 JointState 混用。MID360 隨實際 yaw、不隨實際 pitch 轉動的機械約定繼續保留。

遮擋、稀疏回波或位姿錯誤可能使靜態障礙也暫時缺少“本幀確認”,從而被誤篩。當前 minDyObsPointNum=1 比較敏感;應觀察障礙離開後的殘留和靜態物體被遮擋時的結果,再判斷是否需要調整,而不是直接根據原註釋關閉或修改。

1.3.1.2.6.noDataObstacle、noDataBlockSkipNum 與 minBlockPointNum(缺資料區域與最少地面樣本)

noDataObstacle=True 且初始化完成時,地面樣本不足的格子會生成4個障礙標記點,z 設為輸入位姿高度,intensity 設為 vehicleHeight。這表示主動阻擋欠資料區域;False 只是不生成這些點,未知區域怎樣通行仍由下游決定。

noDataBlockSkipNum 控制欠資料格邊界的跳過迭代次數,不能按米或跳過幾幀理解。當前無資料功能關閉,這項不影響結果,簡述其用途即可。

minBlockPointNum=10 仍然生效:正常地形點輸出要求鄰域地面樣本數至少10。提高它會減少稀疏格輸出,降低它可能保留更多細小障礙,但也更依賴少量、不穩定的地面樣本。它同時受降取樣尺度、衰減時間和實際點密度影響。

1.3.1.2.7.vehicleHeight(地形輸出高差上限)

正常地形點要求 0≤h<vehicleHeight,當前即0~0.5 m,不包含0.5 m上界。h 相對估計地面,minRelZ/maxRelZ 則相對輸入雷達位姿的 odom z,兩者參考基準不同。

該引數沒有直接控制模型尺寸或碰撞包絡。若障礙只有高於0.5 m的有效回波,這些點會被過濾;調小可能漏障,調大則可能把更多懸空結構引入輸出。需結合真實車輛包絡、雷達可見的障礙部位和下游篩選核實,不能僅憑名字把它設成整車高度。

當前正常輸出高度差還與下游0.1 m障礙下限共同作用,因此進入區域性障礙標記的正常點,高度差通常需落在0.1~0.5 m之間,並通過其他過濾。當前數值是否適合實車尚無測量結論。

1.3.1.2.8.voxelPointUpdateThre 與 voxelTimeUpdateThre(快取點雲更新門檻)

每個1.0 m快取分塊的新入點計數達到100,或距離該塊上次更新達到1.0秒,就重新降取樣並篩除過期點;清圖事件也會強制更新。計數在更新後清零,計時採用輸入點雲時間。

增大門檻通常減少這一階段的更新頻率,減小則增加處理次數。它們不是釋出頻率引數,也不是地面樣本數門檻;釋出由新點雲處理驅動,實際頻率還受負載影響。先沿用當前值,若歷史殘留或計算負擔異常,再與 decayTime 一起檢查。

1.3.1.2.9.minRelZ、maxRelZ 與 disRatioZ(相對輸入位置的高度視窗)

設 Δz=z_point−z_input_pose,d 為 odom 中的水平距離。入快取以及快取更新時使用:

minRelZ−disRatioZ d<Δz<maxRelZ+disRatioZ d\text{minRelZ}-\text{disRatioZ}\,d <\Delta z< \text{maxRelZ}+\text{disRatioZ}\,d

當前在5 m水平距離處,快取候選視窗為(-2.5,1.5) m。但原始碼在收集地面樣本和輸出正常點時,又要求固定的 -1.5<Δz<0.5,沒有繼續使用距離擴充套件。

所以 disRatioZ 能放寬快取候選範圍,卻不能保證遠處坡面超出固定視窗的點最終被保留。原註釋只解釋了前一階段,不能據此認定整條鏈都隨距離擴大高度範圍。

這些高度沿 odom 的 z 軸,並相對輸入 lidar_odometry 的位置,不是相對底盤原點或雲臺 pitch 層。需先確認雷達到地面高度、odom 的方向以及 IMU/雷達位姿轉換;參考系錯誤不能通過單純加大視窗解決。本輪不修改重力方向或任何工程引數。

1.3.1.2.10.啟動來源與當前驗證範圍

整套 reality/simulation 啟動分別預設使用對應目錄的 nav2_params.yaml,經 navigation_launch.py 將處理後的引數檔案交給該節點,並把節點名設為 terrain_analysis 以匹配 YAML。包內獨立 XML launch 和 C++ 預設值是另外的來源,例如獨立 XML 的 decayTime=1.0、noDecayDis=1.75、vehicleHeight=1.5,不能套用本表;直接執行執行檔也不會自動載入整套 YAML。

這26項均在啟動時宣告和讀取,沒有動態引數更新回撥。maxGroundLift 和 noDataBlockSkipNum 當前因開關關閉而不影響結果;clearingDis 由事件使用且可被訊息覆蓋,其變數變化也不能只靠啟動參數列判斷。

原始碼還存在介面前提:兩個輸入分別回撥,使用最近收到的里程計,沒有時間配對、插值或“已獲得有效里程計”的保護;輸出參考系固定寫成 odom,沒有校驗或變換輸入參考系。上游位姿與座標關係仍需核對,尤其會影響本塊的高度視窗和動態候選判斷。

  • 原始碼能確認: 引數讀取、單位、門控分支、衰減與清圖條件、分位地面估計、動態候選篩選和高度輸出範圍;本輪在容器中確認安裝後的導航 launch 與兩份 YAML 對應當前原始碼。
  • 模擬已觀察: 2026-10-08 僅驗證獨立 Point-LIO 的靜止和短距離往返輸出,沒有驗證本節點地面估計、坡面、動態清理、欠資料障礙或最終代價地圖。
  • 必須實物核實: 雷達原點到地面的高度、安裝與內部外參、目標參考系方向、實際點密度、可見障礙高度、坡面與落差特徵,以及動態物體離開/靜態物體被遮擋時的篩選表現。當前無實物,本輪未啟動節點或進行執行測試。

原始碼位置:src/pb2025_sentry_nav/terrain_analysis/src/terrainAnalysis.cpp;下游強度篩選位於 src/pb2025_sentry_nav/pb_nav2_plugins/src/layers/intensity_voxel_layer.cpp。本塊糾正的是日誌中的引數解釋,工程原始碼、配置和引數值均保留。