AdrianLlopart commited on
Commit
1a05632
Β·
verified Β·
1 Parent(s): b4d1525

Sync rSkill files from OpenRAL/openral@466e89dae (1 file(s))

Browse files
Files changed (1) hide show
  1. README.md +23 -27
README.md CHANGED
@@ -46,13 +46,10 @@ openral:
46
  > **OpenRAL rSkill** β€” wraps the upstream `moveit_msgs/action/MoveGroup`
47
  > action server so the Reasoner can dispatch a collision-free Cartesian
48
  > end-effector pose goal (position + orientation) through the same
49
- > `ExecuteRskill` path used by VLA skills. No model weights β€” the manifest
50
- > is the entire artefact. New under
51
- > the
52
- > `rskill-moveit-*` family.
53
 
54
- This package uses `kind: ros_action` β€” a discriminator
55
- on `RSkillManifest.kind` that selects the
56
  [`ROSActionRskill`](../../python/rskill/src/openral_rskill/ros_action_rskill.py)
57
  engine at resolve time, with `ros_integration.goal_builder: pose` selecting
58
  the [`PoseGoalRskill`](../../python/rskill/src/openral_rskill/pose_goal_rskill.py)
@@ -62,9 +59,8 @@ specialisation) and of [`rskill-moveit-multi-joints`](../rskill-moveit-joints/)
62
  (joint-space). The engine constructs an `rclpy.action.ActionClient` on the
63
  host `RskillRunnerNode`, sends one goal built from the lowered `pose` block,
64
  awaits the result, and replays the returned `trajectory_msgs/JointTrajectory`
65
- one waypoint per `step()` call onto `/openral/candidate_action` so the safety
66
- supervisor still applies its per-joint envelope check to every commanded
67
- position.
68
 
69
  ## What this skill does
70
 
@@ -135,12 +131,9 @@ trajectory replayed one waypoint per `step()` as a 1-row `JOINT_POSITION`
135
  | in | `pose.orientation` | unit quaternion in `pose.quaternion_order` (default `xyzw`) | LLM-overridable |
136
  | out | per-waypoint `Action` | `joint_targets=[[n_dof floats]]`, `horizon=1`, `is_terminal=False` | One chunk per `step()` until completion is signalled by exception |
137
 
138
- Why one row per chunk (`chunk_size: 1` is schema-enforced for
139
- `kind: ros_action`): the OpenRAL safety supervisor only validates row 0
140
- of every `ActionChunk` today
141
- ([`supervisor_node.py`](../../packages/openral_safety/openral_safety/supervisor_node.py)).
142
- Packing the full trajectory as one chunk with `horizon=N` would let
143
- waypoints 1..N actuate unchecked.
144
 
145
  ### GPU-accelerated planning (cuMotion)
146
 
@@ -212,7 +205,7 @@ reads the `link_name ← tool_frame` offset from TF:
212
  | `ros_integration.interface_name` | `/move_action` |
213
  | `ros_integration.goal_builder` | `pose` (selects `PoseGoalRskill`) |
214
  | `ros_integration.result_trajectory_field` | `planned_trajectory.joint_trajectory` |
215
- | `commercial_use_allowed` | `true` (apache-2.0) |
216
 
217
  Full schema:
218
  [`openral_core.schemas.RSkillManifest`](../../python/core/src/openral_core/schemas.py).
@@ -231,7 +224,10 @@ End-to-end, with a real MoveIt launch up:
231
  # 1. Bring up MoveIt for your robot (example: Panda)
232
  ros2 launch moveit_resources_panda_moveit_config demo.launch.py
233
 
234
- # 2. Dispatch a Cartesian end-effector pose goal:
 
 
 
235
  ros2 action send_goal /openral/execute_rskill openral_msgs/action/ExecuteRskill \
236
  "{rskill_id: 'OpenRAL/rskill-moveit-multi-eef_pose', deadline_s: 30.0, prompt: 'move to pre-grasp',
237
  goal_params_json: '{\"pose\": {\"position\": [0.4, 0.0, 0.5], \"orientation\": [0.0, 0.0, 0.0, 1.0]}}'}"
@@ -242,24 +238,24 @@ ros2 action send_goal /openral/execute_rskill openral_msgs/action/ExecuteRskill
242
  - **Reachability is the planner's call.** A pose outside the arm's dexterous
243
  workspace simply fails to plan β€” there is no base-repositioning fallback
244
  here (that is the navigate rung of the ladder).
245
- - **OpenRAL safety supervisor does not do collision checking.** We trust
246
- MoveIt's internal FCL pass; the per-joint envelope check still runs per
247
- waypoint. Kernel-side collision checking is a separate ADR + multi-PR effort.
248
- - **No velocity / jerk bound at the supervisor.** Same posture as
249
- `rskill-moveit-multi-joints`: the per-joint position envelope runs per
250
- waypoint; richer bounds are tracked separately.
 
251
 
252
  ## License
253
 
254
  The rSkill package itself (this manifest + README) is **Apache-2.0**. The
255
  wrapped MoveIt code (`moveit_msgs` IDL, `moveit2` planners) is **BSD-3-Clause**
256
- and lives outside this repository β€” installed via `ros-${ROS_DISTRO}-moveit`.
257
- Both postures are commercial-use-permissive.
258
 
259
  ## See also
260
 
261
- - MoveIt goal-builder library + rskill-moveit-* rename
262
- - ROS-wrapped rSkills
263
  - [`openral_rskill.ros_action_rskill`](../../python/rskill/src/openral_rskill/ros_action_rskill.py) β€” engine source
264
  - [`openral_rskill.pose_goal_rskill`](../../python/rskill/src/openral_rskill/pose_goal_rskill.py) β€” goal-lowering adapter
265
  - [`rskills/rskill-moveit-joints/`](../rskill-moveit-joints/) β€” sibling joint-space MoveIt wrapper
 
46
  > **OpenRAL rSkill** β€” wraps the upstream `moveit_msgs/action/MoveGroup`
47
  > action server so the Reasoner can dispatch a collision-free Cartesian
48
  > end-effector pose goal (position + orientation) through the same
49
+ > `ExecuteRskill` path used by VLA skills. No model weights: the manifest
50
+ > is the entire artefact. Part of the `rskill-moveit-*` family.
 
 
51
 
52
+ `kind: ros_action` (a discriminator on `RSkillManifest.kind`) selects the
 
53
  [`ROSActionRskill`](../../python/rskill/src/openral_rskill/ros_action_rskill.py)
54
  engine at resolve time, with `ros_integration.goal_builder: pose` selecting
55
  the [`PoseGoalRskill`](../../python/rskill/src/openral_rskill/pose_goal_rskill.py)
 
59
  (joint-space). The engine constructs an `rclpy.action.ActionClient` on the
60
  host `RskillRunnerNode`, sends one goal built from the lowered `pose` block,
61
  awaits the result, and replays the returned `trajectory_msgs/JointTrajectory`
62
+ one waypoint per `step()` call onto `/openral/candidate_action` so the C++
63
+ safety kernel still checks every commanded position.
 
64
 
65
  ## What this skill does
66
 
 
131
  | in | `pose.orientation` | unit quaternion in `pose.quaternion_order` (default `xyzw`) | LLM-overridable |
132
  | out | per-waypoint `Action` | `joint_targets=[[n_dof floats]]`, `horizon=1`, `is_terminal=False` | One chunk per `step()` until completion is signalled by exception |
133
 
134
+ `chunk_size: 1` is schema-enforced for `kind: ros_action`: each waypoint is
135
+ its own `ActionChunk`, so the C++ safety kernel validates (and can reject) it
136
+ before the next one is sent.
 
 
 
137
 
138
  ### GPU-accelerated planning (cuMotion)
139
 
 
205
  | `ros_integration.interface_name` | `/move_action` |
206
  | `ros_integration.goal_builder` | `pose` (selects `PoseGoalRskill`) |
207
  | `ros_integration.result_trajectory_field` | `planned_trajectory.joint_trajectory` |
208
+ | `is_commercial_use_allowed` | `true` (apache-2.0) |
209
 
210
  Full schema:
211
  [`openral_core.schemas.RSkillManifest`](../../python/core/src/openral_core/schemas.py).
 
224
  # 1. Bring up MoveIt for your robot (example: Panda)
225
  ros2 launch moveit_resources_panda_moveit_config demo.launch.py
226
 
227
+ # 2. Boot the OpenRAL deploy graph against the same robot
228
+ openral deploy sim --config scenes/deploy/<deploy-scene>.yaml --robot franka_panda
229
+
230
+ # 3. Dispatch a Cartesian end-effector pose goal:
231
  ros2 action send_goal /openral/execute_rskill openral_msgs/action/ExecuteRskill \
232
  "{rskill_id: 'OpenRAL/rskill-moveit-multi-eef_pose', deadline_s: 30.0, prompt: 'move to pre-grasp',
233
  goal_params_json: '{\"pose\": {\"position\": [0.4, 0.0, 0.5], \"orientation\": [0.0, 0.0, 0.0, 1.0]}}'}"
 
238
  - **Reachability is the planner's call.** A pose outside the arm's dexterous
239
  workspace simply fails to plan β€” there is no base-repositioning fallback
240
  here (that is the navigate rung of the ladder).
241
+ - **Kernel collision checks are deployment-configured.** MoveIt plans
242
+ against its own FCL `PlanningScene`; the C++ safety kernel separately checks
243
+ each waypoint against the per-joint position envelope and, when the deploy
244
+ enables them, self-collision and world-voxel collision.
245
+ - **No velocity / jerk bound on `JOINT_POSITION` chunks.** Same posture as
246
+ `rskill-moveit-multi-joints`: position limits per waypoint, not the rate
247
+ between waypoints.
248
 
249
  ## License
250
 
251
  The rSkill package itself (this manifest + README) is **Apache-2.0**. The
252
  wrapped MoveIt code (`moveit_msgs` IDL, `moveit2` planners) is **BSD-3-Clause**
253
+ and lives outside this repository, installed via `ros-${ROS_DISTRO}-moveit`.
254
+ Both are commercial-use-permissive.
255
 
256
  ## See also
257
 
258
+ - [Wrapped-ROS rSkills](../../docs/reference/rskills.md#wrapped-ros-rskills-kind-ros_action)
 
259
  - [`openral_rskill.ros_action_rskill`](../../python/rskill/src/openral_rskill/ros_action_rskill.py) β€” engine source
260
  - [`openral_rskill.pose_goal_rskill`](../../python/rskill/src/openral_rskill/pose_goal_rskill.py) β€” goal-lowering adapter
261
  - [`rskills/rskill-moveit-joints/`](../rskill-moveit-joints/) β€” sibling joint-space MoveIt wrapper