Skip to main content

A general Python interface class for robot simulations using PyBullet. Also provides an IK interface for multi-end-effector robots that uses bullet physics as a solver.

Project description

PyBullet Robot

PyPI version CI

This package provides:

  1. [BulletRobot]: A general Python interface class for robot simulations using PyBullet. Python API class to control and monitor the robot in the simulation.
  2. [PybulletIKInterface] class: A constraint-based inverse kinematics (IK) "solver" interface. Instead of solving IK analytically, it attaches PyBullet constraints that pull the requested end-effector/link frames towards their target poses, forward-simulates the physics until they settle, and reads back the resulting joint configuration as the IK solution. It supports tracking several frames at once (full 6-DOF pose targets and position-only targets), and floating-base robots (where the base pose is solved together with the joint angles).

Installation

From PyPI

pip install pybullet_robot

From source

pip install git+https://github.com/justagist/pyrcf

Development

Install in editable mode with the development extras (test + lint + build tooling):

git clone -b main https://github.com/justagist/pybullet_robot
cd pybullet_robot
pip install -e ".[dev]"

A dev container is provided for a reproducible environment in VS Code ("Reopen in Container").

Usage

See examples/ for runnable demos covering different robots and capabilities. Robot models are downloaded automatically on first run via robot_descriptions:

cd examples
python demo_task_space_control.py

Examples

Joint position control

Loading a robot, inspecting it, position control, and reading state. (demo_joint_position_control.py)

Joint position control demo

Task-space control

Example using a custom cartesian impedance / torque control for task-space control. (demo_task_space_control.py)

Task-space control demo

Headless IK + separate-sim control

Run the provided PybulletIKInterface headless as a pure solver and apply its solution to a robot controlled via position control. (demo_ik_headless_control.py)

Headless IK control demo

Whole-body / multi-end-effector IK

Floating-base IK tracking the body pose and all four feet simultaneously. (demo_quadruped_ik.py)

Quadruped whole-body IK demo

Interactive inverse kinematics (KUKA iiwa14)

Interactive IK: drag GUI sliders to set an end-effector target and the constraint-based solver reaches it. (demo_ik_interface.py) Visually similar to the headless IK demo above, so it has no separate clip; run it to try it interactively.

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

pybullet_robot-1.0.0.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

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

pybullet_robot-1.0.0-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file pybullet_robot-1.0.0.tar.gz.

File metadata

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

File hashes

Hashes for pybullet_robot-1.0.0.tar.gz
Algorithm Hash digest
SHA256 24b364c66da4fe808bbef530e0cd9330ab5f4e3ac55c8714b3687ac3e86264ba
MD5 ecf011308383d1eb064f21d6d8817aa4
BLAKE2b-256 6be224c4cd52c9ec5eceee00476c98760acc258ee6a6e21fa647c52fed84c3f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybullet_robot-1.0.0.tar.gz:

Publisher: publish.yml on justagist/pybullet_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 pybullet_robot-1.0.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pybullet_robot-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df4975517452dcb2974dc980085d9264eaa03ed55bbe8fbf37e1b12f670b127f
MD5 c2df59acfb6f313fb0c7f510e07fc997
BLAKE2b-256 0c64a4f7e3e9fef0a13ec1df242a7eb1a12e62c0bb143fcd92d248e5b057121a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pybullet_robot-1.0.0-py3-none-any.whl:

Publisher: publish.yml on justagist/pybullet_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