# opentl::core::cvdata::PoseMultiPartSynchronous Class Reference

Implemented class for storing 2D/3D multi-part object with synchronized motion. More...

Inherits opentl::core::cvdata::Pose.

List of all members.

## Public Member Functions
virtual PoseMultiPartSynchronous * | clone () const
virtual void | copyPoseData (const Pose &value)
| Internal function for the operator =.
virtual void | getIncT (math::Transform &incT, int linkId=0)
| Function to get the stored value information.
virtual void | getLocalT (math::Transform &T, int linkId=0)
| Function to get the local, finite T matrix (= inter-link).
virtual void | getRefT (math::Transform &refT, int linkId=0)
| Return the reference T matrix.
cvdata::Pose * | getSinglePose (int linkId) const
| Return the internal Pose class, for a given link.
virtual int | initFromPoints (const math::Matrix &bodyPoints, const math::Matrix &screenPoints, const math::SquareMatrix &intrinsicMat, const math::Vector *linkIdx=NULL)
| Compute LSE pose (world T matrix) from N object-screen point correspondences (also called "PnP problem").
virtual int | initFromPointsAndLines (const math::Matrix &bodyPoints, const math::Matrix &screenPoints, const math::Matrix &bodyLines, const math::Matrix &screenLines, const math::SquareMatrix &intrinsicMat, const math::Vector *linkIdxForPoint=NULL, const math::Vector *linkIdxForLine=NULL)
| Compute LSE pose (world T matrix) from N1 object-screen point correspondences and N2 line correspondences.
virtual Pose & | operator= (const Pose &value)
| Assignment operator.
virtual PoseMultiPartSynchronous & | operator= (const PoseMultiPartSynchronous &value)
| PoseMultiPartSynchronous (const PoseMultiPartSynchronous &value)
| Constructor. Initialize object with existing value object.
| PoseMultiPartSynchronous (int nLink, opentl::core::cvdata::CvData::DataReprClass poseClass, opentl::core::cvdata::CvData::DataReprType internalPoseType, opentl::core::cvdata::Pose::T_UPDATEMODE updateMode, std::vector< math::Vector2 > *poseLimits=NULL)
| Default constructor.
virtual void | resetData ()
| Reset to 0 the incremental pose parameters, and the update flag as well.
virtual void | resetIncData ()
| Reset to 0 the incremental pose parameters, and the update flag as well.
virtual void | resetRefT (int linkId=-1)
| Reset the reference T matrices (to identity).
virtual void | setDataFromVec (const math::Vector &value)
| Set INTER-LINK T matrices, by using a global vector.
virtual void | setIncDataFromVec (const math::Vector &value)
| Set INTER-LINK incremental T matrices, by using a global vector.
virtual void | setLocalIncT (const std::vector< math::Transform > &matT)
| Set pose parameters by homog. transformation matrix data.
virtual void | setLocalT (const std::vector< math::Transform > &matT)
| Set pose parameters by homog. transformation matrix data.
virtual void | setRefT (const math::Transform &refT, int linkId=0)
| Set the reference T matrix.
virtual void | updateAdditiveJacT ()
| Jacobians of T matrix, in the additive case.
virtual void | updateCompositionalJacT ()
| Function to get the pose derivatives as homog. transformation matrices, mJacT.
virtual | ~PoseMultiPartSynchronous ()
| Destructor.
## Protected Member Functions
virtual void | additiveUpdate ()
| Additive updates for all links.
virtual void | compositionalUpdate ()
| Multiply worldT and expT for al links, store the result in worldT and reset expT.
virtual bool | forcePoseLimits ()
| Check the current pose against the limits, and force the overflowing parameters to the bounds.
virtual void | initLieAlgGen ()
| Initialize Lie algebra generators for all INTER-LINK poses.
virtual void | setPoseLimits (std::vector< math::Vector2 > &poseLimits)
| Set the pose limits.
virtual void | updateDataFromLocalT ()
| Set a single INTER-LINK transform, by the T matrix.
void | updateIncDataFromT ()
| Set a single INTER-LINK incremental transform, by the T matrix.
void | updateIncTFromData ()
| Function to get the incremental homog. transformation matrix T of link ID.
virtual void | updateWorldTFromData ()
| Function to get the WORLD homog. transformation matrix T of link ID.
## Protected Attributes
std::vector< cvdata::Pose * > | mPoses
| List of poses (=skeleton nodes).

## Detailed Description

Implemented class for storing 2D/3D multi-part object with synchronized motion.

Author:
  G. Panin <panin@in.tum.de>

## Constructor & Destructor Documentation

opentl::core::cvdata::PoseMultiPartSynchronous::PoseMultiPartSynchronous | ( | int | nLink,
|  | opentl::core::cvdata::CvData::DataReprClass | poseClass,
|  | opentl::core::cvdata::CvData::DataReprType | internalPoseType,
|  | opentl::core::cvdata::Pose::T_UPDATEMODE | updateMode,
|  | std::vector< math::Vector2 > * | poseLimits = `NULL` |
| ) |  |  |

Default constructor.

Parameters:

  | nLink | Number of links
  | poseClass | It can be POSE_2D or POSE_3D
  | internalPoseType | The internal Pose type (the same for all links)
  | poseLimits | (optional) Upper and lower bounds for internal pose parameters (finite P values)

opentl::core::cvdata::PoseMultiPartSynchronous::PoseMultiPartSynchronous | ( | const PoseMultiPartSynchronous & | value | ) |

Constructor. Initialize object with existing value object.

virtual opentl::core::cvdata::PoseMultiPartSynchronous::~PoseMultiPartSynchronous | ( |  | ) | `[virtual]`

Destructor.

## Member Function Documentation

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::additiveUpdate | ( |  | ) | `[protected, virtual]`

Additive updates for all links.

Reimplemented from opentl::core::cvdata::Pose.

virtual PoseMultiPartSynchronous* opentl::core::cvdata::PoseMultiPartSynchronous::clone | ( |  | ) | const`[virtual]`

Implements opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::compositionalUpdate | ( |  | ) | `[protected, virtual]`

Multiply worldT and expT for al links, store the result in worldT and reset expT.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::copyPoseData | ( | const Pose & | value | ) | `[virtual]`

Internal function for the operator =.

Reimplemented from opentl::core::cvdata::Pose.

virtual bool opentl::core::cvdata::PoseMultiPartSynchronous::forcePoseLimits | ( |  | ) | `[protected, virtual]`

Check the current pose against the limits, and force the overflowing parameters to the bounds.

Returns:
  true if the pose has been changed (i.e. it was beyond the limits)

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::getIncT | ( | math::Transform & | incT,
|  | int | linkId = `0` |
| ) |  |  | `[inline, virtual]`

Function to get the stored value information.

Parameters:

  | T | Input and output incremental world T matrix
  | linkId | Input which link we refer to.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::getLocalT | ( | math::Transform & | T,
|  | int | linkId = `0` |
| ) |  |  | `[inline, virtual]`

Function to get the local, finite T matrix (= inter-link).

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::getRefT | ( | math::Transform & | refT,
|  | int | linkId = `0` |
| ) |  |  | `[inline, virtual]`

Return the reference T matrix.

Parameters:

  | refT | input T matrix: this is pre-multiplied by the local T, to obtain the world T
  | linkId | Input which link we refer to.

cvdata::Pose* opentl::core::cvdata::PoseMultiPartSynchronous::getSinglePose | ( | int | linkId | ) | const`[inline]`

Return the internal Pose class, for a given link.

virtual int opentl::core::cvdata::PoseMultiPartSynchronous::initFromPoints | ( | const math::Matrix & | bodyPoints,
|  | const math::Matrix & | screenPoints,
|  | const math::SquareMatrix & | intrinsicMat,
|  | const math::Vector * | linkIdx = `NULL` |
| ) |  |  | `[inline, virtual]`

Compute LSE pose (world T matrix) from N object-screen point correspondences (also called "PnP problem").

Parameters:

  | bodyPoints | Input points in object space (3xN) or (2xN)
  | screenPoints | Input corresponding points in image space (2xN)
  | intrinsicMat | Input camera calibration matrix (3x3)
  | linkIdx | Input Link ID of each point (for articulated Poses only)

Returns:
  Error condition (0 = OK)

Implements opentl::core::cvdata::Pose.

virtual int opentl::core::cvdata::PoseMultiPartSynchronous::initFromPointsAndLines | ( | const math::Matrix & | bodyPoints,
|  | const math::Matrix & | screenPoints,
|  | const math::Matrix & | bodyLines,
|  | const math::Matrix & | screenLines,
|  | const math::SquareMatrix & | intrinsicMat,
|  | const math::Vector * | linkIdxForPoint = `NULL`,
|  | const math::Vector * | linkIdxForLine = `NULL` |
| ) |  |  | `[inline, virtual]`

Compute LSE pose (world T matrix) from N1 object-screen point correspondences and N2 line correspondences.

Parameters:

  | bodyPoints | Input points in object space (3xN1) or (2xN1)
  | screenPoints | Input corresponding points in image space (2xN1)
  | bodyLines | Input line segments in object space (3x2*N2)
  | screenLines | Input corresponding lines in image space (3xN2 for 2D represantation)
  | intrinsicMat | Input camera calibration matrix (3x3)
  | linkIdxForPoint | Input Link ID of each point (for articulated Poses only)
  | linkIdxForLine | Input Link ID of each line (for articulated Poses only)

Returns:
  Error condition (0 = OK)

Implements opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::initLieAlgGen | ( |  | ) | `[protected, virtual]`

Initialize Lie algebra generators for all INTER-LINK poses.

Implements opentl::core::cvdata::Pose.

virtual Pose& opentl::core::cvdata::PoseMultiPartSynchronous::operator= | ( | const Pose & | value | ) | `[inline, virtual]`

Assignment operator.

Reimplemented from opentl::core::cvdata::Pose.

virtual PoseMultiPartSynchronous& opentl::core::cvdata::PoseMultiPartSynchronous::operator= | ( | const PoseMultiPartSynchronous & | value | ) | `[inline, virtual]`

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::resetData | ( |  | ) | `[virtual]`

Reset to 0 the incremental pose parameters, and the update flag as well.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::resetIncData | ( |  | ) | `[virtual]`

Reset to 0 the incremental pose parameters, and the update flag as well.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::resetRefT | ( | int | linkId = `-1` | ) | `[inline, virtual]`

Reset the reference T matrices (to identity).

Parameters:

  | linkId | Input which link we refer to (-1 = reset all links) NOTE: This also resets the internal flag (to speed-up computations, we do not multiply by I!)

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setDataFromVec | ( | const math::Vector & | value | ) | `[virtual]`

Set INTER-LINK T matrices, by using a global vector.

Parameters:

  | value | Global or single-link pose vector (inc. representation)
  | linkId | Update a single link, or all the body (-1)

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setIncDataFromVec | ( | const math::Vector & | value | ) | `[virtual]`

Set INTER-LINK incremental T matrices, by using a global vector.

Parameters:

  | value | Global or single-link pose vector (inc. representation)
  | linkId | Update a single link, or all the body (-1)

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setLocalIncT | ( | const std::vector< math::Transform > & | matT | ) | `[inline, virtual]`

Set pose parameters by homog. transformation matrix data.

Parameters:

  | matT | Homog. transformation matrix.
  | linkId | Link ID is NOT USED: all links are updated with the same incremental T matrix.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setLocalT | ( | const std::vector< math::Transform > & | matT | ) | `[inline, virtual]`

Set pose parameters by homog. transformation matrix data.

Parameters:

  | matT | Homog. transformation matrix.
  | linkId | Link ID is NOT USED: all links are updated with the same T matrix.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setPoseLimits | ( | std::vector< math::Vector2 > & | poseLimits | ) | `[protected, virtual]`

Set the pose limits.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::setRefT | ( | const math::Transform & | refT,
|  | int | linkId = `0` |
| ) |  |  | `[inline, virtual]`

Set the reference T matrix.

Parameters:

  | refT | input T matrix: this is pre-multiplied by the local T, to obtain the world T
  | linkId | Input which link we refer to.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::updateAdditiveJacT | ( |  | ) | `[inline, virtual]`

Jacobians of T matrix, in the additive case.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::updateCompositionalJacT | ( |  | ) | `[virtual]`

Function to get the pose derivatives as homog. transformation matrices, mJacT.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::updateDataFromLocalT | ( |  | ) | `[protected, virtual]`

Set a single INTER-LINK transform, by the T matrix.

Parameters:

  | linkId | link we refer to.

Implements opentl::core::cvdata::Pose.

void opentl::core::cvdata::PoseMultiPartSynchronous::updateIncDataFromT | ( |  | ) | `[protected, virtual]`

Set a single INTER-LINK incremental transform, by the T matrix.

Parameters:

  | linkId | link we refer to.

Reimplemented from opentl::core::cvdata::Pose.

void opentl::core::cvdata::PoseMultiPartSynchronous::updateIncTFromData | ( |  | ) | `[protected, virtual]`

Function to get the incremental homog. transformation matrix T of link ID.

Parameters:

  | linkId | link we refer to.

Reimplemented from opentl::core::cvdata::Pose.

virtual void opentl::core::cvdata::PoseMultiPartSynchronous::updateWorldTFromData | ( |  | ) | `[protected, virtual]`

Function to get the WORLD homog. transformation matrix T of link ID.

Parameters:

  | linkId | link we refer to.

Implements opentl::core::cvdata::Pose.

## Member Data Documentation

std::vector<cvdata::Pose *> opentl::core::cvdata::PoseMultiPartSynchronous::mPoses`[protected]`

List of poses (=skeleton nodes).