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