04-13 01:59
Notice
Recent Posts
Recent Comments
관리 메뉴

BAN2ARU

[ROS2/Humble] ROS2 환경 설정 본문

Study/ROS2

[ROS2/Humble] ROS2 환경 설정

밴나루 2024. 9. 29. 17:28
반응형

참고 사이트 : https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html

 

이전 글 목록

 

목표 : ROS2 환경 준비하는 방법 배우기

 

Background

ROS2에서 작업 공간(workspace)은 개발 환경을 관리하는 중요한 요소 중 하나이다. Workspace는 ROS2에서 코드를 개발하고 실행하는 특정 디렉토리를 의미한다. ROS2의 핵심 작업 공간은 underlay라고 불리며, 이후에 추가로 설정되는 로컬 작업 공간들은 overlay라고 한다.

  • Underlay : 기본이 되는 작업공간으로, 보통 ROS2 시스템의 핵심 라이브러리와 도구들이 설치된 위치를 의미함. 예를 들어, ROS2 자체의 패키지나 종속성들이 이 공간에 위치함. 이는 ROS2의 기반을 제공하는 공간이라 볼 수 있음
  • Overlay : 개발자가 추가로 설정하는 로컬 작업 공간으로, 사용자가 작성한 코드나 새로 설치한 패키지 등이 들어감. 해당 작업 공간을 통해 ROS2의 기존 기능을 확장하거나 새로운 기능을 추가할 수 있음

ROS2에서는 여러 작업 공간을 동시에 사용할 수 있는데, 이 기능은 개발자가 서로 다른 버전의 ROS2, 혹은 서로 다른 패키지 세트를 함께 사용하고 관리하는 데 매우 유용하다. 예를 들어, ROS2의 Dashing 버전과 Eloquent 버전을 같은 컴퓨터에서 설치하고, 필요에 따라 둘 중 하나를 선택해서 사용할 수 있다. 또한, 특정 프로젝트에서는 ROS2의 공식 패키지를 사용하면서 동시에 자신만의 커스텀 패키지를 추가로 사용할 수 있다.

ROS2에서 작업 공간을 제대로 사용하려면, 터미널에 작업 공간의 설정 파일을 소싱(sourcing)해야한다. Sourcing이란, ROS2가 설치된 디렉토리 내의 설정 파일을 현재 터미널 세션에 적용하는 것을 의미한다. 설정 파일을 소싱하지 않으면 ROS2 관련 명령어나 패키지들을 인식할 수 없기 때문에, ROS2를 정상적으로 사용할 수 없다. 이 작업을 매번 새로 열리는 터미널마다 해야 하는데, 이를 자동화하려면 쉘 시작 스크립트(예: .bashrc)에 소스 명령을 추가하여 새로운 터미널이 열릴 때마다 자동으로 ROS2 환경이 설정되도록 할 수 있다.

Prerequisites

해당 튜토리얼을 실행하기 전에 ROS2 설치 페이지를 참조하여 설치를 진행해주어야 한다.

Tasks

1 Source the setup file

새로운 터미널을 열 때 마다 ROS2 명령어에 접근할 수 있도록 설정 파일을 sourcing해야 한다. 이 작업을 수행하지 않으면 ROS2의 명령어(ros2 run, ros2 topic 등)를 사용할 수 없다.

source /opt/ros/humble/setup.bash

2 Add sourcing to your cell startup script

매번 새로운 터미널을 열 때마다 설정 파일을 sourcing하는 것이 번거롭다면, 쉘 시작 스크립트에 source 명령을 추가하여 자동으로 설정되도록 할 수 있다.

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

3 Check environment variables

ROS2가 제대로 작동하는지 확인하려면, ROS2 설정 파일을 sourcing한 후에 설정된 환경 변수를 확인하는 것이 중요하다. 설정 파일을 sourcing하면 여러 개의 ROS 관련 환경 변수가 설정 된다. 환경 변수를 확인하려면 다음 명령어를 실행하자.

printenv | grep -i ROS

이 명령어를 통해 ROS_VERSION, ROS_PYTHON_VERSION, ROS_DISTRO를 확인할 수 있다.

3.1. ROS_DOMAIN_ID 변수

ROS2는 domain ID를 통해 동일 네트워크 내의 여러 node 그룹을 구분할 수 있다. 이 값은 고유한 정수 값으로 설정되며, 이를 통해 같은 네트워크에서 여러 개의 ROS 시스템이 충돌 없이 운영될 수 있다.

도메인 ID를 설정하려면 다음 명령어를 실행하자.

export ROS_DOMAIN_ID=<your_domain_id>

그리고 이 설정을 영구적으로 유지하려면 다음과 같이 쉘 시작 스크립트에 추가하여야 한다.

echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc

3.2. ROS_LOCALHOST_ONLY 변수

기본적으로 ROS2는 로컬 네트워크 전체에서 통신이 가능하다. 하지만 특정 상황에서는 ROS2 통신을 localhost로만 제한할 수 있다. 이를 통해 여러 로봇이나 컴퓨터가 같은 네트워크에서 혼란을 일으키지 않도록 방지할 수 있다.

ROS2 통신을 localhost로 제한하려면 다음 명령어를 실행하자.

export ROS_LOCALHOST_ONLY=1

이 설정을 영구적으로 유지하려면 쉘 시작 스크립트에 다음을 추가하여야 한다.

echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc

Summary

ROS2 개발 환경을 사용하기 전에는 올바른 설정이 필요하다. 이를 위해 매번 새로운 터미널을 열 때마다 설정파일을 sourcing하거나, 시작 스크립트에 source 명령어를 추가하여 자동으로 설정되도록 할 수 있다.

package 문제를 겪을 경우, 가장 먼저 환경변수가 올바르게 설정되었는지 확인하고, 원하는 ROS2 버전과 배포판에 맞게 설정되었는지 확인하는 것이 중요하다.

728x90
Comments