# robotarm-move-to-pick

## 설명

robotarm-move-to-pick 태스크는 robotarm-connector의 하위 태스크로서, 미리 설정된 marked object를 집어 내기 위한 동작(picking)을 수행합니다. 

marked object를 picking하기 위한 알고리즘은 workspace connector에서 설정 가능한 검출 방식에 따라 달라집니다. 

본 태스크는 marked object의 위치를 지정하기 위한 접근자(accessor)를 통해서 획득되는 베이스 좌표계(XYZUVW) 값으 기반으로 동작합니다. 

또한 본 태스크는 accessor 외에 다음 두 가지 파라미터의 영향을 받습니다.

- 툴 오프셋
  - robotarm-connector에서 설정 가능합니다.
  - robotarm-move-to-pick 태스크는 marked Object로 이동 시, 툴 오프셋에 설정된 위치를 고려해서 이동합니다.
  - 해당 오프셋이 z: -0.100 일 경우, 현재 이동하고자 하는 marked object의 위치에서 툴 좌표계 기준으로 z축으로 -10cm 만큼 상대적으로 이동합니다.
- 진입점 오프셋
  - robotarm-connector에서 설정 가능합니다.
  - 해당 오프셋은 본 태스크에서 경유점 선택을 설정했을 경우 적용되며 로봇이 markded object로 이동하기 이전에 이동하는 위치를 설정합니다.
  - 진입점 오프셋이 적용될 경우 로봇은 진입점 오프셋에 설정된 크기 만큼 먼저 이동하고 이후에 object로 이동합니다.
  - 툴 오프셋과 동일하게 툴 좌표계를 기준으로 markded object 위치에서 상대 위치 크기 만큼 이동합니다.
  - 로봇이 바로 object로 이동할 경우 다른 돌출부 등에 의해서 이동 시 걸림이 발생할 수 있기 때문에 걸림 현상을 피하고 안전하게 물체를 잡기 위해 설정합니다.


## 파라미터

### 접근자
- 다른 태스크의 결과값을 XYZUVW 순서로 리스트 혹은 오브젝트(예. {x:0.1, y:0.2, z:0.1, u:90.0, v:0.0, w:180.0}) 타입으로 입력 받습니다.

### 포즈
- 접근자의 데이터가 없을 경우 사용되며 직접 이동에 필요한 XYZUVW 값을 설정할 수 있습니다.
- 포즈의 우측에 있는 현재 위치 설정 버튼을 통해서 이동하고자 하는 위치를 로봇을 직접 이동해서 설정이 가능합니다. 단, 로봇을 직접 이동해서 설정할 경우 teaching mode를 설정해야 수동으로 이동이 가능합니다.

### 경유점 
- 경유점의 설정 여부에 따라서 진입점 오프셋 적용 여부가 결정됩니다.


