ROS ROS2 機器人深度相機激光雷達多傳感器標定工具箱入門教程(一)

系列文章目錄

目錄

系列文章目錄

前言

一、安裝

1.1 ROS 2 官方軟件包

二、教程

2.1 標定配置器

2.1.1 機器人選項

2.1.2.1 外參相機-激光雷達標定

2.1.2.2 外參激光雷達-激光雷達標定

2.1.2.3 外參相機參照標定

2.1.2.4 外參激光雷達-參考標定

2.2 外參照相機-激光雷達標定

2.3 外參激光雷達-激光雷達標定

2.4 外參照相機參照標定

2.5 外參激光雷達-參考標定


前言

通過圖形用戶界面,多傳感器標定工具箱可指導用戶完成相機-激光雷達傳感器設置的標定。

????????multisensor_calibration 是一個積極維護的通用標定工具箱,用于輔助基于目標的多傳感器標定,支持 ROS 1 和 ROS 2。它提供了多種方法和應用來標定復雜的多傳感器系統,例如

  • 外參相機-激光雷達標定、
  • 外參相機-參考標定、
  • 外參激光雷達-激光雷達標定、
  • 外參激光雷達-參考標定,以及
  • 外參激光雷達-車輛標定(原型)。


一、安裝

????????多傳感器標定工具箱作為 ROS 2 的官方軟件包發布,名為 multisensor_calibration。由于 ROS 1 即將報廢,因此 ROS 1 將不會有官方版本。

????????除了官方發布的版本外,multisensor_calibration 還可以從 ROS 1 和 ROS 2 的源代碼中構建,如下所述。

1.1 ROS 2 官方軟件包

sudo apt install ros-$ROS_DISTRO-multisensor-calibration

二、教程

為了有一個統一的起點,“multisensor_calibration ”提供了一個標定配置器,可以選擇并設置所需的標定參數。只需調用

ros2 run multisensor_calibration multi_sensor_calibration

????????標定配置器提供了一個圖形用戶界面,用于配置和運行下列傳感器標定之一:

  • 外參相機-激光雷達標定
  • 外參激光雷達-激光雷達標定
  • 外參相機-參考標定
  • 外參激光雷達-參考標定

????????另外,單個標定也可作為獨立節點啟動,無需標定器。在這種情況下,用戶必須手動指定適當的啟動參數,因此建議使用標定配置器。有關詳細信息,請參閱節點部分。

????????標定配置和標定結果都存儲在工作區中。其中,每個傳感器標定都會生成一個單獨的工作區文件夾,而屬于單個機器人的所有標定工作區又會被歸入一個機器人工作區。

2.1 標定配置器

????????標定配置器提供了一個圖形用戶界面,用于配置和運行不同的傳感器標定。

圖 1:標定配置器的圖形用戶界面。

????????正如在工作區頁面中進一步討論的那樣,各個傳感器標定的配置和結果是在由機器人和標定工作區組成的工作區結構中進行組織的。因此,除了單個標定配置外,還需要設置一些機器人設置。

????????標定配置器還允許安裝工作區模板。這在首次運行標定時尤其有用。有關如何添加新模板的詳細信息,請參閱相應章節

2.1.1 機器人選項

  • 工作區文件夾: 選擇要打開的機器人工作區文件夾。如果輸入的文件夾不存在,則將生成一個新的工作區。

????????所有不同的機器人工作區文件夾都位于根目錄下(默認: $HOME/multisensor_calibration),該目錄列在相應組合框下方。要選擇不同的根目錄,請按下工作區文件夾組合框旁邊的按鈕。要將工作區模板安裝到根目錄,請按右側相應的按鈕。這將打開另一個對話框,可在其中選擇機器人和相應的傳感器標定。

  • 機器人名稱: 機器人名稱。
  • URDF 模型: 可選的機器人 URDF 模型。

2.1.2 標定選項

????????選擇機器人后,可通過相應的組合框選擇要執行的標定類型:

  • 標定類型: 要執行的標定類型。根據所選的標定類型,將提供不同的標定選項。開始時,組合框和文本編輯將使用可用數據填充,即主題名稱或幀 ID。

????????如果所選的 “標定類型”、“源傳感器名稱 ”和 “參考傳感器名稱 ”配置已經過標定,且在標定工作區中找到了相應的設置文件,則其余選項將根據設置文件中的數據進行設置。

????????下文將介紹不同標定類型的可用選項。

2.1.2.1 外參相機-激光雷達標定
  • 相機傳感器名稱: 源相機傳感器名稱。
  • 圖像話題: 發布攝像機圖像的話題名稱。
  • 攝像機信息話題: 發布攝像機圖像的話題名稱。
  • 圖像狀態: 選擇圖像數據的狀態。在標定過程中,需要用它來從攝像機信息信息中選擇正確的數據。
    • 扭曲: 直接來自傳感器的圖像,即包含鏡頭失真。
    • 未扭曲: 圖像已消除鏡頭失真。
    • STEREO_RECTIFIED(立體校正): 來自立體相機的圖像經過校正,使兩臺相機的圖像水平對齊。
  • Is Stereo Camera?如果要將攝像機標定為立體攝像機,則設置為 “true”。如果激活,還需要設置 “右傳感器名稱 ”和 “右信息話題”。
  • 右傳感器名稱: 將攝像機標定為立體攝像機系統時,右側攝像機傳感器的名稱。
  • 右信息話題: 與右側攝像機相對應的攝像機信息的話題名稱。將攝像機標定為立體攝像機系統時需要使用此名稱。
  • 右后綴: 右傳感器名稱的后綴,也是校正圖像的坐標系 ID。如果輸入圖像的 “Image State(圖像狀態)”為 DISTORTED 或 UNDISTORTED,則會將其添加到修正后的坐標系圖像 ID 中。如果 “圖像狀態 ”為 STEREO_RECTIFIED,則會從坐標系 ID 中移除。
  • 激光雷達傳感器名稱: 參考 LiDAR 傳感器的名稱。
  • 點云話題: 發布點云的話題名稱。
  • 標定目標: 標定目標的配置文件。目前不可編輯。
  • 根據坐標系標定?根據基準坐標系標定源傳感器的姿態。
  • 基準坐標系 ID:標定姿勢所依據的基準坐標系的坐標系 ID。
  • 使用 TF 樹的初始猜測?使用 TF-Tree 提供的數據提取標定的初始猜測。
  • 保存觀測數據?將用于標定的觀測數據保存到標定工作區。
  • 信息同步策略: 選擇用于同步傳感器信息的時間同步類型。
  • 同步隊列大小: 用于時間同步的隊列大小。
2.1.2.2 外參激光雷達-激光雷達標定
  • 源激光雷達傳感器名稱: 源激光雷達傳感器名稱。
  • 源點云話題: 發布源點云的話題名稱。
  • 參考激光雷達傳感器名稱: 參考 LiDAR 傳感器名稱。
  • 參考點云話題: 發布參考點云的話題名稱。
  • 標定目標: 標定目標的配置文件。目前不可編輯。
  • 是否額外對齊地面平面?設置為 “true”,可額外對齊傳感器數據中的地面平面。如果為 “true”,則還需要直立坐標系的 ID,以便找到地平面的方向。
  • 直立坐標系 ID:- Z 軸向上的坐標系 ID。用于檢測傳感器數據中的地平面。
  • 根據坐標系標定?根據基準坐標系標定源傳感器的姿態。
  • 基準坐標系 ID:標定姿態所依據的基準坐標系的坐標系 ID。
  • 使用 TF 樹的初始猜測?使用 TF-Tree 提供的數據提取標定的初始猜測。
  • 保存觀測數據?將用于標定的觀測數據保存到標定工作區。
  • 信息同步策略: 選擇用于同步傳感器信息的時間同步類型。
  • 同步隊列大小: 用于時間同步的隊列大小。
2.1.2.3 外參相機參照標定
  • 攝像機傳感器名稱: 源相機傳感器的名稱。
  • 圖像話題: 發布攝像機圖像的話題名稱。
  • 攝像機信息話題: 發布攝像機圖像的話題名稱。
  • 圖像狀態: 選擇圖像數據的狀態。在標定過程中,需要用它來從攝像機信息信息中選擇正確的數據。
  • 扭曲: 直接來自傳感器的圖像,即包含鏡頭失真。
  • 未扭曲: 圖像已消除鏡頭失真。
  • STEREO_RECTIFIED(立體校正): 來自立體相機的圖像經過校正,使兩臺相機的圖像水平對齊。
  • Is Stereo Camera?如果要將攝像機標定為立體攝像機,則設置為 “true”。如果激活,還需要設置 “右傳感器名稱 ”和 “右信息話題”。
  • 右傳感器名稱: 將攝像機標定為立體攝像機系統時,右側攝像機傳感器的名稱。
  • 右信息話題: 與右側攝像機相對應的攝像機信息的話題名稱。將攝像機標定為立體攝像機系統時需要使用此名稱。
  • Rect Suffix(矩形后綴): 右傳感器名稱的后綴,也是修正圖像的坐標系 ID。如果輸入圖像的 “圖像狀態 ”為 DISTORTED(扭曲)或 UNDISTORTED(未扭曲),則會將其添加到修正后的坐標系圖像 ID 中。如果 “圖像狀態 ”為 STEREO_RECTIFIED,則會從坐標系圖像 ID 中移除。
  • 參考名稱: 參考名稱。
  • 參考坐標系 ID:提供參考數據的坐標系 ID。
  • 標定目標: 標定目標的配置文件。目前不可編輯。
  • 根據坐標系標定?相對于基準坐標系標定源傳感器的姿態。
  • 基準坐標系 ID:標定姿勢所依據的基準坐標系的坐標系 ID。
  • 使用 TF 樹的初始猜測?使用 TF-Tree 提供的數據提取標定的初始猜測。
  • 保存觀測數據?將用于標定的觀測數據保存到標定工作區。
2.1.2.4 外參激光雷達-參考標定
  • 源激光雷達傳感器名稱: 源 LiDAR 傳感器名稱。
  • 源點云話題: 發布源點云的話題名稱。
  • 參照物名稱: 參照物名稱。
  • 參考坐標系 ID:提供參考數據的坐標系 ID。
  • 標定目標: 標定目標的配置文件。目前不可編輯。
  • 根據坐標系標定?相對于基準坐標系標定源傳感器的姿態。
  • 基準坐標系 ID:標定姿勢所依據的基準坐標系的坐標系 ID。
  • 使用 TF 樹的初始猜測?使用 TF-Tree 提供的數據提取標定的初始猜測。
  • 保存觀測數據?將用于標定的觀測值保存到標定工作區。

2.2 外參照相機-激光雷達標定

????????相機-激光雷達標定包括估算給定相機傳感器相對于給定激光雷達傳感器的相對變換。標定是在一系列 2D-3D 點對應關系的幫助下,通過解決透視-點(P-n-P)問題來完成的。

圖 1:在相機圖像和激光雷達點云中檢測到標定目標后的外參相機-激光雷達標定圖形用戶界面。其中,相機圖像上標注了 ArUco 標記的角,探測到的目標結構在激光雷達點云中以黃色突出顯示。

????????啟動后,將出現圖 1 所示的圖形用戶界面。它由以下部分組成: - 控制窗口(A); - 攝像機圖像中的目標檢測視圖(B); - 激光雷達云中的目標檢測視圖(C);以及 - 用于指導用戶放置標定目標的對話框視圖(D)(目前正在開發中)。

????????標定節點可在相機圖像中持續檢測和跟蹤 ArUco 標記,并在激光雷達云中選擇標定目標的潛在候選對象。在此過程中,標記會被坐標系化,對于點云中的候選目標點,會顯示相應的強度值。

????????要執行外參標定,請按照以下步驟操作:

  1. 首先將標定目標放置在相機圖像的中心,并與圖像平面平行。將目標放置在與攝像機保持一定距離的位置,使其寬度約占圖像寬度的一半。
  2. 確保在相機圖像中檢測到標記,并在激光雷達云中突出顯示目標結構。
  3. 如果至少檢測到 3 個標記,且目標結構突出顯示,請單擊按鈕 1 “捕捉目標觀測”,以在傳感 器數據中對標定目標進行全面檢測和精確估算,并將檢測結果添加到觀測列表中。完成后,相應的傳感器數據將標注檢測結果,如圖 1 所示。其中
    1. 在相機圖像上標注檢測到的 ArUco 標記的邊角(根據標記 ID 用彩虹色圖標注)。
    2. 與檢測到的標定目標相對應的激光雷達云點用黃色標出。此外,根據目標的估計姿態,ArUco 標記的角也會以與相機圖像相同的配色方案繪制。
  4. 目測激光雷達云中標定目標的方位是否估算正確。這一點非常重要,因為 P-n-P 算法需要相機圖像中的標記角與激光雷達云之間精確的 2D-3D 對應關系,才能估算出傳感器的外參姿態。
  5. 如果方位估計不正確,或者激光雷達云中的錯誤結構被假定標記為標定目標,或者出現其他 故障,您可以點擊按鈕 2 “刪除最后一個觀測點”,從堆棧中刪除最后一個觀測點。此操作可重復多次,因為它始終會移除堆棧中最上面的觀測值,直到沒有觀測值為止。
  6. 繼續添加(6-7 個)不同姿態的標定目標,將其放置在堆棧的頂部和/或底部邊緣。在每個位置,稍微向內旋轉目標。理想情況下,將目標在圖像空間中的 5 個位置上放置成 “+”形。如果不可能,則盡量將目標至少放置在 “L ”形的 3 個位置上,這樣各位置就不會相交。
    1. 圖像的頂部和/或底部邊緣、
    2. 圖像左側和/或右側邊緣,以及
    3. 更遠的位置。
  7. 每個位置重復步驟 2-5。
  8. 收集到足夠多的標定目標的不同觀測數據后,點擊按鈕 4 “標定 ”即可完成標定。這將進行最終標定,并打印出標定后的外參參數、總體平均重投影誤差以及將目標位置從源傳感器轉換到參考傳感器時的標準偏差。對于良好的最終標定,典型的平均重投影誤差在 2-4 像素之間,平移(XYZ)標準偏差為 1-3 厘米,旋轉(RPY)標準偏差為 0.1-1.5 度。
  9. 標定完成后
    1. 可視化當前標定"按鈕 3。這將打開一個新的對話框,其中顯示了激光雷達云在攝像機圖像中的投影,并根據其與攝像機的距離進行了著色。因此,如果標定結果良好,那么激光雷達掃描中的結構(可從深度著色中得出)應與圖像中的物體對齊。
    2. 標定結果以及 URDF 文件的片段會被寫入標定工作區。可通過程序菜單 “文件”->“打開”->“標定工作區 ”直接打開包含結果文件的工作區文件夾。

????????要調整運行時參數,例如檢測標定目標或執行實際標定算法的算法參數,可以通過 “編輯” -> “首選項 ”打開 “rqt_reconfigure”。

2.3 外參激光雷達-激光雷達標定

????????激光雷達-激光雷達標定包括估算給定源激光雷達傳感器相對于給定參考激光雷達傳感器的相對變換。標定是通過 GICP 將源傳感器的云對準參考傳感器的云來進行的,參考傳感器的云中有標定目標的探測結果,而源傳感器的云中有相同的觀測結果。

圖 2:在激光雷達掃描儀的數據中檢測到標定目標后,進行外參激光雷達-激光雷達標定的圖形用戶界面。其中,探測到的目標結構在激光雷達點云中以黃色突出顯示。

????????啟動后,將出現圖 2 所示的圖形用戶界面。它由以下部分組成:- 控制窗口(A),- 源激光雷達云中的目標檢測視圖(B),- 參考激光雷達云中的目標檢測視圖(C),以及- 用于指導用戶放置標定目標的對話框視圖(D)(目前正在開發中)。

????????標定節點在激光雷達云中不斷選擇潛在的標定目標候選點。在此過程中,點云中候選目標的點會顯示出相應的強度值。

????????要執行外參標定,請按照以下步驟操作:

  1. 首先將標定目標放置在需要標定外參姿態的傳感器(即源傳感器)前方,同時確保從參考傳感器也能看到它。目標放置的距離應能很好地識別標定目標上的圓形切口。在這方面,一個經驗法則是,如果可能,2-3 條掃描線應穿過或接觸一個切口。
  2. 確保標定目標的結構在兩個傳感器的數據中都突出顯示,即在窗口 B 和窗口 C 中。
  3. 如果目標結構在兩個激光雷達掃描儀的數據中都突出顯示,請單擊按鈕 1 “捕捉目標觀測”,以觸發傳感器數據中標定目標的全面檢測和精確估算,并將檢測結果添加到觀測列表中。完成后,相應的傳感器數據將標注檢測結果,如圖 2 所示。其中,激光雷達云中與檢測到的標定目標相對應的點用黃色標出。此外,根據目標的估計姿態,ArUco 標記的邊角也會以與相機圖像相同的顏色繪制。
  4. 目測激光雷達云中標定目標的方向是否估算正確。
  5. 如果方位估算不正確,或者將激光雷達云中的錯誤結構標注為標定目標,或者出現任何其他 故障,您可以點擊按鈕 2 “刪除最后一個觀測點”,從堆棧中刪除最后一個觀測點。此操作可重復多次,因為它始終會移除堆棧中最上面的觀測值,直到沒有觀測值為止。
  6. 繼續添加(3-5 個)不同姿態的標定目標,將其置于?在這種情況下,這些位置應構成 “L ”形,以便建立垂直和水平差異。確保這些位置不平行。在每個位置上,稍微向內轉動目標。
    1. 在源傳感器前的較高或較低位置。
    2. 在參考檢查器前面,以及
    3. 更遠的位置。
  7. 每個位置重復步驟 2-5。
  8. 當對標定目標進行了足夠多的不同觀測后,可點擊按鈕 4 “標定 ”完成標定。這將進行最終標定,并打印出標定后的外參參數、GICP 的總體均方根誤差以及將目標位置從源傳感器轉換到參考傳感器時的標準偏差。對于良好的最終標定,典型的均方根誤差在 3-8 厘米之間,平移(XYZ)標準偏差為 0.5-5 厘米,旋轉(RPY)標準偏差為 0.3-2 度。
  9. 標定完成后、
    1. 可視化標定 "按鈕 3。這將打開一個新對話框,顯示兩個點云之間的點間距。其中,點間距以彩虹色圖(紅色 -> 黃色 -> 綠色 -> 藍色 -> 紫色)顯示。這意味著,如果標定結果良好,重疊區域的點間距應該較小,相應的點最好用紅色突出顯示。
    2. 標定結果以及 URDF 文件片段將被寫入標定工作區。可通過程序菜單 “文件” -> “打開” -> “標定工作區 ”直接打開包含結果文件的工作區文件夾。

????????要調整運行時參數,例如檢測標定目標或執行實際標定算法的算法參數,可以通過 “編輯” -> “首選項 ”打開 “rqt_reconfigure”。

2.4 外參照相機參照標定

????????照相機參照標定包括估算給定照相機傳感器相對于參照物的相對變換。與照相機-激光雷達標定類似,變換的計算方法是借助一系列 2D-3D 點對應關系解決透視-n-點(P-n-P)問題。不過,可以通過提供 ArUco 標記左上角相對于給定坐標系 ID 的三維坐標來手動輸入三維對應關系,而不是通過檢測激光雷達數據中的標定目標來找到三維對應關系。

圖 3:在照相機數據中檢測到標定目標后進行外參照相機參照標定的圖形用戶界面。其中,攝像機圖像上標注了 ArUco 標記的角。

????????啟動后,將出現圖 3 所示的圖形用戶界面。它由以下部分組成: - 控制窗口(A); - 攝像機圖像中的目標檢測視圖(B); - 表格視圖(C),可輸入左上角標記角的 XYZ 坐標;以及 - 用于指導用戶放置標定目標的對話框視圖(D)(目前正在開發中)。

????????標定節點會持續檢測和跟蹤攝像機圖像內的 ArUco 標記,并將 ArUco 標記坐標系化。

????????要執行外參標定,請按照以下步驟操作:

  1. 首先將標定目標放置在攝像機圖像的中心,并與圖像平面平行。將目標放置在與攝像機保持一定距離的位置,使其寬度約占圖像寬度的一半。
  2. 確保在攝像機圖像中檢測到標記。
  3. 如果至少檢測到 3 個標記,請單擊按鈕 1 “捕捉目標觀測”,以觸發傳感器數據中標定目標的全面檢測和精確估算,并將檢測結果添加到觀測列表中。完成后,相應的傳感器數據將標注檢測結果,如圖 3 所示。其中,攝像機圖像將標注檢測到的 ArUco 標記的邊角(根據標記 ID 用彩虹色圖標注)。
  4. 如果檢測有誤,您可以點擊按鈕 2 “移除最后一個觀測點”,從堆棧中移除最后一個觀測點。此操作可重復多次,因為它總是會移除堆棧中最上面的觀測點,直到沒有觀測點為止。
  5. 繼續添加(6-7 個)不同姿態的標定目標,將其放置在堆棧的頂部和/或底部邊緣。在每個位置,稍微向內旋轉目標。理想情況下,將目標在圖像空間中的 5 個位置上放置成 “+”形。如果不可能,則盡量將目標至少放置在 “L ”形的 3 個位置上,這樣各位置就不會相交。
    1. 圖像的頂部和/或底部邊緣、
    2. 圖像左側和/或右側邊緣,以及
    3. 更遠的位置。
  6. 對于每個位置,重復步驟 2-4。
  7. 在攝像機圖像中捕捉到所有目標姿勢后,在相應的表格中填寫左上角標記角的參考坐標,以及相應的目標姿勢 ID 和相應的標記 ID。為此,假定觀察到的目標姿態以連續的順序輸入,從 ID 1 開始。也就是說,第一個目標位置的 ID 為 1,第二個位置的 ID 為 2,以此類推。此外,每個目標姿勢都有 4 個標記。您也可以在移動目標時連續輸入參考坐標,但重要的是,只有在輸入所有坐標后,才能在最后 “應用 ”一次觀測結果。
  8. 收集到足夠多的標定目標的不同觀測數據,并輸入和 “應用 ”左上角標記角的參考坐標后,點擊按鈕 4 “標定 ”即可完成標定。這將進行最終標定,并打印出標定后的外參參數、總體平均重投影誤差以及將目標姿態從源傳感器轉換到參考傳感器時的標準偏差。

????????要調整運行時參數,例如檢測標定目標或執行實際標定算法的算法參數,可以通過 “編輯” -> “偏好設置 ”打開 “rqt_reconfigure”。

2.5 外參激光雷達-參考標定

????????標定是通過 GICP 將源傳感器云(包含標定目標的探測結果)與參照傳感器云(包含相同的觀測結果)進行對齊。

????????激光雷達-參照物標定包括估算給定源激光雷達傳感器相對于參照物的相對變換。與激光雷達-激光雷達標定類似,變換的計算方法是通過 GICP 將源傳感器的云對準參考數據,其中包含標定目標的檢測數據。不過,可以通過提供 ArUco 標記左上角相對于給定坐標系 ID 的三維坐標,手動輸入三維對應關系,而不是通過在參考激光雷達數據中檢測標定目標來找到三維對應關系。

圖 4:在相機數據中檢測到標定目標后進行外參激光雷達參照標定的圖形用戶界面。其中,探測到的目標結構在激光雷達點云中以黃色突出顯示。

????????啟動后,將出現圖 4 所示的圖形用戶界面。它由以下部分組成: - 控制窗口(A); - 源激光雷達云中的目標檢測視圖(B); - 表格視圖(C),可輸入左上角標記角的 XYZ 坐標;以及 - 用于指導用戶放置標定目標的對話框視圖(D)(目前正在開發中)。

????????標定節點會在激光雷達云中不斷選擇標定目標的潛在候選點。在此過程中,點云中候選目標的點會顯示出相應的強度值。

????????要執行外參標定,請按照以下步驟操作:

  1. 首先將標定目標放置在需要標定外參姿態的傳感器(即源傳感器)前方。目標放置的距離應使標定目標上的圓形切口能夠很好地被識別。在這方面,一個經驗法則是,如果可能,2-3 條掃描線應穿過或接觸一個切口
  2. 確保標定目標的結構在傳感器的數據中突出顯示,即在窗口 B 中。
  3. 如果目標結構在激光雷達掃描儀的數據中突出顯示,請單擊按鈕 1 “捕捉目標觀測”,以在傳感 器數據中對標定目標進行全面檢測和精確估算,并將檢測結果添加到觀測列表中。完成后,相應的傳感器數據將標注檢測結果,如圖 4 所示。其中,激光雷達云中與檢測到的標定目標相對應的點用黃色標出。此外,根據目標的估計姿態,ArUco 標記的邊角也會以與相機圖像相同的配色方案繪制。
  4. 目測激光雷達云中標定目標的方向是否估算正確。
  5. 如果方位估算不正確,或者將激光雷達云中的錯誤結構標注為標定目標,或者出現任何其他 故障,您可以點擊按鈕 2 “刪除最后一個觀測點”,將最后一個觀測點從堆棧中刪除。此操作可重復多次,因為它始終會移除堆棧中最上面的觀測值,直到沒有觀測值為止。
  6. 繼續添加(3-5 個)不同姿態的標定目標,將其置于
    1. 在源傳感器前面的較高或較低位置,以及
    2. 更遠的位置。
    3. 在此過程中,這些位置應構成 “L ”形,以便建立垂直和水平差異。確保這些位置不平行。在每個位置,稍微向內轉動目標。
  7. 每個位置重復步驟 2-5。
  8. 在攝像機圖像中捕捉到所有目標姿態后,在相應表格中填寫左上角標記角的參考坐標,以及相應的目標姿態 ID 和相應的標記 ID。為此,假定觀察到的目標姿態以連續順序輸入,從 ID 1 開始。也就是說,第一個目標位置的 ID 為 1,第二個位置的 ID 為 2,以此類推。此外,每個目標姿勢都有 4 個標記。您也可以在移動目標時連續輸入參考坐標,但重要的是,只有在輸入所有坐標后,才能在最后 “應用 ”一次觀測結果。
  9. 收集到足夠多的標定目標的不同觀測數據后,點擊按鈕 4 “標定”即可完成標定。這將進行最終標定,并打印出標定后的外參參數、GICP 的總體均方根誤差以及將目標姿勢從源傳感器轉換到參考傳感器時的標準偏差。

????????要調整運行時參數,例如檢測標定目標或執行實際標定算法的算法參數,可以通過 “編輯” -> “偏好設置 ”打開 “rqt_reconfigure”。

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

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

相關文章

Ubuntu利用docker搭建Java相關環境問題記錄

Docker拉取鏡像超時 報錯 Unable to find image dpanel/dpanel:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/ ": context deadline exceeded (Client.Timeout exceeded while awaiting headers)解決方式 在etc/do…

list的模擬實現和反向迭代器的底層

1&#xff1a;list的模擬實現 1&#xff1a;鏈表的節點 對于list的模擬實現&#xff0c;我們需要先定義一個節點的類可以使用&#xff08;class也可以使用struct&#xff09; // List的節點類 template<class T> struct ListNode {ListNode(const T& val T()){_p…

數據加載與保存

通用方式? SparkSQL提供了通用的數據加載方式&#xff0c;使用spark.read.loa方法&#xff0c;并可通過format指定數據類型&#xff08;如csv、jdbc、json、orc、parquet、textFile&#xff09;。 load方法后需傳入數據路徑&#xff08;針對csv、jdbc、json、orc、parquet、…

7 編譯型語言、解釋型語言與混合型語言的深度解析:以 C、Java、Python 為例

在編程領域&#xff0c;語言的執行方式是其設計哲學的核心體現&#xff0c;直接影響著性能、可移植性和開發效率。本文將深入剖析編譯型語言&#xff08;以 C 語言為例&#xff09;、解釋型語言&#xff08;以 Python 為例&#xff09;和混合型語言&#xff08;以 Java 為例&am…

Edge瀏覽器安卓版流暢度與廣告攔截功能評測【不卡還凈】

安卓設備上使用瀏覽器的體驗&#xff0c;很大程度取決于兩個方面。一個是滑動和頁面切換時的反應速度&#xff0c;另一個是廣告干擾的多少。Edge瀏覽器的安卓版本在這兩方面的表現比較穩定&#xff0c;適合日常使用和內容瀏覽。 先看流暢度。Edge在中端和高端機型上啟動速度快&…

智能云圖庫-12-DDD重構

本節重點? 之前我們已經完成了本項目的功能開發。由于本項目功能豐富、代碼量大&#xff0c;如果是在企業中維護開發的項目&#xff0c;傳統的 MVC 架構可能會讓后續的開發協作越來越困難。所以本節魚皮要從 0 帶大家學習一種新的架構設計模式 —— DDD 領域驅動設計。 大綱…

量子安全郵件系統 —— 郵件回溯密鑰銷毀機制

這里寫目錄標題 量子安全郵件系統 —— 郵件回溯密鑰銷毀機制一、項目背景與簡介二、理論基礎2.1 密鑰銷毀的重要性2.2 時間衰減與回溯銷毀2.3 安全日志與報警機制三、系統架構設計3.1 模塊劃分3.2 系統架構圖(Mermaid示意圖)四、關鍵算法與實現流程4.1 密鑰生成與存儲4.2 郵…

個人博客系統后端 - 用戶信息管理功能實現指南(上)

本文記錄了如何實現用獲取戶信息&#xff0c;用戶信息更新&#xff0c;用戶頭像上傳三大基礎功能 先上接口實現截圖&#xff1a; 一、項目結構概覽 先介紹一下 個人博客系統采用了標準的 Spring Boot 項目結構&#xff0c;用戶功能相關的文件主要分布在以下幾個目錄&#xff1a…

趣味編程之分布式系統:負載均衡的“雨露均沾“藝術

#此篇文章由Deepseek大力支持&#x1f60b; 凌晨三點&#xff0c;西二旗某火鍋店后廚—— “羊肉卷走3號桌&#xff01;” “肥牛卷去7號&#xff01;” “蝦滑優先給VIP區&#xff01;” 我蹲在傳菜口的監控屏幕前&#xff0c;看著機器人服務生們忙而不亂地穿梭。突然間&am…

Linux——信號(1)信號的產生

我們在講進程的多種狀態時提到過&#xff0c;一個進程的退出有三種情況&#xff1a;正常退出&#xff0c;結果出錯退出&#xff08;代碼也執行完了&#xff09;&#xff0c;異常終止退出&#xff08;代碼未執行完&#xff09;&#xff0c;其中最后一種退出相當于進程在運行時&a…

LeetCode 2919 使數組變美的最小增量運算數

動態規劃解題&#xff1a;最小操作次數使數組變為美麗數組 問題描述 給定一個下標從0開始、長度為n的整數數組nums和一個整數k。你可以對數組中的任意一個元素進行加1操作&#xff0c;操作次數不限。如果數組中任意長度大于或等于3的子數組的最大值都大于或等于k&#xff0c;…

計算生物學在中國的發展情況?

李升偉 整理 計算生物學在中國的發展呈現出多方面積極態勢&#xff0c;具體表現如下&#xff1a; 發展概述&#xff1a; 上海發布了醫用AI發展的專項方案&#xff0c;特別強調了腦科學與計算生物學的前沿領域。這表明政府有意推動該領域的技術進步和技術合作平臺建設。國內的…

Linux之文件內容顯示(cat、grep、cut、sort、uniq、tr)

&#x1f3af; 本文專欄&#xff1a;Linux &#x1f680; 作者主頁&#xff1a;小度愛學習 1、瀏覽普通文件內容 命令常用選項說明cat-n 對輸出內容中的所有行標注行號&#xff1b;-b 對輸出內容中的非空行標注行號。查看文本文件的內容head-num 指定需要顯示文件num行的內容。…

3DS 轉 STL 全攻略:傳統工具與迪威模型網在線轉換深度解析

在 3D 建模與 3D 打印的技術領域中&#xff0c;常常會遇到需要將不同格式的文件進行轉換的情況。其中&#xff0c;把 3DS 文件轉換為 STL 格式是較為常見的操作。3DS 文件作為一種舊版 Autodesk 3D Studio 使用的 3D 圖像格式&#xff0c;存儲著豐富的信息&#xff0c;包括網格…

IoT FEM射頻前端模組芯片(2.4G PA)三伍微電子GSR2401 兼容替代RFX2401

型號&#xff1a;GSR2401應用&#xff1a;適用于藍牙&#xff08;BT&#xff09;、ZigBee及物聯網&#xff08;IoT&#xff09;設備 功能&#xff1a;集成了功率放大器&#xff08;PA&#xff09;、開關&#xff08;Switch&#xff09;和低噪聲放大器&#xff08;LNA&#xff…

Missashe考研日記-day22

Missashe考研日記-day22 1 專業課408 學習時間&#xff1a;3h學習內容&#xff1a; 先把昨天關于進程調度的課后習題做了&#xff0c;然后花了挺長時間預習OS的最最最最重要的一部分——同步與互斥問題&#xff0c;這部分大二上課的時候就懵懵懂懂的&#xff0c;得認真再領悟…

2025年最新Web安全(面試題)

活動發起人小虛竹 想對你說&#xff1a; 這是一個以寫作博客為目的的創作活動&#xff0c;旨在鼓勵大學生博主們挖掘自己的創作潛能&#xff0c;展現自己的寫作才華。如果你是一位熱愛寫作的、想要展現自己創作才華的小伙伴&#xff0c;那么&#xff0c;快來參加吧&#xff01…

Qt QML - qmldir使用方法詳解

以實際例子看qmldir的使用 1.搞一個qmldir2.讓QML找到你的qmldir &#xff08;重點&#xff09;.pro 工程文件QQmlApplicationEngine加載主QML處 3.用起來你的模塊 qmldir是Qt QML模塊化的基石&#xff0c;其設計初衷是為解決QML文件的組織、復用和依賴管理問題,。只需要在每個…

# Shell腳本參數設計規范(DeepSeek指導)

Shell腳本參數設計規范&#xff08;DeepSeek指導&#xff09; 文章目錄 Shell腳本參數設計規范&#xff08;DeepSeek指導&#xff09;A 我問&#xff1a;Q DeepSeek回答&#xff1a;**命令行參數表示規范****標準化表示示例**情況1&#xff1a;必選選項參數值情況2&#xff1a;…

MQTT協議:IoT通信的輕量級選手

文章總結&#xff08;幫你們節約時間&#xff09; MQTT協議是一種輕量級的發布/訂閱通信協議。MQTT通信包括連接建立、訂閱、發布和斷開等過程。MQTT基于TCP/IP&#xff0c;其通信過程涉及多種控制包和數據包。ESP32S3可以通過MQTT協議接收消息來控制IO9引腳上的LED。 想象一…