如何 return 表示我正在 ros2 ActionServer 中执行的结果?

How to return a result that says that I'm executing in a ros2 ActionServer?

下面的代码是在 ActionServer 中执行的 ros2 文档的示例回调,returns 目标已成功。

但我想为我正在执行的客户创建一些东西 returns 或者这可能只是通过反馈?

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

        feedback_msg = Fibonacci.Feedback()
        feedback_msg.partial_sequence = [0, 1]

        for i in range(1, goal_handle.request.order):
            feedback_msg.partial_sequence.append(
                feedback_msg.partial_sequence[i] + feedback_msg.partial_sequence[i-1])
            self.get_logger().info('Feedback: {0}'.format(feedback_msg.partial_sequence))
            goal_handle.publish_feedback(feedback_msg)
            time.sleep(1)

        goal_handle.succeed()

        result = Fibonacci.Result()
        result.sequence = feedback_msg.partial_sequence
        return result

我试图在 goal_handle 中找到一个方法,它说任务正在执行但我找不到,我发现刚刚成功,中止并取消。

创建 ROS-ROS2 操作以异步执行 long-running process/task。在服务器端,您应该在执行 long-running 任务期间发布 反馈

在 client-side 上,您可以调用 send_goal_async 并在 while 循环中旋转,直到您的目标完成。

你可以参考我在here;

中写的示例操作