ros2_control - rolling
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
controller_interface::ChainableControllerInterface Class Referenceabstract

Virtual class to implement when integrating a controller that can be preceded by other controllers. More...

#include <chainable_controller_interface.hpp>

Inheritance diagram for controller_interface::ChainableControllerInterface:
Inheritance graph
[legend]
Collaboration diagram for controller_interface::ChainableControllerInterface:
Collaboration graph
[legend]

Public Member Functions

return_type update (const rclcpp::Time &time, const rclcpp::Duration &period) final
 Control step. Updates command interfaces from reference inputs and current states. The method called in the (real-time) control loop.
 
bool is_chainable () const final
 Get information if a controller is chainable.
 
std::vector< hardware_interface::StateInterface::ConstSharedPtr > export_state_interfaces () final
 Export interfaces for a chainable controller that can be used as state interface by other controllers.
 
std::vector< hardware_interface::CommandInterface::SharedPtr > export_reference_interfaces () final
 Export interfaces for a chainable controller that can be used as command interface of other controllers.
 
bool set_chained_mode (bool chained_mode) final
 Set chained mode of a chainable controller. This method triggers internal processes to switch a chainable controller to "chained" mode and vice-versa. Setting controller to "chained" mode usually involves the usage of the controller's reference interfaces by the other controllers.
 
bool is_in_chained_mode () const final
 Get information if a controller is currently in chained mode.
 
- Public Member Functions inherited from controller_interface::ControllerInterfaceBase
virtual InterfaceConfiguration command_interface_configuration () const =0
 Get configuration for controller's required command interfaces.
 
virtual InterfaceConfiguration state_interface_configuration () const =0
 Get configuration for controller's required state interfaces.
 
virtual void assign_interfaces (std::vector< hardware_interface::LoanedCommandInterface > &&command_interfaces, std::vector< hardware_interface::LoanedStateInterface > &&state_interfaces)
 Method that assigns the Loaned interfaces to the controller.
 
virtual void release_interfaces ()
 Method that releases the Loaned interfaces from the controller.
 
return_type init (const std::string &controller_name, const std::string &urdf, unsigned int cm_update_rate, const std::string &node_namespace, const rclcpp::NodeOptions &node_options)
 
return_type init (const controller_interface::ControllerInterfaceParams &params)
 
const rclcpp_lifecycle::State & configure ()
 Custom configure method to read additional parameters for controller-nodes.
 
virtual CallbackReturn on_init ()=0
 Extending interface with initialization method which is individual for each controller.
 
ControllerUpdateStatus trigger_update (const rclcpp::Time &time, const rclcpp::Duration &period)
 Trigger update method. This method is used by the controller_manager to trigger the update method of the controller. The method is used to trigger the update method of the controller synchronously or asynchronously, based on the controller configuration. The method called in the (real-time) control loop.
 
std::shared_ptr< rclcpp_lifecycle::LifecycleNode > get_node ()
 
std::shared_ptr< const rclcpp_lifecycle::LifecycleNode > get_node () const
 
const rclcpp_lifecycle::State & get_lifecycle_state () const
 Get the current lifecycle state of the controller node.
 
uint8_t get_lifecycle_id () const
 Get the lifecycle id of the controller node that is cached internally to avoid calls to get_lifecycle_state() in the real-time control loop.
 
unsigned int get_update_rate () const
 
bool is_async () const
 
const std::string & get_robot_description () const
 
const std::unordered_map< std::string, joint_limits::JointLimits > & get_hard_joint_limits () const
 Get the unordered map of joint limits that are defined in the robot description.
 
const std::unordered_map< std::string, joint_limits::SoftJointLimits > & get_soft_joint_limits () const
 Get the unordered map of soft joint limits that are defined in the robot description.
 
virtual rclcpp::NodeOptions define_custom_node_options () const
 Method used by the controller_manager for base NodeOptions to instantiate the Lifecycle node of the controller upon loading the controller.
 
template<typename ParameterT >
auto auto_declare (const std::string &name, const ParameterT &default_value)
 Declare and initialize a parameter with a type.
 
void wait_for_trigger_update_to_finish ()
 Method to wait for any running async update cycle to finish after finishing the current cycle. This is needed to be called before deactivating the controller by the controller_manager, so that the interfaces still exist when the controller finishes its cycle and then it's exits.
 
void prepare_for_deactivation ()
 Method to prepare the controller for deactivation. This method is called by the controller manager before deactivating the controller. The method is used to prepare the controller for deactivation, e.g., to stop triggering the update cycles further. This method is especially needed for controllers running in async mode and different frequency than the control manager.
 
std::string get_name () const
 
void enable_introspection (bool enable)
 Enable or disable introspection of the controller.
 

Protected Member Functions

virtual std::vector< hardware_interface::StateInterfaceon_export_state_interfaces ()
 Virtual method that each chainable controller should implement to export its read-only chainable interfaces.
 
virtual std::vector< hardware_interface::StateInterface::SharedPtr > on_export_state_interfaces_list ()
 Virtual method implemented by chainable controllers to export read-only interfaces.
 
virtual std::vector< hardware_interface::CommandInterfaceon_export_reference_interfaces ()
 Virtual method implemented by chainable controllers to export read/write interfaces.
 
virtual std::vector< hardware_interface::CommandInterface::SharedPtr > on_export_reference_interfaces_list ()
 Virtual method that each chainable controller should implement to export its read/write chainable interfaces.
 
virtual bool on_set_chained_mode (bool chained_mode)
 Virtual method that each chainable controller should implement to switch chained mode.
 
virtual return_type update_reference_from_subscribers (const rclcpp::Time &time, const rclcpp::Duration &period)=0
 Update reference from input topics when not in chained mode.
 
virtual return_type update_and_write_commands (const rclcpp::Time &time, const rclcpp::Duration &period)=0
 Execute calculations of the controller and update command interfaces.
 

Protected Attributes

std::vector< std::string > exported_state_interface_names_
 Storage of values for state interfaces.
 
std::vector< hardware_interface::StateInterface::SharedPtr > ordered_exported_state_interfaces_
 
std::unordered_map< std::string, hardware_interface::StateInterface::SharedPtr > exported_state_interfaces_
 
std::vector< double > state_interfaces_values_
 
std::vector< std::string > exported_reference_interface_names_
 Storage of values for reference interfaces.
 
std::vector< double > reference_interfaces_
 
std::vector< hardware_interface::CommandInterface::SharedPtr > ordered_exported_reference_interfaces_
 
std::unordered_map< std::string, hardware_interface::CommandInterface::SharedPtr > exported_reference_interfaces_
 
- Protected Attributes inherited from controller_interface::ControllerInterfaceBase
std::vector< hardware_interface::LoanedCommandInterfacecommand_interfaces_
 Loaned command interfaces.
 
std::vector< hardware_interface::LoanedStateInterfacestate_interfaces_
 Loaned state interfaces.
 
pal_statistics::RegistrationsRAII stats_registrations_
 

Detailed Description

Virtual class to implement when integrating a controller that can be preceded by other controllers.

Specialization of ControllerInterface class to force implementation of methods specific for "chainable" controller, i.e., controller that can be preceded by an another controller, for example inner controller of an control cascade.

Member Function Documentation

◆ export_reference_interfaces()

std::vector< hardware_interface::CommandInterface::SharedPtr > controller_interface::ChainableControllerInterface::export_reference_interfaces ( )
finalvirtual

Export interfaces for a chainable controller that can be used as command interface of other controllers.

Returns
list of command interfaces for preceding controllers.

Implements controller_interface::ControllerInterfaceBase.

◆ export_state_interfaces()

std::vector< hardware_interface::StateInterface::ConstSharedPtr > controller_interface::ChainableControllerInterface::export_state_interfaces ( )
finalvirtual

Export interfaces for a chainable controller that can be used as state interface by other controllers.

Returns
list of state interfaces for preceding controllers.

Implements controller_interface::ControllerInterfaceBase.

◆ is_chainable()

bool controller_interface::ChainableControllerInterface::is_chainable ( ) const
finalvirtual

Get information if a controller is chainable.

Get information if a controller is chainable.

Returns
true is controller is chainable and false if it is not.

Implements controller_interface::ControllerInterfaceBase.

◆ is_in_chained_mode()

bool controller_interface::ChainableControllerInterface::is_in_chained_mode ( ) const
finalvirtual

Get information if a controller is currently in chained mode.

Get information about controller if it is currently used in chained mode. In chained mode only internal interfaces are available and all subscribers are expected to be disabled. This prevents concurrent writing to controller's inputs from multiple sources.

Returns
true is controller is in chained mode and false if it is not.

Implements controller_interface::ControllerInterfaceBase.

◆ on_export_reference_interfaces()

std::vector< hardware_interface::CommandInterface > controller_interface::ChainableControllerInterface::on_export_reference_interfaces ( )
protectedvirtual

Virtual method implemented by chainable controllers to export read/write interfaces.

Each chainable controller implements this methods where all input (command) interfaces are exported. The method has the same meaning as export_command_interface method from hardware_interface::SystemInterface or hardware_interface::ActuatorInterface.

Returns
list of CommandInterfaces that other controller can use as their outputs.

Reimplemented in passthrough_controller::PassthroughController, admittance_controller::AdmittanceController, diff_drive_controller::DiffDriveController, mecanum_drive_controller::MecanumDriveController, omni_wheel_drive_controller::OmniWheelDriveController, pid_controller::PidController, and steering_controllers_library::SteeringControllersLibrary.

◆ on_export_reference_interfaces_list()

std::vector< hardware_interface::CommandInterface::SharedPtr > controller_interface::ChainableControllerInterface::on_export_reference_interfaces_list ( )
protectedvirtual

Virtual method that each chainable controller should implement to export its read/write chainable interfaces.

Each chainable controller implements this methods where all input (command) interfaces are exported. The method has the same meaning as on_export_command_interfaces method from hardware_interface::SystemInterface or hardware_interface::ActuatorInterface.

Returns
list of CommandInterfaces that other controller can use as their outputs.

◆ on_export_state_interfaces()

std::vector< hardware_interface::StateInterface > controller_interface::ChainableControllerInterface::on_export_state_interfaces ( )
protectedvirtual

Virtual method that each chainable controller should implement to export its read-only chainable interfaces.

Each chainable controller implements this methods where all its state(read only) interfaces are exported. The method has the same meaning as export_state_interfaces method from hardware_interface::SystemInterface or hardware_interface::ActuatorInterface.

Returns
list of StateInterfaces that other controller can use as their inputs.

Reimplemented in chained_filter_controller::ChainedFilter, force_torque_sensor_broadcaster::ForceTorqueSensorBroadcaster, imu_sensor_broadcaster::IMUSensorBroadcaster, and pid_controller::PidController.

◆ on_export_state_interfaces_list()

std::vector< hardware_interface::StateInterface::SharedPtr > controller_interface::ChainableControllerInterface::on_export_state_interfaces_list ( )
protectedvirtual

Virtual method implemented by chainable controllers to export read-only interfaces.

Each chainable controller implements this methods where all its state(read only) interfaces are exported. The method has the same meaning as on_export_state_interfaces method from hardware_interface::SystemInterface or hardware_interface::ActuatorInterface.

Returns
list of StateInterfaces that other controller can use as their inputs.

◆ on_set_chained_mode()

bool controller_interface::ChainableControllerInterface::on_set_chained_mode ( bool  chained_mode)
protectedvirtual

Virtual method that each chainable controller should implement to switch chained mode.

Each chainable controller implements this methods to switch between "chained" and "external" mode. In "chained" mode all external interfaces like subscriber and service servers are disabled to avoid potential concurrency in input commands.

Parameters
[in]flagmarking a switch to or from chained mode.
Returns
true if controller successfully switched between "chained" and "external" mode. @default returns true so the method don't have to be overridden if controller can always switch chained mode.

Reimplemented in passthrough_controller::PassthroughController, diff_drive_controller::DiffDriveController, mecanum_drive_controller::MecanumDriveController, omni_wheel_drive_controller::OmniWheelDriveController, pid_controller::PidController, and steering_controllers_library::SteeringControllersLibrary.

◆ set_chained_mode()

bool controller_interface::ChainableControllerInterface::set_chained_mode ( bool  chained_mode)
finalvirtual

Set chained mode of a chainable controller. This method triggers internal processes to switch a chainable controller to "chained" mode and vice-versa. Setting controller to "chained" mode usually involves the usage of the controller's reference interfaces by the other controllers.

Returns
true if mode is switched successfully and false if not.

Implements controller_interface::ControllerInterfaceBase.

◆ update()

return_type controller_interface::ChainableControllerInterface::update ( const rclcpp::Time &  time,
const rclcpp::Duration &  period 
)
finalvirtual

Control step. Updates command interfaces from reference inputs and current states. The method called in the (real-time) control loop.

Parameters
[in]timeThe time at the start of this control loop iteration
[in]periodThe measured time taken by the last control loop iteration
Returns
return_type::OK if update is successfully, otherwise return_type::ERROR.

Implements controller_interface::ControllerInterfaceBase.

◆ update_and_write_commands()

virtual return_type controller_interface::ChainableControllerInterface::update_and_write_commands ( const rclcpp::Time &  time,
const rclcpp::Duration &  period 
)
protectedpure virtual

Execute calculations of the controller and update command interfaces.

Update method for chainable controllers. In this method is valid to assume that \reference_interfaces_ hold the values for calculation of the commands in the current control step. This means that this method is called after \update_reference_from_subscribers if controller is not in chained mode.

Returns
return_type::OK if calculation and writing of interface is successfully, otherwise return_type::ERROR.

Implemented in passthrough_controller::PassthroughController, admittance_controller::AdmittanceController, chained_filter_controller::ChainedFilter, diff_drive_controller::DiffDriveController, force_torque_sensor_broadcaster::ForceTorqueSensorBroadcaster, imu_sensor_broadcaster::IMUSensorBroadcaster, mecanum_drive_controller::MecanumDriveController, omni_wheel_drive_controller::OmniWheelDriveController, pid_controller::PidController, and steering_controllers_library::SteeringControllersLibrary.

◆ update_reference_from_subscribers()

virtual return_type controller_interface::ChainableControllerInterface::update_reference_from_subscribers ( const rclcpp::Time &  time,
const rclcpp::Duration &  period 
)
protectedpure virtual

The documentation for this class was generated from the following files: