배포와 재사용의 단위

turtlesim은 어떻게 apt 한 줄로 내 컴퓨터에 왔을까?

패키지

ROS 2 코드를 묶는 단위입니다

패키지(package)는 ROS 2 코드를 정리하는 단위입니다. 노드 코드와 함께, 이름과 필요한 것을 적은 package.xml, 설치하는 방법을 적은 파일이 한 폴더에 들어 있습니다.

파이썬 패키지 기준입니다. 설치 방법 파일은 C++ 패키지에서는 CMakeLists.txt입니다(9편).

이미 써 봤다

ros2 run 다음 단어가 패키지

2강에서 친 ros2 run turtlesim turtlesim_node는 "turtlesim 패키지의 turtlesim_node 실행 파일을 돌려라"라는 뜻입니다. 거북이 창과 키보드 조종이 같은 패키지 안에 들어 있습니다.

따라 하기

패키지 안의 실행 파일을 봅니다

ros2 pkg executables turtlesim은 turtlesim 패키지에 든 실행 파일을 모두 보여 줍니다. 앞은 패키지 이름, 뒤는 ros2 run에 쓰는 실행 파일 이름입니다.

설치된 패키지 전체 목록은 ros2 pkg list로 봅니다.

배포

패키지 그대로 apt로 나눠 줍니다

공개된 ROS 2 패키지는 빌드되어 ros-jazzy-turtlesim처럼 ros-jazzy-가 붙은 apt 패키지가 됩니다. 이름의 밑줄(_)은 붙임표(-)로 바뀝니다. 그래서 남이 만든 패키지를 apt 한 줄로 받아 씁니다.

2강에서 깐 ros-jazzy-desktop은 많은 패키지를 한데 묶은 것입니다.

재사용

남의 패키지를 가져다 씁니다

내 패키지는 바퀴를 새로 만들지 않고 다른 패키지에 기댑니다. 파이썬 노드는 rclpy를, 메시지는 std_msgs나 geometry_msgs를 가져다 씁니다. 이런 관계를 의존성(dependency)이라고 합니다.

놓는 규칙

패키지 안에 패키지는 안 됩니다

한 워크스페이스에는 패키지를 얼마든지 넣을 수 있고, 파이썬 패키지와 C++ 패키지를 섞어도 됩니다. 다만 패키지는 src 아래에 나란히 두어야 합니다. 패키지 안에 다른 패키지를 넣을 수는 없습니다.

폴더 이름은 예시입니다.

다음 편

패키지 뼈대는 명령 한 줄이면 생깁니다

3편파이썬 패키지 만들기 5강 목록