ros2_control - rolling
Public Member Functions | Public Attributes | List of all members
hardware_interface::ResourceStorage Class Reference

Public Member Functions

 ResourceStorage (unsigned int update_rate=100, rclcpp::node_interfaces::NodeClockInterface::SharedPtr clock_interface=nullptr)
 
template<class HardwareT , class HardwareInterfaceT >
void load_hardware (const HardwareInfo &hardware_info, pluginlib::ClassLoader< HardwareInterfaceT > &loader, std::vector< HardwareT > &container)
 
template<class HardwareT >
bool initialize_hardware (const HardwareInfo &hardware_info, HardwareT &hardware)
 
template<class HardwareT >
bool configure_hardware (HardwareT &hardware)
 
void remove_all_hardware_interfaces_from_available_list (const std::string &hardware_name)
 
template<class HardwareT >
bool cleanup_hardware (HardwareT &hardware)
 
template<class HardwareT >
bool shutdown_hardware (HardwareT &hardware)
 
template<class HardwareT >
bool activate_hardware (HardwareT &hardware)
 
template<class HardwareT >
bool deactivate_hardware (HardwareT &hardware)
 
template<class HardwareT >
bool set_component_state (HardwareT &hardware, const rclcpp_lifecycle::State &target_state)
 
template<class HardwareT >
void import_state_interfaces (HardwareT &hardware)
 
template<class HardwareT >
void import_command_interfaces (HardwareT &hardware)
 
std::vector< std::string > add_command_interfaces (std::vector< CommandInterface > &interfaces)
 Adds exported command interfaces into internal storage. More...
 
void remove_command_interfaces (const std::vector< std::string > &interface_names)
 Removes command interfaces from internal storage. More...
 
void check_for_duplicates (const HardwareInfo &hardware_info)
 
void load_and_initialize_actuator (const HardwareInfo &hardware_info)
 
void load_and_initialize_sensor (const HardwareInfo &hardware_info)
 
void load_and_initialize_system (const HardwareInfo &hardware_info)
 
void initialize_actuator (std::unique_ptr< ActuatorInterface > actuator, const HardwareInfo &hardware_info)
 
void initialize_sensor (std::unique_ptr< SensorInterface > sensor, const HardwareInfo &hardware_info)
 
void initialize_system (std::unique_ptr< SystemInterface > system, const HardwareInfo &hardware_info)
 

Public Attributes

pluginlib::ClassLoader< ActuatorInterfaceactuator_loader_
 
pluginlib::ClassLoader< SensorInterfacesensor_loader_
 
pluginlib::ClassLoader< SystemInterfacesystem_loader_
 
std::vector< Actuatoractuators_
 
std::vector< Sensorsensors_
 
std::vector< Systemsystems_
 
std::vector< Actuatorasync_actuators_
 
std::vector< Sensorasync_sensors_
 
std::vector< Systemasync_systems_
 
std::unordered_map< std::string, HardwareComponentInfohardware_info_map_
 
std::unordered_map< std::string, std::vector< std::string > > hardware_used_by_controllers_
 Mapping between hardware and controllers that are using it (accessing data from it)
 
std::unordered_map< std::string, std::vector< std::string > > controllers_reference_interfaces_map_
 Mapping between controllers and list of reference interfaces they are using.
 
std::map< std::string, StateInterfacestate_interface_map_
 Storage of all available state interfaces.
 
std::map< std::string, CommandInterfacecommand_interface_map_
 Storage of all available command interfaces.
 
std::vector< std::string > available_state_interfaces_
 Vectors with interfaces available to controllers (depending on hardware component state)
 
std::vector< std::string > available_command_interfaces_
 
std::unordered_map< std::string, bool > claimed_command_interface_map_
 List of all claimed command interfaces.
 
std::unordered_map< std::string, AsyncComponentThreadasync_component_threads_
 List of async components by type.
 
unsigned int cm_update_rate_
 
rclcpp::node_interfaces::NodeClockInterface::SharedPtr clock_interface_
 

Member Function Documentation

◆ add_command_interfaces()

std::vector<std::string> hardware_interface::ResourceStorage::add_command_interfaces ( std::vector< CommandInterface > &  interfaces)
inline

Adds exported command interfaces into internal storage.

Add command interfaces to the internal storage. Command interfaces exported from hardware or chainable controllers are moved to the map with name-interface pairs, the interface names are added to the claimed map and available list's size is increased to reserve storage when interface change theirs status in real-time control loop.

Parameters
[interfaces]list of command interface to add into storage.
Returns
list of interface names that are added into internal storage. The output is used to avoid additional iterations to cache interface names, e.g., for initializing info structures.

◆ remove_command_interfaces()

void hardware_interface::ResourceStorage::remove_command_interfaces ( const std::vector< std::string > &  interface_names)
inline

Removes command interfaces from internal storage.

Command interface are removed from the maps with theirs storage and their claimed status.

Parameters
[interface_names]list of command interface names to remove from storage.

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