A ros_control implementation that adopts layered scheme
- every ros_control's component (ex. joint_limits, transmissions) is implemented as a layer plugin (base_class: layered_hardware::LayerBase)
- one can reuse plugins of non-actuator-specific layers for different actuators
~control_frequency (double, default: 10.0)
- frequency of control step (reading from the layers, updating the controllers, and writing to the layers) in Hz
~use_expected_period (bool, default: false)
- if true, the node uses the expected control cycle time instead of the actual when reading from/writing to the layers
- useful as workaround for clock jump
~robot_description or robot_description (string, default: "")
- robot description in URDF
- if both given, ~robot_description will be used
~layers (string array, required)
- names of layers from upper (controller-side) to bottom (actuator-side)
~<layer_name>/type (string, required)
- lookup name for each layer plugin like 'layered_hardware/TransmissionLayer'
- implements general joint_limits_interface procedures
- supports both hard & soft limits
- implements general transmission_interface procedures
- implements dummy {position, velocity, effort}-controlled actuators
- useful to debug your command generation, state visualization nodes, or transmissions without physical actuators and dynamics simulators
~<layer_name>/actuators (string array, required)
- names of actuators to be managed by this layer
- extended layers for position-velocity(-effort)-controlled actuators
- layer implementation for ROBOTIS Dynamixel actuators
- layer implementation for maxon EPOS actuator controllers
- layer implementation for joints of a virtual robot in the Gazebo simulator