Series Elastic Actuators (SEA) arms#
Note
This page only applies to robots equipped with Series Elastic Actuators arms (TIAGo SEA and TIAGoPro). For classical arms, refer to TIAGo arm
Series elastic actuators (SEA) offer several advantages over traditional actuation. One primary benefit is the inherent compliance of the actuator, reducing the risks associated with human-robot interaction and potential damage to the robot if a collision occurs.
Additionally, the inclusion of an elastic element in the actuator enables torque estimation at the joint level by measuring the deflection of the elastic element.
Torque estimation allows for the closing of a torque control loop, enabling advanced control techniques such as force control, gravity compensation, dynamic whole-body control, feedback linearization, and more.
Joint-level torque sensing#
As mentioned, one feature of SEAs is the possibility to estimate the external load (torque) by measuring the deflection of the series elastic element (SEE) by means the Hooke law.
The deflection of the SEE is measured by means of two encoders, one mounted on the actuator’s output and the other one mounted on rotor of the motor. The measure of the deflection is affected by an error called fingerprint.
The fingerprint is position-dependent, thus is possible to compensate for it once it has been estimated; the torque related to the deformation of the SEE (tau_SEE) is then computed as:
As mentioned, a key feature of Series Elastic Actuators (SEAs) is their ability to estimate external load, specifically torque, by measuring the deflection of the Series Elastic Element (SEE) using Hooke’s law. This deflection is determined through two encoders: one mounted on the output of the actuator, and the other mounted on the rotor of the motor.
Moreover, the friction torques internal to the actuator are compensated using a non-linear friction model that has been identified through experiments. The torque applied to the joint (\(\tau_j\)) is eventually computed as:
Note
All the torque readings are expressed in Nm.
The joint torque state controller#
By default, the effort field in the /joint_states topic represents the phase current of the actuators. However, in this robot, a different controller known as the “joint torque state controller” publishes the [🤔 ROS2?] /joint_torque_states topic. Here, the effort field corresponds to the estimated torque of the joints.
Plot the torques#
Open Plot Juggler and subscribe to
[🤔 ROS2?] /joint_torque_states. The torque readings are under the namespace
effort
, e.g. /joint_torque_states/arm_right_1_joint/effort
.
Visualize torques in RViz#
Open RViz and load the robot model.
Add the Effort visualization by clicking the Add button located in the lower left corner, then select it from the available options.
In the Effort tab, locate the Effort field.
Select [🤔 ROS2?] /joint_torque_states from the dropdown menu in the Topic field.
Note
An error message might show up in the Effort tab, that happens because there is no torque sensing in the head joints.