티스토리 뷰

0. 개요

공인 IP는 전 세계에서 하나뿐인 IP주소.

사설 IP는 공유기 안의 주소.

사설IP를 가지고 있는 여러 장치를 "포트 포워딩"을 이용하여 연결한다.

 

teacher에 대해서 1024~65000 범위 내의 포트로 포트 포워딩.

 

1. 공유기 포트 포워드 설정

인터넷 창을 켜서 http://192.168.0.1 로 접속한다. 로그인, 관리도구로 들어간다.

비밀번호를 모르면 나와있는 디폴트값으로 먼저 시도, 안되면 아빠한테 물어봐야..

고급 설정 - NAT/라우터 관리 - 포트포워드 설정 탭에 들어간다.

아래와 같이 규칙을 작성하고 적용을 누르면

내부 IP주소가 잘못되었다고 한다.

ifconfig를 실행했을 때 나오는 주소였는데, 어떻게 해야할지 모르겠어서

현재 접속된 IP주소 박스를 체크하였다.

적용했더니 아래와 같이 적용되었다.

나갈 때 꼭 저장을 눌러주어야 한다.

참고 자료: m.blog.naver.com/PostView.nhn?blogId=lxxjxxx&logNo=221172942614&proxyReferer=http:%2F%2F203.233.19.54%2F

 

2. /etc/hosts 파일 수정

/etc/hosts 파일을 열어서 아래를 추가한다.

192.168.0.12 는 내 PC의 IP주소임. 각자 자신의 컴퓨터의 IP주소를 입력하면 된다.

106.244.165.6 은 원격 공유기의 IP주소이다.

# remote network: Portable ISP routers
192.168.0.12	local
106.244.165.6	sevencore-E8410TM

 

teacher측 (=원격 서버)에서도 아래와 같이 /etc/hosts 파일을 열어 다음과 같이 수정해야 한다.

공유기_주소    컴퓨터_이름

 

3. ROS 환경변수 설정

~/.bashrc 파일을 열어서 아래와 같이 수정한다.

export ROS_MASTER_URI=http://106.244.165.6:11311
#export ROS_HOSTNAME=localhost

ROS_MASTER_URI : 공인 IP(=즉 공유기)의 IP주소를 입력해야 한다.

~/.bashrc파일을 열어서 아래의 내용으로 수정한다.

export ROS_MASTER_URI=roscore가 구동되는 장치(Xycar)의 IP주소:포트번호
export ROS_HOSTNAME=내 PC/노트북의 IP주소

 

내 PC/노트북의 IP주소는 아래 명령어로 알 수 있다.

ifconfig

 

나의 실습의 경우,

ROS_MASTER_URI=http://106.244.165.6:11311

으로 진행하였다.,

 

수정한 내용을 시스템에 반영하기 위해 아래 명령어 실행.

source ~/.bashrc

 

4. 실행 테스트

보내는 쪽에서는 아래와 같이 실행을 하고

rostopic pub /chatter std_msgs/String hello

 

받는 쪽에서는 아래와 같이 실행을 하면 된다.

rostopic echo /chatter

 

나는 실패..

아마도 IP주소 때문인 것 같다.


내 질문은 아니었지만,

나도 같이 이유일 수 있어 아래와 같이 설정을 변경하였다.

 

ifconfig명령어를 실행하였더니 아래와 같이 ip주소가 바뀌었다.

1번부터 다시 반복. 포트포워드의 규칙에서 내부 IP주소 192.168.0.24로 수정.

2번에서도 /etc/hosts 파일의 내 IP주소 192.168.0.24로 수정.

3번은 그대로.

그러나 여전히 실행이 안된다.

일단은 재부팅.

다시 실행해봤지만 여전히 안된다.

알고보니 아직 서버쪽에서 roscore 구동을 하지 않은 상태라고 한다.

내 IP주소 확인

네이버에 내 IP검색하면 된다.

 

아래 명령어로 호스트네임을 확인할 수 있다.

uname -n

 

그리고 아래 명령어로 hostname을 변경할 수 있다.

변경 후 화면이 깔끔해져서 맘에 든다.

hostnamectl set-hostname {바꾸고 싶은 hostname 명}

이 두개 정보(IP주소, 호스트네임)를 받아서 서버에서 저장해야 한다.

 

~/xycar_ws/src/msg_send/src 에 remote_student.py 파일을 아래와 같이 작성한다.

#!/usr/bin/env python

import rospy
from msg_send.msg import my_msg
from std_msgs.msg import String

done = False

first_name = 'Gil-Dong'
last_name = 'Hong'

def call_back(data):
     msg = data.data
     #print(first_name + ' ' + last_name)
     #if (last_name+' '+first_name in msg):
	 #     print(msg)
     #else:
     #     print("waiting")
     print(msg)
     done = True

rospy.init_node('remote_student', anonymous=True)

pub=rospy.Publisher('msg_to_xycar', my_msg, queue_size=1)
rospy.Subscriber('msg_from_xycar', String, call_back)

rate = rospy.Rate(0.5)

msg = my_msg()

msg.first_name = first_name
msg.last_name = last_name
msg.age = 25
msg.score = 100
msg.id_number = 12345678
msg.phone_number = "010-7777-7777"

while not rospy.is_shutdown() and not done:
    pub.publish(msg)
    print("sending message...")
    rate.sleep()

 

rosrun msg_send remote_student.py

실행하면 아래와 같은 결과가 뜬다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함