modelJointRRP

Planar revolute - revolute - prismatic joint aggregation (no constraints, no potential states)

Extends from Interfaces.PartialTwoFramesDoubleSize (Base model for components providing two frame connectors + outer world + assert to guarantee that the component is connected (default icon size is factor 2 larger as usual)).

Information

This component consists of 2 revolute joints with parallel axes of rotation that and a prismatic joint with a translational axis that is orthogonal to the revolute joint axes, see the default animation in the following figure (the axes vectors are not part of the default animation):

model Joints.Assemblies.JointRRP

This joint aggregation introduces neither constraints nor state variables and should therefore be used in kinematic loops whenever possible to avoid non-linear systems of equations. It is only meaningful to use this component in planar loops. Basically, the position and orientation of the 3 joints as well as of frame_ia, frame_ib, and frame_im are calculated by solving analytically a non-linear equation, given the position and orientation at frame_a and at frame_b.

Connector frame_a is the "left" side of the first revolute joint whereas frame_ia is the "right side of this revolute joint, fixed in rod 1. Connector frame_b is the "right" side of the prismatic joint whereas frame_ib is the "left" side of this prismatic joint, fixed in rod 2. Finally, connector frame_im is the connector at the "right" side of the revolute joint in the middle, fixed in rod 2. The frames frame_b, frame_ib, frame_im are always parallel to each other.

The easiest way to define the parameters of this joint is by moving the MultiBody system in a reference configuration where all frames of all components are parallel to each other (alternatively, at least frame_a, frame_ia, frame_im, frame_ib, frame_b of the JointRRP joint should be parallel to each other when defining an instance of this component).

Basically, the JointRRP model consists internally of a universal - spherical - prismatic joint aggregation (= JointUSP). In a planar loop this will behave as if 2 revolute joints with parallel axes and 1 prismatic joint are connected by rigid rods.

Parameters

TypeNameDefaultDescription
Booleananimationtrue= true, if animation shall be enabled
Modelica.Mechanics.MultiBody.Types.Axisn_a{0, 0, 1}Axes of the two revolute joints resolved in frame_a (both axes are parallel to each other)
Modelica.Mechanics.MultiBody.Types.Axisn_b{-1, 0, 0}Axis of prismatic joint fixed and resolved in frame_b (must be orthogonal to revolute joint axes)
SI.Position[3]rRod1_ia{1, 0, 0}Vector from origin of frame_a to revolute joint in the middle, resolved in frame_ia
SI.Position[3]rRod2_ib{-1, 0, 0}Vector from origin of frame_ib to revolute joint in the middle, resolved in frame_ib (frame_ib is parallel to frame_b)
SI.Positions_offset0Relative distance offset of prismatic joint (distance between the prismatic joint frames = s(t) + s_offset)
SI.Positions_guess0Select the configuration such that at initial time |s(t0)-s_guess| is minimal
Real[3]e_aModelica.Math.Vectors.normalizeWithAssert(n_a)Unit vector along axes of rotations, resolved in frame_a
Real[3]e_iajointUSP.e2_iaUnit vector along axes of rotations, resolved in frame_ia
Real[3]e_imUnit vector along axes of rotations, resolved in frame_im
Real[3]e_bjointUSP.prismatic.eUnit vector along axes of translation of the prismatic joint, resolved in frame_b and frame_ib
Animation › if animation = true
SI.DistancecylinderLengthworld.defaultJointLengthLength of cylinders representing the revolute joints
SI.DistancecylinderDiameterworld.defaultJointWidthDiameter of cylinders representing the revolute joints
Types.AxisboxWidthDirection{0, 1, 0}Vector in width direction of prismatic joint, resolved in frame_b
SI.DistanceboxWidthworld.defaultJointWidthWidth of prismatic joint box
SI.DistanceboxHeightboxWidthHeight of prismatic joint box
SI.DiameterrodDiameter1.1*cylinderDiameterDiameter of the two rods connecting the joints
Advanced
BooleancheckTotalPowerfalse= true, if total power flowing into this component shall be determined (must be zero)

Connectors

TypeNameDefaultDescription
Interfaces.Frame_aframe_a (from PartialTwoFramesDoubleSize)Coordinate system fixed to the component with one cut-force and cut-torque
Interfaces.Frame_bframe_b (from PartialTwoFramesDoubleSize)Coordinate system fixed to the component with one cut-force and cut-torque
Modelica.Mechanics.MultiBody.Interfaces.Frame_aframe_iaCoordinate system at origin of frame_a fixed at connecting rod of revolute joints
Modelica.Mechanics.MultiBody.Interfaces.Frame_bframe_ibCoordinate system at origin of frame_b fixed at connecting rod of revolute and prismatic joint
Modelica.Mechanics.MultiBody.Interfaces.Frame_bframe_imCoordinate system at origin of revolute joint in the middle fixed at connecting rod of revolute and prismatic joint
Modelica.Mechanics.Translational.Interfaces.Flange_aaxis1-dim. translational flange that drives the prismatic joint
Modelica.Mechanics.Translational.Interfaces.Flange_bbearing1-dim. translational flange of the drive bearing of the prismatic joint

Components

TypeNameDefaultDescription
Types.ColorcylinderColorModelica.Mechanics.MultiBody.Types.Defaults.JointColorColor of cylinders representing the revolute joints
Types.ColorboxColorcylinderColorColor of prismatic joint box
Types.ColorrodColorModelica.Mechanics.MultiBody.Types.Defaults.RodColorColor of the two rods connecting the joints
Types.SpecularCoefficientspecularCoefficientworld.defaultSpecularCoefficientReflection of ambient light (= 0: light is completely absorbed)
SI.PowertotalPowerjointUSP.totalPowerTotal power flowing into this element, if checkTotalPower=true (otherwise dummy)
JointUSPjointUSP