The first runtime version is now implemented.
scene_manager_node.pyowns active-scene loading, validation, publication, and MoveIt scene applicationscene_manager_core.pyowns shared workspace-document loading, normalization, persistence, and workspace save-path helpersmotion_execution_node.pyandfeasibility_service_node.pynow bootstrap fromGetActiveSceneand stay synced from/active_scene- launch wiring in
grasping_control/launch/motion_execution.launch.pynow startsscene_manager_nodeand can activate a default scene at startup
The scene-manager is a dedicated node that resolves package_name + workspace_file, loads workspace data into MoveIt, and publishes the runtime active-scene state so scene activation can change without restarting the arm stack.
scene_manager_node should be the only runtime component that:
- parses
workspace.yaml - converts workspace objects to MoveIt collision objects
- applies allowed object-link collision pairs
- updates the active workspace-area filter source
- publishes active-scene metadata
motion_execution_node and feasibility_service_node should keep motion planning and feasibility logic, but consume active scene state from the scene manager instead of owning scene parsing as long-term runtime state.
Services:
GetActiveScene- returns the current active scene metadataValidateWorkspaceDocument- validates a workspace document without applying it
Actions:
ActivateScene- activates a specific workspace scene referenceLoadSceneFromContent- loads a workspace document from content and activates it
Topic:
/active_scene- publishes the current active scene metadata
Default launch parameters used by the current bringup:
activate_scene_action_name:activate_sceneload_scene_from_content_action_name:load_scene_from_contentget_active_scene_service_name:get_active_scenevalidate_workspace_document_service_name:validate_workspace_documentactive_scene_topic:/active_scenestartup_activate_default_scene: optional bootstrap path for a known package-relative workspace file
The workspace_creation_node is the calibration and editing frontend. And,
- keep the interactive CLI capture loop
- reuse the shared scene-management core for document loading, normalization, persistence, and save-path handling
- avoid merging operator-interactive calibration behavior into the scene-manager runtime API
For the current single-robot scope:
- only one scene can be active at a time
- only one activation request should run at a time
- successful activation replaces the previous active scene atomically from the caller point of view
- scene changes should be explicit, not hidden inside task execution
- when the requested scene reference already matches the active scene and
force_reloadis false, the node reuses the current active scene instead of reapplying it
- end-to-end runtime validation is still needed against live MoveIt, registry activation, and full Omron bringup