node
master
node
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
local
PC 공인 IP
PC hostname
roscore
는 ros 네트워크에서 반드시 하나만 실행되어야 함~/.bashrc
에 ROS_HOSTNAME
주석 처리(이미 /etc/hosts
파일에서 수정)ROS_MASTER_URI
에 로봇 공인 IP 입력ROS_MASTER_URI
에 본인 사설 IP 입력rostopic pub /chatter std_msgs/String hello
rostopic echo /chatter
xycar_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