PyBullet loadURDF in useMaximalCoordinated=True (btRigidBody), support lower/upper limits for revolute joints.

This commit is contained in:
erwincoumans
2018-06-22 09:28:07 -07:00
parent 42c9d9aa3c
commit 55e185fe39
2 changed files with 26 additions and 10 deletions

View File

@@ -462,14 +462,28 @@ void ConvertURDF2BulletInternal(
{
btGeneric6DofSpring2Constraint* dof6 = 0;
//backwards compatibility
if (flags & CUF_RESERVED )
if (jointType == URDFRevoluteJoint && jointLowerLimit <= jointUpperLimit)
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*parentRigidBody, *linkRigidBody, offsetInA, offsetInB,jointAxisInJointSpace,jointLowerLimit, jointUpperLimit);
//backwards compatibility
if (flags & CUF_RESERVED )
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*parentRigidBody, *linkRigidBody, offsetInA, offsetInB,jointAxisInJointSpace,jointLowerLimit, jointUpperLimit);
} else
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*linkRigidBody, *parentRigidBody, offsetInB, offsetInA,jointAxisInJointSpace,jointLowerLimit, jointUpperLimit);
}
} else
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*linkRigidBody, *parentRigidBody, offsetInB, offsetInA,jointAxisInJointSpace,jointLowerLimit, jointUpperLimit);
//disable joint limits
if (flags & CUF_RESERVED )
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*parentRigidBody, *linkRigidBody, offsetInA, offsetInB,jointAxisInJointSpace,1,-1);
} else
{
dof6 = creation.createRevoluteJoint(urdfLinkIndex,*linkRigidBody, *parentRigidBody, offsetInB, offsetInA,jointAxisInJointSpace,1,-1);
}
}
if (enableConstraints)
world1->addConstraint(dof6,true);
//b3Printf("Revolute/Continuous joint\n");