Use when asked to control the MomoAgent robotic arm through quick_control_api on http://127.0.0.1:8010. Covers session connect/disconnect, robot state inspection, joint-step motion, Cartesian jog, home, stop, face/person follow, and idle scan. Prefer these HTTP endpoints instead of opening a second direct hardware session.
Use this skill to control the arm through quick_control_api on http://127.0.0.1:8010.
Prefer these API endpoints over any legacy direct-SDK control path. The API is the control surface for:
Do not use /api/v1/agent/* for arm motion. Those are for the text agent, not robot actuation.
quick_control_api must already be running on 127.0.0.1:8010.curl on this machine, add --noproxy "*" for localhost requests.face_loc should normally already be running on 127.0.0.1:8000 unless the caller gives another latest_url.curl --noproxy "*" http://127.0.0.1:8010/api/v1/health
curl --noproxy "*" http://127.0.0.1:8010/api/v1/session/status
data.connected is false, connect the real arm.curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/session/connect \
-H 'Content-Type: application/json' \
-d '{"prefer_real":true,"allow_sim_fallback":false}'
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/session/disconnect
Use this before or after motion when the caller wants current pose or joint data.
curl --noproxy "*" http://127.0.0.1:8010/api/v1/robot/state
Useful joint index mapping for joint-step:
0: shoulder_pan1: shoulder_lift2: elbow_flex3: wrist_flex4: wrist_roll5: gripperIf the user asks for a specific joint by name, convert it to this index mapping.
Use joint-step when the user asks for a precise joint adjustment, pan / tilt adjustment, wrist move, or gripper move.
Request shape:
joint_index: 0 to 5delta_deg: signed delta in degreesspeed_percent: 1 to 100, default 50Example:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/motion/joint-step \
-H 'Content-Type: application/json' \
-d '{"joint_index":0,"delta_deg":5.0,"speed_percent":30}'
Guidance:
2 to 5 degrees.joint_index=5 with a small signed step unless the user gave a known convention.Use cartesian-jog when the user wants the end-effector or camera to move in space rather than rotate a named joint.
Allowed axis values:
+X, -X, +Y, -Y, +Z, -Z+RX, -RX, +RY, -RY, +RZ, -RZRequest shape:
axis: requiredcoord_frame: base or tool, default basejog_mode: step or continuous, default stepstep_dist_mm: translation amount, default 5.0step_angle_deg: rotation amount, default 5.0speed_percent: 1 to 100, default 50Example:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/motion/cartesian-jog \
-H 'Content-Type: application/json' \
-d '{"axis":"+Y","coord_frame":"base","jog_mode":"step","step_dist_mm":5.0,"step_angle_deg":5.0,"speed_percent":25}'
Guidance:
jog_mode="step" for almost all conversational control requests.2 to 10 mm unless the user explicitly wants a larger move.tool frame only when the user clearly wants motion relative to the tool direction.Use home when the user asks for home, reset pose, startup pose, or return-to-origin behavior.
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/motion/home \
-H 'Content-Type: application/json' \
-d '{"source":"home","speed_percent":40}'
Allowed source values:
homeoriginzerostartupWhen unsure, use home.
Use stop immediately if:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/motion/stop
Important:
/motion/* command also stops active follow or idle-scan behavior.Use this when the user asks for face follow, person tracking, subject tracking, 主播跟随, or “keep the person in frame”.
Start with a compact payload unless the caller asks for special tuning:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/follow/start \
-H 'Content-Type: application/json' \
-d '{"target_kind":"face","enable_idle_scan_fallback":true}'
Status:
curl --noproxy "*" http://127.0.0.1:8010/api/v1/follow/status
Stop:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/follow/stop
Key request fields:
target_kind: face, person, or genericenable_idle_scan_fallback: whether to switch into idle scan when the target disappearslatest_url: default is http://127.0.0.1:8000/latestDecision rules:
target_kind="face" by default.enable_idle_scan_fallback=true for demo mode unless the user explicitly wants pure follow only.Use this when the user asks for standby cruise, patrol motion, idle movement, or “don’t keep the camera frozen”.
Start:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/idle-scan/start \
-H 'Content-Type: application/json' \
-d '{"pan_joint":"shoulder_pan","tilt_joint":"elbow_flex","speed_percent":25,"pan_range_deg":10.0,"tilt_range_deg":8.0,"move_duration_min_sec":1.2,"move_duration_max_sec":2.8,"dwell_sec_min":0.8,"dwell_sec_max":2.5}'
Minimal payload if defaults are fine:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/idle-scan/start \
-H 'Content-Type: application/json' \
-d '{}'
Status:
curl --noproxy "*" http://127.0.0.1:8010/api/v1/idle-scan/status
Stop:
curl --noproxy "*" -X POST http://127.0.0.1:8010/api/v1/idle-scan/stop
joint-step or cartesian-jog, not follow or idle scan.joint-step.cartesian-jog.home.follow/start.idle-scan/start.motion/stop first.NOT_CONNECTED.robot/state to inspect before making a follow-up move when the caller wants precise positioning.follow/start and idle-scan/start replace existing background behavior workers.