isaac-sim/OmniIsaacGymEnvs

When using Go1 USD model collisions do not work.

Robokan opened this issue · 7 comments

If I use the go1.usd instead of Anymal in the Anymal task (I have carefully set up all the joints correctly) It falls right though the ground plane during training. If I use the a1.usd instead it doesn't fall though the ground plane during training but does fall though during testing. Ironically the go1.usd does the opposite. It falls though on training but works fine during testing. What's going on here? How to go about debugging the collision detection.

Only thing I can think of is there is the warning:

[Warning] [omni.physx.plugin] PhysicsUSD: Prim at path /World/envs/env_0/go1/RL_hip/collisions is using obsolete 'customGeometry' attribute. To toggle custom geometry for cylinders, use the physics settings option.

How do you set this setting?

Hi there, thanks for reporting the issue. We are aware of the collision issue with the Go1 asset and are investigating the cause. If you would like to workaround the issue, you can try adding the following snippet in the post_reset() method:

import omni.usd
stage = omni.usd.get_context().get_stage()
ground_prim = stage.GetPrimAtPath("/World/defaultGroundPlane/GroundPlane/CollisionPlane")
ground_prim.GetAttribute("physics:collisionEnabled").Set(False)
ground_prim.GetAttribute("physics:collisionEnabled").Set(True)

Great that works. Let me know when you get a fix.

I have the research version of the Go1 and am working to transfer a NN to it via ROS. If you have links to any resources that would helpful it would be very much appreciated.

Do you have a fix for AnimalTerrain with the Go1? It also falls through all the terrain. Enabling and Disabling of the terrain doesn't seem to work.

@Robokan can you by chance share your go1.usd file? I also am trying to train the Go1 in the Anymal environment and having some issues

You can get it from the Nucleus server. Its under:
local host -> NVIDIA -> assets -> Isaac -> 2022.1.1 -> isaac -> robots -> unitree -> go1.usd

For performance reasons you will want to make it "instanceable". Copy it to your local library and call this function to convert it. Then just load the instanceable one.

convert_asset_instanceable(
asset_usd_path="omniverse://localhost/Library/go1.usd",
source_prim_path="/",
save_as_path="omniverse://localhost/Library/go1-instanceable.usd"
)

@djhanove did this work for you?
When I do this @Robokan it seems the file size are the same 60MB
I wrote about this here: Issue 55

It does make 2 files the same size, but if you try it out as far as I can tell it uses less GPU. Have you tried to compare GPU usage?