Hello world tutorial: precision error in translation z

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:

  1. 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.)
  2. 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

Hey, yep I can relate to this. Luckly I don’t have to be super precise since you can get the robot location. But this is possibly annoying.

It happens also with rotations (eg 90 deg rot on *-axis become 89.9****)

@Ossama_Ahmed