ROS

ROS1-13 액션 예제 3 - 서버 동작

dkjeong 2022. 7. 28. 14:20

앞서 설명한데로, 액션과 서비스의 가장 큰 차이점은 서버 수행상태에 대한 feedback이 가능하단 점이다. 이때 feefback이 단순히 중간중간 값만 전달 받는 것이라면 얼마나 아쉬운가! 

그래서 서버의 종료 상태를 다음과 같이 구분한다. 

 - preempted: 클라이언트에서 취소한 경우.

 - succeeded: 정상적으로 종료한 경우

 - aborted: 서버에서 취소한 경우.

위의 각 상태는 다음 클라이언트 메소드를 통해 확인할 수 있다. 

client.get_state() #preempted=2, succeded=3, aborted=4

 - 각 상태에 대해서는 아래와 같이 행위를 지정할 수 있다.  

server.set_abort( result변수, "전달할 메시지")  # 서버 중단시 전달할 결과값 설정
server.set_preempted(result변수, "메시지")

 

그 외에, 이러한 서버 상태를 통제하기 위한, server.is_XXX 들이 있다.