Skip to main content

arm-manipulate

Use when the user asks the robot to pick up, grab, grasp, place, move, hand over, or manipulate a physical object using the robotic arm or gripper. Triggers on "pick up", "grab", "pick", "place", "put X on Y", "hand me", "move the X", "get the X", "assemble", "sort", "stack", "lift", "drop", "set down", "give me", "bring me".

インストールへ移動

ソース情報

リポジトリ
craigm26/OpenCastor
ソースの最終更新活動
2026年3月17日 18:41
検出された SKILL.md の言語
英語
スター
28
フォーク
5

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
5 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
arm-manipulate
description
Use when the user asks the robot to pick up, grab, grasp, place, move, hand over, or manipulate a physical object using the robotic arm or gripper. Triggers on "pick up", "grab", "pick", "place", "put X on Y", "hand me", "move the X", "get the X", "assemble", "sort", "stack", "lift", "drop", "set down", "give me", "bring me".
version
1.1
requires
["control","vision","gripper"]
consent
required
tools
["get_camera_frame","get_distance","move","grip"]
max_iterations
12
# Arm Manipulate Skill Pick up, place, or manipulate objects using the robotic arm and gripper. ## Protocol 66 — MANDATORY **You MUST request user consent before ANY arm or gripper movement.** Do NOT call `move()` or `grip()` until the user has explicitly confirmed. If consent is not yet granted: describe the plan and ask. Stop there. ## Steps ### 1. Visual confirmation - Call `get_camera_frame()` — locate the target object in the scene - If object not clearly visible: ask user to adjust placement or camera angle - Call `get_distance()` — confirm target is within arm reach (typically < 0.6m) ### 2. Pre-grasp assessment Describe what you see and your intended approach: "I can see [object description] approximately [distance]m away. I plan to [approach + grasp plan]. Shall I proceed?" ### 3. Request consent — WAIT for "yes" / "confirm" / "go ahead" ### 4. Approach (after consent) - `move()` to pre-grasp position (slow, incremental) - `get_distance()` check — stop if < 0.05m from object unexpectedly ### 5. Grasp - `grip("open")` — open gripper fully - `move()` to grasp position (slow) - `grip("close")` — close gripper - `get_camera_frame()` — visual confirmation of grasp ### 6. Transport - Lift / move to target position - `move()` incrementally, checking clearance ### 7. Release - Position above target location - `grip("open")` — release object - `move()` retreat to safe position - Confirm completion ## Safety rules - Maximum gripper force: use default — never override force limits - Always visual-confirm before closing gripper (avoid crushing objects) - If grasp fails (camera shows object not held): stop and report - Never move arm at high speed near humans ## References See `references/grasp-patterns.md` for object-type-specific grasp strategies. See `references/workspace-bounds.md` for joint limits and reachable zones. ## Gotchas - **Gripper already closed** — if `grip("close")` is called when gripper is already holding something, it's a no-op; always `grip("open")` first to reset - **SO-ARM101 joint 3 (shoulder_lift) is sensitive** — move in small increments (< 10° per step); large moves trigger the voltage error watchdog - **Camera parallax** — the arm camera and the description camera may not be the same; an object that looks "at 0.4m" in the wide camera may be at 0.35m from the gripper; close the last 5cm slowly - **Grasp confirmation** — `get_camera_frame()` after closing gripper: if the object is missing from its original position AND in the gripper zone → success; if still on table → grasp failed, retry with better positioning - **"Sort" tasks** — don't try to plan the full sort upfront; pick one object, place it, confirm, then ask if user wants to continue; don't do multi-step fully autonomous runs without re-confirming - **Feetech STS3215 max torque** — the default gripper uses around 30% torque for soft objects; increasing force to grab something that won't grip is usually the wrong move — check for object geometry issues instead ## Example User: "Pick up the red Lego brick" → `get_camera_frame()` → see brick at 0.4m → `get_distance()` → 0.38m clear → "I can see a red 2×4 Lego brick about 0.4m away on the table. I plan to approach, open the gripper, grasp it, and lift it. Shall I proceed?" → User: "yes" → `grip("open")` → `move(approach)` → `grip("close")` → `get_camera_frame()` → confirm → report
GitHubで見る