Register
Submit a solution
The challenge is finished.

Challenge Overview

Intro

We have a specific endpoint that allows a drone to update its position ( PUT /drone/{id} ). The response of this endpoint is simply the drone object returned. We recently added a  No Fly Zone search endpoint that allow you to pass in a point, polygon, or polyline and return an array of No Fly Zones your point, polygon, or polyline(mission) have violated. In other words if you pass in a point you will get an array of no flys zones that the point is inside of. Now we would like to combine the functionality of these two features and add some of this intelligent response to the drone location update. Once this is done we can add some intelligence to the drone client i.e. send an audible alarm or even land if it has violated a NFZ. See the NFZ postman collection for more details in how to use the NFZ search call. For this challenge you only care about "Search NFZ with point". The primary objective of this challenge is to tell a drone (during its location update) that it has violated a no fly zone. The secondary objective of this challenge is to tell the drone the distance to the nearest drone so it can react accordingly.

Requirements

Objective 1:

Modify the existing PUT /drone/{id} location update, so it also returns an array of no fly zones just like the search NFZ with Point ( /nfz/search ) endpoint does. Here is an example of the NFZ search call that should return 5 no fly zones.

curl -X POST -H "Content-Type: application/json"  -d '{
  
  "isActive": true,
  "isPermanent": true,
  "geometry": {
    "type": "Point",
    "coordinates": [
      -87.99874,
      41.8019
    ]
  }
}' "http://kb-dsp-server-dev.herokuapp.com/api/v1/nfz/search"

You may choose to simplify this response, for example: all the drone cares about is the total count if items in the array, not the actual point of the polygon. If the count is zero the drone has nothing to worry about. If it a non zero number the the drone needs to take an action (outside of the scope of this challenge). If you think it makes sense to create a new endpoint for this 'enhanced' response or use a parameter ( something like ?returnnfz=true) to requested the 'enhanced' return result that is fine. Please create a section in the readme called Smart Location Updates to describe your approach.

Objective 2.

The requirement for this objective are much looser since we don't know the cost of this query but here is the general idea: When a drone does its location update we would like to return the distance in meters to the next nearest drone. The purpose of this features is to notify the two drone pilots as well as the DSP that they are too close to each other before it is too late. You can take any approach you like: (1) a dynamic NFZ around each drone  (2) a 'geo near' query both seem like acceptable approaches. However a geo near query seems to have some added value to us, because the client can throttle its updates based on distance to the nearest drone, but this also may be a more expensive backend call. Please create a section in the Readme called Nearest Drone Updates that describes your approach.

Project Background

For this series we are creating a Drone Service Platform (DSP) which consist of a marketplace where customers can request drone services for providers/operators. Examples of the services would be drone delivery, mapping, monitoring and many other tasks. In addition to delivering drone services we will also provide a level of traffic management.

Other notable challenges in this series

Links

front end src: topcoderinc/dsp-frontend back end src: topcoderinc/dsp-server Live Heroku Dev backend: http://kb-dsp-server-dev.herokuapp.com/api/v1

 


  1.  

Source: Github Issue #158



Final Submission Guidelines

  • Ensure good test coverage on all modules POSTMAN is expected and other test suites are optional
    Upload documentation for how to run your submission
    Update the readme with your approach to the two objectives.   Use this to explain usage to future developers.
    Upload all your source code as a zip for review
    Winner will be required to submit a pull request with their winning code.
    Please include a video with your submission. If you are not comfortable with spoken english feel free to annotate with text.

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30056061