138 btScalar rhs =
m_kp * positionStabiliationTerm + currentVelocity +
m_kd * velocityError;
148 fillMultiBodyConstraint(constraintRow, data,
jacobianA(row),
jacobianB(row), dummy, dummy, dummy, dummy, posError, infoGlobal, -
m_maxAppliedImpulse,
m_maxAppliedImpulse,
false, 1,
false, rhs);
@ MULTIBODY_CONSTRAINT_1DOF_JOINT_MOTOR
btAlignedObjectArray< btMultiBodySolverConstraint > btMultiBodyConstraintArray
btScalar * jacobianA(int row)
btMultiBodyConstraint(btMultiBody *bodyA, btMultiBody *bodyB, int linkA, int linkB, int numRows, bool isUnilateral, int type)
btScalar m_maxAppliedImpulse
btScalar * jacobianB(int row)
void allocateJacobiansMultiDof()
btScalar fillMultiBodyConstraint(btMultiBodySolverConstraint &solverConstraint, btMultiBodyJacobianData &data, btScalar *jacOrgA, btScalar *jacOrgB, const btVector3 &constraintNormalAng, const btVector3 &constraintNormalLin, const btVector3 &posAworld, const btVector3 &posBworld, btScalar posError, const btContactSolverInfo &infoGlobal, btScalar lowerLimit, btScalar upperLimit, bool angConstraint=false, btScalar relaxation=1.f, bool isFriction=false, btScalar desiredVelocity=0, btScalar cfmSlip=0, btScalar damping=1.0)
btScalar m_desiredVelocity
virtual int getIslandIdB() const
btScalar m_desiredPosition
virtual void finalizeMultiDof()
virtual ~btMultiBodyJointMotor()
btMultiBodyJointMotor(btMultiBody *body, int link, btScalar desiredVelocity, btScalar maxMotorImpulse)
This file was written by Erwin Coumans.
virtual void createConstraintRows(btMultiBodyConstraintArray &constraintRows, btMultiBodyJacobianData &data, const btContactSolverInfo &infoGlobal)
virtual int getIslandIdA() const
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btMultiBodyConstraint * m_orgConstraint
btVector3 m_relpos1CrossNormal
btVector3 m_contactNormal2
btVector3 m_contactNormal1
btVector3 m_relpos2CrossNormal