An application that connects to a robot for advanced controls and visualization of data.
Project description
DaedalusLink
DaedalusLink is a lightweight Python library for building robot control GUIs over WebSockets.
Robots can expose a JSON-based interface, and DaedalusLink automatically maps it into GUI elements (buttons, sliders, joysticks, etc.).
Features
- Simple WebSocket-based protocol (no heavy dependencies)
- JSON → GUI auto-generation
- Supports buttons, sliders and joysticks
- Heartbeat signal to detect connection issues
Installation
pip install daedaluslink
Quick example
from daedaluslink import DaedalusLink
gui = DaedalusLink(name="R2D2", link_id=1)
gui.add_button("forward", command="MOVE_FORWARD", position=[0, 2], size=[4, 1])
gui.add_button("backward", command="MOVE_BACKWARD", position=[4, 2], size=[4, 1])
gui.add_joystick("move", axes=["X", "Y"], command="move", position=[2, 7], size=[6, 6])
gui.add_slider("Joint 1", command="j1", position=[0, 3], size=[1, 9])
gui.add_slider("Joint 2", command="j2", position=[1, 3], size=[1, 9])
@gui.on("MOVE_FORWARD")
def forward(pressed: bool):
if pressed:
print("forward pressed")
else:
print("forward released")
@gui.on("MOVE_BACKWARD")
def backward(pressed: bool):
if pressed:
print("backward pressed")
else:
print("backward released")
@gui.on("move")
def on_move(x: int, y: int):
print(f"Joystick moved → x={x}, y={y}")
@gui.on("j1")
def sliderj1(x: int):
print(f"slider j1 moved → {x}")
@gui.on("j2")
def sliderj2(x: int):
print(f"slider j2 moved → {x}")
gui.run(port=8081)
Message Protocol
- Button press → "MOVE_FORWARD" -> handler gets true
- Button release → "!MOVE_FORWARD" -> handler gets false
- Joystick → "move 120,-30" → handler gets (120, -30)
- Slider → "slider 42" → handler gets 42
- Heartbeat → Client sends {"type":"ack"}, server responds with ack
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daedaluslink-0.1.0.tar.gz.
File metadata
- Download URL: daedaluslink-0.1.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
830954d3238949925185e39c44e1d8bad8f4b48c80df94dada3b95b2d3321822
|
|
| MD5 |
542d58e8ef06a965233535a56fa0879e
|
|
| BLAKE2b-256 |
e91c091851133346ead98deb8906c229f6552f9af544322e5f61c52f39306894
|
File details
Details for the file daedaluslink-0.1.0-py3-none-any.whl.
File metadata
- Download URL: daedaluslink-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da6cdf73f0c48606ed2b75c1374ba5a79d46be4de33ca967e7f06b1d90d62612
|
|
| MD5 |
b9c8d1a70692c7f485817b079829c461
|
|
| BLAKE2b-256 |
d0fe4429501325ae08d788c5f172b23fd4842b43f921f8ea94b4c612621017cd
|