https://cafe.naver.com/openrt/24322
패키지(package)
-소프트웨어 구성을 위한 기본 단위
-ROS의 응용프로그램은 패키지 단위로 개발되고 관리됨
-노드(node, ROS의 최소 단위의 실행 프로세서)를 하나 이상 포함하거나, 다른 노드를 실행하기 위한 런치(launch)와 같은 실행 및 설정 파일들을 포함
-각 패키지는 package.xml이라는, 패키지의 정보(패키지 이름, 저작자, 라이선스, 의존성 패키지)를 담은 XML파일을 포함
메타패키지(metapackage)
-공통된 목적을 지닌 패키지들을 모아둔 패키지들의 집합 단위
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
-ROS 2의 파일 시스템: 설치 폴더와 사용자 작업 폴더로 구분
-설치 폴더: ROS의 데스크톱 버전(예: ros-foxy-desktop)을 설치하면 /opt
폴더에 ros
라는 이름의 폴더가 생성되고 그 안에 ROS 버전별로 또 다시 폴더가 있다. 일반 사용자가 이 부분의 파일들을 손댈 일은 거의 없다. 만약 바이너리 파일로 공식 배포되는 패키지를 수정하고자 하는 경우는 직접 원본 소스가 있는 리포지토리를 확인한 다음 '~/ros2_ws/src'에 'git clone [리포지토리 주소]'와 같이 직접 소스를 복사하여 사용하면 된다.
-사용자 작업 폴더: 사용자가 원하는 곳에 폴더명으로 생성할 수 있다. 이 강좌에서는 '~/ros2_ws/'를 사용한다.('~/': 리눅스에서 '/home/사용자명/'을 의미)
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.: 환경 설정 파일
(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.1 Multiple workspace
ROS 1에서는 catkin_ws
와 같이 특정 워크스페이스를 확보하고 하나의 워크스페이스에서 모든 작업을 다 했다.
ROS 2에서는 복수의 독릭된 워크스페이스를 사용할 수 있어서 작업 목적 및 패키지 종류별로 관리할 수 있게 되었다.
5.2 No devel space
ROS 1에서의 catkin은 패키지를 빌드 한 후 devel 이라는 폴더에 코드를 저장한다. 이 폴더는 패키지를 설치할 필요없이 패키지를 사용할 수 있는 환경을 제공한다. 이를 통해 파일 복사를 피하면서 사용자는 파이썬 코드를 편집하고 즉시 코드 실행할 수 있었다. 단 이러한 기능은 매우 편리한 기능이지만 패키지를 관리하는 측면에서 복잡성을 크게 증가시켰다.
ROS 2에서는 패키지를 빌드한 후 설치해야 패키지를 사용할 수 있도록 바뀌었다.