robosuite icon indicating copy to clipboard operation
robosuite copied to clipboard

input_ref_frame controller config parameter not working

Open jarkenau opened this issue 7 months ago • 3 comments

System Info

Up-to-date master branch locally installed (pip install -e .) on macOS.

Information

When using the OSC_Pose controller with a robot arm, specifying the arm position relative to the base with the input_ref_frame parameter does not work:

...
"right": {
    "type": "OSC_POSE",
    "input_max": 1,
    "input_min": -1,
    "output_max": [0.05, 0.05, 0.05, 0.5, 0.5, 0.5],
    "output_min": [-0.05, -0.05, -0.05, -0.5, -0.5, -0.5],
    "kp": 150,
    "damping_ratio": 1,
    "impedance_mode": "fixed",
    "kp_limits": [0, 300],
    "damping_ratio_limits": [0, 10],
    "position_limits": null,
    "orientation_limits": null,
    "uncouple_pos_ori": true,
    "input_type": "delta",
    "input_ref_frame": "base",
    "interpolation": null,
    "ramp_ratio": 0.2,
    "gripper": {
        "type": "GRIP"
    }
},
...

If the base is moved, the arms try to stay in their global position, as can be seen here:

https://github.com/user-attachments/assets/c4c526b1-fee9-4749-a68f-a8f65c5cc863

Reproduction

Steps to reproduce:

  1. Run python3 robosuite/scripts/collect_human_demonstrations.py --robot Tiago --rot-sensitivity 8.0
  2. Use esc to quit the static position and get a better viewing angle
  3. Go into base mode with b and rotate the base with o or p

Expected behavior

The arms should stay in the same position relative to the base.

jarkenau avatar Jun 02 '25 12:06 jarkenau

The feature was introduced in https://github.com/ARISE-Initiative/robosuite/commit/db953629d796fb318da99f828f4411dc88d85f32 by @snasiriany. I’ve reviewed the code but didn’t spot any clear bugs — though it’s possible I’m misunderstanding something. I’d be happy to contribute, but I might need some guidance.

jarkenau avatar Jun 16 '25 21:06 jarkenau

CC @snasiriany seems like a bug, if you could look into this would be great!

kevin-lin-nvidia avatar Jun 16 '25 21:06 kevin-lin-nvidia

I have encountered the same issue, which seems to be related to something more low-level. I use an OmronMobileBase and a Panda arm. I first encountered this problem when using OSC_POS, but even after I switched the controller to JOINT_POSITION, and when controlling, used action = np.zeros(12) with action[10] = 0.05 to make only the base rotate, the problem still persists. This seems to be a very serious bug.

CC @snasiriany seems like a bug, if you could look into this would be great!

scc97 avatar Jul 23 '25 11:07 scc97