노드 통신 2

ROS - 1:N, N:1, N:N 통신

다양한 통신 시나리오 노드를 여러 개 띄울 때 하나의 코드로 여러 개의 노드를 연결하려면 각 노드의 이름을 다르게 해주어야 한다. 만약 노드의 이름이 모두 같다면? 이전에 실행된 노드가 저절로 꺼진다. 그렇다면 $ rosrun msg_send teacher_1.py $ rosrun msg_send teacher_2.py $ rosrun msg_send teacher_3.py 이렇게 실행시킬 때마다 이름을 바꾸어주어야 하는가? → 그럼 너무 귀찮다! 그럼 어떻게? → 노드의 init 함수에서 anonymous = True 값을 넣어주면 실행시킬 때 노드의 이름을 바꿔주지 않아도 노드 이름이 자동으로 설정된다. (anonymous 기본값은 false이기 때문에 저 설정을 꼭 해주어야 한다!) rospy.in..

ROS 2022.03.01

ROS - 노드 통신을 위한 패키지 만들기

Publisher가 topic을 보내면 Subscriber는 그 topic 안에 있는 데이터를 꺼내 읽는다. xycar_ws/src/ 내의 msg_send 디렉토리를 만들어주어야 한다. $ catkin_create_pkg msg_send std_msgs rospy msg_send 내의 src 디렉토리는 자동으로 만들어지지만 launch 디렉토리는 그렇지 않다. 따라서 mkdir 명령어로 launch 디렉토리를 직접 만들어주어야 한다. 그리고 나서 새로 만든 패키지를 빌드해 주어야 한다. $ cd ~/xycar_ws && catkin_make 토픽을 발행하고 구독하는 파이썬 코드 예제 토픽 이름은 'my_topic' teacher.py Publisher: 토픽에 "call me please" 담아서 전송 ..

ROS 2022.03.01