Background
1. What is a ROS2 package? [ROS2 패키지는 무엇인가?]
ROS 2 패키지는 노드, 런치 파일, 설정 파일 등과 같은 소프트웨어 구성 요소의 집합을 말합니다. 패키지는 독립적으로 빌드, 설치 및 실행할 수 있는 소프트웨서 단위인데요, 일반적으로 기능적으로 연관된 구성 요소들을 함께 묶어서 배포하거나 공유하기 위해 사용됩니다. ROS 2 패키지는 CMakeLists.txt 및 package.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
'Robotics > ROS2' 카테고리의 다른 글
ROS2 Node [ROS2 노드] (2) | 2023.04.27 |
---|---|
ROS2 Creating a package 2 [ROS2 패키지 만들기 2] (0) | 2023.04.26 |
ROS2 Creating a workspace [workspace 만들기] (0) | 2023.04.23 |
ROS2 ubuntu 20.04 ROS2 foxy Installation [ROS2 foxy 설치] (0) | 2023.04.21 |
ROS2 환경설정 (0) | 2022.04.24 |