Provides types and routines describing the kinematic joints that connect the links of a mechanism.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public, | parameter | :: | CYLINDRICAL_JOINT | = | 3 |
Defines a joint permitting rotation about, and translation along, the joint's z-axis. |
| integer(kind=int32), | public, | parameter | :: | FIXED_JOINT | = | 2 |
Defines a rigid connection permitting no relative motion. |
| integer(kind=int32), | public, | parameter | :: | SPHERICAL_JOINT | = | 5 |
Defines a joint permitting rotation about all three axes. The rotation is parameterized by a z-y-x Euler angle sequence. |
| integer(kind=int32), | public, | parameter | :: | UNIVERSAL_JOINT | = | 4 |
Defines a joint permitting rotation about the joint's x-axis followed by rotation about the resulting y-axis. |
Initializes a new joint object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | jtype |
The type of joint. This value must be one of FIXED_JOINT, REVOLUTE_JOINT, PRISMATIC_JOINT, CYLINDRICAL_JOINT, UNIVERSAL_JOINT, or SPHERICAL_JOINT. |
||
| integer(kind=int32), | intent(in) | :: | parent_link |
The index of the parent link. |
||
| integer(kind=int32), | intent(in) | :: | child_link |
The index of the child link. |
||
| integer(kind=int32), | intent(in), | optional | :: | parent_frame |
The index of the coordinate frame on the parent link to which the joint attaches. If not supplied, a value of one is used. |
|
| integer(kind=int32), | intent(in), | optional | :: | child_frame |
The index of the coordinate frame on the child link to which the joint attaches. If not supplied, a value of one is used. |
|
| logical, | intent(in), | optional | :: | actuated |
True if the joint is driven. If not supplied, the joint is considered passive. |
The resulting joint object.
Defines a kinematic joint connecting two links. The joint attaches to a coordinate frame on each of the two links; the frames are identified by their index within each link. The joint is coincident with both frames when all of its joint variables are zero.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | actuated | = | .false. |
True if the joint is driven; else, false for a passive joint. |
|
| integer(kind=int32), | public | :: | child_frame | = | 1 |
The index of the coordinate frame on the child link to which the joint attaches. |
|
| integer(kind=int32), | public | :: | child_link | = | 0 |
The index of the child link. |
|
| integer(kind=int32), | public | :: | joint_type | = | REVOLUTE_JOINT |
The type of joint. This value must be one of FIXED_JOINT, REVOLUTE_JOINT, PRISMATIC_JOINT, CYLINDRICAL_JOINT, UNIVERSAL_JOINT, or SPHERICAL_JOINT. |
|
| integer(kind=int32), | public | :: | parent_frame | = | 1 |
The index of the coordinate frame on the parent link to which the joint attaches. |
|
| integer(kind=int32), | public | :: | parent_link | = | 0 |
The index of the parent link. |
| private function jnt_init (jtype, parent_link, child_link, parent_frame, child_frame, actuated) | Initializes a new joint object. |
| procedure , public :: get_constraint_count => jnt_get_constraint_count Function | |
| procedure , public :: get_dof => jnt_get_dof Function | |
| procedure , public :: get_planar_constraint_count => jnt_get_planar_count Function | |
| procedure , public :: is_planar_compatible => jnt_is_planar Function | |
| procedure , public :: motion_transform => jnt_motion_transform Function |
Gets the number of degrees of freedom permitted by the requested joint type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | jtype |
The joint type. |
The number of degrees of freedom. A value of -1 is returned if the joint type is not recognized.