티스토리 친구하기

본문 바로가기

Robotics/ROS2

ROS2 Creating a workspace [workspace 만들기]

728x90

ROS 2에서는 패키지를 구성하는 디렉토리들을 워크스페이스(workspace)라는 개념으로 구성합니다.

워크스페이스는 ROS 2 패키지를 포함하고 있는 디렉토리입니다. ROS 2를 사용하기 전에는 먼저 해당 터미널에서 ROS 2 워크스페이스를 사용할 수 있도록 소스 파일을 설정해주어야 합니다.

또한, 추가적인 패키지를 설치하거나 수정할 필요 없이 새로운 패키지를 추가할 수 있는 오버레이(overlay) 워크스페이스를 만들 수 있습니다. 오버레이 워크스페이스는 기존 ROS 2 워크스페이스를 확장하는 데 사용되며, 새로운 패키지와 기능을 추가할 수 있습니다.

 

참고: overlay and underlay

 

오버레이 워크스페이스를 사용할 경우, 오버레이 워크스페이스의 패키지들이 기존 ROS 2 워크스페이스의 패키지들과 충돌하지 않도록, 오버레이 워크스페이스의 설정 파일을 먼저 소스 파일로 설정해주어야 합니다. 이렇게 설정을 하면 오버레이 워크스페이스의 패키지들이 기존 패키지들보다 우선적으로 사용됩니다.

또한, 여러 개의 워크스페이스를 사용하여 하나의 시스템을 구성할 수 있습니다. 이 경우, 하위 워크스페이스의 패키지들은 상위 워크스페이스의 패키지들에 의존하므로, 의존성을 잘 설정해야 합니다. 이를 통해 복잡한 시스템을 구성할 수 있습니다.

1. Source ROS2 environment

ROS2 foxy 버전을 설치하고 아래의 명령어를 통해 ROS2의 환경을 설정합니다.

 

source /opt/ros/foxy/setup.bash

 

위의 명령어를 실행하면, ROS 2가 설치된 /opt/ros/foxy 경로에서 setup.bash 파일을 실행하여, ROS 2를 사용하기 위한 환경 변수들을 설정합니다.

환경 변수를 설정하는 이유는, ROS 2가 동작하기 위해서는 일정한 환경 변수들이 미리 설정되어 있어야 하기 때문입니다. 이러한 환경 변수들은 ROS 2 실행 파일이나 라이브러리를 찾는 경로를 지정하거나, ROS 네트워크 설정, ROS 빌드 설정 등을 담당합니다.

따라서 source /opt/ros/foxy/setup.bash 명령어를 실행하면, ROS 2의 환경을 설정하고 ROS 2 명령어들을 사용할 수 있게 됩니다.

2. Create a new directory

앞으로 개발자가 만들 ROS2 패키지들을 저장하는 디렉토리를 생성합니다. 그리고 생성한 src 디렉토리로 이동합니다.

 

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

3. Clone a sample repo

아래의 명령어로 ROS 2의 강좌 및 튜토리얼 등을 담고 있는 공식 깃허브 저장소인 ros_tutorials를 로컬 컴퓨터로 복제합니다.

 

git clone https://github.com/ros/ros_tutorials.git -b foxy-devel

 

'git clone'은 git으로 버전 관리를 하는 소프트웨어 프로젝트를 내려받기 위한 명령어이고,  https://github.com/ros/ros_tutorials.git은 복제하고자 하는 원격 저장소의 URL입니다. -b foxy-devel 옵션은 foxy-devel 브랜치에서 작업한 최신 버전을 복제하도록 지정하는 것입니다.

따라서 위의 명령어를 실행하면, 로컬 컴퓨터에 ros_tutorials 저장소가 복제됩니다. 이 저장소를 사용하면 ROS 2 프로그래밍에 필요한 기초적인 내용부터 심화적인 내용까지 다양한 예제를 학습할 수 있습니다.

4. Resolve dependencies

'rosdep'는 ROS 2 패키지를 빌드하기 위해 필요한 모든 패키지와 라이브러리를 설치하는 작업을 자동화하는 패키지 관리 도구입니다. 'rosdep'를 이용하면 패키지를 빌드하기 전에 필요한 의존성 패키지를 미리 설치하고 패키지 빌드에 필요한 환경 변수를 설정할 수 있습니다. 

 

# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd ..
rosdep install -i --from-path src --rosdistro foxy -y

 

이미 모든 의존성 패키지들이 설치되어 있다면, 아래의 명령어를 볼 수 있습니다.

 

#All required rosdeps installed successfully

5. Build the workspace with colcon

의존성을 해결한 후, colcon을 사용해서 workspace를 빌드할 수 있습니다.

아래와 같이 workspace로 이동 후, colcon build 명령어 실행합니다. 

 

cd ~/ros2_ws
colcon build

 

빌드가 성공적으로 완료되면, 아래와 같은 메시지가 return 됩니다.

 

Starting >>> turtlesim
Finished <<< turtlesim [5.49s]

Summary: 1 package finished [5.58s]

 

그리고 ~/ros2_ws에는 아래와 같은 디렉토리들이 생성되어 있습니다.

 

build  install  log  src

6. Source the overlay

ROS 2에서 새로운 workspace를 만들거나 패키지를 추가한 후, 새로운 패키지를 사용할 수 있도록 환경 변수를 설정해야 합니다. 

꼬일수가 있기 때문에 새로운 터미널을 열어서 sourcing 하는게 좋습니다.

새로운 터미널을 열고 underlay를 먼저 sourcing하고, ros2_ws로 이동한 후 overlay를 sourcing합니다.

 

source /opt/ros/foxy/setup.bash
cd ~/ros2_ws
source install/local_setup.bash

 

7. Modify the overlay

~/ros2_ws/src/ros_tutorials/turtlesim/src 로 이동해서 turtle_frame.cpp 파일을 엽니다. 그리고 setWindowTitle("TurtleSim");에서 "TurtleSim"을 "MyTurtleSim"으로 바꾸고 저장합니다.

터미널에서 "colcon build" 로 빌드하고, 아래의 명령어로 turtlesim을 실행합니다.

 

ros2 run turtlesim turtlesim_node

 

타이틀에서 수정한 제목인 MyTurtleSim을 볼 수 있습니다.

반응형