Running the Adeeb Robot Controller on Windows
Deploy the Adeeb Robot Controller on Windows and drive a Delta robot through the Python API.
May 21, 2026 · 7:45
Watch on YouTube . The written walkthrough below covers the same material in detail.
This is the sixth video in the Adeeb Robotics training series. It walks through deploying the Adeeb Robot Controller on Windows 11, configuring the EtherCAT interface, and commanding a single servo joint through the arc Python module — the same workflow shown in the Linux and macOS videos, adapted to the Windows platform.
Hardware setup
The demo runs on an Intel NUC mini PC booting Windows 11 from an external solid-state drive — a second OS alongside an existing Linux install on the same NUC. The NUC ships with 12 CPU cores, twice the 6 cores of the demo laptop, and that headroom matters: the Adeeb Robot Controller runs AI vision workloads that are computationally expensive, so the controller needs the additional cores to run reliably.
The Windows install is also tuned for deterministic operation. Microsoft publishes a guide for configuring Windows for IoT real-time operation, linked in the video description. Even so, a real-time-configured Windows install is not a true deterministic operating system, so keep background CPU load low while the controller is running to avoid runtime errors.
Downloading the release
The trial build is published on the Adeeb Robotics downloads page.
- Open the downloads page and locate the Adeeb Robot Controller package.
- Select the 2-hour free trial build for Windows.
- Download the package — the transfer takes a couple of minutes.
- Extract the folder and open it in your editor (the demo uses Visual Studio Code).
What’s in the package
The Windows build ships with a number of DLL dependencies bundled alongside the controller program. The package contents:
| Item | Purpose |
|---|---|
| Controller executable | The Adeeb Robot Controller program itself. |
| README | Instructions for running the controller. |
| ESI folder | EtherCAT slave description files supplied by the device vendor. |
| Python samples | Example Python scripts, including the Pack Expo demo used here. |
| Sample config files | Includes the Delta robot config used in this walkthrough. |
The Pack Expo demo (pack expo demo) is the same Python script used in the Linux and macOS training videos, and delta config is the Delta robot configuration file referenced throughout.
Configuration
Selecting the Ethernet interface
The controller binds to a named Ethernet adapter. On Windows, the controller does not use the adapter names reported by ipconfig — those names are ambiguous and not descriptive. Instead, it uses the adapter names provided by the controller library.
If you launch the controller with an interface name that does not exist, it will not start and the terminal prints the list of valid library-supplied adapter names to choose from. If you are unsure of the adapter name, launch with any value and read the correct name from that prompt, then set it in the config.
Before launching, close Visual Studio Code to free CPU and memory. Reducing background load lowers the chance of runtime errors, because the real-time-tuned Windows install is still not an ideal deterministic OS.
Launching the controller
From the downloads folder, enter the install folder and launch the controller with the Delta config:
.\controller.exe delta config
When the controller reports the MAC address of the interface, it has found the adapter and is running. With the controller up, open the Python scripts folder and run the Pack Expo demo:
python "pack expo demo.py"
The motor begins turning. At this point the controller is commanding motion as though a full Delta robot were attached, even though only a single servo and motor are on the bench.
Commanding a single joint
To make the motor turn as a single robot joint rather than a full-kinematics axis, stop the demo and edit the Delta config.
- Set the gear ratio to
1. The motor shaft then turns by the same amount the robot joint would turn, rather than the multiplied amount the default ratio produces. - Reset the servo drive so the position returns to zero. The encoder is configured as an incremental encoder for ease of use, so its position automatically returns to zero on reset. This is necessary because the current position may now sit outside the joint limits.
Relaunch the controller and rerun the demo.
Handling a position-outside-limits error
On rerun, the controller may report that the position is outside the limits. This happens when the combination of offsets in the config file produces a starting position beyond the joint limits.
The fix shown is to set the encoder offset position to 0, which guarantees the position starts from zero.
Warning: on a real system, set the encoder offset position with extreme care. This value defines your robot zero. If it is wrong, the robot can crash on startup.
With the gear ratio at 1 and the offset zeroed, the motor shaft turns far less than before — it now moves exactly as much as the corresponding robot joint would, confirming the single-joint configuration is correct.
Next steps
- Grab the trial build and ESI files from the downloads page and run the Pack Expo demo against your own servo.
- Review the full feature set on the Adeeb Robot Controller product page and the Adeeb Delta Robot page.
- The next video goes deeper into the Robot Controller software APIs exposed through the
arcPython module:
from arc import *
- Request a demo to see the controller driving a full multi-axis Delta robot.