|
Easy Navigation
|
ROS 2 lifecycle node that manages calculating speeds for the Easy Navigation system. More...
#include <ControllerNode.hpp>


Public Types | |
| using | CallbackReturnT = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn |
Public Member Functions | |
| ControllerNode (const rclcpp::NodeOptions &options=rclcpp::NodeOptions()) | |
| Constructs a ControllerNode lifecycle node with the specified options. | |
| bool | cycle_rt (std::shared_ptr< NavState > nav_state, bool trigger=false) |
| Executes one cycle of real-time controller logic. | |
| std::string | get_loaded_controller () const |
| Alias of the loaded controller (its "controller_types" entry). | |
| rclcpp::CallbackGroup::SharedPtr | get_real_time_cbg () |
| Returns the real-time callback group. | |
| RobotLimits | get_robot_limits () const override |
| Robot limits being enforced: the configured ones, cut down to the safety channel's safely limited speed, if any. | |
| bool | is_robot_limit_configured (const std::string &field) const override |
| Whether "robot_limits.<field>" was configured explicitly. | |
| CallbackReturnT | on_activate (const rclcpp_lifecycle::State &state) |
| Activates the ControllerNode node. | |
| CallbackReturnT | on_cleanup (const rclcpp_lifecycle::State &state) |
| Cleans up the ControllerNode node. | |
| CallbackReturnT | on_configure (const rclcpp_lifecycle::State &state) |
| Configures the ControllerNode node. | |
| CallbackReturnT | on_deactivate (const rclcpp_lifecycle::State &state) |
| Deactivates the ControllerNode node. | |
| CallbackReturnT | on_error (const rclcpp_lifecycle::State &state) |
| Handles errors in the ControllerNode node. | |
| CallbackReturnT | on_shutdown (const rclcpp_lifecycle::State &state) |
| Shuts down the ControllerNode node. | |
| void | publish_cmd_vel_rt (std::shared_ptr< NavState > nav_state) |
| Selects, smooths and publishes this RT cycle's velocity command. | |
| void | set_robot_limits (const RobotLimits &limits) override |
| Replaces the limits enforced until the next configure. | |
| ~ControllerNode () | |
| Destroys the ControllerNode object. | |
ROS 2 lifecycle node that manages calculating speeds for the Easy Navigation system.
This node provides the interface between the controller module in EasyNav and the ROS 2 ecosystem. It handles lifecycle transitions, real-time scheduling of periodic tasks, and parameter setup.
It is also the single point where the velocity command leaves EasyNav:
safety::CommandGuard keeps the command from being stale or invalid ("cmd_timeout", "cmd_vel_keepalive_period", non-finite commands, "diagnostics.cmd_vel").
The safety channel's state in NavState ("safety_status", see SafetyChannelState) is applied every RT cycle: zero during a protective stop, and the robot limits cut down to its safely limited speed.
| using CallbackReturnT = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn |
|
explicit |
Constructs a ControllerNode lifecycle node with the specified options.
| options | Node options to configure the ControllerNode node. |
| ~ControllerNode | ( | ) |
Destroys the ControllerNode object.
| bool cycle_rt | ( | std::shared_ptr< NavState > | nav_state, |
| bool | trigger = false ) |
Executes one cycle of real-time controller logic.
This method is invoked periodically by a high-priority timer and is expected to compute control commands based on the current navigation state and input data.
| nav_state | Shared pointer to the navigation state structure. |
| std::string get_loaded_controller | ( | ) | const |
Alias of the loaded controller (its "controller_types" entry).
| rclcpp::CallbackGroup::SharedPtr get_real_time_cbg | ( | ) |
Returns the real-time callback group.
This callback group can be used to assign callbacks that require low latency or have real-time constraints.
|
override |
Robot limits being enforced: the configured ones, cut down to the safety channel's safely limited speed, if any.
|
override |
Whether "robot_limits.<field>" was configured explicitly.
| CallbackReturnT on_activate | ( | const rclcpp_lifecycle::State & | state | ) |
Activates the ControllerNode node.
This starts periodic navigation control cycles.
| state | The current lifecycle state. |
| CallbackReturnT on_cleanup | ( | const rclcpp_lifecycle::State & | state | ) |
Cleans up the ControllerNode node.
Releases resources and resets the internal state.
| state | The current lifecycle state. |
| CallbackReturnT on_configure | ( | const rclcpp_lifecycle::State & | state | ) |
Configures the ControllerNode node.
This is typically where parameters and interfaces are declared.
| state | The current lifecycle state. |
| CallbackReturnT on_deactivate | ( | const rclcpp_lifecycle::State & | state | ) |
Deactivates the ControllerNode node.
Control loops are stopped and interfaces are disabled.
| state | The current lifecycle state. |
| CallbackReturnT on_error | ( | const rclcpp_lifecycle::State & | state | ) |
Handles errors in the ControllerNode node.
This is called when a failure occurs during a lifecycle transition.
| state | The current lifecycle state. |
| CallbackReturnT on_shutdown | ( | const rclcpp_lifecycle::State & | state | ) |
Shuts down the ControllerNode node.
Called on final shutdown of the node's lifecycle.
| state | The current lifecycle state. |
| void publish_cmd_vel_rt | ( | std::shared_ptr< NavState > | nav_state | ) |
Selects, smooths and publishes this RT cycle's velocity command.
VelocityMux picks, by priority, among the commands proposed this cycle (see velocity_command): zero during a protective stop, an override (published as is), a takeover, zero while paused, or the controller's. Publishes when a new command was proposed, or while the smoother is still ramping towards the last one.
| nav_state | Shared navigation state. |
|
override |
Replaces the limits enforced until the next configure.