Setting target state for 6-DOF (floating) joint

Hello,

I’ve been trying to setup a manipulation environment, similar to the soft_body.py example, where instead of pressing the body along 1-axis (prismatic, 1-DOF), I want my end-effector to be able to move along 6-DOFs, so that it can experiment with different interaction strategies (parameterized by position & orientation), before converging to the optimal one.

I’ve been trying to setup this simulation by modifying the soft_body.py example, to have the “rail” be a floating type joint. However I cannot find an example of how to work with such a joint in Isaac, and I am not sure on how to set a pose target for such a joint, similar to how one sets a position target for a 1-DOF prismatic joint.

I would really appreciate some directions on how to use the Preview 3 Gym API to achieve the above. I would also be glad to hear a suggestion of an alternative end-effector design to achieve the aforementioned 6-DOF behaviour.

1 Like

Did you figure out how to do this? I am stuck on a similar issue

1 Like

Has anyone figured out how to do this yet?

I recommend you use the following methods to deal with the floating joint.

  1. DO NOT use floating anymore and pick out the child link of the floating joint, build a new URDF file for the floating child, and then import the child link as an independent actor. It is permitted to manage more than one root actor in an environment.
  2. then you can use “gym.acquire_actor_root_state_tensor(sim)” or "gym.set_actor_root_state_tensor(sim, state tensor)” to observe and control the state of that independent actor. Besides, the state tensor has a shape of (num_env, num_actor, 13), and the 13 variables represents the position([0:3]), rotation([3:7]), linear velocity([7:10]), and angular velocity([10:13]).

Best wishes.