I have an environment setup in OIGE that initially generates 5 parcels as DynamicCuboids, clones them to the specified amount of environments , and finally wraps them around their respective RigidPrimView. Every time I reset the environment I want to move those cuboids to their original positions and change their dimensions.
For this purpose, I defined this toy function that uses the set_local_scales() method:
def move_parcel(self, ids, pos, rot, vel, parcels, reset=False):
ids_64 = ids.to(dtype=torch.int64)
ids_32 = ids.to(dtype=torch.int32)
if reset == True:
old_scales = parcels.get_local_scales()
new_scales = old_scales.clone()
new_scales[:,1] = new_scales[:,1] * 2
parcels.set_local_scales(
scales=new_scales,
indices=ids)
parcels.set_world_poses(
positions=pos[ids_64],
orientations=rot[ids_64],
indices=ids)
parcels.set_velocities(
velocities=vel[ids_64],
indices=ids_32)
However, when running the simulation the following error shows up:
[Error] [omni.physx.plugin] PhysX error: PxRigidDynamic::setGlobalPose: pose is not valid.
What have I tried?
When printing old_scales the output is:
tensor([[0.2000, 0.3000, 0.4000],
[0.2000, 0.3000, 0.4000]], device='cuda:0')
And new_scales (as one would expect):
tensor([[0.2000, 0.6000, 0.4000],
[0.2000, 0.6000, 0.4000]], device='cuda:0')
Moreover, when giving old_scales (without modification) as an input to the set_local_scales() it does work.
parcels.set_local_scales(
scales=old_scales,
indices=ids)
I am using IsaacSim 2022.2.1
What I am doing wrong when modifying the new_scales parameter?