반응형
ROS2 Foxy Fitzroy
패키지 노드(publisher) 만들기
1) 파이썬 파일 생성
~/robot_ws/src/test1234/test1234
- 위 경로에 hello_sub.py 생성
2) 전체코드
import rclpy
from rclpy.node import Node
from rclpy.qos import QoSProfile
from std_msgs.msg import String
class HelloworldSubscriber(Node):
def __init__(self):
super().__init__('Helloworld_subscriber')
qos_profile = QoSProfile(depth=10)
self.helloworld_subscriber = self.create_subscription(
String, #메세지 타입
'helloworld', #토픽 이름
self.subscribe_topic_message, #콜백 함수
qos_profile) #QoS 설정
def subscribe_topic_message(self, msg):
self.get_logger().info('Received message: {0}'.format(msg.data))
def main(args=None):
rclpy.init(args=args)
node = HelloworldSubscriber() #HelloworldSubscriber 클래스 생성
try:
rclpy.spin(node)
except KeyboardInterrupt:
node.get_logger().info('Keyboard Interrupt (SIGINT)')
finally:
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
코드 출처 : 오로카 카페 - 024 ROS프로그래밍 기초(python)_표윤석)
def __init__(self):
super().__init__('Helloworld_subscriber')
qos_profile = QoSProfile(depth=10)
self.helloworld_subscriber = self.create_subscription(
String, #메세지 타입
'helloworld', #토픽 이름
self.subscribe_topic_message, #콜백 함수
qos_profile) #QoS 설정
- self.helloworld_subscriber = self.create_subscription ~
- String : 메세지 타입
- 'helloworld' : 가져다 쓸 토픽 이름, 앞서 만든 publisher와 이름을 맞춰주어야 함
- self.subscribe_topic_message : 콜백 함수
- qos_prifile : QoS 설정
def subscribe_topic_message(self, msg):
self.get_logger().info('Received message: {0}'.format(msg.data))
- self.get_logger().info('Received message: {0}'.format(msg.data))
- 데이터가 들어오면 'msg.data'의 값을 '{0}'에 넣어 콘솔창에 출력
def main(args=None):
rclpy.init(args=args)
node = HelloworldSubscriber() #HelloworldSubscriber 클래스 생성
try:
rclpy.spin(node)
except KeyboardInterrupt:
node.get_logger().info('Keyboard Interrupt (SIGINT)')
finally:
node.destroy_node()
rclpy.shutdown()
- node = HelloworldSubscriber() : HelloworldSubscriber 클래스 생성
- rclpy.spin(node) : ROS에 노드 spin
3) 결론
- 특별한 것 없음
- publisher와의 차이는 12행에서 'create_publisher', 'create_subscription'만 다르다
반응형
'ROS2' 카테고리의 다른 글
ROS2 <토픽> 2개의 정수를 퍼블리시하기 (int multiarray) (0) | 2021.05.22 |
---|---|
ROS2 패키지 만들기 - 4 (확인 및 실행) (0) | 2021.04.21 |
ROS2 패키지 만들기 - 2 (노드 생성 - publisher) (0) | 2021.04.21 |
ROS2 패키지 만들기 - 1 (패키지 생성) (0) | 2021.04.20 |