@memoarchitect/ontology 0.13.2 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +61 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// The system of systems: the robot cell, three independently
|
|
2
|
+
// developed and released systems working together for a procedure none of
|
|
3
|
+
// them performs alone. Only this level names the systems together.
|
|
4
|
+
package robot_cell_family_sos {
|
|
5
|
+
private import memo_core_common::*;
|
|
6
|
+
private import memo_core_common::MemoIdentity;
|
|
7
|
+
private import memo_architecture_logical_structure::*;
|
|
8
|
+
private import robot_cell_family_icds::*;
|
|
9
|
+
private import robot_cell_family_navigation::*;
|
|
10
|
+
private import robot_cell_family_manipulation::*;
|
|
11
|
+
private import robot_cell_family_perception::*;
|
|
12
|
+
|
|
13
|
+
part def RoboticCell specializes SystemOfSystems {
|
|
14
|
+
@MemoIdentity { :>> providedId = "RCF-SOS-001"; :>> label = "Robot Cell"; }
|
|
15
|
+
attribute :>> systemBoundaryDescription = "The navigation, manipulation and perception systems as used together in one workcell.";
|
|
16
|
+
attribute :>> constituentOwnership = "Each system is developed, released and approved on its own; the cell is the validated configuration of system releases.";
|
|
17
|
+
|
|
18
|
+
part navigation : NavigationSystem :> constituentSystem;
|
|
19
|
+
part manipulation : ManipulatorSystem :> constituentSystem;
|
|
20
|
+
part perception : PerceptionSystem :> constituentSystem;
|
|
21
|
+
|
|
22
|
+
interface pointCloudFeed : PerceptionToNavigationIcd
|
|
23
|
+
connect perception.pPointCloudOut to navigation.pPointCloudIn;
|
|
24
|
+
interface graspEventFeed : ManipulationToNavigationIcd
|
|
25
|
+
connect manipulation.pGraspEventOut to navigation.pGraspEventIn;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
part robotCell : RoboticCell {
|
|
29
|
+
@MemoIdentity { :>> providedId = "RCF-SOS-002"; :>> label = "Robot Cell"; }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Clinical use cases: their subject is the system of systems, and each
|
|
2
|
+
// includes the system use cases it is made of.
|
|
3
|
+
package robot_cell_family_operational_use_cases {
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_common::MemoIdentity;
|
|
6
|
+
private import memo_core_enumerations::*;
|
|
7
|
+
private import memo_architecture_operational_use_cases::*;
|
|
8
|
+
private import robot_cell_family_shared::*;
|
|
9
|
+
private import robot_cell_family_sos::*;
|
|
10
|
+
private import robot_cell_family_navigation::*;
|
|
11
|
+
private import robot_cell_family_manipulation::*;
|
|
12
|
+
private import robot_cell_family_perception::*;
|
|
13
|
+
|
|
14
|
+
use case ucPerformPickAndPlace : UseCase {
|
|
15
|
+
@MemoIdentity { :>> providedId = "RCF-UC-001"; :>> label = "Perform Pick And Place"; }
|
|
16
|
+
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
17
|
+
attribute :>> goalStatement = "Move a workpiece by mapping the cell and grasping it.";
|
|
18
|
+
subject :>> supportingSystem = robotCell;
|
|
19
|
+
actor operator = cellOperator;
|
|
20
|
+
actor assistant = cellTechnician;
|
|
21
|
+
include ucRecordRun { subject :>> supportingSystem = robotCell.perception; }
|
|
22
|
+
include ucAcquireMap { subject :>> supportingSystem = robotCell.navigation; }
|
|
23
|
+
include ucExecuteGrasp { subject :>> supportingSystem = robotCell.manipulation; }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// The manipulator: grasps a workpiece with its gripper and reports each grasp. It imports the family's shared package
|
|
2
|
+
// only.
|
|
3
|
+
package robot_cell_family_manipulation {
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_common::MemoIdentity;
|
|
6
|
+
private import memo_core_enumerations::*;
|
|
7
|
+
private import memo_architecture_logical_structure::*;
|
|
8
|
+
private import memo_architecture_functional_functions::*;
|
|
9
|
+
private import memo_architecture_operational_use_cases::*;
|
|
10
|
+
private import robot_cell_family_shared::*;
|
|
11
|
+
|
|
12
|
+
part def ManipulatorSystem specializes System {
|
|
13
|
+
@MemoIdentity { :>> providedId = "RCF-MAN-001"; :>> label = "Manipulator System"; }
|
|
14
|
+
attribute :>> systemBoundaryDescription = "Arm controller, teach pendant and the gripper drive cable.";
|
|
15
|
+
port pGraspEventOut : GraspEventPort;
|
|
16
|
+
part motionController : LogicalComponent :> component {
|
|
17
|
+
@MemoIdentity { :>> providedId = "RCF-MAN-LC-001"; :>> label = "Motion Controller"; }
|
|
18
|
+
attribute :>> responsibility = "Regulate delivered power and duration, and report each delivery.";
|
|
19
|
+
}
|
|
20
|
+
allocate fnExecuteGrasp to motionController;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
action fnExecuteGrasp : SystemFunction {
|
|
24
|
+
@MemoIdentity { :>> providedId = "RCF-MAN-F-001"; :>> label = "Execute Grasp"; }
|
|
25
|
+
out graspEventOut : GraspEvent;
|
|
26
|
+
attribute :>> outputSummary = "Grasp made within the set force and time limits, and the event that records it";
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
use case ucExecuteGrasp : UseCase {
|
|
30
|
+
@MemoIdentity { :>> providedId = "RCF-MAN-UC-001"; :>> label = "Execute Grasp"; }
|
|
31
|
+
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
32
|
+
subject :>> supportingSystem : ManipulatorSystem;
|
|
33
|
+
actor operator = cellOperator;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// The navigation system: builds an occupancy map of the cell from the
|
|
2
|
+
// robot's pose and paints the recorded range data onto it. It imports the
|
|
3
|
+
// family's shared package only.
|
|
4
|
+
package robot_cell_family_navigation {
|
|
5
|
+
private import memo_core_common::*;
|
|
6
|
+
private import memo_core_common::MemoIdentity;
|
|
7
|
+
private import memo_core_enumerations::*;
|
|
8
|
+
private import memo_architecture_logical_structure::*;
|
|
9
|
+
private import memo_architecture_functional_functions::*;
|
|
10
|
+
private import memo_architecture_operational_use_cases::*;
|
|
11
|
+
private import robot_cell_family_shared::*;
|
|
12
|
+
|
|
13
|
+
part def NavigationSystem specializes System {
|
|
14
|
+
@MemoIdentity { :>> providedId = "RCF-NAV-001"; :>> label = "Navigation System"; }
|
|
15
|
+
attribute :>> systemBoundaryDescription = "Navigation workstation, pose sensing and the operator interface unit.";
|
|
16
|
+
part safetyRelay : SafetyRelayModule :> component;
|
|
17
|
+
port pPointCloudIn : ~PointCloudPort;
|
|
18
|
+
port pGraspEventIn : ~GraspEventPort;
|
|
19
|
+
part mapEngine : LogicalComponent :> component {
|
|
20
|
+
@MemoIdentity { :>> providedId = "RCF-NAV-LC-001"; :>> label = "Map Engine"; }
|
|
21
|
+
attribute :>> responsibility = "Reconstruct the cell map and annotate it with scan times and grasps.";
|
|
22
|
+
}
|
|
23
|
+
allocate fnBuildMap to mapEngine;
|
|
24
|
+
allocate fnTagGrasp to mapEngine;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
action fnBuildMap : SystemFunction {
|
|
28
|
+
@MemoIdentity { :>> providedId = "RCF-NAV-F-001"; :>> label = "Build Occupancy Map"; }
|
|
29
|
+
in pointCloudIn : PointCloud;
|
|
30
|
+
out locationOut : RobotPose;
|
|
31
|
+
attribute :>> outputSummary = "Cell map with local scan times";
|
|
32
|
+
}
|
|
33
|
+
action fnTagGrasp : SystemFunction {
|
|
34
|
+
@MemoIdentity { :>> providedId = "RCF-NAV-F-002"; :>> label = "Tag Grasp On Map"; }
|
|
35
|
+
in graspEventIn : GraspEvent;
|
|
36
|
+
attribute :>> outputSummary = "Grasp marker at the robot pose of each grasp";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// A system use case: its subject is this system.
|
|
40
|
+
use case ucAcquireMap : UseCase {
|
|
41
|
+
@MemoIdentity { :>> providedId = "RCF-NAV-UC-001"; :>> label = "Acquire Occupancy Map"; }
|
|
42
|
+
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
43
|
+
subject :>> supportingSystem : NavigationSystem;
|
|
44
|
+
actor operator = cellOperator;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// The perception system: acquires and displays depth-camera and lidar
|
|
2
|
+
// signals, and marks procedure events on the perception. It imports the
|
|
3
|
+
// family's shared package only.
|
|
4
|
+
package robot_cell_family_perception {
|
|
5
|
+
private import memo_core_common::*;
|
|
6
|
+
private import memo_core_common::MemoIdentity;
|
|
7
|
+
private import memo_core_enumerations::*;
|
|
8
|
+
private import memo_architecture_logical_structure::*;
|
|
9
|
+
private import memo_architecture_functional_functions::*;
|
|
10
|
+
private import memo_architecture_operational_use_cases::*;
|
|
11
|
+
private import robot_cell_family_shared::*;
|
|
12
|
+
|
|
13
|
+
part def PerceptionSystem specializes System {
|
|
14
|
+
@MemoIdentity { :>> providedId = "RCF-PER-001"; :>> label = "Perception System"; }
|
|
15
|
+
attribute :>> systemBoundaryDescription = "Amplifier, perception workstation and review display.";
|
|
16
|
+
part safetyRelay : SafetyRelayModule :> component;
|
|
17
|
+
port pPointCloudOut : PointCloudPort;
|
|
18
|
+
part sensorHub : LogicalComponent :> component {
|
|
19
|
+
@MemoIdentity { :>> providedId = "RCF-PER-LC-001"; :>> label = "Sensor Hub"; }
|
|
20
|
+
attribute :>> responsibility = "Filter and timestamp the camera and lidar range data.";
|
|
21
|
+
}
|
|
22
|
+
allocate fnAcquirePointClouds to sensorHub;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
action fnAcquirePointClouds : SystemFunction {
|
|
26
|
+
@MemoIdentity { :>> providedId = "RCF-PER-F-001"; :>> label = "Acquire Point Clouds"; }
|
|
27
|
+
out pointCloudOut : PointCloud;
|
|
28
|
+
attribute :>> outputSummary = "Filtered, timestamped point clouds";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
use case ucRecordRun : UseCase {
|
|
32
|
+
@MemoIdentity { :>> providedId = "RCF-PER-UC-001"; :>> label = "Record Run Data"; }
|
|
33
|
+
attribute :>> useCaseKind = UseCaseKind::clinical;
|
|
34
|
+
subject :>> supportingSystem : PerceptionSystem;
|
|
35
|
+
actor operator = cellTechnician;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// The parts every product of the robot cell family shares, versioned on their own.
|
|
2
|
+
// A family model depends on this package (`dependencies:` in its
|
|
3
|
+
// memo.package.yaml) and builds on these definitions; it never edits them. A
|
|
4
|
+
// change here is a new version of the platform, which each family adopts when
|
|
5
|
+
// it chooses to.
|
|
6
|
+
package robot_platform {
|
|
7
|
+
private import memo_core_common::*;
|
|
8
|
+
private import memo_core_common::MemoIdentity;
|
|
9
|
+
private import memo_architecture_logical_structure::*;
|
|
10
|
+
|
|
11
|
+
part def SafetyRelayModule specializes LogicalComponent {
|
|
12
|
+
@MemoIdentity { :>> providedId = "RCF-LC-001"; :>> label = "Safety Relay Module"; }
|
|
13
|
+
attribute :>> responsibility = "Isolate the safety-rated circuits from the motion drives' mains supply.";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -6,10 +6,11 @@ a ROS 2 mobile logistics robot; the point is the mechanism.
|
|
|
6
6
|
Extensions are a way to model, so they live in [`extensions/`](../../extensions),
|
|
7
7
|
beside the ontology. This project is one of their consumers.
|
|
8
8
|
|
|
9
|
-
- `model/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
- `model/methodology/project.sysml` — the binding, and one import:
|
|
10
|
+
`public import memo_extension_ros::*;`. That import is how the project brings
|
|
11
|
+
the extension in. ROS publicly imports the messaging and container
|
|
12
|
+
extensions it builds on, so the one import selects all three. The project
|
|
13
|
+
never retypes an extension's package names.
|
|
13
14
|
- `model/catalog/ros_mobile_robot.sysml` — the model.
|
|
14
15
|
- `model/catalog/viewpoints/` — diagram views over that catalog.
|
|
15
16
|
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# memo.identity.yaml — element identity registry (auto-generated)
|
|
2
|
+
# Assigned once and never reassigned. COMMIT THIS FILE: deleting it does
|
|
3
|
+
# not regenerate the same identities, it mints new ones, and every
|
|
4
|
+
# external reference to a shortId or uuid then points at nothing.
|
|
5
|
+
# Entries for deleted elements are retained so their numbers stay retired.
|
|
6
|
+
|
|
7
|
+
elements:
|
|
8
|
+
"memo_examples_ros_mobile_robot::EmergencyStop":
|
|
9
|
+
shortId: "ROS-1"
|
|
10
|
+
uuid: "bb569605-71bd-558a-8d8f-5d02597a42c0"
|
|
11
|
+
"memo_examples_ros_mobile_robot::LaserScan":
|
|
12
|
+
shortId: "ROS-4"
|
|
13
|
+
uuid: "35aa37b0-540e-5fe9-b8dc-0e5bfec683fe"
|
|
14
|
+
"memo_examples_ros_mobile_robot::VelocityCommand":
|
|
15
|
+
shortId: "ROS-20"
|
|
16
|
+
uuid: "9ed2d72e-6ff7-58c9-9d68-3fe453d67aca"
|
|
17
|
+
"memo_examples_ros_mobile_robot::imageRuntime":
|
|
18
|
+
shortId: "ROS-2"
|
|
19
|
+
uuid: "0ae81bfb-b63c-5182-b8bf-163448a2c10f"
|
|
20
|
+
"memo_examples_ros_mobile_robot::imageSafety":
|
|
21
|
+
shortId: "ROS-3"
|
|
22
|
+
uuid: "8e5cbd7a-e974-5770-b310-1ef0a5b5a365"
|
|
23
|
+
"memo_examples_ros_mobile_robot::nodeComputeUnit":
|
|
24
|
+
shortId: "PRC-1"
|
|
25
|
+
uuid: "f012f4cf-3bbc-5e13-a921-be8b084f81ee"
|
|
26
|
+
"memo_examples_ros_mobile_robot::nodeLidar":
|
|
27
|
+
shortId: "ROS-5"
|
|
28
|
+
uuid: "21dc80f4-ce6c-570a-a5da-bf508e98ef73"
|
|
29
|
+
"memo_examples_ros_mobile_robot::nodeLidar::scanPublisher":
|
|
30
|
+
shortId: "ROS-6"
|
|
31
|
+
uuid: "d8a1e19c-72b5-5cce-a10f-874f3a5dc02f"
|
|
32
|
+
"memo_examples_ros_mobile_robot::nodeNavigation":
|
|
33
|
+
shortId: "ROS-7"
|
|
34
|
+
uuid: "d9f9dcbd-f4c2-5dcf-836b-948fdbbe9629"
|
|
35
|
+
"memo_examples_ros_mobile_robot::nodeNavigation::cmdVelPublisher":
|
|
36
|
+
shortId: "ROS-8"
|
|
37
|
+
uuid: "bfcde2bd-2223-5840-b518-8e8716230ee5"
|
|
38
|
+
"memo_examples_ros_mobile_robot::nodeNavigation::estopSubscriber":
|
|
39
|
+
shortId: "ROS-9"
|
|
40
|
+
uuid: "44c5472a-ec14-58f6-9563-33af35e4b53b"
|
|
41
|
+
"memo_examples_ros_mobile_robot::nodeNavigation::navigateActionServer":
|
|
42
|
+
shortId: "ROS-10"
|
|
43
|
+
uuid: "11f058bf-c4c9-5c25-a8be-d2e0b20ba9bd"
|
|
44
|
+
"memo_examples_ros_mobile_robot::nodeNavigation::scanSubscriber":
|
|
45
|
+
shortId: "ROS-11"
|
|
46
|
+
uuid: "0b57eed5-6185-51f0-9506-cfe20bd61119"
|
|
47
|
+
"memo_examples_ros_mobile_robot::nodeNavigation::setModeClient":
|
|
48
|
+
shortId: "ROS-12"
|
|
49
|
+
uuid: "8bd0f7ca-9ed1-5060-b68a-5c5a8ceb8d12"
|
|
50
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor":
|
|
51
|
+
shortId: "ROS-13"
|
|
52
|
+
uuid: "fadad110-7e55-57ee-b8cd-2f72daae72d4"
|
|
53
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor::cmdVelSubscriber":
|
|
54
|
+
shortId: "ROS-14"
|
|
55
|
+
uuid: "34228a62-3284-5cd5-8889-2defd6592e74"
|
|
56
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor::estopPublisher":
|
|
57
|
+
shortId: "ROS-15"
|
|
58
|
+
uuid: "37e91073-360b-5396-8e55-866abd8e0008"
|
|
59
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor::navigateActionClient":
|
|
60
|
+
shortId: "ROS-16"
|
|
61
|
+
uuid: "62b35d0e-c601-538e-93c0-8da00b29c46d"
|
|
62
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor::scanSubscriber":
|
|
63
|
+
shortId: "ROS-17"
|
|
64
|
+
uuid: "49c042fd-58d3-5cd8-82b0-1757476cf833"
|
|
65
|
+
"memo_examples_ros_mobile_robot::nodeSafetyMonitor::setModeServer":
|
|
66
|
+
shortId: "ROS-18"
|
|
67
|
+
uuid: "f04940de-0500-58bd-8c71-3e5d66196d2a"
|
|
68
|
+
"memo_examples_ros_mobile_robot::rosRuntime":
|
|
69
|
+
shortId: "ROS-19"
|
|
70
|
+
uuid: "a3ba9180-e001-5638-8694-5919ef5d2d77"
|
|
71
|
+
"memo_examples_ros_mobile_robot::swNavigation":
|
|
72
|
+
shortId: "SFT-1"
|
|
73
|
+
uuid: "12d88ff9-af9f-5ecb-b5bd-bc08258c1c5a"
|
|
74
|
+
"memo_examples_ros_mobile_robot::swPerception":
|
|
75
|
+
shortId: "SFT-2"
|
|
76
|
+
uuid: "fc44adfc-23e0-5659-b3e3-f8b9f7a72613"
|
|
77
|
+
"memo_examples_ros_mobile_robot::swSafety":
|
|
78
|
+
shortId: "SFT-3"
|
|
79
|
+
uuid: "874c7b51-bef4-50df-b6d0-9709705fd19d"
|
|
80
|
+
"memo_examples_ros_mobile_robot::topicCmdVel":
|
|
81
|
+
shortId: "VLC-1"
|
|
82
|
+
uuid: "1ba4eaf0-6bff-5dab-bbe0-66ed67239c77"
|
|
83
|
+
"memo_examples_ros_mobile_robot::topicEstop":
|
|
84
|
+
shortId: "EMR-1"
|
|
85
|
+
uuid: "1e1f00fe-d949-5a94-afa2-5c6a1137bfb9"
|
|
86
|
+
"memo_examples_ros_mobile_robot::topicScan":
|
|
87
|
+
shortId: "LSR-1"
|
|
88
|
+
uuid: "c8ac13a6-8e7c-54d6-ab31-8df0f9dfefb5"
|
|
89
|
+
"memo_examples_ros_mobile_robot_project::projectBinding":
|
|
90
|
+
shortId: "PRJ-1"
|
|
91
|
+
uuid: "9069eae9-45bc-55b1-a346-fe1526be939e"
|
|
92
|
+
"memo_examples_ros_mobile_robot_viewpoints_unassigned_views_ros_mobile_robot_overview::rosMobileRobotOverview":
|
|
93
|
+
shortId: "MMX-1"
|
|
94
|
+
uuid: "2f4b2bc1-7d42-51a8-912b-28cabe8b6615"
|
|
@@ -47,31 +47,31 @@ package memo_examples_ros_mobile_robot {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
item topicScan : LaserScan {
|
|
50
|
-
@MemoIdentity { :>> providedId = "RMR-TP-001";
|
|
50
|
+
@MemoIdentity { :>> providedId = "RMR-TP-001"; :>> label = "ScanTopic"; }
|
|
51
51
|
}
|
|
52
52
|
item topicCmdVel : VelocityCommand {
|
|
53
|
-
@MemoIdentity { :>> providedId = "RMR-TP-002";
|
|
53
|
+
@MemoIdentity { :>> providedId = "RMR-TP-002"; :>> label = "CmdVelTopic"; }
|
|
54
54
|
}
|
|
55
55
|
item topicEstop : EmergencyStop {
|
|
56
|
-
@MemoIdentity { :>> providedId = "RMR-TP-003";
|
|
56
|
+
@MemoIdentity { :>> providedId = "RMR-TP-003"; :>> label = "EmergencyStopTopic"; }
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// ── Code ────────────────────────────────────────────────────────────
|
|
60
60
|
part swPerception : SoftwareModule {
|
|
61
61
|
attribute :>> moduleKind = ModuleKind::unit;
|
|
62
|
-
@MemoIdentity { :>> providedId = "RMR-SW-001";
|
|
62
|
+
@MemoIdentity { :>> providedId = "RMR-SW-001"; :>> label = "PerceptionStack"; }
|
|
63
63
|
attribute :>> responsibility = "Lidar driver and obstacle segmentation.";
|
|
64
64
|
attribute :>> safetyClass = SafetyClassKind::B;
|
|
65
65
|
}
|
|
66
66
|
part swNavigation : SoftwareModule {
|
|
67
67
|
attribute :>> moduleKind = ModuleKind::unit;
|
|
68
|
-
@MemoIdentity { :>> providedId = "RMR-SW-002";
|
|
68
|
+
@MemoIdentity { :>> providedId = "RMR-SW-002"; :>> label = "NavigationStack"; }
|
|
69
69
|
attribute :>> responsibility = "Global and local planning; velocity command generation.";
|
|
70
70
|
attribute :>> safetyClass = SafetyClassKind::B;
|
|
71
71
|
}
|
|
72
72
|
part swSafety : SoftwareModule {
|
|
73
73
|
attribute :>> moduleKind = ModuleKind::unit;
|
|
74
|
-
@MemoIdentity { :>> providedId = "RMR-SW-003";
|
|
74
|
+
@MemoIdentity { :>> providedId = "RMR-SW-003"; :>> label = "SafetyMonitor"; }
|
|
75
75
|
attribute :>> responsibility = "Independent watchdog: stops the base on obstacle proximity or missing heartbeat.";
|
|
76
76
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
77
77
|
}
|
|
@@ -84,7 +84,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
84
84
|
// is exactly what an extension type must NOT decide for the modeller.
|
|
85
85
|
part nodeLidar : RosNode {
|
|
86
86
|
attribute :>> runtimeKind = RuntimeKind::thread;
|
|
87
|
-
@MemoIdentity { :>> providedId = "RMR-ND-001";
|
|
87
|
+
@MemoIdentity { :>> providedId = "RMR-ND-001"; :>> label = "LidarDriverNode"; }
|
|
88
88
|
attribute :>> nodeNamespace = "/robot/perception";
|
|
89
89
|
attribute :>> lifecycleManaged = true;
|
|
90
90
|
attribute :>> executorModel = "single-threaded executor, composed";
|
|
@@ -96,7 +96,6 @@ package memo_examples_ros_mobile_robot {
|
|
|
96
96
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atMostOnce;
|
|
97
97
|
attribute :>> publishRateHz = 20.0;
|
|
98
98
|
attribute :>> offeredQos {
|
|
99
|
-
attribute :>> reliability = RosReliabilityKind::bestEffort;
|
|
100
99
|
attribute :>> durability = RosDurabilityKind::volatile;
|
|
101
100
|
attribute :>> deadlineMs = 60.0;
|
|
102
101
|
attribute :>> livelinessLeaseMs = 200.0;
|
|
@@ -106,7 +105,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
106
105
|
}
|
|
107
106
|
part nodeNavigation : RosNode {
|
|
108
107
|
attribute :>> runtimeKind = RuntimeKind::thread;
|
|
109
|
-
@MemoIdentity { :>> providedId = "RMR-ND-002";
|
|
108
|
+
@MemoIdentity { :>> providedId = "RMR-ND-002"; :>> label = "NavigationNode"; }
|
|
110
109
|
attribute :>> nodeNamespace = "/robot/navigation";
|
|
111
110
|
attribute :>> lifecycleManaged = true;
|
|
112
111
|
attribute :>> executorModel = "multi-threaded executor, composed";
|
|
@@ -118,7 +117,6 @@ package memo_examples_ros_mobile_robot {
|
|
|
118
117
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atMostOnce;
|
|
119
118
|
attribute :>> lossBehaviour = "hold the last costmap for 200 ms, then command zero velocity";
|
|
120
119
|
attribute :>> requestedQos {
|
|
121
|
-
attribute :>> reliability = RosReliabilityKind::bestEffort;
|
|
122
120
|
attribute :>> durability = RosDurabilityKind::volatile;
|
|
123
121
|
attribute :>> deadlineMs = 60.0;
|
|
124
122
|
attribute :>> livelinessLeaseMs = 200.0;
|
|
@@ -130,7 +128,6 @@ package memo_examples_ros_mobile_robot {
|
|
|
130
128
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atLeastOnce;
|
|
131
129
|
attribute :>> publishRateHz = 10.0;
|
|
132
130
|
attribute :>> offeredQos {
|
|
133
|
-
attribute :>> reliability = RosReliabilityKind::reliable;
|
|
134
131
|
attribute :>> durability = RosDurabilityKind::volatile;
|
|
135
132
|
attribute :>> deadlineMs = 150.0;
|
|
136
133
|
attribute :>> livelinessLeaseMs = 300.0;
|
|
@@ -142,7 +139,6 @@ package memo_examples_ros_mobile_robot {
|
|
|
142
139
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atLeastOnce;
|
|
143
140
|
attribute :>> lossBehaviour = "no publisher within the liveliness lease is treated as stop asserted";
|
|
144
141
|
attribute :>> requestedQos {
|
|
145
|
-
attribute :>> reliability = RosReliabilityKind::reliable;
|
|
146
142
|
attribute :>> durability = RosDurabilityKind::transientLocal;
|
|
147
143
|
attribute :>> deadlineMs = 100.0;
|
|
148
144
|
attribute :>> livelinessLeaseMs = 200.0;
|
|
@@ -151,7 +147,6 @@ package memo_examples_ros_mobile_robot {
|
|
|
151
147
|
}
|
|
152
148
|
inout port setModeClient : RosServiceClient {
|
|
153
149
|
attribute :>> serviceName = "/robot/safety/set_mode";
|
|
154
|
-
attribute :>> timeoutMs = 500.0;
|
|
155
150
|
}
|
|
156
151
|
inout port navigateActionServer : RosActionServer {
|
|
157
152
|
attribute :>> actionName = "/robot/navigation/navigate_to_pose";
|
|
@@ -159,7 +154,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
159
154
|
}
|
|
160
155
|
part nodeSafetyMonitor : RosNode {
|
|
161
156
|
attribute :>> runtimeKind = RuntimeKind::process;
|
|
162
|
-
@MemoIdentity { :>> providedId = "RMR-ND-003";
|
|
157
|
+
@MemoIdentity { :>> providedId = "RMR-ND-003"; :>> label = "SafetyMonitorNode"; }
|
|
163
158
|
attribute :>> nodeNamespace = "/robot/safety";
|
|
164
159
|
attribute :>> lifecycleManaged = false;
|
|
165
160
|
attribute :>> executorModel = "own process, real-time priority";
|
|
@@ -173,18 +168,29 @@ package memo_examples_ros_mobile_robot {
|
|
|
173
168
|
ref :>> topic = topicScan;
|
|
174
169
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atMostOnce;
|
|
175
170
|
attribute :>> lossBehaviour = "two consecutive misses assert the stop";
|
|
171
|
+
attribute :>> requestedQos {
|
|
172
|
+
attribute :>> durability = RosDurabilityKind::volatile;
|
|
173
|
+
attribute :>> deadlineMs = 60.0;
|
|
174
|
+
attribute :>> livelinessLeaseMs = 200.0;
|
|
175
|
+
attribute :>> historyDepth = 5;
|
|
176
|
+
}
|
|
176
177
|
}
|
|
177
178
|
in port cmdVelSubscriber : RosSubscriber {
|
|
178
179
|
ref :>> topic = topicCmdVel;
|
|
179
180
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atLeastOnce;
|
|
180
181
|
attribute :>> lossBehaviour = "missing velocity commands assert the stop";
|
|
182
|
+
attribute :>> requestedQos {
|
|
183
|
+
attribute :>> durability = RosDurabilityKind::volatile;
|
|
184
|
+
attribute :>> deadlineMs = 150.0;
|
|
185
|
+
attribute :>> livelinessLeaseMs = 300.0;
|
|
186
|
+
attribute :>> historyDepth = 1;
|
|
187
|
+
}
|
|
181
188
|
}
|
|
182
189
|
out port estopPublisher : RosPublisher {
|
|
183
190
|
ref :>> topic = topicEstop;
|
|
184
191
|
attribute :>> deliverySemantics = MessagingDeliveryKind::atLeastOnce;
|
|
185
192
|
attribute :>> publishRateHz = 50.0;
|
|
186
193
|
attribute :>> offeredQos {
|
|
187
|
-
attribute :>> reliability = RosReliabilityKind::reliable;
|
|
188
194
|
attribute :>> durability = RosDurabilityKind::transientLocal;
|
|
189
195
|
attribute :>> deadlineMs = 100.0;
|
|
190
196
|
attribute :>> livelinessLeaseMs = 200.0;
|
|
@@ -209,38 +215,29 @@ package memo_examples_ros_mobile_robot {
|
|
|
209
215
|
// ── Native topic, service, and action interfaces ───────────────────
|
|
210
216
|
interface scanToNavigation : RosTopicInterface
|
|
211
217
|
connect nodeLidar.scanPublisher to nodeNavigation.scanSubscriber {
|
|
212
|
-
attribute :>> direction = DirectionKind::output;
|
|
213
218
|
}
|
|
214
219
|
interface scanToSafety : RosTopicInterface
|
|
215
220
|
connect nodeLidar.scanPublisher to nodeSafetyMonitor.scanSubscriber {
|
|
216
|
-
attribute :>> direction = DirectionKind::output;
|
|
217
221
|
}
|
|
218
222
|
interface cmdVelToSafety : RosTopicInterface
|
|
219
223
|
connect nodeNavigation.cmdVelPublisher to nodeSafetyMonitor.cmdVelSubscriber {
|
|
220
|
-
attribute :>> direction = DirectionKind::output;
|
|
221
224
|
}
|
|
222
225
|
interface estopToNavigation : RosTopicInterface
|
|
223
226
|
connect nodeSafetyMonitor.estopPublisher to nodeNavigation.estopSubscriber {
|
|
224
|
-
attribute :>> direction = DirectionKind::output;
|
|
225
227
|
}
|
|
226
228
|
|
|
227
|
-
flow of LaserScan from nodeLidar.scanPublisher.payload to nodeNavigation.scanSubscriber.payload;
|
|
228
|
-
flow of LaserScan from nodeLidar.scanPublisher.payload to nodeSafetyMonitor.scanSubscriber.payload;
|
|
229
|
-
flow of VelocityCommand from nodeNavigation.cmdVelPublisher.payload to nodeSafetyMonitor.cmdVelSubscriber.payload;
|
|
230
|
-
flow of EmergencyStop from nodeSafetyMonitor.estopPublisher.payload to nodeNavigation.estopSubscriber.payload;
|
|
231
229
|
|
|
232
230
|
interface setModeService : RosServiceInterface
|
|
233
231
|
connect nodeNavigation.setModeClient to nodeSafetyMonitor.setModeServer {
|
|
234
|
-
attribute :>>
|
|
232
|
+
attribute :>> timeoutMs = 500.0;
|
|
235
233
|
}
|
|
236
234
|
interface navigateAction : RosActionInterface
|
|
237
235
|
connect nodeSafetyMonitor.navigateActionClient to nodeNavigation.navigateActionServer {
|
|
238
|
-
attribute :>> direction = DirectionKind::inputOutput;
|
|
239
236
|
}
|
|
240
237
|
|
|
241
238
|
// ── Deployment: base relations, unchanged ───────────────────────────
|
|
242
239
|
part imageRuntime : RosContainerImage {
|
|
243
|
-
@MemoIdentity { :>> providedId = "RMR-DU-001";
|
|
240
|
+
@MemoIdentity { :>> providedId = "RMR-DU-001"; :>> label = "RobotRuntimeImage"; }
|
|
244
241
|
attribute :>> unitKind = "OCI container image";
|
|
245
242
|
attribute :>> imageReference = "registry.example.com/robot-runtime:2.3.0";
|
|
246
243
|
attribute :>> registry = "registry.example.com";
|
|
@@ -251,7 +248,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
251
248
|
attribute :>> integrityProtection = "image signature + SBOM attestation";
|
|
252
249
|
}
|
|
253
250
|
part imageSafety : RosContainerImage {
|
|
254
|
-
@MemoIdentity { :>> providedId = "RMR-DU-002";
|
|
251
|
+
@MemoIdentity { :>> providedId = "RMR-DU-002"; :>> label = "SafetyMonitorImage"; }
|
|
255
252
|
attribute :>> unitKind = "OCI container image";
|
|
256
253
|
attribute :>> imageReference = "registry.example.com/safety-monitor:2.3.0";
|
|
257
254
|
attribute :>> registry = "registry.example.com";
|
|
@@ -266,7 +263,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
266
263
|
allocation : BuildsInto allocate swSafety to imageSafety;
|
|
267
264
|
|
|
268
265
|
part nodeComputeUnit : ProcessingNode {
|
|
269
|
-
@MemoIdentity { :>> providedId = "RMR-HW-001";
|
|
266
|
+
@MemoIdentity { :>> providedId = "RMR-HW-001"; :>> label = "OnboardComputeUnit"; }
|
|
270
267
|
attribute :>> nodeKind = ProcessingNodeKind::SoC;
|
|
271
268
|
attribute :>> processorArchitecture = "arm64, 8 core";
|
|
272
269
|
attribute :>> memoryMB = "16384";
|
|
@@ -282,7 +279,7 @@ package memo_examples_ros_mobile_robot {
|
|
|
282
279
|
}
|
|
283
280
|
|
|
284
281
|
part rosRuntime : RosContainerRuntime {
|
|
285
|
-
@MemoIdentity { :>> providedId = "RMR-RT-001";
|
|
282
|
+
@MemoIdentity { :>> providedId = "RMR-RT-001"; :>> label = "OnboardRosRuntime"; }
|
|
286
283
|
attribute :>> environmentKind = "container runtime";
|
|
287
284
|
attribute :>> osOrRtos = "Linux with PREEMPT_RT";
|
|
288
285
|
attribute :>> orchestrationPlatform = "systemd-managed compose, no cluster orchestrator";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// ROS Mobile Robot —
|
|
1
|
+
// ROS Mobile Robot — model identity and method binding.
|
|
2
2
|
//
|
|
3
3
|
// The native entrypoint. The imports name what this project contains and the
|
|
4
4
|
// binding names the methodology it is governed by. No YAML file participates.
|
|
@@ -16,20 +16,14 @@ package memo_examples_ros_mobile_robot_project {
|
|
|
16
16
|
|
|
17
17
|
private import memo_core_common::*;
|
|
18
18
|
private import memo_core_common::MemoIdentity;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
// The ROS extension, brought into the project by importing it. The import
|
|
20
|
+
// is public, so it is the project's selection as well as its vocabulary;
|
|
21
|
+
// ROS publicly imports messaging and container, which come with it.
|
|
22
|
+
public import memo_extension_ros::*;
|
|
23
|
+
part projectBinding : ModelMethodBinding {
|
|
24
|
+
@MemoIdentity { :>> providedId = "PMB-ROS-MOBILE-ROBOT-001"; :>> label = "RosMobileRobotModelMethodBinding"; }
|
|
25
|
+
attribute :>> modelName = "ROS Mobile Robot";
|
|
23
26
|
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
24
27
|
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
25
|
-
// This is the composition mechanism: three independent extensions,
|
|
26
|
-
// listed here. `includedModule` is [0..*] on both MethodologyDefinition
|
|
27
|
-
// and ProjectMethodBinding, while `baseMethodology` is [0..1] — so
|
|
28
|
-
// extensions combine at the binding and never by chaining.
|
|
29
|
-
attribute :>> includedModule = (
|
|
30
|
-
"memo_extension_messaging",
|
|
31
|
-
"memo_extension_container",
|
|
32
|
-
"memo_extension_ros"
|
|
33
|
-
);
|
|
34
28
|
}
|
|
35
29
|
}
|
package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml
CHANGED
|
@@ -21,30 +21,29 @@ package memo_examples_software_only_medical_device {
|
|
|
21
21
|
private import memo_core_common::*;
|
|
22
22
|
private import memo_core_common::MemoIdentity;
|
|
23
23
|
part swScreeningApp : SoftwareSystem {
|
|
24
|
-
@MemoIdentity { :>> providedId = "SMD-SW-001";
|
|
24
|
+
@MemoIdentity { :>> providedId = "SMD-SW-001"; :>> label = "ScreeningApplication"; }
|
|
25
25
|
attribute :>> safetyClass = SafetyClassKind::B;
|
|
26
26
|
attribute :>> version = "1.4.0";
|
|
27
27
|
}
|
|
28
28
|
part algGrading : Algorithm {
|
|
29
|
-
@MemoIdentity { :>> providedId = "SMD-ALG-001";
|
|
29
|
+
@MemoIdentity { :>> providedId = "SMD-ALG-001"; :>> label = "RetinopathyGradingModel"; }
|
|
30
30
|
attribute :>> algorithmKind = "convolutional neural network, locked (non-adaptive)";
|
|
31
31
|
attribute :>> clinicalPerformanceClaim = "sensitivity >= 87%, specificity >= 90% vs. reference standard";
|
|
32
32
|
}
|
|
33
|
-
part soupInference :
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
attribute :>> soupVendor = "third-party OSS";
|
|
33
|
+
part soupInference : OTSSoftwareModule {
|
|
34
|
+
@MemoIdentity { :>> providedId = "SMD-SOUP-001"; :>> label = "InferenceRuntimeLibrary"; }
|
|
35
|
+
attribute :>> supplier = "third-party OSS";
|
|
37
36
|
attribute :>> soupClassification = SOUPClassificationKind::classB;
|
|
38
37
|
}
|
|
39
38
|
part swGradingModule : SoftwareModule {
|
|
40
|
-
@MemoIdentity { :>> providedId = "SMD-SW-002";
|
|
39
|
+
@MemoIdentity { :>> providedId = "SMD-SW-002"; :>> label = "GradingModule"; }
|
|
41
40
|
attribute :>> responsibility = "Wraps the grading model behind the service API; owns input validation and result structuring.";
|
|
42
41
|
attribute :>> safetyClass = SafetyClassKind::B;
|
|
43
42
|
}
|
|
44
43
|
dependency swGradingModule to soupInference;
|
|
45
44
|
|
|
46
45
|
part svcGrading : CloudService {
|
|
47
|
-
@MemoIdentity { :>> providedId = "SMD-RT-001";
|
|
46
|
+
@MemoIdentity { :>> providedId = "SMD-RT-001"; :>> label = "GradingService"; }
|
|
48
47
|
attribute :>> serviceContract = "REST /grade: image in, structured finding out";
|
|
49
48
|
attribute :>> discoveryMechanism = "DNS name behind the cluster ingress";
|
|
50
49
|
attribute :>> updatePolicy = "blue/green rollout";
|
|
@@ -53,12 +52,12 @@ package memo_examples_software_only_medical_device {
|
|
|
53
52
|
#refinement dependency svcGrading to swGradingModule;
|
|
54
53
|
|
|
55
54
|
part duContainerImage : SoftwareDeploymentUnit {
|
|
56
|
-
@MemoIdentity { :>> providedId = "SMD-DU-001";
|
|
55
|
+
@MemoIdentity { :>> providedId = "SMD-DU-001"; :>> label = "ScreeningServiceImage"; }
|
|
57
56
|
attribute :>> unitKind = "OCI container image";
|
|
58
57
|
attribute :>> integrityProtection = "image signature + SBOM attestation";
|
|
59
58
|
}
|
|
60
59
|
part nodeCloud : ProcessingNode {
|
|
61
|
-
@MemoIdentity { :>> providedId = "SMD-HW-001";
|
|
60
|
+
@MemoIdentity { :>> providedId = "SMD-HW-001"; :>> label = "CloudComputeNode"; }
|
|
62
61
|
attribute :>> nodeKind = ProcessingNodeKind::cloudServer;
|
|
63
62
|
attribute :>> supportsContainerization = true;
|
|
64
63
|
attribute :>> realTimeCapable = false;
|