First step towards a MuJoCo MJCF importer for Bullet. It can load the humanoid.xml, ant.xml and some other OpenAI GYM asset files. Not all fields are converted, so it is work-in-progress. This is useful for Reinforcement Learning experiments, and would also help integration with DeepMind Lab.

This commit is contained in:
Erwin Coumans
2016-12-30 18:32:57 -08:00
parent 7b9d194bfd
commit fdd517e00f
16 changed files with 1713 additions and 21 deletions

View File

@@ -89,7 +89,7 @@ struct ImportUrdfInternalData
ImportUrdfSetup::ImportUrdfSetup(struct GUIHelperInterface* helper, int option, const char* fileName)
:CommonMultiBodyBase(helper),
m_grav(0),
m_grav(-10),
m_upAxis(2)
{
m_data = new ImportUrdfInternalData;
@@ -135,7 +135,7 @@ ImportUrdfSetup::ImportUrdfSetup(struct GUIHelperInterface* helper, int option,
if (gFileNameArray.size()==0)
{
gFileNameArray.push_back("quadruped/quadruped.urdf");
gFileNameArray.push_back("r2d2.urdf");
}

View File

@@ -237,7 +237,13 @@ void ConvertURDF2BulletInternal(
}
else
{
linkTransformInWorldSpace =parentTransformInWorldSpace*parent2joint;
if (flags & CUF_USE_MJCF)
{
linkTransformInWorldSpace =parentTransformInWorldSpace*linkTransformInWorldSpace;
} else
{
linkTransformInWorldSpace =parentTransformInWorldSpace*parent2joint;
}
}

View File

@@ -17,7 +17,8 @@ class MultiBodyCreationInterface;
enum ConvertURDFFlags {
CUF_USE_SDF = 1,
// Use inertia values in URDF instead of recomputing them from collision shape.
CUF_USE_URDF_INERTIA = 2
CUF_USE_URDF_INERTIA = 2,
CUF_USE_MJCF = 4,
};
void ConvertURDF2Bullet(const URDFImporterInterface& u2b,

View File

@@ -44,6 +44,7 @@ enum UrdfGeomTypes
URDF_GEOM_CYLINDER,
URDF_GEOM_MESH,
URDF_GEOM_PLANE,
URDF_GEOM_CAPSULE//non-standard URDF?
};
@@ -56,6 +57,10 @@ struct UrdfGeometry
btVector3 m_boxSize;
double m_capsuleRadius;
btVector3 m_capsuleFrom;
btVector3 m_capsuleTo;
double m_cylinderRadius;
double m_cylinderLength;