Collision torque applies to prismatic joints instead of stopping the swinging revolute joint #2744
Unanswered
kankanzheli
asked this question in
Asking for Help
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Intro
I’m using MuJoCo (v3.3.x) for reinforcement learning on a 6-DOF manipulator. I drive the robot by directly setting joint velocities (data.qvel) to avoid slow acceleration transients. When I swing the end-effector via joint4 into a rigid object, I observe:
Expected behavior: Upon collision, joint4’s motion should be resisted first, causing joint4 to slow down or stop, while the prismatic joints (x, y, z1, z2, z3) remain essentially fixed.
Actual behavior: Joint4 continues its commanded velocity, while the collision impulse is instead transferred to the prismatic joints, which move in the opposite direction to “make room” for joint4’s motion—eventually causing visible geometry penetration when their masses are high.
I find this counter‐intuitive: in real physics, the colliding swinging link should halt and the base prismatic slides should stay in place.
My setup
MuJoCo version: 3.3.0 (pip wheel)
OS: Ubuntu 22.04
Python: 3.10
My question
Model: A 6-DOF arm with revolute joints 5–6–3–4 at the wrist and prismatic joints x, y, z1, z2, z3 as the base.
Control: In Python, every simulation step I do:
python
"""
data.qvel[joint4_dof] = v_desired
mujoco.mj_step(model, data)
"""
Collision: Attach a small geom on joint4’s link and collide it with a static obstacle under default contact solref/solimp.
Mass adjustment: I increased the mass of the prismatic links (x, y, z1, z2, z3) substantially, leaving the wrist links’ masses unchanged. The strange behavior persists, and penetration worsens.
Minimal model and/or code that explain my question
Model:
Confirmations
Beta Was this translation helpful? Give feedback.
All reactions