Ubuntu ROS 실습(14)

zeusqoi·2일 전

개인공부

목록 보기
33/42

지난 실습에서는 ROS 2 Service의 기본적인 개념과 명령어를 확인했다.

이번에는 앞서 확인한 Service를 실제 TurtleSim에서 호출하면서 거북이 생성, 삭제, 펜 설정 변경, 위치 이동 등의 기능을 직접 실습해 보았다.


1. /clear Service 호출

먼저 TurtleSim에 기존에 그려져 있던 선을 지우기 위해 /clear Service를 호출했다.

ros2 service call /clear std_srvs/srv/Empty

실행 결과:

requester: making request: std_srvs.srv.Empty_Request()

response:
std_srvs.srv.Empty_Response()

Service 호출이 정상적으로 처리되면서 TurtleSim 화면에 그려져 있던 선이 모두 지워지는 것을 확인했다.


2. /spawn Service로 새로운 거북이 생성

다음으로 /spawn Service를 이용해 새로운 거북이를 생성했다.

이번 실습에서는 turtle3이라는 이름의 거북이를 (8.0, 8.0) 위치에 생성했다.

ros2 service call /spawn turtlesim/srv/Spawn "{x: 8.0, y: 8.0, theta: 0.0, name: 'turtle3'}"

실행 결과:

requester: making request: turtlesim.srv.Spawn_Request(x=8.0, y=8.0, theta=0.0, name='turtle3')

response:
turtlesim.srv.Spawn_Response(name='turtle3')

TurtleSim 화면에 turtle3이 새롭게 생성되는 것을 확인할 수 있었다.


3. /kill Service로 거북이 삭제

생성한 turtle3을 삭제하기 위해 /kill Service를 호출했다.

ros2 service call /kill turtlesim/srv/Kill "{name: 'turtle3'}"

Service 호출 후 TurtleSim 화면에서 turtle3이 사라지는 것을 확인했다.

이를 통해 실행 중인 TurtleSim의 특정 거북이를 Service를 이용해 삭제할 수 있었다.


4. /turtle1/set_pen Service 실습

다음으로 turtle1이 그리는 선의 색상과 굵기를 변경해 보았다.

ros2 service call /turtle1/set_pen turtlesim/srv/SetPen "{r: 0, g: 0, b: 255, width: 8}"

여기서는 RGB 값을 이용해 펜 색상을 설정하고 width 값으로 선의 굵기를 지정했다.

이후 turtle1을 움직여 변경된 펜 설정이 실제로 적용되는 것을 확인했다.


5. /turtle1/teleport_absolute Service 실습

이번에는 turtle1의 위치를 직접 변경해 보았다.

ros2 service call /turtle1/teleport_absolute turtlesim/srv/TeleportAbsolute "{x: 5.0, y: 5.0, theta: 0.0}"

명령어를 실행하면 turtle1이 지정한 좌표로 바로 이동한다.

실습을 통해 거북이를 직접 조작하지 않고도 Service를 이용해 특정 위치와 방향으로 순간이동시킬 수 있다는 것을 확인했다.


6. 여러 Service를 이용한 TurtleSim 조작

이번 실습에서는 하나의 Service만 사용하는 것이 아니라 여러 Service를 직접 호출해 보았다.

/clear
   ↓
화면의 이동 경로 초기화

/spawn
   ↓
새로운 거북이 생성

/kill
   ↓
거북이 삭제

/turtle1/set_pen
   ↓
펜 색상 및 굵기 변경

/turtle1/teleport_absolute
   ↓
거북이 위치 및 방향 변경

각각의 Service를 호출할 때마다 TurtleSim의 상태가 실제로 변경되는 것을 확인할 수 있었다.


마무리

이번 실습에서는 ROS 2에서 제공되는 Service를 직접 호출하여 TurtleSim을 제어해 보았다.

특히 새로운 거북이를 생성하거나 삭제하고, 펜의 색상과 굵기를 변경하고, 거북이를 원하는 위치로 이동시키는 등 Service를 이용해 실행 중인 노드의 기능을 직접 요청하는 과정을 확인할 수 있었다.

이번 실습을 통해 앞서 학습한 Service가 실제 ROS 2 환경에서 어떻게 활용되는지 확인할 수 있었다.

0개의 댓글