Skip to content
Snippets Groups Projects
Commit 13a7ace0 authored by Vladislav Vlasuk's avatar Vladislav Vlasuk
Browse files

comments

parent c716feee
No related branches found
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
#______________________________________________________________________________________________________________________________________________
#Author: VV
#Description: Class to simplify the creation of ros2 nodes
#Date: 01.08.24
#______________________________________________________________________________________________________________________________________________
#imports
from rclpy.node import Node from rclpy.node import Node
from std_msgs.msg import * from std_msgs.msg import *
#______________________________________________________________________________________________________________________________________________
#wrapper for creating ros2 node as publisher, subscriber, clients, service
class ros2node(Node): class ros2node(Node):
def __init__(self, nodeName): def __init__(self, nodeName):
super().__init__(nodeName) super().__init__(nodeName)
...@@ -11,20 +19,30 @@ class ros2node(Node): ...@@ -11,20 +19,30 @@ class ros2node(Node):
self._clients = {} self._clients = {}
self.as_ClientService = False self.as_ClientService = False
#______________________________________________________________________________________________________________________________________________
#ros2 publisher
def create_publisher_with_timer(self, topicName, msgType, func, rate): def create_publisher_with_timer(self, topicName, msgType, func, rate):
self._publishers[topicName] = self.create_publisher(msgType, topicName, 10) self._publishers[topicName] = self.create_publisher(msgType, topicName, 10)
self._timers[topicName] = self.create_timer(rate, lambda: self.timer_callback(topicName, func)) self._timers[topicName] = self.create_timer(rate, lambda: self.timer_callback(topicName, func))
#______________________________________________________________________________________________________________________________________________
#ros2 subscriber
def create_subscriber(self, topicName, msgType, func): def create_subscriber(self, topicName, msgType, func):
self._subscribers[topicName] = self.create_subscription(msgType, topicName, func, 10) self._subscribers[topicName] = self.create_subscription(msgType, topicName, func, 10)
#______________________________________________________________________________________________________________________________________________
#ros2 service
def create_new_service(self, topicName, msgType, func): def create_new_service(self, topicName, msgType, func):
self._services[topicName] = self.create_service(msgType, topicName, func) self._services[topicName] = self.create_service(msgType, topicName, func)
self.as_ClientService = True self.as_ClientService = True
#______________________________________________________________________________________________________________________________________________
#ros2 client
def create_new_client(self, topicName, msgType): def create_new_client(self, topicName, msgType):
self._clients[topicName] = self.create_client(msgType, topicName) self._clients[topicName] = self.create_client(msgType, topicName)
self.as_ClientService = True self.as_ClientService = True
#______________________________________________________________________________________________________________________________________________
#external executable callback function
def timer_callback(self, topicName, func): def timer_callback(self, topicName, func):
if not self.as_ClientService: if not self.as_ClientService:
...@@ -35,6 +53,10 @@ class ros2node(Node): ...@@ -35,6 +53,10 @@ class ros2node(Node):
# self.get_logger().info(f'Publishing: "{msg.data}" on topic: "{topicName}"') # self.get_logger().info(f'Publishing: "{msg.data}" on topic: "{topicName}"')
else: else:
self.get_logger().info(f'No publisher found for topic: "{topicName}"') self.get_logger().info(f'No publisher found for topic: "{topicName}"')
#______________________________________________________________________________________________________________________________________________
#getter
def get_client(self, topicName): def get_client(self, topicName):
return self._clients.get(topicName) return self._clients.get(topicName)
#______________________________________________________________________________________________________________________________________________
#setter
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment