[ROS] 원격 노드 사이의 통신 (Communication method between remote nodes)

Sinaenjuni·2023년 3월 30일
0

ROS

목록 보기
6/12

통신 프로토콜

  • 노드와 마스터 노드 간의 통신은 XMLRPC 프로토콜을 사용한다.
  • 노드와 노드 간의 통신은 TCPROS 프로토콜을 사용한다.
  • 동일한 장치의 노드 간 통신에도 TCP/IP 기반의 인터넷 기반의 통신이 이루어진다(오버헤드 발생).

원격 통신을 위한 환경 설정

1. 환경 변수 설정

$ sudo gedit ~/.bashrc
ROS_MASTER_URI = [roscore가 구동중인 장치의 IP 주소]
# ROS_HOSTNAME = [현재 장치의 IP주소] (주석)
$ sourch .bashrc

2. 공유기 설정 (포트포워딩)

  • 공유기의 포트포워드 옵션에서 1024~65000 범위에 대해 포워딩을 설정한다.
    or
  • 원격 장치의 IP로 DMZ(공유기의 모든 포트를 특정 사설 IP에 포트포워딩)를 설정한다.

3. /etc/hosts 수정

  • 아래 내용을 추가한다.
# PC 설정
192.168.123.123(PC의 사설 IP)	local 
123.123.123.123(자동차의 공인 IP)		tegra-uabuntu (계정명)
# 자동차 설정
192.168.123.123(자동차의 사설 IP)	xycar 
123.123.123.123(PC의 공인 IP)	DESKTOP-XCQCJ (계정명)

4. 테스트

  • 아래 두 명령어를 이용하여 통신 상태를 확인한다.
$ rostopic pub /chatter std_msgs/String hello
$ rostopic echo /cahtter

0개의 댓글