티스토리 친구하기

본문 바로가기

Robotics/ROS2

ROS2 Creating a package 1 [ROS2 패키지 만들기 1]

728x90

참고자료: https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Creating-Your-First-ROS2-Package.html

 

Background

1.  What is a ROS2 package? [ROS2 패키지는 무엇인가?]

ROS 2 패키지는 노드, 런치 파일, 설정 파일 등과 같은 소프트웨어 구성 요소의 집합을 말합니다. 패키지는 독립적으로 빌드, 설치 및 실행할 수 있는 소프트웨서 단위인데요, 일반적으로 기능적으로 연관된 구성 요소들을 함께 묶어서 배포하거나 공유하기 위해 사용됩니다. ROS 2 패키지는 CMakeLists.txtpackage.xml과 같은 파일을 포함하며, 이들은 패키지 빌드 및 설치, 의존성 관리, 패키지 정보 등을 정의하는 데 사용됩니다.

2. What makes up a ROS2 package? [ROS2 패키지의 구성 요소]

1. 노드(Node):

 - 특정 작업(로봇 제어, 센서 데이터 처리, 토픽 발행/구독 등)을 수행하는 실행 파일입니다.
2. 런치 파일(Launch file):

 - 여러 노드를 실행하고, 그들의 매개변수, 토픽 및 서비스를 구성하는 python 파일입니다.
3. 설정 파일(Configuration file):

 - YAML 파일로, 노드나 노드 그룹의 매개변수, 토픽, 서비스 등을 정의합니다.
4. 라이브러리(Library):

 - C++ 또는 Python 라이브러리로, 메시지 정의, 알고리즘, 드라이버 등 재사용 가능한 기능을 제공합니다.
5. 자원(Resource):

 - 이미지, 소리, 모델 등의 데이터 파일로, 노드나 시각화 도구에서 사용됩니다.
6. 테스트(Test):

 - 유닛 테스트, 통합 테스트, 시스템 테스트 등으로, 패키지의 정확성과 견고성을 검증합니다.
7. 문서(Documentation): 

 - README 파일, 튜토리얼, API 참조 등으로, 사용자가 패키지를 이해하고 사용할 수 있도록 돕습니다.

ROS 2 패키지는 이러한 구성 요소들뿐만 아니라, `CMakeLists.txt` 파일과 `package.xml` 파일도 포함하고 있습니다. 이들 파일은 패키지의 빌드 시스템과 메타데이터(이름, 버전, 의존성, 라이선스 등)를 정의하는 데 사용됩니다.

 

package.xml

 - 패키지에 대한 메타 정보를 포함하는 파일

 - 이 파일은 패키지 이름, 버전, 저작자, 라이센스 등의 정보를 정의하며, 패키지의 의존성 패키지와 메시지, 서비스, 액션 등의 정의된 인터페이스 정보도 포함합니다.

 

CMakeLists.txt

 - 패키지 내 코드를 빌드하는 방법을 기술하는 파일

 - 빌드에 필요한 컴파일러, 라이브러리, 소스 파일 등을 명시하고, 실행파일, 라이브러리, 메시지, 서비스 등의 빌드 대상 및 의존성 관리를 설정합니다.

 - 이 파일은 빌드 프로세스를 자동화 하기 위한 CMake 빌드 시스템에 의해 사용됩니다.

3. Packages in a workspace [워크스페이스 안에 있는 패키지들]

Workspace는 하나 이상의 패키지를 포함하는 디렉토리입니다. 하나의 workspace는 CMake, Python 등과 같이 다른 빌드 타입을 가진 package들을 가질 수 있습니다. Best practice는 workspace안에 src 폴더를 가지는 것으로, src 폴더 안에 package들을 만듭니다. 

 간단하게 예를 보여들리면 아래와 같습니다. 

 

workspace_folder/
    src/
      package_1/
          CMakeLists.txt
          package.xml

      package_2/
          setup.py
          package.xml
          resource/package_2
      ...
      package_n/
          CMakeLists.txt
          package.xml

 

 

 

반응형