class
#include <private/InverseKinematicsData.h>
InverseKinematicsData
Constructors, destructors, conversion operators
Public functions
- void updateRobotConfiguration()
- void prepareForOptimization()
- void computeProblemSizeAndResizeBuffers()
- void configureCenterOfMassProjectionConstraint()
-
auto setModel(const iDynTree::
Model & model, const std::vector<std::string>& consideredJoints = std::vector<std::string>()) -> bool - auto setJointLimits(std::vector<std::pair<double, double>>& jointLimits) -> bool
- auto getJointLimits(std::vector<std::pair<double, double>>& jointLimits) -> bool
- void clearProblem()
-
auto addFrameConstraint(const internal::
kinematics:: & frameTransformConstraint) -> boolTransformConstraint -
auto addTarget(const internal::
kinematics:: & frameTransform) -> boolTransformConstraint - auto getTargetRefIfItExists(const std::string targetFrameName) -> TransformMap::iterator
-
void updatePositionTarget(TransformMap::iterator target,
iDynTree::
Position newPos, double newPosWeight) -
void updateRotationTarget(TransformMap::iterator target,
iDynTree::
Rotation newRot, double newRotWeight) -
auto setRobotConfiguration(const iDynTree::
Transform & baseConfiguration, const iDynTree::VectorDynSize & jointConfiguration) -> bool - auto setJointConfiguration(const std::string& jointName, const double jointConfiguration) -> bool
- void setRotationParametrization(enum iDynTree::InverseKinematicsRotationParametrization parametrization)
- auto rotationParametrization() -> enum iDynTree::InverseKinematicsRotationParametrization
- void setDefaultTargetResolutionMode(enum iDynTree::InverseKinematicsTreatTargetAsConstraint mode)
- auto defaultTargetResolutionMode() -> enum iDynTree::InverseKinematicsTreatTargetAsConstraint
- void setTargetResolutionMode(TransformMap::iterator target, enum iDynTree::InverseKinematicsTreatTargetAsConstraint mode)
- auto targetResolutionMode(TransformMap::iterator target) const -> enum iDynTree::InverseKinematicsTreatTargetAsConstraint
- auto solveProblem() -> bool
-
auto dynamics() -> iDynTree::
KinDynComputations & -
void setCoMTarget(const iDynTree::
Position & desiredPosition, double weight) - void setCoMasConstraint(bool asConstraint)
- auto isCoMaConstraint() -> bool
- void setCoMasConstraintTolerance(double TOL)
- auto isCoMTargetActive() -> bool
- void setCoMTargetInactive()
Public variables
- bool isActive
-
iDynTree::
Position desiredPosition - double weight
- bool isConstraint
- double constraintTolerance
-
iDynTree::
VectorDynSize jointsConfiguration -
iDynTree::
Transform basePose -
iDynTree::
VectorDynSize jointsVelocity -
iDynTree::
Twist baseTwist -
iDynTree::
Vector3 worldGravity - std::vector<bool> fixedVariables
- std::unordered_map<int, int> modelJointsToOptimisedJoints
-
iDynTree::
Model reducedModel - bool m_problemInitialized
- bool m_warmStartEnabled
- size_t m_numberOfOptimisationVariables
- size_t m_numberOfOptimisationConstraints
- Ipopt::SmartPtr<Ipopt::IpoptApplication> m_solver
-
Ipopt::SmartPtr<internal::
kinematics:: > m_nlpProblemInverseKinematicsNLP
Function documentation
internal::kinematics::InverseKinematicsData:: InverseKinematicsData()
Default constructor
void internal::kinematics::InverseKinematicsData:: updateRobotConfiguration()
Update internal variables given a change in the robot state
void internal::kinematics::InverseKinematicsData:: prepareForOptimization()
Prepare the internal data to run an optimization
void internal::kinematics::InverseKinematicsData:: computeProblemSizeAndResizeBuffers()
compute the problem size (number of optimisation variables and constraints)
void internal::kinematics::InverseKinematicsData:: configureCenterOfMassProjectionConstraint()
Configure the COM projection constraints given the current active contraints.
bool internal::kinematics::InverseKinematicsData:: setModel(const iDynTree::Model & model,
const std::vector<std::string>& consideredJoints = std::vector<std::string>())
Parameters | |
---|---|
model | the model to be used |
consideredJoints | |
Returns | true if successfull, false otherwise |
Set the kinematic model to be used for the computations
bool internal::kinematics::InverseKinematicsData:: setJointLimits(std::vector<std::pair<double, double>>& jointLimits)
Parameters | |
---|---|
jointLimits | vector of new joint limits to be imposed |
Returns | true if successfull, false otherwise |
Set new joint limits
bool internal::kinematics::InverseKinematicsData:: getJointLimits(std::vector<std::pair<double, double>>& jointLimits)
Parameters | |
---|---|
jointLimits | vector of current joint limits |
Returns | true if successfull, false otherwise |
Get current joint limits
void internal::kinematics::InverseKinematicsData:: clearProblem()
Reset variables to defaults
If the model has been loaded, defaults means #dofs size Otherwise the size is zero. All constraints are reset.
bool internal::kinematics::InverseKinematicsData:: addFrameConstraint(const internal::kinematics::TransformConstraint & frameTransformConstraint)
Returns | true if successfull, false otherwise |
---|
Add a constraint for the specified frame
bool internal::kinematics::InverseKinematicsData:: addTarget(const internal::kinematics::TransformConstraint & frameTransform)
Parameters | |
---|---|
frameTransform | the frame to be considered as a target |
Returns | true if successfull, false otherwise |
Add a target for the specified frame
TransformMap::iterator internal::kinematics::InverseKinematicsData:: getTargetRefIfItExists(const std::string targetFrameName)
Get target if it exists.
Get a reference to a target if it exists, or return m_targets::end() print an error otherwise.
void internal::kinematics::InverseKinematicsData:: updatePositionTarget(TransformMap::iterator target,
iDynTree::Position newPos,
double newPosWeight)
Update the position reference for a target
void internal::kinematics::InverseKinematicsData:: updateRotationTarget(TransformMap::iterator target,
iDynTree::Rotation newRot,
double newRotWeight)
Update the position reference for a target
bool internal::kinematics::InverseKinematicsData:: setRobotConfiguration(const iDynTree::Transform & baseConfiguration,
const iDynTree::VectorDynSize & jointConfiguration)
Parameters | |
---|---|
baseConfiguration | base configuration (position and orientation) |
jointConfiguration | joints configuration |
Returns | true if successfull, false otherwise |
Set the current robot configuration
This confguration will be used for all internal calls to kinematics functions
bool internal::kinematics::InverseKinematicsData:: setJointConfiguration(const std::string& jointName,
const double jointConfiguration)
Parameters | |
---|---|
jointName | name of the joint |
jointConfiguration | value of the joint |
Returns | true if successfull, false otherwise |
Set the initial robot joint configuration for a specified joint
void internal::kinematics::InverseKinematicsData:: setRotationParametrization(enum iDynTree::InverseKinematicsRotationParametrization parametrization)
Parameters | |
---|---|
parametrization | type of parametrization |
Set the type of parametrization for the SO3 (rotation) Currently RPY and Quaternion are supported
enum iDynTree::InverseKinematicsRotationParametrization internal::kinematics::InverseKinematicsData:: rotationParametrization()
Returns | the current rotation parametrization |
---|
Return the current rotation parametrization used by the solver
void internal::kinematics::InverseKinematicsData:: setDefaultTargetResolutionMode(enum iDynTree::InverseKinematicsTreatTargetAsConstraint mode)
Parameters | |
---|---|
mode | how to treat the targets |
Set how targets should be considered in the optimization problem i.e. as soft or hard constraints. It applies only to the newly added targets
void internal::kinematics::InverseKinematicsData:: setTargetResolutionMode(TransformMap::iterator target,
enum iDynTree::InverseKinematicsTreatTargetAsConstraint mode)
Parameters | |
---|---|
target | |
mode | how to treat the target |
Set how the specified target should be considered in the optimization problem i.e. as soft or hard constraints
enum iDynTree::InverseKinematicsTreatTargetAsConstraint internal::kinematics::InverseKinematicsData:: targetResolutionMode(TransformMap::iterator target) const
Returns | the resolution mode |
---|
Return the resolution mode adopted for the specified target
bool internal::kinematics::InverseKinematicsData:: solveProblem()
Returns | true if the problem is solved. False otherwise |
---|
Solve the NLP problem
iDynTree::KinDynComputations & internal::kinematics::InverseKinematicsData:: dynamics()
Returns | reference to the kinematics and dynamics object |
---|
Access the Kinematics and Dynamics object used by the solver
Variable documentation
iDynTree::VectorDynSize internal::kinematics::InverseKinematicsData::jointsConfiguration
joint configuration
iDynTree::Transform internal::kinematics::InverseKinematicsData::basePose
base position
iDynTree::VectorDynSize internal::kinematics::InverseKinematicsData::jointsVelocity
joint velotiy
iDynTree::Twist internal::kinematics::InverseKinematicsData::baseTwist
base velocity
iDynTree::Vector3 internal::kinematics::InverseKinematicsData::worldGravity
gravity acceleration in inertial frame, i.e. -9.81 along z
Ipopt::SmartPtr<Ipopt::IpoptApplication> internal::kinematics::InverseKinematicsData::m_solver
Instance of IPOPT solver
iDynTree::KinDynComputations internal::kinematics::InverseKinematicsData::m_dynamics
object for kinematics and dynamics computation
std::vector<std::pair<double, double>> internal::kinematics::InverseKinematicsData::m_jointLimits
Limits for joints. The pair is ordered as min and max
struct internal::kinematics::InverseKinematicsData::@4 internal::kinematics::InverseKinematicsData::m_state
Variables needed to identify the state of the robot i.e. position and velocity
size_t internal::kinematics::InverseKinematicsData::m_dofs
internal DoFs of the model, i.e. size of joint vectors
enum iDynTree::InverseKinematicsRotationParametrization internal::kinematics::InverseKinematicsData::m_rotationParametrization
type of parametrization of the orientation
TransformMap internal::kinematics::InverseKinematicsData::m_constraints
list of hard constraints
TransformMap internal::kinematics::InverseKinematicsData::m_targets
list of targets
iDynTree::ConvexHullProjectionConstraint internal::kinematics::InverseKinematicsData::m_comHullConstraint
Helper to implement COM constraint
bool internal::kinematics::InverseKinematicsData::m_areBaseInitialConditionsSet
True if initial condition for the base pose are provided by the user
InverseKinematicsInitialConditionType internal::kinematics::InverseKinematicsData::m_areJointsInitialConditionsSet
specify if the initial condition for the joints are provided by the user
int internal::kinematics::InverseKinematicsData::m_maxIter
Maximum number of iterations
double internal::kinematics::InverseKinematicsData::m_maxCpuTime
Maximum CPU time
double internal::kinematics::InverseKinematicsData::m_tol
Tolerance for the cost
double internal::kinematics::InverseKinematicsData::m_constrTol
Tolerance for the constraints
int internal::kinematics::InverseKinematicsData::m_verbosityLevel
Verbosity level