Open Source RoboticsRobots, software & learning

BAM: Better Actuator Models

Software

Identification and simulation of servo actuator friction and control models. [1] [2] [3] [4] [5] [6]

Installation & first result →Official websiteGetting started

For
Robotics developers evaluating the selected source workflow [1] [2] [3] [4] [5] [6]
Source rights
Named licenses are documented by part. Review licenses
Unknowns
operating system, compute requirements not fully established. Review gaps

Source researched · Not tested by us
Sources checked · Research details

Licenses & related hardware

Requirements · Research details and dates

On this page

Overview

BAM, Better Actuator Models, provides servo-actuator identification and simulation tools with extended friction models. Its README describes models for effects such as Stribeck friction, load dependence and quadratic effects, plus bundled identified parameters for several servo families. It is a model library and workflow, not a physical actuator, universal calibration or evidence that a learned policy will transfer to hardware. [1]

Is this for you?

Known limitations
  • Model parameters and testbench conditions must match the actuator being simulated.
  • CPU/GPU simulation and physical identification were not executed; simulation accuracy or policy transfer is not established here.

Editorial source-scope assessment; no installation, execution or compatibility test.

[1] [2] [3] [4] [5] [6] · Editorial assessment

What you need

Dependencies
  • Python>=3.12,<3.13 at package1.0.3
  • MuJoCo CPU extra, mjlab GPU extra and identification dependencies are separate

[1] [2] [3] [4] [5] [6]

Installation & first result

Open the upstream getting-started guide [1] [2] [3] [4] [5] [6]

  • Inspect the pinned source instructions and select the documented configuration.
  • Install only the dependencies for the chosen route; validate against the selected robot or model before hardware integration.

Editorial source-scope assessment; no installation, execution or compatibility test.

[1] [2] [3] [4] [5] [6] · Editorial assessment

Project notes

Use the dependency set for your task

The reviewed pyproject.toml declares package version 1.0.3 and Python >=3.12,<3.13, with numpy and colorama as base dependencies. This differs from the README's historical software-citation version 0.0.1; the citation is not the current package declaration. Select the source revision and compatible environment rather than combining examples from different releases. No installation was reproduced. [1] [3]

For the CPU route, the guide documents pip install 'better-actuator-models[mujoco]'. GPU/mjlab integration and physical identification use separate extras. The reviewed mjlab extra constrains mjlab to 1.3, MuJoCo and MuJoCo Warp to the 3.7 series and warp-lang to the 1.12 series; source comments explain API incompatibilities with newer stacks. Installing every extra is unnecessary for an initial CPU model investigation. [3] [6]

Match the motor and MJCF representation

The CPU guide begins with bam.model.load_model, selecting a bundled motor name and model variant m1 through m6, or a custom parameter JSON. The placeholder {actuator} needs a supported motor selection; it is not a literal working model name. Inspect the identified-actuator list referenced by the guide and match the physical servo and identification conditions before interpreting predictions. [5] [6]

Its MJCF requirement is concrete: actuators must be declared as motor, rather than position or velocity actuators. BAM overwrites frictionloss, damping and armature at runtime, so values placed in those XML fields are not preserved. The documented CPU controller computes motor torque, writes control and friction quantities, and can model load-dependent supply-voltage drop. These are upstream interface descriptions, not observed simulation results. [6]

The inspected actuator source also distinguishes stateful models: they must be evaluated once per timestep in chronological order, and independent simulations sharing a model require separate saved/restored state. That matters when moving a single-model experiment into parallel environments; the excerpt does not verify a particular batching integration. [4]

The repository and package declare Apache-2.0. Simulator dependencies, hardware drivers and any external recordings or models retain separate terms. The identification extra includes hardware/optimization/logging dependencies; installing it does not collect calibration data or validate a physical testbench. No dependency install, identification run, CPU/GPU simulation, friction fit, accuracy benchmark or sim-to-real transfer test was performed. [2] [3]

What we checked

Pinned source research only; selected implementation and setup text inspected. No dependency installation, upstream build, API export, robot simulation, hardware commissioning, timing or performance test performed.

Not yet established

  • Requirements: operating system, host computer
  • Version-specific hardware compatibility (ecosystem tags alone do not establish it)

Updates

Upstream last updated
Not established
Latest release
Not established
Profile updated
Nov 1, 2026
Sources last checked
Nov 1, 2026
Next review
Dec 1, 2026
Reviewed revision
b9e1111

Source files and licenses

Distinct robotics software implementation with inspectable source, declared license and bounded initial workflow.

LayerAvailability / license
softwareavailable · Apache-2.0
Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] [4] [5] [6]
documentationavailable · Apache-2.0
Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] [4] [5] [6]

Software entry; no separate physical design, firmware distribution, training-weight or dataset claim selected.

References

Each source links to the exact revision we read. “Used for” shows where this page relies on it.

Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5

Change history