Add Projects section with inverted pendulum and real-time interface pages

This commit is contained in:
tdehaeze committed 2026-10-17 21:49:47 +02:00
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.