Skip to main content

Teleoperation system for OpenArm robots using KER devices

Project description

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

Related Links

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.

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

openarm_ker-0.2.0.tar.gz (12.8 kB view details)

Uploaded Source

File details

Details for the file openarm_ker-0.2.0.tar.gz.

File metadata

  • Download URL: openarm_ker-0.2.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openarm_ker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5491b7aa7e3b87e9645df039e9ef65ae2bdd313f4779837ddebaa1409a93e386
MD5 784749bedaf34bd112455ab692d71d25
BLAKE2b-256 a0c47c735ef594fb02bd615772c114a8e228b4227de6a35646f92b5fc984b86e

See more details on using hashes here.

Provenance

The following attestation bundles were made for openarm_ker-0.2.0.tar.gz:

Publisher: package.yaml on enactic/openarm_ker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page