반응형
250x250
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
- 차량 동역학
- humble
- 나이퀴스트선도
- 보드선도
- Python
- 비선형제어
- 러닝 #운동 #동기부여
- lateral dynamics
- 터미널 오류
- feedback linearization
- Backstepping
- ROS2
- Isaac Sim
- RL
- 궤환 선형화
- 나이퀴스트
- 궤환선형화
- 우분투
- 백스테핑
- control
- 오류
- 경로계획
- 2024적금
- 제어공학
- 자동제어
- 강화학습
- ros2humble
- 횡방향 동역학
- FL
- #! /usr/bin/env python
Archives
- Today
- Total
내 머릿속
[ROS2] Python ROS2 Node 기본구조 본문
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 |