ROS2 환경 구성

저작권: 쿼드(QUAD) 드론연구소 https://www.youtube.com/@quad-robotics

ROS2는 셸 환경을 사용하여 작업 공간을 결합한다는 개념에 의존합니다. "workspace"은 ROS2로 개발 중인 시스템의 위치를 ​​나타내는 ROS 용어입니다. 핵심 ROS2 작업 공간을 언더레이라고 합니다. 후속 로컬 작업 공간을 오버레이라고 합니다. ROS2로 개발할 때 일반적으로 여러 작업 공간이 동시에 활성화됩니다.

작업 공간을 결합하면 다양한 버전의 ROS2 또는 다양한 패키지 세트에 대한 개발이 더 쉬워집니다. 또한 동일한 컴퓨터에 여러 ROS2 배포판(또는 "distros", 예: Dashing 및 Eloquent)을 설치하고 배포판 간에 전환할 수 있습니다.

1. ROS2 설치

소스 설정

sudo apt install software-properties-common
sudo add-apt-repository universe

sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

ROS2 패키지 설치

sudo apt update
sudo apt upgrade

sudo apt install ros-humble-desktop
sudo apt install ros-dev-tools
sudo apt install python3-colcon-common-extensions

2. 환경 설정

가. 설정파일 소싱

# ROS 2 명령에 액세스하려면 여는 모든 새 셸에서 이 명령을 실행해야 합니다.
# ~/.bashrc 파일에 넣어 두면 쉘이 기동될때 자동 실행 되므로 .bashrc 파일에 넣어 놓는 것을 추천 합니다.
source /opt/ros/humble/setup.bash

나. 쉘 시작 스크립트에 소싱 추가

새 셸을 열 때마다 설정 파일을 소싱하지 않으려면(작업 1 건너뛰기) 셸 시작 스크립트에 명령을 추가할 수 있습니다.

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

다. 환경변수 확인

ROS 2 설정 파일을 소싱하면 ROS 2 작동에 필요한 여러 환경 변수가 설정됩니다. ROS 2 패키지를 찾거나 사용하는 데 문제가 있는 경우 다음 명령을 사용하여 환경이 올바르게 설정되었는지 확인하십시오.

printenv | grep -i ROS

ROS_DISTRO및 와 같은 변수가 ROS_VERSION설정되어 있는지 확인하십시오. 예를 들어 Foxy를 사용하는 경우 다음과 같이 표시됩니다.

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=humble

ROS_DOMAIN_ID변수

ROS 2가 통신에 사용하는 기본 미들웨어는 DDS입니다. DDS에서 서로 다른 논리 네트워크가 물리적 네트워크를 공유하도록 하는 기본 메커니즘을 도메인 ID라고 합니다. 동일한 도메인에 있는 ROS 2 노드는 서로 자유롭게 메시지를 검색하고 보낼 수 있지만 다른 도메인에 있는 ROS 2 노드는 할 수 없습니다. 모든 ROS 2 노드는 기본적으로 도메인 ID 0을 사용합니다. 동일한 네트워크에서 ROS 2를 실행하는 서로 다른 컴퓨터 그룹 간의 간섭을 방지하려면 각 그룹에 대해 서로 다른 도메인 ID를 설정해야 합니다.

ROS 2 노드 그룹의 고유한 정수를 결정했으면 다음 명령을 사용하여 환경 변수를 설정할 수 있습니다.

export ROS_DOMAIN_ID=<your_domain_id>

### 쉘 실행시 자동 시작 설정
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc

ROS_LOCALHOST_ONLY변수

기본적으로 ROS 2 통신은 localhost로 제한되지 않습니다. ROS_LOCALHOST_ONLY환경 변수를 사용하면 ROS 2 통신을 localhost로만 제한할 수 있습니다. 이는 ROS 2 시스템과 해당 항목, 서비스 및 작업이 로컬 네트워크의 다른 컴퓨터에 표시되지 않음을 의미합니다. 를 사용하는 ROS_LOCALHOST_ONLY것은 여러 로봇이 이상한 행동을 유발하는 동일한 주제에 대해 게시할 수 있는 교실과 같은 특정 설정에서 유용합니다. 다음 명령을 사용하여 환경 변수를 설정할 수 있습니다.

export ROS_LOCALHOST_ONLY=1

### 쉘 실행시 자동 시작 설정
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc

ROS2 명령alias 설정

### Alias
alias sb="source ~/.bashrc; echo \"bashrc is reloaded\""

### ROS Evn.
alias humble="source /opt/ros/humble/setup.bash; echo \"ROS2 Humble is activated\""
alias cb="colcon build --symlink-install"
alias cb+="colcon build --symlink-install --event-handlers console_direct+"
alias cbp="colcon build --packages-up-to -symlink-install --event-handlers console_direct+"

Last updated

Was this helpful?