Skip to main content

bdsim: Block Diagram Simulation for Python

bdsim logo
A Pythonic block-diagram environment for the simulation and analysis of dynamic systems.

Block diagram thinking → Python coding

JupyterLite PyPI version Documentation

GitHubWikiChangelogInstallation


Status & Project Health

Build Status Downloads Python Version Coverage License: MIT

Ecosystem & Dependencies

A Python Robotics Package QUT Centre for Robotics Open Source

powered by NumPy powered by SciPy powered by Matplotlib Powered by Spatial Maths

Synopsis

bdsim bridges the gap between mathematical block diagrams and executable Python code. Unlike traditional graphical-only tools, it treats modelling as code, allowing you to define, simulate, and analyze continuous-time, discrete-time, or hybrid systems within a modern software engineering workflow. Wires in bdsim aren't limited to scalars; they pass NumPy arrays, dictionaries, or even SpatialMath objects seamlessly through your system, integrating directly with the Robotics and Machine Vision toolboxes.

🚀 Key Features

  • Python-First Workflow: Define your systems in pure Python code. Use your preferred IDE (like VS Code), manage versions with Git, and integrate with standard unit-testing frameworks.
  • Rich Data Types: Wires in bdsim aren't limited to scalars. Seamlessly pass NumPy arrays, dictionaries, or complex objects like SE3 and SO3 from the spatialmath-python library.
  • Modular & Extensible: Adding new functionality is straightforward. Create custom blocks by simply subclassing the Block class.
  • Hybrid Ecosystem: Native integration with the Robotics Toolbox and Machine Vision Toolbox for Python.
  • Powerful Editor: Includes bdedit, a PySide-based graphical editor for visual system design and discovery.
  • Publication Ready: Export diagrams or simulation data to to high-quality formats such as PDF or SVG for use in publications.

💻 Quick start

You can install bdsim directly from PyPI:

pip install bdsim

To include the graphical editor (bdedit) and its dependencies:

pip install bdsim[editor]

Install locally with help from the detailed installation guide.

Or skip setup and run the browser-based JupyterLite examples.

Example

The power of bdsim lies in its conciseness. The step response of a simple first-order system can be defined and simulated in just a few lines of code:

import bdsim

sim = bdsim.BDSim()
bd = sim.blockdiagram()

# Define blocks
step = bd.STEP(T=1, pos=1)
plant = bd.LTI_SISO(1, [1, 1]) # 1/(s+1)
scope = bd.SCOPE()

# Connect blocks
bd.connect(step, plant)
bd.connect(plant, scope)

bd.compile()
out = sim.run(bd, T=5)

🔍 Why bdsim?

In contrast to traditional graphical simulation tools, bdsim treats modelling as code. This ensures:

  • Better Version Control: No more opaque binary blobs. Your models are searchable, diffable text.

  • Seamless Integration: Incorporate SciPy solvers, PyTorch models, or custom robotic vision pipelines directly into your simulation loops.

  • Scalability: Programmatically generate massive block diagrams or run large-scale batch simulations on headless servers.

📚 Documentation

Full Documentation: https://petercorke.github.io/bdsim/

Wiki: Access the community wiki for deep dives into specific block behaviours and tutorials.

Download files

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

Source Distribution

bdsim-1.3.0.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

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

bdsim-1.3.0-py3-none-any.whl (616.6 kB view details)

Uploaded Python 3

File details

Details for the file bdsim-1.3.0.tar.gz.

File metadata

  • Download URL: bdsim-1.3.0.tar.gz
  • Upload date:
  • Size: 6.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bdsim-1.3.0.tar.gz
Algorithm Hash digest
SHA256 4b97c47576930dc98a77b0ddbd0476131e1957219a71098c4f0795aa327e8456
MD5 5a8836c0f8b7158112acf2b408fb33bd
BLAKE2b-256 265d8d8f1ddea76b71889c933c579cf80374fd16238fa5c2c932d3897db03cff

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdsim-1.3.0.tar.gz:

Publisher: release.yml on petercorke/bdsim

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

File details

Details for the file bdsim-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: bdsim-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 616.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bdsim-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 53814f6dc7448bc0cbb53aac27a9b6639fc18ed6d5038f00942d9be92238740d
MD5 a82b36c5162165b1f98f0a1580b10278
BLAKE2b-256 bff82a12fe9f23b8af626648069ca5ebca99c73edd7a2e36c046ee40134e4e19

See more details on using hashes here.

Provenance

The following attestation bundles were made for bdsim-1.3.0-py3-none-any.whl:

Publisher: release.yml on petercorke/bdsim

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

Release history Release notifications | RSS feed

1.4.0

2 files

This release

1.3.0 This release

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

0.9.2

1 file

0.9.1

1 file

0.9.0

1 file

0.7.2

1 file

0.7.1

1 file

0.7

1 file

0.6

1 file

0.5.2

1 file

0.5.1

1 file

0.5

1 file

Supported by

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