ObjectJointSpherical
A spherical joint, which constrains the relative translation between two position based markers.
Additional information for ObjectJointSpherical:
- This
Object
has/provides the following types =Connector
,Constraint
- Requested
Marker
type =Position
- Short name for Python =
SphericalJoint
- Short name for Python visualization object =
VSphericalJoint
The item ObjectJointSpherical with type = ‘JointSpherical’ has the following parameters:
- name [type = String, default = ‘’]:constraints’s unique name
- markerNumbers [\([m0,m1]\tp\), type = ArrayMarkerIndex, size = 2, default = [ invalid [-1], invalid [-1] ]]:list of markers used in connector; \(m1\) is the moving coin rigid body and \(m0\) is the marker for the ground body, which use the localPosition=[0,0,0] for this marker!
- constrainedAxes [\({\mathbf{j}}=[j_0,\,\ldots,\,j_2]\), type = ArrayIndex, size = 3, default = [1,1,1]]:flag, which determines which translation (0,1,2) and rotation (3,4,5) axes are constrained; for \(j_i\), two values are possible: 0=free axis, 1=constrained axis
- activeConnector [type = Bool, default = True]:flag, which determines, if the connector is active; used to deactivate (temporarily) a connector or constraint
- visualization [type = VObjectJointSpherical]:parameters for visualization of item
The item VObjectJointSpherical has the following parameters:
- show [type = Bool, default = True]:set true, if item is shown in visualization and false if it is not shown
- jointRadius [type = float, default = 0.1]:radius of joint to draw
- color [type = Float4, default = [-1.,-1.,-1.,-1.]]:RGBA connector color; if R==-1, use default color
DESCRIPTION of ObjectJointSpherical
The following output variables are available as OutputVariableType in sensors, Get…Output() and other functions:
Position
: \(\LU{0}{{\mathbf{p}}}_{m0}\)current global position of position marker \(m0\)Velocity
: \(\LU{0}{{\mathbf{v}}}_{m0}\)current global velocity of position marker \(m0\)Displacement
: \(\LU{0}{\Delta{\mathbf{p}}}=\LU{0}{{\mathbf{p}}}_{m1} - \LU{0}{{\mathbf{p}}}_{m0}\)constraint drift or relative motion, if not all axes fixedForce
: \(\LU{0}{{\mathbf{f}}}\)joint force in global coordinates
Definition of quantities
intermediate variables
|
symbol
|
description
|
---|---|---|
marker m0 position
|
\(\LU{0}{{\mathbf{p}}}_{m0}\)
|
current global position which is provided by marker \(m0\)
|
marker m1 position
|
\(\LU{0}{{\mathbf{p}}}_{m1}\)
|
current global position which is provided by marker \(m1\)
|
marker m0 velocity
|
\(\LU{0}{{\mathbf{v}}}_{m0}\)
|
current global velocity which is provided by marker \(m0\)
|
marker m1 velocity
|
\(\LU{0}{{\mathbf{v}}}_{m1}\)
|
current global velocity which is provided by marker \(m1\)
|
relative velocity
|
\(\LU{0}{\Delta{\mathbf{v}}} = \LU{0}{{\mathbf{v}}}_{m1} - \LU{0}{{\mathbf{v}}}_{m0}\)
|
constraint velocity error, or relative velocity if not all axes fixed
|
algebraic variables
|
\({\mathbf{z}}=[\lambda_0,\,\ldots,\,\lambda_2]\tp\)
|
vector of algebraic variables (Lagrange multipliers) according to the algebraic equations
|
Connector constraint equations
``activeConnector = True``: If \([j_0,\,\ldots,\,j_2] = [1,1,1]\tp\), meaning that all translational coordinates are fixed, the translational index 3 constraints read
and the translational index 2 constraints read
If \([j_0,\,\ldots,\,j_2] \neq [1,1,1]\tp\), meaning that at least one translational coordinate is free, the translational index 3 constraints read for every component \(k \in [0,1,2]\) of the vector \(\LU{0}{\Delta{\mathbf{p}}}\)
and the translational index 2 constraints read for every component \(k \in [0,1,2]\) of the vector \(\LU{0}{\Delta{\mathbf{v}}}\)
``activeConnector = False``:
Example for body position marker
In this example, we study the constraint equations for two body position marker, see Section MarkerBodyPosition, based on rigid bodies, see Section ObjectRigidBody. The markers \(m_0\) and \(m_1\) have the positions
From there, we can derive the 3 constraint equation
The constraint jacobians simply follow from the position jacobians of the respective markers \(\LU{0}{{\mathbf{J}}_\mathrm{pos,0}}\)and \(\LU{0}{{\mathbf{J}}_\mathrm{pos,1}}\). The position jacobians are added to the system jacobian at rows according to the global indices of the constraint equations and the columns are determined by the coordinate indices of the bodies’ coordinates.
Relevant Examples and TestModels with weblink:
NGsolveLinearFEM.py (Examples/), bungeeJump.py (Examples/), humanRobotInteraction.py (Examples/), NGsolvePostProcessingStresses.py (Examples/), objectFFRFreducedOrderNetgen.py (Examples/), sliderCrank3DwithANCFbeltDrive.py (Examples/), ACFtest.py (TestModels/), driveTrainTest.py (TestModels/), genericJointUserFunctionTest.py (TestModels/), kinematicTreeConstraintTest.py (TestModels/), objectFFRFreducedOrderAccelerations.py (TestModels/), objectFFRFreducedOrderStressModesTest.py (TestModels/), objectFFRFreducedOrderTest.py (TestModels/), objectFFRFTest.py (TestModels/), objectFFRFTest2.py (TestModels/)
The web version may not be complete. For details, consider also the Exudyn PDF documentation : theDoc.pdf