Robotics
English
OpenRAL
rskill
ros2
moveit
franka_panda
ur5e
ur10e
so100_follower
openarm
rizon4
sawyer
widowx
rskill-kind:ros_action
rskill-role:s1
embodiment:franka_panda
embodiment:ur5e
embodiment:ur10e
embodiment:so100_follower
embodiment:openarm
embodiment:rizon4
embodiment:sawyer
embodiment:widowx
rskill-license:apache-2.0
Sync rSkill files from OpenRAL/openral@466e89dae (1 file(s))
Browse files
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
|
| 50 |
-
> is the entire artefact.
|
| 51 |
-
> the
|
| 52 |
-
> `rskill-moveit-*` family.
|
| 53 |
|
| 54 |
-
|
| 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
|
| 66 |
-
|
| 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 |
-
|
| 139 |
-
|
| 140 |
-
|
| 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 |
-
| `
|
| 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.
|
|
|
|
|
|
|
|
|
|
| 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 |
-
- **
|
| 246 |
-
|
| 247 |
-
waypoint
|
| 248 |
-
|
| 249 |
-
|
| 250 |
-
|
|
|
|
| 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
|
| 257 |
-
Both
|
| 258 |
|
| 259 |
## See also
|
| 260 |
|
| 261 |
-
-
|
| 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
|