Vous êtes sur la page 1sur 12


X1 Robotics Semi-Autonomous Quadcopter

Research and Development

Initial X1 Design
Semi - Autonomous Quadcopter
with ability to fly in 6 Cartesian
directions: +/-X, +/-Y, +/-Z.
Controlled by IOS application
with communications from
iPhone to onboard Raspberry Pi
via Wifi Direct.
Flight software and controls will
be coded onto Arduino Mega
2560 and will receive directional
information from Raspberry Pi.

How a
Quadcopter Flies
4 rotors: Rotors 1&0 spin the
same direction. Rotors 2&3 spin
opposite direction of 1&0.
Roll, Pitch and Yaw (Euler Angles)
can describe instantaneous 3D
orientation of vehicle and are
measured in degrees.

Flight software will be based on

calculating and correcting the
error in instantaneous roll, pitch
and yaw of the device.



How a Quadcopter
Flies (2)
Using diagrams to right: To go forward,
motor 2 will decrease thrust while motor 3
will increase an equal amount of thrust.
This causes a delta upward thrust of zero
along with a forward velocity.
Movement in yaw direction is achieved by
increasing power to 1&0 while decreasing
This examples uses a

+ formation. An X

formation uses the same basic principles of

flight, but with forward being defined as the
45 degree angle between motors 1 & 2.

X1 IOS Application Design

Example Screen
Startup button causes rotors to spin
with low thrust (Copter still on ground).
Initialize causes copter to begin to
hover about a meter off the ground.
Shutdown causes Quadcopter to
slowly lower itself to the ground and
turn of motors.
All other controls are self explanatory.
This app will allow the user to send
directional signals from iPhone, to
Raspberry Pi.










X1 Instruments and Processor Assignments

Raspberry Pi Responsibilities
Communicate with iPhone app.
Send basic 5V logic signals to Arduino
microprocessor using digital I/O pins to
control the 9 buttons explained on App
design slide.
Raspberry Pi capabilities will be used
for future models (X2, X3 etc) for
improvements such as, Camera feed,
stereo, GPS Nav, etc
X1 design of Raspberry Pi is fairly
simple while complex flight software is
left to the Arduino in order to save
space on the Pi for later improvements.

X1 Instrument and Processor Assignments

Inertial Measurement Unit(IMU)

Utilizes 3 axis accelerometer, 3 axis
gyroscope, and 3 axis magnetometer
to calculate 3D orientation in space.
Will output serial data to Arduino
which will be used to calculate Roll,
Pitch, and Yaw.
Some IMUs have built in
Microprocessors on them, as to save
space for flight software on Arduino.
IE, the real time Roll, Pitch and Yaw
values could be calculated before
even being sent to the Arduino to be

X1 Instrument and Processor Assignments

Arduino Responsibilities
Arduino will be the hub
for all the flight software.
Will take inputs from
Raspberry Pi and IMU
instruments and output
Pulse Width Modulated
Signals to individual
motors to allow for
stable flight.

Flight Software Design

Step One: Use IMU to
calculate real time roll,
pitch and yaw.
Step Two: Use signals from
raspberry pi to set current
desired direction and IMU
data to find current
orientation, and use PID
controller to correct roll,
pitch and yaw error.

Flight Software Design (2)

PID Controller
A PID controller calculates an 'error' value as the
difference between a measured [Input] and a desired
set-point. The controller attempts to minimize the error
by adjusting [an Output].
Proportional Element: Fixes immediate error using
proportional constant. Just a proportional controller will
lead to high oscillations and offset error.
Integral Element: Serves as a memory for error over
time. High integral Coefficient leads to high set-point
Derivative Element: Serves to look at the Rate of
Change of error with time, as to predict future error
A good PID controller will have finely tuned coefficients
for each element, and allow for fast error correction
without excessive oscillations and instability.

Flight Software Design (3)

Pseudo Code
Example code
In Arduino IDE
(1): Set all initial Conditions, variables,
parameters, functions, etc
(2): In void setup() declare all pin I/Os and run
function to arm motors and speed controller. Run
startup and initialize functions to get Quad
hovering right above ground.
(3): in void loop() use switch function to define 6
different modes, one for each direction the copter
should fly.
(4): In each case of switch function, define the
new motor PWMs and angle set points for PID
controller. Loop until shutdown process initialized.
(5): Run one final loop to slower lower quad to
ground and shutdown all systems.

Step 1

Step 2

Step 3,4
and 5

DC Brushless motors
Electronic Speed
Lithium Ion
Rechargeable Battery