ROS2

[ROS2] Tutorial Beginner : CLI tools - Configuring environment / Using turtlesim, ros2, and rqt

씨주 2024. 10. 7. 23:28
더보기

ROS2 Tutorial을 시작하기 전 Installation은 아래 링크 참고

ROS2_Humble Installation : 
https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html

https://makingrobot.tistory.com/159

Configuring environment

Background

Workspace : 내가 개발하고 있는 ROS2 위치

핵심 ROS2 workspace는 underlay, 추가적인 workspace는 overlay라고 한다.

sourcing을 잘해줘야 ROS2 사용이 용이하니 주의하자.

 

Task

새로운 터미널을 열때마다 setup을 실행해주어야 한다.

source /opt/ros/humble/setup.bash

 

터미널을 시작할 때마다 이 작업을 하기 번거롭다면 command 설정을 할 수 있다.

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

 

ROS_DOMAIN_ID는 동일 네트워크에서 컴퓨터 그룹 간의 간섭을 방지하기 위해 설정한다.

default값은 0

export ROS_DOMAIN_ID=<your_domain_id>
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc

 

ROS_LOCALHOST_ONLY는 local network로, 여러 대의 로봇이 동일 topic을 publish하는 등 서로 간섭되지 않도록 한다.

export ROS_LOCALHOST_ONLY=1
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc

 

Using turtlesim, ros2, and rqt

Backgroud

Turtlesim은 ROS2를 배우기 위한 가벼운 시뮬레이터

ros2 tool은 user가 ROS와 어떻게 관리하고 상호작용하는지를 의미한다.

rqt는 ROS2의 GUI로, ROS2의 요소들을 사용하기 쉽게 한다.

 

Tasks

Turtlesim 설치

sudo apt update
sudo apt install ros-humble-turtlesim

 

Turtlesim package 설치 확인

ros2 pkg executables turtlesim

 

Turtlesim 시작

ros2 run turtlesim turtlesim_node

 

새 터미널창을 열어 turtle을 control하는 node(turtle_teleop_key)를 열자

ros2 run turtlesim turtle_teleop_key

 

turtlesim_node, turtle_teleop_key, turtlesim window 이렇게 총 3개의 창이 열려 있을 것이다.

turtle_teleop_key창에서 화살표를 통해 turtle의 움직임을, GBVCDRTT로 turtle의 방향을 control할 수 있고, 가는 방향에 따라 그림이 그려진다.

 

node, topic, service, action에 관하여 list를 통해 확인할 수 있다.

이 4가지에 대해서는 뒤쪽에서 다루도록 한다.

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

 

rqt 설치

여기서 rqt란 rxbag, rxplot, rxgraph와 같은 프로그램들을 종합한 ROS GUI(Graphic User Interface) 툴로 보면 된다.

sudo apt update
sudo apt install '~nros-humble-rqt*'

 

 

rqt 실행

rqt

 

상단의 메뉴바에서 Plugins > Services > Service Caller를 확인해보면 아래와 같은 창이 뜬다.

 

여기서 clear 대신 /spawn을 선택해보자.

이름에서 알 수 있듯이 spawn(알)을 통해 다른 turtle을 생성할 수 있다.

name을 'turtle2', 위치를 (x, y) = (1, 1)로 설정 후 Call하면 아래와 같이 turtle 하나가 추가된다!

 

다시 turtle1으로 돌아가 /set_pen을 통해 pen의 색과 굵기를 설정해보자.

요로코롬 설정하면 빨간색 굵은선이 나온다!

 

Remapping

현재 turtle1에 대한 teleop node만 실행되어 있어서 turtle2를 control할 수 없기 때문에 turtle2의 teleop node를 열어보려 한다.

하지만 turtl1의 teleop node을 열 때와 같은 명령어를 사용하면 여전히 turtle1을 제어하기 때문에 remapping이 필요하다.

새로운 터미널창을 열어 아래와 같은 코드를 실행하게 되면 이제 turtle2도 control 가능하다.

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

더보기

근데 turtle2에서 방향키는 control이 되는데 회전은 되지 않는다..

https://github.com/ros/ros_tutorials/blob/rolling/turtlesim/tutorials/teleop_turtle_key.cpp#L242

스터디에서 얘기해본바 개발자들이 함수구현과정에서 뭔가 잘못설정한게 아닐까 싶다.

 

 

 

ROS2_Humble Documentation : https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html