tasks::qp::JointGains

jointName string
stiffness number
damping number
{
  "name": "J0",
  "stiffness": 5.0
}
name: J0
stiffness: 5.0
mc_tasks::LookAtTask
[API]
type constant  lookAt 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
frameVector
Eigen::Vector3d

array[3]  number
targetPos
Eigen::Vector3d

array[3]  number
targetVector
Eigen::Vector3d

array[3]  number
relativeVector Specify a target vector relative to the current orientation of the robot in the world
Eigen::Vector3d

array[3]  number
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
{
  "type": "lookAt",
  "frame": "dcamera",
  "frameVector": [1.0, 0.0, 0.0],
  "targetPos": [0.0, 0.0, 0.0]
}
type: lookAt
frame: dcamera
frameVector: [1.0, 0.0, 0.0]
targetPos: [0.0, 0.0, 0.0]
mc_tasks::EndEffectorTask
[API]
type constant  body6d 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
bodyPoint
Eigen::Vector3d

array[3]  number
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
position
Eigen::Vector3d

array[3]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
Relative target specification

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
position
Eigen::Vector3d

array[3]  number
orientationStiffness number ≥ 0  default 2
orientationWeight number ≥ 0  default 1000
positionStiffness number ≥ 0  default 2
positionWeight number ≥ 0  default 1000
stiffness number ≥ 0 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0 Task's weight
{
  "type": "body6d",
  "frame": "r_wrist",
  // Rotation expressed as RPY (in radian)
  // May also be expressed as quaternion or rotation matrix
  "orientation": [0.0, 0.0, 0.0],
  "position": [0.0, 0.0, 0.0]
}
type: body6d
frame: r_wrist
# Rotation expressed as RPY (in radian)
# May also be expressed as quaternion or rotation matrix
orientation: [0.0, 0.0, 0.0]
position: [0.0, 0.0, 0.0]
mc_tasks::CoMTask
[API]
Task that manages the robot's center of mass (CoM).
Targets are loaded in the following order: current com position -> com -> above -> move_com. For example if you wish to move the CoM 2cm left of the right foot, you can combine "above: RightFoot" and "move_com: [0,0.02,0]". When no target is provided, the current CoM position is targeted.
type constant  com 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
stiffness number ≥ 0  default 5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 100 Task's weight
com Desired position of the CoM (world frame)
Eigen::Vector3d

array[3]  number
move_com Move the desired CoM position (world frame)
Eigen::Vector3d

array[3]  number
{
  "type": "com",
  "com": [0.0, 0.0, 0.71]
}
type: com
com: [0.0, 0.0, 0.71]
mc_tasks::LookAtTFTask
[API]
type constant  lookAtTF 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
frameVector
Eigen::Vector3d

array[3]  number
sourceFrame string
targetFrame string
stiffness number ≥ 0  default 0.5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 200 Task's weight
{
  "type": "lookAtTF",
  "frame": "dcamera",
  "frameVector": [1, 0, 0],
  "sourceFrame": "robot_map",
  "targetFrame": "target_name"
}
type: lookAtTF
frame: bodyName
frameVector: [1, 0, 0]
sourceFrame: robot_map
targetFrame: target_name
mc_tasks::VectorOrientationTask
[API]
type constant  vectorOrientation 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
frameVector
Eigen::Vector3d

array[3]  number
targetVector
Eigen::Vector3d

array[3]  number
relativeVector Specify a target vector relative to the current orientation of the robot in the world
Eigen::Vector3d

array[3]  number
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
{
  "type": "vectorOrientation",
  "frame": "dcamera",
  "frameVector": [1.0, 0.0, 0.0],
  "targetVector": [0.0, 0.0, 1.0]
}
type: vectorOrientation
frame: dcamera
frameVector: [1.0, 0.0, 0.0]
targetVector: [0.0, 0.0, 1.0]
mc_tasks::OrientationTask
[API]
type constant  orientation 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
relative The target is specified relatively to the middle point between two surfaces s1 and s2
Relative target specification

The target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
{
  "type": "orientation",
  "frame": "r_wrist",
  // Rotation expressed as RPY (in radian)
  // May also be expressed as quaternion or rotation matrix
  "orientation":  [0.0, 0.0, 0.0]
}
type: orientation
frame: r_wrist
# Rotation expressed as RPY (in radian)
# May also be expressed as quaternion or rotation matrix
orientation: [0.0, 0.0, 0.0]
mc_tasks::PostureTask
[API]
type constant  posture 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::VectorXd

array  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
stiffness number ≥ 0  default 1 Tasks's stiffness
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 10 Task's weight
posture array  array  number Posture target
jointGains array  Gains for specific joints
tasks::qp::JointGains

jointName string
stiffness number
damping number
jointWeights Weights for specific joints
object

Weights for specific joints
* number Joint weight
target array  array  [ string , array  [ number ] ] Map of joint names -> vector of joint values
{
  "type": "posture",
  "stiffness": 1.0,
  "weight": 1.0,
  "posture": [
              [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7],
              [0],
              [],
              [1.5]
             ]
}
type: posture
stiffness: 1.0
weight: 1.0
posture:
  - [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7]
  - [0]
  - []
  - [1.5]
mc_tasks::AddContactTask
[API]
type constant  addContact 
name string Name of the task
contact Contact to establish or remove. The tasks controls the first robot "r1".
mc_rbdyn::Contact

Requires an mc_rbdyn::Robots instance to be loaded
r1Surface string
r2Surface string
r1 string  default MainRobot Name of first robot involved in the contact
r2 string  default First extra robot Name of second robot involved in the contact
isFixed boolean
X_r2s_r1s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
friction number  default 0.7
ambiguityId integer  default -1
speed number ≥ 0  default 0.01 Speed at which the contact surface "r1Surface" moves along the normal "T_0_s".
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
stiffness number ≥ 0  default 2 Task's stiffness
weight number ≥ 0  default 1000 Task's weight
T_0_s If provided, overrides the chosen normal direction (default: direction of the z axis of "r1Surface")
Eigen::Vector3d

array[3]  number
{
  "type": "addContact",
  "contact":
  {
    "r1Surface": "LeftFoot",
    "r2Surface": "AllGround",
    "r1": "jvrc1",
    "r2": "ground",
    "isFixed": false
  },
  "speed": 0.05,
  "stiffness": 1.0,
  "weight": 100.0
}
type: addContact
contact:
  r1Surface: LeftFoot
  r2Surface: AllGround
  r1: jvrc1
  r2: ground
  isFixed: false
speed: 0.05
stiffness: 1.0
weight: 100.0
mc_tasks::force::CoPTask
[API]
This task control the center of pressure (CoP) of a robot surface attached to a force sensor.
- Force measurements are used in an admittance control law to compute the velocity of the surface motion to bring the measured CoP to its desired target position.
- Only axes where the admittance gains are non null will be affected by force control. Along all other axes, the reference position and velocity will be tracked.
- High stiffness/Low damping will favor position control (targetPose/targetSurface)
- Low stiffness/High damping will favour velocity control.
- Use [low-stiffness/high-damping/non-zero admittance gains] to achieve force control along one of the controlled surface axis.
type constant  cop 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the desired wrench ([torque, force] in controlled surface frame). If some values are NaN, this direction is ignored
Eigen::Vector6d

array[6]  number
copError True when the difference between the desired and measured CoP is below this threshold
Eigen::Vector2d

array[2]  number
force True when the measured force reaches the desired force (in controlled surface frame). If some values are NaN, this direction is ignored
Eigen::Vector3d

array[3]  number
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
admittance Admittance gains. Non-zero gains will be used to compute which surface velocity to apply in order to move the CoP towards its target
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
cop Desired CoP in controlled surface frame
Eigen::Vector2d

array[2]  number
force Desired force in controlled surface frame
Eigen::Vector3d

array[3]  number
targetPose Ignored if targetSurface or targetFrame is specified. Provides a reference world pose for the controlled surface
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetFrame Target a robot frame
targetFrame

Target a robot frame
robot string  default MainRobot Name of robot to which this surface is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetSurface Target as a robot surface
targetSurface

Target as a robot surface
robot string  default MainRobot Name of robot to which this surface is attached
surface string
offset_translation
Eigen::Vector3d

array[3]  number
offset_rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
stiffness number ≥ 0  default 5 Task's stiffness (affects position control)
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping (affects velocity/force control).
weight number ≥ 0  default 1000 Task's weight
{
  "type": "cop",
  "frame": "LeftFootCenter",
  "pose":
  {
    // Rotation expressed as RPY (in radian)
    // May also be expressed as quaternion or rotation matrix
    "rotation":    [0.0, 0.0, 0.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "cop": [2.0, 0.0],
  "force": [0.0, 0.0, 0.0],
  "admittance":
  {
    "couple": [0.0, 0.005, 0.0],
    "force": [0.0, 0.0, 0.0005]
  }
}
type: cop
frame: LeftFootCenter
cop: [2.0, 0.0]
targetFrame:
  robot: ground
  frame: AllGround
  offset:
    translation: [0.0, 0.0, 0.1]
    rotation: [3.14, 0.0, 0.0]
force: [0.0, 0.0, 0.0]
admittance:
  couple: [0.0, 0.005, 0.0]
  force: [0.0, 0.0, 0.0005]
mc_tasks::RelativeEndEffectorTask
[API]
type constant  relBody6d 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
relativeFrame Relative frame tracked by this task
object

Relative frame tracked by this task
robot string  default MainRobot Name of robot to which the frame is attached
frame string
bodyPoint
Eigen::Vector3d

array[3]  number
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
position
Eigen::Vector3d

array[3]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
Relative target specification

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
orientation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
position
Eigen::Vector3d

array[3]  number
orientationStiffness number ≥ 0  default 10
orientationWeight number ≥ 0  default 1000
positionStiffness number ≥ 0  default 10
positionWeight number ≥ 0  default 1000
stiffness number ≥ 0 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0 Task's weight
{
  "type": "relBody6d",
  "frame": "r_wrist",
  "relativeFrame":
  {
    "frame": "l_wrist"
  },
  // Rotation expressed as RPY (in radian)
  // May also be expressed as quaternion or rotation matrix
  "orientation": [0.0, 0.0, 0.0],
  "position": [0.0, 0.0, 0.0]
}
type: relBody6d
frame: r_wrist
relativeFrame:
  frame: l_wrist
# Rotation expressed as RPY (in radian)
# May also be expressed as quaternion or rotation matrix
orientation: [0.0, 0.0, 0.0]
position: [0.0, 0.0, 0.0]
mc_tasks::lipm_stabilizer::StabilizerTask
[API]
The stabilizer task attempts to make the real system track as best as possible the desired state of the CoM (position, velocity, acceleration) and ZMP based on the LIPM model. The reference desired dynamic state must be valid, and continuous (i.e obtained from a walking MPC). A suitable state observation pipeline is required to observe the CoM position and velocity and ZMP of the real system (e.g [Encoder, KinematicInertialObserver]). Default gains are defined in the robot module (mc_rbdyn::RobotModule) and may be overriden from configuration (the default gains reported in this schemas are those of mc_rtc in case none is provided by the RobotModule).
See the LIPM Stabilizer tutorial and the API Documentation mc_tasks::lipm_stabilizer::StabilizerTask for further information.
type constant  lipm_stabilizer 
name string
robot string  default MainRobot Name of the robot to which this task applies
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
contacts array  enum  string  Left  Right  Support contact surfaces (default: [Left, Right])
Left Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
Right Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
* You may specify different configuration entries on a per-robot basis. In this case the key is the robot name and the values are the configuration parameters you want to modify for that robot
Robot-specific stabilizer configuration

You may specify different configuration entries on a per-robot basis. In this case the key is the robot name and the values are the configuration parameters you want to modify for that robot
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
contacts array  enum  string  Left  Right  Support contact surfaces (default: [Left, Right])
Left Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
Right Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
{
   "type": "lipm_stabilizer",
   "contacts": [ "Left", "Right" ],
   "Left": {
      "rotation": [ 0, 0, 0 ],
      "height": 0
   },
   "Right": {
      "overwriteRotationRPY": {
        "roll": 0,
        "pitch": 0
      },
      "height": 0
   },
   "jvrc1": {
      "dcm_tracking": {
         "gains": {
            "prop": 4,
            "integral": 10,
            "deriv": 0.5
         },
         "derivator_time_constant": 1,
         "integrator_time_constant": 10
      }
   }
}
###
# Stabilizer MetaTask configuration
#
# This task is initialized in the following order:
# - Default configuration is loaded from the
#   robot module (gains, default surface names, joint names, etc).
# - Then general configuration is loaded from this YAML task configuration
# - Then robot-specific configuration is loaded from the `robot_name` group
#   in which you may override any of the previous configuration
#
# In most cases, the user will not need to care about the general stabilizer configuration,
# and is only expected to provide information about how the statbilizer is meant to be used:
# - contacts: list of established contacts (one of [Left, Right])
#   By default the current estimated contact surface pose from the real robot
#   is used as the reference contact frame. You may override this behaviour by providing
#   `Left` or `Right` entries with the desired contact targets.
#
# The JSON example shows such a simple configuration
###
# More complete example with most of the possible configurations.
# See the JSON schema for a full list of available members
#
# Note: than in practice, most users will not need to provide
# all these configuration parameters as the default
# should be good-enough in most use-cases.
#
# Note2: the gains provided here are just meant as an example on how to override
# the default gains with your own, do not expect those to behave well.
# Please refer to the RobotModule for valid default gains.
###
type: lipm_stabilizer
enabled: true

# Global configuration
friction: 0.8

contacts: [Left, Right]
Left:
  rotation: [0,0,0]
  height: 0
Right:
  # Keep the world yaw intact, align roll/pitch with the (flat) ground
  overwriteRotationRPY:
    roll: 0
    pitch: 0
  height: 0

# Weights for the force-distribution QP
fdqp_weights:
  net_wrench: 10000
  ankle_torque: 100
  pressure: 1
tasks:
  com:
    stiffness: [1000, 1000, 100]
    weight: 1000
    height: 0.87

contact:
  damping: 300
  stiffness: 1
  weight: 10000

# Vertical drift frequency
vdc:
  frequency: 1
  stiffness: 1000

# Configuration specific to jvrc1.
jvrc1:
  leftFootSurface: LeftFootCenter
  rightFootSurface: RightFootCenter
  torsoBodyName: WAIST_R_S
  tasks:
    com:
      active_joints: [
       Root,
       R_HIP_Y, R_HIP_R, R_HIP_P, R_KNEE, R_ANKLE_P, R_ANKLE_R,
       L_HIP_Y, L_HIP_R, L_HIP_P, L_KNEE, L_ANKLE_P, L_ANKLE_R
      ]
      height: 0.75

  admittance:
    cop: [0.005, 0.005]

  dcm_tracking:
    gains:
      prop: 4
      integral: 10
      deriv: 0.5
    derivator_time_constant: 1
    integrator_time_constant: 10

# Configuration specific to other_robot
other_robot:
  leftFootSurface: YourLeftFootCenter
  rightFootSurface: YourRightFootCenter
  torsoBodyName: torso

  admittance:
    cop: [0.001, 0.001]
mc_tasks::ExactCubicTrajectoryTask
[API]
Follow an exact cubic curve (passing exactly through waypoints with initial/final velocity and acceleration constraints)
All targets and waypoints are defined in world frame, except when using "targetFrame". In that case they are defined in target surface frame.
type constant  exact_cubic_trajectory 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the given wrench [torque, force] in controlled surface frame.
if some values are NaN, this direction is ignored
Eigen::Vector6d

array[6]  number
timeElapsed number ≥ 0 True when the trajectory's "duration" is elapsed
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
stiffness number ≥ 0  default 100 Tasks's stiffness. Contrary to most tasks, the stiffness here is expected to be high, as the trajectory task will track small errors. It is not uncommon to use a stiffness of 1000 or more if tracking accuracy is important.
Warning: Be careful to avoid discontinuities in the trajectory (e.g while manipulating the targets from the GUI), as the high tracking stiffness could generate fast motions.
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight. Note that the trajectory task tends to severely constrain the robot motion and may significantly interfere with other tasks when it is given too much importance.
duration number ≥ 0  default 10 Task's duration. Note, you may use the "timeElapsed: true" completion criteria.
paused boolean  default false When true, start the task in a paused state (targets the current surface pose until unpaused)
displaySamples number ≥ 1  default 20 Number of points to sample along the trajectory for visual display
gainsInterpolation Linear interpolation parameters for the tasks's gains expressed as pairs of (time, gain). The initial gains are those specified by dimWeight, stiffness and damping unless otherwise specified.
GainsInterpolation

Linear interpolation parameters for the tasks's gains expressed as pairs of (time, gain). The initial gains are those specified by dimWeight, stiffness and damping unless otherwise specified.
stiffness array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
damping array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
dimWeight array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
targetFrame Targets and waypoints defined in target surface frame
Relative Target

Targets and waypoints defined in target surface frame
robot string  default MainRobot Name of robot on which this surface is defined
frame string Frame on the robot.
translation Offset in translation wrt to the target robot's surface
Eigen::Vector3d

array[3]  number
rotation Offset in rotation wrt to the target robot's surface
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
controlPoints array  [ number , ] Position waypoints (pairs of time and position)
Eigen::Vector3d

array[3]  number
oriWaypoints array  [ number , ] Orientation waypoints (pairs of time and orientation)
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
init_vel  default [0,0,0] Initial velocity
Eigen::Vector3d

array[3]  number
init_acc  default [0,0,0] Initial acceleration
Eigen::Vector3d

array[3]  number
end_vel  default [0,0,0] Final velocity
Eigen::Vector3d

array[3]  number
end_acc  default [0,0,0] Final acceleration
Eigen::Vector3d

array[3]  number
target Target relative to world. Ignored if targetFrame is specified, required otherwise
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
controlPoints array  [ number , ] Position waypoints relative to world (pairs of time and position). Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
oriWaypoints array  [ number , ] Orientation waypoints relative to world (pairs of time and orientation) relative to the world. Ignored if targetFrame is specified
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
init_vel  default [0,0,0] Initial velocity (world). Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
init_acc  default [0,0,0] Initial acceleration (world). Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
end_vel  default [0,0,0] Final velocity (world). Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
end_acc  default [0,0,0] Final acceleration (world). Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
{
  "type": "exact_cubic_trajectory",
  "frame": "LeftFoot",
  "stiffness": 10000.0,
  "duration": 15.0,
  "weight": 100,
  "dimWeight": [0.5, 0.5, 0.5, 1.0, 1.0, 1.0],
  "displaySamples": 100,
  "completion": { "timeElapsed": true },
  "targetFrame":
  {
    "robot": "ground",
    "frame": "AllGround",
    "translation": [0.05, -0.05, -0.025],
    "rotation": [0.0, -1.57, 0.0],
    // control points in target surface frame
    "controlPoints":
    [
      [8.0, [-0.25, -0.35, 0.1]],
      [12.0, [-0.08, -0.13, 0.1]]
    ],
    "oriWaypoints":
    [
      [13.0, [0.0, -1.57, 0.0]]
    ],
    "init_vel" : [0.0,0.0,0.0],
    "init_acc" : [0.0,0.0,0.0],
    "end_vel" : [0.0,0.0,0.0],
    "end_acc" : [0.0,0.0,0.0]
  }
}
type: exact_cubic_trajectory
frame: LeftFoot
stiffness: 10000.0
duration: 15.0
weight: 100
dimWeight: [0.5, 0.5, 0.5, 1.0, 1.0, 1.0]
displaySamples: 100
# Task is complete when it has reached its total duration,
# Or if a force greater than 20N has been detected
# along the Z axis (early contact)
completion:
  OR:
    - timeElapsed: true
    - wrench: [.NaN, .NaN, .NaN, .NaN, .NaN, 20]
targetFrame:
  robot: ground
  frame: AllGround
  translation: [0.05, -0.05, -0.025]
  rotation: [0.0, -1.57, 0.0]
  # control points in target surface frame
  controlPoints:
    - [8.0, [-0.25, -0.35, 0.1]]
    - [12.0, [-0.08, -0.13, 0.1]]
  oriWaypoints:
    - [13.0, [0.0, -1.57, 0.0]]
  init_vel : [0.0,0.0,0.0]
  init_acc : [0.0,0.0,0.0]
  end_vel : [0.0,0.0,0.0]
  end_acc : [0.0,0.0,0.0]
mc_tasks::TransformTask
[API]
type constant  transform 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the desired wrench ([torque, force] in controlled surface frame). If some values are NaN, this direction is ignored. Only valid if the controlled surface is attached to a force sensor (throws otherwise).
Eigen::Vector6d

array[6]  number
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
move Move relative to the current target frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
moveWorld Move relative to world frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
target Target a world frame pose (position and orientation)
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetFrame Target a robot frame
targetFrame

Target a robot frame
robot string  default MainRobot Name of robot to which this surface is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetSurface Target as a robot surface
targetSurface

Target as a robot surface
robot string  default MainRobot Name of robot to which this surface is attached
surface string
offset_translation
Eigen::Vector3d

array[3]  number
offset_rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
object

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
target Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetPosition Target a world position
Eigen::Vector3d

array[3]  number
targetRotation Target a world rotation
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
refVel Trajectory's reference velocity
Eigen::Vector6d

array[6]  number
refAccel Trajectory's reference acceleration
Eigen::Vector6d

array[6]  number
{
  "type": "transform",
  "frame": "LeftFoot",
  "target":
  {
    // Rotation expressed as RPY (in radian)
    // May also be expressed as quaternion or rotation matrix
    "rotation":    [0.0, 0.0, 0.0],
    "translation": [0.0, 0.0, 0.0]
  }
}
type: transform
frame: LeftFoot
targetFrame:
  robot: ground
  frame: AllGround
  offset:
    translation: [0.0, 0.0, 0.1]
    rotation: [3.14, 0.0, 0.0]
mc_tasks::force::AdmittanceTask
[API]
This task tracks a desired wrench with an admittance control law (converts wrench-error to a desired surface velocity).
- Force measurements are used in an admittance control law to compute the velocity of the surface to bring the measured wrench towards its desired target.
- Only axes where the admittance gains are non null will be affected by force control. Along all other axes, the reference position and velocity will be tracked.
- High stiffness/Low damping will favor position control (targetPose/targetFrame)
- Low stiffness/High damping will favour velocity control.
- Use [low-stiffness/high-damping/non-zero admittance gains] to achieve force control along the desired surface axes.
See the API documentation mc_tasks::force::AdmittanceTask, and the admittance sample tutorial for futher information.
type constant  admittance 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the desired wrench ([torque, force] in controlled surface frame). If some values are NaN, this direction is ignored. Only valid if the controlled surface is attached to a force sensor (throws otherwise).
Eigen::Vector6d

array[6]  number
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
move Move relative to the current target frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
moveWorld Move relative to world frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
target Target a world frame pose (position and orientation)
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetFrame Target a robot frame
targetFrame

Target a robot frame
robot string  default MainRobot Name of robot to which this surface is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetSurface Target as a robot surface
targetSurface

Target as a robot surface
robot string  default MainRobot Name of robot to which this surface is attached
surface string
offset_translation
Eigen::Vector3d

array[3]  number
offset_rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
object

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
target Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetPosition Target a world position
Eigen::Vector3d

array[3]  number
targetRotation Target a world rotation
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
stiffness number ≥ 0  default 5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 1000 Task's weight
targetPose [deprecated] Same as "target"
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
wrench Wrench target (desired force-torque)
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
refVelB Feedforward reference body velocity
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
maxVel Clamp computed target velocity
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
admittance Admittance coefficients (converts wrench error to velocity)
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
{
  "type": "admittance",
  "frame": "LeftFootCenter",
  "target":
  {
    // Rotation expressed as RPY (in radian)
    // May also be expressed as quaternion or rotation matrix
    "rotation":    [0.0, 0.0, 0.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "wrench":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 20.0]
  },
  "admittance":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 0.0005]
  }
}
type: admittance
frame: LeftFootCenter
targetFrame:
  robot: ground
  frame: AllGround
  offset:
    translation: [0.0, 0.0, 0.1]
    rotation: [3.14, 0.0, 0.0]
wrench:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 20.0]
admittance:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 0.0005]
mc_tasks::RemoveContactTask
[API]
type constant  removeContact 
name string Name of the task
contact Contact to establish or remove. The tasks controls the first robot "r1".
mc_rbdyn::Contact

Requires an mc_rbdyn::Robots instance to be loaded
r1Surface string
r2Surface string
r1 string  default MainRobot Name of first robot involved in the contact
r2 string  default First extra robot Name of second robot involved in the contact
isFixed boolean
X_r2s_r1s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
friction number  default 0.7
ambiguityId integer  default -1
speed number ≥ 0  default 0.01 Speed at which the contact surface "r1Surface" moves along the normal "T_0_s".
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
stiffness number ≥ 0  default 2 Task's stiffness
weight number ≥ 0  default 1000 Task's weight
T_0_s If provided, overrides the chosen normal direction (default: direction of the z axis of "r1Surface")
Eigen::Vector3d

array[3]  number
{
  "type": "removeContact",
  "contact":
  {
    "r1Surface": "LeftFoot",
    "r2Surface": "AllGround",
    "r1": "jvrc1",
    "r2": "ground",
    "isFixed": false
  },
  "speed": 0.05,
  "stiffness": 1.0,
  "weight": 100.0
}
type: removeContact
contact:
  r1Surface: LeftFoot
  r2Surface: AllGround
  r1: jvrc1
  r2: ground
  isFixed: false
speed: 0.05
stiffness: 1.0
weight: 100.0
mc_tasks::PositionBasedVisServoTask
[API]
type constant  pbvs 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
{
  "type": "pbvs",
  "frame": "LeftFoot"
}
type: pbvs
frame: LeftFoot
mc_tasks::LookAtFrameTask
[API]
Aligns a unit vector expressed in frame coordinates with a target frame.
Example: Align a camera's viewing direction with a frame on a desired object to look at it.
type constant  lookAtFrame 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
frameVector Unit vector in control frame representing the direction that will be aligned with the target vector
Eigen::Vector3d

array[3]  number
target Frame tracked by this task
object

Frame tracked by this task
robot string  default Same robot as the task Name of robot to which the frame is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
stiffness number ≥ 0  default 0.5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 200 Task's weight
{
  "type": "lookAtSurface",
  "frame": "dcamera",
  "frameVector": [1.0, 0.0, 0.0],
  "target":
  {
    "robot": "ground",
    "frame": "AllGround"
  }
}
type: lookAtSurface
frame: dcamera
frameVector: [1.0, 0.0, 0.0]
target:
  robot: ground
  frame: AllGround
mc_tasks::force::ImpedanceTask
[API]
This task is similar to AdmittanceTask and DampingTask. Unlike those, the robot can adapt to an external force while following a target pose.
type constant  impedance 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the desired wrench ([torque, force] in controlled surface frame). If some values are NaN, this direction is ignored. Only valid if the controlled surface is attached to a force sensor (throws otherwise).
Eigen::Vector6d

array[6]  number
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
move Move relative to the current target frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
moveWorld Move relative to world frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
target Target a world frame pose (position and orientation)
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetFrame Target a robot frame
targetFrame

Target a robot frame
robot string  default MainRobot Name of robot to which this surface is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetSurface Target as a robot surface
targetSurface

Target as a robot surface
robot string  default MainRobot Name of robot to which this surface is attached
surface string
offset_translation
Eigen::Vector3d

array[3]  number
offset_rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
object

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
target Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetPosition Target a world position
Eigen::Vector3d

array[3]  number
targetRotation Target a world rotation
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
stiffness number ≥ 0  default 5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 1000 Task's weight
wrench Wrench target (desired force-torque)
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
gains Impedance gains
mc_tasks::force::ImpedanceGains

Impedance gains configuration for mc_tasks::force::ImpedanceTask
mass Impedance mass parameter represented in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
damper Impedance damper parameter represetnted in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
spring Impedance spring parameter repesented in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
wrench Coefficient-wise gain on the wrench error
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
{
  "type": "impedance",
  "frame": "RightGripper",
  "target":
  {
    // Rotation expressed as RPY (in radian)
    // May also be expressed as quaternion or rotation matrix
    "rotation":    [0.0, 0.0, 0.0],
    "translation": [0.5, 0.5, 1.0]
  },
  "wrench":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 20.0]
  },
  "wrenchGain":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 0.0005]
  }
}
type: impedance
frame: RightGripper
targetSurface:
  robot: ground
  surface: AllGround
  offset_translation: [0.5, 0.5, 1.2]
  offset_rotation: [3.14, 0.0, 0.0]
wrench:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 20.0]
wrenchGain:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 0.001]
mc_tasks::force::FirstOrderImpedanceTask
[API]
Impedance-based damping control of the provided frame.
type constant  firstOrderImpedance 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the desired wrench ([torque, force] in controlled surface frame). If some values are NaN, this direction is ignored. Only valid if the controlled surface is attached to a force sensor (throws otherwise).
Eigen::Vector6d

array[6]  number
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
move Move relative to the current target frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
moveWorld Move relative to world frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
target Target a world frame pose (position and orientation)
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetFrame Target a robot frame
targetFrame

Target a robot frame
robot string  default MainRobot Name of robot to which this surface is attached
frame string
offset Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetSurface Target as a robot surface
targetSurface

Target as a robot surface
robot string  default MainRobot Name of robot to which this surface is attached
surface string
offset_translation
Eigen::Vector3d

array[3]  number
offset_rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
relative Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
object

Relative target specification, the target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
target Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
targetPosition Target a world position
Eigen::Vector3d

array[3]  number
targetRotation Target a world rotation
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
stiffness number ≥ 0  default 5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 1000 Task's weight
wrench Wrench target (desired force-torque)
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
gains Impedance gains
mc_tasks::force::ImpedanceGains

Impedance gains configuration for mc_tasks::force::ImpedanceTask
mass Impedance mass parameter represented in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
damper Impedance damper parameter represetnted in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
spring Impedance spring parameter repesented in the controlled surface
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
wrench Coefficient-wise gain on the wrench error
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
{
  "type": "firstOrderImpedance",
  "frame": "RightGripper",
  "target":
  {
    // Rotation expressed as RPY (in radian)
    // May also be expressed as quaternion or rotation matrix
    "rotation":    [0.0, 0.0, 0.0],
    "translation": [0.5, 0.5, 1.0]
  },
  "wrench":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 20.0]
  },
  "wrenchGain":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 0.0005]
  }
}
type: firstOrderImpedance
frame: RightGripper
targetSurface:
  robot: ground
  surface: AllGround
  offset_translation: [0.5, 0.5, 1.2]
  offset_rotation: [3.14, 0.0, 0.0]
wrench:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 20.0]
wrenchGain:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 0.001]
mc_tasks::force::ComplianceTask
[API]
type constant  compliance 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
body string Name of the body controlled by this task
wrench Either couple or force can be ommited if the other is present
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
dof Stored in row-major order.
Eigen::Matrix6d

Stored in row-major order.
array[36]  number
forceThresh number
torqueThresh number
forceGain array[2]  number
torqueGain array[2]  number
stiffness number ≥ 0  default 5 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 1000 Task's weight
{
  "type": "compliance",
  "body": "R_WRIST_Y_S",
  "wrench":
  {
    "couple": [0.0, 0.0, 0.0],
    "force": [0.0, 0.0, 0.0]
  }
}
type: compliance
body: L_WRIST_Y_S
wrench:
  couple: [0.0, 0.0, 0.0]
  force: [0.0, 0.0, 0.0]
mc_tasks::GazeTask
[API]
type constant  gaze 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
weight number ≥ 0  default 500 Task's weight
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
{
  "type": "gaze",
  "frame": "dcamera"
}
type: gaze
frame: dcamera
mc_tasks::Momentum

type constant  momentum 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
weight number ≥ 0  default 500 Task's weight
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
momentum Either couple or force can be ommited if the other is present
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
{
  "type": "momentum",
  "robot": "jvrc1",
  "momentum": [0, 0, 0, 0, 0, 10]
}
type: momentum
robot: jvrc1
momentum: [0, 0, 0, 0, 0, 10]
mc_tasks::BSplineTrajectoryTask
[API]
Follow a bezier curve
type constant  bspline_trajectory 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
wrench True when the measured wrench reaches the given wrench [torque, force] in controlled surface frame.
if some values are NaN, this direction is ignored
Eigen::Vector6d

array[6]  number
timeElapsed number ≥ 0 True when the trajectory's "duration" is elapsed
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector6d

array[6]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
stiffness number ≥ 0  default 100 Tasks's stiffness. Contrary to most tasks, the stiffness here is expected to be high, as the trajectory task will track small errors. It is not uncommon to use a stiffness of 1000 or more if tracking accuracy is important.
Warning: Be careful to avoid discontinuities in the trajectory (e.g while manipulating the targets from the GUI), as the high tracking stiffness could generate fast motions.
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight. Note that the trajectory task tends to severely constrain the robot motion and may significantly interfere with other tasks when it is given too much importance.
duration number ≥ 0  default 10 Task's duration. Note, you may use the "timeElapsed: true" completion criteria.
paused boolean  default false When true, start the task in a paused state (targets the current surface pose until unpaused)
displaySamples number ≥ 1  default 20 Number of points to sample along the trajectory for visual display
gainsInterpolation Linear interpolation parameters for the tasks's gains expressed as pairs of (time, gain). The initial gains are those specified by dimWeight, stiffness and damping unless otherwise specified.
GainsInterpolation

Linear interpolation parameters for the tasks's gains expressed as pairs of (time, gain). The initial gains are those specified by dimWeight, stiffness and damping unless otherwise specified.
stiffness array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
damping array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
dimWeight array  [ number , ] Gains can be either represented as Vector6d (dimensional gains) or double
Eigen::Vector6d

array[6]  number
targetFrame Target and waypoints defined in target frame
Relative Target

Target and waypoints defined in target frame
robot string  default MainRobot Name of robot on which this frame is defined
frame string Frame on the robot.
translation Offset in translation wrt to the target robot's frame
Eigen::Vector3d

array[3]  number
rotation Offset in rotation wrt to the target robot's frame
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
controlPoints array  Position waypoints
Eigen::Vector3d

array[3]  number
oriWaypoints array  [ number , ] Orientation waypoints (pairs of time and orientation)
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
target Target relative to world. Ignored if targetFrame is specified, required otherwise
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
controlPoints array  Control points relative to world. Ignored if targetFrame is specified
Eigen::Vector3d

array[3]  number
oriWaypoints array  [ number , ] Orientation waypoints relative to world (pairs of time and orientation) relative to the world. Ignored if targetFrame is specified
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
{
  "type": "bspline_trajectory",
  "frame": "LeftFoot",
  "stiffness": 10000.0,
  "duration": 15.0,
  "weight": 100,
  "dimWeight": [0.5, 0.5, 0.5, 1.0, 1.0, 1.0],
  "displaySamples": 100,
  "completion": { "timeElapsed": true },
  "targetFrame":
  {
    "robot": "ground",
    "frame": "AllGround",
    "translation": [0.05, -0.05, -0.025],
    "rotation": [0.0, -1.57, 0.0],
    // control points in target surface frame
    "controlPoints":
    [
      [-0.25, -0.35, 0.1],
      [-0.08, -0.13, 0.1]
    ],
    "oriWaypoints":
    [
      [13.0, [0.0, -1.57, 0.0]]
    ]
  }
}
type: bspline_trajectory
frame: LeftFoot
stiffness: 10000.0
duration: 15.0
weight: 100
dimWeight: [0.5, 0.5, 0.5, 1.0, 1.0, 1.0]
displaySamples: 100
# Task is complete when it has reached its total duration,
# Or if a force greater than 20N has been detected
# along the Z axis (early contact)
completion:
  OR:
    - timeElapsed: true
    - wrench: [.NaN, .NaN, .NaN, .NaN, .NaN, 20]
targetFrame:
  robot: ground
  frame: AllGround
  translation: [0.05, -0.05, -0.025]
  rotation: [0.0, -1.57, 0.0]
  # control points in target surface frame
  controlPoints: [
    [-0.25, -0.35, 0.1],
    [-0.08, -0.13, 0.1]
  ]
  oriWaypoints: [
    [13.0, [0.0, -1.57, 0.0]]
  ]
mc_tasks::PositionTask
[API]
type constant  position 
name string Name of the task
robot string  default MainRobot Name of the robot to which this task applies
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
dimWeight Apply an anisotropic weight to the task multiplicative of the task's weight
Eigen::Vector3d

array[3]  number
activeJoints array  string A list of joints used by this task
If empty the task uses all available joints
unactiveJoints array  string A list of joints not used by this task
Has no effect if activeJoints is specified
frame string Name of the frame controlled by this task
position
Eigen::Vector3d

array[3]  number
relative The target is specified relatively to the middle point between two surfaces s1 and s2
Relative target specification

The target is specified relatively to the middle point between two surfaces s1 and s2
s1 string
s2 string
position
Eigen::Vector3d

array[3]  number
stiffness number ≥ 0  default 2 Task's stiffness. May also be an array of the task's dimension (dimensional stiffness).
damping number ≥ 0  default \(2\sqrt{\mathit{stiffness}}\) Task's damping. May also be an array of the task's dimension (dimensional damping).
weight number ≥ 0  default 500 Task's weight
{
  "type": "position",
  "frame": "r_wrist",
  "position": [0.0, 0.0, 0.0]
}
type: position
frame: r_wrist
position: [0.0, 0.0, 0.0]
mc_rbdyn::PlanarSurface
[API]
type constant  planar 
name string
bodyName string
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
materialName string
planarPoints array  array[2]  number Array of 2D points in the surface x/y plane
{
  "type": "planar",
  "name": "surface",
  "bodyName": "body",
  "X_b_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "materialName": "plastic",
  "planarPoints": [
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0],
    [0.0, 0.0]
  ]
}
type: planar
name: surface
bodyName: body
X_b_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
materialName: plastic
planarPoints:
  - [0.0, 0.0]
  - [0.0, 0.0]
  - [0.0, 0.0]
  - [0.0, 0.0]
mc_rbdyn::Contact
[API]
Requires an mc_rbdyn::Robots instance to be loaded
r1Surface string
r2Surface string
r1 string  default MainRobot Name of first robot involved in the contact
r2 string  default First extra robot Name of second robot involved in the contact
isFixed boolean
X_r2s_r1s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
friction number  default 0.7
ambiguityId integer  default -1
{
  "r1Surface": "surf1",
  "r2Surface": "surf2",
  "r1": "jvrc1",
  "r2": "robot2",
  "friction": 0.7,
  "isFixed": false
}
r1Surface: surf1
r2Surface: surf2
r1Index: 0
r2Index: 1
friction: 0.7
isFixed: false
mc_rbdyn::BodySensor
[API]
name string
parentBody string
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
{
  "name": "accelerometer",
  "parentBody": "root",
  "X_b_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  }
}
name: accelerometer
parentBody: root
X_b_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
mc_rbdyn::Plane
[API]
normal
Eigen::Vector3d

array[3]  number
offset number
{
  "normal": [0.0, 0.0, 1.0],
  "offset": 0.0
}
normal: [0.0, 0.0, 1.0]
offset: 0.0
mc_rbdyn::PolygonInterpolator
[API]
tuple_pairs array  array[2]  array[2]  number
{
  "tuple_pairs": [
    [ [0.0, 0.0], [0.0, 0.0] ],
    [ [0.0, 0.0], [0.0, 0.0] ],
    [ [0.0, 0.0], [0.0, 0.0] ],
    [ [0.0, 0.0], [0.0, 0.0] ]
  ]
}
tuple_pairs:
  - [ [0.0, 0.0], [0.0, 0.0] ]
  - [ [0.0, 0.0], [0.0, 0.0] ]
  - [ [0.0, 0.0], [0.0, 0.0] ]
  - [ [0.0, 0.0], [0.0, 0.0] ]
mc_rbdyn::ForceSensor
[API]
name string
parentBody string
X_p_f Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
{
  "name": "RightFootForceSensor",
  "parentBody": "r_foot",
  "X_p_f":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  }
}
name: RightFootForceSensor
parentBody: r_foot
X_p_f:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
mc_rbdyn::RobotModule::FrameDescription
[API]
Describe an additional frame for this robot
name string Name of the frame
parent string Parent frame
X_p_f Transform from parent frame to this frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
baked boolean  default false If true, remove parent when loaded into the robot
{
  "name": "camera",
  "parent": "HEAD_LINK1",
  "transform":
  {
    "position": [0, 0, 0.1],
    "rotation": [3.14, 0.0, 3.14]
  }
}
name: camera
parent: HEAD_LINK1
transform:
  position: [0, 0, 0.1]
  rotation: [3.14, 0.0, 3.14]
mc_rbdyn::lipm_stabilizer::StabilizerConfiguration
[API]
Configuration of mc_tasks::lipm_stabilizer::StabilizerTask stabilization parameters (DCM tracking, admittance, tasks weights, etc). A default configuration is provided by each robot's mc_rbdyn::RobotModule.
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
{
  "leftFootSurface": "LeftFoot",
  "rightFootSurface": "RightFoot",
  "friction": 0.7,
  "torsoBodyName": "CHEST_LINK1",
  "tasks": {
    "com": {
      "stiffness": [
        1000,
        1000,
        100
      ],
      "weight": 1000,
      "active_joints": [
        "Root",
        "RLEG_JOINT0",
        "RLEG_JOINT1",
        "RLEG_JOINT2",
        "RLEG_JOINT3",
        "RLEG_JOINT4",
        "RLEG_JOINT5",
        "LLEG_JOINT0",
        "LLEG_JOINT1",
        "LLEG_JOINT2",
        "LLEG_JOINT3",
        "LLEG_JOINT4",
        "LLEG_JOINT5"
      ],
      "height": 0.87
    },
    "contact": {
      "damping": 300,
      "stiffness": 1,
      "weight": 10000
    }
  },
  "fdqp_weights": {
    "net_wrench": 10000,
    "ankle_torque": 100,
    "pressure": 1
  },
  "admittance": {
    "cop": [
      0.001,
      0.001
    ]
  },
  "dcm_tracking": {
    "gains": {
      "prop": 3,
      "integral": 20,
      "deriv": 0.5
    },
    "derivator_time_constant": 5,
    "integrator_time_constant": 30
  }
}
---
leftFootSurface: LeftFoot
rightFootSurface: RightFoot
friction: 0.7
torsoBodyName: CHEST_LINK1
# Configuration  of the QP tasks used by the stabilizer
tasks:
  com:
    stiffness: [1000, 1000, 100]
    weight: 1000
    active_joints: [Root, RLEG_JOINT0, RLEG_JOINT1, RLEG_JOINT2, RLEG_JOINT3, RLEG_JOINT4, RLEG_JOINT5, LLEG_JOINT0, LLEG_JOINT1, LLEG_JOINT2, LLEG_JOINT3, LLEG_JOINT4, LLEG_JOINT5]
    height: 0.87
  contact:
    damping: 300
    stiffness: 1
    weight: 10000

# Weights for the force-distribution QP
fdqp_weights:
  net_wrench: 10000
  ankle_torque: 100
  pressure: 1

# Admittance coefficients (feet force-control)
admittance:
  cop: [0.001, 0.001]

# Gains on DCM error
dcm_tracking:
  gains:
    prop: 3
    integral: 20
    deriv: 0.5
  derivator_time_constant: 5
  integrator_time_constant: 30
mc_rbdyn::Flexibility
[API]
jointName string
K number
C number
O number
{
  "jointName": "flexJ",
  "K": 0.0,
  "C": 0.0,
  "O": 0.0
}
jointName: flexJ
K: 0.0
C: 0.0
O: 0.0
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
{
  "body1": "b1",
  "body2", "b2",
  "iDist": 0.05,
  "sDist": 0.01,
  "damping": 0
}
body1: b1
body2: b2
iDist: 0.05
sDist: 0.01
damping: 0
mc_rbdyn::CylindricalSurface
[API]
type constant  cylindrical 
name string
bodyName string
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
materialName string
radius number
width number
{
  "type": "planar",
  "name": "surface",
  "bodyName": "body",
  "X_b_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "materialName": "plastic",
  "radius": 0.5,
  "width": 1.0
}
type: planar
name: surface
bodyName: body
X_b_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
materialName: plastic
radius: 0.5
width: 1.0
mc_rbdyn::GripperSurface
[API]
type constant  gripper 
name string
bodyName string
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
materialName string
pointsFromOrigin array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b_motor Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
motorMaxTorque number
{
  "type": "planar",
  "name": "surface",
  "bodyName": "body",
  "X_b_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "materialName": "plastic",
  "pointsFromOrigin": [
    {
      "rotation": [1.0, 0.0, 0.0,
                   0.0, 1.0, 0.0,
                   0.0, 0.0, 1.0],
      "translation": [0.0, 0.0, 0.0]
    },
    {
      "rotation": [1.0, 0.0, 0.0,
                   0.0, 1.0, 0.0,
                   0.0, 0.0, 1.0],
      "translation": [0.0, 0.0, 0.0]
    },
    {
      "rotation": [1.0, 0.0, 0.0,
                   0.0, 1.0, 0.0,
                   0.0, 0.0, 1.0],
      "translation": [0.0, 0.0, 0.0]
    },
    {
      "rotation": [1.0, 0.0, 0.0,
                   0.0, 1.0, 0.0,
                   0.0, 0.0, 1.0],
      "translation": [0.0, 0.0, 0.0]
    }
  ],
  "X_b_motor":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "motorMaxTorque": 5.0
}
type: planar
name: surface
bodyName: body
X_b_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
materialName: plastic
pointsFromOrigin:
  - rotation: [1.0, 0.0, 0.0,
               0.0, 1.0, 0.0,
               0.0, 0.0, 1.0]
    translation: [0.0, 0.0, 0.0]
  - rotation: [1.0, 0.0, 0.0,
               0.0, 1.0, 0.0,
               0.0, 0.0, 1.0]
    translation: [0.0, 0.0, 0.0]
  - rotation: [1.0, 0.0, 0.0,
               0.0, 1.0, 0.0,
               0.0, 0.0, 1.0]
    translation: [0.0, 0.0, 0.0]
  - rotation: [1.0, 0.0, 0.0,
               0.0, 1.0, 0.0,
               0.0, 0.0, 1.0]
    translation: [0.0, 0.0, 0.0]
X_b_motor:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
motorMaxTorque: 5.0
mc_rbdyn::Base
[API]
name string
X_0_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b0_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
type
rbd::Joint::Type

type enum  string  rev  prism  spherical  planar  cylindrical  free  fixed 
{
  "name": "root",
  "X_0_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "X_b0_s":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "type": { "type": "fixed" }
}
name: root
X_0_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
X_b0_s:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
type:
  type: fixed
mc_rbdyn::Springs
[API]
springsBodies array  string
afterSpringsBodies array  string
springsJoints array  string
{
  "springsBodies": ["b0", "b1"],
  "afterSpringsBodies": ["aB0", "aB1"],
  "springsJoints": ["j0", "j1"]
}
springsBodies: [b0, b1]
afterSpringsBodies: [aB0, aB1]
springsJoints: [j0, j1]
mc_rbdyn::Mimic
[API]
name string
joint string
multiplier number  default 1
offset number  default 0
{
  "name": "LHAND_J0",
  "joint": "LARM_J7",
  "multiplier": -1,
  "offset": 0
}
name: LHAND_J0
joint: LARM_J7
multiplier: -1
offset: 0
mc_rbdyn::RobotModule
[API]
path string Path to the location of the robot's data files
name string
urdf_path string  default ${path}/urdf/${name}.urdf Path to the URDF file, can be relative to "path"
canonicalParameters array  string Parameters passed to RobotLoader to obtain a canonical module for this robot
mb If mb is provided, mbc, bounds, visuals and collisionTransforms are required. Otherwise, the URDF is loaded when the object is loaded, using the filteredLinks and fixed properties.
rbd::MultiBody

bodies array 
rbd::Body

name string
inertia
sva::RBInertiad

mass number ≥ 0
momentum
Eigen::Vector3d

array[3]  number
inertia Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
joints array 
rbd::Joint

type
rbd::Joint::Type

type enum  string  rev  prism  spherical  planar  cylindrical  free  fixed 
axis
Eigen::Vector3d

array[3]  number
forward boolean
name string
isMimic boolean
mimicName string
mimicMultiplier number
mimicOffset number
preds array  integer
succs array  integer
parents array  integer
transforms array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
mbc Required if mb is provided.
rbd::MultiBodyConfig

q array  array  number
alpha array  array  number
alphaD array  array  number
force array 
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
jointConfig array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
jointVelocity array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
jointTorque array  array  number
motionSubspace array 
Eigen::Matrix6Xd

Stored in row-major order.
The array length should be a multiple of 6.
array  number
bodyPosW array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
parentToSon array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
bodyVelW array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
bodyVelB array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
bodyAccB array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
gravity
Eigen::Vector3d

array[3]  number
bounds array[6]  Position limits (lower/upper), velocity (lower/upper), torque (lower/upper)
object

*  (pattern) array  number
accelerationBounds array[2]  Acceleration bounds (lower/upper). Overwrite those specified in bounds if present
object

*  (pattern) array  number
jerkBounds array[2]  Jerk bounds (lower/upper). Overwrite those specified in bounds if present
object

*  (pattern) array  number
torqueDerivativeBounds array[2]  Torque derivative bounds (lower/upper). Overwrite those specified in bounds if present
object

*  (pattern) array  number
visuals
object

*  (pattern) array 
rbd::parsers::Visual

name string
origin Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
geometry Cannot handle data:
{
  "required": [
    "box"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "cylinder"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "mesh"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "sphere"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "superellipsoid"
  ]
}
collisionTransforms
object

*  (pattern) array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
filteredLinks array  string Don't include the bodies in this list even if they appear in the URDF
fixed boolean If true, the robot has a fixed base
convexHulls Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and the path to the convex file
object

Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and the path to the convex file
*  (pattern) array[2]  string
collisionObjects Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and a definition of the object
object

Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and a definition of the object
*  (pattern) array[2]  [ string , ]
mc_rbdyn::S_ObjectPtr

type enum  box  capsule  cone  cylinder  point  polyhedron  sphere  stp-bv  stp-bv-p  superellipsoid  Type of sch object
width number Width of the box (if type == box)
height number Height of the box (if type == box)
Height of the cone (if type == cone)
depth number Depth of the box (if type == box)
angle number Angle of the cone (if type == cone)
p1 array[3]  number Starting point of the capsule (if type == capsule)
Starting point of the cylinder (if type == cylinder)
p2 array[3]  number End point of the capsule (if type == capsule)
End point of the cylinder (if type == cylinder)
radius number Radius of the capsule (if type == capsule)
Radius of the cylinder (if type == cylinder)
Radius of the sphere (if type == sphere)
filename string Path to the file with data for the object (if type == polyhedron or type == stp-bv or type == stp-bv-p
a number First parameter of the superellipsoid (if type == superellipsoid
b number Second parameter of the superellipsoid (if type == superellipsoid
c number Third parameter of the superellipsoid (if type == superellipsoid
epsilon1 number Epsilon 1 parameter of the superellipsoid (if type == superellipsoid
epsilon2 number Epsilon 2 parameter of the superellipsoid (if type == superellipsoid
stpbvHulls Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and the path to the convex file
object

Each key should be a collision object name, each entry in the vector associated to a key should be the parent's body name and the path to the convex file
*  (pattern) array[2]  string
frames array 
mc_rbdyn::RobotModule::FrameDescription
[API]
Describe an additional frame for this robot
name string Name of the frame
parent string Parent frame
X_p_f Transform from parent frame to this frame
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
baked boolean  default false If true, remove parent when loaded into the robot
flexibilities array 
mc_rbdyn::Flexibility
[API]
jointName string
K number
C number
O number
forceSensors array 
mc_rbdyn::ForceSensor
[API]
name string
parentBody string
X_p_f Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
bodySensors array 
mc_rbdyn::BodySensor
[API]
name string
parentBody string
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
springs
mc_rbdyn::Springs
[API]
springsBodies array  string
afterSpringsBodies array  string
springsJoints array  string
minimalSelfCollisions array 
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
commonSelfCollisions array 
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
grippers array 
mc_rbdyn::RobotModule::Gripper

name string
joints array  string
reverse_limits boolean
safety Parameters to prevent over-torques on position-controlled grippers
mc_rbdyn::RobotModule::Gripper::Safety

Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
mimics array 
mc_rbdyn::Mimic
[API]
name string
joint string
multiplier number  default 1
offset number  default 0
default_attitude array[7]  number
stance
object

*  (pattern) array  number
ref_joint_order array  string
gripperSafety Parameters to prevent over-torques on position-controlled grippers
mc_rbdyn::RobotModule::Gripper::Safety

Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
lipmStabilizer Default configuration for mc_tasks::lipm_stabilizer::StabilizerTask
mc_rbdyn::lipm_stabilizer::StabilizerConfiguration
[API]
Configuration of mc_tasks::lipm_stabilizer::StabilizerTask stabilization parameters (DCM tracking, admittance, tasks weights, etc). A default configuration is provided by each robot's mc_rbdyn::RobotModule.
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
compoundJoints array  List of compound joint constraints this robot must follow
mc_rbdyn::CompoundJointConstraintDescription

Describes a compound joint constraint.
The configuration (q1, q2) or joints (j1, j2) must lie on the negative side of a (p1, p2) line where p1 and p2 are configurations of the (j1, j2) pair
j1 string First joint for the compound constraint
j2 string Second joint for the compound constraint
p1 First point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
p2 Second point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
{
  "path": "/path/to/robot",
  "name": "robot",
  "urdf_path": "urdf/robot.urdf"
}
path: /path/to/robot
name: robot
urdf_path: urdf/robot.urdf
mc_rbdyn::RobotModule::Gripper::Safety
[API]
Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
{
  "percentVMax": 0.25,
  "actualCommandDiffTrigger": 0.14, // 8 deg.
  "releaseSafetyOffset": 0.034, // 2 deg.
  "overCommandLimitIterN": 5
}
percentVMax: 0.25
actualCommandDiffTrigger: 0.14 # 8 deg.
releaseSafetyOffset: 0.034 # 2 deg.
overCommandLimitIterN: 5
mc_rbdyn::S_ObjectPtr

type enum  box  capsule  cone  cylinder  point  polyhedron  sphere  stp-bv  stp-bv-p  superellipsoid  Type of sch object
width number Width of the box (if type == box)
height number Height of the box (if type == box)
Height of the cone (if type == cone)
depth number Depth of the box (if type == box)
angle number Angle of the cone (if type == cone)
p1 array[3]  number Starting point of the capsule (if type == capsule)
Starting point of the cylinder (if type == cylinder)
p2 array[3]  number End point of the capsule (if type == capsule)
End point of the cylinder (if type == cylinder)
radius number Radius of the capsule (if type == capsule)
Radius of the cylinder (if type == cylinder)
Radius of the sphere (if type == sphere)
filename string Path to the file with data for the object (if type == polyhedron or type == stp-bv or type == stp-bv-p
a number First parameter of the superellipsoid (if type == superellipsoid
b number Second parameter of the superellipsoid (if type == superellipsoid
c number Third parameter of the superellipsoid (if type == superellipsoid
epsilon1 number Epsilon 1 parameter of the superellipsoid (if type == superellipsoid
epsilon2 number Epsilon 2 parameter of the superellipsoid (if type == superellipsoid
// Box example
{
  "type": "box",
  "width": 0.1,
  "height": 0.2,
  "depth": 0.3
}
// Sphere example
{
  "type": "sphere",
  "radius": 0.5
}
// Cylinder example
{
  "type": "cylinder",
  "p1": [0, 0, 0],
  "p2": [0.5, 0, 0.5],
  "radius": 0.1
}
# Box example
box:
  type: box
  width: 0.1
  height: 0.2
  depth: 0.3
# Sphere example
sphere:
  type: sphere
  radius: 0.5
# Cylinder example
cylinder:
  type: cylinder
  p1: [0, 0, 0]
  p2: [0.5, 0, 0.5]
  radius: 0.1
mc_rbdyn::CompoundJointConstraintDescription
[API]
Describes a compound joint constraint.
The configuration (q1, q2) or joints (j1, j2) must lie on the negative side of a (p1, p2) line where p1 and p2 are configurations of the (j1, j2) pair
j1 string First joint for the compound constraint
j2 string Second joint for the compound constraint
p1 First point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
p2 Second point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
{
  "j1": "LLEG_JOINT1",
  "j2": "LLEG_JOINT2",
  "p1": [-0.2, -2.2],
  "p2": [0.6, -1.3]
}
j1: LLEG_JOINT1
j2: LLEG_JOINT2
p1: [-0.2, -2.2]
p2: [0.6, -1.3]
mc_rbdyn::RobotModule::Gripper
[API]
name string
joints array  string
reverse_limits boolean
safety Parameters to prevent over-torques on position-controlled grippers
mc_rbdyn::RobotModule::Gripper::Safety

Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
mimics array 
mc_rbdyn::Mimic
[API]
name string
joint string
multiplier number  default 1
offset number  default 0
{
  "name": "l_gripper",
  "joints": ["j0", "j1", "j2"],
  "reverse_limits": false
}
name: l_gripper
joints: [j0, j1, j2]
reverse_limits: false
mc_solver::BoundedSpeedConstr
[API]
type constant  boundedSpeed 
robot string  default MainRobot Name of the robot affected by this constraint
constraints array  List of speed constraints in the constraint
object

frame string
dof Defaults to identity
Eigen::Vector6d

array[6]  number
speed
Eigen::Vector6d

array[6]  number
lowerSpeed Ignored if speed is present
Eigen::Vector6d

array[6]  number
upperSpeed Required if lowerSpeed is present and speed is absent
Eigen::Vector6d

array[6]  number
{
  "type": "boundedSpeed",
  "constraints": [
  {
    "frame": "body0",
    "speed": [0, 0, 0, 0, 0, 0.1]
  },
  {
    "frame": "body1",
    "lowerSpeed": [0, 0, 0, 0, 0, 0.05],
    "upperSpeed": [0, 0, 0, 0, 0, 0.1]
  }
  ]
}
type: boundedSpeed
robotIndex: 0
constraints:
  - frame: body0
    speed: [0, 0, 0, 0, 0, 0.1]
  - frame: body1
    lowerSpeed: [0, 0, 0, 0, 0, 0.05]
    upperSpeed: [0, 0, 0, 0, 0, 0.1]
mc_solver::CollisionsConstraint
[API]
type constant  collision 
r1 string  default MainRobot Name of the first robot involved in the collision
r2 string  default MainRobot Name of the second robot involved in the collision
automaticMonitor boolean  default true If true automatically display collision monitors as constraints get activated. Otherwise those monitors are managed manually
useCommon boolean  default false If true and r1Index == r2Index, add the common self-collisions set
useMinimal boolean  default false If true and r1Index == r2Index, add the minimal self-collisions set
collisions array  List of collisions in the constraint
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
{
  "type": "collision",
  "r1": "jvrc1",
  "r2": "otherRobot",
  "collisions": [
    {
      "body1": "b1",
      "body2": "b2",
      "iDist": 0.05,
      "sDist": 0.01,
      "damping": 0
    },
    {
      "body1": "b2",
      "body2": "b3",
      "iDist": 0.05,
      "sDist": 0.01,
      "damping": 0
    }
  ]
}
type: collision
r1Index: 0
r2Index: 0
collisions:
  - body1: b1
    body2: b2
    iDist: 0.05
    sDist: 0.01
    damping: 0
  - body1: b2
    body2: b3
    iDist: 0.05
    sDist: 0.01
    damping: 0
mc_solver::KinematicsConstraint
[API]
type constant  kinematics 
robot string  default MainRobot Name of the robot affected by this constraint
damper array  number
velocityPercent number  default 0.5 Ignored if damper is absent.
{
  "type": "kinematics",
  "damper": [0.1, 0.01, 0.5],
  "velocityPercent": 0.5
}
type: kinematics
robotIndex: 0
damper: [0.1, 0.01, 0.5]
velocityPercent: 0.5
mc_solver::CoMIncPlaneConstr
[API]
type constant  CoMIncPlane 
robot string  default MainRobot Name of the robot affected by this constraint
{
  "type": "CoMIncPlane"
}
type: CoMIncPlane
robotIndex: 0
mc_solver::CompoundJointConstraint
[API]
Handle compound joint limits (joints whole limits depend on the position of another joint). By default this adds all the compound joints defined in the robot's module.
type constant  compoundJoint 
robot string  default MainRobot Name of the robot affected by this constraint
constraints array  List of compound joint constraints this robot must follow
Use the robot's module definitions if not provided
mc_rbdyn::CompoundJointConstraintDescription
[API]
Describes a compound joint constraint.
The configuration (q1, q2) or joints (j1, j2) must lie on the negative side of a (p1, p2) line where p1 and p2 are configurations of the (j1, j2) pair
j1 string First joint for the compound constraint
j2 string Second joint for the compound constraint
p1 First point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
p2 Second point of configuration (q1, q2)
Eigen::Vector2d

array[2]  number
{
  "type": "compoundJoint",
  "robot": "jvrc1"
}
---
type: compoundJoint
robot: jvrc1
mc_solver::ContactConstraint
[API]
type constant  contact 
contactType enum  string  acceleration  velocity  position  Defaults to velocity if absent
{
  "type": "contact",
  "contactType": "position"
}
type: contact
contactType: position
mc_solver::DynamicsConstraint
[API]
type constant  dynamics 
robot string  default MainRobot Name of the robot affected by this constraint
damper array  number
velocityPercent number  default 0.5 Ignored if damper is absent.
infTorque boolean  default false
{
  "type": "dynamics",
  "damper": [0.1, 0.01, 0.5],
  "velocityPercent": 0.5,
  "infTorque": false
}
type: dynamics
robotIndex: 0
damper: [0.1, 0.01, 0.5]
velocityPercent: 0.5
infTorque: false
mc_observers::BodySensorObserver
[API]
BodySensor: updates floating base state from a body sensor. This is typically used to set the floating base state from a simulator ground truth
robot string  default MainRobot Name of the robot to observe
updateRobot string  default <robot> Name of the robot to update
updatePose boolean  default true When true updates the real robot base pose
updateVel boolean  default true When true updates the real robot base velocity
method enum  sensor  control  Update from sensor or control values
bodySensor string  default Main body sensor Body sensor used to set the floating base state (only used if method=sensor). When empty, the main body sensor will be used.
log Selects which elements to log
object

Selects which elements to log
pose boolean  default true When true, log the estimated floating base pose
velocity boolean  default true When true, log the estimated floating base velocity
acceleration boolean  default true When true, log the estimated floating base acceleration
gui Selects which elements to display in the GUI
object

Selects which elements to display in the GUI
pose boolean  default false When true, diplays the estimated floating base pose (frame)
velocity boolean  default true When true, log the estimated floating base velocity (arrow)
acceleration boolean  default false When true, log the estimated floating base acceleration (arrow)
velocityArrow
mc_rtc::gui::ArrowConfig

head_diam number
head_len number
shaft_diam number
scale number
start_point_scale number
end_point_scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
accelerationArrow
mc_rtc::gui::ArrowConfig

head_diam number
head_len number
shaft_diam number
scale number
start_point_scale number
end_point_scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
advanced boolean  default false Displays an additional GUI tab containing advanced controls. These are NOT intended to be used outside of a debugging context, use with caution.
{
  "robot": "jvrc1",
  "updateRobot": "jvrc1",
  "method": "sensor",
  "bodySensor": "FloatingBase",
  "log":
  {
    "pose": true,
    "velocity": true,
    "acceleration": true
  },
  "gui":
  {
    "pose": false,
    "velocity": true,
    "acceleration": false,
    "velocityArrow":
    {
      "color": "green"
    },
    "accelerationArrow":
    {
      "color": "blue"
    }
  }
}
---
robot: jvrc1
updateRobot: jvrc1
method: sensor
bodySensor: FloatingBase
log:
  pose: true
  velocity: true
  acceleration: true
gui:
  pose: false
  velocity: true
  acceleration: false
  velocityArrow:
    color: green
  accelerationArrow:
    color: blue
mc_observers::ObserverPipelines

Configures a sequence of state observation piplines (mc_observers::ObserverPipeline) that will be run sequentially. This may be used to estimate the state of one or multiple robots using a suitable sequence of observers. Observer pipelines may be defined in your mc_rtc.conf, controller-specific configuration, or FSM configuration (each configuration superseeds the previous one). If only one observer pipline is present, the array may be ommitted.
[
  {
    "name": "MainRobotGroundTruth",
    "gui": true,
    "observers": [
      {
        "type": "Encoder"
      },
      {
        "type": "BodySensor",
        "config": {
          "bodySensor": "FloatingBase"
        }
      }
    ]
  },
  {
    "name": "MainRobotKinematicInertial",
    "observers": [
      {
        "type": "Encoder",
        "robot": "jvrc1",
        "updateRobot": "jvrc1_2"
      },
      {
        "type": "KinematicInertial",
        "robot": "jvrc1",
        "updateRobot": "jvrc1_2"
      }
    ]
  }
]
---
# Declare a first pipeline that estimates the main real robot state
# from encoder values and a ground truth floating base sensor
- name: MainRobotGroundTruth
  gui: true
  observers:
  - type: Encoder
  - type: BodySensor
    update: false
    config:
      bodySensor: FloatingBase
# Declare second pipeline that estimates another instance of the main robot "jvrc1_2"
# using the sensors of "jvrc1" main robot. Here the floating base position and velocity is
# estimated by a KinematicInertial observer
- name: MainRobotKinematicInertial
  observers:
    - type: Encoder
      robot: jvrc1
      updateRobot: jvrc1_2
    - type: KinematicInertial
      robot: jvrc1
      updateRobot: jvrc1_2
mc_observers::KinematicInertialObserver
[API]
Kinematic Intertial observer: floating base observation from IMU and kinematics
robot string  default Main Robot Name of the robot to observe (control)
updateRobot string  default Main Real Robot Name of the robot to observe (real)
imuBodySensor string  default Main BodySensor Name of the body sensor containing IMU measurements (requires orientation)
cutoff number  default 2*dt Cutoff period for the low-pass filter on velocity. Must be at least twice the timestep
anchorFrame Parameters for the kinematic anchor frame
Kinematic Anchor Frame

Parameters for the kinematic anchor frame
datastoreFunction string  default KinematicAnchorFrame::<robot> Name of the datastore entry for the anchorFrame function. This datastore entry must exist, and it must return a continuous kinematic anchor frame (typically a point in-between the contacts). Please refer to the observers tutorial for more information.
maxAnchorFrameDiscontinuity number  default 0.01 Norm of translation error between the current and new anchor frame computed by "datastoreFunction". This is used to detect anchor frame discontinuities, and consequently prevent discontinuities in velocity estimation.
gui GUI elements to display
object

GUI elements to display
pose boolean  default false When true, display the estimated pose
velocity boolean  default true When true, display the estimated velocity as an arrow
velocityArrow
mc_rtc::gui::ArrowConfig

head_diam number
head_len number
shaft_diam number
scale number
start_point_scale number
end_point_scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
anchorFrame boolean  default false When true, display the anchor frame (control)
anchorFrameReal boolean  default false When true, display the anchor frame (real)
advanced boolean  default false Displays an additional GUI tab containing advanced controls. These are NOT intended to be used outside of a debugging context, use with caution.
log Elements to log
object

Elements to log
pose boolean  default true When true, logs the estimated pose
velocity boolean  default true When true, logs the estimated velocity
anchorFrame boolean  default true When true, logs the anchor frame (control and real)
{
  "robot": "jvrc1",
  "updateRobot": "jvrc1",
  "imuBodySensor": "Accelerometer",
  "anchorFrame":
  {
    "maxAnchorFrameDiscontinuity": 0.01
  },
  "log":
  {
    "pose": true,
    "velocity": true,
    "anchorFrame": true
  },
  "gui":
  {
    "pose": false,
    "velocity": true,
    "anchorFrame": false,
    "anchorFrameReal": false,
    "velocityArrow":
    {
      "color": "green"
    }
  }
}
---
robot: jvrc1
updateRobot: jvrc1
imuBodySensor: Accelerometer
anchorFrame:
  maxAnchorFrameDiscontinuity: 0.01
log:
  pose: true
  velocity: true
  anchorFrame: true
gui:
  pose: false
  velocity: true
  anchorFrame: false
  anchorFrameReal: false
  velocityArrow:
    color: green
mc_observers::EncoderObserver
[API]
The Encoder Observer updates the state of a robot kinematic properties (body positions and velocities) using joint sensor values. It can use various sources as sensor input: encoder position, encoder velocity, values from another robot, and can also estimate joint velocities from encoder position by finite differences.
robot string  default MainRobot Name of the robot to observe
updateRobot string  default <robot> Name of the robot to update
position enum  encoderValues  control  none  Sensor/method used to observe joint position
velocity enum  encoderFiniteDifferences  encoderVelocities  control  none  Sensor/method used to observe joint velocity
computeFK boolean  default true When true, the update computes forward kinematics
computeFV boolean  default true When true, the update computes forward velocity
log Selects which elements to log
object

Selects which elements to log
position boolean  default false When true, logs the estimated position of all actuated joints
velocity boolean  default true When true, logs the estimated velocity of all actuated joints
{
  "robot": "jvrc1",
  "updateRobot": "jvrc1",
  "position": "encoderValues",
  "velocity": "encoderFiniteDifferences",
  "log":
  {
    "position": false,
    "velocity": true
  }
}
---
robot: jvrc1
updateRobot: jvrc1
position: encoderValues
velocity: encoderFiniteDifferences
log:
  position: false
  velocity: true
mc_observers::ObserverPipeline
[API]
State observation pipeline.
Observers are responsible for estimating some of the robot properties from sensor measurements and/or fusing several source of information (e.g the Encoder observer estimates the joint position and velocity based on joint sensors, the KinematicInertial observers the state of the floating base from kinematics and IMU information, etc).
These observers may be grouped into a "State observation pipeline", that will run each observer sequentially. Some observers may be used to update the state of the real robots instances used by the controller, while others may only be used for logging estimated values for comparison purposes.
name string Name of this pipeline
run boolean  default true When true, run each observer in this pipeline
update boolean  default true When true, update the state of real robots instances (depending on each observer's configuration). Requires "run" to be true.
log boolean  default true When true, log estimated values
gui boolean  default false When true, show this pipeline and its observers in the gui. All observers will be displayed acording to their configuration in "observers" (each observer is visible by default).
observers array  Sequence of observers
Observer

type string Name of the observer. This is the name exported by each observer library, for default observers see the entries in "Observer objects". The main default observers are:
  • Encoder: estimates a robot's joint state (position and velocity)
  • KinematicInertial: estimates a robot's floating base state based on IMU and a kinematic information
  • BodySensor: sets the floating base state based on a BodySensor (typically used to obtain groundtruth state from a simulator)
name string Name of the observer (optional unless there are multiple observers with the same name type in this pipeline)
update boolean  default true When true, update the state of real robots instances (requires the observer's run to have succeeded)
log boolean  default true When true, log estimated values
gui boolean  default true When true, show observer in the gui
required boolean  default true When false, ignore this observer if it could not be loaded
successRequired boolean  default true When true, the whole pipeline is considered to have failed if this observer's run() returns false
config Configuration options for the observer "type" (Encoder, KinematicInertial, BodySensor, etc)
Observer Configuration

Configuration options for the observer "type" (Encoder, KinematicInertial, BodySensor, etc)
{
  "name": "MainPipeline",
  "gui": true,
  "observers":
  [
    {
      "type": "Encoder"
    },
    {
      "type": "BodySensor",
      "update": false,
      "config":
      {
        "bodySensor": "FloatingBase"
      }
    },
    {
      "type": "KinematicInertial",
      "config":
      {
        "imuBodySensor": "Accelerometer"
      }
    }
  ]
}
---
##
# This sample provides a reasonable default pipeline for observing the state (position and velocity) of a floating-base robot.
# This pipeline does the following:
# Encoder:
#   - Joint position is obtained from encoder sensors, joint velocity is estimated by finite differences of position.
#   - Forward kinematics and velocity is computed (required by the BodySensor and KinematicInertial observers to
#     obtain the transformation from sensor to the floating base)
# BodySensor:
#   - Only logs the values provided by the \"FloatingBase\" body sensor.
#     This assumes that the interface supports such ground truth measurement (e.g simulation, MOCAP)
# KinematicInertial:
#   - Estimates the floating base position using the orientation of an IMU sensor (rigidly connected to the floating base)
#     and a kinematic anchor frame provided by the controller through a datastore function. This frame should represent
#     the same point on both the control robot and real robot, and is used as the reference to compute the floating base
#     position. In the case of a humanoid robot walking, this would be a frame moving continously between the robot feet
#     For example
#
#     datastore().make_call("KinematicAnchorFrame::" + robot().name(), [this](const mc_rbdyn::Robot & robot) {
#       // leftFootRatio is a value between 0 and 1 that continuously moves between each feet as the robot is walking
#       return sva::interpolate(robot.surfacePose("LeftFoot"), robot.surfacePose("RightFoot"), this->leftFootRatio);
#     });
#
  #  See https://jrl-umi3218.github.io/mc_rtc/tutorials/recipes/observers.html for futher details.
###
name: MainPipeline
gui: true
observers:
# Updates the main real robot joint values and velocity based on encoder measurements
# Velocity is obtained by finite differences of encoder position
- type: Encoder
# Logs the \"FloatingBase\" sensor ground truth
# Does not update the robot instance from it
- type: BodySensor
  update: false
  config:
    bodySensor: FloatingBase
# Estimates the floating base position and velocity from IMU (orientation) measurements and a controller-proviced anchor frame
- type: KinematicInertial
  config:
    imuBodySensor: Accelerometer
rbd::parsers::Geometry

Only one of the possible entries
box
rbd::parsers::Geometry::Box

size number
cylinder
rbd::parsers::Geometry::Cylinder

radius number
length number
mesh
rbd::parsers::Geometry::Mesh

filename string
scale number
sphere
rbd::parsers::Geometry::Sphere

radius number
superellipsoid
rbd::parsers::Geometry::Superellipsoid

size number
epsilon1 number
epsilon2 number
{
  "mesh":
  {
    "filename": "/some/path",
    "scale": 1.0
  }
}
mesh:
  filename: /some/path
  scale: 1.0
rbd::parsers::Visual

name string
origin Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
geometry Cannot handle data:
{
  "required": [
    "box"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "cylinder"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "mesh"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "sphere"
  ]
}
OR
Cannot handle data:
{
  "required": [
    "superellipsoid"
  ]
}
{
  "name": "visual",
  "origin":
  {
    "rotation": [1.0, 0.0, 0.0,
                 0.0, 1.0, 0.0,
                 0.0, 0.0, 1.0],
    "translation": [0.0, 0.0, 0.0]
  },
  "geometry":
  {
    "cylinder":
    {
      "radius": 0.5,
      "length": 1.0
    }
  }
}
name: visual
origin:
  rotation: [1.0, 0.0, 0.0,
             0.0, 1.0, 0.0,
             0.0, 0.0, 1.0]
  translation: [0.0, 0.0, 0.0]
geometry:
  cylinder:
    radius: 0.5
    length: 1.0
rbd::parsers::Geometry::Sphere

radius number
{
  "radius": 1.0
}
radius: 1.0
rbd::Body

name string
inertia
sva::RBInertiad

mass number ≥ 0
momentum
Eigen::Vector3d

array[3]  number
inertia Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
{
  "name": "B0",
  "inertia": {
    "mass": 0.0,
    "momentum": [0.0, 0.0, 0.0],
    "inertia": [1.0, 0.0, 0.0,
                0.0, 1.0, 0.0,
                0.0, 0.0, 1.0]
  }
}
name: B0
inertia:
  mass: 0.0
  momentum: [0.0, 0.0, 0.0]
  inertia: [1.0, 0.0, 0.0,
            0.0, 1.0, 0.0,
            0.0, 0.0, 1.0]
rbd::parsers::Geometry::Box

size number
{
  "size": 1.0
}
size: 1.0
rbd::MultiBody

bodies array 
rbd::Body

name string
inertia
sva::RBInertiad

mass number ≥ 0
momentum
Eigen::Vector3d

array[3]  number
inertia Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
joints array 
rbd::Joint

type
rbd::Joint::Type

type enum  string  rev  prism  spherical  planar  cylindrical  free  fixed 
axis
Eigen::Vector3d

array[3]  number
forward boolean
name string
isMimic boolean
mimicName string
mimicMultiplier number
mimicOffset number
preds array  integer
succs array  integer
parents array  integer
transforms array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
{
    "bodies": [
        {
            "name": "b0",
            "inertia": {
                "mass": 0.0,
                "momentum": [
                    0.0,
                    0.0,
                    0.0
                ],
                "inertia": [
                    1.0,
                    0.0,
                    0.0,
                    0.0,
                    1.0,
                    0.0,
                    0.0,
                    0.0,
                    1.0
                ]
            }
        },
        {
            "name": "b1",
            "inertia": {
                "mass": 0.0,
                "momentum": [
                    0.0,
                    0.0,
                    0.0
                ],
                "inertia": [
                    1.0,
                    0.0,
                    0.0,
                    0.0,
                    1.0,
                    0.0,
                    0.0,
                    0.0,
                    1.0
                ]
            }
        }
    ],
    "joints": [
        {
            "type": {
                "type": "fixed"
            },
            "axis": [
                0.0,
                0.0,
                1.0
            ],
            "forward": true,
            "isMimic": false,
            "name": "Root"
        },
        {
            "type": {
                "type": "rev"
            },
            "axis": [
                0.0,
                0.0,
                1.0
            ],
            "forward": true,
            "isMimic": false,
            "name": "j0"
        }
    ],
    "preds": [
        -1,
        0
    ],
    "succs": [
        0,
        1
    ],
    "parents": [
        -1,
        0
    ],
    "transforms": [
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                1.0,
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0
            ]
        },
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                1.0,
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0
            ]
        }
    ]
}
bodies:
- name: b0
  inertia:
    mass: 0
    momentum:
    - 0
    - 0
    - 0
    inertia:
    - 1
    - 0
    - 0
    - 0
    - 1
    - 0
    - 0
    - 0
    - 1
- name: b1
  inertia:
    mass: 0
    momentum:
    - 0
    - 0
    - 0
    inertia:
    - 1
    - 0
    - 0
    - 0
    - 1
    - 0
    - 0
    - 0
    - 1
joints:
- type:
    type: fixed
  axis:
  - 0
  - 0
  - 1
  forward: true
  isMimic: false
  name: Root
- type:
    type: rev
  axis:
  - 0
  - 0
  - 1
  forward: true
  isMimic: false
  name: j0
preds:
- -1
- 0
succs:
- 0
- 1
parents:
- -1
- 0
transforms:
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 1
  - 0
  - 0
  - 0
  - 1
  - 0
  - 0
  - 0
  - 1
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 1
  - 0
  - 0
  - 0
  - 1
  - 0
  - 0
  - 0
  - 1
rbd::parsers::Geometry::Superellipsoid

size number
epsilon1 number
epsilon2 number
{
  "size": 1.0,
  "epsilon1": 0.5,
  "epsilon2": 0.1
}
size: 1.0
epsilon1: 0.5
epsilon2: 0.1
rbd::parsers::Geometry::Mesh

filename string
scale number
{
  "filename": "/some/path",
  "scale": 1.0
}
filename: /some/path
scale: 1.0
rbd::MultiBodyConfig

q array  array  number
alpha array  array  number
alphaD array  array  number
force array 
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
jointConfig array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
jointVelocity array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
jointTorque array  array  number
motionSubspace array 
Eigen::Matrix6Xd

Stored in row-major order.
The array length should be a multiple of 6.
array  number
bodyPosW array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
parentToSon array 
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
bodyVelW array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
bodyVelB array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
bodyAccB array 
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
gravity
Eigen::Vector3d

array[3]  number
{
    "q": [
        [],
        [
            0.0
        ]
    ],
    "alpha": [
        [],
        [
            0.0
        ]
    ],
    "alphaD": [
        [],
        [
            0.0
        ]
    ],
    "force": [
        {
            "couple": [
                0.0,
                0.0,
                0.0
            ],
            "force": [
                0.0,
                1.0,
                0.0
            ]
        },
        {
            "couple": [
                0.0,
                0.0,
                1.0
            ],
            "force": [
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "jointConfig": [
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "jointVelocity": [
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "jointTorque": [
        [],
        [
            0.0
        ]
    ],
    "motionSubspace": [
        {
            "cols": 0,
            "data": []
        },
        {
            "cols": 1,
            "data": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "bodyPosW": [
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "parentToSon": [
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "translation": [
                0.0,
                0.0,
                0.0
            ],
            "rotation": [
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "bodyVelW": [
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "bodyVelB": [
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "bodyAccB": [
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        },
        {
            "angular": [
                0.0,
                0.0,
                0.0
            ],
            "linear": [
                0.0,
                0.0,
                0.0
            ]
        }
    ],
    "gravity": [
        0.0,
        0.0,
        9.81
    ]
}
q:
- []
- - 0
alpha:
- []
- - 0
alphaD:
- []
- - 0
force:
- couple:
  - 0
  - 0
  - 0
  force:
  - 0
  - 1
  - 0
- couple:
  - 0
  - 0
  - 1
  force:
  - 0
  - 0
  - 0
jointConfig:
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
jointVelocity:
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
jointTorque:
- []
- - 0
motionSubspace:
- cols: 0
  data: []
- cols: 1
  data:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
bodyPosW:
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
parentToSon:
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
- translation:
  - 0
  - 0
  - 0
  rotation:
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
  - 0
bodyVelW:
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
bodyVelB:
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
bodyAccB:
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
- angular:
  - 0
  - 0
  - 0
  linear:
  - 0
  - 0
  - 0
gravity:
- 0
- 0
- 9.81
rbd::Joint

type
rbd::Joint::Type

type enum  string  rev  prism  spherical  planar  cylindrical  free  fixed 
axis
Eigen::Vector3d

array[3]  number
forward boolean
name string
isMimic boolean
mimicName string
mimicMultiplier number
mimicOffset number
{
  "type": "rev",
  "axis": [0.0, 0.0, 1.0],
  "forward": true,
  "name": "J0",
  "isMimic": false
}
type: rev
axis: [0.0, 0.0, 1.0]
forward: true
name: J0
isMimic: false
rbd::Joint::Type

type enum  string  rev  prism  spherical  planar  cylindrical  free  fixed 
{
  "type": "rev"
}
type: rev
rbd::parsers::Geometry::Cylinder

radius number
length number
{
  "radius": 0.5,
  "length": 1.0
}
radius: 0.5
length: 1.0
Eigen::Vector6d

array[6]  number
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Eigen::Vector3d

array[3]  number
[0.0, 0.0, 0.0]
[0.0, 0.0, 0.0]
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
[1.0, 0.0, 0.0,
 0.0, 1.0, 0.0,
 0.0, 0.0, 1.0]
[1.0, 0.0, 0.0,
 0.0, 1.0, 0.0,
 0.0, 0.0, 1.0]
Eigen::Vector2d

array[2]  number
[0.0, 0.0]
[0.0, 0.0]
Eigen::VectorXd

array  number
[0.0, 0.0, 0.0, 0.0, 0.0]
[0.0, 0.0, 0.0, 0.0, 0.0]
Eigen::Quaterniond

The array is normalized when read by configuration.
array[4]  number
[1.0, 0.0, 0.0, 0.0]
[1.0, 0.0, 0.0, 0.0]
Eigen::Matrix6d

Stored in row-major order.
array[36]  number
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 1.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]
[1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 1.0, 0.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 1.0, 0.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]
Eigen::Matrix6Xd

Stored in row-major order.
The array length should be a multiple of 6.
array  number
[1.0, 0.0, 0.0,
 0.0, 1.0, 0.0,
 0.0, 0.0, 1.0,
 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0]
[1.0, 0.0, 0.0,
 0.0, 1.0, 0.0,
 0.0, 0.0, 1.0,
 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0,
 0.0, 0.0, 0.0]
mc_control::Gripper
[API]
Gripper target and safety configuration
target array  number Target for all active joints in the gripper
OR
Keys are joint names and values are the corresponding target joint angle
Per-joint target

Keys are joint names and values are the corresponding target joint angle
* number Joint target [rad]
opening 0 ≤ number ≤ 1 Target opening percentage of the gripper
OR
Keys are joint names and values are the corresponding target opening percentage
Per-joint opening

Keys are joint names and values are the corresponding target opening percentage
* 0 ≤ number ≤ 1 Joint target opening percentage
safety Parameters to prevent over-torques on position-controlled grippers
mc_rbdyn::RobotModule::Gripper::Safety
[API]
Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
{
  "opening": 0.3,
  "safety":
  {
    "overCommandLimitIterN": 5,
    "releaseSafetyOffset":  0.034,
    "percentVMax": 0.5
  }
}
opening:
  L_UTHUMB: 0.3
safety:
  overCommandLimitIterN: 5
  releaseSafetyOffset: 0.034
  percentVMax: 0.5
mc_rtc::gui::PointConfig
[API]
scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
{
  "scale": 1.0,
  "color": "red"
}
---
scale: 1.0
color: red
mc_rtc::gui::Color
[API]
Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
[1.0, 0.0, 0.0, 1.0]
---
[1.0, 0.0, 0.0, 1.0] # "red" string is also supported
mc_rtc::gui::LineConfig
[API]
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color
[API]
Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
width number
style enum  solid  dotted 
{
  "color": "red",
  "width": 2.0,
  "style": "dotted"
}
---
color: red
width: 2.0
style: solid
mc_rtc::gui::ForceConfig
[API]
Arrow representing a force
head_diam number
head_len number
shaft_diam number
scale number
start_point_scale number
end_point_scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
force_scale number
{
  "force_scale": 1.0,
  "color": "blue"
}
---
force_scale: 1.0
color: blue
mc_rtc::gui::ArrowConfig
[API]
head_diam number
head_len number
shaft_diam number
scale number
start_point_scale number
end_point_scale number
color Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
mc_rtc::gui::Color

Color expressed as (r,g,b,a) array with values between 0 and 1. May also be a string with a color name [white, black, red, green, blue, cyan, magenta, yellow, gray, lightgray]. See mc_rtc::gui::Color.
array[4]  number
{
  "color": [1.0, 0.0, 1.0, 1.0],
  "scale": 1.0
}
---
scale: 1.0
color: blue
sva::MotionVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
{
  "angular": [0.0, 0.0, 0.0],
  "linear": [0.0, 0.0, 0.0]
}
angular: [0.0, 0.0, 0.0]
linear: [0.0, 0.0, 0.0]
sva::ForceVecd

Either couple or force can be ommited if the other is present
couple
Eigen::Vector3d

array[3]  number
force
Eigen::Vector3d

array[3]  number
{
  "couple": [0.0, 0.0, 0.0],
  "force": [0.0, 0.0, 0.0]
}
couple: [0.0, 0.0, 0.0]
force: [0.0, 0.0, 0.0]
sva::RBInertiad

mass number ≥ 0
momentum
Eigen::Vector3d

array[3]  number
inertia Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
{
  "mass": 0.0,
  "momentum": [0.0, 0.0, 0.0],
  "inertia": [1.0, 0.0, 0.0,
              0.0, 1.0, 0.0,
              0.0, 0.0, 1.0]
}
mass: 0.0
momentum: [0.0, 0.0, 0.0]
inertia: [1.0, 0.0, 0.0,
          0.0, 1.0, 0.0,
          0.0, 0.0, 1.0]
sva::ImpedanceVecd

Either angular or linear can be ommited if the other is present
angular
Eigen::Vector3d

array[3]  number
linear
Eigen::Vector3d

array[3]  number
{
  "angular": [0.0, 0.0, 0.0],
  "linear": [0.0, 0.0, 0.0]
}
angular: [0.0, 0.0, 0.0]
linear: [0.0, 0.0, 0.0]
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
{
  "rotation": [1.0, 0.0, 0.0,
               0.0, 1.0, 0.0,
               0.0, 0.0, 1.0],
  "translation": [0.0, 0.0, 0.0]
}
rotation: [1.0, 0.0, 0.0,
           0.0, 1.0, 0.0,
           0.0, 0.0, 1.0]
translation: [0.0, 0.0, 0.0]
mc_control::fsm::HalfSittingState
[API]
Brings the robot posture to halfsitting stance
robot string  default MainRobot Name of the robot to put to halfsitting
stiffness number ≥ 0  default 1 Stiffness of the posture task
eval number ≥ 0 Threshold on posture eval after which the state is considered completed. If absent, the state is always considered completed.
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "base": "HalfSitting",
  "stiffness": 10,
  "eval": 1e-3
}
base: HalfSitting
stiffness: 10
eval: 0.001
mc_control::fsm::EnableControllerState
[API]
Switch to the given controller.
Outputs "OK" in case of success, "Failed" otherwise.
NextController string  default  Controller to switch to
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "base": "EnableController",
  "NextController": "CoM"
}
base: EnableController
NextController: CoM
mc_control::fsm::PauseState
[API]
Pause for a given duration
duration number ≥ 0 Pause duration in seconds
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{

  // Pause 1s
  "Pause_1s":
  {
    "base": "Pause",
    "duration": 1.0
  },
  // Pause 2s
  "Pause_2s":
  {
    "base": "Pause_5s",
    "duration": 2.0
  },
  // Pause 5s
  "Pause_5s":
  {
    "base": "Pause",
    "duration": 5.0
  }
}
---
Pause_1s:
  base: Pause
  duration: 1
Pause_2s:
  base: Pause_5s
  duration: 2
Pause_5s:
  base: Pause
  duration: 5
mc_control::fsm::StabilizerStandingState
[API]
This state creates a mc_tasks::lipm_stabilizer::StabilizerTask, and provides set-point position target to the CoM, from which a full dynamic trajectory (com, comd, comdd, zmp) is computed and provided as reference to the lipm_stabilizer::StabilizerTask. For further information, refer to the tutorial and the LIPMStabilizer sample controller.
StabilizerConfig The stabilizer task attempts to make the real system track as best as possible the desired state of the CoM (position, velocity, acceleration) and ZMP based on the LIPM model. The reference desired dynamic state must be valid, and continuous (i.e obtained from a walking MPC). A suitable state observation pipeline is required to observe the CoM position and velocity and ZMP of the real system (e.g [Encoder, KinematicInertialObserver]). Default gains are defined in the robot module (mc_rbdyn::RobotModule) and may be overriden from configuration (the default gains reported in this schemas are those of mc_rtc in case none is provided by the RobotModule).
See the LIPM Stabilizer tutorial and the API Documentation mc_tasks::lipm_stabilizer::StabilizerTask for further information.
mc_tasks::lipm_stabilizer::StabilizerTask
[API]
The stabilizer task attempts to make the real system track as best as possible the desired state of the CoM (position, velocity, acceleration) and ZMP based on the LIPM model. The reference desired dynamic state must be valid, and continuous (i.e obtained from a walking MPC). A suitable state observation pipeline is required to observe the CoM position and velocity and ZMP of the real system (e.g [Encoder, KinematicInertialObserver]). Default gains are defined in the robot module (mc_rbdyn::RobotModule) and may be overriden from configuration (the default gains reported in this schemas are those of mc_rtc in case none is provided by the RobotModule).
See the LIPM Stabilizer tutorial and the API Documentation mc_tasks::lipm_stabilizer::StabilizerTask for further information.
type constant  lipm_stabilizer 
name string
robot string  default MainRobot Name of the robot to which this task applies
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
contacts array  enum  string  Left  Right  Support contact surfaces (default: [Left, Right])
Left Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
Right Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
* You may specify different configuration entries on a per-robot basis. In this case the key is the robot name and the values are the configuration parameters you want to modify for that robot
Robot-specific stabilizer configuration

You may specify different configuration entries on a per-robot basis. In this case the key is the robot name and the values are the configuration parameters you want to modify for that robot
leftFootSurface string
rightFootSurface string
torsoBodyName string
friction number ≥ 0  default 0.7
tasks Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
Tasks configuration

Configuration of the tasks managed by the stabilizer: CoM, left and right contact CoP tasks, and torso and pelvis regularization tasks
com CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
CoM task parameters

CoM task parameters. The CoM task should have a higher importance than all other active tasks. Too low gains will degrade the stabilizer's tracking performance
stiffness array  [ number  default 1000 , number  default 1000 , number  default 100 ]
weight number ≥ 0  default 1000 Task's weight.
height number ≥ 0  default 0.84 Desired height of the CoM.
activeJoints array  string
contact Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
Contact tasks parameters

Contact tasks parameters (CoP tasks). These tasks have very high weight to simulate a contact constraint in task space.
constrainCoP boolean If true, the contact constraint will ensure that the Center of Pressure remains inside the contact region
weight number ≥ 0  default 100000
stiffness Dimensional stiffness for the CoP tasks
sva::MotionVecd

Dimensional stiffness for the CoP tasks
angular array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
linear array  [ number ≥ 0  default 1 , number ≥ 0  default 1 , number ≥ 0  default 1 ]
damping Dimensional damping for the CoP tasks
sva::MotionVecd

Dimensional damping for the CoP tasks
angular array  [ number  default 300 , number  default 300 , number  default 300 ]
linear array  [ number  default 300 , number  default 300 , number  default 300 ]
pelvis Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
Pelvis task parameters

Pelvis task parameters (regularization). This task contributes to stabilization by keeping the pelvis aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution.
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
torso Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
Torso task parameters

Toso task parameters (regularization). This task contributes to stabilization by keeping the torso aligned with the contacts orientation. Without it, the robot has been known to vibrate, lower the gains with caution. The pitch value allows to lean the torso forward/backwards while respecting the feet's orientation in the other directions
weight number ≥ 0  default 100
stiffness number ≥ 0  default 10
pitch number  default 0
safety_thresholds These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
mc_rbyn::lipm_stabilizer::SafetyThresholds

These thresholds are intended to make the stabilizer behaviour safer against invalid parameter choices, and sensor noise. Change these values with caution. See mc_rbdyn::lipm_stabilizer::SafetyThresholds
MAX_AVERAGE_DCM_ERROR number ≥ 0  default 0.05 Maximum average (integral) DCM error in [m]
MAX_COP_ADMITTANCE number ≥ 0  default 0.1 Maximum CoP admittance for foot damping control
MAX_DCM_D_GAIN number ≥ 0  default 2 Maximum DCM derivative gain (no unit)
MAX_DCM_I_GAIN number ≥ 0  default 100 Maximum DCM average integral gain in [Hz]
MAX_DCM_P_GAIN number ≥ 0  default 20 Maximum DCM proportional gain in [Hz]
MAX_COMD_GAIN number ≥ 0  default 10 Maximum CoMd gain in [Hz]
MAX_ZMPD_GAIN number ≥ 0  default 10 Maximum ZMPd gain in [Hz]
MAX_DFZ_ADMITTANCE number ≥ 0  default 5e-4 Maximum admittance in [s] / [kg] for foot force difference control
MAX_DFZ_DAMPING number ≥ 0  default 10 Maximum normalized damping in [Hz] for foot force difference control
MAX_FDC_RX_VEL number ≥ 0  default 0.2 Maximum x-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RY_VEL number ≥ 0  default 0.2 Maximum y-axis angular velocity in [rad] / [s] for foot damping control
MAX_FDC_RZ_VEL number ≥ 0  default 0.2 Maximum z-axis angular velocity in [rad] / [s] for foot damping control
MIN_DS_PRESSURE number ≥ 0  default 15 Minimum normal contact force in DSP, used to avoid low-pressure targets when close to contact switches
MIN_NET_TOTAL_FORCE_ZMP number ≥ 0  default 1
fdqp_weights Force distribution QP parameters
mc_rbdyn::lipm_stabilizer::FDQPWeights

Force distribution QP parameters
net_wrench number ≥ 0  default 10000
ankle_torque number ≥ 0  default 100
pressure number ≥ 0  default 1
vdc Vertical drift compensation parameters
Vertical drift compensation parameters

Vertical drift compensation parameters
frequency number ≥ 0  default 1 Frequency used in double-support vertical drift compensation
stiffness number ≥ 0  default 1000 Stiffness used in single-support vertical drift compensation
admittance Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
Admittance Parameters

Admittance parameters for the contact tasks. Contacts are expected to be free to move along the pitch and roll axis.
cop array  [ number  default 0 , number  default 0 ]
dfz number ≥ 0  default 1e-4
dfz_damping number ≥ 0  default 0
velFilterGain 0 ≤ number ≤ 1  default 0.8 Gain for the low-pass filter on reference velocity
maxVel maximum velocity of the cop tasks
sva::MotionVecd

maximum velocity of the cop tasks
angular array  [ number ≥ 0  default 0.3 , number ≥ 0  default 0.3 , number ≥ 0  default 0.3 ]
linear array  [ number ≥ 0  default 0.1 , number ≥ 0  default 0.1 , number ≥ 0  default 0.1 ]
dcm_tracking DCM Tracking parameters
DCM Tracking Parameters

DCM Tracking parameters
gains
object

prop number ≥ 0  default 1 Proportional gain on DCM error
integral number ≥ 0  default 5 Integral gain on DCM error
deriv number ≥ 0  default 0 Derivative gain on DCM error
comdError number ≥ 0  default 1 Gain on CoM derivative error
zmpd number ≥ 0  default 0 Gain on ZMP derivative
derivator_time_constant number ≥ 0  default 1 Time window for exponential moving average filter of the DCM integrator [s]
integrator_time_constant number ≥ 0  default 15 Time window for the stationary offset filter of the DCM derivator [s]
dcm_bias A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
mc_rbdyn::lipm_stabilizer::DCMBiasEstimatorConfiguration

A humanoid robot can be modeled as an inverted pendulum. The dynamics can be linearized to obtain a dynamics with a convergent and a divergent component of motion (DCM). The DCM can be measured using the CoM and its velocity, but the CoM position can be biased. The dynamics of the DCM depends on the Zero Moment Point. This estimator uses Kalman Filtering to estimate this bias and give a delay-free filtering of the DCM. For more details please refer to LipmDcmEstimator class in state-observation
dcmMeasureErrorStd number ≥ 0  default 0.01 the standard deviation of the dcm estimation error, NOT including the bias (m)
zmpMeasureErrorStd number ≥ 0  default 0.05 the standard deviaiton of the zmp estimation error (m)
biasDriftPerSecondStd number ≥ 0  default 0.02 the standard deviation of the bias drift (m/s)
biasLimit number ≥ 0  default 0.02 the X and Y (expressed in local frame) largest accepted absolute values of the bias (zero means no limit)
withDCMBias boolean  default false whether the bias estimation is activated
withDCMFilter boolean  default false whether the DCM is filtered with this estimator
external_wrench Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration

Parameters for external wrench compensation. See mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration for detailed usage.
add_expected_com_offset boolean  default false Whether to add the CoM offset expected from the external wrenches.
subtract_measured_value boolean  default false Use the measured external wrenches instead of target ones
modify_com_error boolean  default false Modify CoM depending on the error of the external wrenches in target and measurement
modify_zmp_error boolean  default false Modify ZMP depending on the error of the external wrenches in target and measurement
modify_zmp_error_d boolean  default false Modify ZMP velocity depending on the error of the external wrenches in target and measurement
exclude_from_dcm_bias_est boolean  default false Exclude external forces from DCM Bias estimation (should be used when the pg/stabilizer is actively compensating for those measured forces)
com_offset_err_com_limit number ≥ 0  default 0.1 Limit of CoM offset error handled by CoM modification [m]
com_offset_err_zmp_limit number ≥ 0  default 0.1 Limit of ZMP offset error handled by ZMP modification [m]
ext_wrench_sum_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of the sum of the measured external wrenches
com_offset_cutoff number ≥ 0  default 0.05 Cutoff period [s] for the low-pass filter of CoM offset
com_offset_com_cutoff number ≥ 0  default 1.0 Cutoff period [s] for the low-pass filter of CoM offset to extract CoM modification
derivator_time_constant number ≥ 0  default 1.0 Time window [s] for the stationary offset filter of the CoM offset derivator
contacts array  enum  string  Left  Right  Support contact surfaces (default: [Left, Right])
Left Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
Right Stabilizer Contact Target (default: current contact surface pose)
Stabilizer Contact Target

Stabilizer Contact Target (default: current contact surface pose)
rotation
Eigen::Vector3d

array[3]  number
translation
Eigen::Vector3d

array[3]  number
overwriteRPY Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
rpy

Overwrites the specified roll/pitch/yaw axes with the provided angle (in world frame) while keeping the other axes unchanged (example: keep world yaw rotation intact, but align roll and ptich with the floor plane)
roll number
pitch number
yaw number
height number ≥ 0
stiffness number ≥ 0  default 5 Stiffness of CoM target
damping number ≥ 0 Damping of CoM target (default=2*sqrt(stiffness))
above string Put CoM over the special frames LeftAnkle, RightAnkle or Center, or any other valid surface on the robot
com Target CoM position
Eigen::Vector3d

array[3]  number
completion Completion criteria for the state
Completion criteria for the state

Completion criteria for the state
dcmEval Returns true with output 'OK' when the dcm error is under this threshold.
Eigen::Vector3d

array[3]  number
anchorFrameFunction string  default KinematicAnchorFrame::<robot> Name of the datastore entry providing a kinematic anchor frame for both the control/real robots. This anchor frame may be used by observers to compute the state of the real robot instance.
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "Stabilizer::Standing": {
    "base": "StabilizerStandingState",
    "stiffness": 5,
    "StabilizerConfig": {
      "type": "lipm_stabilizer",
      "leftFootSurface": "LeftFootCenter",
      "rightFootSurface": "RightFootCenter",
      "enabled": true,
      "contacts": [ "Left", "Right" ],
      "Left": {
        "overwriteRotationRPY": {
          "roll": 0,
          "pitch": 0
        },
        "height": 0
      },
      "Right": {
        "overwriteRotationRPY": {
          "roll": 0,
          "pitch": 0
        },
        "height": 0
      }
    }
  },
  "Stabilizer::GoCenter": {
    "base": "Stabilizer::Standing",
    "above": "CenterSurfaces",
    "completion": {
      "dcmEval": [ 0.005, 0.005, 0.05 ]
    }
  },
  "Stabilizer::GoLeft": {
    "base": "Stabilizer::GoCenter",
    "above": "LeftSurface"
  },
  "Stabilizer::GoRight": {
    "base": "Stabilizer::GoLeft",
    "above": "RightSurface"
  },
  "Stabilizer::LeftSupport": {
    "base": "Stabilizer::GoLeft",
    "completion": {},
    "StabilizerConfig": {
      "contacts": [ "Left" ]
    }
  },
  "Stabilizer::RightSupport": {
    "base": "Stabilizer::GoRight",
    "completion": {},
    "StabilizerConfig": {
      "contacts": [ "Right" ]
    }
  },
  "Stabilizer::GoHalfSitting": {
    "base": "Parallel",
    "states": [
      "Stabilizer::GoCenter",
      "HalfSitting"
    ]
  }
}
############################################
# Example use of the StabilizerStandingState
# See also mc_control/fsm/states/data/StabilizerStanding.yaml for useful default states configuration
# See also mc_control/samples/LIPMStabilizer/etc/LIPMStabilizer.in.yaml for a full FSM sample
############################################

##
# This state keeps the robot standing at it's current position in double support.
# It targets a contact at the current foot position, but with identity world orientation and nominal height 0.
##
Stabilizer::Standing:
  base: StabilizerStandingState
  stiffness: 5
  StabilizerConfig:
    type: lipm_stabilizer
    robotIndex: 0
    leftFootSurface: LeftFootCenter
    rightFootSurface: RightFootCenter
    enabled: true
    contacts: [Left, Right]
    Left:
      # Keep the yaw intact, align roll/pitch with the (flat) ground
      overwriteRotationRPY:
        roll: 0
        pitch: 0
      height: 0
    Right:
      overwriteRotationRPY:
        roll: 0
        pitch: 0
      height: 0

Stabilizer::GoCenter:
  base: Stabilizer::Standing
  above: CenterSurfaces
  completion:
    dcmEval: [0.005, 0.005, 0.05]

##
# Make the CoM move to a point above the left foot ankle
##
Stabilizer::GoLeft:
  base: Stabilizer::GoCenter
  above: LeftSurface

##
# Make the CoM move to a point above the right foot ankle
##
Stabilizer::GoRight:
  base: Stabilizer::GoLeft
  above: RightSurface

##
# Single support state that keeps the CoM above the left foot contact
##
Stabilizer::LeftSupport:
  base: Stabilizer::GoLeft
  completion: {}
  StabilizerConfig:
    contacts: [Left]

##
# Single support state that keeps the CoM above the right foot contact
##
Stabilizer::RightSupport:
  base: Stabilizer::GoRight
  completion: {}
  StabilizerConfig:
    contacts: [Right]

###
# Go to half sitting posture in parallel to the stabilizer
# Note that the final posture may not be the default halfsitting depending on CoM height,
# but the joints posture target will be that of halfsitting
###
Stabilizer::GoHalfSitting:
  base: Parallel
  states: ['Stabilizer::GoCenter', HalfSitting]
mc_control::fsm::MetaState
[API]
Plays its own FSM
Managed boolean  default false If true, this state does not handle transitions by itself
StepByStep boolean Affects the StepByStep transition behaviour
Defaults to true for the main executor, false otherwise
ResetPostures boolean When true reset the posture tasks to the current posture before transitioning to the next state. Defaults to true for the main executor, false otherwise (Meta states)
transitions array  array  string A transition map, required if Managed is false
category array  string Overrides the default GUI category (i.e. {"FSM", name})
configs Override configuration for the state running inside this FSM
object

Override configuration for the state running inside this FSM
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "base": "Meta",
  "Managed": false,
  "StepByStep": true,
  "transitions": [
    [ "StateA", "OK", "StateB", "Strict" ],
    [ "StateB", "REPEAT", "StateB", "Auto" ],
    [ "StateB", "OK", "StateC" ]
  ],
  "configs":
  {
    "StateA":
    {
      "stiffness": 100
    }
  }
}
base: Meta
Managed: false
StepByStep: true
transitions:
  - [ StateA, OK, StateB, Strict ]
  - [ StateB, REPEAT, StateB, Auto ]
  - [ StateB, OK, StateC ]
configs:
  StateA:
    stiffness: 100
mc_control::fsm::PostureState
[API]
Change configuration of the global posture task of a robot.
robot string  default MainRobot Name of the robot whose posture task is modified
postureTask Configuration for the gains and targets of the posture task
PostureTaskConfig

Configuration for the gains and targets of the posture task
posture array  array  number Posture target
jointGains array  Gains for specific joints
tasks::qp::JointGains

jointName string
stiffness number
damping number
jointWeights Weights for specific joints
object

Weights for specific joints
* number Joint weight
target array  array  [ string , array  [ number ] ] Map of joint names -> vector of joint values
weight number  default 10 Task's weight
stiffness number  default 1 Tasks's stiffness
completion Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
Completion Criteria

Builds a conditional function that returns true when all of its conditions are satisfied.
Some states (e.g MetaTasks) may use these criterias to determine when a task is finished.
AND array[2]  [ , ] True when criteria1 and criteria2 are both true
Completion Criteria

Completion criteria on the left-hand side of the AND comparison
Completion Criteria

Completion criteria on the right-hand side of the AND comparison
OR array[2]  [ , ] True when either criteria1 or criteria2 is true
Completion Criteria

Completion criteria on the left-hand side of the OR comparison
Completion Criteria

Completion criteria on the right-hand side of the OR comparison
timeout number ≥ 0 True when the task has been added to the solver for longer than this threshold
eval number ≥ 0 True when the task's error (norm) is below this threshold
speed number ≥ 0 True when the task's velocity (norm) is below this threshold
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "robot": "door",
  "completion": {
    "eval": 0.01
  },
  "postureTask": {
    "weight": 100,
    "jointGains": [
      {
        "jointName": "handle",
        "stiffness": 50
      },
      {
        "jointName": "door",
        "stiffness": 50
      }
    ],
    "target": {
      "handle": [
        -1.0
      ],
      "door": [
        -0.3
      ]
    }
  }
}
---
robot: door
completion:
  eval: 0.01
postureTask:
  weight: 100
  jointGains:
    - jointName: handle
      stiffness: 50
    - jointName: door
      stiffness: 50
  target:
    handle: [-1.0]
    door: [-0.3]
mc_control::fsm::Grippers
[API]
Controls the grippers of a robot
robot string If ommited, the state applies to the main robot
grippers Map of gripper name -> gripper configuration
Grippers configuration

Map of gripper name -> gripper configuration
* Gripper target and safety configuration
mc_control::Gripper
[API]
Gripper target and safety configuration
target array  number Target for all active joints in the gripper
OR
Keys are joint names and values are the corresponding target joint angle
Per-joint target

Keys are joint names and values are the corresponding target joint angle
* number Joint target [rad]
opening 0 ≤ number ≤ 1 Target opening percentage of the gripper
OR
Keys are joint names and values are the corresponding target opening percentage
Per-joint opening

Keys are joint names and values are the corresponding target opening percentage
* 0 ≤ number ≤ 1 Joint target opening percentage
safety Parameters to prevent over-torques on position-controlled grippers
mc_rbdyn::RobotModule::Gripper::Safety
[API]
Parameters to prevent over-torques on position-controlled grippers
overCommandLimitIterN number ≥ 1  default 5 Maximum number of iterations spent above "threshold" before the gripper is release by "release"
actualCommandDiffTrigger number ≥ 0  default 0.14 Encoder-command difference [rad] over which the gripper is considered in overtorque
releaseSafetyOffset number ≥ 0  default 0.034 Angle [rad] by which the gripper should be released when safety is triggered
percentVMax 0 ≤ number ≤ 1  default 0.25 Gripper opening speed as a percentage of the maximum velocity
keepSafetyConfig boolean  default false When true, keep this gripper's safety configuration after the state has been destroyed, otherwise restore it to its former value
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "base": "Grippers",
  "grippers":
  {
    "l_gripper": { "target": [0.7, 0.5] },
    "r_gripper": { "opening": 0.5 }
  }
}
base: Grippers
grippers:
  l_gripper:
    target: [0.7, 0.5]
  r_gripper:
    opening: 0.5
mc_control::fsm::ParallelState
[API]
Play multiple states in parallel
The state is completed when all the states it's running are completed
The default state's output is the output of the last state it's running (see "outputs" for other behaviours)
states array  string List of states run by this state
delays Delay the start of specified states (in seconds)
object

Delay the start of specified states (in seconds)
configs Override configuration for the state running inside this FSM
object

Override configuration for the state running inside this FSM
outputs array  string List of state names for which the transition will be generated from the state output.
  • When omitted or empty the output of the last state in the "states" property will be used.
  • When state names are provided, the transition output is generated according to the following pattern: "State1(state1 output), State2(state2 output)".
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  "base": "Parallel",
  // This state runs StateA, StateB and StateC until they are all completed
  // Its output is StateC's output
  "states": ["StateA", "StateB", "StateC"],
  "delays":
  {
    // StateB starts 4.5 seconds after the state is started
    "StateB": 4.5
  },
  "configs":
  {
    "StateA":
    {
      "stiffness": 100
    }
  }
}
base: Parallel
# This state runs StateA, StateB and StateC until they are all completed
# Its output is StateC's output
states: [StateA, StateB, StateC]
delays:
  # StateB starts 4.5 seconds after the state is started
  StateB: 4.5
configs:
  StateA:
    stiffness: 100
mc_control::fsm::AddRemoveContactState
[API]
Add or remove a contact
type enum  addContact  removeContact  compliance  Type of contact action
speed number ≥ 0  default 0.01
weight number ≥ 0  default 1000
stiffness number ≥ 0  default 2
contact Requires an mc_rbdyn::Robots instance to be loaded
mc_rbdyn::Contact
[API]
Requires an mc_rbdyn::Robots instance to be loaded
r1Surface string
r2Surface string
r1 string  default MainRobot Name of first robot involved in the contact
r2 string  default First extra robot Name of second robot involved in the contact
isFixed boolean
X_r2s_r1s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
X_b_s Either rotation or translation can be ommited if the other is present
sva::PTransformd

Either rotation or translation can be ommited if the other is present
rotation Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
Eigen::Matrix3d

Stored in row-major order.
Also accepts arrays of size 3 (RPY) and 4 (Quaternion).
array[9]  number
translation
Eigen::Vector3d

array[3]  number
friction number  default 0.7
ambiguityId integer  default -1
useCoM boolean  default true When true, this state will add a CoM task configured with the parameters in the "com" section
com Optional: If useCoM=true, adds a CoM task with these parameters, otherwise no CoM task will be added
object

com Desired position of the CoM (world frame)
Eigen::Vector3d

array[3]  number
move_com Move the desired CoM position (world frame)
Eigen::Vector3d

array[3]  number
weight number ≥ 0
stiffness number ≥ 0
damping number ≥ 0
dimWeight
Eigen::Vector3d

array[3]  number
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
  // Define Add/RemoveContact with reasonable default values

  "AddContact":
  {
    "base": "AddRemoveContact",
    "type": "addContact",
    "speed": 0.5,
    "weight": 1000,
    "stiffness": 2.0
  },
  "RemoveContact":
  {
    "base": "AddContact",
    "type": "removeContact"
  },
  "AddContactCompliant":
  {
    "base": "AddRemoveContact",
    "type": "compliance"
  }
}
---
AddContact:
  base: AddRemoveContact
  type: addContact
  speed: 0.5
  weight: 1000
  stiffness: 2
RemoveContact:
  base: AddContact
  type: removeContact
AddContactCompliant:
  base: AddRemoveContact
  type: compliance
mc_control::fsm::MessageState
[API]
Prints a message to the terminal and/or the GUI
log enum  string  info  success  warning  error  none  Type of message to log (default=info):
  • type matches the corresponding mc_rtc::log function.
  • Use "none" to disable terminal logging
gui array  string Category in which the message will be added.
  • When absent, do not show in the GUI
  • Empty array displays at the top of the GUI
  • Otherwise displays in the provided category
prefix string  default State name Prefix message, name of the GUI label
message string  default  Message to display
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
{
 "WarningDebugMessage":
 {
   "base": "Message",
   "log": "warning",
   "message": "Warning: the following action may be dangerous"
 },
 "GUIMessage":
 {
   "base": "Message",
   "gui": ["Action"],
   "log": "none",
   "prefix": "Vision check",
   "message": "Please check that the object has successfully been detected."
 }
}
---
WarningDebugMessage:
  base: Message
  log: warning
  message: 'Warning: the following action may be dangerous'
GUIMessage:
  base: Message
  gui: ["Action"]
  log: none
  prefix: "Vision check"
  message: "Please check that the object has successfully been detected."
mc_control::fsm::MetaTasksState
[API]
Create and run multiple tasks until their completion criteria is reached
tasks Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
object

Tasks that will be added when the state starts and removed when the state stops.
Keys are names for the tasks and values are MetaTask objects.
outputs array  string List of tasks names from which the completion criteria will be used to generate the state's output.
  • output="OK" if empty
  • Otherwise the output will be of the form "Taks1=citeria1, Task2=criteria2..." where "criteria1" and "criteria2" correspond to the output string of the tasks' completion criteria (e.g. "timeout AND speed").
AddContacts array  Add the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContacts array  Remove the specified contacts during the state's start
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddContactsAfter array  Add the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
RemoveContactsAfter array  Remove the specified contacts during the state's teardown
mc_control::fsm::Contact

Contact representation used by the FSM
r1 string Name of the first robot in the contact
r2 string Name of the second robot in the contact
r1Surface string Name of the first robot's surface in the contact
r2Surface string Name of the second robot's surface in the contact
friction number  default 0.7 Contact's coefficient of friction
dof  default [1, 1, 1, 1, 1, 1] Contact DoF
Eigen::Vector6d

array[6]  number
AddCollisions array  Add the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisions array  Remove the specified collisions during the state's start
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
AddCollisionsAfter array  Add the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
RemoveCollisionsAfter array  Remove the specified collisions during the state's teardown
FSM collisions

Collisions constraint specification used by the FSM
r1 string Name of the first robot in the collision constraint
r2 string  default r1 Name of the second robot in the collision constraint
collisions array  Required if collisions are added.
Otherwise, if empty, all collisions between r1 and r2 are disabled
mc_rbdyn::Collision
[API]
body1 string First convex body used, wildcards can be used
body2 string Second convex body used, wildcards can be used
r1ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r2ActiveJoints array  string Active joints used to avoid the collision (default: none, unspecified: all)
r1InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r1ActiveJoints is specified.
r2InactiveJoints array  string Joints not used to avoid the collision (default: none). Has no effect if r2ActiveJoints is specified.
iDist number  default 0.05 Interaction distance
sDist number  default 0.01 Safety distance
damping number  default 0.0 Damping, 0 enables automatic computation
DisablePostureTask boolean  default false If true, disable all FSM posture tasks during this state execution.
OR
array  string Disable the posture tasks for the specified robots during this state execution.
constraints Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
object

Constraints that will be added when the state starts and removed when the state stops.
Keys are names for the constraints and values are ConstraintSet objects.
// First example, we simplify task entries for the sake of the example
"Example1":
{
  "base": "MetaTasks",
  "tasks":
  {
     "t1":
     {
       "objectiveA": 0.5,
       "objectiveB": 1.0,
       "completion": { "timeout": 5.0 }
     }
  }
}
// In Example1, one task is added and it will run for 5 seconds
// Second example
"Example2":
{
  "base": "Example1",
  "tasks":
  {
    "t1":
    {
      "objectiveA": 1.0,
      "completion": { "eval": 1e-6 }
    },
    "t2":
    {
      "objective": 0.5
    }
  }
}
// Example2 has two tasks, and:
// - t1's objectiveA is changed to 1.0, objectiveB is the same
// - t1 completion criteria is replaced
// Third example
"Example3":
{
  "base": "Example2",
  "tasks":
  {
    "t1":
    {
      "completion": {}
    },
    "t2":
    {
      "completion": { "eval": 1e-6 }
    }
  }
}
// Example3 still have two tasks, objectives are unchanged but:
// - t1 has no more completion criteria
// - t2 has a completion criteria
"Example4":
{
  "base": "Example3",
  "tasks":
  {
    "t1":
    {
      "completion":
      {
        "OR":
        [
          { "eval": 1e-3 },
          {
            "AND":
            [
              { "timeout": 3.0 },
              { "speed": 1e-2 }
            ]
          }
        ]
      }
    },
    "t2":
    {
      "completion": { "eval": 1e-4 }
    }
  },
  "outputCriteriaTasks": ["t1", "t2"]
}
// Example4 still have two tasks, objectives are unchanged but:
// - t1 now has a complex completion criteria
// - t2 has the same completion criteria but with a different threshold
// In addition, the outputCriteriaTasks array asks the state to generate
// its output string based on the completion criterias of tasks "t1" and "t2".
// The completion output will look like one of the following
// - t1=eval, t2=eval
// - t1=timeout AND speed, t2=eval
// It may be used to trigger branch choices in the FSM
// You may also use the DEFAULT output in your transition maps that will be used in case no other pattern matches
# First example, we simplify task entries for the sake of the example
Example1:
  base: MetaTasks
  tasks:
     t1:
       objectiveA: 0.5
       objectiveB: 1.0
       completion:
         timeout: 5.0
# In Example1, one task is added and it will run for 5 seconds
# Second example
Example2:
  base: Example1
  tasks:
    t1:
      objectiveA: 1.0
      completion:
        eval: 1e-6
    t2:
      objective: 0.5
# Example2 has two tasks, and:
# - t1's objectiveA is changed to 1.0, objectiveB is the same
# - t1 completion criteria is replaced
# Third example
Example3:
  base: Example2
  tasks:
    t1:
      completion: null
    t2:
      completion:
        eval: 1e-6
# Example3 still have two tasks, objectives are unchanged but:
# - t1 has no more completion criteria
# - t2 has a completion criteria
Example4:
  base: Example3
  tasks:
    t1:
      completion:
        OR:
        - eval: 0.001
        - AND:
          - timeout: 3
          - speed: 0.01
    t2:
      completion:
        eval: 0.0001
  outputs: [t1, t2]
# Example4 still have two tasks, objectives are unchanged but:
# - t1 now has a complex completion criteria
# - t2 has the same completion criteria but with a different threshold
# In addition, the outputCriteriaTasks array asks the state to generate
# its output string based on the completion criterias of tasks "t1" and "t2".
# The completion output will look like one of the following
# - t1=eval, t2=eval
# - t1=timeout AND speed, t2=eval
# It may be used to trigger branch choices in the FSM
# You may also use the DEFAULT output in your transition maps that will be used in case no other pattern matches
Eigen

Objects from the Eigen library.

Data is always stored in row-major order.

SpaceVecAlg

Objects from the SpaceVecAlg library.

RBDyn

Objects from the RBDyn library.

Tasks

Objects from the Tasks library.

GUI

Objects used in mc_rtc GUI description.

mc_rbdyn

Objects from mc_rbdyn. Used in various places in the framework.

ConstraintSet

These objects represent constraints that can be added to the solver.

They can be loaded from C++ with the following code:

// Access the constraint set loader
#include <mc_solver/ConstraintSetLoader.h>

// Get the constraint from a JSON file
auto constraint = mc_solver::ConstraintSetLoader::load(solver(), "/my/path/constraint.json");

// Get the constraint from a YAML file
auto constraint = mc_solver::ConstraintSetLoader::load(solver(), "/my/path/constraint.yaml");

// Actually you can get the constraint from any mc_rtc::Configuration entry
auto constraint = mc_solver::ConstraintSetLoader::load(solver(), config("constraint"));

// In all the cases above, constraint is an std::shared_ptr<mc_solver::ConstraintSet>
// but you can retrieve a more precise type, mc_rtc will check that the constraints
// that was retrieved from disk is compatible with the constraint you requested
auto constraint = mc_solver::ConstraintSetLoader::load<mc_solver::BoundedSpeedConstr>(solver(), config("constraint"));

This page shows what data is expected for each constraint available in mc_rtc.

MetaTask

These objects represent tasks that can be added to the solver.

They can be loaded from C++ with the following code:

// Access the meta task loader
#include <mc_tasks/MetaTaskLoader.h>

// Get the task from a JSON file
auto task = mc_tasks::MetaTaskLoader::load(solver(), "/my/path/task.json");

// Get the task from a YAML file
auto task = mc_tasks::MetaTaskLoader::load(solver(), "/my/path/task.yaml");

// Actually you can get the task from any mc_rtc::Configuration entry
auto task = mc_tasks::MetaTaskLoader::load(solver(), config("task"));

// In all the cases above, task is an std::shared_ptr<mc_tasks::MetaTask>
// but you can retrieve a more precise type, mc_rtc will check that the
// task that was retrieved from disk is compatible with the task you requested
auto task = mc_tasks::MetaTaskLoader::load<mc_tasks::EndEffectorTask>(solver(), config("task"));

This page shows what data is expected for each task available in mc_rtc.

State

Base states available in mc_rtc.

This page shows which options are available for each of these states.

Observers

Available observers in mc_rtc.

This page shows the available options for each observer implementation.

Please refer to the State Observation Pipelines tutorial for details on the observer pipeline configuration.