[ROS2] 환경 구성하기

Youngshin Park·2024년 7월 2일
1

로봇

목록 보기
4/9
post-thumbnail

이전 게시물에서 ROS2 Humble을 설치하였다.
무작정 시작하기 전에 ROS2 환경을 준비해보려 한다.

❗️ROS2가 모두 잘 설치되어 있어야 합니다❗️

⚠️ 해당 게시물의 기준은 'Linux'입니다.

작업

1. 설치 파일 소스

ROS 2 명령에 액세스하려면 새 셸을 열 때마다 아래의 명령어를 실행해야 한다.

# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/humble/setup.bash

2. 셸 시작 스크립트에 소싱 추가

새 셸을 열 때마다 설정 파일을 소싱할 필요가 없다면(위의 1 건너뛰기) 셸 시작 스크립트에 다음 명령을 추가하면 된다!

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

3. 환경 변수 확인

ROS2 설치 파일을 소싱하면 ROS2를 작동하는 데 필요한 여러 환경 변수가 설정된다. ROS2 패키지를 찾거나 사용하는 데 문제가 있는 경우 아래의 명령어를 사용하여 환경이 제대로 설정되었는지 확인해야 한다!

printenv | grep -i ROS

위 사진과 같이

ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=humble

이 부분이 잘 설정되어 있는지 확인하면 된다.

3.1 ROS_DOMAIN_ID 변수
음.. 우선 ROS_DOMAIN_ID란?

  • 네트워크 상에서 ROS 노드들이 서로 찾고 통신하는 데 사용되는 도메인 ID를 말하는 것
  • ROS 네트워크 상의 통신을 분리하고 관리하는 데 사용

솔직히 처음 볼 때 크게 이해가 잘 되지 않았다.. 지금 그런 상태라는 것 ㅎㅎ
무튼 뭔가 유니크한 값이라는 느낌이 들기도 해서 설정을 해보려고 한다!

https://docs.ros.org/en/humble/Concepts/Intermediate/About-Domain-ID.html
요기서 더 자세히 알아볼 수 있는데.. 혼자서 공부하는 건 한계다.

그래서 지피티한테 물어봤다.
일단 칭찬을 해줘서 고마웠다.

GPT: ROS_DOMAIN_ID는 ROS2에서 네트워크를 통해 통신하는 노드들이 서로 충돌하지 않도록 분리하는 데 사용되는 변수입니다. ROS2는 DDS(데이터 배포 서비스)라는 미들웨어를 사용하여 노드 간의 통신을 관리하는데, ROS_DOMAIN_ID는 이러한 DDS 네트워크를 구분하는 ID 역할을 합니다. 기본적으로, 같은 ROS_DOMAIN_ID를 가진 노드들만 서로 통신할 수 있습니다.

대충 감이 왔다.

공식문서를 참고했을 때 기본값이 모두 '0'으로 설정된다고 한다. 그래서 일단 나는 새로 설정하지 않고 그대로 0으로 가려고 한다.

음.. 근데 불안해서 해당 환경변수를 확인하는 명령어를 입력해봤는데

echo $ROS_DOMAIN_ID

아무것도 안 뜨고 이렇게 떠서 ..

불안해서 그냥 공식문서에서 하란 대로 명령어를 치고

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

<your_domain_id>에는 '1'을 넣으려 한다.
잘 되었다.
빈값이 뜨는 게 0을 의미하는 건진 사실 안 찾아봤다.
알면 댓글 부탁해요..
이렇게 ROS_DOMAIN_ID 설정 완!

3.2 ROS_LOCALHOST_ONLY변수
요건 또 몰까!

  • 기본적으로 ROS 2 통신은 로컬 호스트로 제한 X
  • ROS_LOCALHOST_ONLY환경 변수를 사용하면 ROS 2 통신을 로컬 호스트로만 제한할 수 있음 = ROS 2 시스템과 해당 토픽, 서비스 및 작업은 로컬 네트워크의 다른 컴퓨터에서 볼 수 X
export ROS_LOCALHOST_ONLY=1
echo $ROS_LOCALHOST_ONLY

이렇게 설정하고 확인해볼 수 있다.


그리고 둘 다 이렇게 영구 설정도 일단 해둔 상태이다!


이번 게시물에서는 ROS2 설정 파일을 소싱하는 방법을 배웠다. 다음엔! turtlesim 도구를 사용하여 ROS2의 내부 구조를 알아보도록 하겠다 !!


개발팅 🍀

🔗 참고자료
https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html

0개의 댓글