From aa91f3c047d57be96c4fa39b9fa1621a21649cc0 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 21 Oct 2024 11:20:26 -0700 Subject: [PATCH] Fix bug in slider-crank transmission. The associated row in `actuator_moment` was not cleared before being updated. PiperOrigin-RevId: 688207085 Change-Id: I2f925e984c5c493e64ead66667aef57c4844acfe --- doc/changelog.rst | 5 ++++- src/engine/engine_core_smooth.c | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index 22b14cad..2f05ba5a 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -7,10 +7,13 @@ Upcoming version (not yet released) MJX ^^^ - - Added ``apply_ft``, ``jac``, and ``xfrc_accumulate`` as public functions. - Added ``TOUCH`` sensor. +Bug fixes +^^^^^^^^^ +- Fixed a bug in slider-crank ref:`transmission`. The bug was introduced in 3.0.0. + Version 3.2.4 (Oct 15, 2024) ---------------------------- diff --git a/src/engine/engine_core_smooth.c b/src/engine/engine_core_smooth.c index 1b554ee6..be191d37 100644 --- a/src/engine/engine_core_smooth.c +++ b/src/engine/engine_core_smooth.c @@ -1000,6 +1000,9 @@ void mj_transmission(const mjModel* m, mjData* d) { mj_jacSite(m, d, jac, 0, id); mju_subFrom(jac, jacS, 3*nv); + // clear moment + mju_zero(moment+i*nv, nv); + // apply chain rule for (int j=0; j < nv; j++) { for (int k=0; k < 3; k++) {