Skip to main content

A general Python interface class for robot simulations using MuJoCo.

Project description

MuJoCo Robot

CI PyPI version Python versions License: MIT

A general Python interface for robot simulations using MuJoCo. Its public API mirrors pybullet_robot so that controllers written against that backend can be run here with minimal changes. MujocoRobot is a single object to load, introspect, control, and read state from a robot, implemented directly on MjModel + MjData.

Installation

Requires Python >= 3.10 and mujoco >= 3.2.

pip install mujoco_robot
pip install "mujoco_robot[ik]"   # optional whole-body IK backend (mink)

From source:

git clone https://github.com/justagist/mujoco_robot && cd mujoco_robot
pip install -e .

Quickstart

import numpy as np
from mujoco_robot import MujocoRobot
from mujoco_robot.utils.robot_loader_utils import get_mjcf_from_awesome_robot_descriptions

robot = MujocoRobot(
    mjcf_path=get_mjcf_from_awesome_robot_descriptions("panda_mj_description"),
    ee_names=["hand"],
    run_async=False,   # step manually
    render=True,       # launch the passive viewer (needs a display)
)
robot.set_position_control_mode()

target = robot.get_actuated_joint_positions()
target[0] += 0.5
while robot.is_viewer_running():
    robot.set_joint_positions(target)
    robot.step()

Features

  • Load an MJCF/URDF file, or wrap an existing (model, data); assemble a world (ground, light, props, force-torque sensors) with the MjSpec helpers in mujoco_robot.utils.model_builder.
  • Introspect: name<->id maps for bodies, joints, actuators, sites, geoms, and sensors, with per-joint qpos/dof addressing.
  • Lifecycle: manual step() or a background stepping thread, an optional passive viewer, joint/base resets, and place-on-ground.
  • State: joint, base, and link/site pose and velocity (quaternions as [x, y, z, w]), the geometric Jacobian, gravity-compensation torques, and a get_robot_states snapshot.
  • Control: position control via the model's actuators, and torque/impedance control via data.qfrc_applied, with a PVT-PD command and position/torque mode switching.
  • Contacts and force-torque sensing, plus cosmetics / domain-randomisation helpers (transparency, per-geom collision, dynamics editing).
  • Inverse kinematics: differential_ik for a single frame (from mujoco_robot.ik import differential_ik); mink for whole-body (optional [ik]).

Examples

Runnable demos in examples/ (each takes --headless to run without the viewer):

Joint Position Control

KUKA iiwa14 follows a joint-space sinusoid (position control).

Joint-space position control demo

Task Space Control

Panda traces a circle with Cartesian impedance control.

Task-space control demo

Measuring Contact Forces using FT Sensor

Contact wrench visualised as the robot presses on a block.

FT sensor demo

Single arm Inverse Kinematics

UR5e tracks a moving target with differential_ik.

IK demo

Whole body IK (via mink -- needs pip install "mujoco_robot[ik]")

Go1 whole-body squat demo by doing IK for all four feet and body simultaneously.

WB IK demo

Design notes

  • Quaternions: the external API uses [x, y, z, w] (scipy convention); values are converted to MuJoCo's [w, x, y, z] only at the boundary.
  • Angles: joint positions, velocities, and limits are in radians (a compiled model always stores radians, regardless of the MJCF compiler angle setting).
  • Control: writes data.ctrl when the model has actuators, otherwise falls back to data.qfrc_applied with a Python PD loop.
  • Fixed vs floating base: a structural free joint (added via MjSpec), not a load-time flag.
  • Sensors: force-torque sensors are declared up front (ft_sensor_links); the toggle only gates reading, since MuJoCo sensors are compile-time.

Development

pip install -e ".[dev]"   # test + lint + build tooling
ruff check .
pytest -q

License

MIT (c) Saif Sidhik

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mujoco_robot-0.1.1.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mujoco_robot-0.1.1-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file mujoco_robot-0.1.1.tar.gz.

File metadata

  • Download URL: mujoco_robot-0.1.1.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mujoco_robot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2dd9dfc035300225f9bb51f93bc5b2532c9640191ade65e8109a7d7b8f969d49
MD5 85cef422cea6723c507c45de43dce440
BLAKE2b-256 08ec3db9b55df82035eb51f5e1b508cd6f9e4d8862a41f13117235a587b618e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujoco_robot-0.1.1.tar.gz:

Publisher: publish.yml on justagist/mujoco_robot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mujoco_robot-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mujoco_robot-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mujoco_robot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0702222155d4f781d6bbe1d9d9693a27985b2d9dbfe106b25a51ab66a8b48c03
MD5 167bb2901174d7b22cb0a4d5635ba069
BLAKE2b-256 bdd2a8fafe73a544688b477637b919ce0fb6db2c53dc9585d2b2fb9b5aec6b23

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujoco_robot-0.1.1-py3-none-any.whl:

Publisher: publish.yml on justagist/mujoco_robot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page