turtlesim, rqt 사용해보기

평범한컴공생·2022년 8월 1일
0

[ROS2]

목록 보기
4/19
post-thumbnail

배경

Turtlesim은 ROS 2를 학습하기 위한 가벼운 시뮬레이터이다. ROS 2가 가장 기본적인 레벨에서 무엇을 수행하는지 보여준다. rqt는 ROS 2를 위한 GUI 툴이다. 명령 줄을 통해서도 rqt를 대체할 수 있지만 사용자 친화적인 GUI를 이용해 ROS 2 요소들을 보다 쉽게 다룰 수 있다.

작업

1. turtlesim 설치

ROS 2에 turtlesim 패키지를 설치한다.

sudo apt update

sudo apt install ros-foxy-turtlesim

패키지가 잘 설치되었는지 확인하자.

ros2 pkg executables turtlesim

다음과 같이 나와야 한다.

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2. 실행

ros2 run turtlesim turtlesim_node

임의의 모양을 가진 거북이가 화면 중앙에 배치된 걸 볼 수 있다.
터미널 바로 아랫줄에 노드로부터 다음과 같은 메시지가 출력된다.

[INFO] [1659325767.440249889] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [1659325767.441517912] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

기본 설정 이름은 turtle1이고, 생성되는 기본 좌표를 알 수 있다.

3. turtlesim 사용

거북이를 제어하기 위해 새로운 노드를 생성해보자.

먼저 새 터미널을 열고, 다음 명령어를 수행한다.

ros2 run turtlesim turtle_teleop_key

이 때, turtlesim_node를 실행하는 터미널, turtle_teleop_key를 실행하는 터미널, tirtlesim 세 개의 창이 실행되고 있어야 한다.
화살표 키를 통해 제어할 수 있으며, 이동 시 이전 경로를 선으로 표시해준다.

화살표 키를 한 번 누를 때마다 특정 이동 거리를 이동하고 정지한다. 이는 사용자와 로봇간의 연결이 끊긴 경우를 대비하기 위해서다.

list 명령을 수행하여 node와 관련된 service, topic, action을 볼 수 있다.

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

4. rqt 설치

터미널을 열어 rqt 패키지를 설치하자.

sudo apt update

sudo apt install ~nros-foxy-rqt*

rqt 실행 명령은 다음과 같다.

rqt

5. rqt 사용

첫 실행시 빈 화면이 나올 것이다. Plugins > Services > Service Caller 를 차례대로 선택하자.

rqt가 플러그인을 찾는 데 시간이 조금 걸릴 수 있다. 클릭 시 제대로 나오지 않으면 해당 rqt를 닫고 터미널에

rqt --force-discover

를 수행하자.

Service 왼쪽에 위치한 새로고침 버튼을 통해 turtlesim 의 이용가능한 서비스를 확인하자.

Service 오른쪽에 위치한 드롭다운 리스트를 클릭하면 tirtlesim의 서비스를 볼 수 있다.

5.1 spawn service 사용

rqt/spawn 서비스를 사용해보자. 새로운 거북이를 turtlesim 윈도우에 생성할 수 있다.

다음 사진과 같이 새 거북이의 좌표와 이름을 설정할 수도 있다.

기존에 존재하는 이름(eg. tirtle1)을 사용할 경우 turtlesim_node를 수행하는 터미널에 다음과 같은 메시지가 출력된다.

[ERROR] [turtlesim]: A turtle named [turtle1] already exists

이후 Call 버튼을 통해 새 거북이를 생성한다. 설정한 해당 좌표에 거북이가 생성되어 있을 것이다.

rqt 창에서도 새로고침 버튼을 클릭하면 새롭게 생성한 거북이의 서비스도 볼 수 있다.

5.2 set_pen service 사용

turtle1/set_pen 서비스를 통해 turtle1의 펜을 커스텀해보자.

r, g, b값을 조절하여 pen의 색깔을 변경할 수 있고, width로 펜의 두께 또한 변경할 수 있다.

값을 설정하고 나서 Call 버튼을 누르는 것을 잊지말자.

6. 재맵핑

새롭게 생성된 거북이를 움직이기 위해서는 turtle1cmd_vel을 새 거북이로 재맵핑 해야한다.

새 터미널을 열고, 다음의 명령을 실행하자.

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=mcleroysane19/cmd_vel

이후 해당 터미널에서 제어할 수 있다.

7. 종료

turtlesim_node 터미널에서는 Ctrl + C를 눌러, teleop 터미널에서는 q를 눌러 종료할 수 있다.

참고

ROS 2 Documentation: Foxy

profile
학부 연구생(220627~)

0개의 댓글