xycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ sender_serial.py
│ ├ └ receiver_serial.py
│ ├ launch
│ ├ └ sr_serial.launch
│ ├ CMakeList.txt
│ └ package.xml
├ build
└ devel
roscore
rosrun msg_send sender_serial.py
rosrun msg_send receiver_serial.py
Sender가 보낸 1이 없음
실질적인 통신구축에 지연시간 존재
get_num_connections()
Subscriber 연결 확인
subscriberNum
으로 subscriber가 수신될 동안 대기
while pub.get_num_connections() < subscriberNum:
time.sleep(1)
xycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ sender_speed.py
│ ├ └ receiver_speed.py
│ ├ launch
│ ├ └ sr_speed.launch
│ ├ CMakeList.txt
│ └ package.xml
├ build
└ devel
xycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ sender_overflow.py
│ ├ └ receiver_overflow.py
│ ├ launch
│ ├ └ sr_overflow.launch
│ ├ CMakeList.txt
│ └ package.xml
├ build
└ devel
rospy.Rate(N)
의 N이 커졌을 때
queue_size
를 늘리면 버퍼링 덕분에 손실없이 콜백 수행
xycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ sender_timeslot.py
│ ├ └ receiver_timeslot.py
│ ├ launch
│ ├ └ sr_timeslot.launch
│ ├ CMakeList.txt
│ └ package.xml
├ build
└ devel
job이 단위 타임 슬롯보다 커지는 경우
1초에 job 5번 수행
job의 양이 많아질수록 sleep time이 줄고 spend time이 커짐
job이 0.2초를 넘으면 sleep time이 0이 되고 total time이 1초를 넘어감
xycar_ws
├ src
│ └ msg_send
│ ├ src
│ │ ├ first.py
│ │ ├ second.py
│ │ ├ third.py
│ │ ├ fourth.py
│ ├ └ receiver.py
│ ├ launch
│ ├ └ sr_order.launch
│ ├ CMakeList.txt
│ └ package.xml
├ build
└ devel
start_ctl 토픽으로 1초에 간격으로 각 노드에 first:go second:go third:go fourth:go 송출
msg_to_receiver 토픽을 받을 대기 상태 유지
받으면 callback 호출 후 터미널에 출력
while문에서 start_ctl 토픽이 입력되어 ctl_callback 호출 후 OK변수에 데이터 입력될 때까지 대기
입력받은 후 while문 탈출
msg_to_receiver 토픽에 this is name 메시지 담아 송출