Skip to content

Mission Orchestration #54

Description

@thanos

Single-drone (unchanged)

Drone.Mission.new()
|> Drone.Mission.takeoff()
|> Drone.Mission.hover(seconds: 3)
|> Drone.Mission.move(:up, 30)
|> Drone.Mission.rotate(:cw, 90)
|> Drone.Mission.land()
|> Drone.Mission.run(drone)

Swarm run modes

# 1) Built-in formation
Drone.Swarm.run(swarm, :front)
Drone.Swarm.run(swarm, :vee)

# 2) Per-drone missions
Drone.Swarm.run(swarm, %{
  good: good_mission,
  bad: bad_mission
})

# 3) Custom script
Drone.Swarm.run(swarm, fn members ->
  # members is %{good: :good, bad: :bad} names
  :ok
end)

Execution order for mode 1 and 2: sequential by members list order for
determinism. Mode 3 is caller-controlled.

Optional small extension on Drone.Mission:

  • Mission.validate/1 — shape-only validation without a live drone
  • Document dry-run: connect members with safety: [dry_run: true]

Concurrent missions, async fan-out, and swarm-level DSL are deferred — see
docs/design/v0_2_0_deferred.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions