[ROS2]020: ROS 2의 파일 시스템

maroo·2022년 7월 21일
0

ROS2

목록 보기
10/39
post-custom-banner

https://cafe.naver.com/openrt/24322

2.패키지와 메타패키지

패키지(package)
-소프트웨어 구성을 위한 기본 단위
-ROS의 응용프로그램은 패키지 단위로 개발되고 관리됨
-노드(node, ROS의 최소 단위의 실행 프로세서)를 하나 이상 포함하거나, 다른 노드를 실행하기 위한 런치(launch)와 같은 실행 및 설정 파일들을 포함
-각 패키지는 package.xml이라는, 패키지의 정보(패키지 이름, 저작자, 라이선스, 의존성 패키지)를 담은 XML파일을 포함
메타패키지(metapackage)
-공통된 목적을 지닌 패키지들을 모아둔 패키지들의 집합 단위

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

ROS 패키지 설치에는 2가지 방법이 있다.

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

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

3.2 소스 코드 설치
해당 패키지의 소스 코드를 직접 다운로드 한 후 사용자가 빌드하여 사용하는 방법이다.
이 방법은 해당 패키지를 수정하여 사용하고자 할 경우나 소스 코드 내용을 확인할 필요가 있을 때 사용한다.
소스 코드 설치 방법은 사용자 작업폴더 (예: '~/ros2_ws/src')에 git clone 명령어를 통해 원격의 리포지토리를 복사 후 빌드하는 방법이다.

$ cd ~/ros2_ws/src
$ git clone https://github.com/ros2/teleop_twist_joy.git
$ cd ~/ros2_ws/
$ colcon build --symlink-install --packages-select teleop_twist_joy

4.기본 설치 폴더와 사용자 작업 폴더

-ROS 2의 파일 시스템: 설치 폴더와 사용자 작업 폴더로 구분
-설치 폴더: ROS의 데스크톱 버전(예: ros-foxy-desktop)을 설치하면 /opt 폴더에 ros 라는 이름의 폴더가 생성되고 그 안에 ROS 버전별로 또 다시 폴더가 있다. 일반 사용자가 이 부분의 파일들을 손댈 일은 거의 없다. 만약 바이너리 파일로 공식 배포되는 패키지를 수정하고자 하는 경우는 직접 원본 소스가 있는 리포지토리를 확인한 다음 '~/ros2_ws/src'에 'git clone [리포지토리 주소]'와 같이 직접 소스를 복사하여 사용하면 된다.
-사용자 작업 폴더: 사용자가 원하는 곳에 폴더명으로 생성할 수 있다. 이 강좌에서는 '~/ros2_ws/'를 사용한다.('~/': 리눅스에서 '/home/사용자명/'을 의미)

4.1 기본 설치 폴더

ROS 2는 '/opt/ros/[버전이름]' 폴더에 설치된다.
예를 들어 ROS 2 Foxy Fitzroy 버전을 설치했다면
기본 설치 폴더 경로: /opt/ros/foxy

(1)폴더 및 파일 구성
각자 로컬의 '/opt/ros/foxy'폴더를 확인해 보자.

(2)세부 내용
-/bin:실행 가능한 바이너리 파일
-/cmake: 빌드 설정 파일
-/include: 헤더 파일
-/lib: 라이브러리 파일
-/opt: 기타 의존 패키지
-/share: 패키지의 빌드, 환경 설정 파일
-local_setup.: 환경 설정 파일
-setup.
: 환경 설정 파일

4.2 사용자 작업 폴더

(1)폴더 및 파일 구성

(2)세부 내용
-/build: 빌드 설정 파일용 폴더
-/install: msg, srv 헤더 파일과 사용자 패키지 라이브러리, 실행 파일용 폴더
-/log: 빌드 로깅 파일용 폴더
-/src: 사용자 패키지용 폴더

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

5.ROS 1과 ROS 2 파일 시스템의 차이점

5.1 Multiple workspace
ROS 1에서는 catkin_ws와 같이 특정 워크스페이스를 확보하고 하나의 워크스페이스에서 모든 작업을 다 했다.
ROS 2에서는 복수의 독릭된 워크스페이스를 사용할 수 있어서 작업 목적 및 패키지 종류별로 관리할 수 있게 되었다.

5.2 No devel space
ROS 1에서의 catkin은 패키지를 빌드 한 후 devel 이라는 폴더에 코드를 저장한다. 이 폴더는 패키지를 설치할 필요없이 패키지를 사용할 수 있는 환경을 제공한다. 이를 통해 파일 복사를 피하면서 사용자는 파이썬 코드를 편집하고 즉시 코드 실행할 수 있었다. 단 이러한 기능은 매우 편리한 기능이지만 패키지를 관리하는 측면에서 복잡성을 크게 증가시켰다.
ROS 2에서는 패키지를 빌드한 후 설치해야 패키지를 사용할 수 있도록 바뀌었다.

profile
할수이따 ~
post-custom-banner

0개의 댓글