ros2 rclpy: добавление нескольких серверов действий на один узел - PullRequest
0 голосов
/ 29 апреля 2020

Пример, приведенный в учебнике , показывает добавление к узлу одного действия:

import rclpy
from rclpy.action import ActionServer
from rclpy.node import Node

from action_tutorials.action import Fibonacci


class FibonacciActionServer(Node):

    def __init__(self):
        super().__init__('fibonacci_action_server')
        self._action_server = ActionServer(self, Fibonacci, 'fibonacci', self.execute_callback)

    def execute_callback(self, goal_handle):
        self.get_logger().info('Executing goal...')
        return Fibonacci.Result()

Как создать узел, который предлагает несколько действий, например, fibonacci и add integers?

Это легко, если я использую службы, например:

self.create_service(Fibonacci, 'fibonacci', self.fibonacci_callback)
self.create_service(AddInts, 'add_integers', self.add_integers_callback)

Добавит службы fibonacci и add_integers к узлу. Как бы я это сделал, если бы хотел, чтобы их можно было отменить и запросить ход выполнения? (т.е. действия)

...