Skip to main content
Ctrl+K
FGManip - Home FGManip - Home
  • User Guide
  • Contributing
    • GitHub
    • Website
    • User Guide
    • Contributing
      • GitHub
      • Website

      Section Navigation

      Get started

      • Installation
      • Quickstart

      Resources

      • Part-Annotated Object Library
      • Skill Library
        • Overview
        • Grasp Part
        • Toggle Part
        • Press Part
        • Rotate along
        • Flip
        • Slide along
        • Insert
        • Open Hinge
        • Multi-Skill
      • Tasks and Demonstrations

      Train and Evaluate

      • Data Workflow
        • Data Recording
        • Trajectory Replay
        • Dataset Merge
        • Format Conversion
      • Model Training
        • ACT
        • DP3
        • OpenVLA-OFT
        • Lerobot Pi05
        • StarVLA GR00T
      • Policy Evaluation
        • Evaluation Metrics
        • Leaderboard (Coming Soon)
      • User Guide
      • Skill Library

      Skill Library#

      FGManip provides a curated library of reusable, composable skills that form the building blocks of fine-grained manipulation. Unlike monolithic policies trained for narrow tasks, these skills are designed as atomic primitives that can be combined and sequenced to accomplish complex, part-oriented manipulation across diverse objects and environments. Each skill is implemented to operate on parts—the functional components of objects—enabling transfer across object instances and supporting scalable robot learning. Below is the complete set of skills in the library.

      Overview#

      All skills in the library:

      • Grasp Part

      • Toggle Part

      • Press Part

      • Rotate along

      • Flip

      • Slide along

      • Insert

      • Open Hinge

      • Multi-Skill

      • … The library is flexibly extensible.

      Grasp Part#

      Grasp Part

      Skill Description: Grasp Part enables the robot to grasp a specified part of an object. The part must be pre-annotated in the object’s grasp_poses.json.

      Environment: grasp_part (in FGManip/core/env.py)

      Key Parameters:

      • object_name (str): Object to grasp. Must match a folder under assets/. Examples: cabinet, bottle. Default: cabinet

      • part_name (str): Part to grasp. Must exist in assets/{object_name}/grasp_poses.json under grasp_parts. Examples: cabinet → up_handle, low_handle; bottle → cap. Supports fuzzy match. Default: handle

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Data Requirements: Each object needs grasp_poses.json with grasp_parts (per-part grasp matrices). Optional model_data.json for scale and init pose.

      Examples:

      object_name=bottle, part_name=body

      object_name=bottle, part_name=cap

      Toggle Part#

      Toggle Part

      Skill Description: Toggle Part enables the robot to press or flip a toggle part (e.g. button, switch) on an object to change its state.

      Environment: toggle_switch

      Key Parameters:

      • object_name (str): Object with the toggle part. Default: switch

      • part_name (str): The toggle part to press. Default: button

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=switch, part_name=button

      object_name=switch, part_name=button

      Press Part#

      Press Part

      Skill Description: Press Part enables the robot to press a specified part of an object to trigger an action or state change (e.g. buttons, keys).

      Environment: press_part

      Key Parameters:

      • object_name (str): Object with the pressable part. Default: switch

      • part_name (str): The part to press. Default: button

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=switch, part_name=button

      object_name=switch, part_name=button

      Rotate along#

      Rotate along

      Skill Description: Rotate along enables the robot to rotate a specified part of an object about an axis (e.g. knobs, lids, valve handles).

      Environment: rotate_along

      Key Parameters:

      • object_name (str): Object with the rotatable part.

      • part_name (str): The part to rotate (e.g. lid, knob).

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=coffee_machine, part_name=lid

      object_name=coffee_machine, part_name=lid

      Flip#

      Flip

      Skill Description: Flip enables the robot to flip or stand up an object or part (e.g. upright a fallen bottle).

      Environment: flip

      Key Parameters:

      • object_name (str): Object to flip. Default: bottle

      • part_name (str): The part to flip. Default: body

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=bottle, part_name=body

      Slide along#

      Slide along

      Skill Description: Slide along enables the robot to slide a specified part of an object along a trajectory or axis (e.g. drawers, cabinet doors).

      Environment: slide_along

      Key Parameters:

      • object_name (str): Object with the slidable part. Default: cabinet

      • part_name (str): The part to slide (e.g. handle, drawer). Default: handle

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=cabinet, part_name=handle

      object_name=cabinet, part_name=handle

      Insert#

      Insert

      Skill Description: Insert enables the robot to insert a part into a receptacle (e.g. peg-in-hole, plug-in-socket). Different insertion tasks use task-specific environments that share the same skill abstraction.

      Environments: insert_peg, insert_charger (and other task-specific variants)

      Key Parameters:

      • object_name (str): Object or part to insert; varies by env.

      • part_name (str): Target receptacle or alignment part; varies by env.

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      insert_charger

      insert_peg

      Open Hinge#

      Open Hinge

      Skill Description: Open Hinge enables the robot to open a hinged part of an object (e.g. lids, cabinet doors).

      Environment: open_hinge

      Key Parameters:

      • object_name (str): Object with the hinged part. Default: cabinet

      • part_name (str): The hinged part to open (e.g. lid, door). Default: lid

      • robot_uids (str): Robot model. Default: panda_wristcam

      • robot_init_qpos_noise (float): Std of initial joint position noise. Default: 0.02

      Examples:

      object_name=cabinet, part_name=lid

      Multi-Skill#

      Multi-Skill

      Skill Description: Multi-Skill composes multiple atomic skills (e.g. Grasp Part, Slide along) to accomplish complex tasks. Tasks are task-specific and need not map to a single fixed environment. Multi-skill tasks can be long-horizon, requiring sequential execution of several primitives.

      Examples:

      Stack cube

      Grasp the handle of the pot and move to right

      previous

      User Guide

      On this page
      • Overview
      • Grasp Part
      • Toggle Part
      • Press Part
      • Rotate along
      • Flip
      • Slide along
      • Insert
      • Open Hinge
      • Multi-Skill

      © Copyright 2024, FGManip Contributors.

      Created using Sphinx 6.2.1.

      Built with the PyData Sphinx Theme 0.16.1.