Table of Contents
Design
- 4 Motors ESC
- ARM Cortex-M3 80Mhz
- Sensors: Gyro, Accelerometer, Compass, Temperature, GPS & Sonar(to come in later design)
- Xbee 802.15.4 Wireless Communication
Plan
Project is current in Phase B-9.
Design Diagram: quadrotor_uav_arko.vsd
Phase A - Hardware Development
- Build a one motor/ESC setup, vary speed (Prototype with Arduino)
- Build a two motor/ESC setup, vary speed (Prototype with Arduino)
- Design board with new TI chip, sensors, power management, etc.
- Layout, mill and test proto board
- Build a two motor/ESC setup teeter-tot (Pitch) and wire up to proto board, test all hardware
Phase B - Modeling & Software Development
- Create library (or use Maple IDE)
- Create Kalman filter for all sensor inputs
- Create basic flight control/stabilization code
- Balance one degree of freedom very well (Pitch)
- Code Clean Up
- Build a rig to support two degrees of freedom (Pitch and Roll)
- Balance two degrees of freedom (Pitch and Roll) very well
- Modify rig to support three degrees of freedom (Pitch, Roll, Yaw)
- Balance and stabilize all three axis, add fourth degree of freedom (Altitude)
- Create wireless communication with computer/controller and command set
Phase C - Testing/Revising
- Test and improve board layout, filtering, design
- Design/CAD new chassis, mount and update model
- Add any extra features
- Test, Test, Test
Phase D - Package and Document
- Document all parts, assembly notes, and code
- Create cost summary and links to buy parts
Phase E - Complex Flight
- Follow flight path defined by user
- Do tricks?
- Stage 6 to CDM, separation at level 4
Phase F - ???
Phase G - Profit
Chassis and Hardware
- Build teetertot 1 degree of freedom (pitch)
- Picture and build instructions coming soon..
- Build 2 degrees of freedom balance (pitch and roll)
- Build 3 degrees of freedom rig (pitch, roll, yaw)
- Build 6 degrees of freedom rig (hang on a string?, pitch, roll, yaw, long, lat, alt)
Board Layout and Schematic
- Board layout and schematic to be posted soon..
- List of Parts to be posted soon..
State Estimation & Kalman Filter
To obtain a clean state estimation one must first filter the sensory inputs then produce a state model based on that.
- Create Kalman filter
- Here's a simulation of a gyro and accelerometer filtered to give a clean angle estimation: kalman_gyro_acc.m
- Create state model
Control System
Hardware links
- Processor: TI LM3S9B96 - ARM Cortex-M3 80Mhz
- Gyro: L3G4200D
- Accelerometer: ADXL335
- Compass: HMC5843
- Temperature: TMP35
- Crystals: 16 Mhz Crystal
- Crystals: 25 Mhz Crystal
- Power Regulator Buck: TPS54231
- Level Logic: BSS138
- Wireless: Zigbee Module
Software Links
- Maple IDE: Maple IDE
- QGroundControl: qgroundcontrol
- IAR: IAR ARM
Pictures & Videos
First Stable Flight with APM!
<html> <iframe width=“640” height=“390” src=“http://www.youtube.com/embed/26CKfzZxblg” frameborder=“0” allowfullscreen></iframe> </html>
New Chassis!
First flight test with APM
<html> <object type=“application/x-shockwave-flash” width=“400” height=“300” data=“http://www.flickr.com/apps/video/stewart.swf?v=109786” classid=“clsid:D27CDB6E-AE6D-11cf-96B8-444553540000”> <param name=“flashvars” value=“intl_lang=en-us&photo_secret=5648ec8538&photo_id=6925134495”></param> <param name=“movie” value=“http://www.flickr.com/apps/video/stewart.swf?v=109786”></param> <param name=“bgcolor” value=“#000000”></param> <param name=“allowFullScreen” value=“true”></param><embed type=“application/x-shockwave-flash” src=“http://www.flickr.com/apps/video/stewart.swf?v=109786” bgcolor=“#000000” allowfullscreen=“true” flashvars=“intl_lang=en-us&photo_secret=5648ec8538&photo_id=6925134495” height=“300” width=“400”></embed></object> </html>
New Frame!
Fixed Kalman Filter Lag issues! Small setback, but the control should be much cleaner.
<html> <iframe width=“640” height=“390” src=“http://www.youtube.com/embed/2C_nZQytfUc” frameborder=“0” allowfullscreen></iframe> </html>
New Mount! Finally Rotational X,Y,Z!
New Chassis!! Finally have 4 rotors!
New board in action!
<html> <iframe width=“640” height=“390” src=“http://www.youtube.com/embed/erqqJiqQ7Jg” frameborder=“0” allowfullscreen></iframe> </html>
<html> <iframe title=“YouTube video player” width=“640” height=“390” src=“http://www.youtube.com/embed/FNUaF5oQIS8” frameborder=“0” allowfullscreen></iframe> </html>
Balancing with a Kalman Filter and PID loop tuned!
<html> <iframe title=“YouTube video player” width=“640” height=“390” src=“http://www.youtube.com/embed/dJ4UCmEErd0” frameborder=“0” allowfullscreen></iframe> </html>
Balancing for the first time! (no Kalman Filter)
<html> <iframe title=“YouTube video player” width=“640” height=“390” src=“http://www.youtube.com/embed/uJXTldteSjc” frameborder=“0” allowfullscreen></iframe> </html>
Powered up the motors and able to read accelerometer!
<html> <iframe title=“YouTube video player” class=“youtube-player” type=“text/html” width=“640” height=“390” src=“http://www.youtube.com/embed/9fWGkLAlYEQ” frameborder=“0” allowFullScreen></iframe> </html>
First time firing up the board and the code uploaded just fine! Test code works!
<html> <iframe title=“YouTube video player” class=“youtube-player” type=“text/html” width=“640” height=“390” src=“http://www.youtube.com/embed/k7jDgBtNLH4” frameborder=“0” allowFullScreen></iframe> </html>
Beginning code works! Able to read multiple ADC inputs and output multiple PWM outputs!
<html> <BR><BR>
<object width=“640” height=“385”><param name=“movie” value=“http://www.youtube.com/v/o6dARgDJEew?fs=1&hl=en_US”></param><param name=“allowFullScreen” value=“true”></param><param name=“allowscriptaccess” value=“always”></param><embed src=“http://www.youtube.com/v/o6dARgDJEew?fs=1&hl=en_US” type=“application/x-shockwave-flash” allowscriptaccess=“always” allowfullscreen=“true” width=“640” height=“385”></embed></object> <BR><BR>
<object width=“640” height=“385”><param name=“movie” value=“http://www.youtube.com/v/N5kF-0JO0yI?fs=1&hl=en_US”></param><param name=“allowFullScreen” value=“true”></param><param name=“allowscriptaccess” value=“always”></param><embed src=“http://www.youtube.com/v/N5kF-0JO0yI?fs=1&hl=en_US” type=“application/x-shockwave-flash” allowscriptaccess=“always” allowfullscreen=“true” width=“640” height=“385”></embed></object> <BR><BR>
<object width=“640” height=“385”><param name=“movie” value=“http://www.youtube.com/v/bxtTjYSdcfM?fs=1&hl=en_US”></param><param name=“allowFullScreen” value=“true”></param><param name=“allowscriptaccess” value=“always”></param><embed src=“http://www.youtube.com/v/bxtTjYSdcfM?fs=1&hl=en_US” type=“application/x-shockwave-flash” allowscriptaccess=“always” allowfullscreen=“true” width=“640” height=“385”></embed></object> </html>