The grasping runtime now distinguishes between workspace calibration files and the currently active runtime scene.
workspace_creation_node.pycreates or edits workspace YAML filesscene_manager_core.pyowns the shared workspace-document loading, normalization, and persistence helpers used by calibration and runtime scene activationscene_manager_node.pyresolves and activates one workspace file as the current runtime scenemotion_execution_node.pyandfeasibility_service_node.pyconsume the active scene rather than owning workspace parsing themselves
To run the system without a robot, use the use_demo:=true launch parameter.
This checkout currently includes motion_execution.launch.py under grasping_control/launch. That launch now starts scene_manager_node together with the arm execution and optional feasibility nodes.
Each robot stack (TM, UR, etc.) should provide its own launch file for motion execution. The launch file should include the motion_execution.launch.py from this package and have its own motion configuration and workspace configuration files.
The robot-specific launch should provide, at minimum:
- a motion configuration file for
motion_execution_node - a default scene reference for
scene_manager_node, typicallydefault_scene_packageplusworkspace_file - matching scene API names when integrating with a mobile-manipulator scene registry
For mobile manipulation, the expected flow is:
- mobile-manipulator
scene_registry_noderesolves a scene name fromscenes.yaml - grasping
scene_manager_nodeactivates the referenced workspace file - arm execution and feasibility nodes observe the updated
/active_scenestate
This means the workspace YAML on disk is not the live runtime source of truth after startup. The live source of truth is the scene currently held by scene_manager_node and published through GetActiveScene plus /active_scene.
Following are some examples,