Skip to main content
arXiv Discord Twitter Follow Website
GitHub stars Tests

Orca Core is the core control package of the ORCA Hand. It's used to abstract hardware, provide scripts for calibration, tensioning and to control the hand with simple high-level control methods in joint space. While working directly with core will let you interact with your ORCA Hand on a deep level, the Orca Ui repository (found at: https://github.com/orcahand/orca_ui) can let users get started right away, helping you setup/maintain your hand, tune its performance, and better understand its capabilities.

What's new in 0.13.0

  • Guided tensioning (scripts/guided_tension.py, v2.1 hands): motors pull at max_current, settle where they stopped, then hold at each motor's ceiling while you ratchet. Avoid hard pushes on a finger while the motors hold, because they may loosen the tendon. Its currents can be overridden per motor family under guided_tension_currents: in config.yaml.
  • Slack test and tension sweep: new routines in orca_core.maintenance (run_slack_test, run_tension_sweep), with currents per motor family. They refuse to run while a joint-feedback loop is running. Feetech values are provisional, and on Feetech a slack test pass can miss small slack.
  • Manual calibration: run_calibration(manual=True) asks you to move each joint to its stops by hand, following manual_calibration_sequence: in config.yaml, and lets you step back to redo a stop.
  • Hardware versions: boards report three digits (210 = v2.1.0, 211 = v2.1.1). Older boards that report 21 or 2 are still understood, and a v2.1.1 hand also gets joint_roms_v211:.
  • Records: tensioning records live in setup.yaml beside the config. Older last_tension.yaml and tension_progress.yaml are still read.
  • Touch sensors: the sensing link reads whatever bytes have arrived and ignores replies to earlier requests, so touch keeps working while the program is busy. Before 0.13.0, a busy program could lose touch until it reconnected.

Get Started

To get started with Orca Core, follow these steps:

Pre-installation steps

  1. Git clone the orca_core repository:

    #use any preferred method, ssh clone shown here
    git clone git@github.com:orcahand/orca_core.git
    
  2. Install uv (found at: https://docs.astral.sh/uv/getting-started/)

Installing the repository

  1. Sync a local development environment with uv:

    uv sync --group dev
    

    This creates a local .venv and installs the package plus development dependencies.

  2. Run commands through uv:

    uv run pytest
    

    If you prefer an activated shell, you can still use:

    source .venv/bin/activate      # macOS / Linux
    .venv\Scripts\activate         # Windows
    

    End users who do not use uv can still install the package with:

    pip install .
    

Post-installation sample usage scripts

  1. Check the configuration file:

    • Review the config file (e.g., orca_core/models/v2/orcahand-right/config.yaml) and make sure it matches your hardware setup.
  2. Run the tension and calibration scripts:

    uv run python scripts/detect.py
    uv run python scripts/guided_tension.py orca_core/models/v2/orcahand-right/config.yaml
    uv run python scripts/calibrate.py orca_core/models/v2/orcahand-right/config.yaml
    

    detect.py only reads: it shows which model, motor type and hardware version is plugged in. Replace the path with that model's folder. Guided tensioning needs v2.1 hardware; on v2.0, use scripts/tension.py instead. Tension first and calibrate last.

    Calibration and tensioning records are saved beside the config.yaml you load. With more than one hand of the same model, give each hand its own copy of the config and point every script at it, including teleoperation's --model_path.

  3. Move the hand to the neutral position:

    uv run python scripts/neutral.py orca_core/models/v2/orcahand-right/config.yaml
    

Troubleshooting

Serial Port Permissions (Linux)

On Linux, the serial port (e.g., /dev/ttyACM0) is owned by the dialout group. If your user is not in this group, you will get a permission denied error and motors won't be detected.

Permanent fix (requires re-login):

sudo usermod -aG dialout $USER

Temporary fix (resets on reboot/replug):

sudo chmod 666 /dev/ttyACM0

Windows

Supported on Windows 10 and 11; no permission setup is needed. Ports are named COM3, COM4, ... and are listed with:

uv run python -m serial.tools.list_ports -v

Driver notes, latency settings and the first-connection checklist: Running on Windows.

Serial port, baudrate, and motor type

By default these are all auto-detected at connect time.

However, you can declare them explicitly in config.yaml. Useful when:

  • multiple hands are connected at once → port disambiguates which one
  • motors run at a non-default baudrate → baudrate skips the probe sweep
  • the auto-detection picks the wrong family → motor_type forces a specific one
# Optional overrides:   auto-detected if omitted
port: /dev/ttyACM0      # /dev/cu.usbmodemXXXX on macOS, COM3 on Windows
baudrate: 1000000       # 1M for v2; 3M for v1
motor_type: dynamixel   # or 'feetech'

Metadata

Release files for orca-core 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orca-core 0.13.0
File Size Uploaded Provenance Actions
orca_core-0.13.0.tar.gz 761.4 kB With provenance Details for orca_core-0.13.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for orca-core 0.13.0
File Interpreter ABI Platform Actions
orca_core-0.13.0-py3-none-any.whl Python 3 none any Details for orca_core-0.13.0-py3-none-any.whl

Total release size: 1.1 MB

Release files / orca_core-0.13.0.tar.gz

Download URL orca_core-0.13.0.tar.gz
Size 761.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d21d13da7e58728444e0aa0ddf00bbcb44b1d777d5b8ae5289c8d8f809bfc111
BLAKE2b-256 checksum
How to use checksums
24ba4eb5245fccc08bd6295adad25b171c13acb1182ce37c9e6b3417439c24cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.

Transparency log

Release files / orca_core-0.13.0-py3-none-any.whl

Download URL orca_core-0.13.0-py3-none-any.whl
Size 366.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d687621ee13f24dcac8ae7b6cce379cf0425dc68147a9374a86a24959e6a996a
BLAKE2b-256 checksum
How to use checksums
a6494a9cafa473ec8c12934a84bf8aae785da8d513587a17e7b50720ba1d7cd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.

Transparency log

Security for orca-core 0.13.0

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for orca_core-0.13.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 10, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page