Python ARTUS Robotic Hand API
A Python API for controlling the ARTUS family of robotic hands (Lite, Lite+, Talos, Scorpion, Dex) by Sarcomere Dynamics Inc., over RS485/Modbus RTU or TCP.
Please contact the team if any issues arise through use of the API. See Software License.
[!IMPORTANT] Please read through this entire README and the User Manual before using the ARTUS hand. See the changelog folder for release notes and updates.
Table of Contents
- Quick Start
- Supported Hardware
- Documentation Map
- 1. Getting Started
- 2. Basic Usage
- 3. Control Examples
- Revision Control
- Appendix
Quick Start
For readers who already know their way around Python and just want the shortest path from clone to a moving joint:
- Install Python 3.10–3.13.
- Connect the hand's power harness and USB-C data cable (see 1.3).
- Set your hand model/port in
examples/config/robot_config.yaml. - Run
examples/general_example/general_example.pyand follow the prompts.
Everyone else, continue with Getting Started below — it walks through each of these steps in detail.
Supported Hardware
Every hand variant supported by the API has its own README covering wiring, joint maps, and calibration requirements specific to that model. Start there once your hand is connected.
| Hand | Left/Right | Calibration required | Hardware README |
|---|---|---|---|
| ARTUS Lite | Both | No | ARTUS_LITE.md |
| ARTUS Lite+ | Both | No | ARTUS_LITE_PLUS.md |
| ARTUS Talos | Both | Yes | ARTUS_TALOS.MD |
| ARTUS Scorpion | N/A (single DOF gripper) | Yes | ARTUS_SCORPION.md |
| ARTUS Dex | Both | No | hardware README pending — see ArtusAPI/robot/artus_dex/ source |
[!IMPORTANT] Talos and Scorpion will not enter an active targeting state until
calibrate()has been run. See 2.1 Normal Startup Procedure.
Before updating firmware or the API package, check docs/COMPATIBILITY.md for which versions are known to work together.
Documentation Map
Short guides for navigating the tree — useful if you are new to robotics or to this repo:
| Area | README |
|---|---|
| Python library layout | ArtusAPI/README.md |
| Supported hand models (code + datasheets) | ArtusAPI/robot/README.md |
| Runnable sample programs | examples/README.md |
Configuration file (robot_config.yaml) |
examples/config/README.md |
| Images and saved pose JSON | data/README.md |
| Experimental / internal scripts | test_workspace/README.md |
| API notes, CLI / flash docs, firmware compatibility | docs/README.md |
| Release-style notes | changelog/README.md |
| URDF ↔ real joint mapping | urdf/README.md |
1. Getting Started
The first step to working with an ARTUS hand is connecting to it and achieving joint control and feedback. It is highly recommended that this be done for the first time via the general example program. The sections below walk through everything needed to get there.
1.1 Software Requirements
- Python 3.10–3.13 — download here. On Windows, enable "disable PATH length limit" during setup.
- FTDI USB driver (Windows only) — required for the hand to be recognized as a USB device over USB-C. Download here.
[!NOTE] If you have multiple Python installations, make sure your
pipcommands target the same interpreter you'll use to run the API. Prefix commands with the full path to the intendedpython.exe/python3, or use a virtual environment.
1.2 Installing the Python API
There are two ways to install, depending on whether you plan to modify the source.
Use the cloned repository (for contributors / source changes)
git clone <this-repo>
cd Sarcomere_Dynamics_Resources
pip install -r requirements_v2.txt
1.3 Hardware Requirements
Connect power and data using the supplied cables. Please see robot's exact documentation pages for specific wiring.
[!NOTE] Wiring may vary by model — always check the hardware README for your specific hand.
2. Basic Usage
This section covers basic usage via ArtusAPI_V2 (see ArtusAPI/artus_api_new.py), the only supported entry point in this repository.
2.1 Normal Startup Procedure
- Check hardware — confirm the power connector is secure and, if using a wired connection (Serial or CANbus), that the cable is good.
- Connect — creating an
ArtusAPI_V2instance callsconnect()internally. If you disconnect manually, callconnect()again before continuing. - Wake up — call
wake_up()with the control mode appropriate for your application so the hand loads its configuration and enters a ready state. - Calibrate (if required) — run
calibrate()if your model requires it (see Supported Hardware). Otherwise the hand is ready to accept targets and report feedback.
[!NOTE] Exact
wake_up()parameters (e.g. position vs. velocity control) depend on your script — seeexamples/general_example/general_example.pyanddocs/API Functionality.md.
2.2 Normal Shutdown Procedure
- Send a zero position command to all joints so the hand opens.
- Once open, call
sleep()to save parameters to the SD card (if applicable). - Wait for the ACK — once received, the device can be powered off.
[!NOTE] Unlike the Artus Lite mk8 (which saved to SD card periodically), saving is now intentional and only happens on
sleep().
2.3 LED States
See the hardware README for your specific hand.
2.4 Running general_example.py
See the General Example README for full instructions.
3. Control Examples
3.1 GUI
Desktop UI for interactive testing. See the Artus GUI README.
3.2 Manus Glove Teleoperation
Drive an ARTUS hand from a Manus glove in real time. See the Manus Glove README.
3.3 MediaPipe Teleoperation
Drive an ARTUS hand from a webcam using Google MediaPipe hand tracking. See the MediaPipe Control README.
Revision Control
| Date | Revision | Changelog | Pip Release |
|---|---|---|---|
| Jul. 20, 2026 | v2.1 | 2026-07.md | - |
| Dec. 31, 2025 | v2.0 | 2025-12.md | - |
| Jun. 2, 2025 | v1.3.10 | 2025-06.md | v1.3.10 |
| Apr. 22, 2025 | v1.1.1 | readmes/documentation updated | - |
| Nov. 14, 2024 | v1.1 | firmware v1.1 release | v1.1 |
| Oct. 23, 2024 | v1.0.2 | awake parameter added, wake up function in connect | v1.0.1 |
| Oct. 9, 2024 | v1.0 | Artus Lite Release | v1.0 |
| Apr. 23, 2024 | v1.1b | Beta release - Artus Lite Mk 6 | - |
| Nov. 14, 2023 | v1.0b | Initial release - Artus Lite Mk 5 | - |
Appendix
- Artus API (
ArtusAPI_V2) — Main Python class that talks to ARTUS hands (Lite, Lite+, Talos, Scorpion, Dex, and related variants). The legacy v1artus_api.pyentry point has been removed from this repository. - API Docs — Background on the reasoning behind the API's functions.
Metadata
Release files for artusapi 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| artusapi-2.0.0.tar.gz | 52.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| artusapi-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 129.9 kB
Release files / artusapi-2.0.0.tar.gz
| Download URL | artusapi-2.0.0.tar.gz |
|---|---|
| Size | 52.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1debee9685422289756a0fc9cb788b33f6353a1c02c2de055a50334de89a6cd0
|
|
BLAKE2b-256 checksum How to use checksums |
354f22cccafb30f604c2d2eba824346d161e5f9601e03c55a95b197a88686988
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / artusapi-2.0.0-py3-none-any.whl
| Download URL | artusapi-2.0.0-py3-none-any.whl |
|---|---|
| Size | 77.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
727e0981953d09e0779194700e9b63ae1c9015ddfb7ad4a4c39a478ce4dd330a
|
|
BLAKE2b-256 checksum How to use checksums |
05ba2f27f77ca5eebf715fc47e1b302fffe268e8a3d749e6047836376adea01d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|