node masternode node하나의 장치 안에서 여러 노드가 서로 통신
서로 다른 하드웨어 사이에서 네트워크 통신
단일 하드웨어 안에 있는 노드끼리도 네트워크 통신
| Publisher | Subscriber | |
|---|---|---|
| program | turtle_teleop_key | turtlesim_node |
| node | /teleop_turtle | /turtlesim |
| topic | /turtle1/cmd_vel | /turtle1/cmd_vel |
| dtype | geometry_msgs/Twist | geometry_msgs/Twist |
| ip | http://192.168.x.xx | http://192.168.x.xx |
ROS_MASTER_URI=로봇 IP 주소
ROS_HOSTNAME=내 PC IP 주소
sudo gedit ~/.bashrc
export ROS_MASTER_URI=http://192.168.x.xx:11311
export ROS_HOSTNAME=192.168.x.xx
source ~/.bashrc
rosrun turtlesim turtle_teleop_key
rostopic list
rosnode info /turtlesim
rostopic echo /turtle1/cmd_vel
rqt_graph
사설 IP를 가진 여러 장치를 port forwarding을 이용해 연결
| PC | 공유기 |
|---|---|
사설 IP192.168.x.xx | 공인 IP 전세계에서 유일한 값 |
| OS ROS Version 사설 ip hostname | pc에 DMZ 설정 공인 ip |
/etc/hosts 파일 수정PC 사설 IP local로봇 공인 IP 로봇 hostname로봇 사설 IP localPC 공인 IP PC hostnameroscore는 ros 네트워크에서 반드시 하나만 실행되어야 함~/.bashrc에 ROS_HOSTNAME 주석 처리(이미 /etc/hosts파일에서 수정)ROS_MASTER_URI에 로봇 공인 IP 입력ROS_MASTER_URI에 본인 사설 IP 입력rostopic pub /chatter std_msgs/String hellorostopic echo /chatterxycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ remote_teacher.py
│ │ └ remote_student.py
│ └ launch
│ └ remote.launch
├ build
└ devel
msg_receiver.py msg_sender.py 참고
로봇
roscore
rosrun msg_send remote_teacher.py
msg.first_name = "bert"
msg.last_name = "shim"
msg.id_number = 201914113
msg.phone_number = "010-0000-0000"
PC
rosrun msg_send remote_student.py
launch
roslaunch msg_send remote_launch
