OpenRAL/rskill-moveit-multi-joints
1
1# rSkill manifest — moveit-joints: plan to a joint configuration2#3# Wraps `moveit_msgs/action/MoveGroup`. `ros_integration.goal_builder: joint`4# selects the `JointGoalRskill` adapter, which consumes a `joint` block5# (`joint_names` + `positions`) and lowers it into a MoveGroup6# `joint_constraints` goal — the clean, LLM-facing form (positions, not7# hand-written constraint dicts). Renamed from `openral/rskill-moveit-plan-arm`8# as part of the `rskill-moveit-*` family (-joints / -eef-pose / -look-at9# over one ROSActionRskill engine).10#11# Collision posture: MoveIt's internal FCL planner does self + planning-scene12# (world) collision checking at plan time. `plan_only: true` so OpenRAL's13# per-waypoint replay through /openral/candidate_action stays the only14# actuation path (the safety kernel checks every step); move_group never drives15# its own controllers. `chunk_size: 1` so the supervisor sees every waypoint.16 17schema_version: "0.1"18name: "OpenRAL/rskill-moveit-multi-joints"19version: "0.1.0"20license: "apache-2.0"21role: "s1"22kind: "ros_action"23 24# Every arm embodiment OpenRAL ships a robot.yaml for. Whether a deployment can25# resolve this skill depends on whether a matching MoveIt config is running and26# whether the `joint` block below is correct for that robot's planning group.27# The Franka `panda_arm` group is the canonical example; for other embodiments28# copy this manifest and edit `joint.joint_names` + `request.group_name`.29embodiment_tags:30 - "franka_panda"31 - "ur5e"32 - "ur10e"33 - "so100_follower"34 - "openarm"35 - "rizon4"36 - "sawyer"37 - "widowx"38 39actuators_required:40 - kind: "joint_position"41 control_mode_semantics:42 mode: "absolute"43 44# REQUIRED for kind: ros_action — one waypoint per Action chunk so the safety45# supervisor's per-row envelope check sees every commanded position.46chunk_size: 147 48# Planning is slow on the first call (MoveIt typically 0.5–2 s on a clean49# scene); subsequent step() calls just dequeue cached waypoints.50latency_budget:51 per_chunk_ms: 2000.052 53# Surfaced to the Reasoner LLM tool palette.54description: >55 Plan and execute a collision-free motion to a target JOINT configuration via56 MoveIt's MoveGroup (self + planning-scene collision checked). Provide one57 target angle per planning-group joint. Defaults target the Franka Panda home58 pose; override the manifest to retarget. Use when you have a joint-space goal59 (e.g. a policy's in-distribution starting pose); for a Cartesian end-effector60 target use rskill-moveit-multi-eef_pose instead.61actions:62 - "reach"63objects: []64scenes: []65 66# Provenance — ROS-wrapped rSkill; paper_url carries the upstream link.67paper_url: "https://moveit.picknik.ai/"68 69ros_integration:70 package: "moveit_msgs"71 interface_type: "MoveGroup"72 interface_name: "/move_action"73 # `MoveGroup.Result.planned_trajectory.joint_trajectory` is reordered into the74 # host RobotDescription.joints order before per-waypoint chunk emission.75 result_trajectory_field: "planned_trajectory.joint_trajectory"76 # Selects the JointGoalRskill goal-lowering adapter: the `joint`77 # block below (joint_names + positions) is lowered into78 # `request.goal_constraints[0].joint_constraints` at configure time.79 goal_builder: "joint"80 # Franka Panda home pose (panda_arm group). For other embodiments override81 # `joint.joint_names` + `request.group_name`.82 default_goal_json: |83 {84 "joint": {85 "joint_names": ["panda_joint1", "panda_joint2", "panda_joint3", "panda_joint4", "panda_joint5", "panda_joint6", "panda_joint7"],86 "positions": [0.0, -0.785, 0.0, -2.356, 0.0, 1.571, 0.785],87 "position_tolerance_rad": 0.00188 },89 "request": {90 "group_name": "panda_arm",91 "num_planning_attempts": 5,92 "allowed_planning_time": 5.0,93 "max_velocity_scaling_factor": 0.3,94 "max_acceleration_scaling_factor": 0.3,95 "goal_constraints": []96 },97 "planning_options": {98 "plan_only": true,99 "replan": false100 }101 }102 ros_dependencies:103 - "ros-${ROS_DISTRO}-moveit"104 - "ros-${ROS_DISTRO}-moveit-resources-panda-moveit-config"105 106# Per-skill JSON Schema surfaced to the Reasoner LLM tool palette.107# The LLM overrides only `joint.positions` (one per planning-group joint, in108# the manifest's joint_names order); planner / tolerance defaults are inherited.109goal_params_schema:110 type: object111 description: >112 Target joint positions for MoveIt's MoveGroup against the planning group.113 Provide one entry per joint in the manifest's joint_names order.114 properties:115 joint:116 type: object117 properties:118 positions:119 type: array120 items:121 type: number122 minItems: 7123 maxItems: 7124 description: "Target joint angle (rad) per planning-group joint."125 required:126 - positions127 required:128 - joint129 