티스토리 뷰

전공/ROS

ROS2 서비스 service

흔한 학생 2024. 11. 8. 17:33

서비스는 서버가 클라이언트의 요청 request에 응답하는 것이다.

 

파이썬 코딩에서

사용할 데이터 타입을 우선 import 해야함

ros2 service list -t 

서비스와 데이터 타입을 보고 사용할 형식을 찾음

 

클라이언트 노드 만들기

import rclpy as rp
from turtlesim.srv import TeleportAbsolute

rp.init()
test_node = rp.create_node('client_test')

service_name = '/turtle1/teleport_absolute'

cli = test_node.create_client(TeleportAbsolute, service_name)

req = TeleportAbsolute.Request()

cli.call_async(req)
rp.spin_once(test_node)

노드 만들고 test_node = rp.create_node('client_test')

서비스 보내는 클라이언트 만들고 (.create_client 함수의 리턴값을 변수 cli에 저장)

cli = test_node.create_client(서비스타입, 서비스이름) 서비스 서버를 쓰겠다, 클라이언트 하겠다... 는 의미

req 만듦

  • req = TeleportAbsolute.Request()
  • TeleportAbsolute에는 Request와 Response가 있기에 req에 요청부분을 할당 

<클라이언트>.call_async(req) 함수 실행

더보기

서비스 전달 준비 될 때까지 기다리기

while not cli.wait_for_service(timeout_sec = 1.0):
	print("waiting")
    
cli.call_async(req)
rp.spin_once(test_node)

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함