Vous êtes sur la page 1sur 3

Research Notes #5

Possible drone purchases:


o AR.Drone 2.0 Price $249.00
https://store.parrot.com/fr/drones/384-ardrone-20-eliteedition.html
Protected propellers
Low latency video input
GPS sensor
Stabilization
Larger
o Airborne Cargo Drone Price $99.00
http://www.parrot.com/usa/products/minidrones/airborne-cargodrone/travis/
Still a mini-drone
Protected propellers
Cargocarry heavier loads?
Also need to purchase Bluetooth 4.0 dongle
o Blue Soleil dongle did not work for drone control
o Required for BLE (low energy) which is needed for drone
communication
o http://www.amazon.com/Plugable-Bluetooth-Adapter-RaspberryCompatible/dp/B009ZIILLI/ref=sr_1_1?
s=electronics&ie=UTF8&qid=1461590873&sr=11&keywords=bluetooth+4+usb+dongle
Class ImageCapture:
Purpose: to get image from external web camera
o Method captureimage
Purpose: captures image from web camera
Use JavaCV (java version of openCV) methods to capture
image
Class ImageParser:
Purpose: to get all input values necessary for control from image
o Method findCentroid:
Purpose: get x,y value of a certain color marker in an image
Go through every pixel in the image:
If pixel matches a certain color (within a certain error
range):
o Add x of pixel to a running total of x
o Add y of pixel to a running total of y
o +1 pixel count
Divide x by pixel count, y of pixel by pixel count
Return these values as centroid (x,y) values
o Method findOrientation:

Purpose: get angle value between two color markers in an image


Call findCentroid on two colors (main centroid and exterior
centroid)
delta_x = mc_x ec_x
delta_y = mc_y ec_x
Angle = arctan(delta_y/delta_x)*180/PI
Class DroneControl
Purpose: use input data to make decisions about drone movement
o Method squareMovement:
Purpose: do the following movement path as test for control
system (Figure 16)

Check if orientation is 90 degrees and if position close to


(560,140)
If not, exit and print please calibrate starting
position
Take-of
Go forward 800
Check if position is at (560,840)
While not, calibratePosition
Rotate left 90 degrees
Check if orientation is 0 degrees
While not, calibrateOrientation
Go forward 800
Check if position is at (1360,940)
While not, calibratePosition

Rotate left 90 degrees


Check if orientation is 270 degrees
While not, calibrateOrientation
Go forward 800
Check if position is at (1360,140)
While not, calibratePosition
Rotate left 90 degrees
Check if orientation is 180 degrees
While not, calibrateOrientation
Go forward 800
Check if position is at (560,140)
While not, calibratePosition
Land
o Method calibratePosition:
Purpose: correct minor diferences in position
Calculate forward/backward movement necessary for
correction using current (x,y), target (x,y), and current
angle (Figure 17)
Calculate side movement necessary for correction using
current (x,y), target (x,y), and current angle (Figure 17)
Move forward/backwards as necessary
Move sideways as necessary

o Method calibrateOrientation
Purpose: correct minor diferences in orientation
Calculate diference in current angle vs. target angle
Turn left or right the diference in angle as necessary

Vous aimerez peut-être aussi