1 #ifndef SimTK_SIMBODY_PLUS_IMPULSE_SOLVER_H_
2 #define SimTK_SIMBODY_PLUS_IMPULSE_SOLVER_H_
41 m_cosMaxSlidingDirChange(std::cos(
Pi/6))
90 Real calcSlidingStepLengthToMaxChange(
const Vec2& A,
const Vec2& B)
const;
91 Real calcSlidingStepLengthToMaxChange(
const Vec3& A,
const Vec3& B)
const;
104 void initializeNewton(
const Matrix& A,
106 const Vector& verrApplied,
111 void updateDirectionsAndCalcCurrentError
120 void updateJacobianForSliding(
const Matrix& A,
123 const Vector& verrAppliedLeft)
const;
126 Real m_minSmoothness;
127 Real m_cosMaxSlidingDirChange;
130 mutable Vector m_verrLeft;
131 mutable Vector m_verrExpand;
148 mutable Matrix m_JacActive;
149 mutable Vector m_rhsActive;
150 mutable Vector m_piActive;
151 mutable Vector m_errActive;
153 mutable Matrix m_bilateralActive;
#define SimTK_SIMBODY_EXPORT
Definition: Simbody/include/simbody/internal/common.h:68
The Array_<T> container class is a plug-compatible replacement for the C++ standard template library ...
Definition: Array.h:1520
This is the abstract base class for impulse solvers, which solve an important subproblem of the conta...
Definition: ImpulseSolver.h:109
TODO: PLUS (Poisson-Lankarani-Uchida-Sherman) impulse solver.
Definition: PLUSImpulseSolver.h:34
bool solveBilateral(const Array_< MultiplierIndex > &participating, const Matrix &A, const Vector &D, const Vector &rhs, Vector &pi) const override
Solve with only unconditional constraints.
SimTK_DEFINE_UNIQUE_LOCAL_INDEX_TYPE(PLUSImpulseSolver, ActiveIndex)
PLUSImpulseSolver(Real roll2slipTransitionSpeed)
Definition: PLUSImpulseSolver.h:36
bool solve(int phase, const Array_< MultiplierIndex > &participating, const Matrix &A, const Vector &D, const Array_< MultiplierIndex > &expanding, Vector &piExpand, Vector &verrStart, Vector &verrApplied, Vector &pi, Array_< UncondRT > &unconditional, Array_< UniContactRT > &uniContact, Array_< UniSpeedRT > &uniSpeed, Array_< BoundedRT > &bounded, Array_< ConstraintLtdFrictionRT > &consLtdFriction, Array_< StateLtdFrictionRT > &stateLtdFriction) const override
Solve with conditional constraints.
const Real SqrtEps
This is the square root of Eps, ~1e-8 if Real is double, ~3e-4 if Real is float.
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607