[ROS2 튜토리얼] 1. 환경 구성

PSLeon ㅣ 2024. 10. 1. 17:08

반응형

What is ROS?

  • ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.

 

ROS란 무엇일까? ROS Wiki에서는 위와 같이 ROS에 대해서 설명한다. 이를 해석하면 아래와 같다.

ROS는 로봇 개발을 위한 오픈 소스 메타 운영체제이다. 이는 운영체제로부터 예측할 수 있는 서비스와 하드웨어 추상화, 저수준의 디바이스 제어, 일반적으로 사용되는 기능 구현, 프로세스 간의 메시지 전달 그리고 패키지 관리를 제공한다. 또한 여러 컴퓨터들로부터 코드를 얻고, 구축하고, 쓰고, 실행할 수 있는 툴과 라이브러리를 제공한다.

 

공학 관련 수업을 이수한 경험이 있으면 위 설명이 직관적으로 와닿는다. 그럼에도 한가지 의문점은 메타 운영체제(meta-operating system)이다. 메타 운영체제란 무엇일까?

 

메타 운영체제: 실제 하드웨어를 직접 제어하거나 관리하지는 않지만 그 위에서 동작하는 다양한 시스템이나 애플리케이션에 운영체제 수준의 서비스를 제공하는 소프트웨어 플랫폼

 

ROS 2 Foxy 설치

이번에 기회가 되어 ROS 2(Robot Operating System 2)를 스터디하게 되었는데, 공부하면서 정리도 할 겸 Chapter별로 기록해서 차후에 ROS를 공부하게 될 분들에게 조금이나마 도움이 되고자 한다.

필자의 개발 환경은 Ubuntu 20.04이고 해당 환경에서는 ROS2 - Foxy가 가장 호환이 잘되기 때문에 이를 기준으로 진행한다.

 

ROS 2 Foxy 설치를 위해서는 아래 사이트를 참고하자.

최종적으로 설치가 끝나고 ros2 run demo_nodes_cpp talker를 타이핑 했을 때 아래와 같이 출력된다면 정상 설치가 완료된 것이다.

 

[ROS2 튜토리얼] 1. 환경 구성

지금부터 본격적으로 공식 문서 중 Beginner part의 첫 번째인 'Beginner: CLI tools, 1. Configuring environment' 부터 진행해보자. 본 스터디를 위해 활용한 공식 문서 링크는 다음과 같다.

https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html

 

본 문서를 보면 Background, Prerequisites, Tasks, Summary 순으로 정리되어 있고, 이 순서를 참고해서 필요없는 부분을 생략하고 중요한 부분 위주로 정리하고자 한다.

 

1. Background

Ros 2는 Shell 환경을 사용한 워크스페이스(workspace)를 결합하는 개념에 의존한다고 되어있다. 이렇게 함으로써 Foxy 뿐만 아니라 다양한 버전과의 호환도 가능해지고 다양한 패키지 세트에 대해 개발도 더 쉬워진다고 한다.

위 내용을 읽으면 워크스페이스를 결합한다는 말이 잘 와닿지 않는다. 그래서 풀어서 설명하면 워크스페이스란 ROS 2에서 개발하는 패키지들이 저장되는 디렉토리이고, 이를 결합한다는 것은 이러한 여러 개의 워크스페이스를 동시에 사용하고, 각 워크스페이스에 있는 패키지들이 서로 상호작용할 수 있도록 설정하는 것을 뜻한다.

이제 각각 용어를 간단히 정리하고 넘어가자.

 

  • 워크스페이스(workspace): ROS 2에서 개발하는 패키지들이 저장되는 하나의 독립적인 디렉토리, 언더레이와 오버레이의 역할 수행 가능
  • 언더레이(underlay): ROS 2의 기본 작업공간으로, ROS 2를 설치하면 제공되는 핵심 패키지들이 포함되어 있음
  • 오버레이(overlay): 사용자가 새로 만들거나 수정하는 작업공간으로, 언더레이 위에 쌓아 올리는 추가적인 작업공간

→ ROS 2 개발을 시작하면 언더레이 작업공간을 먼저 활성화하고, 그 위에 오버레이 작업공간을 활성화한다.

 

2. Tasks

먼저, ROS 2에 접근하기 위해서는 새로운 셀을 열 때마다 아래 명령어를 입력해야 한다.

  • source /opt/ros/foxy/setup.bash

만약 이 과정이 귀찮다면 shell의 시작 스크립트에 바로 추가하는 방법도 있고, 이는 아래와 같다.

  • echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc

 

3. Summary

  • The ROS 2 development environment needs to be correctly configured before use. This can be done in two ways: either sourcing the setup files in every new shell you open, or adding the source command to your startup script.
  • If you ever face any problems locating or using packages with ROS 2, the first thing you should do is check your environment variables and ensure they are set to the version and distro you intended.