[ROS/Python] κ°λ¨ν Subscriber
μμ£Ό κ°λ¨ν ros subscriber λ§λ€μ΄λ³΄μ!
λ°λ‘ μ§μ ν¬μ€νΈμΈ ros subscriber μ΄μ κΈμ΄λ μ λμνμ§ μμΌλ©΄ μ§μ ν¬μ€νΈλ₯Ό μ°Έκ³ νμ
Simple ROS Subscriber
1. ν΄λ μμ±
νμΌμ λ§λ€ ν΄λλ₯Ό νλ λ§λ€κ³ κ·Έ κ²½λ‘λ‘ μ΄λνμ
$ mkdir ~/rospy_tutorial
$ cd ~/rospy_tutorial
2. Subscriber.py νμΌ μμ±
Sublisherλ₯Ό λ§λ€κΈ° μνμ¬ μλμ κ°μ΄ νμΌμ λ§λ€μ΄μ€λ€
$ gedit sub.py
3. μ 체μ μΈ μ½λ
μ 체μ μΈ μ½λλ₯Ό λ³΄κ³ νλνλ λλ μ 보μ
In sub.py
,
#! /usr/bin/env python
import rospy
from std_msgs.msg import String
def msg_callback(msg):
print(msg)
if __name__ == '__main__':
rospy.init_node('topic_sub_node')
sub = rospy.Subscriber('/bigbigpark', String, msg_callback, queue_size=1)
rospy.spin()
μ¬κΈ°κΉμ§λ§ λ³΄κ³ λ μ½λμ κ΅¬μ‘°κ° μ΄ν΄λλ μ¬λμ λ°λ‘ 5λ²μΌλ‘ λμ΄κ°μ
4. μ½λ λλ μ 보기
μ λ¬Έμ₯μ μ
λ±
μ΄λΌκ³ λΆλ₯΄λλ° μμΈν μ€λͺ
μ μ¬κΈ°λ₯Ό μ°Έμ‘°νμ
#! /usr/bin/env python
rospy
λΌμ΄λΈλ¬λ¦¬λ₯Ό λΆλ¬μ¨λ€
std_msgs
λΌλ λ©μΈμ§ ν¨ν€μ§μμ String
μ΄λΌλ ν€λ νμΌμ λΆλ¬μ¨λ€
import rospy
from std_msgs.msg import String
callbackμ λ€μ λΆλ₯Έλ€? μ΄λ° λμμ€μΈλ° λ§ κ·Έλλ‘ νΉμ μ΄λ²€νΈκ° λ€μ΄μμ λ νΈμΆλλ ν¨μ μ λλ‘λ§ μκ³ μμ
ν¨μμ λ»μ callback ν¨μκ° νΈμΆλμμ λ μμ λ λ©μΈμ§λ₯Ό printνκ² λ€λ λ»μ΄λ€
def msg_callback(msg):
print(msg)
λ
Έλλ₯Ό μ μΈν΄μ€ ν Subscriberλ₯Ό μ μΈν΄μ€λ€
μμ λ€μ΄κ°λ μΈμλ μλμͺ½μ λμμλ μμλλ‘ ν ν½λͺ
, νμ
, μ½λ°±ν¨μ, ν μ¬μ΄μ¦ μ΄λ€
λ€μ λ§ν΄μ bigbigpark
μ΄λΌλ μ΄λ¦μ String
νμ
μ ν ν½μ subscribeνκ² λ€λ κ²μ΄κ³ , κ·Έ λ ν μ¬μ΄μ¦λ 1λ‘ νκ² λ€λ λ»μ΄λ€
νΉν ν ν½μ΄ μμ λ λλ§λ€ msg_callback
μ΄λΌλ μ½λ°±ν¨μ
λ₯Ό μ€ννκ² λ€λ μλ―Έλ€
μ΄ κΈμμλ queue_sizeμ λν μμΈν λ΄μ©μ λ€λ£¨μ§ μκ² λ€
rospy.init_node('topic_sub_node')
sub = rospy.Subscriber('/bigbigpark', String, msg_callback, queue_size=1)
rospy.spin()
μ νμ¬κΉμ§ μ μΈλ λͺ¨λ subscriberμ λν callback ν¨μλ₯Ό λμμν€κ² λ€λ μλ―Έλ€
μ΄ λΆλΆμ 무ν루νλ‘ λμμ νλ μ΄ μ μΈ μλμͺ½μ μλ μ½λλ λμμ νμ§ μλλ€
rospy.spin()
5. μ€ννκΈ°
νμΌμ μ μ₯νκ³ ν°λ―Έλ μ°½μμ λ€μκ³Ό κ°μ΄ μ€νν΄λ³΄μ
$ roscore
$ python pub.py
$ python sub.py
6. κ²°κ³Ό
μ±κ³΅μ μΌλ‘ μμ λ¨μ νμΈνλ€
Leave a comment