Add Projects section with inverted pendulum and real-time interface pages
This commit is contained in:
1 parent
0097be4114
commit
0699938cd5
17 files changed
+357
No files matched your search
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: "rtint: Python Interface to Real-Time Targets"
|
||||
summary: "A Python package to control and monitor Simulink models running on a real-time target machine, such as a Speedgoat."
|
||||
tags: ["Software", "Control"]
|
||||
status: "Active"
|
||||
date: 2026-10-01
|
||||
repo: "https://gitlab.esrf.fr/dehaeze/real-time-interface"
|
||||
pypi: "https://pypi.org/project/rtint/"
|
||||
---
|
||||
<!-- TODO: confirm public URL -->
|
||||
|
||||
## Overview
|
||||
|
||||
`rtint` is a Python package that talks to Simulink models running on a real-time target machine, through a Resyst server.
|
||||
It wraps the server's client API so that the parts of a real-time model (motors, filters, feedback loops, signals and so on) can be used as ordinary Python objects from a script or an interactive session.
|
||||
|
||||
It is used at the ESRF to commission and tune mechatronic systems whose control runs on a real-time target.
|
||||
For a graphical front end built on top of it, see [rtint-gui]({{< relref "real-time-interface-gui" >}}).
|
||||
|
||||
## What it covers
|
||||
|
||||
Each part of the real-time model has its own controller object, available as an attribute of the main `RtintController`:
|
||||
|
||||
- **Motors**: start, stop, move and read the state.
|
||||
- **Regulation**: switch feedback loops on and off.
|
||||
- **Filters**: read and change filter parameters, for example low-pass, PID and notch filters, and compute their frequency responses.
|
||||
- **Signals and parameters**: read and write model signals and tunable parameters.
|
||||
- **Acquisition**: record signals at the model sampling rate.
|
||||
- **Signal generators**: sine, chirp and other excitation signals, useful for system identification.
|
||||
- **Triggers, lookup tables, EtherCAT slaves and 2D scans.**
|
||||
|
||||
Most objects can print a summary table of their state in the terminal.
|
||||
|
||||
## Example
|
||||
|
||||
```python
|
||||
from rtint.rtint_hardware import RtintController
|
||||
|
||||
config = {
|
||||
"server": "my-server-hostname",
|
||||
"port": 8080,
|
||||
}
|
||||
|
||||
controller = RtintController("my_target", config)
|
||||
controller._run_model("my_model")
|
||||
|
||||
# Access hardware components
|
||||
controller.motor.start()
|
||||
controller.regul.on()
|
||||
controller.filter.low_pass(wn=100, xi=0.707)
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install rtint
|
||||
```
|
||||
|
||||
Python 3.9 to 3.13 is supported.
|
||||
The package depends on `resyst-client`, `numpy`, `scipy`, `matplotlib`, `gevent`, `treelib` and `tabulate`.
|
||||
A running Resyst server and a real-time model are needed to do anything useful with it.
|
||||
|
||||
## Related
|
||||
|
||||
- [rtint-gui]({{< relref "real-time-interface-gui" >}}): desktop application built on this package.
|
||||
Reference in new issue
Block a user