jaco_three_finger_gripper.xml: force_ee / torque_ee sensors produce extreme readings (~1.9×10¹⁷) in the default initial state
Summary
In jaco_three_finger_gripper.xml both the force_ee and torque_ee sensors are attached to the ft_frame site. In the robot's default initial state (immediately after mj_resetData() + mj_forward(), with zero control input) these sensors report values on the order of 1.9×10¹⁷, which is far outside any physically meaningful range.
Other gripper assets in the same repository (robotiq_gripper_140.xml, robotiq_gripper_s.xml, wiping_gripper.xml, xarm7_gripper.xml) do not exhibit this problem.
Environment
Minimal Reproduction
import mujoco, numpy as np
# Clone the repository and point this path at the gripper XML:
model = mujoco.MjModel.from_xml_path("robosuite/models/assets/grippers/jaco_three_finger_gripper.xml")
data = mujoco.MjData(model)
mujoco.mj_resetData(model, data)
mujoco.mj_forward(model, data)
# Locate the two sensors
for name in ("force_ee", "torque_ee"):
sid = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, name)
adr = model.sensor_adr[sid]
dim = model.sensor_dim[sid]
vals = data.sensordata[adr : adr + dim]
print(f"{name}: max_abs = {np.abs(vals).max():.3e}")
Expected output:
force_ee: max_abs = O(1e0) # physically reasonable
torque_ee: max_abs = O(1e0)
Actual output:
force_ee: max_abs ≈ 1.9e+17 # physically absurd
torque_ee: max_abs ≈ 3.4e+15
Root Cause
The sensors reference the ft_frame site, which appears to be a force/torque sensor mounting frame located at the gripper base. The large offset from the gripper fingers, combined with internal contact/tendon forces that act at the fingertip, produces a huge moment arm and therefore an astronomically large torque reading. The intended site for end-effector force/torque is grip_site.
Suggested Fix
<!-- Before -->
<force name="force_ee" site="ft_frame"/>
<torque name="torque_ee" site="ft_frame"/>
<!-- After -->
<force name="force_ee" site="grip_site"/>
<torque name="torque_ee" site="grip_site"/>
After the fix, max_abs drops from ≈1.9×10¹⁷ to 0 in the default state.
| Sensor |
Before site |
After site |
force_ee |
ft_frame |
grip_site |
torque_ee |
ft_frame |
grip_site |
Impact
Any policy or algorithm that reads force_ee or torque_ee as part of its observation will receive astronomically large values from the very first step, potentially causing NaN propagation, unstable normalization, or silent training divergence.
How This Was Discovered
Found via automated MJCF asset validation: a consistency checker loaded each gripper model, ran mj_forward(), and compared sensor outputs across all grippers in the repository. The Jaco three-finger gripper was the only model with sensor readings more than 10 orders of magnitude above the others.
jaco_three_finger_gripper.xml:force_ee/torque_eesensors produce extreme readings (~1.9×10¹⁷) in the default initial stateSummary
In
jaco_three_finger_gripper.xmlboth theforce_eeandtorque_eesensors are attached to theft_framesite. In the robot's default initial state (immediately aftermj_resetData()+mj_forward(), with zero control input) these sensors report values on the order of 1.9×10¹⁷, which is far outside any physically meaningful range.Other gripper assets in the same repository (
robotiq_gripper_140.xml,robotiq_gripper_s.xml,wiping_gripper.xml,xarm7_gripper.xml) do not exhibit this problem.Environment
robosuite/models/assets/grippers/jaco_three_finger_gripper.xmlaaa8b9b214ce8e77e82926d677b4d61d55e577abMinimal Reproduction
Expected output:
Actual output:
Root Cause
The sensors reference the
ft_framesite, which appears to be a force/torque sensor mounting frame located at the gripper base. The large offset from the gripper fingers, combined with internal contact/tendon forces that act at the fingertip, produces a huge moment arm and therefore an astronomically large torque reading. The intended site for end-effector force/torque isgrip_site.Suggested Fix
After the fix,
max_absdrops from≈1.9×10¹⁷to0in the default state.force_eeft_framegrip_sitetorque_eeft_framegrip_siteImpact
Any policy or algorithm that reads
force_eeortorque_eeas part of its observation will receive astronomically large values from the very first step, potentially causing NaN propagation, unstable normalization, or silent training divergence.How This Was Discovered
Found via automated MJCF asset validation: a consistency checker loaded each gripper model, ran
mj_forward(), and compared sensor outputs across all grippers in the repository. The Jaco three-finger gripper was the only model with sensor readings more than 10 orders of magnitude above the others.