본문 바로가기
ROBOTICS/Turtlebot3 - Noetic

ROS Noetic : ROS service

by 누워있는말티즈 2022. 8. 10.

이번에는 ROS service에 대해 알아본다. service는 node에서 사용할 수 있는 기능 정도로 보인다.

rospy_tutorials 패키지에서 제공하는 예시를 보자.

위를 보면 add_two_ints_server 라는 실행파일을 작동시켰다. add_two_ints라는 service가 실행중이고 이 서버가 돌다가 rosservice call로 호출을 하여 a, b값을 주면 위의 서버에서 계산을 해서 출력해주는 것을 볼 수 있다. 이는 publish subscribe의 형태가 아니다!


노드도 저거 하나만 켜져있다.

위에서 도는 server가 말 그대로 서버의 역할을 하고 아래 터미널 창에서 rosservice call하는 부분이 클라이언트의 역할을 한다고 볼 수 있다.

rossrv는 service의 rosmsg같은 역할을 한다. 이걸 까서 보자. Type는 위의 rosservice info로 확인했다.

“ - - -” 위로는 input, 아래로는 output이다.

귀여운 turtlesim 거북이 node도 여려 service를 지원한다.

예를 들어 자취의 색을 바꿔본다.

흰색이었던 자취가 하늘색으로 변했다! service는 rqt_graph로 확인이 불가능하므로 rosservice list로 확인한다.

Topic과 service의 차이가 아직 크게 와닿지 않는다. topic은 node 간의 통신을 하며 service는 단일 node에서 server-client 형태로 받아들여진다. 센서와 같이 따로 읽어들이고 처리해서 던지는 느낌은 topic을 이용하겠지만 만약 특정 client가 특정한 답을 요구하는 request를 보낼 경우 반응하는 server 형태라면 service가 맞아보인다.

반응형

댓글