{
    "@context": [
        "https://comp-rob2b.github.io/metamodels/geometry/structural-entities.json",
        "https://comp-rob2b.github.io/metamodels/geometry/coordinates.json",
        "https://comp-rob2b.github.io/metamodels/geometry/spatial-relations.json",
        "https://comp-rob2b.github.io/metamodels/qudt.json",
        "https://secorolab.github.io/metamodels/acceptance-criteria/bdd/bdd.json",
        "https://secorolab.github.io/metamodels/acceptance-criteria/bdd/behaviour.json",
        "https://secorolab.github.io/metamodels/acceptance-criteria/bdd/execution-context.json",
        "https://secorolab.github.io/metamodels/time-constraint.json",
        "https://secorolab.github.io/metamodels/observation.json",
        "https://secorolab.github.io/metamodels/acceptance-criteria/bdd/ros.json",
        "https://secorolab.github.io/metamodels/languages/python.json",
        {
            "tmpl": "https://secorolab.github.io/models/acceptance-criteria/bdd/templates/",
            "scene": "https://secorolab.github.io/models/acceptance-criteria/bdd/scenes/secorolab/",
            "var": "https://secorolab.github.io/models/acceptance-criteria/bdd/variants/pickplace-isaac/",
            "var-grc": "https://secorolab.github.io/models/acceptance-criteria/bdd/variants/pickplace-grc/",
            "obs-ros": "https://secorolab.github.io/models/observation/ros/",
            "bhv-ros": "https://secorolab.github.io/models/behaviour/ros/",
            "lab-geom": "https://secorolab.github.io/models/environments/secorolab/geometry/"
        }
    ],
    "@graph": [
        {
            "@id": "obs-ros:target-obj-com",
            "@type": ["Point", "Euclidean", "3D"]
        },
        {
            "@id": "lab-geom:bin1-origin",
            "@type": ["Point", "Euclidean", "3D"]
        },
        {
            "@id": "lab-geom:base-link-frame",
            "@type": [ "Frame", "HasFrameId"],
            "frame-id": "/base_link"
        },
        {
            "@id": "obs-ros:position-target-obj-bin1",
            "@type": "Position",
            "of": "obs-ros:target-obj-com",
            "with-respect-to": "lab-geom:bin1-origin",
            "quantity-kind": "Length"
        },
        {
            "@id": "obs-ros:obj-bin1-position",
            "@type": [
                "ObservationProvider",
                "ROSTopic",
                "PositionReference",
                "PositionCoordinate",
                "VectorXYZ"
            ],
            "unit": "M",
            "type-name": "geometry_msgs/msg/PointStamped",
            "as-seen-by": "lab-geom:base-link-frame",
            "channel-name": "/obj-bin1-position"
        },
        { "@id": "tmpl:flc-located-at-pick-ws", "horizon-seconds": 1.5 },
        { "@id": "tmpl:flc-located-at-place-ws", "horizon-seconds": 1.5 },
        {
            "@id": "obs-ros:located-at-pick-topic",
            "@type": [
                "ObservationPolicy", "DirectTrinaryPolicy", "ROSTopic",
                "TimeConstraint", "BeforeEventConstraint"
            ],
            "of-clause": "tmpl:flc-located-at-pick-ws",
            "before-event": "tmpl:evt-pick-start", "horizon-seconds": 1.5,
            "type-name": "bdd_ros2_interfaces/TrinaryStamped",
            "channel-name": "/obs_policy/located_at_pick_ws"
        },
        {
            "@id": "obs-ros:is-held-topic",
            "@type": [
                "ObservationPolicy", "DirectTrinaryPolicy", "ROSTopic",
                "TimeConstraint", "DuringEventsConstraint"
            ],
            "of-clause": "tmpl:flc-is-held",
            "after-event": "tmpl:evt-pick-end", "before-event": "tmpl:evt-place-end",
            "type-name": "bdd_ros2_interfaces/TrinaryStamped",
            "channel-name": "/obs_policy/is_held"
        },
        {
            "@id": "obs-ros:located-at-place-topic",
            "@type": [
                "ObservationPolicy", "DirectTrinaryPolicy", "ROSTopic",
                "TimeConstraint", "AfterEventConstraint"
            ],
            "of-clause": "tmpl:flc-located-at-place-ws",
            "after-event": "tmpl:evt-place-end", "horizon-seconds": 1.5,
            "type-name": "bdd_ros2_interfaces/TrinaryStamped",
            "channel-name": "/obs_policy/located_at_place_ws"
        },
        {
            "@id": "bhv-ros:pickplace-mockup", "@type": [ "BehaviourImplementation", "ROSAction" ],
            "of-behaviour": "tmpl:bhv-pickplace",
            "type-name": "bdd_ros2_interfaces/Behaviour", "channel-name": "/bdd/mockup_bhv_server"
        },
        {
            "@id": "obs-ros:pickplace-scene-inst", "@type": "exec:SceneInstance",
            "of-scene": "scene:scn-pickplace"
        },
        {
            "@id": "obs-ros:pickplace-ros", "@type": "bdd:ScenarioExecution",
            "of-variant": [
                "var:scr-var-pickplace", "var:scr-var-sorting", "var-grc:scr-var-grc"
            ],
            "has-behaviour-impl": "bhv-ros:pickplace-mockup",
            "runs-scene": "obs-ros:pickplace-scene-inst",
            "has-policy": [
                "obs-ros:located-at-pick-topic",
                "obs-ros:is-held-topic",
                "obs-ros:located-at-place-topic"
            ]
        }
    ]
}
