재시도가 있는 파지 행동 (Retry+Grasp)
1. 개요
재시도가 있는 파지 행동은 Retry 데코레이터와 파지(grasping) 액션을 결합하여, 물체 파지 실패 시 자동으로 재시도하는 로봇공학 적용 패턴이다. 파지 행동은 물체의 위치 오차, 표면 특성, 그리퍼 정렬 오류 등에 의해 간헐적으로 실패할 수 있으므로, 자동 재시도 메커니즘이 효과적이다.
2. 기본 구조
<RetryNode num_attempts="3">
<Sequence>
<Action ID="PlanGraspPose" target="{object_pose}"
output_grasp="{grasp_pose}"/>
<Action ID="MoveToPreGrasp" pose="{grasp_pose}"/>
<Action ID="ExecuteGrasp"/>
<Condition ID="IsObjectGrasped"/>
</Sequence>
</RetryNode>
파지 계획 → 접근 → 파지 실행 → 파지 확인의 시퀀스를 최대 3회 재시도한다. 어느 단계에서든 실패하면 전체 시퀀스가 FAILURE를 반환하고 Retry가 재시도한다.
3. 점진적 파지 조정
재시도 시 파지 접근 방식을 조정하여 성공 확률을 높인다.
<RetryNode num_attempts="3">
<Sequence>
<Action ID="AdjustGraspStrategy"
attempt="{retry_count}"
output_strategy="{grasp_strategy}"/>
<Action ID="PlanGrasp"
strategy="{grasp_strategy}"
output_pose="{grasp_pose}"/>
<Action ID="MoveToGrasp" pose="{grasp_pose}"/>
<Action ID="CloseGripper"/>
<Condition ID="IsObjectSecured"/>
</Sequence>
</RetryNode>
AdjustGraspStrategy는 재시도 횟수에 따라 파지 전략을 변경한다(예: 1차 시도 - 정면 파지, 2차 시도 - 측면 파지, 3차 시도 - 상단 파지).
4. 타임아웃과의 결합
<Timeout msec="45000">
<RetryNode num_attempts="3">
<Sequence>
<Action ID="MoveToGraspPose"/>
<Action ID="ExecuteGrasp"/>
<Condition ID="IsObjectGrasped"/>
</Sequence>
</RetryNode>
</Timeout>
전체 파지 과정에 45초의 시간 제한을 부여한다.
5. 파지 실패 원인별 대응
| 실패 원인 | Retry 효과 | 추가 조치 |
|---|---|---|
| 위치 오차 | 효과적 (비전 재측정) | 재시도 전 비전 갱신 |
| 미끄러짐 | 효과적 (파지력 조정) | 파지력 증가 |
| 물체 부재 | 비효과적 | Retry 전 물체 존재 확인 |
| 그리퍼 고장 | 비효과적 | 하드웨어 복구 필요 |
6. 설계 시 고려 사항
6.1 재시도 전 상태 복원
파지 실패 후 재시도하기 전에, 그리퍼를 열고 안전한 위치로 후퇴하는 행동을 포함하여야 한다.
<RetryNode num_attempts="3">
<Sequence>
<Action ID="OpenGripper"/>
<Action ID="MoveToSafePosition"/>
<Action ID="PlanAndExecuteGrasp"/>
</Sequence>
</RetryNode>
6.2 충돌 방지
재시도 중 로봇 팔의 운동 경로가 물체나 환경과 충돌하지 않도록 주의하여야 한다.
7. 참고 문헌
- Siciliano, B., et al. (2010). Robotics: Modelling, Planning and Control. Springer.
- Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |