ros2--action/动作--接口

server状态判断接口

action_server_is_ready()

立刻检查当前action服务端是否准备好接受gaol请求。

wait_for_action_server()

原型:

复制代码
 /// Wait for action_server_is_ready() to become true, or until the given timeout is reached.
  template<typename RepT = int64_t, typename RatioT = std::milli>
  bool
  wait_for_action_server(
    std::chrono::duration<RepT, RatioT> timeout = std::chrono::duration<RepT, RatioT>(-1))
  {
    return wait_for_action_server_nanoseconds(
      std::chrono::duration_cast<std::chrono::nanoseconds>(timeout)
    );
  }

获取action名字

在ros2中,topic,service都有接口获取topic和service的名字,但是action没有。

为什么?

设计哲学差异

1. Topic 和 Service 的命名机制

复制代码
// Topic - 可以动态获取名称
auto topic_name = publisher->get_topic_name();
auto topic_name = subscription->get_topic_name();

// Service - 也可以动态获取名称
auto service_name = service->get_service_name();
auto service_name = client->get_service_name();

2. Action 的设计理念不同

Action 在 ROS 2 中被设计为更高级别的抽象,它实际上由多个底层的 Topic 和 Service 组成;

Action Client/Server 管理多个通信实体,没有单一的"动作名称"概念。