ROS 2 Humble 환경 설정 및 기본 패키지 개발 가이드

🤖 AI 추천

ROS(Robot Operating System) 프레임워크를 사용하여 로봇 개발을 시작하려는 초보 개발자 또는 ROS 2 환경 설정 및 패키지 구조, 노드 개발에 대한 실질적인 이해를 높이고자 하는 모든 로봇 공학 및 임베디드 시스템 개발자에게 추천합니다.

🔖 주요 키워드

💻 Development

핵심 기술

ROS 2 Humble Hawksbill 환경에서의 시스템 설치부터 개별 컴포넌트인 노드(Node)를 포함한 패키지(Package)의 생성, 빌드, 실행 및 통신 방법에 대한 포괄적인 가이드입니다.

기술적 세부사항

  • ROS 2 소개: 노드 기반의 분산 시스템으로 여러 컴퓨터에 걸쳐 로봇 시스템의 제어, 유지보수, 설계를 가능하게 합니다.
  • 설치: ros-humble-desktop 패키지를 시스템 전역에 설치하고, 터미널에서 source /opt/ros/humble/setup.bash 명령으로 환경 변수를 소싱하는 방법을 안내합니다. 자동화를 위해 쉘 시작 파일에 추가하는 방법도 제시합니다.
  • 워크스페이스 및 패키지 구조: ROS 프로젝트는 워크스페이스 내 src/ 디렉토리에 패키지로 구성됩니다. 각 패키지는 C++ 또는 Python으로 작성된 노드와 기타 실행 파일을 포함합니다. Python 프로젝트 폴더 생성 및 패키지 내 하위 폴더 구조 예시(bipedal_robot_pkg)를 제공합니다.
  • 빌드 프로세스: 새로운 .py 스크립트 생성, package.xml 또는 setup.py 변경, 새 패키지 생성 시 colcon build 명령으로 워크스페이스를 빌드해야 함을 설명합니다. 빌드 후에는 source ~/WORKSPACENAME/install/setup.bash로 환경 변수를 다시 로드해야 합니다.
  • 패키지 생성: ros2 pkg create --build-type ament_python PACKAGENAME 명령을 사용하여 Python 패키지를 생성하는 방법을 보여줍니다. C++ 패키지는 ament_cmake를 사용합니다. 각 패키지에는 setup.pypackage.xml이 포함됩니다.
  • setup.py: colcon 빌드 명령의 실행 파일 역할을 하며, 패키지 이름, 버전, 의존성, 진입점 등을 정의합니다. 예시로 temperature_sensor_pkgsetup.py 내용을 보여줍니다.
  • package.xml: 패키지 의존성, 버전, 작성자 정보 등을 포함합니다.
  • 노드 개발:
    • Python 노드는 ROS 클라이언트 라이브러리 rclpy를 임포트하고 Node 클래스를 상속받아야 합니다.
    • 노드는 setup.pyentry_points에 등록되어야 ros2 run 명령으로 실행 가능합니다.
    • main() 함수는 ROS 시스템 초기화 (rclpy.init), 노드 인스턴스 생성, 메시지 처리 (rclpy.spin), 노드 소멸, ROS 시스템 종료 (rclpy.shutdown)를 포함합니다.
  • 토픽 (Topics):
    • 발행 (Publishing): create_publisher 메서드를 사용하여 지정된 메시지 타입(TOPIC_MSG_TYPE), 토픽 이름(TOPIC_NAME), 큐 크기(QUEUE_SIZE)로 데이터를 주기적으로 발행합니다.
    • 구독 (Subscribing): create_subscription 메서드를 사용하여 지정된 메시지 타입, 토픽 이름, 콜백 함수, 큐 크기로 데이터를 수신하고 이벤트에 반응합니다.
    • 큐 크기(Queue Size): 메시지 손실 방지를 위한 버퍼 크기를 정의하며, 값에 따라 반응성 또는 안정성이 달라집니다.
    • 사용 가능한 메시지 타입: String, Bool, Int32/64, Float32/64, Float32MultiArray, LaserScan, Imu, BatteryState, Twist, Pose, PoseStamped, JointState 등 다양한 메시지 타입을 소개합니다.
    • 토픽 관리: ros2 topic list로 활성 토픽 목록을 확인하고, ros2 topic echo /topic_name으로 토픽 메시지를 실시간으로 확인할 수 있습니다.
  • 액션 (Actions):
    • 특정 작업을 수행하기 위한 노드로, 단일 목적, 비동기 처리, 피드백 제공, 취소 가능 등의 특징을 가집니다.
    • 액션 서버, 클라이언트, 액션 토픽으로 구성되며, .action 파일로부터 생성된 클래스(예: WalkPattern, NavigateToPose)를 사용합니다.
    • 액션 Goal, Feedback, Result 객체의 사용법을 예시(WalkPattern)와 함께 설명합니다.
    • 액션 서버 구현 시 ActionServer 클래스와 execute_callback의 역할에 대해 설명합니다.

개발 임팩트

이 콘텐츠는 ROS 2의 기본적인 설치 및 워크스페이스 구성 방법부터 시작하여, 토픽 기반 통신 및 액션 기반 통신 메커니즘을 통해 복잡한 로봇 시스템을 구축하는 데 필요한 핵심 개념과 실제 구현 방법을 체계적으로 학습할 수 있도록 돕습니다. 이를 통해 로봇 개발자는 효율적인 노드 설계 및 개발 능력을 향상시킬 수 있습니다.

커뮤니티 반응

명시적인 커뮤니티 반응은 언급되지 않았으나, ROS는 로봇 개발 분야에서 매우 활발한 커뮤니티를 가지고 있으며 관련 자료가 풍부합니다.

📚 관련 자료