More experiments with the way the generic joint is stabilized.

This commit is contained in:
Crozet Sébastien
2021-02-11 18:52:07 +01:00
parent 5b80c4efbf
commit cc80e40067
5 changed files with 332 additions and 25 deletions

View File

@@ -14,6 +14,7 @@ use super::{
WFixedPositionGroundConstraint, WGenericPositionConstraint, WGenericPositionGroundConstraint,
WPrismaticPositionConstraint, WPrismaticPositionGroundConstraint,
};
use crate::dynamics::solver::DeltaVel;
use crate::dynamics::{IntegrationParameters, Joint, JointParams, RigidBodySet};
#[cfg(feature = "simd-is-enabled")]
use crate::math::SIMD_WIDTH;
@@ -241,4 +242,20 @@ impl AnyJointPositionConstraint {
AnyJointPositionConstraint::Empty => unreachable!(),
}
}
pub fn solve2(
&self,
params: &IntegrationParameters,
positions: &mut [Isometry<Real>],
dpos: &mut [DeltaVel<Real>],
) {
match self {
AnyJointPositionConstraint::GenericJoint(c) => c.solve2(params, positions, dpos),
AnyJointPositionConstraint::GenericGroundConstraint(c) => {
c.solve2(params, positions, dpos)
}
_ => {}
AnyJointPositionConstraint::Empty => unreachable!(),
}
}
}