패키지 제작 시작

Python을 사용하여 ROS 2 패키지를 제작하는 경우, ament_python을 사용해야 합니다. 다음은 Python 기반으로 패키지를 제작하는 절차입니다.


1. ROS 2 워크스페이스 생성

홈 디렉토리에서 ros2_ws라는 워크스페이스를 생성합니다.

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
여기서 src 디렉토리는 패키지를 저장하는 공간입니다.


2. Python 패키지 생성

ROS 2에서는 ament_python을 사용하여 Python 패키지를 생성합니다.
예를 들어, my_python_package라는 패키지를 생성하려면 다음과 같이 실행합니다.

cd ~/ros2_ws/src

ros2 pkg create --build-type ament_python my_python_package --dependencies rclpy std_msgs

옵션 설명

  • --build-type ament_python → Python을 사용한 패키지
  • my_python_package → 패키지 이름
  • --dependencies rclpystd_msgs는 기본적인 ROS 2 Python 라이브러리입니다.
  • 새 패키지에 필요한 의존성을 추가하려면 package.xml을 수정하거나 패키지 생성 시 추가할 수도 있습니다.

이 명령을 실행하면 src/my_python_package 폴더가 생성됩니다.


3. 패키지 디렉토리 구조 확인

패키지 내부의 구조는 다음과 같습니다.

ls ~/ros2_ws/src/my_python_package

하위 디렉토리 구성:

my_python_package/
    __init__.py
package.xml
setup.py
setup.cfg
resource/
    my_python_package

각 파일 및 폴더의 역할:

  • my_python_package/ → 패키지의 Python 모듈 (이곳에 노드 파일을 추가)
  • package.xml → 패키지 메타데이터
  • setup.py → Python 패키지 설정 파일
  • setup.cfg → 빌드 설정
  • resource/my_python_package → 패키지 식별 파일
  • my_python_package_node.py → 기본 실행 가능한 노드 파일 (추가로 만들 수도 있음)

4. 노드 파일 작성

이제 my_python_package_node.py 파일을 열고 기본 ROS 2 노드를 작성합니다.

cd ~/ros2_ws/src/my_python_package/my_python_package

vi my_python_package_node.py  # 또는 nano my_python_package_node.py
import rclpy
from rclpy.node import Node

class MyNode(Node):
    def __init__(self):
        super().__init__('my_python_node')
        self.get_logger().info("Hello, ROS 2 Python!")

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

if __name__ == '__main__':
    main()

디렉토리 구성 예시:

my_python_package/
    __init__.py
    my_python_package_node.py
package.xml
setup.py
setup.cfg
resource/
    my_python_package


6. 실행 파일 등록

setup.py 파일을 수정하여 실행 파일을 등록해야 합니다.
아래와 같이 entry_points에 실행할 스크립트를 추가합니다.

from setuptools import setup

package_name = 'my_python_package'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='your_name',
    maintainer_email='your_email@example.com',
    description='My first ROS 2 Python package',
    license='Apache License 2.0',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'my_node = my_python_package.my_python_package_node:main',
        ],
    },
)

7. 빌드 및 실행

1) 패키지 빌드

cd ~/ros2_ws
colcon build --packages-select my_python_package

2) 빌드 후 설정 파일 적용

source install/setup.bash

3) 노드 실행

ros2 run my_python_package my_node

이제 Python 기반의 ROS 2 패키지가 정상적으로 실행됩니다! 🚀


8. 단축명령어 추가

1) 단축 명령어 1 colcon 빌드후, 적용되는 명령어를 alias 명령으로 적용한다.

source install/setup.bash

함수 추가

sb() {
    echo 'run source ~/ros2_ws/install/setup.bash' # 실행된 명령어 출력 시작
    source ~/ros2_ws/install/setup.bash
}

2) 단축 명령어 2

cd ~/ros2_ws
colcon build --packages-select my_python_package

함수 추가:

cb() {
    cd ~/ros2_ws || return 1  # 실패 시 함수 종료

    if [ -z "$1" ]; then  # 인자가 비어 있으면 전체 빌드
        colcon build
    else 
        colcon build --packages-select "$1"
    fi
}