LANDRS Flight Mission - landrs-toolkit/landrs-drone-TOAST GitHub Wiki

Develop methods for flying a drone mission and acquiring data using the LANDRS Ontology.

Challenges

  1. We need to create Class Instances but they need to be partially defined before the flight, data being added during and at the end of the flight. SHACL validation will be problematic here.
  2. We need an input form for the flight definition data.
  3. Generation if the Flight KG class instances and wiring them up should be configured via SHACL/Shapes.

Approach

  • We will start with a configured landrs:UAV with a landrs:flightControlSystem and landrs:flightControllerBoard connected to a number of landrs:sensor instances.

  • We will assume a suitable sosa:FeatureOfInterest exists and points to an sosa:ObservableProperty which, in turn, points to the sensors that can measure it.

  • We need to define the pilot information (Orcid, Chris is 0000-0001-8214-7177) via prov:Role, pro:Agent and pro:Association.

  • To fly a mission we need to select the flight plan generated by a Ground Control Station (GCS). The format is documented here in 'Ardupilot, Mavlink Mission Files'. From this we can generate a sosa:procedure.

  • We need to create class instances for the Knowledge Graph from the form input using a SHACL Shape file.

Proposed workflow,

  1. Input the following
    • mission name
    • mission description
    • select wp file
    • select sosa:ObservableProperty
    • select pilot prov:agent
  2. From this data, use Shape file ttl/flight_shapes.ttl to create
    • locn:geometry
    • landrs:Place
    • partial sosa:ObservationCollection
    • partial landrs:Flight
    • sosa:Procedure
    • prov:Association
  3. To instigate flight
    • Update Mavlink with sosa:ObservationCollection and Sosa:sensor connected to sosa:ObservableProperty
    • start logging (add option to log when drone goes to AUTO?)
  4. At start of flight
    • add prov:startedAtTime with start time and attach to sosa:ObservationCollection
  5. During flight
    • add new sosa:Observation at specified intervals, add these to sosa:ObservationCollection
  6. At end of flight
    • add prov:endedAtTime with end time and attach to sosa:ObservationCollection
    • create landrs:ObservationDataset (second phase)

The process is then,

  1. Pick GCS mission as the flight basis
  2. Capture user input for a subset of the data, sosa:observedProperty and the pilot prov:Agent
  3. Create and link the set of "red" nodes shown below using shacl file ttl/flight_shapes.ttl
  4. Run mission acquiring data and adding to sosa:ObservationCollection
  5. Finalize flight and create landrs:ObservationDataset (assuming we have implemented a Data service)

Knowledge Graph

images/New_Flight.png Key,

  1. Purple nodes are prerequisites for flights.
  2. Yellow nodes get created during the flight
  3. Red nodes need to be created before the flight with partial data
  4. Orange nodes, need to be created after the flight, but stage II
  5. Grey nodes, inheritance only
  6. Green node, the GCS file, not really a node.

Questions

  1. For the prov:Association for the pilot, shouldn't it link to our sosa:Procedure since it inherits prov:plan? I changed it above anyway.
  2. Permanent storage for currently selected Flight? In ini file?