내 머릿속

[ROS2] Python ROS2 Node 기본구조 본문

Python with ROS

[ROS2] Python ROS2 Node 기본구조

두구궁 2025. 5. 8. 12:33
728x90
반응형
SMALL

1. python 노드

import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class PubSubNode(Node):
    def __init__(self):
        super().__init__('pub_sub_node')
        self.publisher_ = self.create_publisher(String, 'topic', 10)
        self.subscription = self.create_subscription(String, 'topic', self.listener_callback, 10)
        self.timer = self.create_timer(1.0, self.timer_callback)
        self.i = 0

    def timer_callback(self):
        msg = String()
        msg.data = f'Hello ROS 2: {self.i}'
        self.publisher_.publish(msg)
        self.i += 1

    def listener_callback(self, msg):
        self.get_logger().info(f'Received: "{msg.data}"')

def main(args=None):
    rclpy.init(args=args)
    node = PubSubNode()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

 

Pub/Sub이 모두 가능한 형태로 timer_callback함수가 실질적인 main loop로 동작한다.

 

callback받는 데이터는 클래스 내에서 self로 클래스 변수로 지정한 뒤, main loop에서 알고리즘을 돌려 publish

728x90
반응형
LIST

'Python with ROS' 카테고리의 다른 글

[ROS2] ROS2 파이썬 패키지 생성  (0) 2025.05.08
[ROS2] ROS2 Humble Workspace 및 패키지 만들기  (0) 2024.05.02
[Python numpy] np.minimum.reduce  (0) 2024.05.02
[1] Shebang 이란?  (0) 2023.01.16