DroneSurveillancePOMDP{M} <: POMDP{DSState, Int64, Int64}


  • size::Tuple{Int64, Int64} = (5,5) size of the grid world
  • region_A::DSPos = [1, 1] first region to survey, initial state of the quad
  • region_B::DSPos = [size[1], size[2]] second region to survey
  • fov::Tuple{Int64, Int64} = (3, 3) size of the field of view of the drone
  • agent_policy::Symbol = :restricted policy of the other agent
  • camera::M = QuadCam() observation model, choose between perfect camera and quad camera
  • terminal_state::DSState = DSState([-1, -1], [-1, -1]) a sentinel state to encode terminal states
  • discount_factor::Float64 = 0.95 the discount factor

When used as a camera model, the UAV can detect the ground agent with probability 1 when it is in its field of view.


When used as a camera model, the field of view of the UAV is divided in four region. If the target is in a corner it is detected perfectly, if it is in the middle of two regions it is assigned with equal probability to the neighboring regions. If the agent is below the UAV it is detected with probability 1.

agent_inbounds(pomdp::DroneSurveillancePOMDP, s::DSPos)

returns true if s in an authorized position for the ground agent s must be on the grid and outside of the surveyed regions