ROS1에서는 하나의 작업공간(workspace)에서 모든 작업이 이루어졌지만 ROS2에서는 복수의 작업공간을 통해 패키지 관리가 가능합니다. 이번 글에서는 사용자 작업공간을 만들어보겠습니다.
우선 작업공간으로 사용할 폴더를 만듭니다. 홈 디렉토리에 dev_ws라는 폴더를 작업공간으로 사용하겠습니다.
$ mkdir -p ~/dev_ws/src |
dev_ws 폴더 아래에 src 폴더는 사용자 패키지가 저장될 폴더입니다. src 폴더로 이동합시다.
github를 통해 튜토리얼 패키지를 복제합시다.
작업공간 루트 폴더(dev_ws)로 돌아오세요.
튜토리얼 패키지의 의존성 패키지를 설치해야합니다. rosdep라는 툴을 통해 의존성 패키지 관리가 가능합니다. 다음 명령어를 통해 rosdep를 설치합시다.
$ sudo apt install python3-rosdep |
다음 명령어를 통해 초기화를 해주세요.
다음 명령어를 통해 업데이트를 합시다.
OS를 확인할 수 없다는 에러가 떴습니다. 하모니카OS를 사용하고 있기 때문입니다.
하모니카 4.0은 우분투 20.04를 기반으로 합니다. 다음 명령어를 통해 OS를 오버라이드하고 다시 업데이트 해주세요.
$ export ROS_OS_OVERRIDE=ubuntu:20.04:focal |
rosdep를 통해 사용자 패키지의 의존성 패키지를 설치합시다.
$ rosdep install -i --from-path src --rosdistro foxy -y |
이제 작업공간을 빌드하겠습니다.
dev_ws 폴더에 들어가보면 install 폴더가 생겼습니다. 이 폴더에는 사용자 작업공간에 대한 환경설정 파일이 들어있습니다.
ROS2를 설치하고서 source 명령어를 통해 환경설정을 해주었고, 터미널을 실행시킬때마다 자동으로 환경설정하도록 .bashrc 파일에 source를 추가했었습니다. source /opt/ros/foxy/setup.bash |
이때 설정한 작업공간이 언더레이(underlay), 새로 추가한 작업공간 dev_ws가 오버레이(overlay)가 됩니다. 언더레이는 이미 설정되었으므로 오버레이를 환경 설정해주세요.
$ . install/local_setup.bash |
. 명령어는 source 명령어와 동일합니다. 오버레이를 환경설정하여 언더레이에는 영향을 주지 않으면서 오버레이의 패키지를 실행할 수 있습니다. 패키지 이름이 동일하다면 오버레이 패키지가 우선합니다.
turtlesim 패키지를 실행해봅시다.
$ ros2 run turtlesim turtlesim_node |
실행된 turtlesim_node 노드는 오버레이 turtlesim 패키지의 노드입니다. 오버레이 turtlesim 패키지임을 확인하기 위해 타이틀을 수정해보겠습니다.
~/dev_ws/src/ros_tutorials/turtlesim/src/turtle_frame.cpp 파일의 52행에서 타이틀을 다음과 같이 수정해주세요.
저장하고 다시 빌드합시다.
turtlesim_node 노드를 실행해보세요. 타이틀이 MyTurtleSim으로 변경된 것을 확인함으로써 오버레이의 turtlesim 패키지라는 것을 알 수 있습니다.
$ ros2 run turtlesim turtlesim_node |
터미널을 새로 열고 turtlesim_node를 실행하면 언더레이의 turtlesim 패키지가 실행됩니다. |