Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/callumjhays/bdsim_realtime
Real-time execution and remote monitoring and tuning of BDSim Block-Diagrams for modeling and control of Dynamical Systems
https://github.com/callumjhays/bdsim_realtime
bdsim block-diagram computation-graph computer-vision control control-flow control-system data-flow modeling opencv python realtime remote-control rtos signal-anaylsis simulation telemetry tuner tuning-interface webapplication
Last synced: 4 months ago
JSON representation
Real-time execution and remote monitoring and tuning of BDSim Block-Diagrams for modeling and control of Dynamical Systems
- Host: GitHub
- URL: https://github.com/callumjhays/bdsim_realtime
- Owner: CallumJHays
- Created: 2020-10-21T02:48:18.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-05T05:57:45.000Z (about 2 years ago)
- Last Synced: 2024-10-11T16:22:50.048Z (4 months ago)
- Topics: bdsim, block-diagram, computation-graph, computer-vision, control, control-flow, control-system, data-flow, modeling, opencv, python, realtime, remote-control, rtos, signal-anaylsis, simulation, telemetry, tuner, tuning-interface, webapplication
- Language: Python
- Homepage:
- Size: 8.52 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# 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](./demo.gif)
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
```bash
pip install "git+https://github.com/CallumJHays/bdsim_realtime#egg=bdsim_realtime[opencv]"
```## Usage
First, start the server and keep it running:
```bash
python -m bdsim_realtime.webapp
```Then, add and run your bdsim script,
```python
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](http://localhost:8080)
## Development
### Setup
```bash
python -m venv .venv # create venv
source .venv/bin/activate # activate venvpip 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
```