|
1 | | -# MJINX |
| 1 | +<!-- # MJINX --> |
2 | 2 | [](https://github.com/based-robotics/mjinx/actions) |
3 | 3 | [](https://github.com/based-robotics/mjinx/actions) |
4 | 4 | [](https://based-robotics.github.io/mjinx/) |
|
7 | 7 | [](https://colab.research.google.com/github/based-robotics/mjinx/blob/main/examples/notebooks/turoial.ipynb) |
8 | 8 |
|
9 | 9 |
|
| 10 | +<p align="center"> |
| 11 | + <img src="img/logo.svg" style="width: 500px" /> |
| 12 | +</p> |
10 | 13 |
|
11 | | -**Mjinx** is a library for auto-differentiable numerical inverse kinematics, powered by **JAX** and **Mujoco MJX**. The library was heavily inspired by the similar Pinocchio-based tool [pink](https://github.com/stephane-caron/pink/tree/main) and Mujoco-based analogue [mink](https://github.com/kevinzakka/mink/tree/main). |
| 14 | + |
| 15 | +**MJINX** is a python library for auto-differentiable numerical inverse kinematics built on **JAX** and **Mujoco MJX**. It draws inspiration from similar tools like the Pinocchio-based [PINK](https://github.com/stephane-caron/pink/tree/main) and Mujoco-based [MINK](https://github.com/kevinzakka/mink/tree/main). |
12 | 16 |
|
13 | 17 | <p align="center"> |
14 | | - <img src="img/local_ik_output.gif" style="width: 400px" /> |
15 | | - <img src="img/go2_stance.gif" style="width: 400px" /> |
16 | | - <img src="img/g1_heart.gif" style="width: 400px"/> |
17 | | - <img src="img/cassie_caravan.gif" style="width: 400px"/> |
| 18 | + <img src="img/local_ik_output.gif" style="width: 300px" /> |
| 19 | + <img src="img/go2_stance.gif" style="width: 300px" /> |
| 20 | + <img src="img/g1_heart.gif" style="width: 300px"/> |
| 21 | + <img src="img/cassie_caravan.gif" style="width: 300px"/> |
18 | 22 | </p> |
19 | 23 |
|
20 | | -## Key features |
21 | | -1. *Flexibility*. Each control problem is assembled via `Components`, which enforce desired behaviour or keeps system in a safety set. |
22 | | -2. *Different solution approaches*. `JAX` (i.e. it's efficient sampling and autodifferentiation) allows to implement variety of solvers, which might be more beneficial in different scenarios. |
23 | | -3. *Fully Jax-compatible*. Both optimal control problem and its solver are jax-compatible: jit-compilation and automatic vectorization are available for the whole problem. |
24 | | -4. *Convinience*. The functionality is nicely wrapped to make the interaction with it easier. |
| 24 | +## Key Features |
| 25 | +1. **Flexibility**. Problems are constructed using modular `Components` that enforce desired behaviors or maintain system safety constraints. |
| 26 | +2. **Multiple Solution Strategies**. Leveraging JAX's efficient sampling and automatic differentiation capabilities, MJINX implements various solvers optimized for different robotics scenarios. |
| 27 | +3. **Full JAX Compatibility**. Both the optimal control formulation and solvers are fully JAX-compatible, enabling JIT compilation and automatic vectorization across the entire pipeline. |
| 28 | +4. **User-Friendly Interface**. The API is designed with a clean, intuitive interface that simplifies complex inverse kinematics tasks while maintaining advanced functionality. |
25 | 29 |
|
26 | 30 | ## Installation |
27 | 31 | The package is available in PyPI registry, and could be installed via `pip`: |
28 | | -```python |
| 32 | +```bash |
29 | 33 | pip install mjinx |
30 | 34 | ``` |
31 | 35 |
|
|
0 commit comments