Ubuntu ROS 실습(25)

zeusqoi·1일 전

개인공부 - ubuntu

목록 보기
44/52

ROS 2에서는 소프트웨어를 패키지(package) 단위로 개발하고 관리한다. 패키지는 ROS 응용프로그램을 구성하는 기본 단위이며, 하나 이상의 노드나 launch와 같은 실행 및 설정 파일을 포함할 수 있다.

이번에는 ROS 2의 패키지 구조와 설치 폴더, 사용자 작업 폴더 및 패키지 내부의 주요 파일과 디렉터리에 대해 알아보았다.


1. 패키지와 메타패키지

ROS 2에서 소프트웨어 구성의 기본 단위는 패키지(package)이다.

패키지는 하나 이상의 노드(node)를 포함하거나, 다른 노드를 실행하기 위한 launch 파일과 같은 실행 및 설정 파일을 포함한다.

또한 여러 패키지를 공통된 목적에 따라 하나로 묶어 메타패키지(metapackage)로 관리할 수 있다.

예를 들어 Navigation2 메타패키지는 여러 Navigation 관련 패키지들을 하나의 집합으로 관리한다.

각 ROS 2 패키지에는 패키지 정보를 담는 package.xml 파일이 포함되며, ROS 2의 빌드 시스템인 ament를 사용하기 위한 CMakeLists.txt 등의 파일도 포함된다.

패키지는 이외에도 노드의 소스 코드와 노드 간 통신에 사용되는 msg, srv, action 인터페이스 파일 등으로 구성된다.


2. 바이너리 설치와 소스 코드 설치

ROS 패키지는 크게 바이너리 설치와 소스 코드 설치 방식으로 사용할 수 있다.

바이너리 설치

바이너리 형태로 제공되는 패키지를 설치하면 별도의 빌드 과정 없이 바로 사용할 수 있다.

예를 들어 teleop_twist_joy 패키지는 다음과 같이 설치할 수 있다.

sudo apt install ros-humble-teleop-twist-joy

소스 코드 설치

패키지의 소스 코드를 직접 다운로드한 후 사용자가 빌드하여 사용할 수도 있다.

예를 들어:

cd ~/robot_ws/src
git clone https://github.com/ros2/teleop_twist_joy.git

cd ~/robot_ws/
colcon build --symlink-install --packages-select teleop_twist_joy

소스 코드 설치 방식은 패키지를 수정하여 사용하거나 소스 코드의 내용을 직접 확인할 필요가 있을 때 사용할 수 있다.


3. ROS 2 기본 설치 폴더

ROS 2는 기본적으로 다음 경로에 설치된다.

/opt/ros/[ROS 버전]

ROS 2 Humble의 경우:

/opt/ros/humble

기본 설치 폴더에는 다음과 같은 디렉터리와 파일이 존재한다.

경로설명
/bin실행 가능한 바이너리 파일
/cmake빌드 설정 파일
/include헤더 파일
/lib라이브러리 파일
/opt기타 의존 패키지
/share패키지의 빌드 및 환경 설정 파일
local_setup.*환경 설정 파일
setup.*환경 설정 파일

즉, /opt/ros/humble은 ROS 2 Humble이 설치되어 있는 기본 위치이며 ROS 2를 실행하는 데 필요한 여러 파일이 이곳에 구성되어 있다.


4. 사용자 작업 폴더

ROS 2에서 사용자가 직접 개발하는 패키지는 Workspace(작업 공간)를 만들어 관리한다.

자료에서는 다음과 같은 경로를 예시로 사용한다.

~/robot_ws/

실제 경로는 다음과 같이 구성된다.

/home/사용자이름/robot_ws/

Workspace에는 다음과 같은 주요 디렉터리가 생성된다.

디렉터리설명
/build빌드 설정 파일용 폴더
/installmsg, srv 헤더 파일과 사용자 패키지 라이브러리 및 실행 파일용 폴더
/log빌드 로깅 파일용 폴더
/src사용자 패키지용 폴더

특히 실제 개발할 때 작성하는 패키지는 주로 src 폴더 안에 위치하게 된다.


5. 패키지 내부의 주요 폴더

사용자 패키지는 목적에 따라 다양한 폴더로 구성할 수 있다.

src/
include/
param/
launch/
패키지_이름_폴더/
test/
msg/
srv/
action/
doc/

각 폴더의 용도는 다음과 같다.

폴더용도
/srcC/C++ 코드
/includeC/C++ 헤더 파일
/param파라미터 파일
/launchlaunch 파일
/패키지_이름_폴더Python 코드
/test테스트 코드 및 테스트 데이터
/msg메시지 파일
/srv서비스 파일
/action액션 파일
/doc문서

따라서 패키지의 목적에 따라 필요한 디렉터리를 구성하여 사용할 수 있다.


6. 패키지의 주요 파일

ROS 2 패키지에는 소스 코드 외에도 패키지를 관리하기 위한 여러 설정 파일이 포함된다.

package.xml

패키지의 기본 정보를 정의하는 파일이다.

패키지 이름, 버전, 설명, 저작자, 라이선스, 의존성 및 빌드 도구 등의 정보를 포함한다.

package.xml

CMakeLists.txt

C/C++ 패키지의 빌드 설정을 담당하는 파일이다.

CMakeLists.txt

setup.py

Python 패키지의 환경 설정을 담당하는 파일이다.

setup.py

README

패키지의 사용 방법이나 설명 등을 작성하는 문서 파일이다.

LICENSE

패키지의 라이선스 정보를 기술하는 파일이다.

CHANGELOG.rst

패키지의 버전별 변경 사항을 기록하는 파일이다.

자료에서는 이외에도 CONTRIBUTING 파일을 통해 해당 패키지 개발에 공헌하는 방법을 기술할 수 있다고 설명한다.


7. 전체적인 ROS 2 파일 시스템 구조

앞에서 살펴본 내용을 정리하면 ROS 2의 작업 공간은 다음과 같은 형태로 구성할 수 있다.

robot_ws/
├── build/
├── install/
├── log/
└── src/
    └── my_package/
        ├── src/
        ├── include/
        ├── param/
        ├── launch/
        ├── msg/
        ├── srv/
        ├── action/
        ├── test/
        ├── package.xml
        ├── CMakeLists.txt
        ├── setup.py
        ├── README
        ├── LICENSE
        └── CHANGELOG.rst

ROS 2에서는 이처럼 Workspace → Package → Source 및 설정 파일의 구조로 개발 환경을 구성한다.


마무리

이번 학습에서는 ROS 2의 파일 시스템 구조에 대해 알아보았다.

ROS 2 소프트웨어의 기본 단위인 패키지와 메타패키지를 살펴보고, 패키지를 바이너리 또는 소스 코드 형태로 설치하는 방법을 확인했다.

또한 /opt/ros/humble에 위치한 ROS 2 기본 설치 폴더와 robot_ws 형태의 사용자 Workspace 구조를 살펴보았다.

마지막으로 src, include, launch, param, msg, srv, action 등의 주요 폴더와 package.xml, CMakeLists.txt, setup.py, README, LICENSE, CHANGELOG.rst 등의 주요 파일이 각각 어떤 역할을 하는지 정리했다.

ROS 2 개발을 진행할 때 어떤 파일이 어디에 위치하고 어떤 역할을 하는지 이해하는 것이 패키지를 직접 개발하고 관리하는 데 중요한 기초가 된다.

0개의 댓글