中國自動化學(xué)會專家咨詢工作委員會指定宣傳媒體
新聞詳情
gkongbbs

精確時間同步協(xié)議(PTP)——輕松實現(xiàn)多相機的精確同步

http://casecurityhq.com 2022-05-17 10:23 來源:

  在某些應(yīng)用場合中,如果需要處理來自多臺相機的圖像時,則圖像記錄的精確時間或準(zhǔn)確的先后順序?qū)罄m(xù)處理至關(guān)重要。若相機能夠提供時間戳,則可為不同的圖像數(shù)據(jù)建立時間基準(zhǔn)。然而,相機的時間基準(zhǔn)要能夠精確匹配,這一點至關(guān)重要。通過使用“精確時間協(xié)議”(PTP),HK IDS GigE Vision相機(固件版本2.2或以上)能夠輕松實現(xiàn)同步。

  借助精確時間協(xié)議(PTP)同步HK IDS GigE Vision相機

  精確時間協(xié)議(PTP)是一種時間同步標(biāo)準(zhǔn)(IEEE1588),它使通過網(wǎng)絡(luò)連接的設(shè)備實現(xiàn)時間同步。支持此標(biāo)準(zhǔn)的相機可在特定的周期內(nèi)與主時鐘交換同步信息。利用各自發(fā)送和接收時間中的時間戳信息,相機內(nèi)部的計數(shù)器可實現(xiàn)精確地校準(zhǔn)和同步。

  所有固件版本為2.2及以上的HK IDS GigE Vision相機都可與PTP兼容!

  IEEE1588時間戳是以1970年1月1日0時0分為計時起點,支持1納秒(1 GHz)的時間分辨率。然而,由于延遲和信號運行時的不準(zhǔn)確性,聯(lián)網(wǎng)設(shè)備的時間同步精度達微秒級。

  PTP應(yīng)用案例

  PTP作為一種基礎(chǔ)協(xié)議,通過為圖像數(shù)據(jù)提供時間基準(zhǔn),為各種應(yīng)用奠定基礎(chǔ)。視應(yīng)用要求及網(wǎng)絡(luò)基礎(chǔ)設(shè)施的復(fù)雜性的不同,PTP可以通過不同的方式來實現(xiàn)。

  01  相對時間戳同步

  在本案例中,所有相機都在同一個網(wǎng)絡(luò)。其中一臺相機為主服務(wù)器,其余相機為從服務(wù)器。所有從相機的時間戳與主相機同步。相機既不提供絕對時間戳(實時),同時在無其他操作的情況下,也無法實現(xiàn)同步觸發(fā)。

  優(yōu)勢:

  ■ 在該應(yīng)用場合中,相對時間戳確定所有相機圖像記錄的時間分配。此外,相對時間戳還能確定哪一張圖像為第一張,以及不同相機的圖像時差大小。

  ■ 無需額外的操作和成本,即可為特定的網(wǎng)絡(luò)基礎(chǔ)架構(gòu)生成相對時間戳。

  02  利用絕對時間同步時間戳

  本案例中,聯(lián)網(wǎng)相機與外部主時鐘同步。該PTP主時鐘可以是支持“硬件時間戳”的網(wǎng)卡——若無硬件支持,同步精度將顯著降低。除必要的硬件外,還需要支持PTP的軟件。

  優(yōu)勢:

  ■ 具備全局(實時)時間戳的圖像內(nèi)容可跨越當(dāng)前的應(yīng)用限制,與任何其他使用實時時間基準(zhǔn)的信息相關(guān)聯(lián)。

  ■ 對于其它使用全局時間基準(zhǔn)的應(yīng)用場合或評估,圖像內(nèi)容可以重用。

  使用PTP:“相對同步”

  硬件設(shè)置

  兩臺不同的固件版本為2.2(支持PTP)的HK IDS GigE Vision相機(GV-526xFA-C和GV-504xCP-M)連至同一網(wǎng)絡(luò)交換機。一臺額外的主機PC,僅用于控制和配置相機,不涉及相機的PTP同步。

  軟件設(shè)置

  可通過“PtpControl”下的相機功能節(jié)點圖查找所有PTP配置功能。只有固件需為2.2或以上版本的相機才能使用這些功能。我們在主機PC上安裝配套軟件,來設(shè)置PTP同步。

  將一臺相機配置為PTP主時鐘

  GV-526xFA-C相機應(yīng)設(shè)置為PTP主時鐘。在軟件中打開相機,并將“PtpEnable”設(shè)為“True”,啟用PTP。另外,將“PtpSlaveOnly”設(shè)為“False”為相機賦予“主時鐘”角色。

  # Configure master camera

  PtpEnable = True

  PtpSlaveOnly = False

  將另一臺相機配置為PTP從時鐘

  GV-504xCP-M相機應(yīng)設(shè)為PTP從時鐘。同理,將“PtpEnable”設(shè)為“True”以啟用PTP。此時,這臺相機僅作為從時鐘使用。將“PtpSlaveOnly”仍設(shè)為“True”。

  # Configure slave camera

  PtpEnable = True

  PtpSlaveOnly = True

  創(chuàng)建主從等級

  在完成主從時鐘配置后,主-從等級將自動創(chuàng)建。對于主時鐘相機,可通過“PtpStatus”由“Listening ”變成“Master”來確定。對于從時鐘相機,可通過“PtpStatus”先由“Listening”變?yōu)?ldquo;Uncalibrated”,并在與主時鐘相機同步后變?yōu)?ldquo;Slave”來確定。

  在通過相機的新PTP功能完成主從等級創(chuàng)建后,“相對同步”也隨之完成。

  啟用時間戳

  如果您希望對圖像數(shù)據(jù)使用已同步相機生成的時間戳,則必須將時間戳作為元數(shù)據(jù),啟用元數(shù)據(jù)(及塊數(shù)據(jù))傳輸。

  首先,將“ChunkModeActive”設(shè)為“True”,以通過圖像緩沖區(qū)啟用塊數(shù)據(jù)傳輸。然后,通過“ChunkSelector”選擇“Timestamp”,并通過“ChunkEnable”開關(guān)啟用時間戳。

  # activate chunk data creation

  ChunkModeActive = True

  # enable "ChunkTimestamp"

  ChunkSelector = Timestamp

  ChunkEnable = True

  這時,相機所采集的每一張圖像將具備相應(yīng)的時間戳,并借助圖像緩沖區(qū)(通過塊數(shù)據(jù))傳輸至主機PC。這樣,塊數(shù)據(jù)及時間戳可通過任何視覺標(biāo)準(zhǔn)軟件進行讀取。

  圖像采集

  如果應(yīng)用中需要對帶時間戳的圖像數(shù)據(jù)進行處理,則圖像的記錄時間和相機的觸發(fā)至關(guān)重要。這種情況取決于來自多臺相機的圖像是否需要完全相同的采集時間(同步圖像采集)以及時間關(guān)聯(lián)偏差(時間戳抖動)有多大。根據(jù)應(yīng)用要求,須選擇適合相機的觸發(fā)模式。在做出這一選擇時,要考慮的決定性的因素不僅包括不同軟件和硬件信號模式的精度,也包括部署和使用所需操作和成本。為檢查先前配置的“相對同步”,我們使用每秒脈沖數(shù)(PPS)信號來觸發(fā)相機,以實現(xiàn)同步自由運行。

  同步自由運行

  顧名思義,在PTP功能啟用的情況下,每臺相機(主時鐘相機和從時鐘相機)的PPS信號會每秒生成一個。因此我們可借助PPS信號檢查相機的同步狀態(tài)。這一信號被設(shè)置為觸發(fā)源,因此每秒鐘將觸發(fā)一次圖像采集。除了由“相對同步”導(dǎo)致的幾微妙的偏差,相機生成的圖像時間戳應(yīng)為一致。通過PPS信號實現(xiàn)所有相機同步自由運行的操作如下:

  # image acquisition configuration for both cameras

  LineSelector = Line2

  LineMode = Output

  LineSource = PPS

  TriggerSelector = ExposureStart

  TriggerMode = On

  TriggerSource = Line2

  # Limit bandwidth on both cameras

  DeviceLinkThroughputLimit = 60000000

  # Start acquisition on both cameras

  Execute AcquisitionStart

同步PPS觸發(fā)信號將觸發(fā)相機在同一時間點進行圖像采集

  讀取時間戳

  為在應(yīng)用場合中處理時間戳和圖像內(nèi)容,您須讀取當(dāng)前圖像緩沖區(qū)的塊數(shù)據(jù)。塊數(shù)據(jù)為制造商相關(guān)的有效負載緩沖區(qū),其存儲布局通常未知,因此我們將通過節(jié)點圖來讀取各個元數(shù)據(jù)。為此,所有現(xiàn)有的元數(shù)據(jù)及其標(biāo)準(zhǔn)的節(jié)點名稱將從GenTL傳輸至節(jié)點圖,以便通過標(biāo)準(zhǔn)的API進行訪問。

  以下的源代碼片段為您演示如何從圖像緩沖區(qū)中提取時間戳。安裝包也為您提供了有關(guān)塊數(shù)據(jù)處理的完整源代碼示例。

  // Get buffer from device's datastream

  const auto buffer = m_dataStream->WaitForFinishedBuffer(5000);

  // check buffer for chunks

  if (buffer->HasChunks())

  {

  // update nodemap with current chunk data

  m_nodemapRemoteDevice->UpdateChunkNodes(buffer);

  // Get the value of the timestamp chunk

  const auto chunktimestamp = m_nodemapRemoteDevice->FindNode<peak::core::nodes::FloatNode>("ChunkTimestamp")->Value();

  }

  總結(jié)

  當(dāng)涉及圖像內(nèi)容的時間分配時,PTP是多相機應(yīng)用場合中一個重要的基礎(chǔ)功能,能夠輕松實現(xiàn)相機間的相對同步,無需額外的硬件和軟件支持。在許多應(yīng)用場合中,相對相機同步也足以確保圖像在“相同”的時間或以正確的順序使用。相機還配備外部定時器,適用于全局同步。

版權(quán)所有 中華工控網(wǎng) Copyright?2024 Gkong.com, All Rights Reserved