Current Progress

Known Issues

For warp.sim-integration:

  • The soft bodies must be added after affine bodies. This is due to the unseparated ModelBuilder from ASRModel.

  • The renderer will show wrong visulizations. This requires bug fixes

  • Currently warp.sim.Control is not supported. Control APIs are exposed in the ASRModel class. This will be fixed.

Force Loading Modules and Kernels from Cache

Currently, some kernels and modules are not open-sourced. Our fork of NVIDIA Warp will load the PTX files from ptx/ for them. This is how this is implemented:

In warp/context.py, we have hash disabled if its name (for modules) / key (for kernels) starts with a certain strings. The strings are specified by the WARP_DISABLE_HASH_PREFIX environment variable (separated by comma ,), and is ["warp_ipc"] by default to disable hashing for our abd kernels and modules. warp kernels and modules will not be effected.

The modification is done by the following liness for Module (and similarly for Kernel):

class Module:
    disable_hash: bool = False

    def __init__(self, name: Optional[str], loader=None):
        # ...

        for prefix in [m.strip() for m in os.environ.get("WARP_DISABLE_HASH_PREFIX", "warp_ipc").split(",")]:
            if self.name.startswith(prefix):
                self.disable_hash = True
                print(f"Prefix {prefix} hit. Disabling hashing for module {self.name}")
                break
    # ...

Development To-Dos

  • [x] Initial version of Warp-IPC

  • [x] The Robot and TactileRobot classes for robot management

  • [ ] Compatibility with warp.sim.Model

  • [ ] Compatibility with warp.sim.Integrator

  • [ ] Flexible soft / affine body importing

  • [ ] Demos

    • [x] Paralleled soft body grasping test

    • [x] Tac-Man, with tactile signal visualizations

    • [ ] Paralleled peg-insertion test