![]() |
libfranka 0.21.3
FCI C++ API
|
Describes the robot state. More...
#include <robot_state.h>

Public Attributes | |
| std::array< double, 16 > | O_T_EE {} |
| \(^{O}T_{EE}\) Measured end effector pose in base frame. | |
| std::array< double, 16 > | O_T_EE_d {} |
| \({^OT_{EE}}_{d}\) Last desired end effector pose of motion generation in base frame. | |
| std::array< double, 16 > | F_T_EE {} |
| \(^{F}T_{EE}\) End effector frame pose in flange frame. | |
| std::array< double, 16 > | F_T_NE {} |
| \(^{F}T_{NE}\) Nominal end effector frame pose in flange frame. | |
| std::array< double, 16 > | NE_T_EE {} |
| \(^{NE}T_{EE}\) End effector frame pose in nominal end effector frame. | |
| std::array< double, 16 > | EE_T_K {} |
| \(^{EE}T_{K}\) Stiffness frame pose in end effector frame. | |
| double | m_ee {} |
| \(m_{EE}\) Configured mass of the end effector. | |
| std::array< double, 9 > | I_ee {} |
| \(I_{EE}\) Configured rotational inertia matrix of the end effector load with respect to center of mass. | |
| std::array< double, 3 > | F_x_Cee {} |
| \(^{F}x_{C_{EE}}\) Configured center of mass of the end effector load with respect to flange frame. | |
| double | m_load {} |
| \(m_{load}\) Configured mass of the external load. | |
| std::array< double, 9 > | I_load {} |
| \(I_{load}\) Configured rotational inertia matrix of the external load with respect to center of mass. | |
| std::array< double, 3 > | F_x_Cload {} |
| \(^{F}x_{C_{load}}\) Configured center of mass of the external load with respect to flange frame. | |
| double | m_total {} |
| \(m_{total}\) Sum of the mass of the end effector and the external load. | |
| std::array< double, 9 > | I_total {} |
| \(I_{total}\) Combined rotational inertia matrix of the end effector load and the external load with respect to the center of mass. | |
| std::array< double, 3 > | F_x_Ctotal {} |
| \(^{F}x_{C_{total}}\) Combined center of mass of the end effector load and the external load with respect to flange frame. | |
| std::array< double, 2 > | elbow {} |
| Elbow configuration. | |
| std::array< double, 2 > | elbow_d {} |
| Desired elbow configuration. | |
| std::array< double, 2 > | elbow_c {} |
| Commanded elbow configuration. | |
| std::array< double, 2 > | delbow_c {} |
| Commanded elbow velocity. | |
| std::array< double, 2 > | ddelbow_c {} |
| Commanded elbow acceleration. | |
| std::array< double, 7 > | tau_J {} |
| \(\tau_{J}\) Measured link-side joint torque sensor signals. | |
| std::array< double, 7 > | tau_J_d {} |
| \({\tau_J}_d\) Desired link-side joint torque sensor signals without gravity. | |
| std::array< double, 7 > | dtau_J {} |
| \(\dot{\tau_{J}}\) Derivative of measured link-side joint torque sensor signals. | |
| std::array< double, 7 > | q {} |
| \(q\) Measured joint position. | |
| std::array< double, 7 > | q_d {} |
| \(q_d\) Desired joint position. | |
| std::array< double, 7 > | dq {} |
| \(\dot{q}\) Measured joint velocity. | |
| std::array< double, 7 > | dq_d {} |
| \(\dot{q}_d\) Desired joint velocity. | |
| std::array< double, 7 > | ddq_d {} |
| \(\ddot{q}_d\) Desired joint acceleration. | |
| std::array< double, 7 > | joint_contact {} |
| Indicates whether contact is reported for each joint. | |
| std::array< double, 6 > | cartesian_contact {} |
| Indicates whether contact is reported for each Cartesian dimension \((x,y,z,R,P,Y)\). | |
| std::array< double, 7 > | joint_collision {} |
| Indicates whether a collision is reported for each joint. | |
| std::array< double, 6 > | cartesian_collision {} |
| Indicates whether a collision is reported for each Cartesian dimension \((x,y,z,R,P,Y)\). | |
| std::array< double, 7 > | tau_ext_hat_filtered {} |
| \(\hat{\tau}_{\text{ext}}\) Low-pass filtered torques generated by external forces on the joints. | |
| std::array< double, 6 > | O_F_ext_hat_K {} |
| \(^OF_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the base frame. | |
| std::array< double, 6 > | K_F_ext_hat_K {} |
| \(^{K}F_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the stiffness frame. | |
| std::array< double, 6 > | O_dP_EE_d {} |
| \({^OdP_{EE}}_{d}\) Desired end effector twist in base frame. | |
| std::array< double, 3 > | O_ddP_O {} |
| \({^OddP}_O\) Linear component of the acceleration of the robot's base, expressed in frame parallel to the base frame, i.e. | |
| std::array< double, 16 > | O_T_EE_c {} |
| \({^OT_{EE}}_{c}\) Last commanded end effector pose of motion generation in base frame. | |
| std::array< double, 6 > | O_dP_EE_c {} |
| \({^OdP_{EE}}_{c}\) Last commanded end effector twist in base frame. | |
| std::array< double, 6 > | O_ddP_EE_c {} |
| \({^OddP_{EE}}_{c}\) Last commanded end effector acceleration in base frame. | |
| std::array< double, 7 > | theta {} |
| \(\theta\) Motor position. | |
| std::array< double, 7 > | dtheta {} |
| \(\dot{\theta}\) Motor velocity. | |
| std::array< std::array< float, 3 >, 6 > | accelerometer_top {} |
| \(\ddot{x}\) Translational acceleration data from the accelerometers located on the top of the PCB of Joint 1 through Joint 6 (no accelerometers in the last joint). | |
| std::array< std::array< float, 3 >, 6 > | accelerometer_bottom {} |
| \(\ddot{x}\) Translational acceleration data from the accelerometers located on the bottom of the PCB of Joint 1 through Joint 6 (no accelerometers in the last joint). | |
| Errors | current_errors {} |
| Current error state. | |
| Errors | last_motion_errors {} |
| Contains the errors that aborted the previous motion. | |
| double | control_command_success_rate {} |
| Percentage of the last 100 control commands that were successfully received by the robot. | |
| RobotMode | robot_mode = RobotMode::kUserStopped |
| Current robot mode. | |
| Duration | time {} |
| Strictly monotonically increasing timestamp since robot start. | |
Describes the robot state.
| std::array<std::array<float, 3>, 6> franka::RobotState::accelerometer_bottom {} |
\(\ddot{x}\) Translational acceleration data from the accelerometers located on the bottom of the PCB of Joint 1 through Joint 6 (no accelerometers in the last joint).
Unit: \([\frac{m}{s^2}]\)
| std::array<std::array<float, 3>, 6> franka::RobotState::accelerometer_top {} |
\(\ddot{x}\) Translational acceleration data from the accelerometers located on the top of the PCB of Joint 1 through Joint 6 (no accelerometers in the last joint).
Unit: \([\frac{m}{s^2}]\)
| std::array<double, 6> franka::RobotState::cartesian_collision {} |
Indicates whether a collision is reported for each Cartesian dimension \((x,y,z,R,P,Y)\).
The signal is derived from the estimated external wrench and the upper force threshold configured with Robot::setCollisionBehavior. Unlike contact, collision is a latching signal: it remains non-zero even after the external wrench drops, until the error is explicitly cleared via automaticErrorRecovery().
A collision triggers a reflex stop; while the reflex is active, the robot enters RobotMode::kReflex.
Values: 0.0 = no collision, non-zero = collision detected (latched).
| std::array<double, 6> franka::RobotState::cartesian_contact {} |
Indicates whether contact is reported for each Cartesian dimension \((x,y,z,R,P,Y)\).
The signal is derived from the estimated external wrench and the lower force threshold configured with Robot::setCollisionBehavior. The value is 0.0 when no contact is reported and non-zero while contact is active. It returns to zero automatically once contact is no longer detected.
| double franka::RobotState::control_command_success_rate {} |
Percentage of the last 100 control commands that were successfully received by the robot.
Shows a value of zero if no control or motion generator loop is currently running.
Range: \([0, 1]\).
| std::array<double, 2> franka::RobotState::ddelbow_c {} |
Commanded elbow acceleration.
The values of the array are:
| std::array<double, 7> franka::RobotState::ddq_d {} |
\(\ddot{q}_d\) Desired joint acceleration.
Unit: \([\frac{rad}{s^2}]\)
| std::array<double, 2> franka::RobotState::delbow_c {} |
Commanded elbow velocity.
The values of the array are:
| std::array<double, 7> franka::RobotState::dq {} |
\(\dot{q}\) Measured joint velocity.
Unit: \([\frac{rad}{s}]\)
| std::array<double, 7> franka::RobotState::dq_d {} |
\(\dot{q}_d\) Desired joint velocity.
Unit: \([\frac{rad}{s}]\)
| std::array<double, 7> franka::RobotState::dtau_J {} |
\(\dot{\tau_{J}}\) Derivative of measured link-side joint torque sensor signals.
Unit: \([\frac{Nm}{s}]\)
| std::array<double, 7> franka::RobotState::dtheta {} |
\(\dot{\theta}\) Motor velocity.
Unit: \([\frac{rad}{s}]\)
| std::array<double, 16> franka::RobotState::EE_T_K {} |
\(^{EE}T_{K}\) Stiffness frame pose in end effector frame.
Pose is represented as a 4x4 matrix in column-major format.
See also K frame.
| std::array<double, 2> franka::RobotState::elbow {} |
Elbow configuration.
The values of the array are:
| std::array<double, 2> franka::RobotState::elbow_c {} |
Commanded elbow configuration.
The values of the array are:
| std::array<double, 2> franka::RobotState::elbow_d {} |
Desired elbow configuration.
The values of the array are:
| std::array<double, 16> franka::RobotState::F_T_EE {} |
| std::array<double, 16> franka::RobotState::F_T_NE {} |
| std::array<double, 7> franka::RobotState::joint_collision {} |
Indicates whether a collision is reported for each joint.
The signal is derived from the estimated external joint torque and the upper torque threshold configured with Robot::setCollisionBehavior. Unlike contact, collision is a latching signal: it remains non-zero even after the external torque drops, until the error is explicitly cleared via automaticErrorRecovery().
A collision triggers a reflex stop; while the reflex is active, the robot enters RobotMode::kReflex.
Values: 0.0 = no collision, non-zero = collision detected (latched).
| std::array<double, 7> franka::RobotState::joint_contact {} |
Indicates whether contact is reported for each joint.
The signal is derived from the estimated external joint torque and the lower torque threshold configured with Robot::setCollisionBehavior. The value is 0.0 when no contact is reported and non-zero while contact is active. It returns to zero automatically once contact is no longer detected.
| std::array<double, 6> franka::RobotState::K_F_ext_hat_K {} |
\(^{K}F_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the stiffness frame.
Forces applied by the robot to the environment are positive, while forces applied by the environment on the robot are negative. Becomes \([0,0,0,0,0,0]\) when near or in a singularity. See also Stiffness frame K. Unit: \([N,N,N,Nm,Nm,Nm]\).
| std::array<double, 16> franka::RobotState::NE_T_EE {} |
\(^{NE}T_{EE}\) End effector frame pose in nominal end effector frame.
Pose is represented as a 4x4 matrix in column-major format.
| std::array<double, 6> franka::RobotState::O_ddP_EE_c {} |
\({^OddP_{EE}}_{c}\) Last commanded end effector acceleration in base frame.
Unit: \([\frac{m}{s^2},\frac{m}{s^2},\frac{m}{s^2},\frac{rad}{s^2},\frac{rad}{s^2},\frac{rad}{s^2}]\).
| std::array<double, 3> franka::RobotState::O_ddP_O {} |
\({^OddP}_O\) Linear component of the acceleration of the robot's base, expressed in frame parallel to the base frame, i.e.
the base's translational acceleration. If the base is resting this shows the direction of the gravity vector. It is harcoded for now to {0, 0, -9.81}.
| std::array<double, 6> franka::RobotState::O_dP_EE_c {} |
\({^OdP_{EE}}_{c}\) Last commanded end effector twist in base frame.
Unit: \([\frac{m}{s},\frac{m}{s},\frac{m}{s},\frac{rad}{s},\frac{rad}{s},\frac{rad}{s}]\).
| std::array<double, 6> franka::RobotState::O_dP_EE_d {} |
\({^OdP_{EE}}_{d}\) Desired end effector twist in base frame.
Unit: \([\frac{m}{s},\frac{m}{s},\frac{m}{s},\frac{rad}{s},\frac{rad}{s},\frac{rad}{s}]\).
| std::array<double, 6> franka::RobotState::O_F_ext_hat_K {} |
\(^OF_{K,\text{ext}}\) Estimated external wrench (force, torque) acting on stiffness frame, expressed relative to the base frame.
Forces applied by the robot to the environment are positive, while forces applied by the environment on the robot are negative. Becomes \([0,0,0,0,0,0]\) when near or in a singularity. See also Stiffness frame K. Unit: \([N,N,N,Nm,Nm,Nm]\).
| std::array<double, 16> franka::RobotState::O_T_EE {} |
\(^{O}T_{EE}\) Measured end effector pose in base frame.
Pose is represented as a 4x4 matrix in column-major format.
| std::array<double, 16> franka::RobotState::O_T_EE_c {} |
\({^OT_{EE}}_{c}\) Last commanded end effector pose of motion generation in base frame.
Pose is represented as a 4x4 matrix in column-major format.
| std::array<double, 16> franka::RobotState::O_T_EE_d {} |
\({^OT_{EE}}_{d}\) Last desired end effector pose of motion generation in base frame.
Pose is represented as a 4x4 matrix in column-major format.
| std::array<double, 7> franka::RobotState::q {} |
\(q\) Measured joint position.
Unit: \([rad]\)
| std::array<double, 7> franka::RobotState::q_d {} |
\(q_d\) Desired joint position.
Unit: \([rad]\)
| std::array<double, 7> franka::RobotState::tau_ext_hat_filtered {} |
\(\hat{\tau}_{\text{ext}}\) Low-pass filtered torques generated by external forces on the joints.
It does not include configured end-effector and load nor the mass and dynamics of the robot. tau_ext_hat_filtered is the error between tau_J and the expected torques given by the robot model. Unit: \([Nm]\).
| std::array<double, 7> franka::RobotState::tau_J {} |
\(\tau_{J}\) Measured link-side joint torque sensor signals.
Unit: \([Nm]\)
| std::array<double, 7> franka::RobotState::tau_J_d {} |
\({\tau_J}_d\) Desired link-side joint torque sensor signals without gravity.
Unit: \([Nm]\)
| std::array<double, 7> franka::RobotState::theta {} |
\(\theta\) Motor position.
Unit: \([rad]\)
| Duration franka::RobotState::time {} |
Strictly monotonically increasing timestamp since robot start.
Inside of control loops time_step parameter of Robot::control can be used instead.