Hi,
I just got started with isaac sim and I am confused by the precision of the environment.
Specifically, I am following the tutorial hello world.
Section 1.4 is about adding a cube to the scene at
position=np.array([0, 0, 1.0])
when I load the scene, the cube is placed at (0.0, 0.0, 0.99182)
I also saved the scene as a .usda file.
In the usda file, the definition of the cube is as below:
def Cube "random_cube" (
prepend apiSchemas = ["MaterialBindingAPI", "PhysicsCollisionAPI", "PhysicsMeshCollisionAPI", "PhysxCollisionAPI", "PhysicsRigidBodyAPI", "PhysicsMassAPI", "PhysxRigidBodyAPI"]
)
{
float3[] extent = [(-0.25, -0.25, -0.25), (0.25, 0.25, 0.25)]
rel material:binding = </World/Looks/visual_material> (
bindMaterialAs = "strongerThanDescendants"
)
rel material:binding:physics = </World/Physics_Materials/physics_material_1> (
bindMaterialAs = "strongerThanDescendants"
)
vector3f physics:angularVelocity = (0, 0, 0)
bool physics:collisionEnabled = 1
float physics:mass = 0.02
bool physics:rigidBodyEnabled = 1
vector3f physics:velocity = (0, 0, -0.32700002)
float physxCollision:contactOffset = 0.1
float physxCollision:minTorsionalPatchRadius = 0.8
float physxCollision:restOffset = 0
float physxCollision:torsionalPatchRadius = 1
double size = 1
quatd xformOp:orient = (1, 0, 0, 0)
double3 xformOp:scale = (0.5, 0.5, 0.5)
double3 xformOp:translate = (0, 0, 0.9918249845504761)
uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
}
I found two things:
- precision error only occurs to translation z (I modified the code to
position=np.array([0, 1.0, 1.0])
and translation y is not affected.) - precision error is beyond double precision
This can be easily reproduced with Isaac SIm 2022.1.0.
Has anyone run into the same issue?
Does anyone know why this happens?
Thank you