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