이번에는 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가 맞아보인다.
'ROBOTICS > Turtlebot3 - Noetic' 카테고리의 다른 글
Turtlebot Simulation : Setup (0) | 2022.08.22 |
---|---|
ROS Noetic : Server & Client (0) | 2022.08.11 |
ROS Noetic : Closed Loop system with Turtlesim (0) | 2022.08.09 |
ROS Noetic : Concept of ROS Topic (Publisher, Subscriber) (0) | 2022.08.06 |
ROS Noetic : Create Package and Node (0) | 2022.08.05 |
댓글