참고한 링크는 다음과 같다.
https://cafe.naver.com/openrt/2849
https://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv
srv는 ROS 서비스의 내용을 담고 있는 파일이다. 요청과 응답으로 구성되어 있다. 그러니까 토픽의 msg 같은 느낌이다.
💡 ROS 서비스
동기식 / 양방향 / 1회성 메시지 통신이라는 것은 이제 잘 알 것이다. 서비스 요청을 하고 응답을 받는 서비스 클라이언트와 응답을 받고 서비스 수행 후 응답을 보내는 서비스 서버로 구성된다.
srv의 구성은 다음과 같다.
int64 A
int64 B
---
int64 Sum
요청과 응답이 구분되어 있음을 알 수 있다. 위가 요청이고, 아래가 응답이다.
이번에는 srv 파일을 만들어서 사용해보자
$ cd catkin_ws/src/my_first_ros_pkg
$ mkdir -p srv
# ROS 튜토리얼 패키지에서 한번 훔쳐와보자
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
이렇게 되면 srv 파일을 복사해서 생성하게 된다.
그리고 package.xml 파일을 수정하자.
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
CMakeLists.txt 파일도 마찬가지로 수정하자.
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
...
add_service_files(
FILES
AddTwoInts.srv
)
1. rossrv list
$ rossrv list
모든 서비스를 목록으로 표시한다.
2. rossrv show [service_name]
$ rossrv show <service_name>
지정한 서비스의 정보를 표시한다.
3. rossrv md5 [service_name]
$ rossrv md5 <service_name>
서비스의 md5sum을 표기한다. msg의 md5 관련 명령어와 동일하다.
4. rossrv package [package_name]
$ rossrv package <package_name>
지정한 패키지에서 사용하는 서비스의 목록을 표시한다.
5. rossrv package
$ rossrv package
서비스를 사용하는 모든 패키지의 목록을 표시한다.