Chapter 1271. 작업 취소와 선점 처리 (Task Cancellation and Preemption Handling) Chapter 1271. 작업 취소와 선점 처리 (Task Cancellation and Preemption Handling) 1271.1작업 취소의 개념과 필요성 1271.2취소가 필요한 로봇 작업 시나리오 1271.3안전 관련 취소 시나리오 1271.4임무 변경에 의한 취소 시나리오 1271.5사용자 요청에 의한 취소 시나리오 1271.6리소스 부족에 의한 취소 시나리오 1271.7취소 요청과 취소 완료의 구분 1271.8취소의 비동기적 특성 1271.9클라이언트 측 취소 요청 구현 1271.10async_cancel_goal() 호출 상세 1271.11CancelGoal 서비스 요청 메시지 구성 1271.12goal_info 필드를 통한 특정 목표 지정 1271.13UUID 기반 목표 식별 1271.14취소 응답 수신과 처리 1271.15CancelGoalResponse 메시지 구조 1271.16return_code 필드 해석 1271.17ERROR_NONE: 취소 수락 확인 1271.18ERROR_REJECTED: 취소 거부 처리 1271.19ERROR_UNKNOWN_GOAL_ID: 알 수 없는 목표 처리 1271.20ERROR_GOAL_TERMINATED: 이미 종료된 목표 처리 1271.21goals_canceling 필드: 취소 진행 중인 목표 목록 1271.22async_cancel_all_goals() 호출 상세 1271.23모든 목표 일괄 취소 사용 사례 1271.24일괄 취소 시 응답 처리 1271.25async_cancel_goals_before() 호출 상세 1271.26시간 기반 취소의 사용 사례 1271.27타임스탬프 기반 목표 필터링 1271.28서버 측 취소 요청 수신과 처리 1271.29handle_cancel 콜백 구현 상세 1271.30취소 수락 판정 로직 1271.31무조건 취소 수락 패턴 1271.32조건부 취소 수락 패턴 1271.33안전 상태 기반 취소 수락/거부 1271.34작업 단계 기반 취소 수락/거부 1271.35CancelResponse::ACCEPT 반환 시 동작 1271.36CancelResponse::REJECT 반환 시 동작 1271.37실행 루프에서의 취소 감지 1271.38is_canceling() 상태 확인 1271.39취소 확인 주기와 응답성 1271.40빈번한 취소 확인의 성능 영향 1271.41취소 감지 시 정리(Cleanup) 절차 1271.42하드웨어 안전 상태 복원 1271.43액추에이터 정지 명령 전송 1271.44센서 데이터 수집 중단 1271.45진행 중인 계획 중단 1271.46중간 결과 저장 1271.47리소스 해제 1271.48canceled() 호출을 통한 취소 완료 통보 1271.49취소 결과 메시지 구성 1271.50부분 완료 정보 포함 1271.51취소 시점의 상태 정보 기록 1271.52취소 불가능한 작업 구간 처리 1271.53원자적 작업 구간의 정의 1271.54취소 유예 패턴(Deferred Cancellation) 1271.55안전점(Safe Point)까지 실행 후 취소 1271.56취소 거절 후 대기 패턴 1271.57선점(Preemption)의 개념과 취소와의 관계 1271.58선점의 정의 1271.59선점과 단순 취소의 차이 1271.60선점이 필요한 로봇 작업 시나리오 1271.61긴급 임무에 의한 현재 작업 선점 1271.62우선순위 기반 작업 선점 1271.63사용자 지시에 의한 작업 선점 1271.64선점 구현 패턴 1271.65단일 목표 정책에서의 선점 1271.66새로운 목표 수신 시 기존 목표 취소 1271.67기존 목표 취소 완료 대기 후 새 목표 실행 1271.68즉시 전환 선점 패턴 1271.69기존 목표 취소와 새 목표 실행의 동시 처리 1271.70안전한 전환 선점 패턴 1271.71기존 작업의 안전점까지 실행 후 전환 1271.72우선순위 기반 선점 구현 1271.73목표 우선순위 정의와 비교 1271.74낮은 우선순위 목표의 자동 선점 1271.75동일 우선순위 충돌 해결 1271.76선점 시 상태 전이 시퀀스 1271.77기존 목표: EXECUTING → CANCELING → CANCELED 1271.78새 목표: ACCEPTED → EXECUTING 1271.79전이 간 경쟁 조건 처리 1271.80선점과 스레드 안전성 1271.81다중 스레드 환경에서의 선점 처리 1271.82뮤텍스를 활용한 목표 전환 보호 1271.83원자적 목표 포인터 교체 1271.84취소/선점의 타이밍 분석 1271.85취소 요청에서 취소 완료까지의 지연 1271.86선점 전환 시간 분석 1271.87취소 응답성 최적화 기법 1271.88취소/선점의 QoS 영향 1271.89취소 서비스의 QoS 설정 1271.90취소 요청 신뢰성 보장 1271.91비상 정지와 액션 취소의 통합 1271.92E-Stop 신호와 취소 요청의 연동 1271.93하드웨어 비상 정지와 소프트웨어 취소의 관계 1271.94비상 정지 시 모든 목표 일괄 취소 1271.95안전 필수 시스템에서의 취소 처리 요구사항 1271.96IEC 61508 관점에서의 취소 안전성 1271.97취소 실패 시 안전 폴백(Fallback) 전략 1271.98네비게이션 취소/선점 예제 1271.99NavigateToPose 취소 구현 1271.100새 목적지로의 네비게이션 선점 1271.101매니퓰레이션 취소/선점 예제 1271.102PickAndPlace 취소 구현 1271.103긴급 복귀 동작에 의한 선점 1271.104드론 비행 취소/선점 예제 1271.105비행 임무 취소와 안전 착륙 1271.106긴급 회피 기동에 의한 임무 선점 1271.107취소/선점의 단위 테스트 1271.108취소 수락 테스트 1271.109취소 거부 테스트 1271.110선점 전환 테스트 1271.111정리 절차 완료 테스트 1271.112다중 목표 취소 테스트 1271.113취소/선점의 일반적인 오류와 해결 1271.114취소 후 결과 미반환 문제 1271.115선점 시 경쟁 조건 문제 1271.116정리 절차 미완료 문제 1271.117작업 취소와 선점 처리 모범 사례 요약