Abstract class that instantiates a robot with dynamic properties.
Definition
A robot is a kinematic chain of joints. To each joint is attached a body. Each body has a mass and inertia matrix. The kinematic chain is recursively constructed by adding children to each joint. (See CjrlJoint). The configuration of a robot is defined by a vector called the configuration vector and containing the values of each degree of freedom. The dimension of this vector is denoted by .
The time derivative of the configuration vector is called the velocity vector.
The time derivative of the velocity vector. is called the acceleration vector.
Control of the implementation
In some cases, it is desirable to control the implementation of this class in order to selectively compute only some kinematic and dynamic values. For instance, for speed of computation purposes, one may want to compute only velocities and not accelerations. In order to keep the interface light, a control mechanism based on properties is proposed through the following methods: isSupported(), getProperty(), setProperty(). Each implementation is responsible for its own methods. However, in order to keep some compatibility, some recommended methods are listed in this page.
Actuated Joints.
In order to make a distinction between actuated joints and none actuacted joints, a vector of actuated joints is provided through method: getActuatedJoints().
The torques are computed by internal calls to the direct dynamic computations. Dynamics is computed in free-floating mode, supposing no contact with the environments, and knowing given position, velocity and acceleration. This accessor only give a reference on the already-computed values.
Compute and get position and orientation jacobian.
Parameters
inStartJoint
First joint in the chain of joints influencing the jacobian.
inEndJoint
Joint where the control frame is located.
inFrameLocalPosition
Position of the control frame in inEndJoint local frame.
Return values
outjacobian
computed jacobian matrix.
Parameters
offset
is the rank of the column from where the jacobian is written.
inIncludeStartFreeFlyer
Option to include the contribution of a fictive freeflyer superposed with inStartJoint
Returns
false if matrix has inadequate size. Number of columns in matrix outJacobian must be at least numberDof() if inIncludeStartFreeFlyer = true. It must be at least numberDof()-6 otherwise.
Compute Speciliazed InverseKinematics between two joints.
Specialized means that this method can be re implemented to be extremly efficient and used the particularity of your robot. For instance in some case, it is possible to use an exact inverse kinematics to compute a set of articular value.
This method does not intend to replace an architecture computing inverse kinematics through the Jacobian.
jointRootPosition and jointEndPosition have to be expressed in the same frame.
Parameters
[in]
jointRoot
The root of the joint chain for which the specialized inverse kinematics should be computed.
[in]
jointEnd
The end of the joint chain for which the specialized inverse kinematics should be computed.