클럭 비교
어플리케이션이 여러 카메라로부터 이미지 자료를 처리하는 것과 관련될 때, 이미지 기록의 정확한 시간 또는 정확한 연대순은 종종 후속 처리에 중요합니다. 타임 스탬프가 제공되면, 다른 이미지 데이터에 대한 시간 참조를 설정할 수 있습니다. 그러나, 카메라의 시간대가 정확하게 일치하는 것이 중요합니다. "Precision Time Protocol"(PTP)을 사용하여 IDS GigE Vision 카메라를 펌웨어 2.2 이상과 쉽게 동기화할 수 있습니다.
IDS GigE Vision 카메라를 PTP와 동기화
PTP (Precision Time Protocol)는 네트워크를 통해 연결된 장치의 시간 동기화를 허용하는 시간 동기화 표준(IEEE1588)입니다. 이 표준을 지원하는 카메라는 정의된 주기에서 시간 마스터와 동기화 메시지를 교환합니다. 각 송신 및 수신 시간의 타임 스탬프 정보를 사용하면 카메라의 내부 카운터를 매우 정확하게 보정하고 조정할 수 있습니다. 카메라 펌웨어 버전 2.2를 사용하면, 모든 IDS GigE Vision 카메라가 PTP와 호환됩니다!
PTP는 USB 연결에 대해 정의되어 있지 않으므로, 이 어플리케이션 노트는 IDS GigE Vision 카메라만 참조합니다.
IEEE1588 타임 스탬프는 1970년 1월 1일 00:00시를 0시간으로 설정한 epoch 타이머이며, 1ns (1GHz)의 분해능을 제공합니다. 네트워크 장치들 간의 시간 동기화 정확도는 지연 시간 및 신호 런타임의 부정확성으로 인해 마이크로 초 범위에 있습니다.
PTP 사용 사례
PTP는 이미지 콘텐츠를 시간적으로 참조하여 다양한 어플리케이션의 기초를 형성하는 기반 기술입니다. 이는 어플리케이션의 요구 사항과 네트워크 인프라의 복잡성에 따라 다르게 생성될 수 있습니다.
1. 상대적 타임 스탬프 동기화
이 경우, 모든 카메라가 동일한 네트워크에 있습니다. 하나의 카메라는 마스터이고, 다른 하나는 슬레이브입니다. 모든 슬레이브 카메라의 타임 스탬프는 마스터 카메라와 동기화됩니다. 카메라는 절대적 타임 스탬프(실시간)를 제공하지 않으며, 추가 노력없이 동기식으로 트리거될 수 없습니다.
장점 :
- 상대적 타임 스탬프는 어플리케이션에 있는 모든 카메라의 이미지 기록에 대한 시간 할당을 설정합니다. 어떤 이미지가 먼저였는지, 다른 카메라의 이미지 간의 시간차는 얼마나 큰지.
- 특별한 네트워크 인프라에 관한 추가 노력과 비용 없이 상대적 타임 스탬프를 생성할 수 있습니다.
2. 절대적 시간과 타임 스탬프 동기화
이 경우, 네트워크 카메라는 외부 마스터와 동기화됩니다. 이 PTP 마스터는 소위 "하드웨어 타임 스탬프"를 지원하는 네트워크 카드가 될 수 있습니다. 하드웨어 지원이 없으면, 동기화의 정확도가 상당히 저하됩니다. 필요한 하드웨어 외에도 PTP를 지원하는 소프트웨어도 필요합니다 (IDS peak의 일부가 아닙니다!).
장점 :
- 글로벌 (실제) 타임 스탬프가 있는 이미지 콘텐츠는 어플리케이션의 한계를 넘어서는 실시간 참조가 있는 다른 정보에 연관될 수 있습니다.
- 이미지 콘텐츠는 글로벌 시간 참조를 사용하여 다른 어플리케이션이나 평가에 재사용할 수 있습니다.
PTP를 사용하세요: "상대적 동기화"
다음 섹션에서는 두 PTP 가능 네트워크 카메라들 간에 타임 스탬프의 "상대적 동기화"를 설정하는 방법의 예를 설명합니다.
하드웨어 설정
펌웨어 2.2 ( "PTP 지원")가 있는 두 개의 다른 IDS GigE Vision 카메라들 (GV-526xFA-C, GV-504xCP-M)이 동일한 네트워크 스위치에 연결됩니다. 추가적인 호스트 PC는 카메라를 제어하고 구성하는 역할만 합니다. 카메라의 PTP 동기화에는 관여하지 않습니다.
소프트웨어 설정
모든 PTP 구성 기능은 "PtpControl"카테고리 아래의 카메라 특징 노드 맵에서 찾을 수 있습니다. 이러한 기능은 펌웨어 버전 2.2부터 사용할 수 있습니다. PTP 동기화를 설정하기 위해 호스트 PC에서 IDS peak 설치의 Vision Cockpit을 사용합니다.
카메라를 PTP 마스터로 구성하세요
GV-526xFA-C 카메라는 PTP 마스터 장치로 구성되어야 합니다. Vision Cockpit에서 카메라를 열고 "PtpEnable"을 "True"로 설정하여 PTP를 활성화합니다. 또한 카메라는 "PtpSlaveOnly"를 "False"로 설정하여 마스터 역할을 맡을 권한을 받습니다.
# Configure master camera
PtpEnable = True
PtpSlaveOnly = False
다른 카메라를 PTP 슬레이브로 구성하세요
GV-504xCP-M은 PTP 슬레이브 장치로 구성되어야 합니다. PTP는 "PtpEnable"을 "True"로 설정하여 활성화됩니다. 그러나 이번에는 카메라가 슬레이브 장치로만 작동합니다. 이를 위해 "PtpSlaveOnly"는 "True"로 설정되어 있습니다.
# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True
마스터-슬레이브 계층 구축
마스터와 슬레이브 장치가 구성되는 즉시 마스터-슬레이브 계층이 자동으로 설정됩니다. 마스터 카메라의 경우 "PtpStatus"를 "Listening"에서 "Master"로 변경하여 확인할 수 있습니다. 슬레이브 카메라의 경우, 먼저 "PtpStatus"가 "Listening"에서 "Uncalibrated"로 변경된 다음 마스터 카메라와의 동기화가 완료된 후 "Slave"로 변경되는지 확인하여 이를 인식할 수 있습니다.
새로운 PTP 기능을 사용하여 카메라의 마스터-슬레이브 계층 구조가 설정되면 "상대적 동기화"가 완료됩니다.
타임 스탬프를 활성화하세요
이제 동기화된 카메라의 타임 스탬프를 어플리케이션의 이미지 데이터와 함께 사용하려면, 타임 스탬프를 메타 데이터 (청크 데이터 포함)로 전송하도록 활성화해야 합니다.
먼저 "ChunkModeActive"를 "True"로 설정하여, 이미지 버퍼로 청크 데이터 전송을 활성화합니다. 그런 다음 "ChunkSelector"를 통해 "Timestamp"를 선택하고, "ChunkEnable"스위치를 통해 활성화합니다.
# activate chunk data creation
ChunkModeActive = True
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True
이제부터, 카메라는 각 이미지 수집과 함께 타임스탬프를 생성하고, 이미지 버퍼 (청크 데이터)와 함께 호스트 PC로 전송합니다. 청크 데이터와 타임 스탬프는 Vision Standard 소프트웨어를 통해 읽을 수 있습니다.
이미지 획득
타임 스탬프가 있는 이미지 데이터를 어플리케이션에서 처리해야 하는 경우, 녹화 시간과 카메라 트리거링이 중요할 수 있습니다. 이는 여러 카메라들의 이미지들이 정확히 동일한 획득 시간 (동기식 이미지 획득)에 필요한지 여부와 시간적 대응 편차 (타임 스탬프 지터)가 얼마나 될 수 있는지에 따라 다릅니다. 어플리케이션 요구 사항에 따라, 카메라에 적합한 트리거 방법을 선택해야 합니다. 선택을 위한 결정적인 요소는 소프트웨어 및 하드웨어 신호의 다양한 방법의 가능한 정확성뿐만 아니라 배포 및 사용에 대한 노력과 비용입니다. "Lego 원리에 따른 트리거링" 테크팁에서 어플리케이션에 맞는 트리거 기술을 선택할 수 있습니다.
이전에 구성된 "상대적 동기화"를 확인하기 위해, PPS (pulse per second) 신호를 사용하여 카메라를 트리거하고, 카메라의 동기식 프리런을 달성합니다.
동기화된 프리런
PTP 기능이 활성화될 때 생성되는 각 카메라 (슬레이브 및 마스터 모두)의 PPS 신호는 이름에서 알 수 있듯 1 초마다 생성되므로 카메라 동기화를 테스트하는 좋은 방법입니다. 신호는 트리거 소스로 설정되어 매초 이미지 획득을 시작합니다. 결과 이미지 타임 스탬프는 "상대적 동기화"로 인한 몇 마이크로 초를 제외하고는 동일해야 합니다. PPS신호를 통한 동기화된 프리런은 다음과 같이 모든 카메라에서 설정됩니다.
# 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
타임 스탬프를 읽으세요
이미지 콘텐츠와 함께 어플리케이션의 타임 스탬프를 처리하려면, 현재 이미지 버퍼의 청크 데이터를 읽어야 합니다. 청크 데이터는 일반적으로 알 수 없는 메모리 레이아웃이 있는 제조업체-별 페이로드(payload) 버퍼이므로, 개별 메타 데이터는 노드 맵을 통해 읽힙니다. 이를 위해, 기존의 모든 메타 데이터는 표준화된 노드 이름과 함께 GenTL에서 노드맵으로 전송되므로 표준 API를 통해 액세스할 수 있습니다.
4월 초에 예정된 IDS peak 1.1 업데이트를 통해, IDS peak API를 통해 매우 편리하게 타임 스탬프 및 기타 모든 청크 데이터를 검색하고 처리할 수 있습니다. 다음 소스 코드 스니펫(snippet)은 이미지 버퍼에서 타임 스탬프를 추출하는 방법의 예를 보여줍니다. 청크 데이터 처리를 보여주는 전체 소스 코드 예제는 IDS peak SDK (버전 1.1부터)의 설치 패키지에서도 찾을 수 있습니다.
// 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();
}
요약
PTP는 이미지 콘텐츠의 시간 할당과 관련하여 다중 카메라 어플리케이션에서 중요한 기본 기능입니다. 따라서 추가 하드웨어 및 소프트웨어 요구 사항 없이 카메라들 간의 상대적 동기화를 매우 쉽게 실현할 수 있습니다. 많은 어플리케이션에서 상대적 카메라 동기화는 이미지가 "동일한" 시간 또는 올바른 순서로 사용되도록 하는 데 충분합니다. 펌웨어 버전 2.2를 사용하면, IDS GigE Vision 카메라도 외부 타이머와의 글로벌 동기화가 가능합니다. PTP를 통한 시간 동기화에 대한 질문이 있거나 더 많은 정보가 필요하면, 당사 웹 사이트의지식베이스를 방문하거나, 당사 시스템 컨설팅에 문의하세요.