이전 게시물에서 ROS2 Humble을 설치하였다.
무작정 시작하기 전에 ROS2 환경을 준비해보려 한다.
⚠️ 해당 게시물의 기준은 'Linux'입니다.
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
새 셸을 열 때마다 설정 파일을 소싱할 필요가 없다면(위의 1 건너뛰기) 셸 시작 스크립트에 다음 명령을 추가하면 된다!
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
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