--- title: "rtint-gui: Desktop GUI for Real-Time Control" summary: "A desktop application to acquire signals, identify plant dynamics and design feedback control on a real-time target." tags: ["Software", "Control"] status: "Active" date: 2026-09-01 repo: "https://gitlab.esrf.fr/dehaeze/real-time-interface-gui" docs: "https://dehaeze.gitlab-pages.esrf.fr/real-time-interface-gui/" pypi: "https://pypi.org/project/rtint-gui/" --- ## Overview `rtint-gui` is a desktop application for working with a real-time target that runs a Resyst server. It is built on top of [rtint]({{< relref "real-time-interface" >}}), which handles the communication with the target, and follows the usual steps of a control task: 1. **Connect** to a running server. 2. **Acquire** signals from the target. 3. **Analyse** the records as time traces and spectra (PSD / ASD). 4. **Identify** the plant dynamics by measuring frequency responses. 5. **Design** feedback control from the identified dynamics. Each step is a page of the application. ## Pages - **Signal Analysis**: choose counters and model signals, set a duration, watch the acquisition live, then compute power spectra with configurable window, overlap and averaging. - **Dynamical Identification**: excite the plant with a generator and estimate its frequency response (Bode plot, coherence, and an RGA plot for multi-input multi-output systems). Open-loop and closed-loop identification are supported. - **Transfer Function Analysis**: overlay measured responses with the Bode plots of the filters running on the target, and with their products. - **Feedback Control Design**: from an identified plant and the filters used as controller, compute characteristic loci, sensitivity and complementary sensitivity, the modulus margin and a Nyquist stability verdict. - **Filters, motors, EtherCAT, parameters and more**: inspect and edit what the real-time model exposes. Results are saved as MATLAB `.mat` files, so they can be reopened in MATLAB or Python. The analysis pages also work offline on previously saved data, without a target. ## Installation ```bash pipx install rtint-gui # or: uv tool install rtint-gui rtint-gui ``` Python 3.12 or 3.13 is required. The interface uses PySide6 and pyqtgraph. Running `rtint-gui --offline` starts it without a real-time target. The [documentation](https://dehaeze.gitlab-pages.esrf.fr/real-time-interface-gui/) has a guide for each page and a description of the `.mat` file format. ## Related - [rtint]({{< relref "real-time-interface" >}}): the Python package this application is built on.