망각의 개발자

ROS2 워크스페이스와 사용자 정의 패키지 작성법 (Ubuntu 24.04 기준)

t루핑_. 2025. 5. 6. 18:41

ROS2 설치 및 기본 노드 실행을 성공적으로 마쳤다면 이제는 본격적으로 나만의 패키지를 만들어 로봇 프로젝트를 시작할 차례입니다. 이번 글에서는 ROS2의 워크스페이스(workspace) 설정 방법과 간단한 사용자 정의 패키지를 만드는 방법을 단계적으로 소개합니다.

1. ROS2 워크스페이스 설정하기

ROS2 프로젝트는 일반적으로 "워크스페이스"라는 작업 공간 안에서 관리됩니다. 이 워크스페이스는 여러 개의 패키지를 포함할 수 있습니다.

워크스페이스 생성

다음 명령을 사용하여 워크스페이스를 생성합니다.

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

의존성 설치

워크스페이스를 빌드할 때 필요한 도구를 설치합니다.

sudo apt install python3-colcon-common-extensions

2. 사용자 정의 패키지 생성하기

ROS2는 ros2 pkg create 명령어를 통해 간단하게 패키지를 생성할 수 있습니다.

패키지 생성 명령

새로운 패키지를 생성할 때는 다음과 같은 형식을 사용합니다.

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_python my_first_package

위 명령은 파이썬으로 작성된 ROS2 패키지인 my_first_package를 생성합니다.

(C++로 패키지를 만들려면 ament_cmake를 사용합니다.)

3. 사용자 정의 노드 작성하기

다음으로는 패키지 안에 간단한 노드를 추가해 보겠습니다.

파이썬 노드 작성 예시

my_first_package/my_first_package 디렉토리 내에 새로운 파이썬 파일을 생성합니다.

cd ~/ros2_ws/src/my_first_package/my_first_package
touch my_node.py

이제 my_node.py에 간단한 코드를 작성합니다.

import rclpy
from rclpy.node import Node

class MyNode(Node):
    def __init__(self):
        super().__init__('my_node')
        self.get_logger().info('Hello from my_node!')

def main(args=None):
    rclpy.init(args=args)
    node = MyNode()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

setup.py 수정

생성한 노드를 실행 가능하도록 하기 위해서는 패키지의 setup.py 파일을 수정하여 엔트리 포인트(entry_points)를 추가합니다.

entry_points={
    'console_scripts': [
        'my_node = my_first_package.my_node:main'
    ],
},

4. 워크스페이스 빌드 및 실행하기

워크스페이스를 빌드한 후 환경 설정을 해줍니다.

cd ~/ros2_ws
colcon build
source install/setup.bash

노드 실행은 다음과 같습니다.

ros2 run my_first_package my_node

다음 단계는 무엇인가요?

이제 자신만의 ROS2 패키지와 노드를 성공적으로 작성하고 실행했습니다. ROS2에서 패키지를 만들고 노드를 실행하는 방법까지 익혔다면, 이제 ROS2의 핵심 개념들을 이해할 차례입니다. 다음 글에서는 ROS2의 노드(Node), 토픽(Topic), 서비스(Service), 액션(Action), 파라메터(Parameter)에 대해 간단히 소개하고, 이들이 어떻게 서로 연동되는지를 살펴보겠습니다. ROS2의 통신 구조를 이해하면 보다 견고하고 유연한 로봇 애플리케이션을 개발할 수 있습니다.

728x90