File size: 5,087 Bytes
02cb0db d7dc28f 02cb0db d7dc28f 99ca4b3 d7dc28f 02cb0db d7dc28f 02cb0db d7dc28f 02cb0db d7dc28f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | # rSkill manifest — moveit-look-at: aim a robot camera at a 3-D point
#
# Wraps `moveit_msgs/action/MoveGroup`; the goal is authored as a `look_at`
# block (target point + camera name) instead of raw constraints:
# `ros_integration.goal_builder: look_at` selects the `LookAtRskill` adapter,
# which resolves the camera from the robot manifest (default "wrist";
# ROSConfigError listing available sensors when absent), reads the camera's
# current pose over TF2, computes the gaze pose (camera +Z hits the target,
# roll about the optical axis left free for reachability), and lowers it into
# MoveGroup position + orientation constraints for the camera's mount link.
#
# Renamed from `openral/rskill-look-at` as part of the `rskill-moveit-*`
# family (-joints / -eef-pose / -look-at over one ROSActionRskill engine).
#
# `plan_only: true` deliberately: OpenRAL's actuation path is the per-waypoint
# replay through /openral/candidate_action (safety kernel checks every step,
# HAL actuates). Letting move_group ALSO execute on its own controllers would
# bypass the kernel and double-drive the arm.
schema_version: "0.1"
name: "OpenRAL/rskill-moveit-multi-look_at"
version: "0.1.0"
license: "apache-2.0"
role: "s1"
kind: "ros_action"
# Any arm embodiment with a MoveIt configuration AND a body-mounted camera
# declared in its robot.yaml. The default goal targets the Franka demo
# (panda_arm group, LIBERO eye-in-hand on panda_hand); other embodiments
# override `request.group_name` + `look_at.camera` / `look_at.frame_id`.
embodiment_tags:
- "franka_panda"
- "ur5e"
- "ur10e"
- "so100_follower"
- "openarm"
- "rizon4"
- "sawyer"
- "widowx"
actuators_required:
- kind: "joint_position"
control_mode_semantics:
mode: "absolute"
# REQUIRED for kind: ros_action — one waypoint per Action chunk so the safety
# supervisor's per-row envelope check sees every commanded position.
chunk_size: 1
latency_budget:
per_chunk_ms: 2000.0
# Surfaced to the Reasoner LLM tool palette.
description: >
Aim a robot-mounted camera (default the wrist camera) at a 3-D point so a
later perception query or manipulation skill sees the object framed.
Plans a collision-aware arm motion via MoveIt that points the camera's
optical axis at look_at.target_xyz. Use after navigating to an approach
pose and before locate_in_view / a grasp skill.
actions:
- "look"
objects: []
scenes: []
# Provenance — ROS-wrapped rSkill; paper_url carries the upstream link.
paper_url: "https://moveit.picknik.ai/"
ros_integration:
package: "moveit_msgs"
interface_type: "MoveGroup"
interface_name: "/move_action"
result_trajectory_field: "planned_trajectory.joint_trajectory"
# Selects the LookAtRskill goal-lowering adapter: the
# `look_at` block below is consumed by the adapter (popped before the
# MoveGroup goal message is built); `request.goal_constraints` is filled in
# at dispatch.
goal_builder: "look_at"
# Defaults target the upstream `moveit_resources_panda_moveit_config` demo:
# planning frame `panda_link0`, LIBERO eye-in-hand camera on `panda_hand`.
# `look_at.target_xyz` is a reachable point on the demo's tabletop; real
# dispatches override it via goal_params_json.
default_goal_json: |
{
"look_at": {
"target_xyz": [0.5, 0.0, 0.2],
"frame_id": "panda_link0",
"camera": "wrist",
"standoff_m": null,
"position_tolerance_m": 0.02,
"orientation_tolerance_rad": 0.15
},
"request": {
"group_name": "panda_arm",
"num_planning_attempts": 5,
"allowed_planning_time": 5.0,
"max_velocity_scaling_factor": 0.3,
"max_acceleration_scaling_factor": 0.3,
"goal_constraints": []
},
"planning_options": {
"plan_only": true,
"replan": false
}
}
ros_dependencies:
- "ros-${ROS_DISTRO}-moveit"
- "ros-${ROS_DISTRO}-moveit-resources-panda-moveit-config"
# Per-skill JSON Schema surfaced to the Reasoner LLM tool palette.
# The LLM overrides only the look_at block; planner settings are inherited.
goal_params_schema:
type: object
description: >
Aim the named camera at a 3-D point. target_xyz is expressed in
look_at.frame_id (the planning frame). camera names a sensor from the
robot manifest (default "wrist"). Omit standoff_m to re-aim the camera
in place; set it to also move the camera to that distance from the
target along its current line of approach.
properties:
look_at:
type: object
properties:
target_xyz:
type: array
items:
type: number
minItems: 3
maxItems: 3
description: "Point to aim at, [x, y, z] metres in look_at.frame_id."
camera:
type: string
description: "Sensor name from the robot manifest. Default: wrist."
standoff_m:
type: number
description: >
Optional camera-to-target distance; omit to re-aim in place.
required:
- target_xyz
required:
- look_at
|