패키지 제작 시작
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→ 패키지 이름--dependenciesrclpy와std_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
}