# 카메라 커넥터(camera-connector)

camera-connector는 카메라를 표현하는 connector의 일종으로서 **Connection** 메뉴에서 추가 및 삭제 가능하고 관리할 수 있는 모듈입니다.
UVC(USB Video Class)를 지원하는 USB 지원 카메라를 표현합니다.

해당 connector를 통해서 카메라와 관련된 캘리브레이션(카메라 캘리브레이션과 핸드아이 캘리브레이션)을 수행할 수 있으며, 어플리케이션에서 카메라와 관련된 동작을 수행할 수 있도록 연결하는 역할을 수행합니다.

## 엔드포인트

UVC 기반 카메라의 경우에는 일반적으로 OS에서 카메라의 번호를 지정하도록 되어 있습니다.

Linux의 경우에는 카메라가 연결될 경우 \*dev/video**0\***으로 파일 지정자가 생성되며 이 때 엔드포인트는 **0** 입니다.

카메라 커넥터가 생성된 예는 다음을 참조합니다.

![camera connectors](../images/camera-connections.png 'camera connectors')

위의 예에서 카메라 커넥터는 2개가 연결되어 있으며(camera01, camera02), 엔드포인트는 4와 10으로 지정되어 습니다.

## 파라미터

카메라 커넥터는 크게 카메라 설정, 카메라 캘리브레이션, 핸드아이 캘리브레이션, 카메라 오브젝트 오프셋으로 구성됩니다.

![camera parameters](../images/camera-parameters.png 'camera parameters')

### 카메라 설정

카메라 설정은 장치 이름, 넓이, 높이, 베이스 로봇암으로 구성됩니다.

- 장치 이름: 카메라 장치의 이름을 입력하며 반드시 입력하지 않아도 됩니다.
- 넓이: 카메라의 해상도 중 넓이(width)를 표시합니다.
- 높이: 카메라의 해상도 중 높이(height)를 표시합니다.
- 베이스 로봇암: 카메라와 로봇의 연동을 위해서 로봇를 지정합니다. 해당 로봇을 지정하지 않을 경우 핸드아이 캘리브레이션이 수행되지 않습니다.

### 카메라 캘리브레이션

카메라 캘리브레이션을 수행하고 해당 결과를 표시합니다. 자세한 사항은 카메라 캘리브레이션 도움말을 참조합니다.

[카메라 캘리브레이션](../calibration/camera-calibration.md)

### 핸드아이 캘리브레이션

핸드아이 캘리브레이션을 수행하고 해당 결과를 표시합니다. 자세한 사항은 핸드아이 캘리브레이션 도움말을 참조합니다.

[핸드아이 캘리브레이션](../calibration/handeye-calibration.md)

### 카메라 오브젝트 오프셋

최종 로봇 연동 시, 핸드아이 캘리브레이션에 의한 오차 등으로 로봇과 카메라 사이의 오차를 보정하기 위한 오프셋을 지정할 수 있습니다.

## 기타

### realsense-camera

**realsense-camera**는 Intel사의 realsense camera를 표현하는 커넥터로서 3D 데이터를 사용하기 때문에 기존 **camera-connector**와 용도는 차이가 있지만 카메라 파라미터 등은 동일합니다. 다만, 엔드포인터는 *개별 카메라의 시리얼 번호*로 지정합니다.

(예. 001622072547)

![realsense camera](../images/camera-realsense.png 'realsense camera')
