This release is a pre-release and may not be stable for production use.
Aero Open SDK — Python Interface for TetherIA's Robotic Hand
Aero Open Hand is a 7-DoF tendon-driven robotic hand for dexterous manipulation and research.
The SDK enables full control via Python. Perform homing, calibration, and precise motion control with ease.
⚙️ Installation
The SDK is currently tested for Python 3.10 and above.
📦 Install via pip
pip install aero-open-sdk
🧩 Install from source (editable mode)
-
Clone the repository to your local machine:
git clone https://github.com/TetherIA/aero-hand-open.git
-
Navigate to the cloned repository directory:
cd sdk
-
Install the package in editable mode:
pip install -e .
🖥️ One-Time Setup
When setting up your hand for the first time, our setup GUI helps you configure motor IDs and test motor connections.
After installation, launch the Setup GUI with:
aero-open-gui
This provides an interactive interface to configure your hand.
🔌 Serial Port Setup
Aero Hand connects to the host PC via a serial (USB) interface. To operate the SDK, you must specify the correct serial port for your device.
🐧 Linux
Most Linux systems assign the device path as /dev/ttyACM0 or /dev/ttyUSB0. You can list connected serial devices with:
ls /dev/ttyACM* /dev/ttyUSB*
💡 Persistent Device Path (Recommended)
Device names like /dev/ttyUSB0 can change each time you reconnect.
To get a persistent name, use the by-id symlink instead:
ls -l /dev/serial/by-id/
This will show you a list of connected serial devices with more descriptive names. Look for the one that corresponds to your Aero Hand. Which will look something like:
usb-Espressif_USB_JTAG_serial_debug_unit_D8:3B:DA:45:C8:1C-if00
Then initialize your hand using that path:
from aero_open_sdk.aero_hand import AeroHand
aero_hand = AeroHand(
port="/dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_D8:3B:DA:45:C8:1C-if00"
)
✅ This ensures your connection always points to the correct device, even if you unplug and replug the hand or change the USB port.
🪟 Windows
On Windows, the device will appear as a COM port like COM3 or COM4. You can find the correct COM port by checking the Device Manager under "Ports (COM & LPT)".
You can then Initialize your hand with the detected COM port:
from aero_open_sdk.aero_hand import AeroHand
aero_hand = AeroHand(port="COM3")
💡 Making the COM Port Persistent
Windows does not have a /by-id/ system like Linux, so the COM number can change if you plug the device into a different USB port.
To make it permanent, you can assign a fixed COM number:
- Plug in the Aero Hand and open Device Manager.
- Find it under Ports (COM & LPT).
- Right-click → Properties → Port Settings → Advanced.
- In COM Port Number, select an unused port (e.g., COM5).
- Click OK to save.
You can now always use this COM port when initializing the SDK.
💡 Examples
To integrate the SDK into your own code, refer to the examples folder for sample files demonstrating basic usage.
🧰 Troubleshooting
1. Installation Fails (pip install error)
If installation fails, try the following steps:
-
Check your Python version:
Make sure you have Python 3.10 or higher installed.
-
🔧 Upgrade pip to the latest version:
Our package requires an up-to-date version of pip.
You can upgrade pip with:
pip install --upgrade pip
On Windows, if you see error like "pip is not recognized", use the py launcher command instead:
```bash
py -m pip install --upgrade pip
```
2. Path Mismatch on Windows
-
You may not have the Python Scripts path added to your system PATH environment variable.
-
To fix this, you can either:
- Add the Python Scripts directory (e.g.,
C:\Users\<YourName>\AppData\Local\Programs\Python\Python310\Scripts) to your system PATH. - Or use the
pylauncher command to launch the GUI after installation:py -m aero_open_sdk
- Create a virtual environment and install the package there.
python -m venv venv .\venv\Scripts\activate pip install aero-open-sdk aero-open-gui
- Add the Python Scripts directory (e.g.,
3. Linux Troubleshooting: Serial Port Permission
If you see a permission error when connecting to the serial port (e.g., /dev/ttyACM0), do the following:
- Find your username:
whoami
- Add your user to the
dialoutgroup (replaceyourusernamewith the output fromwhoami):sudo usermod -a -G dialout yourusername
- Restart your system (or log out and log back in).
- After restart, open a terminal and run:
groups
You should see your username anddialoutlisted. - Try connecting to the serial port again in the GUI.
If you still see permission errors, check device permissions with:
ls -l /dev/ttyACM0
You may need to temporarily set permissions:
sudo chmod 666 /dev/ttyACM0
💬 Support
If you encounter issues or have feature requests:
- Open a GitHub Issue
- Contact us at contact@tetheria.ai
🤝 Contribution
We welcome community contributions!
If you'd like to improve the SDK, fix bugs, or add new features:
-
Fork this repository.
-
Create a new branch for your changes.
git checkout -b feature/your-feature-name
-
Commit your changes with clear messages.
-
Push your branch to your fork.
-
Open a Pull Request (PR) describing your updates.
⚖️ License
This project is licensed under the Apache License 2.0.
Built with ❤️ by TetherIA.ai
Metadata
Release files for aero-open-sdk 0.1.0.dev1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aero_open_sdk-0.1.0.dev1.tar.gz | 16.3 kB | Without provenance | Details for aero_open_sdk-0.1.0.dev1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aero_open_sdk-0.1.0.dev1-py3-none-any.whl | Python 3 | none | any | Details for aero_open_sdk-0.1.0.dev1-py3-none-any.whl |
Total release size: 37.2 kB
Release files / aero_open_sdk-0.1.0.dev1.tar.gz
| Download URL | aero_open_sdk-0.1.0.dev1.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
684589c1a7d61df8845a32ad8138b71ed1f866614424a16d87cf193f073ed664
|
|
BLAKE2b-256 checksum How to use checksums |
65e578bae86288f810d18eac22fcac3162c134c080acfe38f12141d082387b09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.18
|
Release files / aero_open_sdk-0.1.0.dev1-py3-none-any.whl
| Download URL | aero_open_sdk-0.1.0.dev1-py3-none-any.whl |
|---|---|
| Size | 20.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb57b58dcf935938e725684a0771c0ef15fac36f431c8e78338a94aff4095ac5
|
|
BLAKE2b-256 checksum How to use checksums |
977cee13d43da99a500c9a69a04b562452526972d012d080c9c1e58110fcfaa0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.18
|
Security for aero-open-sdk 0.1.0.dev1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.