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 | Kinematic Anchor Frame | Parameters for the kinematic anchor frame | |||||||||||||||||||||||||||||||||||||||||||||
Kinematic Anchor Frame
Parameters for the kinematic anchor frame
|
|||||||||||||||||||||||||||||||||||||||||||||||
gui | object | GUI elements to display | |||||||||||||||||||||||||||||||||||||||||||||
object
GUI elements to display
|
|||||||||||||||||||||||||||||||||||||||||||||||
log | object | Elements to log | |||||||||||||||||||||||||||||||||||||||||||||
object
Elements to log
|
{
"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
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 Observer | Sequence of observers | |||||||||||||||||||||||||||
Observer
|
{
"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
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 | object | Selects which elements to log | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
Selects which elements to log
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gui | object | Selects which elements to display in the GUI | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
Selects which elements to display in the GUI
|
{
"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
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 | object | Selects which elements to log | ||||||
object
Selects which elements to log
|
{
"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
[
{
"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
type | constant addContact | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
contact | mc_rbdyn::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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
speed | number ≥ 0 default 0.01 | Speed at which the contact surface "r1Surface" moves along the normal "T_0_s". | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stiffness | number ≥ 0 default 2 | Task's stiffness | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
weight | number ≥ 0 default 1000 | Task's weight | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
T_0_s | Eigen::Vector3d | 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
type | constant removeContact | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
contact | mc_rbdyn::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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
speed | number ≥ 0 default 0.01 | Speed at which the contact surface "r1Surface" moves along the normal "T_0_s". | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stiffness | number ≥ 0 default 2 | Task's stiffness | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
weight | number ≥ 0 default 1000 | Task's weight | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
T_0_s | Eigen::Vector3d | 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
type | constant gaze | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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
type | constant lookAt | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
targetPos | Eigen::Vector3d | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
targetVector | Eigen::Vector3d | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
relativeVector | Eigen::Vector3d | 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]
type | constant impedance | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | Name of the task | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
completion | 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::PTransformd | Move relative to the current target frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
moveWorld | sva::PTransformd | Move relative to world frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
target | sva::PTransformd | Target a world frame pose (position and orientation) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetFrame | targetFrame | Target a robot frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetFrame
Target a robot frame
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetSurface | targetSurface | Target as a robot surface | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetSurface
Target as a robot surface
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
relative | object | 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetPosition | Eigen::Vector3d | Target a world position | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetRotation | Eigen::Matrix3d | 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 | 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) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | sva::ForceVecd | Wrench target (desired force-torque) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::ForceVecd
Either couple or force can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gains | mc_tasks::force::ImpedanceGains | Impedance gains | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_tasks::force::ImpedanceGains
Impedance gains configuration for mc_tasks::force::ImpedanceTask
|
{
"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]
type | constant compliance | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::ForceVecd | 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
|
|||||||||||||||||||||||||||||
dof | Eigen::Matrix6d | 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]
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 | Tasks configuration | 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
safety_thresholds | 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fdqp_weights | mc_rbdyn::lipm_stabilizer::FDQPWeights | Force distribution QP parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::lipm_stabilizer::FDQPWeights
Force distribution QP parameters
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
vdc | Vertical drift compensation parameters | Vertical drift compensation parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vertical drift compensation parameters
Vertical drift compensation parameters
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
admittance | Admittance Parameters | 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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dcm_tracking | DCM Tracking Parameters | DCM Tracking parameters | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DCM Tracking Parameters
DCM Tracking parameters
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dcm_bias | 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
external_wrench | mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration | 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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
contacts | array enum string Left Right | Support contact surfaces (default: [Left, Right]) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left | Stabilizer Contact Target | Stabilizer Contact Target (default: current contact surface pose) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stabilizer Contact Target
Stabilizer Contact Target (default: current contact surface pose)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Right | Stabilizer Contact Target | Stabilizer Contact Target (default: current contact surface pose) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stabilizer Contact Target
Stabilizer Contact Target (default: current contact surface pose)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
{
"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]
type | constant orientation | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | Eigen::Matrix3d |
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 | |||||||||||||||||||||||||||
Relative target specification
The target is specified relatively to the middle point between two surfaces s1 and s2
|
|||||||||||||||||||||||||||||
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]
type | constant lookAtFrame | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | Unit vector in control frame representing the direction that will be aligned with the target vector | |||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
target | object | Frame tracked by this task | |||||||||||||||||||||||||||
object
Frame tracked by this task
|
|||||||||||||||||||||||||||||
offset | sva::PTransformd | 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
|
|||||||||||||||||||||||||||||
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
type | constant bspline_trajectory | |||||||||||||||||||||||||||||||||||||
name | string | Name of the task | ||||||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | ||||||||||||||||||||||||||||||||||||
completion | 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. |
||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | 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.
|
||||||||||||||||||||||||||||||||||||||
targetFrame | Relative Target | Target and waypoints defined in target frame | ||||||||||||||||||||||||||||||||||||
Relative Target
Target and waypoints defined in target frame
|
||||||||||||||||||||||||||||||||||||||
target | sva::PTransformd | 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
|
||||||||||||||||||||||||||||||||||||||
controlPoints | array Eigen::Vector3d | Control points relative to world. Ignored if targetFrame is specified | ||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||
oriWaypoints | array [ number , Eigen::Matrix3d ] | 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]]
]
type | constant relBody6d | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | object | Relative frame tracked by this task | |||||||||||||||||||||||||||
object
Relative frame tracked by this task
|
|||||||||||||||||||||||||||||
bodyPoint | Eigen::Vector3d | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
orientation | Eigen::Matrix3d |
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 | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
relative | Relative target specification | 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
|
|||||||||||||||||||||||||||||
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]
type | constant transform | ||||||||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::PTransformd | Move relative to the current target frame | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
moveWorld | sva::PTransformd | Move relative to world frame | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
target | sva::PTransformd | Target a world frame pose (position and orientation) | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
targetFrame | targetFrame | Target a robot frame | |||||||||||||||||||||||||||||||||
targetFrame
Target a robot frame
|
|||||||||||||||||||||||||||||||||||
targetSurface | targetSurface | Target as a robot surface | |||||||||||||||||||||||||||||||||
targetSurface
Target as a robot surface
|
|||||||||||||||||||||||||||||||||||
relative | object | 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
|
|||||||||||||||||||||||||||||||||||
targetPosition | Eigen::Vector3d | Target a world position | |||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||||||||
targetRotation | Eigen::Matrix3d | 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 | 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) | |||||||||||||||||||||||||||||||||
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)
|
|||||||||||||||||||||||||||||||||||
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 | Eigen::Vector6d | Trajectory's reference velocity | |||||||||||||||||||||||||||||||||
Eigen::Vector6d
array[6]
number
|
|||||||||||||||||||||||||||||||||||
refAccel | Eigen::Vector6d | 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]
type | constant lookAtTF | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | ||||||||||||||||||||||||||||
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
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 | 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | 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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetFrame | Relative Target | Targets and waypoints defined in target surface frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Relative Target
Targets and waypoints defined in target surface frame
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
target | sva::PTransformd | 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
controlPoints | array [ number , Eigen::Vector3d ] | Position waypoints relative to world (pairs of time and position). Ignored if targetFrame is specified | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
oriWaypoints | array [ number , Eigen::Matrix3d ] | 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 | Eigen::Vector3d default [0,0,0] | Initial velocity (world). Ignored if targetFrame is specified | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
init_acc | Eigen::Vector3d default [0,0,0] | Initial acceleration (world). Ignored if targetFrame is specified | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end_vel | Eigen::Vector3d default [0,0,0] | Final velocity (world). Ignored if targetFrame is specified | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end_acc | Eigen::Vector3d 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]
type | constant position | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | ||||||||||||||||||||||||||||
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
The target is specified relatively to the middle point between two surfaces s1 and s2
|
|||||||||||||||||||||||||||||
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]
type | constant vectorOrientation | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
targetVector | Eigen::Vector3d | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
relativeVector | Eigen::Vector3d | 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]
type | constant posture | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::VectorXd | 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 tasks::qp::JointGains | Gains for specific joints | |||||||||||||||||||||||||||
tasks::qp::JointGains
|
|||||||||||||||||||||||||||||
jointWeights | object | Weights for specific joints | |||||||||||||||||||||||||||
object
Weights for specific joints
|
|||||||||||||||||||||||||||||
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]
type | constant pbvs | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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
type | constant com | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector3d | 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 | Eigen::Vector3d | Desired position of the CoM (world frame) | |||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
move_com | Eigen::Vector3d | 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]
type | constant body6d | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
orientation | Eigen::Matrix3d |
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 | ||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||
relative | Relative target specification | 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
|
|||||||||||||||||||||||||||||
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]
type | constant firstOrderImpedance | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name | string | Name of the task | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
completion | 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::PTransformd | Move relative to the current target frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
moveWorld | sva::PTransformd | Move relative to world frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
target | sva::PTransformd | Target a world frame pose (position and orientation) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetFrame | targetFrame | Target a robot frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetFrame
Target a robot frame
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetSurface | targetSurface | Target as a robot surface | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetSurface
Target as a robot surface
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
relative | object | 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
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetPosition | Eigen::Vector3d | Target a world position | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetRotation | Eigen::Matrix3d | 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 | 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) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | sva::ForceVecd | Wrench target (desired force-torque) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sva::ForceVecd
Either couple or force can be ommited if the other is present
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gains | mc_tasks::force::ImpedanceGains | Impedance gains | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_tasks::force::ImpedanceGains
Impedance gains configuration for mc_tasks::force::ImpedanceTask
|
{
"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]
type | constant cop | ||||||||||||||||||||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::ForceVecd | 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
|
|||||||||||||||||||||||||||||||||||||||||||||||
cop | Eigen::Vector2d | Desired CoP in controlled surface frame | |||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector2d
array[2]
number
|
|||||||||||||||||||||||||||||||||||||||||||||||
force | Eigen::Vector3d | Desired force in controlled surface frame | |||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||||||||||||||||||||
targetPose | sva::PTransformd | 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
|
|||||||||||||||||||||||||||||||||||||||||||||||
targetFrame | targetFrame | Target a robot frame | |||||||||||||||||||||||||||||||||||||||||||||
targetFrame
Target a robot frame
|
|||||||||||||||||||||||||||||||||||||||||||||||
targetSurface | targetSurface | Target as a robot surface | |||||||||||||||||||||||||||||||||||||||||||||
targetSurface
Target as a robot surface
|
|||||||||||||||||||||||||||||||||||||||||||||||
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]
type | constant admittance | ||||||||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::PTransformd | Move relative to the current target frame | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
moveWorld | sva::PTransformd | Move relative to world frame | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
target | sva::PTransformd | Target a world frame pose (position and orientation) | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
targetFrame | targetFrame | Target a robot frame | |||||||||||||||||||||||||||||||||
targetFrame
Target a robot frame
|
|||||||||||||||||||||||||||||||||||
targetSurface | targetSurface | Target as a robot surface | |||||||||||||||||||||||||||||||||
targetSurface
Target as a robot surface
|
|||||||||||||||||||||||||||||||||||
relative | object | 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
|
|||||||||||||||||||||||||||||||||||
targetPosition | Eigen::Vector3d | Target a world position | |||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||||||||
targetRotation | Eigen::Matrix3d | 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 | 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) | |||||||||||||||||||||||||||||||||
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)
|
|||||||||||||||||||||||||||||||||||
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 | sva::PTransformd | [deprecated] Same as "target" | |||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
wrench | sva::ForceVecd | Wrench target (desired force-torque) | |||||||||||||||||||||||||||||||||
sva::ForceVecd
Either couple or force can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
refVelB | sva::MotionVecd | Feedforward reference body velocity | |||||||||||||||||||||||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
maxVel | sva::MotionVecd | Clamp computed target velocity | |||||||||||||||||||||||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
|||||||||||||||||||||||||||||||||||
admittance | sva::ForceVecd | Admittance coefficients (converts wrench error to velocity) | |||||||||||||||||||||||||||||||||
sva::ForceVecd
Either couple or force can be ommited if the other is present
|
{
"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]
type | constant momentum | ||||||||||||||||||||||||||||
name | string | Name of the task | |||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot to which this task applies | |||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||
dimWeight | Eigen::Vector6d | 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 | sva::ForceVecd | 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
|
|||||||||||||||||||||||||||||
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]
[1.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, 1.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, 0.0]
[0.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, 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]
[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]
[0.0, 0.0, 0.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, 1.0]
---
[1.0, 0.0, 0.0, 1.0] # "red" string is also supported
head_diam | number | |
head_len | number | |
shaft_diam | number | |
scale | number | |
start_point_scale | number | |
end_point_scale | number | |
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. |
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
scale | number | |
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. |
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
head_diam | number | |
head_len | number | |
shaft_diam | number | |
scale | number | |
start_point_scale | number | |
end_point_scale | number | |
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. |
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
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. |
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
|
||
width | number | |
style | enum solid dotted |
{
"color": "red",
"width": 2.0,
"style": "dotted"
}
---
color: red
width: 2.0
style: solid
type | constant compoundJoint | |||||||||||||||||||
robot | string default MainRobot | Name of the robot affected by this constraint | ||||||||||||||||||
constraints | array mc_rbdyn::CompoundJointConstraintDescription |
List of compound joint constraints this robot must follow Use the robot's module definitions if not provided |
||||||||||||||||||
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
|
{
"type": "compoundJoint",
"robot": "jvrc1"
}
---
type: compoundJoint
robot: jvrc1
type | constant boundedSpeed | ||||||||||||||||||||||||||||
robot | string default MainRobot | Name of the robot affected by this constraint | |||||||||||||||||||||||||||
constraints | array object | List of speed constraints in the constraint | |||||||||||||||||||||||||||
object
|
{
"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]
type | constant contact | |
contactType | enum string acceleration velocity position | Defaults to velocity if absent |
{
"type": "contact",
"contactType": "position"
}
type: contact
contactType: position
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 mc_rbdyn::Collision | List of collisions in the constraint | |||||||||||||||||||||||||||
mc_rbdyn::Collision
|
{
"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
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
type | constant CoMIncPlane | |
robot | string default MainRobot | Name of the robot affected by this constraint |
{
"type": "CoMIncPlane"
}
type: CoMIncPlane
robotIndex: 0
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
name | string | |||||||||||||
origin | sva::PTransformd | 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
|
||||||||||||||
geometry |
Cannot handle data:
|
|||||||||||||
OR | ||||||||||||||
Cannot handle data:
|
||||||||||||||
OR | ||||||||||||||
Cannot handle data:
|
||||||||||||||
OR | ||||||||||||||
Cannot handle data:
|
||||||||||||||
OR | ||||||||||||||
Cannot handle data:
|
{
"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
type | enum string rev prism spherical planar cylindrical free fixed |
{
"type": "rev"
}
type: rev
q | array array number | |||||||||||||
alpha | array array number | |||||||||||||
alphaD | array array number | |||||||||||||
force | array sva::ForceVecd | |||||||||||||
sva::ForceVecd
Either couple or force can be ommited if the other is present
|
||||||||||||||
jointConfig | array sva::PTransformd | |||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||
jointVelocity | array sva::MotionVecd | |||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
||||||||||||||
jointTorque | array array number | |||||||||||||
motionSubspace | array Eigen::Matrix6Xd | |||||||||||||
Eigen::Matrix6Xd
Stored in row-major order.
The array length should be a multiple of 6.
array
number
|
||||||||||||||
bodyPosW | array sva::PTransformd | |||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||
parentToSon | array sva::PTransformd | |||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||
bodyVelW | array sva::MotionVecd | |||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
||||||||||||||
bodyVelB | array sva::MotionVecd | |||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
||||||||||||||
bodyAccB | array sva::MotionVecd | |||||||||||||
sva::MotionVecd
Either angular or linear can be ommited if the other is present
|
||||||||||||||
gravity | Eigen::Vector3d | |||||||||||||
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
size | number |
{
"size": 1.0
}
size: 1.0
type | rbd::Joint::Type | ||||
rbd::Joint::Type
|
|||||
axis | Eigen::Vector3d | ||||
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
filename | string | |
scale | number |
{
"filename": "/some/path",
"scale": 1.0
}
filename: /some/path
scale: 1.0
bodies | array rbd::Body | ||||||||||||||||||||||||||||||||||
rbd::Body
|
|||||||||||||||||||||||||||||||||||
joints | array rbd::Joint | ||||||||||||||||||||||||||||||||||
rbd::Joint
|
|||||||||||||||||||||||||||||||||||
preds | array integer | ||||||||||||||||||||||||||||||||||
succs | array integer | ||||||||||||||||||||||||||||||||||
parents | array integer | ||||||||||||||||||||||||||||||||||
transforms | array sva::PTransformd | ||||||||||||||||||||||||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
{
"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
radius | number | |
length | number |
{
"radius": 0.5,
"length": 1.0
}
radius: 0.5
length: 1.0
name | string | ||||||||||||||||
inertia | sva::RBInertiad | ||||||||||||||||
sva::RBInertiad
|
{
"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]
box | rbd::parsers::Geometry::Box | ||||||||||
rbd::parsers::Geometry::Box
|
|||||||||||
cylinder | rbd::parsers::Geometry::Cylinder | ||||||||||
rbd::parsers::Geometry::Cylinder
|
|||||||||||
mesh | rbd::parsers::Geometry::Mesh | ||||||||||
rbd::parsers::Geometry::Mesh
|
|||||||||||
sphere | rbd::parsers::Geometry::Sphere | ||||||||||
rbd::parsers::Geometry::Sphere
|
|||||||||||
superellipsoid | rbd::parsers::Geometry::Superellipsoid | ||||||||||
rbd::parsers::Geometry::Superellipsoid
|
{
"mesh":
{
"filename": "/some/path",
"scale": 1.0
}
}
mesh:
filename: /some/path
scale: 1.0
radius | number |
{
"radius": 1.0
}
radius: 1.0
size | number | |
epsilon1 | number | |
epsilon2 | number |
{
"size": 1.0,
"epsilon1": 0.5,
"epsilon2": 0.1
}
size: 1.0
epsilon1: 0.5
epsilon2: 0.1
rotation | Eigen::Matrix3d |
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 | |
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]
angular | Eigen::Vector3d | |
Eigen::Vector3d
array[3]
number
|
||
linear | Eigen::Vector3d | |
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]
angular | Eigen::Vector3d | |
Eigen::Vector3d
array[3]
number
|
||
linear | Eigen::Vector3d | |
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]
mass | number ≥ 0 | |
momentum | Eigen::Vector3d | |
Eigen::Vector3d
array[3]
number
|
||
inertia | Eigen::Matrix3d |
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]
couple | Eigen::Vector3d | |
Eigen::Vector3d
array[3]
number
|
||
force | Eigen::Vector3d | |
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]
target | array number | Target for all active joints in the gripper | ||||||||||||
OR | ||||||||||||||
Per-joint target | 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
|
||||||||||||||
opening | 0 ≤ number ≤ 1 | Target opening percentage of the gripper | ||||||||||||
OR | ||||||||||||||
Per-joint opening | 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
|
||||||||||||||
safety | mc_rbdyn::RobotModule::Gripper::Safety | Parameters to prevent over-torques on position-controlled grippers | ||||||||||||
mc_rbdyn::RobotModule::Gripper::Safety
Parameters to prevent over-torques on position-controlled grippers
|
{
"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
name | string | Name of the frame | ||||||||||||
parent | string | Parent frame | ||||||||||||
X_p_f | sva::PTransformd | Transform from parent frame to this frame | ||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||
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]
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
normal | Eigen::Vector3d | |
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
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]
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 | sva::PTransformd | 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
|
||||||||||||||
X_b_s | sva::PTransformd | 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
|
||||||||||||||
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
name | string | |||||||||||||
parentBody | string | |||||||||||||
X_p_f | sva::PTransformd | 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
|
{
"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]
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] ]
name | string | |||||||||||||
X_0_s | sva::PTransformd | 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
|
||||||||||||||
X_b0_s | sva::PTransformd | 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
|
||||||||||||||
type | rbd::Joint::Type | |||||||||||||
rbd::Joint::Type
|
{
"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
type | constant cylindrical | |||||||||||||
name | string | |||||||||||||
bodyName | string | |||||||||||||
X_b_s | sva::PTransformd | 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
|
||||||||||||||
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
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
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
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
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 | rbd::MultiBody | 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mbc | rbd::MultiBodyConfig | Required if mb is provided. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rbd::MultiBodyConfig
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bounds | array[6] object | Position limits (lower/upper), velocity (lower/upper), torque (lower/upper) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
accelerationBounds | array[2] object | Acceleration bounds (lower/upper). Overwrite those specified in bounds if present | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jerkBounds | array[2] object | Jerk bounds (lower/upper). Overwrite those specified in bounds if present | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
torqueDerivativeBounds | array[2] object | Torque derivative bounds (lower/upper). Overwrite those specified in bounds if present | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
visuals | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
collisionTransforms | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
collisionObjects | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stpbvHulls | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
frames | array mc_rbdyn::RobotModule::FrameDescription | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::RobotModule::FrameDescription
Describe an additional frame for this robot
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
flexibilities | array mc_rbdyn::Flexibility | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::Flexibility
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
forceSensors | array mc_rbdyn::ForceSensor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::ForceSensor
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bodySensors | array mc_rbdyn::BodySensor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::BodySensor
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
springs | mc_rbdyn::Springs | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::Springs
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
minimalSelfCollisions | array mc_rbdyn::Collision | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::Collision
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
commonSelfCollisions | array mc_rbdyn::Collision | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::Collision
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
grippers | array mc_rbdyn::RobotModule::Gripper | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::RobotModule::Gripper
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
default_attitude | array[7] number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
stance | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ref_joint_order | array string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
gripperSafety | mc_rbdyn::RobotModule::Gripper::Safety | Parameters to prevent over-torques on position-controlled grippers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::RobotModule::Gripper::Safety
Parameters to prevent over-torques on position-controlled grippers
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lipmStabilizer | mc_rbdyn::lipm_stabilizer::StabilizerConfiguration | Default configuration for mc_tasks::lipm_stabilizer::StabilizerTask | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::lipm_stabilizer::StabilizerConfiguration
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
compoundJoints | array mc_rbdyn::CompoundJointConstraintDescription | 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
|
{
"path": "/path/to/robot",
"name": "robot",
"urdf_path": "urdf/robot.urdf"
}
path: /path/to/robot
name: robot
urdf_path: urdf/robot.urdf
name | string | |||||||||||||
joints | array string | |||||||||||||
reverse_limits | boolean | |||||||||||||
safety | mc_rbdyn::RobotModule::Gripper::Safety | Parameters to prevent over-torques on position-controlled grippers | ||||||||||||
mc_rbdyn::RobotModule::Gripper::Safety
Parameters to prevent over-torques on position-controlled grippers
|
||||||||||||||
mimics | array mc_rbdyn::Mimic | |||||||||||||
mc_rbdyn::Mimic
|
{
"name": "l_gripper",
"joints": ["j0", "j1", "j2"],
"reverse_limits": false
}
name: l_gripper
joints: [j0, j1, j2]
reverse_limits: false
name | string | |||||||||||||
parentBody | string | |||||||||||||
X_b_s | sva::PTransformd | 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
|
{
"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]
type | constant gripper | |||||||||||||
name | string | |||||||||||||
bodyName | string | |||||||||||||
X_b_s | sva::PTransformd | 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
|
||||||||||||||
materialName | string | |||||||||||||
pointsFromOrigin | array sva::PTransformd | |||||||||||||
sva::PTransformd
Either rotation or translation can be ommited if the other is present
|
||||||||||||||
X_b_motor | sva::PTransformd | 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
|
||||||||||||||
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
leftFootSurface | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rightFootSurface | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
torsoBodyName | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
friction | number ≥ 0 default 0.7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tasks | Tasks configuration | 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
safety_thresholds | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fdqp_weights | mc_rbdyn::lipm_stabilizer::FDQPWeights | Force distribution QP parameters | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::lipm_stabilizer::FDQPWeights
Force distribution QP parameters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
vdc | Vertical drift compensation parameters | Vertical drift compensation parameters | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vertical drift compensation parameters
Vertical drift compensation parameters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
admittance | Admittance Parameters | 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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dcm_tracking | DCM Tracking Parameters | DCM Tracking parameters | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DCM Tracking Parameters
DCM Tracking parameters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dcm_bias | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
external_wrench | mc_rbdyn::lipm_stabilizer::ExternalWrenchConfiguration | 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.
|
{
"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
j1 | string | First joint for the compound constraint |
j2 | string | Second joint for the compound constraint |
p1 | Eigen::Vector2d | First point of configuration (q1, q2) |
Eigen::Vector2d
array[2]
number
|
||
p2 | Eigen::Vector2d | 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]
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
type | constant planar | |||||||||||||
name | string | |||||||||||||
bodyName | string | |||||||||||||
X_b_s | sva::PTransformd | 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
|
||||||||||||||
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]
states | array string | List of states run by this state | |||||||||||||||||||||||||||||||||||||||
delays | object | Delay the start of specified states (in seconds) | |||||||||||||||||||||||||||||||||||||||
object
Delay the start of specified states (in seconds)
|
|||||||||||||||||||||||||||||||||||||||||
configs | object | 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.
|
|||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
robot | string | If ommited, the state applies to the main robot | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
grippers | Grippers configuration | Map of gripper name -> gripper configuration | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Grippers configuration
Map of gripper name -> gripper configuration
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 mc_control::fsm::Contact | Add the specified contacts during the state's start | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
NextController | string default | Controller to switch to | |||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
log | enum string info success warning error none |
Type of message to log (default=info):
|
|||||||||||||||||||||||||||||||||||||||
gui | array string |
Category in which the message will be added.
|
|||||||||||||||||||||||||||||||||||||||
prefix | string default State name | Prefix message, name of the GUI label | |||||||||||||||||||||||||||||||||||||||
message | string default | Message to display | |||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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."
duration | number ≥ 0 | Pause duration in seconds | |||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
tasks | 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. |
|||||||||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
StabilizerConfig | mc_tasks::lipm_stabilizer::StabilizerTask |
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
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | Eigen::Vector3d | Target CoM position | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eigen::Vector3d
array[3]
number
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
completion | Completion criteria for the state | Completion criteria for the state | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Completion criteria for the state
Completion criteria for the state
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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]
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 mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
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 | mc_rbdyn::Contact | Requires an mc_rbdyn::Robots instance to be loaded | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_rbdyn::Contact
Requires an mc_rbdyn::Robots instance to be loaded
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
useCoM | boolean default true | When true, this state will add a CoM task configured with the parameters in the "com" section | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
com | object | Optional: If useCoM=true, adds a CoM task with these parameters, otherwise no CoM task will be added | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
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 | object | Override configuration for the state running inside this FSM | |||||||||||||||||||||||||||||||||||||||
object
Override configuration for the state running inside this FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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
robot | string default MainRobot | Name of the robot whose posture task is modified | |||||||||||||||||||||||||||||||||||||||
postureTask | PostureTaskConfig | Configuration for the gains and targets of the posture task | |||||||||||||||||||||||||||||||||||||||
PostureTaskConfig
Configuration for the gains and targets of the posture task
|
|||||||||||||||||||||||||||||||||||||||||
completion | 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. |
|||||||||||||||||||||||||||||||||||||||
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.
|
|||||||||||||||||||||||||||||||||||||||||
AddContacts | array mc_control::fsm::Contact | Add the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContacts | array mc_control::fsm::Contact | Remove the specified contacts during the state's start | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddContactsAfter | array mc_control::fsm::Contact | Add the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveContactsAfter | array mc_control::fsm::Contact | Remove the specified contacts during the state's teardown | |||||||||||||||||||||||||||||||||||||||
mc_control::fsm::Contact
Contact representation used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisions | array FSM collisions | Add the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisions | array FSM collisions | Remove the specified collisions during the state's start | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
AddCollisionsAfter | array FSM collisions | Add the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
RemoveCollisionsAfter | array FSM collisions | Remove the specified collisions during the state's teardown | |||||||||||||||||||||||||||||||||||||||
FSM collisions
Collisions constraint specification used by the FSM
|
|||||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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 | 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. |
|||||||||||||||||||||||||||||||||||||||
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]
jointName | string | |
stiffness | number | |
damping | number |
{
"name": "J0",
"stiffness": 5.0
}
name: J0
stiffness: 5.0
Objects from the Eigen library.
Data is always stored in row-major order.
Objects from the SpaceVecAlg library.
Objects from the RBDyn library.
Objects from the Tasks library.
Objects used in mc_rtc GUI description.
Objects from mc_rbdyn. Used in various places in the framework.
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.
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.
Base states available in mc_rtc.
This page shows which options are available for each of these states.
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.