Skip to main content

Real-time execution and remote monitoring and tuning of BDSim Block-Diagrams for modelling and control of Dynamical Systems

Project description

BDSim Realtime

Real-time execution and remote monitoring and tuning of BDSim Block-Diagrams for modelling and control of Dynamical Systems. See https://github.com/petercorke/bdsim for the base framework and simulation package.

TODO: more docs

BDSim Web-Tuner

Web-based telemetry and parameter tuning interface for BDSim

Demo

Note: Screen-recording lead to low FPS - usual FPS was around 30 on the laptop used (max for webcam).

Note: under heavy development (pre-alpha). These instructions will not fully work at the time of writing, but is supposed to give an idea of the usage once released.

Installation

pip install "bdsim_realtime[opencv]" # opencv optional

Usage

First, start the server and keep it running:

python -m bdsim_realtime.webapp

Then, add and run your bdsim script,

import bdsim, numpy as np
import bdsim_realtime

# setup block-diagram and tuner client
bd = bdsim.BDSim(packages="bdsim_realtime").blockdiagram()

# All TunableBlocks within this context manager will register their parameters swith the Tuner
with bdsim_realtime.tuning.tuners.TcpClientTuner() as tuner:
    # use first local camera available
    clock = bd.clock(24, unit='Hz')
    bgr = bd.CAMERA(0, clock=clock)

    # display in web stream
    bd.DISPLAY(bgr, name="BGR Stream", web_stream_host=tuner, show_fps=True)

    # tune system parameters in the web editor
    gain = tuner.param(1, min=0, max=100)

    # stream some telemetry data (random for demo)
    data = bd.FUNCTION(
        lambda _: (gain.val * np.random.rand(3)).tolist(),
        nin=1, # unused import required here to use function as a Clocked Source Block
        nout=3
    )
    bd.connect(bgr, data)

    bd.TUNERSCOPE(
        data[0], data[1], data[2],
        nin=3,
        labels=['x', 'y', 'z'],
        name='Random Data',
        tuner=tuner)

bd.compile() # perform verification
bdsim_realtime.run(bd, tuner=tuner) # run forever

Now access the tuner at http://localhost:8080

Development

Setup

python -m venv .venv # create venv
source .venv/bin/activate # activate venv

pip install -e ".[opencv]" # install in editable symlink mode
npm i # install JS deps

Frontend

npm run dev # run hot-reloaded app

Backend

Same as non-development version. Run:

python -m bdsim_realtime.webapp

And then run your example / test script:

python examples/blob_detector_tuner.py

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

bdsim_realtime-1.0.1-py3.10.egg (230.6 kB view details)

Uploaded Source

File details

Details for the file bdsim_realtime-1.0.1-py3.10.egg.

File metadata

  • Download URL: bdsim_realtime-1.0.1-py3.10.egg
  • Upload date:
  • Size: 230.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for bdsim_realtime-1.0.1-py3.10.egg
Algorithm Hash digest
SHA256 5eeb6d3b2c0bd5d8064152ea3aad3e337e5cd3ad804d0b122b818b9fc272d802
MD5 da685fa23534f4655adfe4a320d6be86
BLAKE2b-256 e76d4605d968fa2313017775812ea41b5ca5506219c2bf850dc40f031e34130b

See more details on using hashes here.

Supported by

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