Skip to main content

OpenArm KER

A teleoperation system for OpenArm robots using KER (Kinematic Equivalent Replica).

Features

  • Joint mapping: Flexible configuration-based mapping from leader to follower joints
  • USB communication: Interface with M5Stack CoreS3 via USB vendor mode

Quick Start

1. Install system dependencies

sudo apt install libusb-1.0-0-dev

2. Set up udev rules (run once)

USB vendor mode only (normal use):

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="303a", MODE="0666"' | sudo tee /etc/udev/rules.d/99-m5stack.rules
sudo udevadm control --reload-rules && sudo udevadm trigger

If you also want to flash firmware (adds stable device name /dev/m5_ker_485):

Put M5Stack into flashing mode (hold RST 3 seconds until green LED lights up), then run:

SERIAL=$(udevadm info -q property -n /dev/ttyACM0 | grep ID_SERIAL_SHORT | cut -d= -f2)
sudo tee /etc/udev/rules.d/99-m5stack.rules << EOF
# USB vendor mode (normal operation)
SUBSYSTEM=="usb", ATTRS{idVendor}=="303a", MODE="0666"

# Serial mode (flashing) with stable device name
SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", ATTRS{serial}=="$SERIAL", MODE="0666", SYMLINK+="m5_ker_485"
EOF
sudo udevadm control --reload-rules && sudo udevadm trigger

Press RST once to reboot normally.

3. Install

uv pip install openarm_ker

4. Connect M5Stack and verify

Plug the M5Stack CoreS3 into your PC via USB and run:

openarm-ker-cli ping

Expected output:

{
  "fw": "v1.0.0",
  "hw": "KER-v1.0.0",
  "updated": "2026-05-25"
}

5. Sample usage

from openarm_ker import KERStream

with KERStream(transport="usb") as stream:
    data = stream.latest()
    if data is not None:
        ts      = data["timestamp"]
        angles  = data["angles"]
        enc_val = data["encoder_value"]
        enc_btn = data["encoder_button"]
        angles_str = " | ".join([f"CH{i+1:02d}: {a:8.2f}°" for i, a in enumerate(angles)])
        print(f"TS: {ts:10d} | {angles_str} | ENC: {enc_val:4d} (Btn: {int(enc_btn)})", end='\r')

CLI

# Check device connection and fetch schema
openarm-ker-cli ping

# Stream raw data to terminal
openarm-ker-cli stream

# Serial transport
openarm-ker-cli stream --transport serial --port /dev/m5_ker_485 --baud 2000000

License

Licensed under the Apache License 2.0. See LICENSE.txt for details.

Copyright 2026 Enactic, Inc.

Code of Conduct

All participation in the OpenArm project is governed by our Code of Conduct.

Metadata

Release files for openarm-ker 0.3.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 openarm-ker 0.3.0
File Size Uploaded
openarm_ker-0.3.0.tar.gz 21.8 kB Details

Release files / openarm_ker-0.3.0.tar.gz

Download URL openarm_ker-0.3.0.tar.gz
Size 21.8 kB
Tags Source
SHA-256 checksum
How to use checksums
82acfbe372c841e379e641978cc8d71533bcad5a9e7482e5402e343841e770dd
BLAKE2b-256 checksum
How to use checksums
be52864fd7c8b3dc74de2771caec60ea697cec81ee8332124d52016e6d3ff207
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

1 release file

0.2.0

1 release file

0.1.0

1 release file

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