Chapter 1267. 액션 클라이언트 구현 (Action Client Implementation) Chapter 1267. 액션 클라이언트 구현 (Action Client Implementation) 1267.1액션 클라이언트의 개념과 역할 1267.2액션 클라이언트 구현을 위한 개발 환경 설정 1267.3CMakeLists.txt 의존성 설정 1267.4package.xml 의존성 선언 1267.5액션 클라이언트 노드 클래스 설계 1267.6노드 클래스의 기본 구조 1267.7멤버 변수와 초기화 1267.8액션 클라이언트 인스턴스 생성 1267.9rclcpp_action::create_client 호출 구조 1267.10액션 이름 설정과 서버 탐색 1267.11액션 서버 가용성 확인 1267.12wait_for_action_server() 호출과 타임아웃 설정 1267.13action_server_is_ready() 폴링 방식 1267.14서버 탐색 실패 시 처리 전략 1267.15목표 메시지 구성 1267.16Goal 메시지 필드 설정 1267.17목표 매개변수의 유효성 검증 1267.18목표 전송 준비 절차 1267.19SendGoalOptions 구성 1267.20goal_response_callback 구현 1267.21목표 수락 응답 처리 1267.22목표 거부 응답 처리 1267.23GoalHandle 유효성 확인 1267.24feedback_callback 구현 1267.25피드백 메시지 수신 처리 1267.26피드백 데이터 파싱과 활용 1267.27피드백 기반 진행률 표시 1267.28피드백 기반 의사결정 로직 1267.29result_callback 구현 1267.30결과 수신 처리 1267.31결과 코드(ResultCode) 해석 1267.32SUCCEEDED 결과 처리 1267.33CANCELED 결과 처리 1267.34ABORTED 결과 처리 1267.35UNKNOWN 결과 처리 1267.36결과 데이터 파싱과 활용 1267.37async_send_goal() 호출과 비동기 목표 전송 1267.38SharedFuture 반환값 처리 1267.39SharedFuture의 get() 호출과 블로킹 1267.40SharedFuture의 wait_for() 활용 1267.41SharedFuture 기반 타임아웃 처리 1267.42async_get_result() 호출과 결과 비동기 수신 1267.43결과 대기와 비동기 폴링 패턴 1267.44결과 수신 타임아웃 처리 1267.45목표 취소 요청 구현 1267.46async_cancel_goal() 호출 1267.47특정 목표 취소 요청 1267.48취소 응답 처리 1267.49취소 성공 확인 1267.50취소 거부 시 대응 전략 1267.51async_cancel_all_goals() 호출 1267.52모든 목표 일괄 취소 사용 사례 1267.53async_cancel_goals_before() 호출 1267.54시간 기반 취소 사용 사례 1267.55액션 클라이언트의 상태 모니터링 1267.56GoalHandle::get_status()를 통한 상태 확인 1267.57상태 변경 감지와 반응 1267.58상태 기반 사용자 인터페이스 업데이트 1267.59액션 클라이언트의 비동기 프로그래밍 패턴 1267.60콜백 기반 비동기 패턴 1267.61Future 기반 비동기 패턴 1267.62코루틴 스타일의 비동기 패턴 1267.63콜백 체이닝 패턴 1267.64콜백 내 추가 액션 호출 1267.65순차적 액션 실행 패턴 1267.66병렬 액션 실행 패턴 1267.67액션 클라이언트의 에러 처리 1267.68네트워크 오류 시 처리 1267.69서버 무응답 시 타임아웃 처리 1267.70서버 측 abort 시 클라이언트 복구 1267.71예외 안전한 클라이언트 구현 1267.72재시도 로직 구현 1267.73지수 백오프(Exponential Backoff) 전략 1267.74최대 재시도 횟수 설정 1267.75액션 클라이언트의 스레딩 고려사항 1267.76SingleThreadedExecutor에서의 클라이언트 동작 1267.77MultiThreadedExecutor에서의 클라이언트 동작 1267.78콜백 그룹 설정에 따른 동작 차이 1267.79콜백 내 블로킹 호출의 데드락 문제 1267.80데드락 방지를 위한 설계 패턴 1267.81네비게이션 액션 클라이언트 구현 예제 1267.82NavigateToPose 클라이언트 구현 1267.83목표 좌표 설정과 전송 1267.84네비게이션 진행률 피드백 처리 1267.85도착 결과 처리 1267.86네비게이션 취소 요청 구현 1267.87매니퓰레이션 액션 클라이언트 구현 예제 1267.88PickAndPlace 클라이언트 구현 1267.89그리퍼 동작 피드백 처리 1267.90드론 비행 액션 클라이언트 구현 예제 1267.91Takeoff/Land 클라이언트 구현 1267.92비행 고도 피드백 처리 1267.93다중 웨이포인트 액션 클라이언트 구현 예제 1267.94순차 웨이포인트 전송 패턴 1267.95웨이포인트 도달 피드백 처리 1267.96액션 클라이언트의 매개변수화 1267.97declare_parameter를 활용한 설정 외부화 1267.98런치 파일에서의 매개변수 전달 1267.99액션 클라이언트의 로깅 전략 1267.100목표 전송 로깅 1267.101피드백 수신 로깅 1267.102결과 수신 로깅 1267.103오류 상황 로깅 1267.104생명주기 노드에서의 액션 클라이언트 구현 1267.105on_configure에서 클라이언트 생성 1267.106생명주기 상태와 클라이언트 동작의 연동 1267.107컴포넌트로서의 액션 클라이언트 구현 1267.108컴포넌트 기반 클라이언트 노드 등록 1267.109액션 클라이언트의 단위 테스트 작성 1267.110GTest 기반 클라이언트 테스트 프레임워크 1267.111목 서버(Mock Server)를 활용한 테스트 1267.112목표 전송 테스트 1267.113피드백 수신 테스트 1267.114결과 수신 테스트 1267.115취소 요청 테스트 1267.116타임아웃 테스트 1267.117액션 클라이언트의 빌드와 실행 1267.118colcon build 구성 1267.119클라이언트 노드 실행과 서버 연동 1267.120액션 클라이언트 구현의 일반적인 오류와 해결 1267.121콜백 데드락 문제 1267.122GoalHandle 무효화 문제 1267.123Future 대기 무한 블로킹 문제 1267.124액션 클라이언트 구현 모범 사례 요약