每個 Azure Kinect DK 裝置都包含 3.5 公厘的同步處理埠(同步處理 和 同步輸出),可用來將多個裝置連結在一起。 連接裝置之後,您的軟體可以協調裝置之間的觸發時間。
本文說明如何連接並同步裝置。
使用多個 Azure Kinect DK 裝置的優點
使用多個 Azure Kinect DK 裝置有許多原因,包括下列各項:
- 填補遮擋。 雖然 Azure Kinect DK 數據轉換會產生單一影像,但兩個相機(深度和 RGB)實際上相距很小。 位移使得遮蔽成為可能。 當前景物件遮擋裝置上其中一個相機的背景物件視圖時,就會發生遮擋。 在產生的色彩影像中,前景物件似乎會在背景物件上投射陰影。
例如,在下圖中,左側相機會看到灰色圖元 「P2」。不過,白色前景對象會封鎖右側相機 IR 梁。 右側相機沒有 「P2」 的數據。
其他同步處理裝置可以提供遮蔽的數據。 - 掃描三個維度中的物件。
- 將有效幀速率提高到每秒超過 30 幀的值 (FPS)。
- 擷取相同場景的多個 4K 色彩影像,全都在曝光中心的 100 微秒(μs)內對齊。
- 增加空間內的相機涵蓋範圍。
規劃多裝置設定
開始之前,請確定您檢閱 Azure Kinect DK 硬體規格 和 Azure Kinect DK 深度相機。
備註
拿掉外部塑膠蓋,以露出同步輸入和同步輸出插孔。
選取裝置組態
您可以針對裝置設定使用下列其中一種方法:
-
菊花鍊配置。 同步處理一部主要裝置和最多八個次級裝置。
-
星形設定。 同步處理一部主要裝置和最多兩個次級裝置。
使用外部同步觸發器
在這兩個組態中,主要裝置會提供次級裝置的觸發訊號。 不過,您可以針對同步觸發器使用自訂的外部來源。 例如,您可以使用此選項來同步影像捕捉與其他設備。 在菊花鏈結組態或星形設定中,外部觸發程式來源會連線到主要裝置。
您的外部觸發程式來源必須以與主要裝置相同的方式運作。 它必須傳遞具有下列特性的同步訊號:
- 活動高度
- 脈衝寬度:大於8微秒
- 5V TTL/CMOS
- 最大駕駛容量:不少於 8 毫安培 (mA)
- 頻率支援:正確支援 30 FPS、15 FPS 和 5 FPS(彩色相機主 VSYNC 信號的頻率)
觸發來源必須使用 3.5 公厘音訊纜線,將訊號傳送到主裝置的 Sync in 埠。 您可以使用立體聲或單聲道纜線。 Azure Kinect DK 會將音訊纜線連接器的所有套筒和環短路,並將它們接地。 如下圖所示,裝置只會從連接器接頭接收同步訊號。
如需如何使用外部設備的詳細資訊,請參閱 搭配外部同步處理裝置使用 Azure Kinect 錄製器
備註
RGB 相機的同步輸出訊號是 VSync。 所有裝置的時間戳都會設定為零,並開始遞增計數。 Microsoft 沒有將同步信號脈衝的最小和最大寬度特徵化,並建議模擬 Azure Kinect DK 同步輸出埠所產生的脈衝。
規劃相機設定和軟體設定
如需如何設定軟體來控制相機和使用影像數據的相關信息,請參閱 Azure Kinect 感測器 SDK。
本節討論影響同步處理裝置(但不是單一裝置)的幾個因素。 您的軟體應該考慮這些因素。
曝光考慮
如果您想要控制每個裝置的精確計時,建議您使用手動曝光設定。 在自動曝光設定下,每個彩色相機都可以動態變更實際曝光。 由於曝光會影響計時,因此這類變更會迅速使相機不同步。
在影像擷取循環中,請避免重複設定相同的曝光設定。 僅在需要時呼叫 API 一次。
避免多個深度相機之間的干擾
當多個深度相機進行成像重疊的視場時,每個相機必須捕捉自己相應的雷射光。 為防止雷射彼此干擾,相機捕捉應以 160 微秒或以上的時間差辦理。
針對每個深度相機擷取,雷射會開啟 9 次,每次只會啟動 125微秒。 然後,根據操作模式,激光會閒置 1450微秒或2390微秒。 此行為意味著偏移量計算的起點為125μs。
此外,相機時鐘與裝置韌體時鐘之間的差異會將最小偏移增加到 160 微秒。 若要計算組態更精確的位移,請注意您使用的深度模式,並參考 深度感測器原始計時數據表。 藉由使用此資料表的數據,您可以使用下列方程式來計算最小位移(每個相機的曝光時間):
曝光時間 = (IR 脈衝 × 脈衝寬度) + (閑置期間 × 空閒時間)
當您使用160微秒的位移時,最多可以設定9個額外的深度相機,在其他雷射閒置的時候,讓每個雷射都能開啟。
在您的軟體中,使用 depth_delay_off_color_usec 或 subordinate_delay_off_master_usec 確保每個紅外線雷射在其自己的 160 微秒時間段內發射,或具有不同的視野。
備註
實際的脈衝寬度是 125微秒,但我們標示為 160微秒,以便留有餘地。 以 NFOV UNBINNED 為例,每 125μs 的脈衝後面接著 1450μs 的閒置。 將這些相加(9 x 125) + (8 x 1450),得到 12.8 毫秒的曝光時間。 您可以讓兩個裝置的曝光交錯的最接近方法是將第二台相機的第一次脈衝落在第一台相機的第一次空閒期內。 第一個和第二個相機之間的延遲可能低至125微秒(脈衝的寬度),但我們建議留一些緩衝,因此為160微秒。 在 160 微秒內,您最多可以交錯 10 部攝影機的曝光時間。
準備您的裝置和其他硬體
除了多個 Azure Kinect DK 裝置之外,您可能必須取得其他主電腦和其他硬體,才能支援您想要建置的設定。 使用本節中的資訊,確定所有裝置和硬體都已就緒,再開始設定。
Azure Kinect DK 裝置
針對您想要同步處理的每個 Azure Kinect DK 裝置,執行下列動作:
- 請確定裝置上已安裝最新的韌體。 如需如何更新裝置的詳細資訊,請移至 更新 Azure Kinect DK 韌體。
- 拿掉裝置封面以顯示同步埠。
- 記下每個裝置的序號。 您稍後會在安裝程式中使用這個數位。
主電腦
一般而言,每個 Azure Kinect DK 都會使用自己的主計算機。 您可以使用專用主機控制器,視您使用裝置的方式和透過USB連線傳輸的數據量而定。
請確定每個主電腦上都已安裝 Azure Kinect 感測器 SDK。 如需如何安裝感測器 SDK 的詳細資訊,請移至 快速入門:設定您的 Azure Kinect DK。
Linux 計算機:Ubuntu 上的 USB 記憶體
根據預設,以 Linux 為基礎的主計算機只會配置 16 MB 的核心記憶體來處理 USB 傳輸。 此數量通常足以支援單一 Azure Kinect DK。 不過,若要支援多個裝置,USB 控制器必須有更多的記憶體。 若要增加記憶體,請遵循下列步驟:
- 編輯 /etc/default/grub。
- 找出下列這一行:
使用這一行取代它:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"備註
這些命令會將 USB 記憶體設定為 32 MB。 這是一個將預設值增加到兩倍的範例設定。 您可以視您的解決方案設定較大的值。
- 執行 sudo update-grub。
- 重新啟動電腦。
電纜
若要將裝置彼此連線到主計算機,您必須使用3.5公厘的男性對男性纜線(也稱為3.5公厘音頻纜線)。 纜線長度應小於10公尺,而且可以是立體聲或單聲道。
您必須擁有的纜線數目取決於您使用的裝置數目,以及特定裝置組態。 Azure Kinect DK 方塊不包含纜線。 您必須個別購買它們。
如果您以星形配置連接裝置,也必須有一個耳機分接器。
將您的裝置連線
在菊花鏈組態中連線 Azure Kinect DK 裝置
- 將每個 Azure Kinect DK 連線到電源。
- 將每個裝置連線到其主計算機。
- 選取一個裝置作為主要裝置,並將 3.5 毫米音訊纜線插入其 同步輸出 埠。
- 將纜線的另一端插入第一個附屬設備的Sync in埠中。
- 若要連接另一個裝置,請將另一條纜線插入第一個次級裝置的 同步輸出 埠,然後插入下一個裝置 的同步處理 埠。
- 重複上一個步驟,直到所有裝置都連線為止。 最後一個裝置必須只有一條電纜連接。 它的 同步輸出 埠應該是空的。
將 Azure Kinect DK 裝置連接成星狀拓撲結構
- 將每個 Azure Kinect DK 連線到電源。
- 將每個裝置連線到其主計算機。
- 選取一個裝置做為主要裝置,並將耳機分隔器的單一端插入其 同步輸出 埠。
- 將 3.5 毫米音訊纜線連接到耳機分隔器「分割」端。
- 將每條纜線的另一端插入其中一台次級裝置的 Sync in 埠。
確認裝置已連線並通訊
若要確認裝置已正確連線,請使用 Azure Kinect Viewer。 視需要重複此程式,以搭配主要裝置測試每個次級裝置
這很重要
針對此程序,您必須知道每個 Azure Kinect DK 的序號。
- 開啟 Azure Kinect Viewer 的兩個實例。
- 在 [開啟裝置] 底下,選取您要測試之次級裝置的序號。
這很重要
若要取得所有裝置之間的精確影像擷取對齊方式,您必須最後啟動主要裝置。
- 在 [外部同步處理] 底下,選取 [子項]。
- 選取 [開始]。
備註
因為這是次級裝置,因此 Azure Kinect Viewer 不會在裝置啟動時顯示影像。 在次級裝置收到主要裝置的同步訊號之前,不會顯示任何影像。
- 啟動次級裝置之後,請使用 Azure Kinect Viewer 的其他實例來開啟主要裝置。
- 在 [外部同步處理] 底下,選取 [ 主要]。
- 選取 [開始]。
當主要 Azure Kinect 裝置啟動時,Azure Kinect 查看器的兩個實例都應該顯示影像。
將裝置校正為同步化的組合
確認裝置已正確通訊之後,您就可以進行校正,以在單一網域中產生影像。
在單一裝置中,深度相機和 RGB 相機經過原廠校正,以便共同運作。 不過,當多個裝置必須一起運作時,必須進行校正,才能判斷如何將影像從擷取的相機領域轉換成您想要用來處理影像的相機領域。
交叉校正裝置有多個選項。 Microsoft提供使用 OpenCV 方法的 GitHub 綠色畫面程式代碼範例。 此程式代碼範例的自述檔提供更多用於校正裝置的詳細數據和指示。
如需校正的詳細資訊,請參閱 使用 Azure Kinect 校正函式。
後續步驟
設定同步處理裝置後,您可以學習如何使用