Back to packages

robonix.skill.hand_gesture

Make the D1 dexterous hand perform a finger "dance" — a rhythmic open/close wiggle across all fingers for a given duration. A single MCP tool for the D1 hand.

README

skill-hand-gesture-rbnx

中文版

robonix.skill.hand_gesture — makes the BeingBeyond D1 five-finger dexterous hand "dance": every finger wiggles open and closed rhythmically for a requested duration, then the hand returns to open. One MCP tool, hand only — it never moves the arm and never uses the camera.

Call semantics, parameters, boundaries and dependencies are covered in CAPABILITY.md (read at registration and handed to Atlas; pilot retrieves it through read_capability_doc). This file is about deployment and builds.

Capabilities

Contract Transport What it does
robonix/skill/hand_gesture/driver gRPC lifecycle
robonix/skill/hand_gesture/gesture_dance MCP dance for duration_s seconds (default 3, capped at 30)

Runtime dependencies

The skill is a pure robonix consumer: on_activate discovers the primitive below through atlas and drives it over gRPC throughout. It never opens the CAN bus itself.

Primitive Contracts used
robonix.primitive.beingbeyond.d1.hand hand/move_joint, hand/info

While the primitive is offline, on_activate returns Deferred to be retried rather than failing outright.

Configuration

None. The dance duration is a per-call MCP argument; the wiggle amplitude (0.1), step interval (0.1 s) and start pose are fixed to the SDK gesture_dance defaults. Pass config: {} in the deployment manifest (see config.spec).

Build and run

bash scripts/build.sh   # rbnx codegen --mcp, generating the typed MCP Request/Response classes
rbnx caps -v | grep hand_gesture
rbnx chat               # e.g. "wiggle your fingers" / "do a little dance"

Skill-kind packages stay INACTIVE after rbnx boot; the executor fires CMD_ACTIVATE on the first MCP call. That is the expected state, not a startup failure.

scripts/start.sh defaults to $HOME/miniconda3/envs/bb_d1_robonix/bin/python3 (which needs robonix_api + grpcio); override with HAND_GESTURE_PYTHON. There is no cleanup to do, so no scripts/stop.sh is provided.

Safety

The dance is an unloaded gesture and grasps nothing. Before starting, check there is nothing in the hand's way and that the fingers cannot foul the table or the arm. Any mid-loop error still commands the hand fully open, so it never stops half-clenched.

Layout

package_manifest.yaml   config.spec   CAPABILITY.md   README.md   README_CN.md
scripts/{build.sh, start.sh}
capabilities/{driver.v1.toml, gesture_dance.v1.toml, lib/hand_gesture/srv/GestureDance.srv}
hand_gesture_skill/{__init__.py, main.py, primitive_clients.py}

License

MulanPSL-2.0