joints - Kinematic Joints definition

Usual joints

class Ball(solids, center, local=None, default=None)[source]

Joint for rotation all around a point.

Classical definition: Ball (point) the initial state doen’t require more data the class holds a point for each side

../_images/joints-ball.png
class Revolute(solids, axis: Axis, local=None, default=None)[source]

Joint for revolution around an axis

screenshots/joints-revolute.png
class Cylindrical(solids, axis: Axis, local=None, default=None)[source]

Joint with rotation and translation around an axis

screenshots/joints-cylindrical.png
class Prismatic(solids, axis: Axis, local=None, default=None)[source]

Joint for translation only in a direction

Classical definition: Prismatic (direction vector) the initial state requires more parameters: the relative placements of the solids this class holds a base for each of the solids, bases are (0,X,Y) where X,Y are constrained to keep the same direction across bases, and the bases origins lays on their common Z axis

screenshots/joints-prismatic.png
class Planar(solids, axis, local=None, default=None)[source]

Joint for translation in 2 directions and rotation around the third direction

Classical definition: Planar (direction vector) the initial state requires an additional distance between the solids this class holds an axis for each side, the axis origins are constrained to share the same projections on the normal

../_images/joints-planar.png
class PointSlider(solids, axis, local=None)[source]

Joint for rotation all around a point belonging to a plane.

Classical definition: Punctiform/Sphere-Plane (axis) The initial state does not require more data The class holds a normal axis for the plane side, and a point for the sphere side (that defaults to the axis’ origin)

screenshots/joints-pointslider.png
class EdgeSlider(solids, axis, local=None)[source]

Joint for rotation all around a point belonging to a plane.

Classical definition: Punctiform/Sphere-Plane (axis) The initial state does not require more data The class holds a normal axis for the plane side, and a point for the sphere side (that defaults to the axis’ origin)

screenshots/joints-edgeslider.png
class Ring(solids, center, local=None)[source]
class Universal(solids, axis, local=None)[source]
class ConstantVelocity(*args, default=0, **kwargs)[source]

Complex joints

class Project(solids, projection: dmat4x4, target: dmat4x4)[source]
class Rack(*args, default=0, **kwargs)[source]
class Gear(solids, ratio, axis, local=None)[source]

Gear interaction between two solids.

ratio is the factor from the rotation of s1 to the rotation of s2 The two pinions are considered circular, but no assumption is made on their radius or relative inclination. The interaction is symetric.

Note

As solids don’t hold more data than only their pose (position and orientation), there is no way to distinguish the gear in a pose, and in the same pose rotated by \(2 \pi\).

Therefore rotation jumps can occurs when several gears are tied.

class Helicoid(s0, s1, step, b0, b1=None, position=None)[source]

Screw a solid into an other.

step is the translation distance needed for that one solid turn by 2*pi around the other The interaction is symetric.

Note

As solids orientation is in \([0;~ 2 \pi]\), when the gap in the helicoid is bigger than step then the joints solids only rotates by gap/step * 2*pi % 2*pi

If the helicoid is involved in any gearings or reductors, the result might be not what was expected.

../_images/joints-helicoid.png

Mesh - based joints

class Cam(*args, default=0, **kwargs)[source]
class Contact(*args, default=0, **kwargs)[source]