十字军骑士免安装绿色中文版
5.4G · 2025-09-16
ROS 2 引入了托管节点(Managed Nodes)的概念,这类节点也被称为生命周期节点(LifecycleNode)。 LifecycleNode 内部包含一个 有限状态机,通过调用表示连续后继状态的转换ID即可实现状态切换。
Primary States (steady states):
Transition States (intermediate states):
/// rclcpp_lifecycle/include/rclcpp_lifecycle/node_interfaces/lifecycle_node_interface.hpp
enum class CallbackReturn : uint8_t
{
SUCCESS = lifecycle_msgs::msg::Transition::TRANSITION_CALLBACK_SUCCESS,
FAILURE = lifecycle_msgs::msg::Transition::TRANSITION_CALLBACK_FAILURE,
ERROR = lifecycle_msgs::msg::Transition::TRANSITION_CALLBACK_ERROR
};
virtual CallbackReturn on_configure(const rclcpp_lifecycle::State & previous_state);
virtual CallbackReturn on_activate(const rclcpp_lifecycle::State & previous_state);
virtual CallbackReturn on_deactivate(const rclcpp_lifecycle::State & previous_state);
virtual CallbackReturn on_cleanup(const rclcpp_lifecycle::State & previous_state);
virtual CallbackReturn on_shutdown(const rclcpp_lifecycle::State & previous_state);
$ ros2 lifecycle get /lc_talker
unconfigured [1]
$ ros2 lifecycle set /lc_talker configure
Transitioning successful
$ ros2 lifecycle list lc_talker
- configure [1]
Start: unconfigured
Goal: configuring
- shutdown [5]
Start: unconfigured
Goal: shuttingdown
$ ros2 lifecycle list lc_talker -a
- configure [1]
Start: unconfigured
Goal: configuring
- transition_success [10]
Start: configuring
Goal: inactive
- transition_failure [11]
Start: configuring
Goal: unconfigured
- transition_error [12]
Start: configuring
Goal: errorprocessing
[...]
- transition_error [62]
Start: errorprocessing
Goal: finalized
docs.ros.org/en/ros2_pac…
design.ros2.org/articles/no…
github.com/ros2/demos/…