이번 시간에는 또다른 node간 통신 메커니즘인 Service에 대해 배워보겠습니다.

항상 그랬던 것처럼, 예제를 실행시켜봅시다!!

r2d2 spawn


$ roslaunch gcamp_gazebo gazebo_world.launch 
# gazebo 시뮬레이션이 완전히 켜질때까지 기다려 주세요!!
$ rosrun service_tutorial spawn_model_client.py

사진과 같이 r2d2가 등장했나요? 🗿

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8dd5d46e-ca6e-4562-9904-226d829eb59e/Spawn.gif

지금 우리는 gazebo_ros의 service server에게 r2d2를 등장시켜 달라는 **service call**을 한 것입니다!!

ROS Service 개념


https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c50cb8ce-7272-4796-b9bc-cd3aa188750b/Untitled.png

출처 : mathworks

그럼 topic과 service는 어떤 차이가 있는 걸까요?

  1. A topic이 실행되는 동안, 다른 B topic도 같이 실행될 수 있습니다. 반면, service는 현재 진행중인 service의 request가 처리되는 동안, 다른 service는 기다리고 있어야 합니다.