Institut de Robòtica i Informàtica Industrial
KRD Group

The CuikSuite Project

Tjoint Struct Reference

Relation between two links. More...

#include <joint.h>

Collaboration diagram for Tjoint:

Data Fields

unsigned int t
unsigned int id
unsigned int linkID [2]
Tlinklink [2]
double points [6][3]
double normals [3][3]
Tinterval normRange
boolean hasLimits
boolean avoidLimits
double avoidLimitsWeight
Tinterval range
Tinterval range2
double vrange [2][3]
unsigned int obj3d
double rad
double length
Tcolor color
THTransform trs

Detailed Description

Constraints on the relative moments between two links.

We store the pointers to the links related by the joint and also their identifiers. This is so because the identifiers are not stored in the links itselfs (they are the indexes of the links as stored in the mechanism).

Todo:
Right now only prismatic, spherical, revolute, universal and spherical-spherical joints are defined. Although it is not urgent, we have to define more types of joints: CYL_JOINT (cylindrical joint), and HEL_JOINT (helical joint).
To define a new type of joint, we have to define a new constructor, to to extend the GenerateJointEquations and the GenerateJointRangeEquations functions.
See also:
joint.h, joint.c.

Definition at line 129 of file joint.h.


Field Documentation

unsigned int Tjoint::id

Unique identifier assigned to the joint. This is used to generate unique names for the variables associated with the joint. Using the names of the links is informative but not enough since we can have several joint between the same couple of links.

Definition at line 133 of file joint.h.

Referenced by CopyJoint(), GenerateJointEquations(), GenerateJointEquationsInBranch(), GenerateJointRangeEquations(), GetJointID(), NewFixJoint(), NewFreeJoint(), NewInPatchJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), NewUniversalJoint(), and RegenerateJointSolution().

double Tjoint::points[6][3]

In gneral, a joint constraints the relative motion between links stablishing relations between a vector defined in the first link reference frame and a vector defined in the second link reference frame.
In this case 4 points are used to define the two vectors (two points in the frame of reference of the first link and two points in that of the second link).
In some cases less than four points are necessary (for instance, for SPH_JOINTS only one point in each reference frame is required).
In other cases (for instance the IN_PATCH joint) 6 points are necessary: two to define the point and normal in the first link and 4 to define the patch in the second link.

Definition at line 141 of file joint.h.

Referenced by CopyJoint(), GenerateJointEquations(), GenerateJointEquationsInBranch(), GetJointPoint(), MoveJoint(), NewFixJoint(), NewFreeJoint(), NewInPatchJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), and NewUniversalJoint().

double Tjoint::normals[3][3]

In general, normalized version of the two vectors defined from the points. In this case only 2 vectors are defined.
For the IN_PATCH_JOINT, normals at the corners of the patch used to compute the normal at any point in the patch. In this case tree vectors are defined

Definition at line 155 of file joint.h.

Referenced by CopyJoint(), GenerateJointEquations(), GenerateJointEquationsInBranch(), NewFixJoint(), NewFreeJoint(), NewInPatchJoint(), NewPrismaticJoint(), NewRevoluteJoint(), and NewUniversalJoint().

For IN_PATCH_JOINT the range for the norm of the normal vector to any point in the patch. Not used for other joints.

Definition at line 161 of file joint.h.

Referenced by CopyJoint(), GenerateJointEquations(), and NewInPatchJoint().

TRUE if the search process has to be focussed in the center of the valid ranges for the joint

Definition at line 165 of file joint.h.

Referenced by CopyJoint(), GenerateJointRangeEquations(), NewFixJoint(), NewFreeJoint(), NewInPatchJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), and NewUniversalJoint().

If avoidLimits is TRUE, this is the strength of the limit avoidance for this joint.

Definition at line 167 of file joint.h.

Referenced by CopyJoint(), GenerateJointRangeEquations(), NewFixJoint(), NewFreeJoint(), NewInPatchJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), and NewUniversalJoint().

double Tjoint::vrange[2][3]

Vectors defining the reference position for rotations, spherical, and universal joints.

Definition at line 172 of file joint.h.

Referenced by CopyJoint(), GenerateJointRangeEquations(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), and NewUniversalJoint().

unsigned int Tjoint::obj3d

Identifier of the 3d body assigned to the cylinder connecting the links for spherical-spherical joints. Not used for other kinds of joints.

Definition at line 175 of file joint.h.

Referenced by CopyJoint(), MoveJoint(), NewFixJoint(), NewFreeJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), NewUniversalJoint(), and PlotJoint().

double Tjoint::rad

For spherical-spherical joints, the radius of the cylinder connecting the links. Not used for other kinds of joints.

Definition at line 178 of file joint.h.

Referenced by CopyJoint(), NewFixJoint(), NewFreeJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), NewUniversalJoint(), and PlotJoint().

For spherical-spherical joints, the length of the cylinder connecting the links. Not used for other kinds of joints.

Definition at line 180 of file joint.h.

Referenced by CopyJoint(), GenerateJointEquationsInBranch(), GetJointLength(), GetJointMaxCoordinate(), NewFixJoint(), NewFreeJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), NewUniversalJoint(), and PlotJoint().

For spherical-spherical joints, the color of the cylinder connecting the links. Not used for other kinds of joints.

Definition at line 182 of file joint.h.

Referenced by CopyJoint(), NewFixJoint(), NewFreeJoint(), NewPrismaticJoint(), NewRevoluteJoint(), NewSphericalJoint(), NewSphSphJoint(), NewUniversalJoint(), and PlotJoint().


The documentation for this struct was generated from the following file: