File mechanics/src/joints/KneeJointR.hpp#

Go to the source code of this file

class KneeJointR : public NewtonEulerJointR
#include <KneeJointR.hpp>

This class implements a knee joint between one or two Newton/Euler Dynamical system.

Subclassed by PivotJointR

Public Functions

KneeJointR()

Empty constructor.

The relation may be initialized later by setPoint, setAbsolute, and setBasePositions.

KneeJointR(SP::SiconosVector P, bool absoluteRef, SP::NewtonEulerDS d1 = SP::NewtonEulerDS(), SP::NewtonEulerDS d2 = SP::NewtonEulerDS())

Constructor based on one or two dynamical systems and a point.

Parameters:
  • d1 – first DynamicalSystem linked by the joint.

  • d2 – second DynamicalSystem linked by the joint, or NULL for absolute frame.

  • P – SiconosVector of size 3 that defines the point around which rotation is allowed.

  • absoluteRef – if true, P is in the absolute frame, otherwise P is in d1 frame.

inline virtual ~KneeJointR()

destructor

virtual void initialize(Interaction &inter)#
virtual void setBasePositions(SP::SiconosVector q1, SP::SiconosVector q2 = SP::SiconosVector())

Initialize the joint constants based on the provided base positions.

Parameters:
  • q1 – A SiconosVector of size 7 indicating translation and orientation in inertial coordinates.

  • q2 – An optional SiconosVector of size 7 indicating translation and orientation; if null, the inertial frame will be considered as the second base.

void checkInitPos(SP::SiconosVector q1, SP::SiconosVector q2)

Perform some checks on the initial conditions.

inline virtual unsigned int numberOfConstraints()

Get the number of constraints defined in the joint.

Returns:

the number of constraints

inline virtual unsigned int numberOfDoF()

Get the number of degrees of freedom defined in the joint.

Returns:

the number of degrees of freedom (DoF)

inline virtual DoF_Type typeOfDoF(unsigned int axis)

Return the type of a degree of freedom of this joint.

Returns:

the type of the degree of freedom (DoF)

virtual void computeJachq(double time, Interaction &inter, SP::BlockVector q0)#
virtual void computeh(double time, const BlockVector &q0, SiconosVector &y)

to compute the output y = h(t,q,z) of the Relation

Parameters:
  • time – current time value

  • q – coordinates of the dynamical systems involved in the relation

  • y – the resulting vector

virtual void computeDotJachq(double time, const BlockVector &workQ, BlockVector &workZ, const BlockVector &workQdot)#
virtual void computeDotJachq(double time, SP::SiconosVector qdot1, SP::SiconosVector qdot2 = SP::SiconosVector())#
inline SP::SiconosVector P()#

Protected Functions

ACCEPT_SERIALIZATION(KneeJointR)#
virtual void Jd1d2(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13, double X2, double Y2, double Z2, double q20, double q21, double q22, double q23)#
virtual void Jd1(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13)#
virtual void DotJd1d2(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13, double Xdot2, double Ydot2, double Zdot2, double qdot20, double qdot21, double qdot22, double qdot23)#
virtual void DotJd1(double Xdot1, double Ydot1, double Zdot1, double qdot10, double qdot11, double qdot12, double qdot13)#
double Hx(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13, double X2, double Y2, double Z2, double q20, double q21, double q22, double q23)#
double Hy(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13, double X2, double Y2, double Z2, double q20, double q21, double q22, double q23)#
double Hz(double X1, double Y1, double Z1, double q10, double q11, double q12, double q13, double X2, double Y2, double Z2, double q20, double q21, double q22, double q23)#

Protected Attributes

SP::SiconosVector _P0#

Coordinate of the knee point in the body frame of the first dynamical system _d1.

double _G1P0x#

Absolute coodinates of the vector G1P0 when d1 is located in q=(0,0,0,1,0,0,0) i.e.

P0 in the body frame of d1. These values are computed when the constructor is called.

double _G1P0y#
double _G1P0z#
double _G2P0x#

Absolute coodinates of the vector G2P0 when d2 is located in q=(0,0,0,1,0,0,0) i.e.

P0 in the body frame of d2. These values are computed when the constructor is called.

double _G2P0y#
double _G2P0z#