1 of 9

Autonomous

Drone Delivery

Theo Carrel

Owen Gallagher

2 of 9

Method

  • Store command string specified by user
  • Take off
  • variable: Image = empty
  • variable: marker = 0 //represents marker location and radius
  • variables: R, Y = constants //minimum marker distance; spin until marker is found
  • for (command in command string) {
    • while (no marker is detected in the following image) {
      • Get image
      • Find marker
      • Yaw += Y
    • }
    • while (marker.radius < R) {
      • if (marker.location.y is too far from equator) change height
      • if (marker.location.x is too far from meridian) change yaw
      • if (marker.location is near enough to the center) move forward

3 of 9

Method (2)

  • //…continued from previous
      • while (no marker is detected in the following image) {
        • Get image
        • Find marker
        • Yaw += Y
      • }
    • }
    • Stop
    • if (command == end) {
      • Land
    • }
    • else if (command == left/right) {
      • Change yaw left/right
    • }
  • }

4 of 9

Progress

Image Processing

Initial Search

Input image into variable for manipulation

Mark all pixels that fall within specified color range

Erosion

Check surrounding pixels

If surrounded by enough, keep

Analysis

Return the estimated center of the target (could potentially return estimated radius)

Show

Image

Processing

Outputs

5 of 9

Progress (2)

Command Loop

Why

This is different than what we were doing before:

Before = predetermined set of commands

Now = indefinite set of commands

Final goal = align flight with targets

Testing

Created a looping command

Went up x times, then landed

X was determined by a variable

6 of 9

Progress (3)

Handling Video

Receiving from the Drone

Installed necessary programs to handle video communication

Testing

Sent video from server to browser

Used as input for the image processing methods

Saved results after image manipulation

Show

Video

Processing

Outputs

7 of 9

Plans

  • Create Marker
    • Yellowish-Orange (least likely to be worn by students)
    • Circular (a mostly arbitrary choice)
  • Image Processing
    • Update color range to match chosen marker color
    • Get radius of marker
    • Maybe adjust sensitivity to changes in light
    • Could make program more precise (check circularity of discovered marker)
      • Use average difference of radius length around center
  • Flight
    • Further testing
      • Video analysis + flight at the same time
    • Use marker location to change height or pitch (Up/Down) and yaw (Left/Right) orientation
    • Use marker location to change position (fly towards marker)

8 of 9

Problems and Risks

The command loop was somewhat unpredictable

Low battery issues sometimes disrupted ability to send commands

If problems related to unstable drone flight persist, then :(

Lowering image quality wasn’t working as intended

If the image processing algorithm is too slow:

Drone and surrounding safety might be jeopardized

Changes might need to be made program (ex: halt while processing)

There’s no way to set destination yet

We haven’t made any way for the user to input a destination

Future plan: send destination from browser to server to drone

9 of 9

Newer Resources