Fix computation of tangential contact forces in MJX _decode_pyramid.
PiperOrigin-RevId: 685665382 Change-Id: Icdbba4a3ee5fec804340d73d525a36ee570c2aa8
This commit is contained in:
committed by
Copybara-Service
parent
766cd20273
commit
1945926351
@@ -25,6 +25,7 @@ MJX
|
|||||||
- Added sphere-cylinder and sphere-ellipsoid collision functions (:github:issue:`2126`).
|
- Added sphere-cylinder and sphere-ellipsoid collision functions (:github:issue:`2126`).
|
||||||
- Fixed a bug with frictionloss constraints.
|
- Fixed a bug with frictionloss constraints.
|
||||||
- Added ``TENDONPOS`` sensor.
|
- Added ``TENDONPOS`` sensor.
|
||||||
|
- Fixed a bug with the computation of tangential contact forces in ``_decode_pyramid``.
|
||||||
|
|
||||||
Bug fixes
|
Bug fixes
|
||||||
^^^^^^^^^
|
^^^^^^^^^
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ def _decode_pyramid(
|
|||||||
force = force.at[0].set(pyramid[0 : 2 * (condim - 1)].sum())
|
force = force.at[0].set(pyramid[0 : 2 * (condim - 1)].sum())
|
||||||
|
|
||||||
# force_tangent_i = (pyramid0_i - pyramid1_i) * mu_i
|
# force_tangent_i = (pyramid0_i - pyramid1_i) * mu_i
|
||||||
i = np.arange(0, condim)
|
i = np.arange(0, condim - 1)
|
||||||
force = force.at[i + 1].set((pyramid[2 * i] - pyramid[2 * i + 1]) * mu[i])
|
force = force.at[i + 1].set((pyramid[2 * i] - pyramid[2 * i + 1]) * mu[i])
|
||||||
|
|
||||||
return force
|
return force
|
||||||
|
|||||||
@@ -203,6 +203,11 @@ class SupportTest(parameterized.TestCase):
|
|||||||
force = jax.jit(support.contact_force, static_argnums=(2,))(mx, dx, j)
|
force = jax.jit(support.contact_force, static_argnums=(2,))(mx, dx, j)
|
||||||
np.testing.assert_allclose(result, force, rtol=1e-5, atol=2)
|
np.testing.assert_allclose(result, force, rtol=1e-5, atol=2)
|
||||||
|
|
||||||
|
# check for zeros after first condim elements
|
||||||
|
condim = dx.contact.dim[j]
|
||||||
|
if condim < 6:
|
||||||
|
np.testing.assert_allclose(force[condim:], 0, rtol=1e-5, atol=1e-5)
|
||||||
|
|
||||||
# test world conversion
|
# test world conversion
|
||||||
force = jax.jit(
|
force = jax.jit(
|
||||||
support.contact_force,
|
support.contact_force,
|
||||||
|
|||||||
Reference in New Issue
Block a user