如何 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;
中写的示例操作
下面的代码是在 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;
中写的示例操作