ROS2 #8 Setup tips

남생이·2024년 10월 21일

ROS

목록 보기
8/28

~/.bashrc 파일 설정 사항

1. Setup.bash vs local_setup.bash

2. Local 네트워크 설정

// ~/.bashrc 파일에 수정하는 코드
// export ROS_LOCALHOST_ONLY=1만 마지막에 작성하여 저장해도 됨
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc
source ~/.bashrc
echo $ROS_LOCALHOST_ONLY // 설정확인 명령어, 출력이 1이면 설정 완료
  • ROS2는 DDS 기반의 RMW로 구현되어 있는데 멀티캐스트를 통해 도달 가능한 모든 노드를 검색하도록 되어있다. 따라서 다른 개발 환경 또는 사용자와 연결되는 경우를 방지하기 위해 사용

  • ROS2 노드를 LOCAL HOST에서만 통신되도록 설정

  • 외부 네트워크와의 연결을 차단 가능

  • Humble의 다음 버전인 ROS2 Iron부터는 사용되지 않음 --> ROS_AUTOMATIC_DISCOVERY_RANGE로 변경

3. rosdep

  • 의존성 관리 툴인 rosdep 명령어를 사용하면 손쉽게 패키지의 의존성 문제를 해결
  • rosdep은 package.xml과 같은 패키지 환경 파일의 <depend>옵션과 같은 의존성 정보를 확인하여 설치
$ cd <workspace>
$ sudo rosdep init # rosdep 데이터베이스 초기화
$ rosdep update # rosdep 데이터베이스 업데이트
$ rosdep install --from-paths src -y--ignore-src # src에서 발견된 패키지의 의존성 설치, 패키지를 무시하고 의존성만 설치

4. DOMAIN ID & Namespace

  • 동일한 ROS_DOMAIN_ID를 설정하여 토픽 정보를 공유 가능
  • 독립적인 작업이 필요한 경우, 서로 다른 ROS_DOMIAN_ID를 설정하여 정보 공유를 방지 가능

4.1 DOMAIN ID

  • DDS 도메인
    - DDS 도메인을 식별하여 네트워크 상의 노드들이 서로를 찾고 통신할 수 있도록 함
  • 네트워크 분리
    - 서로 다른 ID를 가진 노드들간의 통신을 차단하여 같은 네트워크 환경에서 독립적으로 작업이 가능하게 함
  • Cofiguration의 유연성
    - 해당 설정을 통해 동일한 물리적 네트워크에서 여러 ROS2 시스템이 공존 가능
  • Value range
    - ROS_DOMAIN_ID는 0~232까지의 값을 가질 수 있다
  • 환경변수 설정
    - 일반적으로 스크립트나 셀환경에서 설정
    • os.environ["ROS_DOMAIN_ID"]="10" # python
    • $ export ROS_DOMAIN_ID =10 # shell

4.2 Namespace

  • ROS2의 노드, 토픽, 서비스, 액션, 파라미터는 각각 고유의 이름을 갖음
  • 고유 이름에 Namespace를 붙여 독립적인 네트워크를 그룹화 가능
  • 조직화/충돌방지/구성 유연화
$ ros2 run <pkg> <node>
$ ros2 run <pkg> <node> -ros-args -r __ns:=/<namespace>
profile
공부하는 거북이

0개의 댓글