Skip to main content

SO-ARM101 Actuator Protocol driver for robot-md-gateway. RPN-000000000002.

Project description

so-arm101-actuator

PyPI

Actuator Protocol driver for the SO-ARM101 arm. RPN-000000000002 · pip install so-arm101-actuator

from so_arm101_actuator import SOArm101Actuator

actuator = SOArm101Actuator.from_default_port()  # /dev/ttyACM0 @ 1 Mbps
actuator.home()
actuator.move({"shoulder_pan": 0.3})
print(actuator.read_state())

Capabilities

  • move(joint_positions, *, timeout_s=5.0) — drive named joints to target radians; blocks until in tolerance or timeout.
  • home(*, timeout_s=10.0) — move to the configured zero pose.
  • read_state() — snapshot positions + best-effort motor temperatures.

What this is

This is the first real actuator driver registered against the post-2026-05-09-reset RobotRegistryFoundation. It bridges Hugging Face / The Robot Studio's SO-ARM101 hardware to robot-md-gateway's Actuator Protocol via entry-point dispatch.

For a step-by-step install + register + run walkthrough, see the robot-md cookbook beat 8 (will land in Phase 3 of the roadmap).

For one operator's full setup story, see the Bob case study (also Phase 3).

Examples

python -m so_arm101_actuator.examples.wave
python -m so_arm101_actuator.examples.move_to_home
python -m so_arm101_actuator.examples.read_state

Architecture

Two layers:

  • protocol.py — pure SCS/STS wire protocol on a serial.Serial-like.
  • actuator.py — Actuator Protocol implementation; depends only on protocol.py.

This separation lets you swap the protocol layer (alternative servo lib, simulator) without touching capability code.

Hardware tests

SO_ARM101_HARDWARE=1 pytest tests/test_hardware.py -v

Skipped by default. Run on real hardware only.

Operator overrides (v0.2.0+)

Two env vars allow operator-specific tuning without code changes. Both are JSON, partially merged with defaults.

# Override HOME_POSE_RAD for one joint (e.g., gravity-load on shoulder_lift)
export SO_ARM101_HOME_POSE_RAD='{"shoulder_lift": 0.10}'

# Tighten SAFE_RANGE_RAD for shoulder_pan
export SO_ARM101_SAFE_RANGE_RAD='{"shoulder_pan": [-0.5, 0.5]}'

HOME_POSE_RAD can also be set via the home_pose_rad= constructor kwarg (kwarg overrides env).

Sweep CLI (v0.2.0+)

A developer-facing range-of-motion test that drives all 6 joints with random poses and prints a live status table.

# 100 iterations, default seed
python -m so_arm101_actuator.sweep

# Dry-run (no hardware): print 10 planned poses to JSONL
python -m so_arm101_actuator.sweep --dry-run --iterations 10 --seed 42 --out /tmp/poses.jsonl

The sweep CLI is for hands-on hardware bring-up + demos. Cert evidence (bob.local/FULL-SWEEP-100) does NOT come from this CLI; it comes from opencastor-ops/scripts/hil/ orchestrating pre-signed envelopes through robot-md-gateway.

License

Apache-2.0.

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

so_arm101_actuator-0.2.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

so_arm101_actuator-0.2.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for so_arm101_actuator-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c00c9f6b15211bbbf37bffe54e571278be07efa2d6d1c029014b0fb4a7982f83
MD5 bd538e0817eaa26294be7d4a902c525e
BLAKE2b-256 43dffa3456e499704e98bd3d60f2a4f8202c0dfcbdf17cf8b49fb597608b6280

See more details on using hashes here.

Provenance

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

Publisher: release.yml on RobotRegistryFoundation/so-arm101-actuator

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

File details

Details for the file so_arm101_actuator-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for so_arm101_actuator-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 58e0ea9a3f04ab1b2ea7cfb87c33b442d38576f7157c6eee1ee20dea5df87c66
MD5 6c25b23c2e7e6da797fb9f8d17f72288
BLAKE2b-256 bbc99cebbd6c704e9485a9fd415e489eff96081593638dde60efb6aa8fe50da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for so_arm101_actuator-0.2.0-py3-none-any.whl:

Publisher: release.yml on RobotRegistryFoundation/so-arm101-actuator

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