.srv 인터페이스

/spawn에 무엇을 넣어야 하는지 어디에 적혀 있을까?

따라 하기

interface show로 모양을 봅니다

4강 2편에서 메시지를 들여다본 ros2 interface show를 서비스 타입에도 씁니다. 서비스 타입은 .srv 파일 하나로 정해지는 인터페이스(interface)입니다.

# 뒤의 설명 줄은 길어서 줄였습니다.

구분선

--- 위는 요청, 아래는 응답

.srv 파일은 --- 한 줄로 둘로 나뉩니다. 위는 클라이언트가 보내는 요청, 아래는 서버가 돌려주는 응답입니다. 3편에서 적은 x, y, theta, name이 위쪽, 돌려받은 name이 아래쪽입니다.

한 줄 읽기

한 줄은 타입과 이름

한 줄은 필드(field) 하나입니다. 앞은 타입, 뒤는 이름입니다. 4강에서 본 .msg와 같은 문법이고, # 뒤는 사람이 읽는 설명입니다.

빈 서비스

Empty는 ---만 남습니다

2편의 /clear와 /reset 타입 std_srvs/srv/Empty는 위도 아래도 비어 있습니다. 실어 보낼 값도, 받을 값도 없이 불렀다는 것 자체가 요청입니다.

이번 강 예제

AddTwoInts: 두 수를 더해 줘

example_interfaces는 예제용 인터페이스를 모은 패키지입니다. 그 안의 AddTwoInts는 정수 a, b를 보내면 합 sum을 돌려받는 모양입니다. 5·6편에서 이 타입으로 서버와 클라이언트를 짭니다.

int64는 64비트 정수입니다.

코드에서는

파이썬에서는 두 클래스로

파이썬에서는 from example_interfaces.srv import AddTwoInts로 가져옵니다. 요청은 AddTwoInts.Request, 응답은 AddTwoInts.Response 클래스입니다.

이 클래스는 빌드할 때 .srv 파일에서 만들어집니다. 내 .srv를 만드는 법은 8편에서 봅니다.

다음 편

이 모양대로 답하는 노드를 짜 볼까요?

5편서비스 서버 만들기 7강 목록