원격 노드 통신

정승균·2020년 12월 30일
0

ROS

목록 보기
7/14
post-thumbnail

1. 포트포워딩


  • VMware를 쓰는 경우 네트워크 설정을 Bridged로 변경해야 함

  • 공유기마다 설정방법이 다르나 비슷비슷함

  • 1204~65000 포트를 자신의 사설ip 앞으로 forwarding

  • 외부에서 공유기를 통해 1024~65000 포트로 들어온 요청을 설정한 머신으로 리다이렉션 시킴


2. /etc/hosts 에 통신할 머신 주소 추가


  • sudo 권한으로 수정할 수 있음

  • 핸드폰에 번호와 이름을 추가하는 것과 비슷한 원리

  • 상대방_공인_ip : 상대방이 네이버에 "내 ip 검색"으로 찾은 값

  • 상대방_hostname : 상대방이 $ uname -n 으로 출력된 값

127.0.0.1   localhost
127.0.1.1   jsg-ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# 이 부분 추가
# 상대방_공인_ip  상대방_hostname
121.168.XXX.XXX user-virtual-machine

3. .bashrc 에 ROS_MASTER_URI / ROS_HOSTNAME 추가


  • ROS_MASTER_URI : 마스터의 주소를 지정함
  • ROS_HOSTNAME : 내 노드의 주소를 지정함
  • ROS_HOSTNAME의 경우 기본적으로 자동으로 설정이 되지만 다르게 설정되는 경우도 있음 (이것 때문에 개고생)

Master(Roscore를 돌리는 머신)

export ROS_MASTER_URI=http://자신의_hostname:11311
export ROS_HOSTNAME=자신의_hostname

나머지 머신

export ROS_MASTER_URI=http://master의_hostname:11311
export ROS_HOSTNAME=자신의_hostname

4. 원격으로 turtlesim 조작


  1. 위에 설정을 다 끝내고 마스터쪽에서 roscore 실행

  2. 한쪽이 $ rosrun turtlesim turtlesim_node 를 실행

  3. 다른 한쪽이 $ rosrun turtlesim turtle_teleop_key 실행

  4. 원격으로 거북이 조종이 가능함

0개의 댓글