C Progress Report
C Progress Report
Capstone Project
Progress Report
Hand Gesture Controlled Emergency Aerial
Assistance Using Smartphone Based 4G
Quadcopter
Supervisor:
Team Members:
Dr. Mohammed Assad Ghazal
Muhammad Obaidullah
Acting Chair, Department of
1030313
Electrical and Computer
Sifat Sultan 1003289
Engineering
B.Sc. Electrical Engineering
Lab Instructors:
Abu Dhabi University, U.A.E.
Eng. Ahmed Sweleh
Communication Major
Eng. Ibrahim Ibrahim
1
Contents
1 Project Background 4
2 Problem Discussion 5
3 Project Description 5
3.1 Using a UAV for agility and accessibility . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Use of a quadcopter for ease of control and high payload delivery . . . . . . . . . . . 7
3.3 Global control by using on-board 4G smartphone . . . . . . . . . . . . . . . . . . . . 8
3.4 Live streaming video vision by using UDP . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5 Smartphone to Controller Board USB Connection . . . . . . . . . . . . . . . . . . . 9
6 Testing Results 26
6.1 Custom 3D Designed Body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1.1 Version 1 - PLA Plastic, Unchanged print . . . . . . . . . . . . . . . . . . . . 26
6.1.2 Version 2 - PLA Plastic, Modified print . . . . . . . . . . . . . . . . . . . . . 26
6.1.3 Version 3 - Carbon Fiber Body . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2 Leap Motion Library for Gesture Control . . . . . . . . . . . . . . . . . . . . . . . . 26
6.3 Payload Capability calculation using MATLAB . . . . . . . . . . . . . . . . . . . . . 27
6.4 Weight Calculation of the Quadcopter. . . . . . . . . . . . . . . . . . . . . . . . . . . 28
8 Gantt Chart 29
9 Tasks 31
10 Conclusion 38
2
Abstract
This project aims to solve the problem of providing emergency medical or any other type of
assistance in a un-accessible area by using a 4G quadcopter which is controlled by hand gestures.
The hand gestures provided by the user will be used to maneuver the quadcopter to reach the
emergency location and provide assistance. The uniqueness of this project lies in the fact that
it uses a 4G smartphone to connect the quadcopter to the base station for getting the user
commands, providing the GPS location, and live video stream of the quadcopters vision.
1 Project Background
The number of researches and developments on the unmanned aerial vehicles have increased over
the past years. Many hobbyists and robotics enthusiasts are particularly interested in quadcopters
because of their ability to hover in place, take-off and land vertically. [4] People can easily now buy
and assemble a quadcopter with low cost. Within seconds a quadcopter can lift-off reach a point
and land back. This ultra fast response and ease of control make the quadcopter ideal for reaching
areas dangerous for humans and performing tasks.
Parallel to this, the field of Human-Computer Interaction has been a growing field in the past
few years due to the introduction of innovative interaction devices such as Nintendo Wii Remote
and Microsoft Kinect. The idea of using gestures as a mean of interaction has become the recent
trend as it makes the experience more natural and hence the possibility of application.
Quadcopter: The term quadcopter or quadrotor comes from the four narrow chord propellers
used by the air vehicle in order to maneuver in air. The quadcopter uses these four propellers to
push the air downwards in order to generate lift force. It maneuvers by varying the speeds of these
four motors.
Leap Motion: In 2012, the Leap Motion controller was introduced. Leap motion comes with a
150 degree field of view and makes use of a depth sensor to follow and scan the hand features up
to 1/100th of millimeter. This extremely precise control gives us the opportunity to use it as our
interface over Kinect which tracks body instead of hand since our gestures will be mainly finger
movements.
The past few years there have been extensive research on autonomous micro-aerial vehicles. The
application ranges from hobby to serious circumstances.
3
Quad Copter Application XPROHELI developed quad copter that is used to take high quality
video and photography. http://www.youtube.com/watch?v=HoQQlRzybmA#t=14 This video was
taken using the XPROHELI quad copter.
FAE developed tri copter that is used to take long range aerial surveillance over oil field. http:
//www.youtube.com/watch?v=a5H5paygWQw&feature=youtu.be Quadcopter has the potential to
be used in a variety of application and we decided to work on a case where quad copter deserves
to be used; to save human lives where time is of paramount.
2 Problem Discussion
In this stone hearted world, everyday accident happen and people die. These lives can be saved
by timely medical response. But the response faces countless obstacles sometimes like traffic jams,
remote places, radiation etc. This is a growing problem causing engineers and specialists to think
and come up with different solutions.
UAE itself has a mortality rate of about 37 per 100,000 which is one of the highest in the world.
[1] This mortality rate can be further skimmed down by providing timely first aid kit to seriously
injured people.
So all in all, our problem statement is how to provide quick and timely emergency assistance
without the restriction of the range by using low-cost quadcopter.
3 Project Description
We proposed a system which is complete package and will solve all the problems of providing
quick emergency assistance. The proposed system was widely accepted by the faculty members
and approved.
4
Figure 3: The system diagram of the project.
Our system has a Quadcopter with a gyro control chip which controls the basic maneuvers for
the UAV and we propose to build a custom designed chip to decode the signals coming from
the on-board android smartphone and send commands to the controller chip. We used a android
smartphone to provide the quadcopter with GPS, Camera, and 4G internet connection. So this
quadcopter is now capable of performing completely unmanned flight and be controlled using http
requests coming to it through 4G connection. The quadcopter also provides a http feedback to
the computer about its GPS position. The GPS can also be used to make a flight plan for the
quadcopter. The on-board mobile also provides a UDP live stream of the camera vision and can
be controlled using.
Lets take a typical emergency assistance scenario and apply our proposed solution to it. A call
comes to the police about a car accident that has happened on a highway in Abu Dhabi. This
is emergency case it might take several hours for the police to arrive and analyze the situation.
The police places a pin on the map in the quadcopter software in computer. The computer sends
the http request to the quadcopter to move to that specific location. The quadcopter immediately
starts up and goes to the GPS location. This is done with a feedback loop which calculates the
current GPS location and the required GPS location. While all of this is done, the policeman can
see the current location of the quadcopter on the map. When the quadcopter reaches the end of its
destination, the policeman turns on the gesture control mode and starts controlling the movement
of the quadcopter precisely using hand. Now the policeman can access the situation and can also
possibly drop the first aid kit if the situation is too serious.
5
3.2 Use of a quadcopter for ease of control and high payload delivery
With the use of four propellers pushing the air downwards with immense speed, a typical quad-
copter is capable of lifting high payloads. UAVs for search and rescue operations are required to
be small and at the same time carry high payloads. Quadcopter is perfect for such kinds of ease
of control applications because of its usage of four high rpm brushless motor run propellers. These
brushless motor speeds can be intelligently varied to provide 6 degrees of freedom by sensing the
gyroscopic values of Pitch, Yaw, and roll which.
The quadcopter can be controlled using two types of configurations, one is the X configuration
and the other is the + configuration. For a very stable flight and camera view being not blocked,
we propose to use a X configuration quadcopter.
Forward Direction: By speeding up the back motors, a forward direction motion can be ac-
complished. This makes the thrust of the motors at an angle to the z-axis. The thrust has force
components in the weight direction to balance or cancel the weight and a unbalanced forward
component to make the quadcopter go forward.
Left Direction: By speeding up the right motors, a left direction motion can be accomplished.
The thrust has force components in the weight direction to balance or cancel the weight and a
unbalanced forward component to make the quadcopter go left.
Right Direction: By speeding up the left motors, a right direction motion can be accomplished.
The thrust has force components in the weight direction to balance or cancel the weight and a
unbalanced forward component to make the quadcopter go right.
6
Figure 6: X configuration forward motion of Figure 7: Left motion of quadcopter in X con-
quadcopter. figuration
Backward Direction: By speeding up the front motors, a backward direction motion can be
accomplished. This makes the thrust of the motors at an angle to the z-axis. The thrust has force
components in the weight direction to balance or cancel the weight and a unbalanced backward
component to make the quadcopter go forward.
A video stream is acceptable if there is any fault of packages lost in the way. It is because if
during the video streaming the packages get lost due to the router being overloaded for instance
then the video streaming can still be resumed with a reduced quality.
7
The TCP/IP protocol would force the video stream to wait until the dropped packages are found
to resume processing newer packages. The point that is usually misunderstood is that when few
packages are lost it doesnt mean a whole frame is lost but rather few pixels from a certain frame
are lost and hence waiting for these lost pixels to come back is a waste since the video stream has
already moved on to new frames. However TCP could have been a good option if the case was
about recorded video streaming since when a package is lost the system pauses the frame until the
all the data for the next frame has been collected in the buffer giving the term buffering.
Figure 8: A custom designed and programmed AtMega 328 chip will act as a intermediate connector
to decode the signals coming from the android smartphone through USB and send appropriate
commands to the control board.
8
Figure 9: The figure shows how an AtMega 328 is connected to the FTDI USB-Serial converter
chip. [2]
Figure 10: The figure explains the network protocol which was designed by us for sending flight
data from Android USB to micro-controller.
OBFlightPacket Network Protocol Once the communication link is established, the android
starts sending the OBFlightPacket. The OBFlightPacket is nothing but a byte array of size 7.
As the byte is composed of 8 bits, there are 28 = 256 possibilities. So if we convert from byte
to unsigned integer, the value can vary from 0 - 255. If we convert the byte to ASCII character
(American Standard Code for Information Interchange), each of these possibilities (symbols) can
represent all charecters on keyboard and some special characters too.
Now the micro-controller AtMega 328 can communicate with the smartphone using the USB
connection. The control data can be transferred back and forth between the smartphone and
AtMega. There is a library in Android to communicate with the smartphones USB port called
USBManager.
We used this library in order to send the byte array to the USB port. A USB-serial converter
chip called FTDI is connected to the smartphones USB port and the FTDI chip is then connected
9
Figure 11: The figure which was developed in Photoshop explains the algorithm to unpack the
OBFlightPacket. There are several checking stages and even if one checking results in false, the
packet is rejected.
to XBee.
Figure 12: The figure shows one of the ways the smartphone can communicate with the AtMega328.
The XBee module is attached using a USB cable to the smartphone and the XBee explorer which
has FTDI chip on it, takes care of the conversion of data signals from USB to Serial.
10
5 // E x t r a c t i n g v a l u a b l e i n f o r m a t i o n from fram and d i s p l a y i n g on TextBoxes
frameIdBox . Text = currentHandFrame . Id . T o S t r i n g ( ) ;
7 timeStampBox . Text = currentHandFrame . Timestamp . T o S t r i n g ( ) ;
handsBox . Text = currentHandFrame . Hands . Count . T o S t r i n g ( ) ;
9 f i n g e r s B o x . Text = currentHandFrame . F i n g e r s . Count . T o S t r i n g ( ) ;
g u e s t u r e B o x . Text = currentHandFrame . G e s t u r e s ( ) . Count . T o S t r i n g ( ) ;
11
// Do t h i s i s t h e c u r r e n t frame c o n t a i n s hands
13 i f ( ! currentHandFrame . Hands . IsEmpty )
{
15 // Get t h e f i r s t hand
Hand hand = currentHandFrame . Hands [ 0 ] ;
17
// Check i f t h e hand has any f i n g e r s
19 F i n g e r L i s t f i n g e r s = hand . F i n g e r s ;
i f ( ! f i n g e r s . IsEmpty )
21 {
// C a l c u l a t e t h e hand s a v e r a g e f i n g e r t i p p o s i t i o n
23 Leap . Vector avgPos = Leap . Vector . Zero ;
foreach ( Finger f i n g e r in f i n g e r s )
25 {
avgPos += f i n g e r . T i p P o s i t i o n ;
27 }
avgPos /= f i n g e r s . Count ;
29 }
59 f l o a t p i t c h V a l = ( d i r e c t i o n . P i t c h 1 8 0 . 0 f / ( f l o a t ) Math . PI ) ;
// Rotate t h e arrow a c c o r d i n g t o t h e p i t c h v a l u e
61 p i c t u r e B o x 2 . BackgroundImage = RotateImage ( g l o b a l : : O r e g o C o n t r o l l e r .
P r o p e r t i e s . Resources . arr , p , pitchVal ) ;
11
// D i s p l a y p i t c h i n t e x t b o x
63 pitchBox . Text = p i t c h V a l . T o S t r i n g ( ) ;
// Check t h e p i t c h v a l u e r a n g e and s e t i t
65 i f ( ( p i t c h V a l < 9 0 ) && ( p i t c h V a l > 90) )
{
67 E l e v a t i o n = ( i n t ) p i t c h V a l +90;
}
69
f l o a t r o l l V a l = ( normal . R o l l 1 8 0 . 0 f / ( f l o a t ) Math . PI ) ;
71 // Rotate t h e arrow a c c o r d i n g t o t h e r o l l v a l u e
p i c t u r e B o x 3 . BackgroundImage = RotateImage ( g l o b a l : : O r e g o C o n t r o l l e r .
P r o p e r t i e s . Resources . arr , p , r o l l V a l ) ;
73 // D i s p l a y r o l l i n t e x t b o x
r o l l B o x . Text = r o l l V a l . T o S t r i n g ( ) ;
75 // Check t h e r o l l v a l u e r a n g e and s e t i t
i f ( ( r o l l V a l < 9 0 ) && ( r o l l V a l > 90) )
77 {
A i l e r o n = ( i n t ) r o l l V a l +90;
79 }
In the ground base station, following things can be done. In other words, the features of the
ground station are as following:
After extensive image processing by leap motion library on the current frame, the library
initializes hands, fingers, and palms objects in the frame parent object and returns frame for
programmer to access and use.
This frame object is accessed by the C# application and some of the data enclosed is displayed
on the screen in forms of text-boxes, labels and pictures.
The arrow picture is loaded and rotated to the same angle according to the Pitch of one
the hands detected by the leap motion.
The arrow picture is loaded and rotated to the same angle according to the Roll of one the
hands detected by the leap motion.
The arrow picture is loaded and rotated to the same angle according to the Yaw of one the
hands detected by the leap motion.
12
The hand y position in 3D is extracted from the current frame and displayed in a textbox
and a progress bar indicates how high above is the hand approximately from the sensor. The
maximum sensitivity we detected using our Leap Motion device was about 70cm.
The current frame time-stamp, frame ID., number of hands detected, number of fingers
detected, and gesture detected state are extracted from the frame object and displayed using
the text-boxes.
Pitch, Yaw, Rudder, and Thrust values are then converted to byte array according to the
Flight protocol which we discussed earlier.
The GPS way points for a quadcopter can be set and stored in the database.
Figure 13: The figure explains a groupbox which is embedded inside the main application and
contains the GUI for viewing the Leap Motion data and variables.
13
Figure 14: The overall C# application main window with all the settings and options. The ap-
plication allows communication through internet and XBee as well. The commands can be sent
manually by entering it into textboxes or directly decoded from hand gestures.
The process of obtaining the permission is by first letting my app to contact with the Goolge
API site. This is made possible by the following steps:
14
Figure 15: We generate an APK that will have a SHA1 finger-print. This finger-print will be stored
in a .jks file format which cannot be opened except with the keytool.exe application that comes
along when one downloads the Java SDK.
In order to tell keytool to open that .jks file we use cmd as the interface. Below are a series of
simple commands that we need to type in order to open keytool application and then tell it to open
my .jks file to retrieve the SHA1 finger print
Figure 16: Signed APK was generated and stored the key in the following file Now it was time to
retrieve the key that is stored inside the googlemap.jks
15
5 Hardware Development Progress
5.1 3D Model Design
A 3D Model of the quadcopter was custom designed to fit our needs. The 3D Model was supposed
to have arms of specific lengths to allow the propellers to rotate freely. We designed the whole
quadcopter in Google Sketch Up taking care of these parameters. The design also was supposed to
have a holder for the mobile phone. We designed a intelligent mechanism for controlling the tilt
angle of the mobile. We used 10 inch diameter propellers with 3.8 inch of pitch. The pitch controls
the amount of air scoped with each rotation. The diameter controls two things, amount of air the
propeller pushes down, and the weight of the propeller. Careful calculations and testings were done
to calculate the amount of weight of each motor can lift.
16
A raft to hold and rotate the mounted android smart-phone.
Four stands for landing gear.
Figure 18: Explanation of the traditional 3 Dimensional rotation movements. These movements
were defined for airplanes but as time passed by, these same terminologies were adopter by quad-
copters although quadcopters dont bend their wings for roll(aileron).
It has become the industry standard to implement sensors to know the precise measurment of
imbalance instantly and exert the proper combination of force to bring it back to balance. These
sensors are known as Gyroscope and they use the law of physics to measure this phenomenon.
Figure 19: The gyroscope sensor is designed to measure the rotation per second and the angle of
rotation of the object its mounted to when it experiences an imbalance.Below is a typical 3-axi
gyroscope ITG3200. [6]
17
Hence, when the object tilts a little to the right(roll), the gyroscope on the y-axis will record a
reading while the other three will not record any reading, or when the device tilts up(pitch) the
sensor in x-axis will record a value while the rest wont record any value and finally if the device
rotate in the horizontal plane the sensor in z plane will measure a current due to angular rotation
around the z-axis
The working of the gyroscope is as fascinating as it is clever. There is a small mass inside each
gyroscope on a particular axis which is held by very small springs. When there is a rotation, this
will cause a centripetal force to form whose direction will depend on the direction of rotation. For
instance; if the gyroscope is rotating right there will be a force that is exerted toward the center
while it the gyroscope is rotating outward there will be a force that opposite to the center.
Figure 20: These forces are exerts the spring and this movement generates very low-current electrical
signal that is amplified and later read by the micro-controller. [6]
18
Figure 21: The table shows strength of the plastic used for 3D printing in our lab according to
different standards. [3]
Servo connector for mini servo which will be used for changing the mobile angle.
16 MHz crystal with 22pF capacitors for providing clock signal to AtMega328.
19
Ultrasonic height sensor connection.
3.3V Regulator for stepping down he voltage from 5V to 3.3V for the XBee.
IR Receiver for receiving Infra red signals. Basically this includes TV, CD player and other
IR transmitters. The IR receiver already has a electronic circuit to amplify the IR signal
and provide a signal when a change in IR level is detected. Also the Sensor already has the
background noise removal circuit. SO we can just connect the infra-red sensor directly to the
interrupt pin to read the bits transmitted and change the states of the quadcopter. This IR
Receiver will be used
20
Figure 23: A circuit diagram of our prototype board design version 2.
6 pin connector for FTDI chip to convert USB data signals to serial data.
In the above figure, the prototype board is shown where we have used XBee to communicate
with the computer and receive the serial data to control the motor speed. This is just for testing
purposes and in the final design we will use the data coming from the android to determine the
speed of the motors. Furthermore, the final design will use the XBee as a kill switch to completely
turned off the quadcopter in case it reaches a forbidden area or any similar situation.
21
Figure 24: A x-ray vision of our prototype board design version 1.
22
Figure 26: A x-ray vision of our prototype board design version 3.
Leap Motion provides a library to use for creating hand objects and approximates the finger
positions in the 3 dimensional space. According to these positions of the fingers, we can code the
Leap Motion to generate http requests to the android on the quadcopter through internet.
23
We will program a java application to detect the hand gestures and then according to the gesture
input, a particular http request will be made to the android. Eclipse IDE will be used to program
the desktop application which will provide the internet connection to the quadcopter.
Figure 28: Moving the hand upwards in the z- Figure 29: Moving the hand downwards in the
axis in front of the Leap motion should provide z-axis in front of the Leap motion should pro-
us with a +ve change in z value. vide us with a -ve change in z value.
Figure 32: A -ve value in x-axis can be ob- Figure 33: Moving the hand away from the
tained when the user moves the hand to the body can give us +ve value of movement in
left. y-axis.
24
The leap motion captures about 200 frames per second or more depending upon the computer
processing power. This is huge data speed and sudden errors can cause the system to In our project,
we will implement a Kalman Filter on the hand gesture data.
6 Testing Results
6.1 Custom 3D Designed Body
Successful printing of the body was achieved but arms had to be manually drilled for the holes
so that the motors fit precisely. The body was assembled using the screws with washers to prevent
the plastic to breaking down. The hols for the circuit board to mount were made and the place for
the mobile angle mover servo was also cut out.
In the website from Makerbot named Thingiverse (www.thingiverse.com), there are several 3D
models designed for several sized quadcopters. Although these models are similar to what our
final product required, these models need to be modified in several places to fit out needs and
requirements.
We found that all the parts indeed fit together but a major increase in the height of the arms
from ground was needed. Also the motors we had did not fit on top of the arms perfectly. An
increase in the diameter of motor mounts was also needed.
We found that all the parts indeed fit together but a tragedy occured when we left the model in
the car for two days. Under the heat of the sun and no air flow, the quadcopter body melted and
got twisted.
25
S a m p l e L i s t e n e r l i s t e n e r = new S a m p l e L i s t e n e r ( ) ;
2 C o n t r o l l e r c o n t r o l l e r = new C o n t r o l l e r ( ) ;
// Have t h e sample l i s t e n e r r e c e i v e e v e n t s from t h e c o n t r o l l e r
4 c o n t r o l l e r . addListener ( l i s t e n e r ) ;
Frame frame = c o n t r o l l e r . frame ( ) ;
6 System . out . p r i n t l n ( Frame i d : + frame . i d ( )
+ , timestamp : + frame . timestamp ( )
8 + , hands : + frame . hands ( ) . count ( )
+ , f i n g e r s : + frame . f i n g e r s ( ) . count ( )
10 + , t o o l s : + frame . t o o l s ( ) . count ( ) ) ;
26
Figure 34: Moving the hand away from the body can give us +ve value of movement in y-axis.
27
Figure 35: The table shows all the parts which were bought from various sources and countries
including parts which were bought and brought personally from canada.
8 Gantt Chart
28
29
9 Tasks
Task Name: Modifying 3D body design
Accomplished By: Muhammad Obaidullah
Starting Date: 4 December 2013
Completion Date: 26 December 2013
Obstacles Faced:
1 The Sketch Up did not allow modification of the motor mount unless the landing
pad was removed. Used an older version of the Sketch Up file provided online and
printed the leg separately.
Several times, the electricity of the lab went and the model had to be printed again.
After repeated printing and experimenting, the size of the holes and arms was mod-
2 ified for perfect fitting.
Several test flights resulted in broken parts of the quadcopter, these parts were
printed again.
30
Task Name: Reverse engineering the HobbyKing flight control board
Accomplished By: Muhammad Obaidullah
Starting Date: 28 January 2014
Completion Date: 12 March 2014
Obstacles Faced:
Surface mount resistor values were very hard to find out because of small size.
3 The signals required by the flight control board were found and confirmed using the
oscilloscope.
Serial communication gives low error rate under slow bit rate and XBee performs
4 well close to 1200 bps serial data rate. Therefore the baud rate was reduced to 1200
bps. And appropriate delay was added in the Serial data read loop to wait for the
next byte to arrive.
31
Task Name: Configuring XBee for serial communication
Accomplished By: Muhammad Obaidullah
Starting Date: 26 March 2014
Completion Date: 27 March 2014
Obstacles Faced:
New version of XCTU does not recognize the XBees bought. Downloaded older
version of XCTU and configured.
5 The baud rate was reduced to 1200 bps to ensure low bit error rate. This rate was
chosen after many tests using the oscilloscope channel 1 connected to the RX pin of
XBee to detect whether it received every byte sent at different data speeds.
Our quad copter is required to take a video stream of the surrounding and using
any USB camera that are found in the market to carry out this task is bad choice as
6 with every addition of weight the battery life of the quad copter is bound to reduce.
32
Task Name: Play Live Stream using HttpURLConnection
Accomplished By: : Sifat Sultan
Starting Date: 15 January 2014
Completion Date: 5 June 2014
Obstacles Faced:
The smartphone will stream the video to a certain IP and Port address. This stream
is very efficiently encoded such that it needs powerful library to be decoded.
I planned to use a WebView or a Media Player to play the video streaming. However;
7 neither WebView nor Media Player in android is not powerful enough to decode the
stream and play video.
The activity in the foreground should be able to bind to the background service and
8 access all data.
33
Task Name: Android background service for getting direction from compass
Accomplished By: Muhammad Obaidullah
Starting Date: 5 April 2014
Completion Date: 15 April 2014
Obstacles Faced:
Tried to implement the tilt compensated compass using the libraries provided by
researchers in the field but found out that the tilt compensation reduces the accuracy
of the smart-phone compass.
9
A smartphone compass does not provide the tilt compensated direction. It is the
raw compass direction where the value can be extremely wrong if the orientation of
the android phone itself is not correct.
GMap library was used to embed the map into the C# application.
11 GMap provides many pre-built functions like drawing a polygon and defining GPS
point using Latitude and longitude.
34
Task Name: Embedding the XBee serial port in the C# application.
Accomplished By: Muhammad Obaidullah
Starting Date: 19 February 2014
Completion Date: 20 February 2014
Obstacles Faced:
12 Programming the Serial port and changing the settings for the port by using the
combo box.
Task Name: GPS follower background service for way-point determined flight control.
Accomplished By: Muhammad Obaidullah & Sifat Sultan
Starting Date: 25 May 2014
Completion Date: 7 June 2014
Obstacles Faced:
Percentage Completion: 0%
Output: The user can select the waypoints on the C# application and those waypoints
will be uploaded to the database. From the database, the waypoints are grabbed by
this background service and accordingly the OBFlightPackets are generated to make the
quadcopter go to the desired way-point.
14 Getting the serial string from the XBee and performing string operations to extract
the height data.
35
Task Name: Writing the Arduino C code for the AtMega328.
Accomplished By: Muhammad Obaidullah
Starting Date: 11 February 2014
Completion Date: 27 May 2014
Obstacles Faced:
Sonar sensor requires very slow triggers of about 20 Hertz. The micro-processor
cannot wait for the sonar sensor to send the sound signal, receive the signal back
and calculate the distance.
15 Drawing a clear line between the inputs and the outputs of the quadcopter system
and figuring out the finite state machine diagram.
Task Name: Designing & updating the circuit diagram for the controller board.
Accomplished By: Muhammad Obaidullah
Starting Date: 4 February 2014
Completion Date: 26 March 2014
Obstacles Faced:
Providing the 5V logic power to the circuit board by using the ESC 3 pin headers.
Kill switch is an essential and necessary requirement especially when in initial testing
16 stages. Implemented the kill switch using the infrared receiver.
36
Task Name: Soldering & mounting the equipment on the PCB
Accomplished By: Muhammad Obaidullah
Starting Date: 24 December 2013
Completion Date: 28 May 2014
Obstacles Faced:
There was a vias under the AtMega so it had to be soldered before all bracket was
to be soldered.
17
The PCB machine failed several times before a good PCB was printed. A lot of
time and effort was wasted in this. This also caused the project to be delayed.
The first versions had some faults in them so had to be printed again and again.
10 Conclusion
The project comes with a variety of features that needs to be accomplished in the mentioned
schedule. This is made possible due to the Gantt chart that shows a detailed breakdown of how
the tasks will be approached. In our chart we tried to give a very reasonable duration to each of
the task that needs to be carried. The duration was based on various factors and experiences. For
instance, one may notice that; Printing Body; one of our sections in Gantt chart took a duration
that is about double and triple that of other parts, it was decided after a serious discussion and a
unanimous agreement from all the member that it; in reality; required a considerable amount of
time as it often demanded that the task be redone a couple of times until a desired result is reached.
Similarly there are some tasks that were given a very brief amount of time as the team believed
that we cannot afford spending a significant portion of the given time in a task that doesnt have
that amount of an impact in the later and the main portion which deserved our focus time. The
task of choosing the part resulted to be a challenging endeavor since we had to balance the quality
with the cost of the product, it must be also mentioned that a great deal of our part was ordered
from international countries. This was among other a primary obstacle that this project will face.
The team members would like to ask everyone for honest prayer so that the project can be
successful.
References
[1] Jennifer Bell. (2013) Road accidents account for almost 70% of head injuries
at one UAE hospital [Online]. Available: http://www.thenational.ae/uae/health/
road-accidents-account-for-almost-70-of-head-injuries-at-one-uae-hospital
[2] ADAFRUIT (2010) FTDI Friend Breakout Board+ (tutorial) [Online]. Available: http:
//www.adafruit.com/blog/2010/09/16/ftdi-friend-breakout-board-tutorial/
37
[3] Prospector. Polylactic Acid (PLA) Typical Properties [Online]. Available: http://
plastics.ides.com/generics/34/c/t/polylactic-acid-pla-properties-processing
[4] Mark Johnson Cutler. (2010) Design and Control of an Autonomous Variable-Pitch Quadrotor
Helicopter [Online]. Available: http://acl.mit.edu/papers/Cutler_Masters12.pdf
[5] Leap Motion Documentation. (2013) Understanding the Java Sample Application [On-
line]. Available: https://developer.leapmotion.com/documentation/Languages/Java/
Guides/Sample_Java_Tutorial.html
38