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>boolwait_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 管理多个通信实体,没有单一的"动作名称"概念。