diff --git a/.github/ISSUE_TEMPLATE/ask_for_help.md b/.github/ISSUE_TEMPLATE/ask_for_help.md index 19106a7d..e330354c 100644 --- a/.github/ISSUE_TEMPLATE/ask_for_help.md +++ b/.github/ISSUE_TEMPLATE/ask_for_help.md @@ -10,7 +10,7 @@ assignees: '' **How to ask for help** First, read our quick guide to -[asking good questions](https://github.com/deepmind/mujoco#asking-questions). +[asking good questions](https://github.com/google-deepmind/mujoco#asking-questions). Below is a template for you to use: Hi, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6960eb16..2c4672e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,10 +7,10 @@ accepting your contributions! ### Documentation, forums -Please read MuJoCo's [documentation](https://mujoco.readthedocs.io) and look +Please read MuJoCo's [documentation](https://mujoco.readthedocs.io/) and look through current topics on our GitHub -[issues](https://github.com/deepmind/mujoco/issues) and -[discussions](https://github.com/deepmind/mujoco/discussions) pages. +[issues](https://github.com/google-deepmind/mujoco/issues) and +[discussions](https://github.com/google-deepmind/mujoco/discussions) pages. ### Contributor License Agreement @@ -35,7 +35,7 @@ How to submit a good bug report: - Make it easy to reproduce the problem. If this requires a model, attach it as a zip file to the bug report. The model and steps required to reproduce the -proplem should be *minimal*, in the sense that irrelevant parts are +problem should be *minimal*, in the sense that irrelevant parts are removed. - Clearly state what is the expected behavior. @@ -54,13 +54,13 @@ What's the most recent version in which the problem doesn't happen? Before submitting an enhancement suggestion: - Check if you're using the [latest -version](https://github.com/deepmind/mujoco/releases/latest) of MuJoCo. +version](https://github.com/google-deepmind/mujoco/releases/latest) of MuJoCo. -- Perform a quick [search](https://github.com/deepmind/mujoco/issues) to see if -the enhancement has already been suggested. If it has, add a comment to the -existing issue instead of opening a new one. +- Perform a quick [search](https://github.com/google-deepmind/mujoco/issues) to +see if the enhancement has already been suggested. If it has, add a comment to +the existing issue instead of opening a new one. -How to submit a good enhacement suggestion: +How to submit a good enhancement suggestion: - Use a clear and descriptive title. diff --git a/README.md b/README.md index e1d7dd9d..62eafb7e 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@

- - + + - - + +

@@ -50,10 +50,11 @@ your machine. If you are a Python user, you might want to start with our tutorial notebooks running on Google Colab: - - The first tutorial focuses on the basics of MuJoCo: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/tutorial.ipynb) + - The first tutorial focuses on the basics of MuJoCo: + [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb) - For a more advanced example, see the LQR tutorial which creates an LQR controller to balance a humanoid on one leg using MuJoCo's dynamics - derivatives: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/LQR.ipynb) + derivatives: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/LQR.ipynb) ## Installation @@ -93,10 +94,10 @@ and [style guide](STYLEGUIDE.md). ## Asking Questions Questions and requests for help are welcome on the GitHub -[Issues](https://github.com/deepmind/mujoco/issues) page and should focus on a specific problem -or question. +[Issues](https://github.com/google-deepmind/mujoco/issues) page and should focus +on a specific problem or question. -[Discussions](https://github.com/deepmind/mujoco/discussions) should +[Discussions](https://github.com/google-deepmind/mujoco/discussions) should address wider concerns that might require input from multiple participants. Here are some guidelines for asking good questions: @@ -142,10 +143,10 @@ These packages give users of various languages access to MuJoCo functionality: #### First-party bindings: - [Python bindings](https://mujoco.readthedocs.io/en/stable/python.html) - - [dm_control](https://github.com/deepmind/dm_control), Google DeepMind's - related environment stack, includes - [PyMJCF](https://github.com/deepmind/dm_control/blob/main/dm_control/mjcf/README.md), - a module for procedural manipulation of MuJoCo models. + - [dm_control](https://github.com/google-deepmind/dm_control), Google + DeepMind's related environment stack, includes + [PyMJCF](https://github.com/google-deepmind/dm_control/blob/main/dm_control/mjcf/README.md), + a module for procedural manipulation of MuJoCo models. - [C# bindings and Unity plug-in](https://mujoco.readthedocs.io/en/stable/unity.html) #### Third-party bindings: @@ -191,7 +192,7 @@ If you use MuJoCo for published research, please cite: Copyright 2021 DeepMind Technologies Limited. -Box collision code ([`engine_collision_box.c`](https://github.com/deepmind/mujoco/blob/main/src/engine/engine_collision_box.c)) +Box collision code ([`engine_collision_box.c`](https://github.com/google-deepmind/mujoco/blob/main/src/engine/engine_collision_box.c)) is Copyright 2016 Svetoslav Kolev. ReStructuredText documents, images, and videos in the `doc` directory are made @@ -207,8 +208,8 @@ This is not an officially supported Google product. [build from source]: https://mujoco.readthedocs.io/en/latest/programming#building-mujoco-from-source [Getting Started]: https://mujoco.readthedocs.io/en/latest/programming#getting-started [Unity]: https://unity.com/ -[releases page]: https://github.com/deepmind/mujoco/releases -[GitHub Issues]: https://github.com/deepmind/mujoco/issues +[releases page]: https://github.com/google-deepmind/mujoco/releases +[GitHub Issues]: https://github.com/google-deepmind/mujoco/issues [mujoco.readthedocs.io]: https://mujoco.readthedocs.io [changelog]: https://mujoco.readthedocs.io/en/latest/changelog.html [Python bindings]: https://mujoco.readthedocs.io/en/stable/python.html#python-bindings diff --git a/STYLEGUIDE.md b/STYLEGUIDE.md index c6595f6d..5c97f0be 100644 --- a/STYLEGUIDE.md +++ b/STYLEGUIDE.md @@ -58,7 +58,7 @@ spot such a pattern, feel free to send a PR to update the guide. Line length is 100 characters. In rare situations, like the collision table at the top of -[engine_collision_driver.c](https://github.com/deepmind/mujoco/blob/c8ff7b3d341560e8cc33fbdcaffbcdbc4c32327c/src/engine/engine_collision_driver.c#L36), +[engine_collision_driver.c](https://github.com/google-deepmind/mujoco/blob/c8ff7b3d341560e8cc33fbdcaffbcdbc4c32327c/src/engine/engine_collision_driver.c#L36), longer lines are allowed for readability. #### Comments @@ -99,7 +99,7 @@ including for one-line blocks: - Brace-less single line statements are allowed outside of `engine/` code, for similar, repeated blocks, that do not contain flow control statements (`return`, `continue`, etc.). For an example of this exception, inspect the [`mjCModel` -destructor](https://github.com/deepmind/mujoco/search?q=repo%3Adeepmind%2Fmujoco+filename%3Auser_model.cc). +destructor](https://github.com/google-deepmind/mujoco/search?q=repo%3Adeepmind%2Fmujoco+filename%3Auser_model.cc). - Unattached braces are allowed in `if/else` blocks, when inserting a comment before the `else`: diff --git a/doc/APIreference/APIfunctions.rst b/doc/APIreference/APIfunctions.rst index 48464ae2..81a01e6d 100644 --- a/doc/APIreference/APIfunctions.rst +++ b/doc/APIreference/APIfunctions.rst @@ -4,8 +4,8 @@ Functions ========= -The main header `mujoco.h `_ exposes a large -number of functions. However the functions that most users are likely to need are a small fraction. +The main header `mujoco.h `_ exposes a +large number of functions. However the functions that most users are likely to need are a small fraction. API function can be classified as: diff --git a/doc/APIreference/APIglobals.rst b/doc/APIreference/APIglobals.rst index 7bdea7c7..9f8fddc5 100644 --- a/doc/APIreference/APIglobals.rst +++ b/doc/APIreference/APIglobals.rst @@ -368,9 +368,9 @@ Numeric constants Many integer constants were already documented in the primitive types above. In addition, the header files define several other constants documented here. Unless indicated otherwise, each entry in the table below is defined in -`mjmodel.h `_. Note that some extended key codes -are defined in `mjui.h `_ which are not shown in the -table below. Their names are in the format ``mjKEY_XXX``. They correspond to GLFW key codes. +`mjmodel.h `_. Note that some extended key +codes are defined in `mjui.h `_ which are not +shown in the table below. Their names are in the format ``mjKEY_XXX``. They correspond to GLFW key codes. .. list-table:: :widths: 2 1 8 @@ -457,60 +457,60 @@ table below. Their names are in the format ``mjKEY_XXX``. They correspond to GLF - 6 - The number of geom, site, joint, tendon and actuator groups whose rendering can be enabled and disabled via :ref:`mjvOption`. - Defined in `mjvisualize.h `_. + Defined in `mjvisualize.h `_. * - ``mjMAXOVERLAY`` - 500 - The maximal number of characters in overlay text for rendering. - Defined in `mjvisualize.h `_. + Defined in `mjvisualize.h `_. * - ``mjMAXLINE`` - 100 - The maximal number of lines per 2D figure (:ref:`mjvFigure`). - Defined in `mjvisualize.h `_. + Defined in `mjvisualize.h `_. * - ``mjMAXLINEPNT`` - 1000 - The maximal number of points in each line in a 2D figure. Note that the buffer ``mjvFigure.linepnt`` has length ``2*mjMAXLINEPNT`` because each point has X and Y coordinates. - Defined in `mjvisualize.h `_. + Defined in `mjvisualize.h `_. * - ``mjMAXPLANEGRID`` - 200 - The maximal number of grid lines in each dimension for rendering planes. - Defined in `mjvisualize.h `_. + Defined in `mjvisualize.h `_. * - ``mjNAUX`` - 10 - Number of auxiliary buffers that can be allocated in mjrContext. - Defined in `mjrender.h `_. + Defined in `mjrender.h `_. * - ``mjMAXTEXTURE`` - 1000 - Maximum number of textures allowed. - Defined in `mjrender.h `_. + Defined in `mjrender.h `_. * - ``mjMAXUISECT`` - 10 - Maximum number of UI sections. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUIITEM`` - 80 - Maximum number of items per UI section. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUITEXT`` - 500 - Maximum number of characters in UI fields 'edittext' and 'other'. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUINAME`` - 40 - Maximum number of characters in any UI name. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUIMULTI`` - 20 - Maximum number of radio and select items in UI group. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUIEDIT`` - 5 - Maximum number of elements in UI edit list. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjMAXUIRECT`` - 15 - Maximum number of UI rectangles. - Defined in `mjui.h `_. + Defined in `mjui.h `_. * - ``mjVERSION_HEADER`` - 238 - The version of the MuJoCo headers; changes with every release. This is an integer equal to 100x the software @@ -525,6 +525,6 @@ X Macros The X Macros are not needed in most user projects. They are used internally to allocate the model, and are also available for users who know how to use this programming technique. See the header file `mjxmacro.h -`_ for the actual definitions. They are +`_ for the actual definitions. They are particularly useful in writing MuJoCo wrappers for scripting languages, where dynamic structures matching the MuJoCo data structures need to be constructed programmatically. diff --git a/doc/APIreference/APItypes.rst b/doc/APIreference/APItypes.rst index de6d59ed..2fd10428 100644 --- a/doc/APIreference/APItypes.rst +++ b/doc/APIreference/APItypes.rst @@ -41,7 +41,7 @@ MuJoCo defines a large number of types: Primitive types --------------- -The two types below are defined in `mjtnum.h `_. +The two types below are defined in `mjtnum.h `_. .. _mjtNum: @@ -93,7 +93,7 @@ Enum types Model ^^^^^ -The enums below are defined in `mjmodel.h `_. +The enums below are defined in `mjmodel.h `_. .. _mjtDisableBit: @@ -343,7 +343,7 @@ These are the possible sensor data types, used in ``mjData.sensor_datatype``. Data ^^^^ -The enums below are defined in `mjdata.h `_. +The enums below are defined in `mjdata.h `_. @@ -386,7 +386,7 @@ Timer types. The number of timer types is given by ``mjNTIMER`` which is also th Visualization ^^^^^^^^^^^^^ -The enums below are defined in `mjvisualize.h `_. +The enums below are defined in `mjvisualize.h `_. .. _mjtCatBit: @@ -490,7 +490,7 @@ These are the possible stereo rendering types. They are used in ``mjvScene.stere Rendering ^^^^^^^^^ -The enums below are defined in `mjrender.h `_. +The enums below are defined in `mjrender.h `_. .. _mjtGridPos: @@ -540,7 +540,7 @@ These are the possible font types. User Interface ^^^^^^^^^^^^^^ -The enums below are defined in `mjui.h `_. +The enums below are defined in `mjui.h `_. .. _mjtButton: @@ -578,7 +578,7 @@ Item types used in the UI framework. Plugins ^^^^^^^ -The enums below are defined in `mjplugin.h `_. +The enums below are defined in `mjplugin.h `_. See :ref:`exPlugin` for details. @@ -1016,8 +1016,8 @@ Function types -------------- MuJoCo callbacks have corresponding function types. They are defined in `mjdata.h -`_ and in `mjui.h -`_. The actual callback functions are documented +`_ and in `mjui.h +`_. The actual callback functions are documented in the :doc:`globals` page. diff --git a/doc/XMLreference.rst b/doc/XMLreference.rst index ad9f85ba..c189757a 100644 --- a/doc/XMLreference.rst +++ b/doc/XMLreference.rst @@ -2635,7 +2635,7 @@ helps clarify the role of bodies and geoms in MuJoCo. The **sdf** type defines a signed distance field (SDF, also referred to as signed distance function). In order to visualize the SDF, a custom mesh must be specified using the :ref:`mesh/plugin ` attribute. See the - `model/plugin/sdf/ `__ directory for example models + `model/plugin/sdf/ `__ directory for example models with SDF geometries. For more details regarding SDF plugins, see the :ref:`Extensions chapter`. .. _body-geom-contype: @@ -4405,7 +4405,7 @@ specify them independently. When using a :at:`site` transmission, measure the translation and rotation w.r.t the frame of the :at:`refsite`. In this case the actuator *does* have length and :el:`position` actuators can be used to directly control an end effector, see `refsite.xml - `__ example + `__ example model. As above, the length is the dot product of the :at:`gear` vector and the frame difference. So ``gear="0 1 0 0 0 0"`` means "Y-offset of :at:`site` in the :at:`refsite` frame", while ``gear="0 0 0 0 0 1"`` means rotation "Z- rotation of :at:`site` in the :at:`refsite` frame". It is recommended to use a normalized :at:`gear` vector with @@ -5093,7 +5093,7 @@ This element has nine custom attributes in addition to the common attributes: This element defines an active adhesion actuator which injects forces at contacts in the normal direction, see illustration video. The model shown in the video can be found `here -`_ and includes inline annotations. The transmission target +`_ and includes inline annotations. The transmission target is a :el:`body`, and adhesive forces are injected into all contacts involving geoms which belong to this body. The force is divided equally between multiple contacts. When the :at:`gap` attribute is not used, this actuator requires active contacts and cannot apply a force at a distance, more like the active adhesion on the feet of geckos and insects rather diff --git a/doc/changelog.rst b/doc/changelog.rst index a2042087..835ab828 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -68,7 +68,7 @@ General Python bindings ^^^^^^^^^^^^^^^ -13. Fixed `#870 `__ where calling ``update_scene`` with an invalid +13. Fixed `#870 `__ where calling ``update_scene`` with an invalid camera name used the default camera. Bug fixes @@ -103,17 +103,18 @@ Python bindings 7. The :ref:`passive viewer` handle now exposes ``update_hfield``, ``update_mesh``, and ``update_texture`` methods to allow users to update renderable assets. - (`#812 `_, `#958 `_, - `#965 `_) + (`#812 `_, + `#958 `_, + `#965 `_) #. Allow a custom keyboard event callback to be specified in the :ref:`passive viewer`. - (`#766 `_) + (`#766 `_) #. Fix GLFW crash when Python exits while the passive viewer is running. - (`#790 `_) + (`#790 `_) Models ^^^^^^ -10. Added simple `car `__ example model. +10. Added simple `car `__ example model. Version 2.3.6 (June 20, 2023) @@ -129,8 +130,8 @@ Version 2.3.6 (June 20, 2023) Models ^^^^^^ -1. Added `3x3x3 cube `__ example model. See - `README `__ for details. +1. Added `3x3x3 cube `__ example model. + See `README `__ for details. Bug fixes ^^^^^^^^^ @@ -138,8 +139,8 @@ Bug fixes 2. Fixed a bug that was causing an incorrect computation of the mesh bounding box and coordinate frame if the volume was invalid. In such case, now MuJoCo only accepts a non-watertight geometry if :ref:`shellinertia` is equal to ``true``. -#. Fixed the sparse Jacobian multiplication logic that is used to compute derivatives for tendon damping and fluid force, - which affects the behaviour of the :ref:`implicit and implicitfast integrators`. +#. Fixed the sparse Jacobian multiplication logic that is used to compute derivatives for tendon damping and fluid + force, which affects the behaviour of the :ref:`implicit and implicitfast integrators`. #. Fixes to :ref:`mj_ray`, in line with geom visualisation conventions: - Planes and height-fields respect the ``geom_group`` and ``flg_static`` arguments. Before this change, rays would @@ -153,8 +154,8 @@ Bug fixes Plugins ^^^^^^^ -5. Added touch-grid sensor plugin. See `documentation `_ - for details, and associated `touch_grid.xml `_ +5. Added touch-grid sensor plugin. See `documentation `_ + for details, and associated `touch_grid.xml `_ example model. The plugin includes `in-scene visualisation `_. Simulate @@ -185,8 +186,8 @@ General #. Added :ref:`mjContact.solreffriction`, allowing different :ref:`solref` parameters for the normal and frictional axes of contacts when using :ref:`elliptic friction cones`. This attribute is required for elastic frictional collisions, see associated - `example model `__ mimicking the - spin-bounce recoil behaviour of `elastic rubber balls `__. + `example model `__ + mimicking the spin-bounce recoil behaviour of `elastic rubber balls `__. This is an advanced option currently only supported by explicit :ref:`contact pairs`, using the :ref:`solreffriction` attribute. #. Added :ref:`mjd_inverseFD` for finite-differenced inverse-dynamics derivatives. @@ -215,7 +216,7 @@ General model, within a range of width tausmooth. See :ref:`Muscle actuators` for more details. Relatedly, :ref:`mju_muscleDynamics` now takes 3 parameters instead of 2, adding the new smoothing-width parameter. #. Moved public C macro definitions out of mujoco.h into a new public header file called - `mjmacro.h `__. The new file + `mjmacro.h `__. The new file is included by mujoco.h so this change does not break existing user code. #. Added instrumentation for the `Address Sanitizer (ASAN) `__ and `Memory Sanitizer (MSAN) `__ to detect memory bugs when allocating @@ -278,8 +279,8 @@ Python bindings #. Fixed a race condition in ``viewer.launch_passive`` and ``viewer.launch_repl``. These functions could previously return before an internal call to ``mj_forward``. This allows user code to continue and potentially modify physics state concurrently with the internal ``mj_forward``, resulting in e.g. - `MuJoCo stack overflow error `_ - or `segmentation fault `_. + `MuJoCo stack overflow error `_ + or `segmentation fault `_. #. The ``viewer.launch_passive`` function now returns a handle which can be used to interact with the viewer. The passive viewer now also requires an explicit call to ``sync`` on its handle to pick up any update to the physics state. This is to avoid race conditions that can result in visual artifacts. See @@ -292,9 +293,9 @@ Bug fixes 12. Fixed bug in the handling of ellipsoid-based fluid model forces in the new implicitfast integrator. #. Removed spurious whole-arena copying in `mj_copyData`, which can considerably - `slow down `_ the copying operation. + `slow down `_ the copying operation. #. Make :ref:`shellinertia` ignore :ref:`exactmeshinertia`, which is - only used for legacy volume computations (`#759 `_). + only used for legacy volume computations (`#759 `_). Version 2.3.3 (March 20, 2023) @@ -313,9 +314,9 @@ General become the default integrator in a future version. The table below shows the compute cost of the 627-DoF `humanoid100 - `_ model using different integrators. - "implicit (old)" uses dense RNE derivatives, "implicit (new)" is after the sparsification mentioned above. - Timings were measured on a single core of an AMD 3995WX CPU. + `_ model using different + integrators. "implicit (old)" uses dense RNE derivatives, "implicit (new)" is after the sparsification mentioned + above. Timings were measured on a single core of an AMD 3995WX CPU. .. csv-table:: :header: "timing", "Euler", "implicitfast", "implicit (new)", "implicit (old)" @@ -338,8 +339,8 @@ General duplicated in order to circumvent this limitation as they previously were. #. The non-zeros for the sparse constraint Jacobian matrix are now precounted and used for matrix memory allocation. For instance, the constraint Jacobian matrix from the `humanoid100 - `_ model, which previously required - ~500,000 ``mjtNum``'s, now only requires ~6000. Very large models can now load and run with the CG solver. + `_ model, which previously + required ~500,000 ``mjtNum``'s, now only requires ~6000. Very large models can now load and run with the CG solver. #. Modified :ref:`mju_error` and :ref:`mju_warning` to be variadic functions (support for printf-like arguments). The functions :ref:`mju_error_i`, :ref:`mju_error_s`, :ref:`mju_warning_i`, and :ref:`mju_warning_s` are now deprecated. #. Implemented a performant ``mju_sqrMatTDSparse`` function that doesn't require dense memory allocation. @@ -386,7 +387,7 @@ General 1. A more performant mju_transposeSparse has been implemented that doesn't require dense memory allocation. For a constraint Jacobian matrix from the - `humanoid100.xml `_ model, + `humanoid100.xml `_ model, this function is 35% faster. #. The function :ref:`mj_name2id` is now implemented using a hash function instead of a linear search for better performance. @@ -416,7 +417,7 @@ Simulate ^^^^^^^^ 12. Increased precision of simulate sensor plot y-axis by 1 digit - (`#719 `_). + (`#719 `_). #. Body labels are now drawn at the body frame rather than inertial frame, unless inertia is being visualised. Plugins @@ -447,7 +448,7 @@ General between the two values, the force is 0. If length is outside this range, the force behaves like a regular spring, with the spring resting length corresponding to the nearest :at:`springlength` value. This can be used to create tendons whose limits are enforced by springs rather than constraints, which are cheaper and easier to analyse. See - `tendon_springlength.xml `_ + `tendon_springlength.xml `_ example model. .. attention:: @@ -461,22 +462,22 @@ General #. Removed the requirement that stateless actuators come before stateful actuators. #. Added :ref:`mju_fill`, :ref:`mju_symmetrize` and :ref:`mju_eye` utility functions. #. Added :at:`gravcomp` attribute to :ref:`body`, implementing gravity compensation and buoyancy. - See `balloons.xml `_ example model. + See `balloons.xml `_ example model. #. Renamed the ``cable`` plugin library to ``elasticity``. #. Added :at:`actdim` attribute to :ref:`general actuators`. Values greater than 1 are only allowed for dyntype :at-val:`user`, as native activation dynamics are all scalar. Added example test implementing 2nd-order activation dynamics to - `engine_forward_test.cc `_. + `engine_forward_test.cc `_. #. Improved particle :ref:`composite` type, which now permits a user-specified geometry and multiple joints. See the two new examples: - `particle_free.xml `_ and - `particle_free2d.xml `_. + `particle_free.xml `_ and + `particle_free2d.xml `_. #. Performance improvements for non-AVX configurations: - 14% faster ``mj_solveLD`` using `restrict `_. See `engine_core_smooth_benchmark_test - `_. + `_. - 50% faster ``mju_dotSparse`` using manual loop unroll. See `engine_util_sparse_benchmark_test - `_. + `_. #. Added new :at:`solid` passive force plugin: .. youtube:: AGcTGHbbze4 @@ -585,12 +586,12 @@ General - Twist and bending stiffness can be set separately with the parameters :at:`twist` and :at:`bend`. - The stress-free configuration can be set to be the initial one or flat with the flag :at:`flat`. - - New `cable.xml `_ example showing - the formation of plectoneme. - - New `coil.xml `_ example showing a - curved equilibrium configuration. - - New `belt.xml `_ example showing - interaction between twist and anisotropy. + - New `cable.xml `_ example + showing the formation of plectoneme. + - New `coil.xml `_ example + showing a curved equilibrium configuration. + - New `belt.xml `_ example + showing interaction between twist and anisotropy. - Added test using cantilever exact solution. +--------------------------+--------------------------+--------------------------+ @@ -609,7 +610,7 @@ Python bindings an iterator without needing to check ``ncon``. #. Fix a memory leak when a Python callable is installed as callback - (`#527 `_). + (`#527 `_). Version 2.2.2 (September 7, 2022) @@ -623,7 +624,7 @@ General :height: 150px 1. Added :ref:`adhesion actuators` mimicking vacuum grippers and adhesive biomechanical appendages. -#. Added related `example model `_ and video: +#. Added related `example model `_ and video: #. Added :ref:`mj_jacSubtreeCom` for computing the translational Jacobian of the center-of-mass of a subtree. #. Added :at:`torquescale` and :at:`anchor` attributes to :el:`weld` constraints. :at:`torquescale` sets the torque-to-force ratio exerted by the constraint, :at:`anchor` sets the point at which the weld wrench is @@ -631,8 +632,8 @@ General #. Increased ``mjNEQDATA``, the row length of equality constraint parameters in ``mjModel.eq_data``, from 7 to 11. #. Added visualisation of anchor points for both :el:`connect` and :el:`weld` constraints (activated by the 'N' key in ``simulate``). -#. Added `weld.xml `_ showing different - uses of new weld attributes. +#. Added `weld.xml `_ showing + different uses of new weld attributes. .. youtube:: s-0JHanqV1A :align: right @@ -640,8 +641,8 @@ General #. Cartesian 6D end-effector control is now possible by adding a reference site to actuators with :at:`site` transmission. See description of new :at:`refsite` attribute in the :ref:`actuator` documentation - and `refsite.xml `_ example - model. + and `refsite.xml `_ + example model. #. Added :at:`autolimits` compiler option. If ``true``, joint and tendon :at:`limited` attributes and actuator :at:`ctrllimited`, :at:`forcelimited` and :at:`actlimited` attributes will automatically be set to ``true`` if the @@ -667,7 +668,7 @@ General :height: 150px #. Added catenary visualisation for hanging tendons. The model seen in the video can be found - `here `_. + `here `_. #. Added ``azimuth`` and ``elevation`` attributes to :ref:`visual/global`, defining the initial orientation of the free camera at model load time. #. Added ``mjv_defaultFreeCamera`` which sets the default free camera, respecting the above attributes. @@ -715,7 +716,7 @@ General and `Memory Sanitizer (MSAN) `__. This allows ASAN to detect reads and writes to regions in ``mjModel.buffer`` and ``mjData.buffer`` that do not lie within an array, and for MSAN to detect reads from uninitialised fields in ``mjData`` following ``mj_resetData``. -#. Added a `slider-crank example model `_. +#. Added a `slider-crank example model `_. Bug fixes ^^^^^^^^^ @@ -761,8 +762,8 @@ Open Sourcing c. ``dist/``: Files related to packaging and binary distribution. -#. Added `contributor's guide `_ and - `style guide `_. +#. Added `contributor's guide `_ and + `style guide `_. General ^^^^^^^ @@ -893,7 +894,7 @@ Bug fixes ^^^^^^^^^ 5. Fixed rendering bug for planes, introduced in 2.1.2. This broke maze environments in - `dm_control `_. + `dm_control `_. Version 2.1.2 (Mar. 15, 2022) @@ -914,7 +915,7 @@ API changes ^^^^^^^^^^^ 4. Moved definition of ``mjtNum`` floating point type into a new header - `mjtnum.h `_. + `mjtnum.h `_. #. Renamed header `mujoco_export.h` to :ref:`mjexport.h`. #. Added ``mj_printFormattedData``, which accepts a format string for floating point numbers, for example to increase precision. @@ -927,7 +928,7 @@ General a. Meshes containing polygons with more than 4 vertices are not supported. #. In OBJ files containing multiple object groups, any groups after the first one will be ignored. #. Added (post-release, not included in the 2.1.2 archive) textured - `mug `_ example model: + `mug `_ example model: .. image:: images/changelog/mug.png :width: 300px @@ -1108,8 +1109,8 @@ General #. Fixed: The array of sensors in ``mjCModel`` was not cleared. #. Cleaned up cross-platform code (internal changes, not visible via the API). #. Fixed a bug in parsing of XML ``texcoord`` data (related to number of vertices). -#. Fixed a bug in `simulate.cc `_ related to ``nkey`` - (the number of keyframes). +#. Fixed a bug in `simulate.cc `_ related to + ``nkey`` (the number of keyframes). #. Accelerated collision detection in the presence of large numbers of non-colliding geoms (with ``contype==0 and conaffinity==0``). diff --git a/doc/computation.rst b/doc/computation.rst index 73ea0dd1..bc124fe6 100644 --- a/doc/computation.rst +++ b/doc/computation.rst @@ -278,9 +278,9 @@ is attached; the possible attachment object types are :at:`joint`, :at:`tendon`, :at:`slider-crank` :at:`slider-crank` `transmissions `_ transform a linear force to a torque, as in a piston-driven combustion engine. `This model - `_ contains pedagogical examples. Slider-cranks can - also be modeled explicitly by creating MuJoCo bodies and coupling them with equality constraints to the rest of the - system, but that would be less efficient. + `_ contains pedagogical examples. + Slider-cranks can also be modeled explicitly by creating MuJoCo bodies and coupling them with equality constraints to + the rest of the system, but that would be less efficient. :at:`site` :at:`site` transmission (without a :at:`refsite`, see below) and :at:`body` transmission targets have a fixed zero @@ -573,7 +573,7 @@ Fast implicit-in-velocity (``implicitfast``) `_, though users can easily implement other integrators by calling :ref:`mj_forward` and integrating accelerations themselves. We have observed that for energy-conserving systems (`example - `_) RK4 + `_) RK4 is qualitatively better than the single-step methods, both in terms of stability and accuracy, even when the timestep is decreased by a factor of 4 (so the computational effort is identical). In the presence of large velocity- dependent forces, if the chosen single-step method integrates those forces implicitly, single-step methods can be diff --git a/doc/modeling.rst b/doc/modeling.rst index 9de80147..c01ae259 100644 --- a/doc/modeling.rst +++ b/doc/modeling.rst @@ -617,12 +617,12 @@ Force clamping at joint input with :ref:`joint/actuatorfrcrange`__ , + `__ , two actuators, a :ref:`motor` and a :ref:`damper`, act on a single joint. - - In `this example model `__ (similar to a "Dubin's + - In `this example model `__ (similar to a "Dubin's Car"), two actuators act on two wheels via a :ref:`fixed tendon` transmission in order to apply symmetric (roll forward/back) and antisymmetric (turn right/left) torques. - - In `this example model `__, + - In `this example model `__, a :ref:`site transmission` implements a Cartesian controller of an arm end-effector. In order for the computed torques to be realisable by individual, torque-limited joint motors, they need to be clamped at the joints. diff --git a/doc/models.rst b/doc/models.rst index 4b062082..f69e83fa 100644 --- a/doc/models.rst +++ b/doc/models.rst @@ -10,7 +10,7 @@ MuJoCo Menagerie Menagerie is a collection of high-quality simulation models for MuJoCo, curated by Google DeepMind. -For more information, visit the `Menagerie repository `__. +For more information, visit the `Menagerie repository `__. Bipeds & Quadrupeds ^^^^^^^^^^^^^^^^^^^ @@ -20,13 +20,13 @@ Bipeds & Quadrupeds * - Model - Preview - * - `Agility Cassie `_ + * - `Agility Cassie `_ - .. youtube:: rcdsAdwNhtc - * - `Unitree A1 `_ + * - `Unitree A1 `_ - .. youtube:: paQMrMtnTtc - * - `Anybotics ANYmal B `_ + * - `Anybotics ANYmal B `_ - .. youtube:: fRHau-PMGgM - * - `Anybotics ANYmal C `_ + * - `Anybotics ANYmal C `_ - .. youtube:: v04uJWBLwFQ Grippers & Hands @@ -37,9 +37,9 @@ Grippers & Hands * - Model - Preview - * - `Shadow E3M5 `_ + * - `Shadow E3M5 `_ - .. youtube:: wi_zJzRm8Ic - * - `Robotiq 2F-85 `_ + * - `Robotiq 2F-85 `_ - .. youtube:: yYm9fLj32Xw Arms @@ -50,8 +50,8 @@ Arms * - Model - Preview - * - `Franka Emika Panda `_ + * - `Franka Emika Panda `_ - .. youtube:: H5zSrWcJlGs - * - `Universal Robots UR5e `_ + * - `Universal Robots UR5e `_ - .. youtube:: gAqwNeY0juo diff --git a/doc/overview.rst b/doc/overview.rst index 583556ce..0a5bf7e4 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -8,8 +8,9 @@ Introduction aims to facilitate research and development in robotics, biomechanics, graphics and animation, machine learning, and other areas that demand fast and accurate simulation of articulated structures interacting with their environment. Initially developed by Roboti LLC, it was acquired and made `freely available -`__ by DeepMind in October 2021, and open sourced in May 2022. -The MuJoCo codebase is available at the `deepmind/mujoco `__ repository on GitHub. +`__ by DeepMind in October 2021, and open sourced in May +2022. The MuJoCo codebase is available at the `deepmind/mujoco `__ repository +on GitHub. MuJoCo is a C/C++ library with a C API, intended for researchers and developers. The runtime simulation module is tuned to maximize performance and operates on low-level data structures which are preallocated by the built-in XML parser and @@ -788,9 +789,9 @@ first, followed by the limits of the second joint etc. This ordering reflects th row-major format. The available element types are defined in `mjmodel.h -`_, in the enum type :ref:`mjtObj`. These -enums are mostly used internally. One exception are the functions :ref:`mj_name2id` and :ref:`mj_id2name` in the MuJoCo -API, which map element names to integer ids and vice versa. These functions take an element type as input. +`_, in the enum type :ref:`mjtObj`. +These enums are mostly used internally. One exception are the functions :ref:`mj_name2id` and :ref:`mj_id2name` in the +MuJoCo API, which map element names to integer ids and vice versa. These functions take an element type as input. Naming model elements in the XML is optional. Two elements of the same type (e.g. two joints) cannot have the same name. Naming is required only when a given element needs to be referenced elsewhere in the model; referencing in the XML can diff --git a/doc/programming/extension.rst b/doc/programming/extension.rst index 2ab381ae..9b9dba15 100644 --- a/doc/programming/extension.rst +++ b/doc/programming/extension.rst @@ -237,8 +237,8 @@ Writing plugins This section, targeted at developers, is incomplete. We encourage people who wish to write their own plugins to contact the MuJoCo development team for help. A good starting point for experienced developers is the -`associated tests `_ and the first-party -plugins in the `first-party plugin directory `_. +`associated tests `_ and the +first-party plugins in the `first-party plugin directory `_. A future version of this section will include: @@ -250,19 +250,19 @@ A future version of this section will include: Currently, there are three directories of first-party plugins: -* **elasticity:** The plugins in the `elasticity/ `__ +* **elasticity:** The plugins in the `elasticity/ `__ directory are passive forces based on continuum mechanics for 1-dimensional and 3-dimensional bodies. The 1D model is invariant under rotations and captures the large deformation of elastic cables, decoupling twisting and bending strains. The 3D solid is a `Saint Venant-Kirchhoff `__ model discretized with piecewise linear finite elements, which is suitable for large deformations with small strains. -* **sensor:** The plugins in the `sensor/ `__ +* **sensor:** The plugins in the `sensor/ `__ directory implement custom sensors. Currently the sole sensor plugin is the touch grid sensor, see the - `README `__ for details. -* **sdf:** The plugins in the `sdf/ `__ + `README `__ for details. +* **sdf:** The plugins in the `sdf/ `__ directory specify custom shapes in a mesh-free manner, by defining methods computing a signed distance field and its gradient at query points. This shape then acts as a new geom type in the collision table at the top of - `engine_collision_driver.c `__. + `engine_collision_driver.c `__. Collision points are found by minimizing the maximum of the two colliding SDFs via gradient descent. Because SDFs are non-convex, multiple starting points are required in order to converge to multiple local minima. diff --git a/doc/programming/index.rst b/doc/programming/index.rst index a651ac05..72af55ea 100644 --- a/doc/programming/index.rst +++ b/doc/programming/index.rst @@ -46,8 +46,8 @@ Getting started MuJoCo is an open-source project. Pre-built dynamic libraries are available for x86_64 and arm64 machines running Windows, Linux, and macOS. These can be downloaded from the `GitHub Releases page -`_. Users who do not intend to develop or modify core MuJoCo code are -encouraged to use our pre-built libraries, as these come bundled with the same versions of dependencies that we +`_. Users who do not intend to develop or modify core MuJoCo code +are encouraged to use our pre-built libraries, as these come bundled with the same versions of dependencies that we regularly test against, and benefit from build flags that have been tuned for performance. Our pre-built libraries are almost entirely self-contained and do not require any other library to be present, outside the standard C runtime. We also hide all symbols apart from those that form MuJoCo's public API, thus ensuring that it can coexist with any other @@ -76,10 +76,10 @@ directory; it contains error and warning messages, and can be deleted at any tim After verifying that the simulator works, you may also want to re-compile the code samples to ensure that you have a working development environment. We provide Makefiles for `Windows -`_, `macOS -`_, and `Linux -`_, and also a cross-platform `CMake -`_ setup that can be used to build sample +`_, `macOS +`_, and `Linux +`_, and also a cross-platform `CMake +`_ setup that can be used to build sample applications independently of the MuJoCo library itself. If you are using the vanilla Makefile, we assume that you are using Visual Studio on Windows and LLVM/Clang on Linux. On Windows, you also need to either open a Visual Studio command prompt with native x64 tools or call the ``vcvarsall.bat`` script that comes with your MSVC installation to set up the @@ -127,11 +127,12 @@ target directory. #. After building, install with ``cmake --install .`` When building on Windows, use Visual Studio 2019 or later and make sure Windows SDK version 10.0.22000 or later is -installed (see `here `__ for more details). +installed (see `here `__ for more details). .. tip:: As a reference, a working build configuration can be found in MuJoCo's - `continuous integration setup `_ on GitHub. + `continuous integration setup `_ on + GitHub. .. _inHeader: @@ -141,36 +142,36 @@ Header files The distribution contains several header files which are identical on all platforms. They are also available from the links below, to make this documentation self-contained. -`mujoco.h `__ +`mujoco.h `__ This is the main header file and must be included in all programs using MuJoCo. It defines all API functions and global variables, and includes the all other header files except mjxmacro.h. -`mjmodel.h `__ +`mjmodel.h `__ Defines the C structure :ref:`mjModel` which is the runtime representation of the model being simulated. It also defines a number of primitive types and other structures needed to define mjModel. -`mjdata.h `__ +`mjdata.h `__ Defines the C structure :ref:`mjData` which is the workspace where all computations read their inputs and write their outputs. It also defines primitive types and other structures needed to define mjData. -`mjvisualize.h `__ +`mjvisualize.h `__ Defines the primitive types and structures needed by the abstract visualizer. -`mjrender.h `__ +`mjrender.h `__ Defines the primitive types and structures needed by the OpenGL renderer. -`mjui.h `__ +`mjui.h `__ Defines the primitive types and structures needed by the UI framework. -`mjtnum.h `__ +`mjtnum.h `__ Defines MuJoCo's ``mjtNum`` floating-point type to be either ``double`` or ``float``. See :ref:`mjtNum`. -`mjmacro.h `__ +`mjmacro.h `__ Defines C macros that are useful in user code. -`mjxmacro.h `__ +`mjxmacro.h `__ This file is optional and is not included by mujoco.h. It defines :ref:`X Macros ` that can automate the mapping of mjModel and mjData into scripting languages, as well as other operations that require accessing all fields of mjModel and mjData. See code sample :ref:`testxml.cc `. -`mjexport.h `__ +`mjexport.h `__ Macros used for exporting public symbols from the MuJoCo library. This header should not be used directly by client code. -`mjplugin.h `__ +`mjplugin.h `__ Defines data structures required by :ref:`engine plugins`. -`mjthread.h `__ +`mjthread.h `__ Defines data structures and functions required by :ref:`thread`. .. _inVersion: diff --git a/doc/programming/samples.rst b/doc/programming/samples.rst index 5cd30032..455de128 100644 --- a/doc/programming/samples.rst +++ b/doc/programming/samples.rst @@ -9,8 +9,8 @@ with the library. .. _saTestspeed: -`testspeed `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`testspeed `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample tests the simulation speed for a given model. The command line arguments are the model file, the number of time steps to simulate, the number of parallel threads to use, and a flag to enable internal profiling (the @@ -28,8 +28,8 @@ explicitly as explained in the :ref:`simulation loop ` section bel .. _saTestXML: -`testxml `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`testxml `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample tests the parser, compiler and XML writer. The testing code does the following: @@ -50,8 +50,8 @@ field which is resolved at runtime. .. _saCompile: -`compile `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`compile `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample evokes the built-in parser and compiler. It implements all possible model conversions from (MJCF, URDF, MJB) format to (MJCF, MJB, TXT) format. Models saved as MJCF use a canonical subset of our format as described in the @@ -63,8 +63,8 @@ with mjData, although this is not done by the code sample. .. _saBasic: -`basic `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`basic `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample is a minimal interactive simulator. The model file must be provided as command-line argument. It opens an OpenGL window using the platform-independent GLFW library, and renders the simulation state at 60 fps while @@ -77,8 +77,8 @@ illustration of the concepts in that guide. .. _saSimulate: -`simulate `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`simulate `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample is a fully-featured interactive simulator. It opens an OpenGL window using the platform-independent GLFW library, and renders the simulation state in it. There is built-in help, simulation statistics, profiler, sensor @@ -117,7 +117,7 @@ Windows power plan so that the minimum processor state is 100%. .. _saRecord: -`record `_ +`record `_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample simulates the passive dynamics of a given model, renders it offscreen, reads the color and depth pixel @@ -155,8 +155,8 @@ But we cannot yet assume that all users have it installed. .. _saDerivative: -`derivative `_ -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +`derivative `_ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This code sample illustrates the numerical approximation of forward and inverse dynamics derivatives via finite differences. The process involves a number of epochs. In each epoch the simulation is advanced for a specified number diff --git a/doc/python.rst b/doc/python.rst index 46e8222d..cc1b2c39 100644 --- a/doc/python.rst +++ b/doc/python.rst @@ -12,11 +12,11 @@ low-level bindings that are meant to give as close to a direct access to the MuJ order to provide an API and semantics that developers would expect in a typical Python library, the bindings deliberately diverge from the raw MuJoCo API in a number of places, which are documented throughout this page. -Google DeepMind’s `dm_control `__ reinforcement learning library (which prior to -version 1.0.0 implemented its own MuJoCo bindings based on ``ctypes``) has been updated to depend on the ``mujoco`` -package and continues to be supported by Google DeepMind. Changes in dm_control should be largely transparent to users -of previous versions, however code that depended directly on its low-level API may need to be updated. Consult the -`migration guide `__ for detail. +Google DeepMind’s `dm_control `__ reinforcement learning library (which +prior to version 1.0.0 implemented its own MuJoCo bindings based on ``ctypes``) has been updated to depend on the +``mujoco`` package and continues to be supported by Google DeepMind. Changes in dm_control should be largely transparent +to users of previous versions, however code that depended directly on its low-level API may need to be updated. Consult +the `migration guide `__ for detail. For mujoco-py users, we include :ref:`notes ` below to aid migration. @@ -28,7 +28,7 @@ Tutorial notebook A MuJoCo tutorial using the Python bindings is available here: |colab| .. |colab| image:: https://colab.research.google.com/assets/colab-badge.svg - :target: https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/tutorial.ipynb + :target: https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb .. _PyInstallation: @@ -450,7 +450,7 @@ all inputs including ``time`` and ``qacc_warmstart`` are set to default values, Since the Global Interpreter Lock can be released, this function can be efficiently threaded using Python threads. See the ``test_threading`` function in -`rollout_test.py `_ for an example of +`rollout_test.py `_ for an example of threaded operation. .. _PyMjpy_migration: @@ -517,7 +517,7 @@ Building from source 1. Make sure you have CMake and a C++17 compiler installed. -2. Download the `latest binary release `__ +2. Download the `latest binary release `__ from GitHub. On macOS, the download corresponds to a DMG file from which you can drag ``MuJoCo.app`` into your ``/Applications`` folder. @@ -526,7 +526,7 @@ Building from source .. code-block:: shell - git clone https://github.com/deepmind/mujoco.git + git clone https://github.com/google-deepmind/mujoco.git cd mujoco/python 4. Create a virtual environment: @@ -571,4 +571,5 @@ successfully installed, ``cd`` outside of the ``mujoco`` directory and run .. tip:: As a reference, a working build configuration can be found in MuJoCo's - `continuous integration setup `_ on GitHub. + `continuous integration setup `_ on + GitHub. diff --git a/doc/unity.rst b/doc/unity.rst index 22a5d4d2..9fe13ef9 100644 --- a/doc/unity.rst +++ b/doc/unity.rst @@ -5,20 +5,20 @@ Unity Plug-in Introduction ------------ -The MuJoCo `Unity plug-in `_ allows the Unity Editor and runtime to -use the MuJoCo physics engine. Users can import MJCF files and edit the models in the Editor. The plug-in relies on -Unity for most aspects -- assets, game logic, simulation time -- but uses MuJoCo to determine how objects move, giving -the designer access to MuJoCo's full API. +The MuJoCo `Unity plug-in `_ allows the Unity Editor and +runtime to use the MuJoCo physics engine. Users can import MJCF files and edit the models in the Editor. The plug-in +relies on Unity for most aspects -- assets, game logic, simulation time -- but uses MuJoCo to determine how objects +move, giving the designer access to MuJoCo's full API. .. _UInstallation: Installation instructions ------------------------- -The plug-in directory (available at https://github.com/deepmind/mujoco/tree/main/unity) includes a ``package.json`` -file. Unity's package manager recognizes this file and will import the plug-in's C# codebase to your project. In -addition, Unity also needs the native MuJoCo library, which can be found in the specific platform archive at -https://github.com/deepmind/mujoco/releases. +The plug-in directory (available at https://github.com/google-deepmind/mujoco/tree/main/unity) includes a +``package.json`` file. Unity's package manager recognizes this file and will import the plug-in's C# codebase to your +project. In addition, Unity also needs the native MuJoCo library, which can be found in the specific platform archive at +https://github.com/google-deepmind/mujoco/releases. On Unity version 2020.2 and later, the Package Manager will look for the native library file and copy it to the package directory when the package is imported. Alternatively, you can manually copy the native library to the package directory diff --git a/python/LQR.ipynb b/python/LQR.ipynb index 75a93cc3..98ec50f8 100644 --- a/python/LQR.ipynb +++ b/python/LQR.ipynb @@ -6,11 +6,11 @@ "id": "bR2IJtzSilBv" }, "source": [ - "![MuJoCo banner](https://raw.githubusercontent.com/deepmind/mujoco/main/banner.png)\n", + "![MuJoCo banner](https://raw.githubusercontent.com/google-deepmind/mujoco/main/banner.png)\n", "\n", - "# \u003ch1\u003e\u003ccenter\u003eLQR tutorial \u003ca href=\"https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/LQR.ipynb\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" width=\"140\" align=\"center\"/\u003e\u003c/a\u003e\u003c/center\u003e\u003c/h1\u003e\n", + "# \u003ch1\u003e\u003ccenter\u003eLQR tutorial \u003ca href=\"https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/LQR.ipynb\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" width=\"140\" align=\"center\"/\u003e\u003c/a\u003e\u003c/center\u003e\u003c/h1\u003e\n", "\n", - "This notebook provides an example of an LQR controller using [**MuJoCo** physics](https://github.com/deepmind/mujoco#readme).\n", + "This notebook provides an example of an LQR controller using [**MuJoCo** physics](https://github.com/google-deepmind/mujoco#readme).\n", "\n", "**A Colab runtime with GPU acceleration is required.** If you're using a CPU-only runtime, you can switch using the menu \"Runtime \u003e Change runtime type\".\n" ] @@ -153,7 +153,7 @@ "outputs": [], "source": [ "print('Getting MuJoCo humanoid XML description from GitHub:')\n", - "!git clone https://github.com/deepmind/mujoco\n", + "!git clone https://github.com/google-deepmind/mujoco\n", "with open('mujoco/model/humanoid/humanoid.xml', 'r') as f:\n", " xml = f.read()" ] diff --git a/python/README.md b/python/README.md index cb63a5ea..ee03451e 100644 --- a/python/README.md +++ b/python/README.md @@ -8,7 +8,7 @@ [pypi]: https://pypi.org/project/mujoco/ This package is the canonical Python bindings for the -[MuJoCo physics engine](https://github.com/deepmind/mujoco). +[MuJoCo physics engine](https://github.com/google-deepmind/mujoco). These bindings are developed and maintained by Google DeepMind, and is kept up-to-date with the latest developments in MuJoCo itself. @@ -52,7 +52,7 @@ further detail on the package's API. We recommend going through the tutorial notebook which covers the basics of MuJoCo using Python: -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/tutorial.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb) ## Versioning diff --git a/python/setup.py b/python/setup.py index ac91bf31..0025b2b9 100644 --- a/python/setup.py +++ b/python/setup.py @@ -354,7 +354,7 @@ SETUP_KWARGS = dict( description='MuJoCo Physics Simulator', long_description=get_long_description(), long_description_content_type='text/markdown', - url='https://github.com/deepmind/mujoco', + url='https://github.com/google-deepmind/mujoco', license='Apache License 2.0', classifiers=[ 'Development Status :: 5 - Production/Stable', diff --git a/python/tutorial.ipynb b/python/tutorial.ipynb index bc72ec6c..2fb7dd1a 100644 --- a/python/tutorial.ipynb +++ b/python/tutorial.ipynb @@ -6,11 +6,11 @@ "id": "MpkYHwCqk7W-" }, "source": [ - "![MuJoCo banner](https://raw.githubusercontent.com/deepmind/mujoco/main/banner.png)\n", + "![MuJoCo banner](https://raw.githubusercontent.com/google-deepmind/mujoco/main/banner.png)\n", "\n", - "# \u003ch1\u003e\u003ccenter\u003eTutorial \u003ca href=\"https://colab.research.google.com/github/deepmind/mujoco/blob/main/python/tutorial.ipynb\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" width=\"140\" align=\"center\"/\u003e\u003c/a\u003e\u003c/center\u003e\u003c/h1\u003e\n", + "# \u003ch1\u003e\u003ccenter\u003eTutorial \u003ca href=\"https://colab.research.google.com/github/google-deepmind/mujoco/blob/main/python/tutorial.ipynb\"\u003e\u003cimg src=\"https://colab.research.google.com/assets/colab-badge.svg\" width=\"140\" align=\"center\"/\u003e\u003c/a\u003e\u003c/center\u003e\u003c/h1\u003e\n", "\n", - "This notebook provides an introductory tutorial for [**MuJoCo** physics](https://github.com/deepmind/mujoco#readme), using the native Python bindings.\n", + "This notebook provides an introductory tutorial for [**MuJoCo** physics](https://github.com/google-deepmind/mujoco#readme), using the native Python bindings.\n", "\n", "**A Colab runtime with GPU acceleration is required.** If you're using a CPU-only runtime, you can switch using the menu \"Runtime \u003e Change runtime type\".\n", "\n", @@ -198,7 +198,7 @@ "source": [ "## mjModel\n", "\n", - "MuJoCo's `mjModel`, contains the *model description*, i.e., all quantities which *do not change over time*. The complete description of `mjModel` can be found at the end of the header file [`mjmodel.h`](https://github.com/deepmind/mujoco/blob/main/include/mujoco/mjmodel.h). Note that the header files contain short, useful inline comments, describing each field.\n", + "MuJoCo's `mjModel`, contains the *model description*, i.e., all quantities which *do not change over time*. The complete description of `mjModel` can be found at the end of the header file [`mjmodel.h`](https://github.com/google-deepmind/mujoco/blob/main/include/mujoco/mjmodel.h). Note that the header files contain short, useful inline comments, describing each field.\n", "\n", "Examples of quantities that can be found in `mjModel` are `ngeom`, the number of geoms in the scene and `geom_rgba`, their respective colors:" ] diff --git a/sample/cmake/SampleDependencies.cmake b/sample/cmake/SampleDependencies.cmake index 5e982438..6d0dcbad 100644 --- a/sample/cmake/SampleDependencies.cmake +++ b/sample/cmake/SampleDependencies.cmake @@ -50,7 +50,7 @@ findorfetch( LIBRARY_NAME mujoco GIT_REPO - https://github.com/deepmind/mujoco.git + https://github.com/google-deepmind/mujoco.git GIT_TAG main TARGETS diff --git a/simulate/cmake/SimulateDependencies.cmake b/simulate/cmake/SimulateDependencies.cmake index fa539c29..5141406c 100644 --- a/simulate/cmake/SimulateDependencies.cmake +++ b/simulate/cmake/SimulateDependencies.cmake @@ -50,7 +50,7 @@ findorfetch( LIBRARY_NAME mujoco GIT_REPO - https://github.com/deepmind/mujoco.git + https://github.com/google-deepmind/mujoco.git GIT_TAG main TARGETS diff --git a/src/xml/xml.cc b/src/xml/xml.cc index fda3cde8..a9758572 100644 --- a/src/xml/xml.cc +++ b/src/xml/xml.cc @@ -52,7 +52,7 @@ namespace mju = ::mujoco::util; // In order to ensure that XMLs are locale-inpendent, we temporarily switch to the "C" locale // when handling. Since the standard C `setlocale` is not thread-safe, we instead use // platform-specific extensions to override the locale only in the calling thread. -// See also https://github.com/deepmind/mujoco/issues/131. +// See also https://github.com/google-deepmind/mujoco/issues/131. #ifdef _WIN32 class LocaleOverride { public: diff --git a/unity/package.json b/unity/package.json index 4271466b..d0b19d81 100644 --- a/unity/package.json +++ b/unity/package.json @@ -12,6 +12,6 @@ "changelogUrl": "https://mujoco.readthedocs.io/en/latest/changelog.html", "documentationUrl": "https://mujoco.readthedocs.io/en/latest/unity.html", "license": "Apache-2.0", - "licensesUrl": "https://github.com/deepmind/mujoco/blob/main/LICENSE", + "licensesUrl": "https://github.com/google-deepmind/mujoco/blob/main/LICENSE", "hideInEditor": false }