ROS2의 파일 시스템

두부김치·2024년 2월 4일
1

ROS2

목록 보기
11/29

파일 시스템

ROS2의 파일 시스템(Filesystem)은 ROS 패키지 및 소스코드를 검색하거나 메시지 파일, 실행 파일, 파라미터 설정 및 환경설정 파일 등을 이용할 때 사용자에게 일관된 경험을 제공하기 위해서 동일한 구조를 가지고있다. ROS2의 파일 시스템을 설명하기 위하여 기본적인 폴더 및 파일 구성과 설치 폴더, 사용자 패키지에 대해 알아보도록 하자.

패키지와 메타패키지

ROS2의 기본적인 폴더 및 파일 구성에 대해서 알아보자. ROS2에서 소프트웨어 구성을 위한 기본단위는 패키지(Package)로써 ROS의 응용 프로그램은 패키지 단위로 개발되고 관리된다. 패키지는 노드(Node)를 하나 이상 포함하거나 다른 노드를 실행하기 위한 런치(Launch)와 같은 실행 및 설정 파일들을 포함하게 된다.

이러한 패키지는 공통된 목적을 지닌 패키지들을 모아둔 패키지의 집합 단위인 메타패키지(MetaPackage)로 관리되기도 한다. 예를 들어 Navigation2 메타패키지는 nav2_amcl, nav2_bt_navigator, nav2_costmap_2d 등 여러개의 패키지로 구성되어있다. 각 패키지는 package.xml 파일을 포함하고 있는데 이는 패키지의 정보를 담은 XML 파일로써 패키지의 이름, 저작자, 라이선스, 의존성 패키지 등을 기술하고 있다. 또한 ROS2의 빌드 시스템인 ament 는 기본적으로 CMake 를 이용하고 있어서 패키지 폴더에 CMakeList.txt 라는 파일에 빌드 설정을 기술하고 있다. 이외에 노드의 소스코드 및 노드 간의 메시지 통신을 위한 msg, srv, action 인터페이스 파일 등으로 구성되어 있다.

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

ROS 패키지 설치는 바이너리 형태로 제공되어 별도의 빌드과정 없이 바로 실행하는 방법과 해당 패키지의 소스코드를 직접 내려받은 후 사용자가 빌드해 사용하는 방법이 있다. 이는 패키지 사용 목적에 따라 달리 사용된다. 만약 해당 패키지를 수정해 사용할 경우나 소스코드 내용을 확인할 필요가 있다면 후자의 설치 방법을 이용하면 된다.

실습

바이너리 설치

바이너리 설치 방법은 다음과 같이 해당 패키지명으로 설치할 수 있으며 설치된 파일은 /opt/ros/foxy에 저장된다. ros2 run이나 ros2 launch로 실행가능한 노드를 실행시킬수 있다.

$ sudo apt-get install ros-foxy-teleop-twist-joy

소스코드 설치

소스코드 설치 방법은 사용자의 작업폴더(workspace)에 git clone 명령어를 통해 해당 리포지터리를 복사한 후 빌드하는 방법이다.

$ mkdir -p robot_ws/src
$ cd robot_ws/src
$ git clone https://github.com/ros2/teleop_twist_joy.git
$ cd ~/robot_ws
$ colcon build --symlink-install 

기본 설치 폴더

ROS2는 /opt/ros/ros-distro 폴더에 설치된다. 예를 들어 ROS2-foxy Fitzroy 버전을 설치했다면 ROS가 설치된 경로는 다음과 같다.
▪ 기본 설치 폴더 경로: /opt/ros/foxy

폴더 및 파일 구성

다음 그림처럼 '/opt/ros/foxy'의 폴더 아래에 bin, cmake, include, lib, opt, share, src 폴더와 몇 가지 환경설정 파일들로 구성되어 있다.

세부 내용

ROS 폴더에는 ROS를 설치할 때 선택했던 패키지와 ROS구동 프로그램이 포함되어있다.

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

사용자 작업 폴더

사용자 작업 폴더는 사용자가 원하는 곳에 생성할 수 있다.

mkdir <원하는 폴더이름>

여기서는 ~/robot_ws/ 를 사용한다. 즉 /home/사용자이름/robot_ws 를 사용할 것이다.

세부 내용

사용자 작업 폴더는 사용자가 작성한 패키지와 공개된 다른 개발자의 패키지를 저장하고 빌드하는 공간이다. 사용자는 ROS와 관련된 대부분의 작업을 이 폴더에서 수행한다. 세부 내용은 다음과 같다.

▪ /build 빌드 설정 파일용 폴더
▪ /install msg, srv 헤더 파일과 사용자 패키지 라이브러리, 실행 파일용 폴더
▪ /log 빌드 로깅 파일용 폴더
▪ /src 사용자 패키지용 폴더

~/robot_ws/src 폴더는 사용자 패키지의 공간이다. ~/robot_ws/src 내의 패키지는 다음과 같이 다양한 폴더와 파일로 구성되어있다.

▪ /src C/C++ 코드용 폴더
▪ /include C/C++ 헤더 파일용 폴더 (폴더 안에는 각 패키지 이름별 폴더로 패키지별 헤더를 구분함)
▪ /param 파라미터 파일용 폴더
▪ /launch roslaunch에 사용되는 launch 파일용 폴더
▪ /패키지_이름_폴더 Python 코드용 폴더
▪ /test 테스트 코드 및 테스트 데이터용 폴더
▪ /msg 메시지 파일용 폴더
▪ /srv 서비스 파일용 폴더
▪ /action 액션 파일용 폴더
▪ /doc 문서용 폴더
▪ package.xml: 패키지 설정 파일 (REP-0140, REP-0149 참고)
▪ CMakeLists.txt: C/C++ 빌드 설정 파일
▪ setup.py: 파이썬 코드 환결 설정 파일
▪ README: 사용자 문서, github 리포지토리의 메인에 표시된다.
▪ CONTRIBUTING: 해당 패키지 개발에 공헌하는 방법을 기술하는 파일
▪ LICENSE: 이 패키지의 라이선스를 기술하는 파일
▪ CHANGELOG.rst: 이 패키지의 버전별 변경 사항 모음 파일 

이번 시간에는 ROS2의 파일 시스템에 대해 알아보았다. 다음시간에는 빌드 시스템에 대해 알아보겠다.

profile
Robotics

0개의 댓글