노드 실행

목표: 명령 줄 도구를 사용하여 여러 노드를 한 번에 실행합니다.

배경 지식

대부분의 입문용 튜토리얼에서는 실행할 때마다 새로운 노드를 열었습니다. 더 복잡한 시스템을 만들 때마다 더 많은 노드가 동시에 실행되면 터미널을 열고 구성 세부 정보를 다시 입력하는 것이 지루해집니다.

Launch 파일을 사용하면 ROS 2 노드를 포함하는 여러 실행 파일을 동시에 시작하고 구성할 수 있습니다.

ros2 launch 명령으로 단일 런치 파일을 실행하면 전체 시스템(모든 노드와 그 구성)을 한 번에 시작합니다.

전제 조건

이 튜토리얼을 시작하기 전에 ROS 2를 설치하십시오. 설치 방법은 ROS 2 설치 페이지의 지침을 따르십시오.

이 튜토리얼에서 사용하는 명령은 운영 체제에 대한 바이너리 패키지 설치 가이드를 따랐다고 가정합니다 (리눅스의 경우 Debian 패키지). 소스에서 빌드한 경우에도 따라갈 수 있지만 설정 파일의 경로가 다를 수 있습니다. 또한 소스에서 설치한 경우 sudo apt install ros-<distro>-<package> 명령을 사용할 수 없을 것입니다 (초급 수준 튜토리얼에서 자주 사용됨).

리눅스를 사용하고 쉘에 익숙하지 않은 경우 이 튜토리얼 을 참조하십시오.

작업

런치 파일 실행

새 터미널을 열고 다음을 실행합니다.

ros2 launch turtlesim multisim.launch.py

이 명령은 다음과 같은 런치 파일을 실행합니다.

# turtlesim/launch/multisim.launch.py

from launch import LaunchDescription
import launch_ros.actions

def generate_launch_description():
    return LaunchDescription([
        launch_ros.actions.Node(
            namespace= "turtlesim1", package='turtlesim', executable='turtlesim_node', output='screen'),
        launch_ros.actions.Node(
            namespace= "turtlesim2", package='turtlesim', executable='turtlesim_node', output='screen'),
    ])

Note

위의 런치 파일은 Python으로 작성되었지만 런치 파일을 만드는 데 XML 및 YAML도 사용할 수 있습니다. 이러한 다양한 ROS 2 런치 형식 에서 비교할 수 있습니다.

이 명령은 두 개의 turtlesim 노드를 실행합니다.

../../_images/turtlesim_multisim.png

지금은 이 런치 파일의 내용에 대해 걱정하지 마십시오. ROS 2 런치에 대한 자세한 정보는 ROS 2 런치 튜토리얼 에서 찾을 수 있습니다.

(선택 사항) Turtlesim 노드 제어

이제 이러한 노드가 실행 중이므로 다른 ROS 2 노드와 마찬가지로 제어할 수 있습니다. 예를 들어, 두 개의 추가 터미널을 열고 다음 명령을 실행하여 거북이를 서로 반대 방향으로 움직이도록 할 수 있습니다.

두 번째 터미널에서:

ros2 topic pub  /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

세 번째 터미널에서:

ros2 topic pub  /turtlesim2/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"

이 명령을 실행한 후 다음과 같은 결과를 볼 수 있어야 합니다.

../../_images/turtlesim_multisim_spin.png

요약

지금까지 한 작업의 중요한 점은 하나의 명령으로 두 개의 turtlesim 노드를 실행한 것입니다. 자체 런치 파일을 작성하는 방법을 배우면 ros2 launch 명령으로 여러 노드를 실행하고 그 구성을 설정할 수 있을 것입니다.

ROS 2 런치 파일에 대한 더 많은 튜토리얼은 메인 런치 파일 튜토리얼 페이지 에서 확인하십시오.

다음 단계

다음 튜토리얼인 에서 또 다른 유용한 도구인 ros2 bag 에 대해 알아보겠습니다.