-- 8ce7d8199ace95d0f429b0ca9169d290d167cee1 by Anas <anaselghoudane@gmail.com>: Use box midpoint to choose finite-difference direction in jacobian_fd When bounds are provided, `jacobian_fd` chooses each coordinate's finite-difference direction so the perturbation steps away from the nearer bound. It compared `x` against `0.5 * (bounds[1] - bounds[0])`, which is half the box *width*, not the box midpoint. For bounds that are not centered on the origin this selects the wrong direction, and at the lower bound the perturbation steps outside the box. Compare against the midpoint `0.5 * (bounds[0] + bounds[1])` instead. Adds a regression test checking that all residual evaluations stay within an off-center box when `x` is at the lower bound; it fails before this change and passes after. -- cfa085484c30df808362898e322de8adc6660b59 by Kevin Zakka <kevinarmandzakka@gmail.com>: Expand jacobian_fd bounds test and avoid midpoint overflow Use the distributive form `0.5*lo + 0.5*hi` instead of `0.5*(lo+hi)` to avoid overflow for extreme bound values. Expand the single-case test into a parameterized subTest covering all four boundary positions (lower/upper of positive and negative off-center boxes), and rename it to `test_jacobian_fd_respects_bounds`. COPYBARA_INTEGRATE_REVIEW=https://github.com/google-deepmind/mujoco/pull/3301 from Nas01010101:fix/minimize-fd-box-midpoint cfa085484c30df808362898e322de8adc6660b59 PiperOrigin-RevId: 933224876 Change-Id: I833cfe3324876cdeb7ca680c23d1d8a4d16adcf1
MuJoCo Python Bindings
This package is the canonical Python bindings for the MuJoCo physics engine. These bindings are developed and maintained by Google DeepMind, and is kept up-to-date with the latest developments in MuJoCo itself.
The mujoco package provides direct access to raw MuJoCo C API functions,
structs, constants, and enumerations. Structs are provided as Python classes,
with Pythonic initialization and deletion semantics.
It is not the aim of this package to provide fully fledged
scene/environment/game authoring API, as there are already a number of existing
packages that do this well. However, this package does provide a number of
lower-level components outside of MuJoCo itself that are likely to be useful to
most users who access MuJoCo through Python. For example, the egl, glfw, and
osmesa subpackages contain utilities for setting up OpenGL rendering contexts.
Installation
The recommended way to install this package is via PyPI:
pip install mujoco
A copy of the MuJoCo library is provided as part of the package and does not need to be downloaded or installed separately.
Source
IMPORTANT: Building from source is only necessary if you are modifying the Python bindings (or are trying to run on exceptionally old Linux systems). If that's not the case, then we recommend installing the prebuilt binaries from PyPI.
If you need to build the Python bindings from source, please consult the documentation.
Usage
Once installed, the package can be imported via import mujoco. Please consult
our documentation for
further detail on the package's API.
We recommend going through the tutorial notebook which covers the basics of
MuJoCo using Python:
Versioning
The major.minor.micro portion of the version number matches the version of
MuJoCo that the bindings provide. Optionally, if we release updates to the
Python bindings themselves that target the same version of MuJoCo, a .postN
suffix is added, for example 2.1.2.post2 represents the second update to the
bindings for MuJoCo 2.1.2.
License and Disclaimer
Copyright 2022 DeepMind Technologies Limited
MuJoCo and its Python bindings are licensed under the Apache License, Version 2.0. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.
This is not an officially supported Google product.