ROS 노드 통신 프로그래밍

정소원·2023년 5월 1일
0

노드간 통신 구성

  • Publisher
    • topic 발행
    • node name = node1
  • Subscriver
    • topic 수신
    • node name = node2

1:1 통신

Pakage create & run

// 패키지 생성
cd ~/xycar_ws/src
catkin_create_pkg <msg_send> [std_msgs] [rospy] # 패키기가 의존하고 있는 다른 패키지 나열
catkin_make

//src
cd src
vi student.py
vi teacher.py

// launch 
mkdir launch
cd launch
vi m_send.launch

// build
cm

//launch
roslaunch msg_send m_send.launch

다양한 통신 구성

anonymous

동일한 노드를 여러개 띄울 때 노드 이름이 겹치지 않도록 자동으로 할당하는 rospy option

1:N 통신

<launch>
        <node pkg="msg_send" type="teacher.py" name="teacher1"/>
        <node pkg="msg_send" type="student.py" name="student1" output="screen"/>
        <node pkg="msg_send" type="student.py" name="student2" output="screen"/>
        <node pkg="msg_send" type="student.py" name="student3" output="screen"/>
</launch>

N:1 통신

<launch>
        <node pkg="msg_send" type="teacher.py" name="teacher1"/>
        <node pkg="msg_send" type="teacher.py" name="teacher2"/>
        <node pkg="msg_send" type="teacher.py" name="teacher3"/>
        <node pkg="msg_send" type="student.py" name="student1" output="screen"/>
</launch>

N:N 통신

<launch>
        <node pkg="msg_send" type="teacher.py" name="teacher1"/>
        <node pkg="msg_send" type="teacher.py" name="teacher2"/>
        <node pkg="msg_send" type="teacher.py" name="teacher3"/>
        <node pkg="msg_send" type="student.py" name="student1" output="screen"/>
				<node pkg="msg_send" type="student.py" name="student2" output="screen"/>
        <node pkg="msg_send" type="student.py" name="student3" output="screen"/>
</launch>

profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글