Metadata-Version: 2.4
Name: better-actuator-models
Version: 1.0.2
Summary: BAM: Better Actuator Models is a Python library dedicated to the identification and simulation of advanced actuator models.
Author: Marc Duclusaud, Grégoire Passault
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/Rhoban/bam
Project-URL: Repository, https://github.com/Rhoban/bam
Keywords: robot,robotics,actuator,simulation,friction
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: <3.13,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: colorama
Provides-Extra: mujoco
Requires-Dist: mujoco; extra == "mujoco"
Provides-Extra: mjlab
Requires-Dist: mjlab<1.4,>=1.3; extra == "mjlab"
Requires-Dist: mujoco-warp<3.8,>=3.7; extra == "mjlab"
Requires-Dist: mujoco<3.8,>=3.7; extra == "mjlab"
Requires-Dist: warp-lang<1.13,>=1.12; extra == "mjlab"
Requires-Dist: scipy; extra == "mjlab"
Provides-Extra: identification
Requires-Dist: zmq; extra == "identification"
Requires-Dist: protobuf<4.0,>=3.20; extra == "identification"
Requires-Dist: dynamixel_sdk; extra == "identification"
Requires-Dist: rustypot>=1.5.0; extra == "identification"
Requires-Dist: optuna; extra == "identification"
Requires-Dist: cmaes; extra == "identification"
Requires-Dist: wandb; extra == "identification"
Requires-Dist: matplotlib; extra == "identification"
Requires-Dist: PyQt5; extra == "identification"
Provides-Extra: all
Requires-Dist: better-actuator-models[identification,mjlab,mujoco]; extra == "all"
Dynamic: license-file

<p align="center">
  <img src="docs/_static/BAM_logo.png" alt="BAM logo" width="60%">
</p>

# BAM: Better Actuator Models

Accurate models of servo actuators are essential for the simulation of robotic systems. It is particularly important while performing Reinforcement Learning (RL) on real robots, as the precision of the model impacts directly the transferability of the learned policy.

The friction model generally implemented in widely used simulators like MuJoCo or IsaacGym is the Coulomb-Viscous, which is too simplistic to accurately represent complex friction phenomena like Stribeck, load-dependence or quadratic effects (read [this article](https://arxiv.org/pdf/2410.08650v1) for more details).

**BAM** aims at making servo-actuator simulation more faithful by:

- proposing an identification pipeline to fit friction models from recorded trajectories,
- providing a set of extended friction models that capture complex friction phenomena,
- sharing a library of identified models for common servos:
  - Dynamixel MX-64
  - Dynamixel MX-106
  - Dynamixel XL-320
  - Dynamixel XL330-288-T
  - eRob80:50
  - eRob80:100
  - Feetech STS3215
- providing a simple API to use these models in MuJoCo CPU and MuJoCo Warp.

## 📖 Documentation

Please refer to the [documentation](https://bam.readthedocs.io/en/latest/) for more details on how to use BAM and the provided friction models.

## 📚 Citation

If you use BAM or the friction models provided in this repository for your scientific work, please cite the following publication:

```bibtex
@inproceedings{duclusaud2025extended,
  title={Extended Friction Models for the Physics Simulation of Servo Actuators},
  author={Duclusaud, Marc and Passault, Gr{\'e}goire and Padois, Vincent and Ly, Olivier},
  booktitle={2025 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={12091--12097},
  year={2025},
  organization={IEEE}
}
```

If you also wish to cite the software directly, you may use:

```bibtex
@software{BAM,
  title = {{BAM: Better Actuator Models}},
  author = {Duclusaud, Marc and Passault, Grégoire},
  license = {Apache-2.0},
  url = {https://github.com/Rhoban/bam},
  version = {0.0.1},
  year = {2024}
}
```
