# densut86/robotindo-4axis-robot-controller-desktop architecture

> Architecture diagram of the GitHub repository densut86/robotindo-4axis-robot-controller-desktop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/densut86/robotindo-4axis-robot-controller-desktop
- Repository: https://github.com/densut86/robotindo-4axis-robot-controller-desktop

## Overview

YASKI is a desktop GUI for controlling a four-axis FluidNC/GRBL-like robot. The main workflow is operator input in the GUI, conversion to G-code where needed, and dispatch through a TCP or serial controller connection; status and position return to the GUI. The README also documents file playback, teaching sequences, and Modbus sensor-triggered playback. The sampled Python excerpts are partial and show much of the application in one file, so the components below are conceptual responsibilities sharing that source path; uncertain internal wiring is omitted.

Main entry points: [`yaski1.3.py`](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py) (FluidNC client), [`arduinoModbusRTU.ino`](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/arduinoModbusRTU.ino) (Arduino Outseal sketch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_operator_ui["Operator controls"]
  node_gui["Controller GUI<br/>[yaski1.3.py]"]
  node_mdi_jog["MDI and jog<br/>[yaski1.3.py]"]
  node_status_view["Status and position<br/>[yaski1.3.py]"]
end

subgraph group_motion["Motion and playback"]
  node_kinematics["Kinematics and plot<br/>[yaski1.3.py]"]
  node_file_player["G-code file player<br/>[yaski1.3.py]"]
  node_teach_mode["Teaching sequences<br/>[yaski1.3.py]"]
end

subgraph group_connections["Device connections"]
  node_fluid_client["FluidNC client<br/>[yaski1.3.py]"]
end

subgraph group_sensor["Sensor integration"]
  node_modbus_listener["Modbus coil listener<br/>[yaski1.3.py]"]
  node_modbus_client["Modbus client<br/>[yaski1.3.py]"]
  node_arduino["Arduino Outseal sketch"]
end

node_operator(("Robot operator"))
node_fluidnc{{"FluidNC controller"}}
node_gcode_files["G-code files"]
node_sensor_device{{"Sensor device"}}

node_operator -->|"operates"| node_gui
node_gui -->|"dispatches input"| node_mdi_jog
node_mdi_jog -->|"converts coordinates"| node_kinematics
node_mdi_jog -->|"sends G-code"| node_fluid_client
node_file_player -->|"reads programs"| node_gcode_files
node_gui -->|"starts playback"| node_file_player
node_file_player -->|"sends G-code"| node_fluid_client
node_gui -->|"starts sequence"| node_teach_mode
node_teach_mode -->|"sends moves"| node_fluid_client
node_fluid_client -->|"sends commands"| node_fluidnc
node_fluidnc -->|"returns status"| node_fluid_client
node_fluid_client -->|"updates position"| node_status_view
node_status_view -->|"plots position"| node_kinematics
node_modbus_listener -->|"reads coils"| node_modbus_client
node_modbus_client -->|"Modbus RTU"| node_arduino
node_arduino -.->|"exposes coil state"| node_sensor_device
node_modbus_listener -->|"triggers next point"| node_teach_mode

click node_gui "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_mdi_jog "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_status_view "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_kinematics "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_file_player "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_teach_mode "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_fluid_client "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_modbus_listener "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_modbus_client "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py"
click node_arduino "https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/arduinoModbusRTU.ino"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gui,node_mdi_jog,node_status_view toneBlue
class node_kinematics,node_file_player,node_teach_mode toneAmber
class node_fluid_client toneMint
class node_modbus_listener,node_modbus_client,node_arduino toneRose
class node_operator,node_fluidnc,node_gcode_files,node_sensor_device toneIndigo
```

## Components

### Operator controls

- [Controller GUI](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [MDI and jog](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [Status and position](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`

### Motion and playback

- [Kinematics and plot](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [G-code file player](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [Teaching sequences](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`

### Device connections

- [FluidNC client](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`

### Sensor integration

- [Modbus coil listener](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [Modbus client](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/yaski1.3.py): `yaski1.3.py`
- [Arduino Outseal sketch](https://github.com/densut86/robotindo-4axis-robot-controller-desktop/blob/main/arduinoModbusRTU.ino): `arduinoModbusRTU.ino`

### Other components

- **Robot operator**
- **FluidNC controller**
- **G-code files**
- **Sensor device**

## Connections

- Robot operator → Controller GUI: operates
- Controller GUI → MDI and jog: dispatches input
- MDI and jog → Kinematics and plot: converts coordinates
- MDI and jog → FluidNC client: sends G-code
- G-code file player → G-code files: reads programs
- Controller GUI → G-code file player: starts playback
- G-code file player → FluidNC client: sends G-code
- Controller GUI → Teaching sequences: starts sequence
- Teaching sequences → FluidNC client: sends moves
- FluidNC client → FluidNC controller: sends commands
- FluidNC controller → FluidNC client: returns status
- FluidNC client → Status and position: updates position
- Status and position → Kinematics and plot: plots position
- Modbus coil listener → Modbus client: reads coils
- Modbus client → Arduino Outseal sketch: Modbus RTU
- Arduino Outseal sketch → Sensor device: exposes coil state
- Modbus coil listener → Teaching sequences: triggers next point
