splintered-reality/py_trees_ros

Publisher behaviour

Closed this issue · 0 comments

class GenericPublisher(py_trees.behaviour.Behaviour):

    def __init__(self, name, message_type, topic_name, blackboard_key, qos_profile):
        super().__init(name):
        self.message_type = message_type
        self.topic_name = topic_name
        self.key = blackboard_key
        self.blackboard.register_key(blackboard_key, write=True)
        self.qos_profile = qos_profile

    def initialise():
        // setup the publisher

    def update():
        try:
            message = self.blackboard.get(self.key)
        except KeyError:
             return py_trees_common.Status.FAILURE
        // check type(message) against self.message_type, if not matching
        // throw an exception
        self.publisher.publish(message)

To clear, one mechanism - just always follow this behaviour with an UnsetBlackboardVariable behaviour.