VisionCommon
MIL or Cognex 라이브러리를 활용한 환경 구성
기본 비전 알람 매니저
비전 알람 코드
조명 설정 에러
카메라 연결 에러
카메라 그랩 에러
비전 알람 인터페이스
알람을 등록한다.
결과 상태 코드
알람을 발생시킨다.
비전 알람 코드
결과 상태 코드
알람을 발생시킨다.
비전 알람 코드
결과 상태 코드
장비의 비전 셋업 인터페이스
오토 포커스의 결과로 나온 최적의 초점 위치 저장
최적의 초점 위치
기본 장비 패턴 매니저
장비 패턴 인터페이스
장비에서 구현한 패턴 타입 리스트를 얻어온다.
패턴 타입 리스트
패턴을 얻어온다.
패턴 정보
패턴
패턴 설정 윈도우를 얻어온다.
패턴 에이전트
패턴 정보
카메라 디스플레이
FOV 키 정보
패턴
장비에서 시퀀스 노드를 정의하고,
AuroraVision 시퀀스에서 사용하기 위한 클래스
생성자
로그 태그명
Action 노드를 가져온다.
노드 이름
Default Decision 노드
Action 노드
Decision 노드를 가져온다.
노드 이름
Default Decision 노드
Decision 노드
Action 노드를 등록한다.
노드 이름
Action 노드
Deicision 노드를 등록한다.
노드 이름
Deicision 노드
Sequence adapter 사용 시 default node ( ActionNode ) 만들어주는 Method
생성자
ActionNode 사용 시 Default로 제공하는 결과값 (default(non param) : SequenceAction.OK())
생성자 : ActionNode 사용 시 Default로 제공하는 결과값 (default : SequenceAction.OK())
Default Action Node
Default Action Node return
Sequence adapter 사용 시 default node (Decision Node ) 만들어주는 Method
생성자
DecisionNode 사용 시 Default로 제공하는 결과값(default : "")
Default Decision Node
Default Decision Node return
기본 장비 시퀀스 매니저
생성자
장비에서 정의한 시퀀스 어댑터 매니저
기본 생성자
서브 시스템의 시퀀스 어댑터를 등록한다.
서브 시스템 정보
시퀀스 어댑터
서브 시스템의 시퀀스 어댑터를 가져온다.
서브 시스템 정보
가져올 때 default Adapter를 어떤 것을 가져올지 설정하는 정보
!주의! Node 형태로 사용할 때 : ( DefaultActionNode / DefaultDecisionNode 를 생성)
!주의! Method 형태로 사용할 때 : null을 사용한다면 ".GetAdapter(~)?.Invoke(~)" 형태로 사용
시퀀스 어댑터
기본 장비의 운영 모드 어댑터
기본 장비의 카메라 트리거 어댑터
장비의 카메라 트리거 인터페이스
SW or HW 트리거 모드 일괄 설정
파라미터
성공 유무
SW 트리거 모드 설정
파라미터
성공 유무
HW 트리거 모드 설정
파라미터
성공 유무
트리거 On
성공 유무
트리거 Off
성공 유무
트리거 신호 On
카메라 컨피그
트리거 신호 Off
카메라 컨피그
기본 모션
기본 서브 시스템 모션 매니저
생성자
기본 FOV 모션 매니저
생성자
모션 제어를 위한 매니저
키 정보
모션을 등록한다.
키 정보
모션
모션을 얻어온다.
키 정보
모션
특정 키에 해당하는 모션을 제거한다.
키 정보
모든 모션을 제거한다.
상대위치 이동
키 정보
상대 위치 이동량
이동 결과 상태 코드
절대위치 이동
키 정보
이동할 절대 위치
이동 결과 상태 코드
포지션 타입의 위치로 이동한다.
키 정보
포지션 타입
이동 결과 상태 코드
현재의 위치 값을 얻어온다.
키 정보
현재 위치 값
EquipAdapter에서 사용하는 모션 제어 인터페이스
요청한 이동량(delta)만큼 상대위치 이동한다.
상대 위치 이동량
성공 : Hermes.E1.OK
요청한 위치로 이동한다.
성공 : Hermes.E1.OK
요청한 포지션타입(ePositionType)에 맞는 위치로 절대위치 이동한다.
포지션타입
성공 : Hermes.E1.OK
현재 모터 위치를 리턴한다.
현재 모터 위치
기본 포지션 매니저
기본 서브 시스템 포지션 매니저
생성자
기본 FOV 포지션 매니저
생성자
포지션 어댑터 인터페이스
포지션을 얻어온다.
포지션 타입
포지션
모션의 포지션 매니저
포지션 어댑터를 등록한다.
키 정보
포지션 어댑터
포지션 어댑터를 얻어온다.
키 정보
포지션 어댑터
포지션을 얻어온다.
키 정보
포지션 타입
포지션
다른 디스플레이에서 동일 카메라 라이브 동작시, 버튼 UI Sync를 맞추기 위함.
외부(버퍼) 트리거에 의한 그랩 완료 여부 (True : 그랩 완료 / False : 그랩 미완료)
EventCallBack에 의한 그랩 완료 여부 (True : 그랩 완료 / False : 그랩 미완료)
카메라 화면 중심을 기준으로 Ratio X,Y를 적용한 자를 이미지 크기
자를 이미지 크기
외부(버퍼) 트리거에 의한 그랩 완료 여부 설정
그랩 완료 여부
EventCallBack에 의한 그랩 완료 여부 설정
그랩 완료 여부
EventCallBack에 의한 그랩 완료 여부 체크 (True : 그랩 완료 / False : 그랩 미완료)
그랩 완료 여부
라이브 켜져있는지 여부
라이브 여부
카메라 라이브 시키기
카메라 라이브 끄기
연결되어있는지 여부
연결여부
이미지 버퍼 복제
복제한 이미지버퍼
카메라 디스플레이 가져오기
카메라 디스플레이
디스플레이 설정하기
카메라 디스플레이
디스플레이로 부터 이미지 가져오기
가져올 카메라 디스플레이
이미지 객체
게인 값 가져오기
성공유무
게인 값 설정하기
설정할 게인 값
성공유무
노출도 값 가져오기
노출 값
노출도 최솟값 가져오기
노출도 최솟값
노출도 최댓값 가져오기
노출도 최댓값
노출 값 설정하기
노출시간(ms)기준
성공유무
이미지 사이즈 가져오기
이미지 사이즈
버퍼로 부터 그랩한 이미지 가져오기
카메라 디스플레이
가져올 이미지 (reference)
성공유무
카메라 그랩(동기)
카메라 디스플레이
가져올 이미지 (reference)
성공 유무
라이브 시작
카메라 디스플레이
라이브 정지
Child 이미지들로 Parent(원장) 이미지가 정상적으로 만들어지는지 검증
디스플레이
원장(부모) 이미지
성공 유무
플라잉 시작
FOV 정보
추가 파라미터
성공 유무
플라잉 종료
추가 파라미터
성공 유무
플라잉 상태 체크
성공 유무
현재 플라잉 인덱스 가져오기
현재 플라잉 인덱스
플라잉 이미지 가져오기
플라잉 인덱스
플라잉 이미지
플라잉 이미지 전체 가져오기
플라잉 이미지 전체
플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬
플라잉 합성(원장) 이미지
데이터를 인덱스별로 관리하는 클래스
생성자
모든 데이터 리턴
모든 데이터
마지막 lastDataCnt개의 데이터 리턴
마지막 데이터 개수
마지막 lastDataCnt개의 데이터
데이터 삽입
데이터
원점, 각도, 길이로 구성되는 십자가
원점
각도
수직/수평 길이
수직 라인
수평 라인
생성자
원점
생성자
원점
수직/수평 길이
생성자
원점
각도
생성자
원점
각도
수직/수평 길이
객체 복제 (DeepCopy)
객체 복사 (DeepCopy)
MIL, Cognex와 상관없이 범용적으로 사용하는 컬러
Source -> Target 좌표계 변환을 위환 변환 값으로 작성한다.
데이터 저장 타입
CSV 로드 및 저장
생성자
CSV파일 로드
서브시스템 정보
시간
데이터 저장 타입
데이터 리스트
자동 생성된 경로에 CSV파일 저장 (비동기식)
서브시스템 정보
데이터 리스트
데이터 저장 타입
자동 생성된 경로에 CSV파일 저장 (비동기식)
서브시스템 정보
데이터
데이터 저장 타입
자동 생성된 경로에 CSV파일 저장 (동기식)
서브시스템 정보
데이터
데이터 저장 타입
이미지 로드 및 저장
생성자
이미지 로드
파일 경로
이미지
이미지 로드
파일 경로
보드 타입
보드 슬롯 위치
이미지
자동 생성된 경로에 이미지 저장 (비동기식)
FOV 정보
이미지
공정 결과 상태
자재 정보
공정중 Grab한 이미지를 저장
서브 시스템 키 정보
데이터 저장 타입
이미지
공정 중 Grab한 이미지를 저장
FOV 키 정보
데이터 저장 타입
이미지
지정된 경로에 이미지 저장 (비동기식)
파일 경로
파일 이름
이미지
오버레이 이미지 저장
마지막 FOV 정보
공정 결과 상태
자재 정보
디스플레이 타입
특정 서브시스템에 대한 동기화된 공정 결과 시간을 저장
서브시스템 정보
공정 결과
특정 서브시스템에 대한 공정 결과 시간 초기화
서브시스템 정보
센터로부터 각 패턴의 정위치까지 떨어진 거리 파라미터
센터로부터 각 패턴의 정위치까지 떨어진 거리들
이미지 좌표상으로 좌상단부터 우하단까지 0 ~ n-1 인덱스이며, RefOffsets가 null이면 센터를 기준으로 얼라인
찾은 패턴의 위치와 패턴의 정위치 간에 허용 거리. (Default : 3 mm)
생성자
센터로부터 각 패턴의 정위치까지 떨어진 거리들
찾은 패턴의 위치와 패턴의 정위치 간에 허용 거리
센터로부터 각 패턴의 정위치까지 떨어진 거리
센터로부터 패턴 정위치까지 거리X
센터로부터 패턴 정위치까지 거리Y
수평/수직 라인의 방향 타입
수평 라인
수직 라인
시작과 끝점을 가지는 직선
직선의 시작점
직선의 끝점
직선의 길이
생성자
시작점
끝점
수평/수직 라인 방향을 결정
각도
라인 방향 (수평 or 수직)
비전 시퀀스를 호출하기 전, 상위에서 클래스를 생성한 후 시퀀스 context에 넣어주어야 함.
var materialInfo = new MaterialInfo() {
LotId = "L0032",
CarrierId = "C19KAM123",
MaterialId = "90KMAQMM1QAS12"
};
context.PutValue(VisionContextKeys.CNTXT_KEY_MATERIAL_INFO, materialInfo);
장비의 운영 모드 상태 체크를 위한 인터페이스
시뮬레이션 모드 상태인지 체크
상태 플래그
드라이런 또는 물류 모드 상태인지 체크
상태 플래그
드라이런과 물류 모드 상태가 아닌지 체크
상태 플래그
드라이런 모드 상태인지 체크
상태 플래그
물류 모드 상태인지 체크
상태 플래그
카메라 디바이스 모델 리스트
그래버 유형
그래버 슬롯 위치 (MIL에서 Auto 인덱싱 해줌에 주의)
그래버 포트 위치 (MIL에서 Auto 인덱싱 해줌에 주의)
카메라 트리거 유형
카메라 트리거 발생 주체
트리거 발생 주체가 외부(버퍼) 프로그램인 경우
트리거 발생 주체가 Aurora인 경우
GenICam "TriggerSource" Features
MIL : *.dcf 파일로 카메라 연결. EX) "D:\\Aurora\\DcfFiles\\CAM1.dcf"
Euresys : *.cti 파일로 카메라 연결. EX) "C:\\Program Files\\Euresys\\eGrabber\\cti\\x86_64\\gigelink.cti"
활성화된 모터 위치 인덱스 기준으로 오름차순 정렬된 Child 객체 리스트 가져오기
활성화된 모터 위치 인덱스 기준으로 오름차순 정렬된 Child 객체 리스트
이미지 취득을 위한 카메라 트리거 모드 관리
항상 SW트리거로만 동작하는지 체크
항상 SW트리거로 동작하면 True
항상 HW트리거로만 동작하는지 체크
항상 HW트리거로 동작하면 True
플라잉 시작
FOV 정보
추가 파라미터
성공 유무
플라잉 종료
추가 파라미터
성공 유무
플라잉 상태 체크
성공 유무
현재 플라잉 인덱스 가져오기
현재 플라잉 인덱스
플라잉 이미지 가져오기
플라잉 인덱스
플라잉 이미지
플라잉 이미지 전체 가져오기
플라잉 이미지 전체
플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬
플아잉 합성(원장) 이미지
MIL or Cognex 라이브러리를 활용한 환경 구성
패턴 유틸 클래스
UI 콤보 박스용 패턴 설명 생성
패턴 정보
패턴 설명
패턴 검출 결과의 레퍼런스 인덱스를 구한다.
포인트 타입, 예)ImagePoint, StaticPoint
패턴 검출 결과
레퍼런스
허용 거리(Spec)
패턴의 레퍼런스 인덱스 (성공 : 0 ~ , 실패 : -1)
직선의 방정식 : Ax + By + C = 0
직선의 방정식 파라미터 A
직선의 방정식 파라미터 B
직선의 방정식 파라미터 C
직선의 파라미터로 방정식 생성
직선의 방정식 파라미터 A
직선의 방정식 파라미터 B
직선의 방정식 파라미터 C
직선을 지나는 두 점으로 방정식 생성
직선을 지나가는 좌표1 X
직선을 지나가는 좌표1 Y
직선을 지나가는 좌표2 X
직선을 지나가는 좌표2 Y
파라미터 Y좌표에 대응하는 X좌표
임의의 Y좌표
파라미터 X좌표에 대응하는 Y좌표
임의의 X좌표
복제 (ICloneable)
object(LineEquation)
FOV 간에 상관관계를 이용하여 라인을 교정하기 위한 매니저
라인 중점 보관 (자재 좌표)
FOV 정보
수평/수직 라인 타입
라인 중점 (자재 좌표)
라인 중점 가져오기 (자재 좌표)
FOV 정보
수평/수직 라인 타입
라인 중점 (자재 좌표)
라인 중점 초기화
각 FOV에서 찾은 라인의 중점 기반으로 새로 그려진 라인의 교점으로 meaPoints를 새롭게 정의
보상된 교점 위치
라인 교점들로 라인 그리기
라인 교점들
패턴을 트래킹하기 위해 패턴 위치를 저장/관리하는 매니저
패턴 위치 추가
FOV 키
패턴 위치
모든 패턴 위치 리턴
FOV 키
모든 패턴 위치
마지막 lastDataCnt개의 패턴 위치 리턴
FOV 키
마지막 패턴 위치 개수
마지막 lastDataCnt개의 패턴 위치
모든 패턴 위치 초기화
FOV 키
C2_F4 or C4_F4에서 라인 교점으로 얼라인 하는 경우, 각 FOV들 간에 상관관계를 이용하여 라인 교점 알고리즘을 보상해주기 위해 라인 중점 저장
라인 결과
패턴 정보
카메라 디스플레이
FixtureResult를 기준으로 이동시킨 ROI를 리턴한다.
패턴 타입
원본 ROI
기준 패턴 결과
각도 반전 플래그. MIL과 Cognex의 각도 방향은 반대. Default : "true"
회전 및 이동이 반영된 ROI
레퍼런스 위치에 십자가 그리기
십자가 길이
십자가 색상
Pattern 찾을 때 Parameter interface
패턴 파인더 interface
외부 패턴 파일
패턴 파일 경로 가져오기
패턴 파일 경로
패턴 불러오기
성공 유무
패턴 저장하기
성공 유무
패턴 생성하기
성공 유무
패턴 제거하기
성공 유무
찾기 영역(ROI) 가져오기
ROI
찾기 영역(ROI) 설정하기
설정할 ROI
성공 유무
패턴 찾을 때 사용할 파라미터들을 가져오기
패턴 찾을때 사용 할 파라미터 (RunParam)
패턴 찾을 때 사용할 파라미터들 설정하기
패턴 찾을때 사용 할 파라미터 (RunParam)
성공 유무
패턴 찾기
패턴 검출할 이미지
패턴 결과
패턴 찾기
패턴 검출할 이미지
검출할 영역
패턴 결과
패턴을 찾지 못했을 때 패턴 결과
패턴 결과
Tool 가져오기
객체
패턴 결과 표시하기
패턴 결과
카메라 디스플레이
Fixture Pattern인지 여부
패턴 썸네일 가져오기
썸네일
윈도우 타이틀
타이틀 등록 함수
포지션 리셋 함수
라인1,2 간에 교점 계산
라인1
라인2
라인1,2 간에 교점
라인1을 지나는 점에서 수직인 라인과 라인2 간에 교점 계산
라인1을 지나는 점
라인1
라인2
라인1을 지나는 점에서 수직인 라인과 라인2 간에 교점
점과 라인 간에 거리 계산
점
라인
점과 라인 간에 거리
편집 중인 패턴 데이터가 존재하는지 체크.
공정 중 편집 중이던 패턴 데이터 갱신을 위함.
편집중인 패턴 데이터 존재하는지 여부
편집 중인 패턴 데이터 존재 여부
패턴 데이터 편집 중으로 설정
편집 중인 패턴 데이터 클리어
패턴 썸네일 유틸 틀래스
썸네일 이미지 폭(가로)
썸네일 이미지 높이(세로)
썸네일의 이미지 사이즈 정보를 얻어온다.
이미지 사이즈 정보
기본 썸네일 이미지
썸네일 비트맵
메인화면 UI 설정을 위한 Recipe
메인화면 FOV 행렬 위치
메인화면 타입
Clone (Deep Copy)
MainUiRecipe
얼라인 정위치(Reference Point) 설정을 위한 레시피
FOV의 중심 위치로부터의 오프셋 [mm]
RefPointRecipe를 깊은 복사한다.
데이터를 target에 복사한다.
복사 대상
자재 좌표계 구성을 위한 레시피
기준 좌표계 대비 자재 좌표계의 방향을 설정
FOV 간의 X, Y축 방향으로의 거리
얼라인 보정량 계산과 보정량 적용을 위한 회전 중심
깊은 복사
데이터 복사 (this -> target)
하드웨어 카메라마다 여러 개의 FovInfo를 가질 수 있다.
서브시스템별 공정 설정 관리
부착검사 시퀀스 FOV 타입
FOV 순서별 부착검사 파라미터
Light Retry 사용 여부
Light Retry Value ( 모드 적용 시 움직일 Step 값 )
Light Retry Value ( 모드 적용 시 움직일 Step 값 )
Light Retry Step으로 반복 할 횟수
얼라인 모드(알고리즘)를 정의
스테이지 얼라인 (스테이지 또는 자재가 이동)
헤드 얼라인 (카메라, 레이저 등이 이동)
장비에서 직접 구현하기 위한 모드
장비에서 직접 구현하기 위한 모드
얼라인 계산 축(DOF)
활성화한 축의 보정량만 계산된다.
비활성화된 축의 보정량은 0이다.
카메라 설정을 위한 Recipe
카메라(HW) ID
카메라(Aurora Device)의 CamId를 반환한다.
카메라의 Aurora Device ID
CamId
Clone (Deep Copy)
CamRecipe
하드웨어 카메라마다 고유하게 지정
하드웨어 조명 컨트롤러마다 고유하게 지정
얼라인 혹은 검사에 대한 string ID
하나의 FOV 내에서 동시에 찾을 패턴의 갯수 ID
EX) ProcPattern1 : 1개 / ProcPattern2 : 2개 / ... / ProcPattern10 : 10개
SubSystem별 비전 셋업 기능을 위한 레시피
캘리브레이션 시퀀스 설정
센터튜닝 시퀀스 설정 (필요시 생성)
FOV별 비전 셋업 기능을 위한 레시피
Auto Focus 시퀀스 설정 (필요시 생성)
비전 반복도 시퀀스 설정 (필요시 생성)
메인 카메라뷰 FOV UI Row/Column 위치
(EX : RC_02 -> 0행 2열)
(EX : RC_10 -> 1행 0열)
현재 실행 중인 SW의 Recipe 구성에 맞게
장비에 저장된 Recipe 파일을 업데이트 한다.
레시피 업데이트를 실행한다.
레시피 또는 모델
실행 결과
현재 SW의 레시피 버전
레시피 최초 버전
Aurora Ingredient에서 관리되는 비전 레시피
Aurora Model에서 관리되는 비전 레시피
서브 시퀀스 파라미터 베이스 클래스
시퀀스 모드
생성자
시퀀스 모드
서브 시퀀스 매니저
서브 시퀀스의 시퀀스빌더를 생성한다.
서브 시퀀스 객체
시퀀스 이름
시퀀스빌더
서브 시퀀스 추상 베이스 클래스
서브 시퀀스의 시퀀스빌더 생성
서브 시퀀스 이름
시퀀스빌더
무브 후, 그랩 전 딜레이 적용
서브 시스템 정보
에러로그 출력 및 Toast 메시지 띄우기
로거
에러 메시지
에러로그 출력 및 Toast 메시지 띄우기
로거
메시지
C2_F4 or C4_F4 라인 교점 얼라인시, 이웃한 FOV들 간에 상관관계를 이용하여 라인 교점을 보상할지 체크
반드시 RegisterSetting이 끝난 이후에 수행되어야 함.
Aurora Recipe에서 관리되는 비전 레시피
자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다.
FovInfo
FOV 위치
자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다.
SubSysInfo
eFovId
FOV 위치
자재 좌표계의 FOV 위치(오프셋 포함)를 반환한다.
eUnitId
eSubSysId
eFovId
FOV 위치
얼라인 정위치(Reference Point) 레시피를 반환한다.
FovInfo
RefPointRecipe
얼라인 정위치(Reference Point) 레시피를 반환한다.
UnitId
SubSysId
FovId
RefPointRecipe
얼라인 정위치(Reference Point)를 반환한다.
SubSysInfo
FovId
Reference Point
얼라인 정위치(Reference Point)를 반환한다.
FovInfo
Reference Point
얼라인 정위치(Reference Point)를 반환한다.
UnitId
SubSysId
FovId
Reference Point
비전 레시피를 저장할 Aurora의 데이터 타입
Aurora의 Recipe에 저장
Aurora의 Model에 저장
Aurora의 Ingredient에 저장
설정 - 비전 레시피를 저장할 Aurora의 데이터 타입
UI 바인딩 및 레시피 저장이 필요한 뷰에서 상속받아 구현한다.
비전 레시피를 최신으로 갱신한다.
_VsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 갱신
최신 레시피 복사본을 UI에 업데이트한다.
var vsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 새로 읽기
var alignRecipe = vsRps.AlignRecipes[_AlignIdx].Clone(); // 레시피 복사
AlignRetry = alignRecipe.AlignRetry; // 레시피 업데이트(바인딩)
파일 저장 전, UI에서 읽어온 레시피를 메모리에 업데이트 한다.
var vsRps = VisionRecipeManager.GetVisionRecipes(_VsRps.SubSysInfo); // 레시피 새로 읽기
var alignRecipe = vsRps.AlignRecipes[_AlignIdx];
alignRecipe.AlignRetry = AlignRetry; // 레시피 메모리에 쓰기
RecipeFileManager.SaveVisionRecipe(); // 레시피 파일 저장 (함수 외부에서 저장해도 됨)