[ROS] rossrv에 대해서 알아보자

HY K·2024년 8월 8일

ROS1

목록 보기
15/34

참고한 링크는 다음과 같다.
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 파일을 만들어서 사용해보자

1. 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
)

2. rossrv 관련 명령어

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

서비스를 사용하는 모든 패키지의 목록을 표시한다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글