Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- unittest
- ROS
- patch
- Turtle
- narrow-phase
- Package
- broad-phase
- mock
- rospy.spin
- gjk
- namespace
- Topic
- convex
- separating axis theorem(sat)
- CONSTRAINTS
- QT
- 워크스페이스
- Service
- remapping
- Publish
- Python
- subsribe
- 비동기적
- MPC
- optimization
- gjk-epa
- roslaunch
- Gradient
- Turtlesim
- UV
Archives
- Today
- Total
똑바른 날개
Ros 공부 4일차 - rospy.spin() 본문
rospy.spin()
rospy.spin()
roswiki에서는 사용자의 노드가 셧다운되기전까지 종료로 부터 지킨다고 나와있다. 이에 대한 개념이 잘이해가 안되어서 추가적으로 몇가지 실험을 해보았다.
subscribe 노드이다. 임의의 랜덤한 숫자 두개를 pub하고 있다. subsrcibe노드에서는 따로 수정을 하지 않고 세번의 실험에 동일하게 썼다.
#!/usr/bin/env python
from gohome import msg
import rospy
from gohome.msg import Complex
from random import random
rospy.init_node('message_publisher')
pub = rospy.Publisher('complex', Complex, queue_size=1)
rate = rospy.Rate(2)
while not rospy.is_shutdown():
msg = Complex()
msg.real = random()
msg.imaginary = random()
pub.publish(msg)
rate.sleep()
1. 기존의 publish
publish 노드
#!/usr/bin/env python
import rospy
from gohome.msg import Complex
# print('Real')
def callback(msg):
print( 'Real :' , msg.real)
print('Imaginary:' , msg.imaginary)
print
rospy.init_node('message_subscriber')
sub = rospy.Subscriber('complex', Complex, callback)
# while not rospy.is_shutdown():
# print('Real')
rospy.spin()

2. callback 함수 외부에서 print가 추가 된 노드
#!/usr/bin/env python
import rospy
from gohome.msg import Complex
# print('Real')
def callback(msg):
print( 'Real :' , msg.real)
print('Imaginary:' , msg.imaginary)
print
rospy.init_node('message_subscriber')
sub = rospy.Subscriber('complex', Complex, callback)
# while not rospy.is_shutdown():
# print('Real')
rospy.spin()
print는 한번 실행되었다.
3. while not ropsy..is_shutdown에 들어가 있는 pirnt
#!/usr/bin/env python
import rospy
from gohome.msg import Complex
#print('Real')
def callback(msg):
print( 'Real :' , msg.real)
print('Imaginary:' , msg.imaginary)
print
rospy.init_node('message_subscriber')
sub = rospy.Subscriber('complex', Complex, callback)
while not rospy.is_shutdown():
print('Real')
rospy.spin()
while not ropsy..is_shutdown에 갇쳐있다. 여기서 우리는 rospy.spin은 topic이 subsrcibe노드가 도착하더라도 작동하지 않았다는 것을 알수 있다.
'ROS' 카테고리의 다른 글
Ros 공부 7일차 - ros파일 시스템 이해, 여러가지 패키지 명령어 (0) | 2022.05.03 |
---|---|
Ros 공부 6일차 - rosbag (0) | 2022.03.05 |
Ros 공부 4일차 - msg 관련 명령어 (0) | 2022.03.03 |
Ros 공부 3일차 - topic, 서비스 발행 (0) | 2022.02.27 |
Ros 공부 2일차 - Topic의 기초 (0) | 2022.02.27 |