Department of Electrical and Computer Engineering Schulich School of Engineering University of Calgary Fall 2012 4th Year Project Report #2 Preliminary Design Document Group # 23 Team UFO Quadrotor Group Members: Sponsor’s Name: Mila Gorobets Thomas Beulah Michael Himmelfarb Patrick Beasley Microlynx Systems Ltd Dec 3, 2012 Table of Contents 1. Introduction ............................................................................................................................. 3 2. System Level Architecture ...................................................................................................... 4 2.1 Graphical User Interface (GUI)............................................................................................. 4 2.2 Flight Control System ........................................................................................................... 4 2.3 Bluetooth Wireless Communication ..................................................................................... 5 2.4 Obstacle Avoidance Control ................................................................................................. 5 3. Preliminary Design .................................................................................................................. 5 3.1 Top Level .............................................................................................................................. 5 Physical Components: ............................................................................................................. 6 3.2 User Interface ........................................................................................................................ 7 3.3 Wireless Communication Link............................................................................................ 13 3.4 Microcontroller Lookup Table ............................................................................................ 14 Definition of Commands: ...................................................................................................... 14 Command Table .................................................................................................................... 15 3.5 Avoidance Control System.................................................................................................. 15 Sensor Functionality .............................................................................................................. 16 Sensor Implementation .......................................................................................................... 16 Obstacle Avoidance ............................................................................................................... 18 3.6 Flight Control System ......................................................................................................... 18 Feedback ................................................................................................................................ 19 Control Method...................................................................................................................... 19 Flight Control System Diagram ............................................................................................. 20 4. Prototypes .............................................................................................................................. 21 4.1 User Interface ...................................................................................................................... 21 4.2 Flight Control System ......................................................................................................... 22 5. Bill of Materials ..................................................................................................................... 24 6. Appendix A............................................................................................................................ 25 7. Appendix B ............................................................................................................................ 26 8. Glossary ................................................................................................................................. 26 9. References ............................................................................................................................. 28 1. Introduction The project to be carried out involves design and testing of an autonomously stable, but user controllable, quadrotor. A quadrotor (also known as a quadcopter or helicopter) is a multicopter flying vehicle, whose lift is generated by four equally spaced rotors. The main goal of this project is to produce a portable, battery-operated quadrotor with a diameter of approximately 30 cm. This allows for maneuverability and the ability to adapt to various environments and missions, while also preserving the capacity of the quadrotor to carry sensors. The designed quadrotor must have an operator-vehicle range of at least 10 meters, and guaranteed flight time of at least 2 minutes. The vehicle must be able to hover in a stable configuration (staying within 15 cm of a specified point in space), but upon user command move at an appropriate rate to a new position in space. Autonomous ability to hover will allow our project to maintain stability even if the communication link between the operator and the vehicle is lost. Motion upon command will provide flexibility for possible future uses (for example, military surveillance, mining operations, search and rescue). The vehicle must also be able to detect and autonomously avoid obstacles. User commands will be delivered using a graphical user interface (GUI), with a maximum delay of 500 ms. The GUI will also aim to provide valuable system information to the operator, such as motor speed, location of nearby obstacles, and important points in space. This project will create a compact quadrotor capable of displaying several electrical engineering design qualities – control systems, wireless communication, embedded systems, sensory systems, and user interface design and execution. Final uses of this project will involve trade-show demonstrations by the sponsor, as well as the possibility of use for military surveillance, search and rescue and exploration purpose. The design process itself will have the opportunity to influence the on-going research in the area of robotics and unmanned aerial vehicles. The following report describes the preliminary designs carried out for the key sections of this project. We used the top-down design methodology, and thus the project is split up into four distinct areas: obstacle avoidance implementation, control system, communication link and the GUI. 2. System Level Architecture The diagram describing the interaction of our system’s components is shown in Figure 1. Main parts of the system architecture are further described in the sections below. SENSOR DATA ULTRASONIC SENSOR DATA AVOIDANCE CONTROL USER COMMANDS USER COMMANDS GRAPHICAL USER INTERFACE WIRELESS COMMUNICATION LINK UPDATE COMMANDS UPDATE COMMANDS MICROCONTROLLER LOOKUP TABLE USER INPUT OBSTACLE AVOIDANCE COMMANDS TOP LEVEL DIAGRAM ACCELEROMETER VALUES MOTOR SPEEDS VALUES FLIGHT CONTROL SYSTEM USER COMMANDS Figure 1. Top Level System Diagram 2.1 Graphical User Interface (GUI) The GUI is an interface that allows the user to control the quadrotor. From the GUI, the user can control the direction the quadrotor moves, observe graphs of the motor speeds with time, retrace paths taken, and examine the quadrotor in relative 3D space as a rendering. The GUI communicates with the microcontroller through the Bluetooth wireless link. The GUI sends and receives commands, which are mapped into a command table shown in Table 1. 2.2 Flight Control System The quadrotor must be able to hover. This requires motors, accelerometers, a gyroscope, and a microcontroller in order to remain in a constant position. The motors will provide lift, while the accelerometer and the gyroscope provide information to the microcontroller which processes the information and updates motor speed. 2.3 Bluetooth Wireless Communication The communication between the user and the quadrotor will be established with a Bluetooth module and a computer. This module will be connected to the microcontroller using a USART (Universal Serial Asynchronous Receiver/Transmitter) serial interface. Software on the microcontroller side will receive information from the user and adapt motor speeds to implement the movement desired by the user. All data transferred through the Bluetooth communication channel will need to be converted into commands that the computer program can understand. To do this we will implement a command table to allow fluid communication of commands. There will be commands for motor speed, proximity detection, movement direction, and others. 2.4 Obstacle Avoidance Control Ultrasonic sensors will be used to determine the proximity of objects near the quadrotor. These sensors will communicate with the microcontroller through an I2C (Inter-Integrated Circuit) serial interface. Their information will be used by the microcontroller to prevent the quadrotor from colliding with obstacles in the environment. In order for the avoidance control to be autonomous, it must communicate directly with the flight control system to override the user flight commands and prevent collision. 3. Preliminary Design 3.1 Top Level The chosen design method for this project is Top-Down Design. From the system level architecture, the design of the semi-autonomous quadrotor consists of four modules which communicate with each other. These modules are the user interface, wireless communication link, avoidance control system, and the flight control system. The arrows indicate how different types of data are passed between each of the modules. Each of these modules will be described in detail in this report. The user interface gives feedback to the user about the quadrotor’s status, and provides a way for the user to input desired commands. The avoidance control module and the flight control module are onboard the quadrotor. Therefore all data that flows between the user interface and the onboard systems must be transferred by the wireless communication link. A microcontroller lookup table deciphers binary commands from the wireless link. The user interface sends motion commands that are specified by the user to the flight control system. The flight control receives these commands and executes them by controlling the quadrotor’s motor speeds. It returns three axis acceleration values and the four motor speeds to the user interface. The avoidance system detects obstacles and sends information about them back to the user interface. It then sends a command to the flight control system that will make the quadrotor move away from the obstacle if it is within 50 cm. Physical Components: Each module requires physical hardware which is shown in the physical component diagram in Figure 2. Figure 2. Physical Component Top Level Diagram The actual quadrotor frame is not being developed in this project – rather, the components are purchased, and the electronic components are what will be designed. The components for the quadrotor were a part of a kit, which included the frame, motors, a battery, propellers and motor speed controllers. An Atmel microcontroller development board was also purchased separately. The chosen kit features a lightweight, affordable frame, small motors, propellers of proper size, motor speed controllers suitable for the motors chosen, and a LiPo battery to power the motors. The microcontroller board was chosen because of the abundance of input/output pins and communication ports. The maximum operating frequency of the microcontroller is 66MHz, which allows for many mathematical operations per second. This is important in our application due to the control system implementation, which requires multiple fast calculations in order to adjust the motor speeds properly. The microcontroller board will be mounted at the center of the assembled frame. 3.2 User Interface The purpose of the graphical user interface (GUI) in this project is to provide the quadrotor operator with means of sending commands (via a computer), visualizing the surrounding environment, and monitoring key components of the system. The proposed solution is to be designed using managed Visual C++ (through Visual Studio 2010) and should be able to communicate with the quadrotor using Bluetooth via the USB port. The implementation will use four classes, with the applications of each described in the “Main Features” section. The general design diagram of the GUI and its interfaces is shown in Figure 3. INPUTS UPDATE COMMANDS OUTPUTS Lookup Table Quadrotor starts up Accelerometer data arrives 3D model updated Speed data arrives Plots updated Ultrasonic sensor data arrives USER COMMANDS 3D model updated Echo request received USER INPUT User requests travel to waypoint User adds waypoint Update Form and 3D model User presses key User releases key Figure 3. Graphical user interface inputs and outputs Main Features Main graphical user interface window: this is where the user inputs will be gathered, and outputs displayed. It will contain all features described below. Implementation: The form will be occupying its own class (“Form”), and designed using Visual Studio’s form elements. The window size will be 1080x1920 pixels, but with an ability to decrease it if needed for lower resolution screens. 3D model of the quadrotor in the surrounding environment: the user will be able to change the view and use the rendered graphics (obstacles and waypoints) to plan further actions. Implementation: This is to be done using an embedded OpenGL frame in a Windows Form (this is created in Visual C++/CLI). OpenGL is chosen because of its relative ease of implementation in managed C++, and prior knowledge of the conventions and syntax. The 3D model itself will be developed in Autodesk Maya – provided for free to University of Calgary students. This software allows for an extensive development of the model using complex shapes and textures. The final model will have color-coded propellers to differentiate between the four available (these colors will also correspond to those on the motor speed plots – this is further explained below). The OpenGL frame will be contained in its own class (“OpenGL”), and during refreshing it will run on its own thread to permit other processes to continue uninterrupted. The OpenGL panel will be refreshed every 10 ms; this time is chosen based on prior testing – it allows for smooth accurate rendering (not noticeable to the human eye). Ability to add waypoints: the user will have the option to leave markers at certain locations in space to indicate points of interest. Implementation: In this case, the implementation will be shared between the OpenGL and the Form classes. The command to add a waypoint will come from the Form class, the information (coordinates) of the position will be stored in an array, and a spherical marker will be rendered in OpenGL. The marker will indicate the marker’s coordinates and the number. The program will by default leave a “Home” marker to represent the quadrotor’s origin. A button will be available on the main form to return to “Home” position at any time using the safest path available. A separate button will allow the user to travel to a selected waypoint (can be selected in the OpenGL panel). Form updates will be handled on a separate thread in order to permit the communication link to function without interruption. Maintain a communication link with the quadrotor. This software feature will send motion commands to the quadrotor and receive accelerometer and motor speed data back. The time delay between when the user sends a command and when the quadrotor reacts must be at most 500 ms. Implementation: The communication link will occupy its own class (“Communication”) and will reside on the main thread. All of the other classes will branch from this thread on start up. The link will have direct contact with the USB port to which the Bluetooth transceiver module is connected. Received motor data will be sent to the Form class for updating the plots. The accelerometer data will be communicated with the Calculations class in order to calculate current speed and position. The Communication class will also be responsible for checking and echoing link checks with the quadrotor periodically. The following diagrams describe various required actions, and information flow within the GUI. For convenience, the following color scheme is used: COMMUNICATION COMMUNICATION CLASS CLASS OPENGL OPENGL CLASS CLASS FORM FORM CLASS CLASS CALCULATIONS CALCULATIONS CLASS CLASS Figure 4. Colour scheme Beginning of Flight Quadrotor starts up Establish Establish communication communication link link Update communication light in UI Figure 5. Initialization of the communication link In the instance illustrated in Figure 5, the software is being initialized to interface with the quadrotor prior to flight. An echo request will be received from the quadrotor, and this will establish the communication link. This path will also be taken in the event of restoration of a lost communication link. Sending data to the quadrotor User presses key Convert user view to normalized directions User releases key Send Send command command to to stop stop Send Send commands commands to to quadrotor quadrotor Wait Wait for for response response with accelerometer with accelerometer and and speed speed data data Figure 6. Sending user input to the quadrotor When a user is entering data, as shown in Figure 6, motion/direction information will be constantly sent to the quadrotor until the pressed keys are released. Since the user is able to rotate the environment in 3D space, the desired directions will need to be converted to a standardized view. For example, if the user rotates the view by 90 degrees and desires for the quadrotor to move left (from the operator’s point of view), the normalized motion will either be forward or back depending on whether the rotation was clockwise or counterclockwise. In certain cases, the user might desire to travel to a previously set waypoint (or the “Home” waypoint). This event chain is shown in Figure 7. The chain is similar to that for regular commands, except for the fact that the Calculation class will calculate an entire set of directions to reach the final destination and send them out in proper order. User requests travel to waypoint Calculate directions from current position to waypoint Send Send commands commands to to quadrotor quadrotor Wait Wait for for response response with accelerometer with accelerometer and and speed speed data data Figure 7. Travel to pre-set waypoint event chain Receiving data from quadrotor The GUI requires feedback from the quadrotor in the form of accelerometer and motor speed data. The motor data will go towards updating the plots on the GUI, and the accelerometer data is used to keep track of motion and position. Accelerometer data arrives Calculate Calculate current current position position and and orientation orientation in in space space Speed data arrives Update motor plots Update OpenGL struct Update OpenGL model (10 ms intervals) Figure 8. Receiving accelerometer and motor speed data In order to maintain the rendering of the surrounding environment, the quadrotor will also send obstacle information to the GUI. No request for this information is generated by the GUI – the application will simply wait for a message with information to arrive. This is done because the quadrotor system’s priority will be in the communication and control systems, and the obstacle detection system might not have time to relay all of the information at every time interval. Ultrasonic sensor data arrives Calculate new rendering of surroundings Update the surroundings struct Update OpenGL model (10 ms intervals) Figure 9. Receiving ultrasonic data Echo requests Periodically, the GUI will receive an echo request from the communication system on board of the quadrotor. In this case, there will be a need to process the echo, and to answer it in a set period of time (otherwise the communication link will be deemed broken, and emergency landing procedures will be initiated). Echo request received Return Return echo echo to to quadrotor quadrotor Figure 10. Handling Echo requests User Input The user input has been described above for when directions need to be sent out. The controller might also want to add waypoints at certain locations, and this event chain is demonstrated below. This information is never relayed to the quadrotor, instead it is stored until user requests travel to set waypoint. User adds waypoint Store (x,y,z) and increment waypoint count Add entry into OpenGL waypoint struct Update OpenGL model (10 ms intervals) Figure 11. Handling user input A summary of the overall GUI design (a sketch of the current concept) can be found in Appendix A. 3.3 Wireless Communication Link BLUETOOTH HIGH LEVEL DESIGN OUTPUTS INPUT Wireless Channel USER COMMANDS USART Communication User Commands USB Bluetooth Wireless Dongle OUTPUTS USER COMMANDS User Commands Bluetooth Wireless Module Update Commands UPDATE COMMANDS Update Commands INPUT UPDATE COMMANDS Figure 12. Bluetooth High Level Design The Bluetooth communication link connects the quadrotor and the user’s computer through a wireless channel. The Atmel microcontroller is connected to the Bluetooth module through a USART connection which has 1 power pin (3.3V), 1 common ground, Tx (Transmitter) line, and Rx (Receiver) line. On the computer side, the Bluetooth USB dongle connects through a USB 2.0 port. The Bluetooth dongle requires drivers to be installed on the computer which emulates a serial communication (COM) port. Data received by the Bluetooth dongle will be sent to this emulated COM port, where it can be accessed by the GUI. Communication between the quadrotor and the computer is fully duplex. This means that data can be sent from the quadrotor to the computer and from the computer to the quadrotor simultaneously. The user will specify commands that need to be sent to the quadrotor, such as moving left, right, up, down, forward or backwards. However, the GUI will also require information to update the relative position of the 3D rendering and real time graphs of motor speed. In this case, the data will be sent from the microcontroller back to the GUI. 3.4 Microcontroller Lookup Table The microcontroller will be programmed to receive and transmit data with binary commands from a command table. Each command will be given a binary instruction code, but currently the microcontroller look-up table describes how these commands will be used. Definition of Commands: Get Motor #X speed: The microcontroller sends an unsigned integer through the Bluetooth module which represents motor speed in percent. Go X: The microcontroller receives an unsigned integer that tells the quadrotor to move in a certain direction. Get Acceleration: The microcontroller sends seven unsigned integers through the Bluetooth module. The first unsigned integer will represent acceleration in the X direction, the second represents acceleration in the Y direction, and the third represents acceleration in the Z direction. The last 4 unsigned integers represent an integer number of 1us intervals that have passed since the quadrotor started. Keeping track of relative time is important for updating the relative position of the quadrotor in the GUI. Get Proximity: The microcontroller sends an unsigned integer through the Bluetooth module, which represents the distance from the center of the quadrotor to a detected obstacle (in cm). Get Orientation: The microcontroller sends a floating point number through the Bluetooth module which represents the quadrotor orientation (in degrees). Get Time Overflow: The microcontroller sends an unsigned integer through the Bluetooth module when the relative time data overflows and needs to be compensated. Get COM confirmation: The microcontroller sends an unsigned integer through the Bluetooth module which requests confirmation that the wireless link has been established. COM confirmation: The microcontroller receives a confirmation from the GUI that data can be sent through the wireless Bluetooth communication link. Command Table Table 1. Bluetooth Command Table Microcontroller Commands Description Send Data Receive Data Get Motor speed #1 Sends motor speed for graphical application X 1 Byte unsigned integer Get Motor speed #2 Sends motor speed for graphical application X 1 Byte unsigned integer Get Motor speed #3 Sends motor speed for graphical application X 1 Byte unsigned integer Get Motor speed #4 Sends motor speed for graphical application X 1 Byte unsigned integer Go Left Receives direction X -- Go Right Receives direction X -- Go Forward Receives direction X -- Go Back Receives direction X -- Go Up Receives direction X -- Go Down Receives direction X -- Stop Receives Stop X -- Get Acceleration Sends: Acceleration X Y Z data, Current relative time data X Data format 1 Byte unsigned integer 1 Byte unsigned integer 1 Byte unsigned integer 4 Bytes unsigned integer Get Proximity Sends Proximity data: Left ,Right, Front, Back X 1 Byte unsigned integer 1 Byte unsigned integer 1 Byte unsigned integer 1 Byte unsigned integer Get Orientation Sends Orientation in degrees X 1 byte scientific Get Time Overflow Send if Time counter overflows X 1 Byte unsigned integer Get COM confirmation COM confirmation Send Confirmation that communication is established Receive request to confirm communication is established 3.5 Avoidance Control System X X 1 Byte -- In order to build an obstacle avoidance system for the quadrotor, it is necessary to have some way of sensing the surrounding environment in order to detect obstacles. After careful consideration of the sensors available, the Maxbotix LV-EZ1 ultrasonic sensor was selected for this project. The ultrasonic sensor was chosen as it provides accurate proximity measurements, is lightweight, has low power consumption, can detect translucent objects, is reasonably inexpensive and is easy to use and implement. Sensor Functionality The ultrasonic sensor transmits a sound wave and evaluates the echo that returns back to the sensor. The distance to the object can be determined in several ways, but for this project the voltage of the echo that the sensor receives will be used to determine the distance to the obstacle. This distance measurement is quite accurate assuming that the angle of reflection from the object is not great [1]. As the distance increases it is necessary for the object to be almost perpendicular to the sensor in order for the echo to be received. Sensor Implementation There will be four sensors used for detecting objects in all directions and a fifth sensor will be pointed down for an accurate altitude measurement. The sensors in this configuration should provide sufficient coverage for obstacle detection as shown in Figure 13. Figure 13. Ultrasonic sensor detection spectrum at 35cm. The four sensors directed outwards from the quadrotor will be coordinated such that the quadrotor will attempt to maneuver away from any obstacle that comes within a 50 cm radius of the quadrotor. Depending on which sensors detect an obstacle, the obstacle avoidance system will have pre-determined commands that will be sent to the control system to direct the movement. The diagram showing the layout of the ultrasonic sensors and their orientation is shown in Figure 14. Figure 14. Diagram of directional sensor layout showing there numbering and orientation with respect to the cardinal coordinate system. An overview of the pre-determined directions the quadrotor will move in when the sensors detect an object is summarized in Table 2. As the quadrotor will not always necessarily be pointing north, these reference directions are simply used as a starting reference and will be associated with certain commands to move the quadrotor in the appropriate direction as if it was always pointing north. Therefore it will not be a factor if the quadrotor rotates, it will always move in such a way as to avoid the obstacle. The sensor numbers shown in Table 2 are associated with the sensor labeling shown in Figure 14 with the cardinal reference system. Table 2. List showing the pre-determined direction the quadrotor will fly given cardinal reference system Sensor(s) with Detection 1 2 Direction Moved South East 3 4 1, 2 1, 2, 3 2, 3 2, 3, 4 3, 4 1, 3, 4 1, 4 1, 2, 4 1, 3 2, 4 1, 2, 3, 4 North West Southeast East Northeast North Northwest West Southwest South West or East North or South Land Obstacle Avoidance The obstacle avoidance system input and output diagram is shown in Figure 15. The data provided by the sensors is analyzed to determine the distance to the nearest obstacle in all directions. The distance is calculated based on the voltage of the echo that is returned to the sensor from the object. This distance will then be sent to the GUI to provide the user with updated information on the surrounding environment. If the distance is less than 50cm, the predetermined command associated with the sensor that detected the obstacle needs to be sent to override the control system to maneuver away from the obstacle. Figure 15. Obstacle avoidance system inputs and outputs diagram. 3.6 Flight Control System The purpose of the flight control system is to realize the desired values of the roll angle, pitch angle, yaw angle and vertical velocity of the quadrotor. These desired values are the flight control system inputs and will come from the microcontroller lookup table. This lookup table will have predefined control inputs for every type of command that is sent from the GUI over the wireless communication link. Diagrams defining the roll, pitch and yaw angles can be found in Appendix B. The control system will realize these inputs by sending appropriate outputs to the motor speed controllers. Another purpose of the control system is to provide acceleration data for position tracking and quadrotor orientation data. The acceleration data will be sent back over the wireless communication link to the user interface. Feedback For the control system to fulfill its purpose, it must have a way of getting feedback about the current quadrotor orientation and accelerations. This data will come from an inertial measurement unit (IMU). This unit must have an onboard gyroscope, accelerometer, and magnetometer. The accelerometer is needed to provide acceleration data for position tracking. The quadrotor’s roll, pitch, and yaw angles can also be calculated from the acceleration vectors, however these are prone to error from vibrations in the quadrotor frame. Therefore, the gyroscope is used to measure the angles as well. However, the gyroscope suffers from drift error (when the gyroscope does not return to the original zero point), so the angles calculated from the accelerometer data can be averaged with the angles given from the gyroscope data to provide the most accurate measurements. The magnetometer is similar to a compass; it will provide information on the quadrotor’s absolute orientation. This will allow the control system to determine which the way the quadrotor should move when the user is directing it using an external coordinate system as a reference. Control Method Inside the control system, a control method must be chosen which will realize the given control inputs using the provided feedback. There are many different types of control methods that could be implemented on a quadrotor. As the quadrotor is an under-actuated, non-linear system, nonlinear control methods can provide the most accurate control [2]. Examples of these methods are non-linear H-infinity control and back-stepping control. However, these methods are very complex and difficult to implement. Linear control methods include LQR controllers and PD (proportional-derivative) controllers. For this project, the PD control method was chosen because it achieves good performance while being very simple to implement. It also uses less computational power in the microcontroller. Since the main goal of the project is to develop a semi-autonomous quadrotor and not a more accurate flight control system, the PD controller will suffice. The PD control method requires the error between the feedback from the IMU and desired control inputs. It calculates the motor speeds based on the error functions and the derivatives of the error functions. The block diagram of a PD controller can be seen in Figure 16. Figure 16. PD Controller Diagram Flight Control System Diagram The entire flight control system can now be represented by the block diagram shown in Figure 17. Figure 17. Flight Control System Block Diagram 4. Prototypes 4.1 User Interface Work has been carried out on the 3D model for the graphical user interface OpenGL panel. This 3D model is a representation of the actual hardware, and serves the purpose of showing the operator the orientation and position of the vehicle in space. The model was created in Autodesk Maya 2012 using a variety of available tools. The simple shapes were made using Boolean manipulations on regular shapes – subtracting one shape from another, merging shapes, and so on. The propellers were made using bend manipulations of a flat plane made to match the actual propeller in shape. The current state of the 3D model is shown in Figure 18. The model will be converted to the format that can be read and imported into the OpenGL frame. The propellers will be rendered in different colors to match with those used for plots in the GUI. Figure 18: User Interface 3D Model Prototype 4.2 Flight Control System To validate and verify that the flight control system can achieve the desired control inputs, a simulation was made in Simulink. This required some detailed design steps which will not be explained in depth in this high level design report, but the model can be seen in the Simulink block diagram in Figure 19. Figure 19. Simulink Prototype of Flight Control System The simulation shows that with the proper control gains, this control scheme is stable and can achieve the desired inputs. Example outputs of the simulation are shown in Figure 20 for control inputs: roll angle=0, pitch angle=0.5 radians, yaw angle=0, vertical velocity=0. Figure 20. Simulunk Simulation Outputs 5. Bill of Materials Table 3. Bill of Materials Part # Description Maxbotix LV-MaxSonar-EZ1 MB1010 Sonar Rangefinder MinIMU-9 v2 Gyro, Accelerometer, and Compass MinIMU-9 v2 IMU Turnigy 1811 brushless Outrunner T1811-2900/8142 2900kv Turnigy 6A electronic speed TR-6A/4318 controller Turnigy Integrated PCB Micro9332000001/22607 Quad (KIT) 5030 Propellers (Black) - 3xCW 9332000002/22753 and 3xCCW Turnigy balancer & Charger 2STurnigy-3S/7637 3S Turnigy 2S 35-40C 850mAh N850.2S.25 nanotech LiPo AT32UC3A3-XPLD AT32UC3A3-XPLD- microprocessor development ND board Good Quality 3.3VDC 30ft Wireless Bluetooth RF Transceiver Module Card RS232 TTL Mini USB 2.0 Bluetooth Adapter Dongle for PC Laptop ManufacturerSupplier Quantity Unit Price Cost Maxbotix Pololu 5 $24.95 $124.75 Pololu Pololu 1 $49.95 $49.95 Turnigy HobbyKing 5 $9.72 $48.60 Turnigy HobbyKing 5 $6.56 $32.80 Turnigy HobbyKing 1 $14.99 $14.99 HobbyKing 2 $3.45 $6.90 Turnigy HobbyKing 1 $4.49 $4.49 Turnigy HobbyKing 1 $5.99 $5.99 Atmel digikey 2 $31.98 $63.96 Ebay 2 $6.09 $12.18 Ebay 2 $1.60 TOTAL $3.20 $367.81 6. Appendix A Figure 21. Current state of the GUI design 7. Appendix B Figure 22. Roll, pitch and yaw angle diagrams 8. Glossary Accelerometer: A device used to determine acceleration in the X, Y, Z directions. Bluetooth – Wireless communication standard for short-range data transmission Bluetooth USB dongle: A USB device that connects to a computer and allows wireless communication through an emulated serial communication port. COM: Short form of “communication”. GUI – Graphical User Interface: An interface that allows users to interact with the device (send commands) using images, rather than text commands (such as those used in the Command Prompt). Gyroscope: A mechanical device that determines angular position in 3D space using angular moment. I2C - Inter-Integrated Circuit: A protocol used for wired serial communication between a host device and a slave device. This interface is useful for hooking sensors up in a slave configuration. IMU - Inertial Measurement Unit: An onboard unit that uses accelerometers, gyroscopes and magnetometers to measure the orientation and acceleration of a moving vehicle. LiPo: Lithium polymer battery: rechargeable batteries. LQR - Linear Quadratic Regulator control: A linear control method based on optimizing a certain quantity. OpenGL – Open Graphics Library: Multiplatform graphics application programming interface. It allows for visualization of 3D spaces in virtual reality applications, visualization, flight simulation and video games. PD - Proportional Derivative control: A linear control method with control outputs based on the error between the desired control inputs and actual feedback and the derivative of this error. Receiver line: The line from the USART that received binary data. Transmitter line: The line from the USART that transmits binary data. Ultrasonic sensor: A sensor that sends an ultrasonic sound wave and waits for the reflected wave to return in order to measure proximity. USART - Universal Serial Asynchronous Receiver/Transmitter: A protocol used for wired serial communication between two devices. USB – Universal Serial Bus: A type of connection (both physical and logical) between an external electronic device and a computer. This can be used to exchange data and power the external device. 3D – Three dimensional space: Geometric representation of an object using a three-parameter model of the physical universe. The parameters are typically either [x, y, z] (Cartesian space) or [width, length, height]. 9. References [1] Y. K. Johann Borenstein, "Obstacle Avoidance with Ultrasonic Sensors," IEEE Journal of Robotics and Automation Vol 4, pp. 213-218, 1988. [2] G. Raffo, "An Integral Predictive/Nonlinear H-infinity control Structure for Quadrotor," Universidad de Sevilla, Sevilla, 2010.