Remove _full_compat from MJX io.
PiperOrigin-RevId: 817337868 Change-Id: Ic61b8d57937452371b85416c624ff2672c908aac
This commit is contained in:
committed by
Copybara-Service
parent
50e163748d
commit
192da87475
@@ -18,6 +18,7 @@ General
|
|||||||
in a future release.
|
in a future release.
|
||||||
|
|
||||||
**Migration:** Replace ``meshdir`` and ``texturedir`` with ``compiler.meshdir`` and ``compiler.texturedir``.
|
**Migration:** Replace ``meshdir`` and ``texturedir`` with ``compiler.meshdir`` and ``compiler.texturedir``.
|
||||||
|
- Remove ``_full_compat`` from ``mjx.put_data`` and ``mjx.put_model``.
|
||||||
|
|
||||||
- Joint decorators and spatial tendons which have limits defined and whose current value (angle or length) exceeds the
|
- Joint decorators and spatial tendons which have limits defined and whose current value (angle or length) exceeds the
|
||||||
limit, are recolored by using the :ref:`constraint impedance<soParameters>` :math:`d` to mix the existing color with
|
limit, are recolored by using the :ref:`constraint impedance<soParameters>` :math:`d` to mix the existing color with
|
||||||
|
|||||||
@@ -493,7 +493,6 @@ def put_model(
|
|||||||
m: mujoco.MjModel,
|
m: mujoco.MjModel,
|
||||||
device: Optional[jax.Device] = None,
|
device: Optional[jax.Device] = None,
|
||||||
impl: Optional[Union[str, types.Impl]] = None,
|
impl: Optional[Union[str, types.Impl]] = None,
|
||||||
_full_compat: bool = False, # pylint: disable=invalid-name
|
|
||||||
) -> types.Model:
|
) -> types.Model:
|
||||||
"""Puts mujoco.MjModel onto a device, resulting in mjx.Model.
|
"""Puts mujoco.MjModel onto a device, resulting in mjx.Model.
|
||||||
|
|
||||||
@@ -501,27 +500,14 @@ def put_model(
|
|||||||
m: the model to put onto device
|
m: the model to put onto device
|
||||||
device: which device to use - if unspecified picks the default device
|
device: which device to use - if unspecified picks the default device
|
||||||
impl: implementation to use
|
impl: implementation to use
|
||||||
_full_compat: put all MjModel fields onto device irrespective of MJX support
|
|
||||||
This is an experimental feature. Avoid using it for now.
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
an mjx.Model placed on device
|
an mjx.Model placed on device
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
ValueError: if impl is not supported
|
ValueError: if impl is not supported
|
||||||
DeprecationWarning: if _full_compat is True
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if _full_compat:
|
|
||||||
warnings.warn(
|
|
||||||
'mjx.put_model(..., _full_compat=True) is deprecated and will be'
|
|
||||||
' removed in MuJoCo >=3.4. Use mjx.put_model(..., impl=types.Impl.C)'
|
|
||||||
' instead.',
|
|
||||||
DeprecationWarning,
|
|
||||||
stacklevel=2,
|
|
||||||
)
|
|
||||||
impl = types.Impl.C
|
|
||||||
|
|
||||||
impl, device = _resolve_impl_and_device(impl, device)
|
impl, device = _resolve_impl_and_device(impl, device)
|
||||||
if impl == types.Impl.JAX:
|
if impl == types.Impl.JAX:
|
||||||
return _put_model_jax(m, device)
|
return _put_model_jax(m, device)
|
||||||
@@ -899,9 +885,6 @@ def make_data(
|
|||||||
m: the model to use
|
m: the model to use
|
||||||
device: which device to use - if unspecified picks the default device
|
device: which device to use - if unspecified picks the default device
|
||||||
impl: implementation to use ('jax', 'warp')
|
impl: implementation to use ('jax', 'warp')
|
||||||
_full_compat: put all fields onto device irrespective of MJX support This is
|
|
||||||
an experimental feature. Avoid using it for now. If using this flag, also
|
|
||||||
use _full_compat for put_model.
|
|
||||||
nconmax: maximum number of contacts to allocate for warp across all worlds
|
nconmax: maximum number of contacts to allocate for warp across all worlds
|
||||||
Since the number of worlds is **not** pre-defined in JAX, we use the
|
Since the number of worlds is **not** pre-defined in JAX, we use the
|
||||||
`nconmax` argument to set the upper bound for the number of contacts
|
`nconmax` argument to set the upper bound for the number of contacts
|
||||||
@@ -915,17 +898,7 @@ def make_data(
|
|||||||
Raises:
|
Raises:
|
||||||
ValueError: if the model's impl does not match the make_data impl
|
ValueError: if the model's impl does not match the make_data impl
|
||||||
NotImplementedError: if the impl is not implemented yet
|
NotImplementedError: if the impl is not implemented yet
|
||||||
DeprecationWarning: if _full_compat is used
|
|
||||||
"""
|
"""
|
||||||
if _full_compat:
|
|
||||||
warnings.warn(
|
|
||||||
'mjx.make_data(..., _full_compat=True) is deprecated. Use'
|
|
||||||
' mjx.make_data(..., impl=types.Impl.C) instead.',
|
|
||||||
DeprecationWarning,
|
|
||||||
stacklevel=2,
|
|
||||||
)
|
|
||||||
impl = types.Impl.C
|
|
||||||
|
|
||||||
impl, device = _resolve_impl_and_device(impl, device)
|
impl, device = _resolve_impl_and_device(impl, device)
|
||||||
|
|
||||||
if isinstance(m, types.Model) and m.impl != impl:
|
if isinstance(m, types.Model) and m.impl != impl:
|
||||||
@@ -1231,7 +1204,6 @@ def put_data(
|
|||||||
impl: Optional[Union[str, types.Impl]] = None,
|
impl: Optional[Union[str, types.Impl]] = None,
|
||||||
nconmax: int = -1,
|
nconmax: int = -1,
|
||||||
njmax: int = -1,
|
njmax: int = -1,
|
||||||
_full_compat: bool = False, # pylint: disable=invalid-name
|
|
||||||
) -> types.Data:
|
) -> types.Data:
|
||||||
"""Puts mujoco.MjData onto a device, resulting in mjx.Data.
|
"""Puts mujoco.MjData onto a device, resulting in mjx.Data.
|
||||||
|
|
||||||
@@ -1242,23 +1214,11 @@ def put_data(
|
|||||||
impl: implementation to use ('jax', 'warp')
|
impl: implementation to use ('jax', 'warp')
|
||||||
nconmax: maximum number of contacts to allocate for warp
|
nconmax: maximum number of contacts to allocate for warp
|
||||||
njmax: maximum number of constraints to allocate for warp
|
njmax: maximum number of constraints to allocate for warp
|
||||||
_full_compat: put all MjModel fields onto device irrespective of MJX support
|
|
||||||
This is an experimental feature. Avoid using it for now. If using this
|
|
||||||
flag, also use _full_compat for put_model.
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
an mjx.Data placed on device
|
an mjx.Data placed on device
|
||||||
"""
|
"""
|
||||||
del nconmax, njmax
|
del nconmax, njmax
|
||||||
if _full_compat:
|
|
||||||
warnings.warn(
|
|
||||||
'mjx.put_data(..., _full_compat=True) is deprecated. Use'
|
|
||||||
' mjx.put_data(..., impl=types.Impl.C) instead.',
|
|
||||||
DeprecationWarning,
|
|
||||||
stacklevel=2,
|
|
||||||
)
|
|
||||||
impl = types.Impl.C
|
|
||||||
|
|
||||||
impl, device = _resolve_impl_and_device(impl, device)
|
impl, device = _resolve_impl_and_device(impl, device)
|
||||||
if impl == types.Impl.JAX:
|
if impl == types.Impl.JAX:
|
||||||
return _put_data_jax(m, d, device)
|
return _put_data_jax(m, d, device)
|
||||||
|
|||||||
@@ -790,33 +790,6 @@ class DataIOTest(parameterized.TestCase):
|
|||||||
self.assertEqual(dx[0]._impl.contact__dist.shape, (dx._impl.naconmax,))
|
self.assertEqual(dx[0]._impl.contact__dist.shape, (dx._impl.naconmax,))
|
||||||
|
|
||||||
|
|
||||||
class FullCompatTest(parameterized.TestCase):
|
|
||||||
"""Tests for the _full_compat flag."""
|
|
||||||
|
|
||||||
def test_full_compat_deprecated(self):
|
|
||||||
"""Tests that _full_compat is deprecated."""
|
|
||||||
xml = """
|
|
||||||
<mujoco>
|
|
||||||
<worldbody>
|
|
||||||
<body name="box">
|
|
||||||
<joint name="slide1" type="slide" axis="1 0 0" />
|
|
||||||
<geom type="box" size=".05 .05 .05" mass="1"/>
|
|
||||||
</body>
|
|
||||||
</worldbody>
|
|
||||||
<actuator>
|
|
||||||
<motor joint="slide1"/>
|
|
||||||
</actuator>
|
|
||||||
</mujoco>
|
|
||||||
"""
|
|
||||||
m = mujoco.MjModel.from_xml_string(xml)
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
out = mjx_io.put_model(m, _full_compat=True)
|
|
||||||
self.assertEqual(out.impl, Impl.C)
|
|
||||||
with self.assertWarns(DeprecationWarning):
|
|
||||||
out = mjx_io.make_data(m, _full_compat=True)
|
|
||||||
self.assertEqual(out.impl, Impl.C)
|
|
||||||
|
|
||||||
|
|
||||||
# Test cases for `_resolve_impl_and_device` where the device is
|
# Test cases for `_resolve_impl_and_device` where the device is
|
||||||
# specified by the user and the device is available.
|
# specified by the user and the device is available.
|
||||||
_DEVICE_TEST_CASES = [
|
_DEVICE_TEST_CASES = [
|
||||||
|
|||||||
Reference in New Issue
Block a user