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
- 📚 Read the documentation
- 💬 Join the community on Discord
- 📬 Contact us through openarm@enactic.ai
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5491b7aa7e3b87e9645df039e9ef65ae2bdd313f4779837ddebaa1409a93e386
|
|
| MD5 |
784749bedaf34bd112455ab692d71d25
|
|
| BLAKE2b-256 |
a0c47c735ef594fb02bd615772c114a8e228b4227de6a35646f92b5fc984b86e
|
Provenance
The following attestation bundles were made for openarm_ker-0.2.0.tar.gz:
Publisher:
package.yaml on enactic/openarm_ker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openarm_ker-0.2.0.tar.gz -
Subject digest:
5491b7aa7e3b87e9645df039e9ef65ae2bdd313f4779837ddebaa1409a93e386 - Sigstore transparency entry: 1964445432
- Sigstore integration time:
-
Permalink:
enactic/openarm_ker@a8ef4a7701b09abfc118200868c86339d4a5e4c8 -
Branch / Tag:
refs/tags/0.2.0 - Owner: https://github.com/enactic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
package.yaml@a8ef4a7701b09abfc118200868c86339d4a5e4c8 -
Trigger Event:
push
-
Statement type: