Simulation behavior in GPU is different with in CPU

Differences:

  1. Collision. Everything goes well while in CPU. (sim_params.use_gpu_pipline = False)
    [ Placeholder for video, it will be attached in comment, cuz I’m a new user. ]
    The collision with moving objects is ignored while in GPU. (sim_params.use_gpu_pipline = True)


    The only difference in code for the above two is the value of sim_params.use_gpu_pipline.

  2. Wrong position of actors that are created with only-one link URDF.
    The position of an actor will have an offset that is relating with the value of collision.origin.xyz of the only link element in the URDF. For example:

<?xml version="1.0" ?><robot name="simple_table">
    <link name="base">
        <visual>
            <origin rpy="1.571 0 0" xyz="0.000 0.000 0.000"/>
            <geometry>
                <mesh filename="chair.obj" scale="0.050 0.050 0.050"/>
            </geometry>
        </visual>
        <collision>
            <origin rpy="0 0 0" xyz="0.000 0.000 1.000"/>
            <geometry>
                <box size="1.000 0.900 1.500"/>
            </geometry>
        </collision>
    </link>
</robot>

The above URDF will be rendered perfectly good while use_gpu_pipepine = False. But it has a offset while use_gpu_pipeline = True.


As I said in the ticket description, attaching video here.

Hi @qi_xiaofeng,

We’ll take a look. Do you have a chance to share the python script and the assets you used?