File size: 4,656 Bytes
9722d7d | 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 | # rSkill manifest — moveit-eef-pose: plan to a Cartesian end-effector pose (ADR-0052)
#
# Wraps `moveit_msgs/action/MoveGroup`. `ros_integration.goal_builder: pose`
# selects the `PoseGoalRskill` adapter, which consumes a `pose` block (target
# position + quaternion orientation for a constrained link) and lowers it into
# MoveGroup position + orientation constraints. The generic Cartesian sibling
# of rskill-moveit-look-at (gaze is a computed-pose specialisation); new under
# ADR-0052's rskill-moveit-* family.
#
# Collision posture: MoveIt's internal FCL planner does self + planning-scene
# (world) collision checking at plan time. `plan_only: true` so OpenRAL's
# per-waypoint replay through /openral/candidate_action stays the only
# actuation path (the safety kernel checks every step). `chunk_size: 1` so the
# supervisor sees every waypoint.
schema_version: "0.1"
name: "OpenRAL/rskill-moveit-eef-pose"
version: "0.1.0"
license: "apache-2.0"
role: "s1"
kind: "ros_action"
# Any arm embodiment with a MoveIt configuration. The default goal targets the
# Franka demo (panda_arm group, panda_hand link); other embodiments override
# `request.group_name` + `pose.link_name` / `pose.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
# ADR-0022 — surfaced to the Reasoner LLM tool palette.
description: >
Plan and execute a collision-free motion that brings the end-effector link to
a target 6-DOF Cartesian pose (position + orientation) via MoveIt's MoveGroup
(self + planning-scene collision checked). Use when you have a Cartesian
end-effector goal (e.g. a pre-grasp pose); for a joint-space goal use
rskill-moveit-joints, and to aim a camera at a point use rskill-moveit-look-at.
actions:
- "reach"
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"
# ADR-0052 — selects the PoseGoalRskill goal-lowering adapter: the `pose`
# block below is lowered into `request.goal_constraints[0]` (position +
# orientation constraints) on the first step. Set `pose.tool_frame` to express
# the target for a TCP/tool frame (TF-looked-up link←tool offset); omit it to
# constrain `pose.link_name` directly.
goal_builder: "pose"
default_goal_json: |
{
"pose": {
"frame_id": "panda_link0",
"link_name": "panda_hand",
"position": [0.4, 0.0, 0.5],
"orientation": [0.0, 0.0, 0.0, 1.0],
"quaternion_order": "xyzw",
"position_tolerance_m": 0.01,
"orientation_tolerance_rad": 0.05
},
"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"
# ADR-0026 — per-skill JSON Schema surfaced to the Reasoner LLM tool palette.
# The LLM overrides the pose block's position/orientation; planner settings are
# inherited. orientation is a quaternion in pose.quaternion_order (default xyzw).
goal_params_schema:
type: object
description: >
Target 6-DOF Cartesian pose for the end-effector link. position is
[x, y, z] metres in pose.frame_id; orientation is a unit quaternion whose
component order is pose.quaternion_order (default "xyzw").
properties:
pose:
type: object
properties:
position:
type: array
items:
type: number
minItems: 3
maxItems: 3
description: "Target [x, y, z] metres in pose.frame_id."
orientation:
type: array
items:
type: number
minItems: 4
maxItems: 4
description: "Unit quaternion in pose.quaternion_order (default xyzw)."
required:
- position
- orientation
required:
- pose
|