How to change the base rigid body's center of mass after the actor is loaded?


I want to change the base body’s center of mass after the actor is loaded using GPU. I tried to use the following line:

rigid_body_prop[0].com = gymapi.Vec3(0.0, 1.0, 1.0)
self.gym.set_actor_rigid_body_properties(self.envs[env_id], self.actor_handles[env_id], rigid_body_prop, recomputeInertia=True)

The com is the same before and after setting the new rigid body property. I also tried to change the mass, and it worked. Is this the proper way of changing the actor’s CoM, or is it impossible after the actor is loaded?

Hi @junhong-xu-14 ,
According to the documentation for set_actor_rigid_body_properties as per Isaac Gym (1.0preivew4):

Note: Changing the center-of-mass when using the GPU pipeline is currently not supported (but mass and inertia can be changed).

This might be reason why CoM wasn’t changing. Maybe try to use the CPU ?

Hi Dear, I created a rigid_body: box. The size of the box is 0.16, 0.16. 0.16 and the default mass of this box is 4 kg, so that the robot arm can not push it. So I used function “gym.set_actor_rigid_body_properties” to change the mass of the rigid_body to 0.5kg. After doing that I used the function “get_actor_rigid_body_properties” to check the value of the mass and it is 0.5 kg, but the robot arm still can not push it. Can you tell me why?