unmanned aerial vehicle real-time guidance system via state
Transcription
unmanned aerial vehicle real-time guidance system via state
UNMANNED AERIAL VEHICLE REAL-TIME GUIDANCE SYSTEM VIA STATE-SPACE HEURISTIC SEARCH MANUEL SOTO Department of Electrical & Computer Engineering APPROVED: Patricia A. Nava, Ph.D., Chair Benjamin C. Flores, Ph.D. Jack F. Chessa, Ph.D. Thompson Sarkodie-Gyan, Ph.D. Pablo Arenaz, Ph.D. Dean of the Graduate School Copyright by Manuel Soto 2007 Dedication I dedicate this Master’s Thesis to those who supported me in this effort. First and foremost: Thank you God. Second, my eternal gratitude goes to all my family: to all of my friends, cousins, aunts, uncles, sisters, mother, and father. To all of you; I love you and I thank you for your encouragement, for your patience, for your advice, and most of all for your prayers. To Veronica—my beautiful lady; thanks for caring and for loving me. To my numerous cousins: your guidance and your being there for me are always greatly appreciated. To my numerous aunts and uncles: thank you for sharing your wisdom and experience, and thank you for giving me your advice. To all my friends and family; thank you for all your help, support, encouragement, and prayers. Dad; had you not taught me to work hard, to use my brain, and to do quality work, I don’t know if I would be an engineer today; I don’t know if I would have completed this advanced degree; and I don’t know if I would enjoy working in my profession as much as I do. Thanks again Dad. Lastly, to my God in Heaven, who sits next to His Son, Jesus, and who blesses us with His Holy Spirit: Thank You. UNMANNED AERIAL VEHICLE REAL-TIME GUIDANCE SYSTEM VIA STATE SPACE HEURISTIC SEARCH by MANUEL SOTO, B.S.E.E. THESIS Presented to the Faculty of the Graduate School of The University of Texas at El Paso in Partial Fulfillment of the Requirements for the Degree of MASTER OF SCIENCE Department of Electrical & Computer Engineering THE UNIVERSITY OF TEXAS AT EL PASO December 2007 Acknowledgements I would like to thank both Dr. Patricia A. Nava and Mr. Luis E. Alvarado for their effort and support in this project which began as a research study and has evolved to a real-world system. Their guidance, collaboration, and mentoring support has yielded a publication in the American Institute of Aeronautics and Astronautics, a presentation at the National Defense and Industrial Association conference, and a real-time guidance system that is currently undergoing empirical testing on DFCS. To Mr. Luis E. Alvarado, I would like to express my sincere thanks and gratitude for entrusting me to this project, and to Dr. Patricia A. Nava, I would also like to express my sincere thanks and gratitude to her for her acceptance, guidance and feedback on this project. I feel blessed that I was provided with such excellent mentors. My DFCS team, consisting both of Government contractors and of Government personnel, has my appreciation for the help they provided in defining, designing and developing the components for making this system realizable. The Government contractors, UNITECH and Proteus, and the RO-CR-C Government personnel greatly assisted in providing the much required projects needs, which were used to develop the product specifications and its design. Arron Hardesty: thanks for writing the UDP class that links the RTPP to DFCS. Dr. John D. Medrano: thank you for helping create the dynamic array class. Lupita Soliz: thank you for the explanations about an algorithm’s running time. Gary Montana: thanks for allowing me to bench test the console computer prototype; it was very useful for both running and developing the TMC and the RTPP. Dan Cullen: thanks for helping me get this project started. Pat Kearny: thank you for explaining terrain masking. Paul Berger: thank you for the discussions about the different coordinate systems for representing the surface of WSMR. Gary Hakenson: thanks for providing the equipment for linking the RTPP to the DFCS real-time computer network. Myron C. Moore: thanks for proofreading the AIAA manuscript. Eugene Lawson: thanks for your assistance in helping me design the RTPP graphics. v I would also like to thank the NewTech engineering team for their assistance; Perry Hutchinson and Jeff Brickley: thank you for helping me to understand OpenGL and DTED. To my Thesis Committee: Dr. Benjamin C. Flores, Dr. Jack F. Chessa, Dr. Patricia A. Nava, and Dr. Thompson Sarkodie-Gyan—thank you for reviewing my work. To my employer, UNITECH, whose tuition reimbursement support helped to make graduate school less costly for me, I am grateful. I am also eternally grateful to two individuals whose support and encouragement, both personal and professional, carried me through this project and through the toughest times of graduate school: Herbert Saxman and Guadalupe Arellano. Finally, to my father, Modesto Soto, I would like to express my love and gratitude for his advice, help, and support in this Thesis, my previous educational endeavors, and in life. vi Abstract This Thesis focuses on the research, implementation, and empirical testing of a real-time (RT) Unmanned Aerial Vehicle (UAV) guidance system—the Real-Time Path Planner (RTPP). The RTPP was created for the following reasons: (1) proof-of-concept, i.e., to verify the realworld feasibility of developing a real-time guidance system by using AI techniques; (2) benchmarking, i.e., to create a platform for using the most promising Artificial Intelligence (AI) theories; (3) to show that a real-time guidance system is beneficial to existing Department of Defense (DoD) Target Command and Control Systems (TCCS). In this study, the RTPP undergoes empirical testing on an operational DoD TCCS called the Drone Formation Control System (DFCS). This testing is conducted by linking the RTPP to the DFCS real-time computer network. The RTPP provides flight-patterns to be used in 6-Degree Of Freedom (DOF) flight simulations by the DFCS Guidance, Navigation, and Control (GNC) systems. At present, guidance systems used by the DoD targets community in missions (i.e. the remote operation of aerial vehicles) require specially trained personnel to develop flight-patterns (i.e. precisely defined flight trajectories) prior to conducting missions. This process is constrictive and static because it forces missions to be performed as specified by these prelaunch generated flight-patterns. These limitations make missions extremely inflexible. This study proposes a solution that alleviates this problem. The solution is a real-time guidance system that allows DoD TCCS personnel (e.g. the project engineer) to make changes to flight profiles in real-time. The RTPP is a prototype of this solution. It provides a user-friendly computer interface for mission operators to safely guide and control target presentation locations in real-time. This easy-to-use interface is operated by using a mouse and keyboard to interact with its Graphical User Interface (GUI). The mouse can be used to select the flight trajectory’s start and destination locations on the terrain map that is displayed within the GUI. The keyboard can be used for the vii same purpose but it is required for entering the other flight trajectory parameters (e.g., those associated with turn radius constraints). The user-entered UAV parameters are passed to the main module of the RTPP—the A* algorithm. Then the RTPP provides either flyable flight trajectories or no guidance at all (which occurs only when no solution exists). The returned flight-patterns have the attributes being flyable (i.e. minimal distance, and safe). The RTPP can be used in obstacle rich environments, provided the obstacles are static (e.g. mountains and other natural high elevation terrain). If the obstacles are man-made, their locations and MSL elevations must be entered into the RTPP. The RTPP uses files generated by the Terrain Map Creator (TMC), which is another product of this work. The TMC is a program that queries a high resolution environmental database for recording to a file the locations and elevations of the terrain over which the mission will be performed. In conclusion, the RTPP is used as the platform for testing the A* algorithm, which is the AI theory that is the recommended as the core technological solution. Its recommendation is verified by research, technical feasibility, analysis, empirical testing, and simulations. Hence, this Thesis demonstrates that DoD TCCS can benefit from innovations provided by AI theory. viii Table of Contents Acknowledgements..................................................................................................v Abstract ................................................................................................................. vii Table of Contents................................................................................................... ix List of Tables ....................................................................................................... xiii List of Figures ...................................................................................................... xiv List of Illustrations............................................................................................... xvi Chapter 1: Introduction ............................................................................................1 1.1 Background ............................................................................................1 1.1.1 Target Command and Control Systems ........................................1 1.1.2 Drone Formation Control System.................................................2 1.2 Problem Statement .................................................................................3 1.3 Methodology ..........................................................................................5 1.4 Evaluation Criteria .................................................................................7 1.5 Document Overview ..............................................................................8 Chapter 2: Theory: Path Finding............................................................................10 2.1 Overview..............................................................................................10 2.1.1 Implications of Assumption 1.....................................................10 2.1.2 Traveling Salesperson Problem ..................................................11 2.1.3 Mapping WSMR Terrain to TSP Graph .....................................12 2.1.4 Convergence of Assumptions 1 & 2 ...........................................13 2.2 State Space Search ...............................................................................14 2.2.1 Graphs: Theory & Terminology .................................................14 2.2.2 Classic Test Problems .................................................................19 2.2.3 Search-Graph Generation from an Implicit State-Space ............23 2.2.4 Algorithm Analysis.....................................................................29 2.2.5 Intelligence in Search: Human vs. Artificial...............................37 2.2.6 A* Algorithm ..............................................................................40 ix Chapter 3: Design, Implementation, & Integration ...............................................48 3.1 Methodology ........................................................................................49 3.1.1 Planning ......................................................................................49 3.1.2 Development Overview ..............................................................50 3.1.3 Target Platform ...........................................................................51 3.2 RTPP Alpha Prototype.........................................................................52 3.2.1 GUI Object..................................................................................54 3.2.2 Graphics Display Object .............................................................57 3.2.3 Terrain Map File Processing Object ...........................................65 3.2.4 A* Algorithm Object ..................................................................70 3.2.5 Dynamic Array Object................................................................74 3.3 Terrain Map Creator ............................................................................75 3.3.1 TMC Modules.............................................................................77 3.3.2 GUI Object..................................................................................79 3.3.3 Terrain Map File Processing Object ...........................................80 3.3.4 Geographic Conversions Object .................................................82 3.3.5 NED Query Module....................................................................86 3.3.6 Quantized Terrain Maps .............................................................87 3.4 RTPP-DFCS Integration Issues ...........................................................88 3.4.1 Flight Profiles..............................................................................89 3.4.2 Waypoints ...................................................................................92 3.4.3 Processing the A* Path to Waypoints.........................................92 3.4.4 Bounding the RTPP Input to Guarantee Real-time Response ....93 3.4.5 Problems Associated with Waypoints ........................................96 3.4.6 RTPP-DFCS Interface ................................................................99 3.4.7 RTPP-DFCS Integration ...........................................................102 3.4.8 Guidance Position Errors ..........................................................104 3.5 RTPP Beta Prototype .........................................................................105 3.5.1 Flight-Pattern Generation and Validation (FPGV) Module......107 3.5.2 Diagnostic System Module .......................................................122 3.5.3 Real-Time Timer (RTT) Module ..............................................123 3.5.4 Network Link ............................................................................124 x Chapter 4: Flight-Pattern Analysis and RTPP Empirical Testing Results...........125 4.1 Performance Criteria..........................................................................125 4.2 Setup for Analysis of Pre-Launch Flight-patterns .............................125 4.2.1 Pre-launch Flight-pattern Parameters .......................................125 4.2.2 RTPP Output.............................................................................127 4.2.3 Milestone 1................................................................................132 4.3 Flight-pattern Distance Analysis........................................................132 4.3.1 Impact of Obstacles on Flight-pattern Distance........................133 4.3.2 Milestone 2................................................................................136 4.4 Flight-pattern Safety Analysis ...........................................................136 4.4.1 Safety Analysis for Flight-pattern at 7,000 ft MSL ..................138 4.4.2 Pre-launch Flight-pattern at 6,750 ft MSL................................140 4.4.3 Safety Analysis for Flight-pattern at 6,500 ft MSL ..................142 4.4.4 Milestone 3................................................................................144 4.5 Setup for Real-Time Performance Analysis ......................................145 4.5.1 Real-time Flight-pattern Conditions for Airborne UAV ..........145 4.5.2 Real-time RTPP Output ............................................................147 4.5.3 Milestone 4................................................................................151 4.6 Setup and Analysis Criteria for 6-DOF Flight-Simulations ..............152 4.6.1 DFCS Simulation Setup............................................................153 4.6.2 Guidance Errors Analysis .........................................................153 4.7 Data Analysis for Flight Simulation at 7,000 ft MSL........................154 4.7.1 Pre-launch Flight-pattern Maneuverability Analysis................154 4.7.2 Milestone 5................................................................................159 4.8 Data Analysis for Flight Simulation at 6,500 and 6,750 ft MSL.......159 4.8.1 Real-time Flight-pattern Maneuverability Analysis .................161 4.8.2 Pre-launch Flight-pattern Maneuverability Analysis................166 4.8.3 Milestone 6................................................................................171 4.9 Data Analysis for Flight Simulation at 6,500 ft MSL........................172 4.9.1 Real-time Flight-pattern Maneuverability Analysis .................174 4.9.2 Pre-launch Flight-pattern Maneuverability Analysis................179 4.9.3 Milestone 7................................................................................185 xi Chapter 5: Conclusion..........................................................................................187 5.1 Discussion ..........................................................................................187 5.2 Future Work .......................................................................................188 5.2.1 System Integration Issue ...........................................................188 5.2.2 Artificial Intelligence ................................................................188 5.3 Conclusion .........................................................................................189 References............................................................................................................191 Glossary ...............................................................................................................194 Appendix 1: Mathematics of Generating a Flight-Pattern from an A* Route.....198 A1.1 Flight-Patterns: Elements, Indexing and Format ...............................198 A1.1.1 DFCS Flight-Pattern Indexing Scheme ...........................198 A1.1.2 Orientation of Circular Arc-segments..............................200 A1.1.3 RTPP Flight-Pattern Format ............................................201 A1.2 A* Routes: Points, Line Segments, and Vectors ...............................202 A1.2.1 Representing A* Routes as Vectors.................................202 A1.2.2 Representing A* Routes as Point-Vectors.......................203 A1.3 Flight-pattern Generation...................................................................204 A1.3.1 Generating a Waypoints List with Point-Vectors ............205 A1.3.2 Angle Changes on a 3x3 Grid..........................................206 A1.3.3 Angle Changes on A* Routes ..........................................208 A1.3.4 Describing Direction Angles with True Headings...........209 A1.3.5 Number of Records vs. Number of Segment ...................210 A1.3.6 Creating Flight-pattern Segments ....................................212 Curriculum Vita ...................................................................................................220 xii List of Tables Table 2.1: Format of OPEN (and CLOSED) lists......................................................................... 44 Table 3.1: Product Specifications. ................................................................................................ 48 Table 3.2: Development Methods................................................................................................. 50 Table 3.3: Tools and Technologies............................................................................................... 51 Table 3.4: RTPP Computer Core Architecture Specifications. .................................................... 52 Table 3.5: RTPP Alpha Prototype Modules. ................................................................................ 52 Table 3.6: GUI Object Tasks. ....................................................................................................... 56 Table 3.7: Graphics Display Object Tasks. .................................................................................. 57 Table 3.8: Contour Map View Legend. ........................................................................................ 60 Table 3.9: Screen World (GD Object) Coordinate System........................................................... 64 Table 3.10: Terrain Map File Processing Object Tasks................................................................ 66 Table 3.11: Terrain Elevation Map File Format. .......................................................................... 66 Table 3.12: Boundaries File Format. ............................................................................................ 67 Table 3.13: A* Path Format.......................................................................................................... 67 Table 3.14: Topographic Terrain Map Properties......................................................................... 69 Table 3.15: DFCS ENU Coordinate System................................................................................. 75 Table 3.16: TMC Modules............................................................................................................ 78 Table 3.17: Terrain Map Baseline. ............................................................................................... 94 Table 3.18: Specify RTPP IP Address. ......................................................................................... 99 Table 3.19: Enable Network Communication. ............................................................................. 99 Table 3.20: Request Flight-pattern Between two locations. ....................................................... 100 Table 3.21: Request Flight-pattern for Airborne UAV............................................................... 101 Table 3.22: Request Flight-pattern for Airborne UAV and Existing Flight-pattern. ................. 102 Table 3.23: Inhibit Network Communication............................................................................. 102 Table 3.24: RTPP Beta Prototype Modules. ............................................................................... 107 Table 3.25: Route Buffers........................................................................................................... 107 Table 3.26: Modules within the FPGV Module.......................................................................... 107 Table 3.27: A* Algorithm Inputs for the Desired Flight-Pattern. .............................................. 110 Table 4.1: Pre-launch Parameters for a 7,000 ft MSL Flight-pattern. ........................................ 126 Table 4.2: Pre-launch Parameters for a 6,750 ft MSL Flight-pattern. ........................................ 126 Table 4.3: Pre-launch Parameters for a 6,500 ft MSL Flight-pattern. ........................................ 127 Table 4.4: Pre-determined Flight-pattern Parameters for a Southern Bound Airborne UAV. ... 145 Table 4.5: Pre-determined Flight-pattern Parameters for a Northern Bound Airborne UAV. ... 146 Table 4.6: Real-time Flight-pattern Parameters for a Southern Bound Airborne UAV. ............ 146 Table 4.7: Real-time Flight-pattern Parameters for a Northern Bound Airborne UAV. ............ 147 Table A1.1: Flight-pattern Format.............................................................................................. 201 Table A1.2: Waypoint Format. ................................................................................................... 205 Table A1.3: Waypoint List for A* route from Illustration A1.1. ............................................... 214 Table A1.4: Waypoint List for A* route from Illustration A1.2. ............................................... 215 Table A1.5: Flight-pattern List for A* route from Illustration A1.3. ......................................... 217 Table A1.6: Flight-pattern List for A* route from Illustration A1.3. ......................................... 218 xiii List of Figures Figure 1.1: DoD Target Command and Control Systems............................................................... 2 Figure 2.1: The 8-puzzle with tiles arranged in increasing order. ................................................ 20 Figure 2.2: The 8-queens problem arranged so that none of queens attack each other. ............... 22 Figure 2.3: The 8-queens problem where all queens attacking and being attacked. .................... 23 Figure 2.4: The 8-puzzle with tiles arranged in random order. .................................................... 24 Figure 2.5: Algorithms represented as black boxes. ..................................................................... 29 Figure 2.6: (a) O( g(n) ); (b) Ω( g(n) ); (c) Θ( g(n) ). ................................................................... 34 Figure 3.1: Operator using RTPP alpha prototype GUI. .............................................................. 55 Figure 3.2: RTPP alpha prototype GUI object.............................................................................. 56 Figure 3.3: RTPP alpha prototype display modes—natural and contour. .................................... 60 Figure 3.4: GD object zoom-in view of a terrain map.................................................................. 62 Figure 3.5: Terrain map ASCII file in (i, x, y, h) format. ............................................................. 66 Figure 3.6: TMC GUI and dialog boxes. ...................................................................................... 80 Figure 3.7: Complicated A* path.................................................................................................. 95 Figure 3.8: Generating Waypoints from an A* path..................................................................... 97 Figure 3.9: Guidance Position Errors.......................................................................................... 105 Figure 3.10: A* route.................................................................................................................. 112 Figure 3.11: A* route with a 90° heading constraint at the start location. ................................. 114 Figure 3.12: A* route with a 90° heading constraint on the destination location....................... 115 Figure 3.13: A* route with heading constraints of 90° at the start and 270° at the destination. 116 Figure 3.14: A* avoiding high-terrain. ....................................................................................... 117 Figure 3.15: Waypoints............................................................................................................... 119 Figure 3.16: Waypoints on top of A* route. ............................................................................... 120 Figure 3.17: Flight-pattern on top of waypoints list. .................................................................. 121 Figure 3.18: Flight-pattern on top of waypoints list on top of A* route..................................... 122 Figure 4.1: RTPP GUI displaying A* route specified on Table 4.1. .......................................... 128 Figure 4.2: RTPP GUI displaying A* route specified on Table 4.2. .......................................... 129 Figure 4.3: RTPP GUI displaying A* route specified on Table 4.3. .......................................... 130 Figure 4.4: Flight-pattern from Table 4.2 on DFCS Console Subsystem................................... 131 Figure 4.5: Flight-pattern from Table 4.3 on DFCS Console Subsystem................................... 132 Figure 4.6: Side view of flight-patterns from Tables 4.1 to 4.3 over elevation data. ................. 133 Figure 4.7: Bird’s-eye view of flight-patterns from Tables 4.1 to 4.3 over elevation data. ....... 134 Figure 4.8: Flight-patterns from Tables 4.1 to 4.3 plotted on an ENU x-y plane....................... 135 Figure 4.9: Flight-pattern from Table 4.1 near and over high elevation terrain. ........................ 139 Figure 4.10: Flight-pattern from Table 4.1 proximity to high elevation terrain. ........................ 140 Figure 4.11: Flight-pattern from Table 4.2 near and over high elevation terrain. ...................... 141 Figure 4.12: Flight-pattern from Table 4.2 proximity to high elevation terrain. ........................ 142 Figure 4.13: Flight-pattern from Table 4.3 near and over high elevation terrain. ...................... 143 Figure 4.14: Flight-pattern from Table 4.3 proximity to high elevation terrain. ........................ 144 Figure 4.15: RTPP GUI displaying A* route specified by Tables 4.4 and 4.6........................... 149 Figure 4.16: RTPP GUI displaying A* route specified by Tables 4.5 and 4.7........................... 150 Figure 4.17: Flight-pattern from Tables 4.4 and 4.6 on DFCS Console Subsystem. ................. 151 Figure 4.18: Actual flight trajectory on flight-pattern from Table 4.1. ...................................... 155 Figure 4.19: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. ............... 156 Figure 4.20: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. ...................................... 157 xiv Figure 4.21: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. ............................ 158 Figure 4.22: Real-time flight-pattern links to pre-launch flight-pattern. .................................... 160 Figure 4.23: Real-time flight-pattern linking to pre-launch flight-pattern over terrain. ............. 161 Figure 4.24: Actual flight trajectory on flight-patterns from Table 4.4 and 4.6. ........................ 163 Figure 4.25: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. ............... 164 Figure 4.26: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. ...................................... 165 Figure 4.27: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. ............................ 166 Figure 4.28: Actual flight trajectory on flight-pattern from Table 4.2. ...................................... 167 Figure 4.29: Flight-pattern from Tables 4.4 and 4.6 on DFCS Console Subsystem. ................. 168 Figure 4.30: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. ............... 169 Figure 4.31: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. ...................................... 170 Figure 4.32: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. ............................ 171 Figure 4.33: Real-time flight-pattern links to pre-launch flight-pattern. .................................... 173 Figure 4.34: Real-time flight-pattern linking to pre-launch flight-pattern over terrain. ............. 174 Figure 4.35: Actual flight trajectory on flight-patterns from Table 4.5 and 4.7. ........................ 176 Figure 4.36: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. ............... 177 Figure 4.37: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. ...................................... 178 Figure 4.38: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. ............................ 179 Figure 4.39: Actual flight trajectory on flight-pattern from Table 4.3. ...................................... 181 Figure 4.40: Flight-pattern from Table 4.3 on DFCS Console Subsystem................................. 182 Figure 4.41: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL.. .............. 183 Figure 4.42: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. ...................................... 184 Figure 4.43: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. ............................ 185 Figure A1.1: Two flight-patterns on the DFCS console subsystem. .......................................... 199 Figure A1.2: An A* route with ∆θ = 135˚ at the center square of a 3x3 grid. ........................... 207 xv List of Illustrations Illustration 2.1: Traveling Salesperson Problem Graph................................................................ 12 Illustration 2.2: A subset from the 8-puzzle state-space. .............................................................. 26 Illustration 3.1: RTPP alpha prototype architectural diagram. ..................................................... 54 Illustration 3.2: Screen world (GD object) coordinate system. .................................................... 64 Illustration 3.3: DFCS ENU coordinate system............................................................................ 77 Illustration 3.4: TMC Architecture diagram. ................................................................................ 78 Illustration 3.5: WGS84 ellipsoid on ECEF coordinate system. .................................................. 84 Illustration 3.6: Geodetic longitudinal lines relative to ECEF X-Y axes. .................................... 85 Illustration 3.7: Geodetic latitudinal lines relative to ECEF Y-Z axes. ........................................ 86 Illustration 3.8: RTPP-DFCS integration.................................................................................... 103 Illustration 3.9: RTPP beta prototype architectural diagram. ..................................................... 106 Illustration A1.1: An A* route with an angle change of ∆θ = 90˚. ............................................ 214 Illustration A1.2: An A* route with an angle change of ∆θ = 135˚. .......................................... 215 Illustration A1.3: Using sector χ90˚ to smooth an angle change of ∆θ = 90˚.............................. 217 Illustration A1.4: Using sector χ135˚ to smooth an angle change of ∆θ = 135˚. ......................... 218 [IMPORTANT: Never delete the section break below. It is needed to initiate page numbering from the next page onwards. In case, you do not need a List of Illustrations page and you are deleting this page, make sure the section break is retained and goes to the end of the previous page. This text is for information only. Delete this text after reading.] xvi Chapter 1: Introduction Department of Defense (DoD) Target Command and Control Systems (TCCS) can benefit from AI technology. To provide evidence for this claim, theories in Artificial Intelligence (AI) were researched and used in a practical approach for creating a real-time flight guidance system. The research favored State Space Heuristic Search [Nil80] as superior to other AI theories (such as Artificial Neural Networks (ANN) [Fau94], Dynamic Programming (DP) [Dre65], and Branch-and-Bound (B&B) [Kum88]) for flight trajectory generation. Therefore, the A* algorithm was used as the AI component in a flight-guidance system. This flight-guidance system was named the Real Time Path Planner (RTPP); it was implemented for bench testing the A* algorithm. The RTPP bench testing includes empirical testing and simulation on the Drone Formation Control System (DFCS), which is a functional DoD TCCS located on White Sands Missile Range (WSMR), New Mexico. This Thesis discusses the following: (1) the RTPP implementation; (2) the analysis of the RTPP output, which are flight-patterns; (3) the RTPP real-time DFCS empirical testing results; (4) the flight simulation results of simulated UAV using RTPP flight-patterns. 1.1 BACKGROUND 1.1.1 Target Command and Control Systems The Army, Navy and Air-Force use DoD TCCS for personnel training and for testing and evaluating weapon systems [Sec88]. Figure 1.1 below depicts eight different military bases that use DoD TCCS for remotely controlling and operating targets; the types of targets controlled are either or a combination of the following: ground, seaborne, and aerial. DoD TCCS can remotely operate single or multiple manned or unmanned sub-scale or full-scale vehicles. The remote control operations are referred to as missions. Missions are conducted from a Ground Control Station (GCS) by teams consisting of trained vehicle operators, engineers, and technicians. The types of vehicles used in mission are categorized as either sub-scale or full-scale. Sub-scale 1 aircraft are missile-like vehicles that were designed for remote operation which is evident from the lack of cockpit. Full-scale vehicles were designed with a compartment for human operation; the full-scale vehicles that get equipped with hardware that allows them to be remotely operated are referred to as drones. The targets community also refers to these sub-scale and full-scale vehicles as targets or Remotely Piloted Vehicles (RPV) [Lee75], [Ran76]. Figure 1.1: DoD Target Command and Control Systems. 1.1.2 Drone Formation Control System The Drone Formation Control System (DFCS) is a mature DoD TCCS. It can automatically control the following aerial vehicles: the QF-4 full-scale drone and the BQM-34A, MQM-107D and MQM-107E sub-scale RPV. It can also control the following ground vehicles: the M60 and T-72 tanks, and the M-812 five-ton truck. DFCS can automatically takeoff and land the QF-4 drone at Holloman Air Force Base (located in Alamogordo, New Mexico). Targets are controlled by via Radio Frequency (RF) data-links. These RF data links are used to transmit target data, telemetry and commands between the targets and the GCS. The target has an 2 airborne subsystem which communicates, or is interrogated, at 10 Hz. There are two types of interrogations: uplinks and downlinks. The uplinks are data that are passed to the target; they contain approximately 10 proportional channels and 80 discrete channels. The downlink telemetry are data that is returned by the target to DFCS; they contain approximately 30 proportional channels and 80 discrete channels. DFCS contains a Ground Control Station (GCS) that contains the following: (1) eight console subsystems from which missions are performed: six are Drone Control Consoles (DCC) and two are Master Control Consoles (MCC); (2) two central RISC type Computer Control Subsystems (CCS) to perform the Guidance, Navigation, and Control (GNC) of the targets; (3) two Data Link Processors to transmit data via Radio Frequency (RF) between airborne targets and the GCS; (4) two co-located Interrogator Subsystems (ISc). Additionally, to perform navigation and to transmit and receive data to and from remotely located targets, DFCS uses 10 Distance Measuring Equipment (DME) Interrogator Stations (IS) and four UHF Radio Frequency Module (RFM) units that are located at strategic mountain peaks to cover most of the WSMR airspace. 1.2 PROBLEM STATEMENT This study was conducted to determine the feasibility of updating the DFCS aerial- vehicle guidance system with advanced technologies from the field of AI in order to assist DoD TCCS personnel in performing live testing of modern weapon systems. This study was to determine if recent technologies could lessen the intrinsic inflexibilities within the DFCS aerialvehicle guidance system in the following areas: flight trajectory geometry, obstacle avoidance, real-time capabilities, and operator work load. This study also sought a technology that would extend real-time capabilities while lessening error prone and labor intensive tasks. First, one problem in the legacy aerial-vehicle guidance system arises from real-time inflexibilities. The inflexibilities limit the modifications that can be performed to the pre-planned test setting for weapon-system evaluation (e.g. the real-time creation of a flight-pattern over 3 mountainous terrain using a low AGL). Second, another problem that is inherent in this situation is that the project decision makers must request modifications for target flight profiles from DFCS. Third, at present, DFCS is limited in the number of actions it can do in real-time. For example, if a change in the pre-planned flight trajectory is requested, the only actions that can be performed to accommodate this request are that of rotating, shifting, and translating the existing flight-pattern. Changes to the flight-pattern’s geometry, that is, its overall shape, are not allowed in real-time. The preplanned flight trajectory real-time modifications just described become less available as the UAV flight altitude decreases. For example, when the UAV is flying over WSMR at an altitude less than 9,000 ft, a danger arises when using the flight-pattern translations described above. This is because the mountain elevations vary from approximately 4,000 ft MSL to approximately 9,000 ft MSL. For instance, consider the dangerous situation that occurs if a flight-pattern is rotated or moved in such a way that it traverses high elevation terrain. At present, DFCS is equipped with a nap-of-the-earth (i.e. terrain-following) system which can avoid obstacles by having the UAV perform climbs; however, DFCS does not have modules that avoid obstacles by flying laterally around them. The combination of the problems described above makes real-time modifications, and hence mission operations, very inflexible. The project decision makers must be in constant communication with DFCS personnel and they must notify DFCS when the original plan requires changing so that actions from the set of real-time changes can be implemented. In summary, the goal of this research is to eliminate these problems by coming up with a real-time solution that allows DoD target control system operators, personnel, and project decision makers to create (or modify) pre-planned flight profiles. The desired solution is such that operators, personnel, and decision makers can have the flexibility to command that a specified number of UAV be guided, navigated, and controlled to the desired location(s) with precision timing (L.E. Alvarado, personal communication, January 2006). 4 1.3 METHODOLOGY A solution to the problem described above would be a system that performs the following four real-time operations: (i) flight trajectory creation, (ii) obstacle-avoidance, (iii) synchronization of multiple UAV, and (iv) allows flight profile modifications to be performed by project decision-makers with minimal DFCS interaction. (i) and (ii) can be grouped since they both deal with the geometry and real-time generation of flight trajectories. They also have similar constraints: flight trajectories must be maneuverable by aircraft, and the resulting flight trajectories must maintain a constant MSL flight altitude so as to create a solution that is independent of the nap-of-the-earth obstacle avoidance algorithms. (iii) differs from (i) and from (ii) in that it deals with the flight trajectories distance and timing, e.g. finding flight trajectories that can reach point B from the respective locations of a couple of UAV, each moving at its respective ground speed. The output of (iii) is to have multiple UAV rendezvous at userspecified locations. (iv) differs from (i), (ii), and (iii) in that it deals with interfaces and integration issues: e.g., what Graphical User Interface (GUI) minimizes user input errors, etc. The relationship between (i), (ii), (iii) and (iv) is that only (i) and (ii) can be grouped as similar, and that the implementation of (iii) and (iv) depends on how the system performs (i) and (ii). This system’s methodology—its planning, development, testing, etc.—was implemented using Boehm’s spiral model [Boe88]. This industry-proven model was used for dividing this project into phases and for allocating a set of prioritized tasks to each phase. This software planning method produced a solid architectural foundation that prepared the system for future enhancements, which is useful and necessary when the product’s lifespan and scope are considered. This project has been divided into three phases, where Phase I implements (i) and (ii) and Phases II and III are set aside for implementing (iii) and (iv), respectively (as future work). This thesis focuses on the implementation of Phase I. However, the theories were selected with the constraint that they must be updatable, swappable, or replaceable in such a way that the core architecture developed in this study allows for modules to be added or replaced during Phases II and III. 5 The methodology to perform this document’s study—that is, the implementation of Phase I—consists of the following six different tasks: (1) research, (2) design, (3) development, (4) empirical testing, (5) simulation, and (6) analysis. First, Task 1 was to research the guidance systems used by autonomous UAV in order to determine what trajectory generation and obstacle avoidance theories and algorithms they employ. This task led to further in-depth research for flight trajectory generation in the fields of Artificial Intelligence, Operations Research, and Optimal Control Theory. This research eventually led to the selection of the A* algorithm [Har68]. Second, Task 2 was to design; that is, to create an architecture for the program that would implement the A* algorithm. This task yielded two software architectures: one for the Terrain Map Creator (TMC) and the other for the RTPP. This design makes these programs independent from each other. The TMC produces elevation data files for the RTPP, and the RTPP, in turn, produces flight trajectories for the DFCS guidance system. The design anticipates the availability of more accurate terrain elevation data in the future from different sources. Under such circumstances, new digital terrain elevation data programs could be created that extract data from new data sources into RTPP compatible elevation files. Third, Task 3 was implementation. Microsoft® Windows XP™ was selected as the development and product platform. C++ and Object Oriented Programming (OOP) [Dei01] technologies were used to create all the source code. The source code was compiled with Microsoft Visual C++.NET™. The National Elevation Dataset (NED) [USG07] was used as the elevation data source. It is the input to the TMC. OpenGL™ (Open Graphics Library) [Woo97] was selected as the computer graphics Application Programming Interface (API) tool to display both the NED based terrain maps and the flight trajectories on the RTPP GUI. The DFCS console subsystem terrain displays were also assigned to display these data. These technologies were chosen from a technology matrix that was created for identifying the most capable, efficient, as well as practical, developmental tools. Fourth, Task 4 was to perform empirical testing. This required the resulting product (i.e. the RTPP) to be integrated into DFCS so that it can receive guidance commands requests and 6 provide guidance solutions in response to these requests. Therefore, the RTPP computer was linked to the DFCS real-time computer network via TCP/IP protocol. This allowed flight-pattern and their specifications to be passed as UDP network packets between the DFCS real-time computer network and the RTPP. Fifth, Task 5 was to perform flight simulations. Three simulations were performed using one simulated MQM-107D sub-scale aircraft per simulation. The RTPP generated five flight-patterns to be used by the DFCS Guidance, Navigation, and Control (GNC) system; three flight-patterns were created prior to the MQM-107D launch; two were created when the MQM-107D was airborne. In the simulations, the GNC system maneuvered the simulated UAV on all five flight-patterns. Sixth, Task 6 was to analysis. Three properties of RTPP flight-patterns were analyzed to determine if they are flyable; these properties are distance, safety, and maneuverability. Flight-pattern distance is one criterion that establishes if the flight-pattern is flyable. Flight-pattern safety examines the flight-pattern’s proximity to high elevation terrain. Flight-pattern maneuverability is determined by establishing that a UAV turn radius constraints are implemented. 1.4 EVALUATION CRITERIA Since this work is based on an AI algorithm, the evaluation criteria for this study were obtained from the AI field. Russell and Norvig [Rus03] define a performance measure, an agent, an environment, and a task environment, and how they relate to each other: “The performance measure evaluates the behavior of an agent in an environment”. This description of performance measure and the rational agent [Rus03] description are used to explicitly define the criteria for evaluating the RTPP output. In this setting, the UAV is the agent, and the RTPP is the agent program. The environment for this study has two components: real-time flight trajectory requests, and the WSMR terrain. The real-time flight trajectory requests are transmitted to the RTPP from the DFCS real-time computer network, and the WSMR terrain is provided to the RTPP as elevation data files that are created offline by the TMC. The task environment is stated as follows: to provide real-time flight guidance to a UAV as specified by a human operators at the DFCS console subsystem. 7 The five specifications that follow define the RTPP expected behavior. The first set of specifications is the flight-patterns initial and final location; the RTPP must generate a minimaldistance flight-pattern between these two locations. The second specification is the UAV flight altitude; the flight altitude must remain constant for the entire flight. The third specification is minimum Above Ground Level (AGL) distance; the RTPP must generate a flight-pattern that maintains a minimum AGL distance between the UAV and the terrain beneath it for the entire flight-pattern. The fourth set of specifications is the initial and final true heading for the UAV on the flight-pattern; that is, the flight-pattern must use the specified true headings for exiting the starting location, and use the specified true headings for entering the destination location. The fifth specification is the ground speed; curves on RTPP flight-patterns must have a minimum radius equal the UAV turn radius which depends of the maximum ground speed used for the flight-pattern to be generated. [Sot07] 1.5 DOCUMENT OVERVIEW The document discusses the process of attaining real-time guidance for a DoD TCCS. The desired solution to this problem was a real-time guidance system that runs on a high-end computer—preferably a Personal Computer (PC). This system must be compatible with the DFCS real-time environment. The concept was that guidance algorithms generate flighttrajectories in real-time1; then pass them to the DFCS real-time computer network where there, the DFCS Guidance, Navigation, and Control (GNC) system would use them to automatically navigate and control UAV. The phases that led to the implementation of this system’s prototype are discussed in Chapters 2, 3, and 4: first, the research that went into selecting technology for implementing this system; second, the work that went into implementing a prototype of this realtime guidance system; last, the empirical testing and simulation results of the prototype system. Chapter 2 begins with an overview of this study’s research; then, State-Space Search (SSS) is explained. Also described are related SSS algorithms that can also be implemented as 1 The real-time definition for this system is defined as follows: UAV guidance that is generated and ready for use by an airborne UAV in less than three seconds from when the flight trajectory request was sent. 8 software to run on a personal computer. Chapter 3 describes the two MS Windows XP compatible software products that resulted from this study: the RTPP and the TMC. Their design, development and how they were integrated into DFCS are explained. Additionally, Chapter 3 discusses the RTPP inputs and the DFCS modules and components that comprise the RTPP virtual and physical environments. Chapter 4 analyzes the validity of the RTPP flightpatterns. It also presents the real-time performance capabilities which were obtained from empirical testing on the DFCS real-time environment. Lastly, it provides the 6-DOF flight simulation results where five RTPP flight-patterns were used to guide three simulated MQM107D sub-scale UAV in three separate flight simulations. 9 Chapter 2: Theory: Path Finding 2.1 OVERVIEW This research seeks theories that are useful in a system that can provide the following solution: a UAV route-generating system for a UAV flying over known terrain where all obstacles are static and known a-priori. For solving this problem and for determining the direction of the research, two concepts were used for establishing assumptions that justify the direction of this research: one, the Traveling Salesperson Problem (TSP) [Fau94], [Rus03] and two, the A* algorithm [Cap02], [Yao05]. Assumption 1 is based on the TSP problem where a salesperson takes a tour of n cities and returns to the city where the tour began. The constraint to this problem is that all the n cities must be visited and that the cities must be visited in such an order that the total distance traveled is the minimum distance attainable. This means that the distance traveled is minimal because the shortest distance tour was selected from the set of all tours that begin and end in the city where the salesperson begins the tour. Assumption 2 is based on the A* algorithm, which is ubiquitous in the autonomous vehicle literature; it showed to have several uses. For example, Capozzi et al [Cap02] suggest it as a path planning method. Additionally, Yao-hong et al [Yao05] use it in simulation. Yet still, Barto et al [Bar93] use it as a paradigm for comparing their dynamic programming solutions. Assumptions 1 and 2 are succinctly stated as follows: Assumption 1: The TSP problem is a superset of the route finding problem, which is to find a route between two different locations in this study. Assumption 2: The A* algorithm has been implemented successfully as a route finding module for use in autonomous aerial vehicles. 2.1.1 Implications of Assumption 1 Assumption 1 implies that the solution space of the TSP problem contains a solution for finding a route between two distinct locations. This means that the solution space must contain a solution that can be applied to solving the route finding problem for guiding a UAV that is flying 10 over the WSMR terrain. For this implication to be true and correct, the UAV route finding problem on the WSMR environment must have a representation that is very similar to that of the TSP problem. Several documented approaches are available that efficiently solve the TSP problem. But first, it must be established that this study’s problem can be solved by some of the TSP solutions. Hence, Assumption 1 and the resulting implications are not used for performing analysis on any of the solutions. Instead, they are used in this phase of the research to establish that the WSMR environment can be formulated as done for the cities of the TSP. If this can be done, the implications resulting from Assumption 1 can be established as correct, which means that one of the solutions for the TSP problem can be used as a module within the system that will be created for solving the problem presented in this Thesis. 2.1.2 Traveling Salesperson Problem The TSP problem is often illustrated with a graph consisting of vertices and arcs2. The vertices represent the set of cities and the arcs represent the set of roads that connect the cities. In TSP graphs, it is common to assign a weight to each arc. The arc’s weight represents the distance between the cities it connects. This concept is illustrated in Illustration 2.1 below. 2The technical term here is edge: edges are bidirectional links whereas arcs are unidirectional links. However, the less esoteric term arc will be used interchangeably with edge until graph terminology is formally presented. 11 Illustration 2.1: Traveling Salesperson Problem Graph. Notice that the graph is not precisely defined. This is a common abstraction when discussing the TSP problem. For example, the graph shows that cities C1 and C2 are separated by 20 length units but it does not indicate from where in each city this distance was measured. Additionally, it does not indicate if the cities are contiguous or if they are separated by areas. One ambiguity caused by the imprecision is that these cities could be contiguous if the connecting arc represents the road from the center of city C1 to the center of city C2. Similarly, the cities could be separated from each other by space if the connecting arc represents the road from the right border of city C1 to the left border of city C2. These ambiguities in the TSP graph imply an abstraction that hides the implementation details and allows for a wider variety of theories that solve this problem to be applied for solving similar problems. 2.1.3 Mapping WSMR Terrain to TSP Graph The graph on Illustration 2.1 can be modified and precisely defined to represent an area of the WSMR terrain. For example, let an area of the WSMR terrain be divided into three contiguous squares of equal size such that the squares take up the vertices that represent the cities 12 C1, C2, and C3 of the top row. If the length and width of the top row are 100x300 length units, respectively, the dimensions of each square are 100x100 length units. Furthermore, the two arcs can be made to represent the distances from the center of one square to the center of the next square. This means that the labeled arc value from WSMR location C1 changes from 20 to 100 length units as does the labeled arc connecting WSMR locations C2 and C3. Applying this division to the middle and bottom rows produces a representation of the WSMR terrain as a TSP graph. This assignment demonstrates that the WSMR terrain can be represented as the cities, or more generally the locations, in the TSP graph. Therefore, if Assumption 1 is true, some of theories and solutions that solve the TSP problem can also be applied to the problem of generating a route between two locations for a UAV flying within the WSMR terrain. 2.1.4 Convergence of Assumptions 1 & 2 Assumption 2 states that the A* algorithm has been used for autonomous UAV path- planning and Assumption 1 implies that if a solution can solve the TSP problem, it can also solve this study’s route finding problem. Since the A* algorithm has been used to solve the TSP problem (Russell and Norvig illustrate this as an example [Rus03]) and because recent publications (e.g. [Cap02], [Rus03], and [Yao05]) suggest the use of the A* algorithm for pathplanning, Assumption 1 and Assumption 2 converge and they can be unified. This convergence, or unification, provides three important results: (1) that the WSMR terrain can be represented as a TSP graph; (2) that the A* algorithm can solve the TSP problem; (3) that the A* algorithm has been used to generate flight trajectories for UAV. From these results, the following generalization can be made: the A* algorithm can be used to find a route for a UAV on the WSMR terrain. This generalization is as much an abstraction, since it does not consider real world issues such as reliability, real-time responses, computer hardware constraints, and UAV turn radius constraints. However, this generalization does imply that other solutions to the UAV route finding problem may exist in a solution set that branches out from the A* algorithm and that this solution set contains other route finding algorithms applicable to the problem of UAV 13 route-generation. Hence, further research is done on the A* algorithm and its parent discipline AI. 2.2 STATE SPACE SEARCH State-Space Search (SSS) [Nil71], [Rus03] is an AI3 theory that uses the vertices of a graph to represent the different conditions of a problem. For example, the initial condition, all the intermediate conditions, and the final condition are all represented by a vertex on the graph. Additionally all the transitions between previous and next conditions are all represented as arcs on the graph. The set of all conditions is called the state-space, and each individual condition is called a state. The attempt to perform the exact transitions from a specific initial state to a specific goal state is called a state-space search. A path is a solution that results from a SSS. Precisely, it is a sequence that begins with the initial state, then contains all the intermediate states in order, and ends with the goal state. Hence, the purpose of SSS is to find a path within a graph. Research for SSS (i.e. theories that employ graph-searching techniques) is conducted. This is to verify that the most practical solution for real-time path-planning is selected for the UAV route-generation module. Several fields offer solutions that can be used to solve SSS problems. The field of Optimal Control theory has one solution called Dynamic programming (DP) [Bro74], [Bar93]. The Operations Research field contains two solutions for finding the shortest path within a graph: (1) the Dijkstra algorithm [Win94], [Mit88] and (2) the Branch and Bound technique [Win94]. The field of Artificial Intelligence provides several methods for finding a shortest path within a graph: blind search (e.g. breadth-first, depth-first), greedy search (e.g. best-first, iterative-deepening), and heuristic search (e.g. A*) [Nil71], [Rus03]. 2.2.1 Graphs: Theory & Terminology This section provides a formal description of graph-theory. An informal introduction to graph-theory was provided above as an example of how to represent the WSMR terrain as a 3AI as used in this study is the modeling of human thought for problem-solving; this is a different application than AI as used for modeling the neurons in the brain. 14 graph. Furthermore, as implied above, the A* algorithm is a graph-searching technique; so are all the other methods that were researched for solving this Thesis’ problem. Hence, graphs are used by all the route-finding theories in this work. Several literary works provide detailed overviews of graph-theory [Cor90], [Ste95], [Car07], [Har68]. In this section, graph theory and its concepts and terminology are described as they apply to some to the problems in the fields of operations research, optimal control theory, and artificial intelligence. Although, it is not the goal of this research to treat these different fields as if they are the same as done by Kumar et al [cite the CDC paper], the abstraction provided by unifying these theories is used to describe graphtheory since the literature documenting these theories follows conventions when dealing with graphs. 2.2.1.1 Introduction to Graphs The TSP problem was introduced as the problem of finding the shortest distance tour of n cities from the set of all tours that begin and end in the same city. The reason the TSP problem was explained in terms of graphs and sets is that graphs are composed of sets. In this subsection the TSP graph from Illustration 2.1 is referred to as G and it is described mathematically using set theory. The graph G is made up of two sets: the set V of vertices and the set E of edges4; this is described mathematically in Equation 2.1 below. G = {V , E} (2.1) where 4Edges G is a graph V is the set of vertices, or nodes, in the graph; and E is the set of edges, or arcs, in the graph are bidirectional links and not all graphs are bidirectional; in the latter case, graphs use arcs instead of edges. 15 In graphs, vertices connect to other vertices with edges or arcs. Regarding graph terminology, many authors use the term nodes in place of vertices (or node for vertex in the singular case). Furthermore, the terms edges and arcs are used to identify the linking element of graphs; these terms are not interchangeable. Edges are bidirectional and arcs are unidirectional. Graphs that use arcs exclusively to connect the vertices or nodes are unidirectional and graphs that have some edges connecting the vertices are bidirectional. An example of a bidirectional graph is that of Illustration 2.1. Notice that the edges contain two arrow heads; had the linking elements been arcs, they would only contain one arrow head. The TSP graph G is also an example of a labeled and explicit graph. In labeled graphs, the vertices, or nodes, have values written inside or next to them; this is also true for arcs and edges. The arc or edge value is often referred to as the cost or the weight for transitioning between vertices or nodes. By definition, these labeled graphs are always explicit. This means that all the vertices and edges are clearly defined and can be easily drawn out as was the case for the graph G on Illustration 2.1. Explicit graphs fall under the category of finite graphs since their sets can be made explicit by drawing them out. This is not true for infinite graphs. Infinite graphs are always implicit since their sets of vertices and edges cannot be represented explicitly. Nevertheless, sub-graphs from the infinite graph can be made explicit if the relationships between the vertices and the edges are known (the A* algorithm is a perfect tool for making subgraphs, such as paths, from infinite graphs explicit). 2.2.1.2 Introduction to Paths Paths are subsets, or sub-graphs, of a parent graph. They are comprised of subsets belonging to the sets of vertices and edges of the parent graph. Paths can be made explicit by the A* algorithm. However, when dealing with large or infinite graphs, it is best to leave the set of paths implicit since precisely generating the entire set of paths, besides being time-consuming, can be impractical, inefficient, and even impossible—especially if only one particular path is sought. The reason for this is that finite graphs contain a combinatorial set of paths and infinite graphs can have an infinite set of paths. This method is used in this work; that is, the paths of a 16 graph are left as implicit sub-graphs until a particular path is desired, at which point, the search for this path commences and, if it is found, it is made explicit by the A* algorithm. The graph G on Illustration 2.1 contains a set of paths T. The set T contains the different sequences that represent each distinct path Ti. Each of the paths is made up of a combination of the vertices Ci that represent the cities. All the vertices of G are in each path Ti since each valid tour visits each of the n cities. Furthermore, the paths of T are sub-graphs of G, and thus T ∈ G. These relationships—the set of vertices Ci are in G, the set of paths T is a subset of G, the path Ti is a sequence composed of the vertices Ci—are summarized by Equations 2.2 below. Ci ∈ G T ⊂G Ti = {Cs ,..., Cs } (2.2) where G is the graph; and T is the set of paths in G; and i is the index associated with the ith vertex; and Cs is the vertex representing the start and end vertex of the path; and … are all the different combinations of the vertices in G excluding Cs; and Ti is the set of all paths in G that begin and end with vertex Cs The solution to the TSP problem is an example of a path. This path Tmin represents the tour having the minimum travel distance dmin and it is selected from this set of paths, or tours, T, which begin and end in the same city Cs. This solution has several names: (i) the shortest (or shortest-cost) path, (ii) the minimum (or lowest) cost path, (iii) the optimum (or optimal) path. These identifiers specify that a path Tmin has the lowest cost cmin from the set of all paths T. It is not uncommon for a graph to contain more than one path Tmin with the lowest cost value cmin (e.g., this is the case for graph G on Illustration 2.1; notice that the edge costs are symmetric). 17 The total cost cp of each path Ti is computed by summing all the edge costs cjk on the path; cjk is the cost between cities Cj and Ck. The minimal distance tour Tmin for the graph G on Illustration 2.1 can be identified by comparing the travel distances of the tours in T. That is, the shortest path Tmin in G is the path from the set T whose total cost cp is dmin. cp = ∑c j , k∈v jk , c jk ≥ 0 (2.3) where cp v is the total cost of the ith path Ti; and is the set of vertices in the ith path Ti; and j,k are the indexes associated with a pair of vertices vj and vk; and cjk is the edge cost between the vertices vj and vk 2.2.1.3 Cycles A cycle is a special path that begins and ends at the same vertex. An example of a cycle is the solution to the TSP—this path begins and ends at the same vertex. Actually, the TSP graph G of Illustration 2.1 is itself an example of a cycle. For instance, one cycle resulting from this graph is the tour that starts at vertex C1 where the first element of the cycle is this vertex C1. The next eight elements of the cycle are the other vertices of the graph, and the last element of the cycle is again the vertex C1. One of the cycles composed of the vertices from the graph G is the path T1 = {C1, C2, C3, C4, C5, C6, C7, C8, C9, C1}. Another example of a cycle from the graph G is the path T1 = {C1, C2, C1}. Observe that the graph G contains a combinatorial set of cycles. Graphs that contain cycles are referred to as cyclic graphs and those that do not, as acyclic graphs. Even though not all graphs contain cycles, cycles do appear in both unidirectional and bidirectional graphs. 18 2.2.1.4 Negative Edge Costs Equation 2.3 above cannot be used for finding a shortest path in cyclic graphs that use negative edge costs. The reason is that a shortest path cannot be found in this type of graph because the search for it is infinite. For example, consider the cycle T1 = {C1, C2, C1}, where the cost cp is zero before the search enters the cycle and the edge cost between C1 and C2 is -1. When the search exits the loop T1, the cost cp is -1. If the search proceeds to vertex C2 next, which is necessary since the search must be done on all adjacent vertices, the cost is -2. Hence, a path with a smaller cost was found. This process continues because a path with a smaller cost is found after each successive iteration on the loop T1. The reason for this is that the search is in the process of computing the cost and also of creating this shortest path that it has found. However, this negative accumulation continues until the cost cp is -∞. This means that a shortest path does not exist because there will always be a path with a lower cost than the previous one. 2.2.1.5 Connected Graphs The topic of connected graphs applies also to paths—after all, paths are graphs. A graph is connected if each of its individual vertices can be reached from each other. This linkage between these two vertices can be done with an arc, an edge, or a path. This means that each pair of connected vertices in the graph need not be adjacent to each other (adjacent vertices share an edge or an arc). The TSP graph on Illustration 2.1 is an example of a connected graph. Notice on Illustration 2.1 that all the vertices are not adjacent but that they are all connected. That is, any two vertices can be reached from any other vertex in the graph. 2.2.2 Classic Test Problems Many of the modern studies on algorithms from the Journal of Artificial Intelligence publish the algorithm’s running-times and benchmarking results. These results are mostly obtained from experiments or empirical tests performed on algorithms that use a game or puzzle as the test bench. Such puzzles include but are not limited to TSP, chess, 8-queens, Othello, 8puzzle, Rubik’s cube, and towers of Hanoi. The authors of these studies assume that their 19 audience knows how to set up problems for SSS. Therefore, the setups of these puzzles and games are rarely explained. However, this assumption is not used in this document. Nilsson refers to the process of setting up a problem for SSS as an art [Nil80]. I concur with Nilsson in that setting up problems for SSS is not a trivial task. Therefore, an explanation of the setups for the 8-puzzle and the 8-queens games is provided. These two problems were chosen because they are ubiquitous in AI literature. Additionally, they are analogous examples of how the problem for this Thesis was setup and solved. 2.2.2.1 The 8-Puzzle The 8-puzzle is a sliding-block puzzle. It contains a grid of nine square slots in a board that is divided into three rows and three columns. It also contains eight tiles that are numbered 1 thru 8. This board and tile arrangement is shown in Figure 2.1 below. The tiles are housed within the slots of the board’s grid and they are restricted to occupying only one slot at a time (they cannot partially occupy a slot). Because the grid has nine slots and eight tiles, there will always be one empty slot. The empty slot is referred to as the space. Figure 2.1: The 8-puzzle with tiles arranged in increasing order. 20 The space is allowed to change slots. This means that the space can move within the board. However, the space can never move directly to a diagonal slot and its movements are always discrete. The space must stay on the board and it cannot skip over slots to get to a location. The space displaces the tiles that are housed in the slot that it moves to. The evacuated tiles are relocated to the space’s prior location. 2.2.2.2 The 8-Queens The components of the 8-queens problem are eight identical pieces called queens and one board. The board is divided into eight rows and eight columns. Each of these rows and columns is further subdivided into equally sized squares or tiles. Since each row and column contains eight tiles, the entire board is made up of 64 tiles. The tiles are colored and arranged in a checkered pattern that makes it easy to distinguish and identify adjacent tiles. Tiles that are horizontally and vertically adjacent to each other alternate color and tiles that are diagonally adjacent to each other have the same color. This checkered board and the eight queens on it are depicted on Figure 2.2 below. 21 Figure 2.2: The 8-queens problem arranged so that none of queens attack each other. These tiles are used as slots for the queens to occupy. Each queen is limited to occupying one slot at a time. Furthermore, any of the queens can be placed on any of the empty slots on the board. Any queen that occupies a slot on the checker board is attacking. The attacks can be on other pieces or on slots on the board. Queens automatically attack pieces that are on any of the slots that they are attacking. By default, a queen attacks all the slots in the row, column, and diagonals that it is on. A piece can impede a queen’s attack. In this case, the queen’s range of attack is limited to the slots that are between it and the piece that is impeding the attack; the impeding piece is also being attacked. In the 8-queens problem, all the pieces are queens, and all attacks are reciprocated. This means that a queen that is attacking is simultaneously being attacked. Notice in Figure 2.2 that none of the queens are under attack and that none of them are attacking each other. Notice also that each queen is attacking one row, one column, and two diagonals. The solutions to the 8-queens problem are configurations such as the one on Figure 22 2.2, where none of the queens are attacking each other. That is, any configuration that has all 8queens on the board with out them attacking each other is a solution to the 8-queens problem. Any configuration that has less that 8-queens on the board, or that has queens exchanging attacks is not a solution. An example of a configuration of that is not a solution is on Figure 2.3 below. Figure 2.3: The 8-queens problem where all queens attacking and being attacked. 2.2.3 Search-Graph Generation from an Implicit State-Space Both finite and infinite state-spaces can be implemented as implicit graphs. This means that state-spaces are also implicit. This concept makes SSS a real-world computer solution because it can be used to solve problems that have infinitely large state-spaces (as is the case for this Thesis’ problem). Implicit graphs, as opposed to explicit graphs, use limited computer resources more efficiently. One example is in the use of computer memory; in an implicit graph, the states are not present in the computer’s memory—yet the states can be accessed as if they 23 were. Another example is in the computer’s processor; in an explicit graph, a search must not only be done for the goal state, one must also be done to locate the initial state. This is not true for an implicit graph because the states are generated (i.e. computed) as opposed to being sought. 2.2.3.1 States and State-Spaces The type of problem that is solved in this study is made up of discrete configurations. These configurations are referred to as the states of the problem. The whole set of these configurations are referred to as the state-space of the problem. The 8-puzzle is an example of a problem that contains a discrete set of configurations. Figure 2.1 above shows that the tiles are arranged according to the number on the tile. This order is one configuration of the 8-puzzle. The tiles can be rearranged to a different configuration by successively moving the space. An example of a different configuration that could result from moving the space is shown on Figure 2.4 below. Figure 2.4: The 8-puzzle with tiles arranged in random order. The two configurations on Figures 2.1 and 2.4 are example of states from the problem’s state-space. The set that contains all the different configurations of the 8-puzzle is the state-space 24 of the problem. The initial configuration is referred to as the initial state or as the start state and the goal configuration is referred to as the goal state. Any of the configurations from the problem’s state-space can be the initial state or the goal state of the problem. For example, the 8puzzle problem can use the tile order on Figure 2.1 as the start state and the configuration on Figure 2.4 as the goal state, or vice-versa. 2.2.3.2 Trees and the Successor Operator When dealing with implicit graphs, graph-searching-algorithms use a successor operator5, Γ, to generate the search-graph. The search-graph explicitly represents a subset of the implicit state-space. The successor operator, which is created from the problem-description, is used to perform this action. The first step to creating the search-graph is to provide the graphsearching-algorithm with a state from the state-space. The graph-searching-algorithm uses this state to generate the first node of the search-graph. Next, the graph-searching-algorithm feeds this node, or state, to the successor operator, and the successor operator expands this node. This results in newly added nodes to the search-graph. These nodes are connected to the root node by an arc that originates at the root. These search-graphs generated by graph-searching-algorithms are categorized as a special type of graph called a tree. A tree that is a subset of the implicit state-space for the 8puzzle is shown on Illustration 2.2. Trees originate from a single node on the top row called the root. In this study, the root always represents the initial state of the problem to be solved. If the state from Figure 2.4 is the initial state, then Illustration 2.2 is an example of a tree using this initial state as the root. Notice that the label on the root node is the state from Figure 2.4. Some graph-searching-algorithms (such as reverse or bi-directional search6 [Rus03]) generate trees with the goal state as the root. However, these algorithms are not used in this study. 5The idea and terminology of successive operator was adopted from Hart et al [Har68]. They use successor operator to describe the node expansions of their heuristic search algorithm. 6In a bi-directional search, the start state and the goal states generate search-graphs; the solution is obtained when the first node belonging to both search-graphs is generated. 25 Illustration 2.2 is an example of a tree that was generated by applying a graph-searchingalgorithm to an initial state from the 8-puzzle problem. First, the graph-searching-algorithm generates the root of the search-graph. Second, it applies the successor operator to the root. This results in a node-expansion which generates the successors of the root. In Illustration 2.2, the successors of the root are the nodes on the middle row. Third, the successor operator is applied to the nodes on the middle row which results in the production of the nodes on the bottom row. Nodes that are generated by other nodes in a tree are referred to as offspring, descendants, or successors. These nodes represent the states that their parent nodes, or parent state, can transition to. Parent nodes or source nodes are nodes that can be expanded by the successor operator to generate offspring nodes. Illustration 2.2: A subset from the 8-puzzle state-space. Drawing out the tree, as is done for Illustration 2.2, is common and conventional in AI (and in computer science). Because trees have levels to which its nodes are assigned, it is conventional to draw the lowest level of the tree at the top and successive levels underneath, according to level order. The nodes from each level are drawn in the row assigned to the level. 26 (The convention for drawing the columns depends on the type of tree, but, generally, offspring nodes are drawn underneath their parent nodes). The root corresponds to the lowest level node and is therefore drawn at the top of the tree. The other levels of the tree are defined relative to the root and to the node that was expanded to produce them. The level of the root is 0. When the root is expanded, the level of the successor nodes is 1. When these successors are expanded, the level of their offspring is 2, and so on. 2.2.3.3 Breadth of a Search-Graphs In computer science, AI, and graph theory literature, if the number of successors for all the nodes of a tree is the same, the number of successors is assigned as a property of the tree. This property is referred to as the breadth of the tree. That is, a tree with breadth b means that all its nodes have b successors. However, this definition for breadth will be relaxed to include trees that have both of the following properties: (1) the parent nodes have a known maximum number of successors, b, but not necessarily that number of successors; (2) the number of nodes that have exactly b successors is much larger than the number of nodes with less than b successors. This means that a tree with at most b successors per node, even though not always exactly b successors per node, but that mostly has nodes with b successors, will be said to have breadth b. The approximation implied by relaxing the definition of breadth can be justified by considering infinite state-spaces—an infinite state-space limited to a maximum of b successors per node can have an infinite number of nodes with exactly b successors. (This justification is used for a worst-case analysis.) For the graphs in this study, the exact number of successors spawned by each parent node varies depending of the location of the node on the implicit graph. However, the maximum number of successors for each state is known and fixed. An example that is analogous to this study’s problem can be observed on the tree depicted on Illustration 2.2. This tree has breadth b = 4, a root with only 2 successors, and the root’s successors with only 3 successors each. This tree has breadth b = 4 because any state that has the space in the center of the 8-puzzle board can transition to a maximum of four different states. Referring to the problem description on Section 27 2.2.2.1, the space cannot move diagonally but it can move vertically and horizontally. This means that when the space is at the center of the 8-puzzle board, it can move up, down, left, or right. Each of these space movements relocates the associated tile to the center of the 8-puzzle board and results in a state-transition. For states that have the space in a corner, as is the case for the root, only two state-transitions are available and hence, the root has only two successors as shown on Illustration 2.2. States that have the space in the center of a row or column that is at the edge of the 8-puzzle board have a maximum of three state-transitions. This means that the nodes that represent these states have at most 3 successors. This is the relationship between the nodes on the second row and those of the third row. See Illustration 2.2. 2.2.3.4 Depth of a Search-Graphs In computer science, AI, and graph theory literature, trees are assigned another property called the depth, d. It is an incremental property that is updated for a tree after each successive application of the successor operator to all the nodes of a level (defined below) of a tree. This identifier is also assigned to a set of newly generated nodes from the level. The depth of the tree can change but the depth assigned to a node remains constant for the life of the tree. The root is the first node that is assigned a depth and it is d = 0. The depth of the tree is also d = 0 when the root has no successors. When the successor operator is applied to the root, and offspring are generated, the depth of the tree is d = 1 and the depth of the root’s offspring is the same. Applying the successor operator to all the root’s offspring generates the successors whose depth is at d = 2, and the depth of the tree changes to d = 2. The depths of a tree can be visualized using Illustration 2.2. First, the depth of the root node at the top row is d = 0; second, the depth of the two nodes in the middle row is d = 1; third, the depth of the six nodes on the bottom row is d = 2; last, the depth of the tree is d = 2. 28 2.2.4 Algorithm Analysis Algorithms are a technology for processing data [Cor90]. An algorithm can be seen as a black box7 that has an input and an output. The input is unprocessed data; the black box represents the computer instructions, or source code, for processing the data; the output is the processed data. Figure 2.5 below shows an example of algorithms that are represented as black boxes. In this figure, Algorithm A is an example of a computer program’s source code being referred to as an algorithm. The term algorithm is mostly applied to well-defined routines within a computer program’s source code. Examples of these routines are Algorithms B, C, D, E and F, which are housed by Algorithm A. Figure 2.5: Algorithms represented as black boxes. 2.2.4.1 Algorithm Measures Algorithms are measurable. They are tested against the following criteria: (1) correctness, (2) admissibility or optimality, (3) time-complexity, (4) space-complexity, and (5) benchmarking. Correctness is a term assigned to an algorithm. It identifies whether an algorithm yields the correct output when it processes the input data. Admissibility and optimality are terms that are used interchangeably when concerning algorithms. This property indicates if a particular 7A black box is an abstract model of a system. It emphasizes the inputs and the outputs, but it hides the inner workings of the system. 29 algorithm always finds the best solution to the problem. If it does, the computational procedure is called an admissible (or optimal) algorithm. Time-complexity is a measure that bounds the running time of an algorithm. Time-complexity is completely independent of the computer platform. Nonetheless, it does depend on the size of the input data. Space-complexity is also a bound that is independent of the computer hardware and that also depends on the size of the input data. However, where time-complexity bounds the number of computer instructions, spacecomplexity bounds the amount of memory required to store the data being processed. Benchmarking is a measurement taken on a particular computer. It depends on the size of the input data and on the computer platform, i.e. Operating System (OS), programming language, compiler, Central Processing Unit (CPU) and Random Access Memory (RAM). Benchmarking is used for measuring how an algorithm runs on particular computer. 2.2.4.2 Scalability Scalable problems, with known optimal solutions, are often used as test benches for measuring, testing, and analyzing algorithms against all the criteria described above. The scalability of these problems is in their size. Scalable problems are used to answer questions such as the following: “If an algorithm takes n seconds to solve a problem whose representation size is m bytes, can it also solve a problem with representation size q bytes? If it can solve a problem of input size q, how long will it take?” Board games and puzzles such as TSP, n-puzzle, and n-queens are examples of scalable problems that are used in Artificial Intelligence as test benches for analyzing algorithms. These games are well-defined, have known solutions, and possess a variable that can be varied to increase (or decrease) the size of the problem. With these problems completeness and admissibility can be tested by observing if an algorithm returns the known optimal solution. Time-complexity, space-complexity, and benchmarking can be performed by scaling the size of all these problems. For instance, the number of cities n in the TSP, the number of tiles in the npuzzle, and the number of queens in the n-queens can be scaled by increasing or decreasing the numerical value of. For example, the TSP problem with n = 9 cities, the n-puzzle with n = 8 30 tiles, and the n-queens with n = 8 queens were introduced. To scale these problems up, n can be increased, e.g. to n = 1000. The scalability property of games and puzzles makes them useful for estimating via empirical testing how graph-searching-algorithms perform with different sized input data. 2.2.4.3 Complete Algorithms An algorithm is complete if it produces the correct solution. Concerning graph-searchingalgorithms, completeness is the ability that an algorithm possesses for generating and reaching the goal state in a graph. In search-graphs that do not have infinite-breadth or infinite-depth, complete algorithms always find a path even if it is not the path with the smallest cost. This means that when the goal node is reachable from several different paths, one of these paths is guaranteed to be returned as the solution but that there is no guarantee that the minimum-costpath will be returned. 2.2.4.4 Admissible Algorithms An admissible graph-searching-algorithm always returns the minimum-cost-path, even when dealing with graphs that have many paths that link the initial state to the goal state. Admissible graph-searching-algorithms only exist for graphs whose arc and edge costs are greater than 0. There are no admissible graph-searching-algorithms for graphs that have cycles and arcs values that are less than or equal to 0. The reason is that successive summing of the arcvalues by the graph-searching-algorithm always leads to the generation of a path with a smaller path-cost until eventually, the path-cost ends up being -∞. Hence admissible algorithms only exist for graphs whose arc costs are greater than 0. 2.2.4.5 Optimal Solutions In the AI community, the terms minimum-cost-path and shortest-path are often used interchangeably. However, it is important to recognize when these expressions have different meanings. The shortest-path is the sequence with the least number of nodes that links the initial state to the goal state. The minimum-cost-path is the sequence with the smallest path-cost value 31 which results from summing all the arc values in the path that links the initial state to the goal state. The optimal solution is not the shortest-path when it is not the minimum-cost-path. This type of shortest-path occurs in graphs that have arc-cost values that vary and that are greater than 0. In this situation a path with 5 nodes can have a path cost of 1,000, e.g. one instance is when the four edges that connect the five nodes have the following arc-costs: {1, 2, 497, 500}. Additionally, a path with 1,000 nodes can have a path cost of 5, e.g. a path with 999 arcs with arc-costs such as {0.005, 0.09, 0.15, … , 0.05}. In the latter case, some of the arcs have cost values much greater than the latter case. The shortest-path is always the minimum-cost-path when all the arcs of the graph have the same cost value and it is greater than 0. This can be explained with an example of a graph whose arcs all have the same cost. For simplicity, let the arc costs be equal to 1. In this graph, all paths with 5 nodes have path cost equal to 4, which is the number of arc steps that were taken to get from the initial node to the goal node. Hence, the shortest-paths of graphs that have uniform arc-costs that are greater than 0 are always minimum-cost-paths and therefore, optimal solutions. 2.2.4.3 Asymptotic Analysis Order-of-growth [Cor90] functions g(n) are used to specify the time or space that is used by algorithms for any value of n. This means that the analysis begins with very small n, e.g. n = 1, and continues all the way to very large n, e.g. n = ∞. If the order-of-growth function g(n) of an algorithm is not known, asymptotic analysis must be performed to obtain it. No computer platform knowledge is required to perform asymptotic analysis since asymptotic analysis is independent of any computer platform. However, the number of instructions (or lines of code) that the algorithm uses to process input data of size n for all values of n must be known and this value must be expressed as a function f(n) where n is the size of the algorithm’s input. This function f(n) is used to obtain the growth-function g(n). This is accomplished by dropping all terms on f(n) that are made negligible as n gets very large. Only the terms that are not made negligible as n gets very large are used to create the growth-function g(n). For example, if the 32 polynomial f(n) = n3 + n2 is the number of instruction used by the algorithm to process an input of size n, the algorithm’s growth function is g(n) = n3 because the n2 term is dropped since it becomes orders of magnitude smaller as n gets very large; hence n2 becomes negligible. Order-of-growth functions g(n) are used in asymptotic notation [Cor90] as the arguments to the O, Ω, and Θ operators. These operators are used in asymptotic analysis to communicate how the time and space used by the algorithm are affected as the size of the input data n increases. The use of these operators is referred to as O-notation, Ω-notation, and Θ-notation, and their respective purpose is as follows: (1) O( g(n) ) describes the maximum (time or space) in terms of the grown-function g(n) that an algorithm can use for any value of the input size n; it is useful for specifying the worst-case scenario conditions; (2) Ω( g(n) ) specifies the minimum (time or space) in terms of the growth-function g(n) that an algorithm must use to process an input of size n; Ω( g(n) ) is useful for identifying the minimum resources required to successfully run the algorithm; (3) Θ( g(n) ) is useful for specifying both the minimum and the maximum (time or space) in terms of the growth function g(n) required to process the input of size n. Figure 2.6 below provides some general examples of how O-notation, Ω-notation, and Θnotation are used to create upper bounds, lower bounds, and both upper and lower bounds, respectively for the growth function g(n) = log(n). 33 Figure 2.6: (a) O( g(n) ); (b) Ω( g(n) ); (c) Θ( g(n) ). 2.2.4.4 Time-Complexity Running-time is the number of primitive steps used on a particular computer to run an algorithm. In the case of graph searching algorithms; the running time depend on the input and output of the successor operator and on the number of nodes that the successor operator generates while creating a solution [Rus03]. Running times are computed by using the following properties of graph-searching-algorithms: (1) the maximum number of successors from a node; (2) the maximum length of a path; (3) the maximum depth of the search-tree. Running times are expressed in terms of growth-functions. Each of these functions represents the number of successors that were generated to obtain a solution in terms of the input size n, which can vary. 34 This value allows different algorithms to be compared to each other independently of the platform in which they will be used. 2.2.4.5 Space-Complexity Computer memory is a space-complexity issue. Search methods that deal with implicit state-spaces have the tendency to exhaust memory before finding the solution. The reason is that the nodes that are generated during the search are stored in the system’s memory. Some graphsearching-algorithms keep all these nodes for the duration of the search; other graph-searchingalgorithms are more efficient, they remove from memory the nodes that are no longer required. These algorithms have less of a tendency to exhaust memory, which can be seen by analyzing their space complexity, which does not depend on all the successors that were generated during the search. As with the time-complexity, the space-complexity depends on the input and output of the successor operator and on the number of nodes that are generated to obtain a solution [Rus03]. Graph-searching-algorithms generally depend on two properties of the search tree: (1) the breadth b, which is the maximum number of successors from any node in the search-tree, and (2) the depth d, which is maximum number of ancestors that any node can have within the search-tree. Therefore, larger state-spaces tend to generate more nodes than smaller state-spaces to obtain a solution. So the size of the state-space must be minimized as much as possible without affecting the quality of the solution, in order to prevent nodes that can be considered redundant from being generated. 2.2.4.6 Benchmarking If scalable, complete, and optimal algorithms are being compared for selection in a realtime system, two other properties of the algorithms must be examined: they are the time and space used by the algorithm to generate a solution. Concerning time, if a solution is not produced within the provided time slot, the solution might be useless when it arrives to module in which it is to be used. Concerning space, if the algorithm uses up all the memory in the computer, 35 chances are that the computer will begin paging or that it will malfunction, which means that the solution will take longer to be obtained; in the case or memory paging, the algorithm will run much slower during all the processing; in the case of hardware malfunction, the system could experience down time,. In both cases, the result is that a solution is not obtained in real-time. Introducing these undesirable characteristics into a real-time system that is undergoing development can be avoided by selecting the algorithm that best balances the use of space and time—while solving the problem for which the system is being developed of course. For example, the candidate algorithms must first be scalable, complete, and optimal to an extent determined by the problem’s domain. Next, the growth functions of these algorithms are compared against each other to eliminate the algorithms that are least likely to provide a solution. Finally, the time and space growth functions of the remaining algorithm are compared and the algorithm that has the best chances or returning a real-time solution is selected. The algorithm that gets selected algorithm must have a time and space growth functions that indicate that this algorithm outperforms the others when they are run on the same platform to solve the problem for which the system is being developed. Although the algorithms can be selected by comparing the growth functions of the time and space complexities, the platform in which the selected algorithm will provide a real-time solution is not known. Benchmarking is a tool that is used to estimate the performance of an algorithm on a particular computer. This analysis tool is generally used to test how much or what percent of time and memory are used on a particular computer platform for an algorithm to find a solution. Benchmarking gauges how a particular algorithm balances the computer’s physical resources such as memory and processing capabilities that are used to generate a solution. After a candidate algorithm is selected, the next task in developing the real-time system is to estimate the optimal computer for the algorithm to run on. Estimating the optimal computer means to identify the platform that provides only the required memory and processing power that is necessary to obtain a solution. These hardware estimates can be obtained by performing timing and memory tests by using the algorithm on the desired hardware to solve problems that have the 36 expected size of the input. This can be done using the process of elimination on computer platforms. For instance, assume a situation where the goal is to minimize monetary cost, and the desired response time is one second, and the following four computer platforms are available: (1) personal computer, (2) high-end computer, (3) super-computer, and (4) cluster of m computers. Benchmarking can begin with the personal computer and if it solves the problem in less than one second, a cost effective solution has been obtained. However, if it takes the personal computer more than a second to obtain a solution, or if it exhausts the memory during the process, one of the three following actions should be performed: (1) select a different algorithm to benchmark on the personal computer, (2) benchmark the existing algorithm on a different computer platform, or (3) use a benchmarking tool to estimate the required resources necessary to run the algorithm. Having done time and space complexity analysis eliminates option (1). Nonetheless, options (2) and (3) both point to the same problem: it is that the algorithm requires more resources than those of the personal computer. Hence Option (2) would require further benchmarking to be performed by using the other platforms to solve the problem. Option (3) is used if a computer platform baseline is not identified; in this case, a commercially-off-the-shelf benchmarking tool can be used to estimate or identify the minimum time and memory required by each computer platform to obtain a solution from the algorithm. 2.2.5 Intelligence in Search: Human vs. Artificial Illustration 2.2 above depicts a partial search-graph that was generated by a graph- searching-algorithm for solving the 8-puzzle. The search uses the problem-description on Section 2.2.2.1, the configuration on Figure 2.4 as the initial state, and the configuration on Figure 2.1 as the goal state. Also, as evident from the absence of the goal state on the search-graph, no solution or path was found. However, no mention is given to the type of graph-searching-algorithm that performed this search-graph. Before discussing such algorithms, an important question needs to be considered. That question is: “Why are graph-searching-algorithms from AI beneficial for solving the 8-puzzle, the 8-queens, and other problems like them?” 37 First of all, consider the 8-puzzle problem just described. The first movement for transforming the tile arrangement on Figure 2.4 to the tile arrangement on Figure 2.1 is not evident or intuitive in human intelligence or for artificial intelligence algorithms. Nonetheless, from Figure 2.4, and from the 8-puzzle problem description, it is evident that from the state on Figure 2.4, only two state transitions can result. The same choice of state transitions is available to the human and to a well-defined AI algorithm. Hence, both humans and AI theories can and do solve this problem in the same manner—by trial-and-error. This approach is necessary for both human and artificial intelligence when the set of successive state transformations that link the initial state to the goal state are not known. Another method that is widely used by human and artificial intelligence is the use of heuristics. The 8-puzzle is one example that demonstrates that human intelligence uses heuristics (i.e. prior knowledge) to solve problems. For instance, consider the 8-puzzle that uses the random configurations of the tiles as the initial state and the configuration on Figure 2.1 as the desired state. The tile order on Figure 2.1 provides a heuristic that is easily recognized by humans. It is that the order of the tiles for the solution are arranged in ascending order from left to right and from top to bottom. To solve this problem a human would use hybrid of this heuristic combined with the use of trial-and-error to form a method that obtains a solution8. In human and in artificial intelligence, the use of heuristics is done to speed up the time to obtain a solution. For example, one benefit to human intelligence that arises from the heuristic implied by the tile configuration on Figure 2.1 is that a reference that contains the desired state is not needed since it can easily be thought up. This heuristic speeds up the time for a human to obtain a solution, since the overhead associated with referencing the desired state is not there. On the other hand, if the desired state is the one on Figure 2.4, the tile configuration does not have a pattern known to most humans. Also, a human that cannot memorize this tile order will not have a heuristic and will need a reference of the desired state. AI has algorithms that use heuristics to perform the search for a solution. As is the case for human intelligence, AI algorithms also use 8The A* algorithm, which is main element in this study, implements this approach formally. 38 heuristics to shorten the time to obtain a solution for a problem. (An example of an AI algorithm using a heuristic is the A* algorithm using the Euclidean distance to expand only the nodes between, and in the proximity of, the start state and the destination state.) Human intelligence and AI algorithms both solve problems using a hybrid system composed of trial-error guided by heuristics. However, since AI methods are implemented with a computer, they are faster and less prone to error when the problem is large albeit the problem must be well defined. However, when AI algorithms are not provided with all the required information, human intelligence is faster and more likely to yield a solution. Nevertheless, the efficiency of AI algorithms for SSS problems, such as problems like the 8-puzzle, supersedes that of human intelligence in that AI algorithms can quickly obtain solutions for all possible configurations with any configuration acting as either the initial of the goal state. For example, AI algorithms are much more efficient for solving the 8-puzzle with any configuration acting as the start or as the goal state. AI algorithms are applicable to a large range of problems that can be represented as states. They are particularly useful for problems that have very large state-spaces. This can be illustrated by considering the 8-puzzle configuration on Figure 2.4 and using it as the initial state. From here, only two state-transitions are available. Very little thought and time is required to commence the trial-and-error search for a human or a computer. Now, consider solving the 8queens problem using the configuration on Figure 2.3 as the initial state and the problem description that is provided on Section 2.2.2.2. For a human who is unfamiliar with the solution, the first action is not evident. Neither is it for AI algorithms, however, the computer can go through the trial-and-error faster than a human. And different from the 8-puzzle configuration that only has two state-transitions initially, the number of state-transitions available from the 8queens problem is combinatorial from the start. Hence, because AI algorithms use a computer to perform SSS, the throughput is larger when using AI for solving problems that can be represented as states. Therefore, the effort associated in implementing AI algorithm for solving such problems is justified. 39 2.2.6 A* Algorithm The A* algorithm commences a SSS by converting the initial state to a node. This task is referred to as node-generation. The algorithm continues the SSS by applying the successor operator Γ to this newly generated node. If this procedure results in newly generated child nodes, the parent node is called the root of the search tree, and the procedure itself is referred to as node-expansion. All nodes that are generated but that do not produce other nodes, whether an attempt to expand them is made or not, are called the leaves of the search-tree. The nodes that are generated and expanded to produce other nodes become ancestor or parent nodes on the searchtree. SSS is a procedure that performs node-expansions until a path is found. If no path can be found and no further node-expansions can be performed, the search is terminated without having found a solution. Two things are used to classify graph-searching-algorithms: (1) the node expansion order; (2) the use or nonuse of heuristic information. Algorithms that expand nodes in a fixed order and that do not use heuristic information are classified as blind search or as uninformed search strategies. The Depth-First-Search (DFS) and the Breadth-First-Search (BFS) algorithms are two examples of blind search algorithms. These algorithms have the drawback of expanding nodes that are not in the solution path. Algorithms that use heuristic information tend to expand only the nodes that are in the solution path. These algorithms are referred to as heuristic search or informed search strategies. They are also categorized as Best First Search (BFS) strategies [Rus03]. BFS algorithms are distinguished from each other by their evaluation function. The A* algorithm is categorized as a BFS algorithm. Because uninformed search algorithms have the tendency to generate and expand nodes that are nowhere near a solution path, informed search algorithms are generally superior to uninformed algorithms. 2.2.6.1 Evaluation Function The A* algorithm uses an evaluation function f(ni) that is the sum of two other functions: cost g(ni) and heuristic h(ni). These three functions are all a functions of the node ni that is 40 currently being generated. Equation 2.4 below is the evaluation function used by the A* algorithm. f ( ni ) = g ( ni ) + h ( ni ) (2.4) where f(ni) is the evaluation function; and g(ni) is the cost function; and h(ni) is the heuristic function; and ni is the ith node that is generated The values fi returned by the evaluation function f(ni) are used for assigning nodes a priority value for upcoming node expansions. Equation 2.5 below describes the evaluation function value fi and its relationship to the evaluation function f(ni) and the associated node ni at which it was computed. f i = f ( ni ) (2.5) where fi f(ni) ni is evaluation function value for the ith node; and is the evaluation function; and is the ith node The A* algorithm uses the cost function g(ni) to compute the cost g(ns, ni) for getting from the start node ns to the current node ni. The cost g(ns, ni) is one of the criteria that is required for generating paths that are optimal solutions. Additionally, since the optimal solutions are minimal cost paths, the arc-cost carc must be greater than zero (i.e. carc > 0). Equation 2.6 41 below shows the relationships between the cost function g(ni), the cost g(ns, ni), the arc-cost carc, the start node ns, and the current node ni. j =i g ( ni ) = g1 ( ns , ni ) = ∑ carc j =1 (2.6) where ni is the ith node that is generated and also the current node; and ns is the first node that is generated and also the start node; and g(ni) is the cost function; and g(ns, ni) is the total cost for getting from the start node to the current node; and carc is the arc-cost incurred by transitioning from one node to another node. Heuristic data is information from the problem domain. The A* algorithm uses heuristic data mathematically in the form of a heuristic function h(ni). It is used to obtain an estimate of the effort to get from current node ni to the goal node ng. This speeds up the search by influencing the node-expansion order and by limiting expansions to only the nodes that seem to be in the solution path. Equation 2.7 below is the heuristic function h(ni) that is used by the A* algorithm. h ( ni ) = h1 ( ni , ng ) (2.7) where ni is the ith node that is generated and also the current node; and ng is the one of the last nodes that are generated and also the goal node; and h(ni) is the heuristic function; and h1(ni, ns) is an estimate for getting from the current node to the goal node 42 2.2.6.2 The Heuristic Function’s Admissibility The A* algorithm does not guarantee optimal solutions when using heuristic functions that are not admissible. On the other hand, if the heuristic function h(ni) is admissible, it becomes the second criteria that is used to generate an optimal solution (the values assigned as arc-costs is the first criteria). The estimate h1(ni, ng) returned by a heuristic function is the property that determines a heuristic function’s admissibility. Admissible heuristic functions return an estimate h1(ni, ng) that is equal to or less than the effort required to get from the current node ni to the goal node ng. Since heuristic functions are rarely exact, they mostly return measures that under-estimate the effort. This means that admissible heuristic functions tend to be optimistic. Furthermore, admissible heuristic functions never return an estimate that is greater than the required effort for getting from the current node ni to the goal node ng. That is, they never over-estimate the effort. This means that admissible heuristic functions are never pessimistic [Rus03]. An admissible heuristic functions that is commonly used in SSS distance and routing problems is the two-dimensional Euclidean distance. Two facts about the two-dimensional Euclidean distance establish why it is admissible. First, computing the two dimensional Euclidean distance between two points returns the straight-line distance between those points. Second, the shortest distance between two points is a straight-line. Therefore, the Euclidean distance never over-estimates the travel distance for getting to a goal location from a current location because it returns the exact distance. Hence it is an admissible heuristic function. Equation 2.8 below is the two-dimensional Euclidean distance in terms of an initial and a goal node where both nodes represent distinct locations on an x-y plane. d Euc ( ni , ng ) = (x − xi ) + ( yg − yi ) , 2 g ni = n ( x, y )i , 2 (2.8) ng = n ( x , y ) g 43 where dEuc(ni, ng) is the Euclidean distance as a function of the current and the goal node; and ni is the current node; and n(x,y)i ni is the current node, which represents the (x,y)i coordinate; and is the goal node; and n(x,y)g is the goal node, which represents the (x,y)g coordinate 2.2.6.3 The OPEN and CLOSED lists The A* algorithm uses two lists to account for all the nodes that get generated and expanded during the search. These lists are named OPEN and CLOSED. The OPEN list is a prioritized list of nodes that are arranged according to the evaluation function values fi that each node is assigned. These two lists also enforce for the entire duration of the search that only one node is generated to represent each distinct state from the state-space. Consequently, each node that is generated is always on either the OPEN list or the CLOSED list. In these lists, each node is assigned a record and each record contains two fields: (1) the evaluation function value fi = f(ni) at which node expansions are to occur or have occurred, and (2) the associated node ni (See Table 2.1 below). Table 2.1: Format of OPEN (and CLOSED) lists. Name Symbol Evaluation function value fi Description The smallest evaluation function fi value for the node ni . Node that is to undergo (or A node associated with a state on the problem ni has undergone) expansion domain. 44 All nodes that are generated get placed on the OPEN list in ascending order of their corresponding evaluation function value fi. That is, they are arranged so that the nodes with the smaller evaluation function values fi are at the top of the OPEN list. The A* algorithm always expands the node at the top of the OPEN list, which always has the smallest evaluation function values fi-min. The nodes on the OPEN list are the only nodes that are allowed to undergo node expansions. After a node undergoes expansion, it gets placed on the CLOSED list; nodes on the CLOSED list are restricted from undergoing further node expansions. To undergo further node expansions, these nodes must be moved back to the OPEN list. In general, node expansions generate several other nodes. To determine their place on the OPEN list, the evaluation function value fi is always computed for each of the newly generated nodes. If one of these newly generated nodes is on the CLOSED list, the node gets discarded unless the newly computed evaluation function value fi is smaller than the existing value. When the newly computed evaluation function value fi is smaller than the existing value, the node is returned to the OPEN list and the evaluation function value fi gets updated with the most recently computed value. In addition, the node’s previous path gets replaced with the most recently generated path. That is, the path that led to that node’s generation and expansion, which resulted in the node being placed on the CLOSED list, gets discarded and the path which generates the node with the smaller evaluation function value fi is used in its place. 2.2.6.4 Time and Space Complexity of the A* Algorithms The A* algorithm is complete; it is guaranteed to find a solution if one exists. It is optimal when an admissible heuristic function is used; it returns the path with minimum cost if the heuristic function never overestimates the goal node while expanding the fewest nodes than any other search algorithm while generating the solution [Rus03]. However, the A* algorithm’s time and space complexities are exponential when the error in the heuristic function is greater than the logarithm of the actual cost. Russell and Norvig [Rus03] use the following equation to describe this bound: 45 ( h ( n ) − h* ( n ) ≤ O log ( h* ( n ) ) ) (2.9) where n is the current node; and h(n) is the heuristic function; and h*(n) is the actual cost for getting from the current node to the goal node. The use of a non-admissible heuristic function might yield a more accurate solution at the risk of getting exponential growth from the algorithm. On the other hand, sub-optimal solutions can be obtained by the A* algorithm if an admissible heuristic function is used. Therefore, the time and space can be bounded if an admissible heuristic function is used. Since the A* algorithm is complete, optimal, and can be bounded in both time and space, its implementation seems computationally feasible. For these reasons, it is to be implemented as the route finding and obstacle avoidance module of real-time UAV guidance system that is to be developed as part of this study. The resulting guidance system is to undergo benchmarking to estimate the required computational platform. To prevent exponential growth of the algorithm, which would result in exhausting the computer’s memory, the Euclidean distance is used as the heuristic function since it is known to be an admissible heuristic function. This should eliminate the possibility of adding memory problems by prematurely using an experimental heuristic function. Moreover, the benchmarking on the guidance system should provide statistics of how, when, and under what conditions the A* algorithm exhausts the computer’s memory. Removing the variables added by using a non-admissible heuristic function, does not guarantee real-time performance. The goal of this study is not to find the limitations of the A* algorithm, but to use the theory and technology in a real-world application. Hence, if the A* algorithm cannot perform in real-time or if it exhaust the allotted memory of the target computational platform, an analysis 46 will need to be performed to determine if it is more efficient to follow the project through by performing one of the following tasks: • If the targets platform suffers from insufficient memory, modify or replaced the A* algorithm with one of its variants (e.g. memory-bounded A* (MA*), Simplified MA* (SMA*), Iterative-deepening A* (IDA*) ) • If the guidance system cannot perform in real-time, use a precision benchmarking tool to determine the required resources to run the guidance system • benchmark the system using different computer platforms 47 Chapter 3: Design, Implementation, & Integration A needs analysis was conducted prior to beginning any technological work on the project. From this needs analysis, it was determined that this project’s mission would be to implement a computer program that uses terrain elevation data to intelligently generate safe UAV flight trajectories. Also, from this needs analysis, the key goals of this project were to reduce dependence on UAV controllers during missions, to allow real-time generation of flight-patterns, and to update the current flight-pattern altering and generation process. This needs analysis resulted in a computer program that runs on a high end computer that is linked to the DFCS realtime computer network. This guidance system was conceptualized after the needs analysis and the research phases had been completed, but prior to the commencement of the design and development phases. Between these phases was an intermediate phase—the product specifications phase. This phase yielded the conceptual product whose specifications are listed in Table 3.1 below. Table 3.1: Product Specifications. Specification Description No. The computer program will be compatible with the personal computer 1 platform. 2 The operating system will be Windows XP™. 3 The graph search algorithm will be A* or one of its variations. The A* heuristic function will be the two-dimensional Euclidean distance 4 formula. The WSMR terrain will be obtained from the available elevation database 5 (DTED level-2 with 30 meter resolution). 6 The computer program will be provided will the elevation data of the WSMR 48 terrain. The computer program will be capable of autonomously finding and 7 producing flight-patterns over variable elevation terrain. 8 The computer program will output fully compatible DFCS flight-patterns. This computer program’s capabilities will be completely useable for airborne 9 UAV in real-time, that is, during DFCS missions. The computer program will have a GUI that allows an operator to specify the 10 desired flight-pattern’s start and destination locations. The computer program, and its GUI, will be capable of accepting flight 11 profile parameters. The computer program’s GUI will be able to display the digital terrain 12 elevation data. The computer program’s GUI will be able to display the DFCS flight13 patterns that are generated by this computer program. The computer program that resulted from these specifications is the RTPP; its architecture is divided into two parts that are named alpha prototype and beta prototype. The alpha prototype is the last software version (i.e. last computer program) that used the A* path as the UAV guidance solution. The beta prototype is the latest software version of the RTPP used in this study; it outputs flight-patterns as the flight guidance solution. The alpha prototype architecture is a subset of the beta prototype architecture. These software architectures are treated as if they were distinct to make their explanations clearer. 3.1 METHODOLOGY 3.1.1 Planning The developmental planning was done using the spiral process [Boe88]; this software production model did produce the benefits it claims such as improved developmental efficiency 49 and software quality as well as user-needs accuracy. It kept the software tasks on track by scheduling user requirements and product specifications reviews throughout the development process. All the programming tasks that were scheduled in the spiral were implemented using only Object Oriented Programming (OOP) [Dei01] techniques. Table 3.2 summarizes this software development methodology. Table 3.2: Development Methods. Methods Spiral model Object oriented programming 3.1.2 Development Overview Microsoft products, tools and technologies were used to develop most of the project (e.g. Windows XP, MFC, Visual C++.NET). Silicon Graphics OpenGL™ [Woo97] was used to render the graphics to the GD object in place of the Microsoft graphics library (Microsoft Graphics Device Interface (GDI)). The source code was written with Win32™ Applications Programming Interface (API) functions (i.e. Windows XP-specific C programming language commands); OpenGL functions, and standard C++. The RTPP was programmed in standard C++ as classes [Dei01]. Not all objects were created with these classes. The Microsoft Foundation Classes (MFC™) [Kru98] library, which comes with the Microsoft Visual C++.NET™ [Vis03] compiler, was used to setup the graphics display and create the RTPP Graphical User Interface (GUI) and its components. The MFC-OpenGL rendering setup was implemented by overwriting the MFC CView base class as recommended by Rogerson [Rog95]. The RTPP View class renders OpenGL, instead of Windows GDI, and it possesses all the functionality of the MFC CView base class. Furthermore, the entire GUI was created automatically with the compiler (i.e. Microsoft Visual C++.NET [Vis03]). The steps that were used to create the GUI with this tool 50 are as follows: (1) use the compiler’s menu to create a New Project, (2) on the dialog box that appears select the MFC Application option; (3) then specify the properties of the desired GUI from the options lists on the dialog boxes that follow (A complete description and explanation of Microsoft Windows MFC programming is provided in Kruglinski’s book [Kru98]). This procedure yielded the framework setup of the RTPP as a Single Document Interface (SDI) MFC Application. The development products, tools and technologies (e.g. operating system, compiler, programming interfaces, etc.) are summarized below in Table 3.3. Table 3.3: Tools and Technologies. Tools Microsoft Windows XP Microsoft Visual C++ compiler Microsoft Foundation Classes Win32 API Standard C++ OpenGL 3.1.3 Target Platform Table 3.4 lists the specifications of a high end computer that was created to estimate the required platform for testing the real-time performance of the RTPP. The main question at the start of the development effort, which turned out to be a minor issue, was what real-time operating platform with regard to computer hardware and software was required to run the A* algorithm. This question was answered during the waypoint implementation phase of the RTPP alpha prototype development. The outcome obtained from benchmarking the A* algorithm on the high end computer (whose hardware platform is specified in Table 3.4) is that A* algorithm, when called from RTPP alpha prototype, can perform real-time. This conclusion was obtained 51 from having observed that A* paths (that contain numerous changes in direction—too many and too frequent to be realistic flight trajectories—and that span over 100 miles) were returned from the fledgling RTPP alpha prototype in less than 1 second. This conclusion is supported by further empirical testing in which similar performance was exhibited when using computers equipped with as little as half the resources of this computer. Table 3.4: RTPP Computer Core Architecture Specifications. Product Description Model No. ASUS P5B LGA 775 Intel P965 Express Motherboard P5B ATX Intel Intel Pentium D 950 Presler 3.4 GHz LGA Microprocessor BX80553950 775 Processor Corsair XMS2 2GB (2x1GB) 240-Pin Random Access TWIN2X2048DDR2 SDRAM DDR2 800 (PC2 6400) Memory 6400PRO Dual Channel Kit Desktop Memory Western Digital Raptor 74 GB 10,000 Hard Drive WD740ADFD RPM Serial ATA150 - OEM 3.2 RTPP ALPHA PROTOTYPE This section discusses the six key modules of the RTPP alpha prototype; they are the following: (1) the Terrain Map File Processing (TMFP) object, (2) the Dynamic Array (DA) object, (3) the A* Algorithm (ASA) object, (4) the Graphics Display (GD) object, (5) the Dialog Box (DB) object, and the (6) the Graphical User Interface (GUI) object. These modules are listed in Table 3.5 below and their functional details are explained after a brief overview of the developmental methods and tools. Table 3.5: RTPP Alpha Prototype Modules. 52 No. Object/Module Acronym 1 Terrain Map File Processing TMFP 2 Dynamic Array DA 3 A* Algorithm ASA 4 Graphics Display GD 5 Dialog Box DB 6 Graphical User Interface GUI The GUI objects activate the other objects from Table 3.5—the internal ones which are not visible on the GUI (such as the terrain-map file processing object, the dynamic array object, and the A* algorithm object). The objects from Table 3.5 and their relationships to other components are shown in Illustration 3.1 below. This illustration depicts these modules9 in block diagram from, and it displays the components of each module. Arrows indicate the passing of data between modules. 9The words object and module are used interchangeably in this section. 53 Illustration 3.1: RTPP alpha prototype architectural diagram. 3.2.1 GUI Object The interface between the RTPP alpha prototype and an operator is a Windows XP graphical user interface (GUI). Figure 3.1 below shows an operator using the GUI object which is running on the high end computer whose specifications are listed in Table 3.4. 54 Figure 3.1: Operator using RTPP alpha prototype GUI. The GUI object contains a menu, a toolbar and a graphics display from which the operator can issue commands via the keyboard and/or mouse. For instance, the operator can bring up dialog box (DB) objects (such as for selecting a terrain elevation map file) with the GUI menu or toolbar, and for the case of the graphics display, the operator can enter data (such as the location of the virtual UAV) by clicking on the graphics display with the mouse. The GUI object, the GD object, and the DB object are depicted on Figure 3.2 below. 55 Figure 3.2: RTPP alpha prototype GUI object. Table 3.6 below summarizes the tasks that can be executed from the GUI object. Tasks 1 and 2 are used for loading the RTPP with data; they rely on DB objects and on the TMFP object. Tasks 3, 4, and 5 use the GD object for rendering terrain elevation maps and the A* path. Task 6 counts the number of nodes that are generated by the ASA object. Tasks 7 and 8 use DB objects to obtain the constraints that will be imposed on the resulting A* path. Task 9 uses either DB objects or the toolbar on the GUI object to select the initial and final locations of the virtual UAV. Task 10 uses the toolbar on the GUI object to activate a path search with the ASA object. Table 3.6: GUI Object Tasks. 56 Task No. Description 1 Set the type of dialog box object to be called. 2 Bring up a dialog box object. 5 Enable or disable features of the graphics display. 6 Activate or deactivate the generated-nodes counter. 7 Provide a dialog box for the user to input the virtual UAV flight altitude. Provide a dialog box for the user to input the minimum Above Ground Level 8 (AGL) distance that will be allowed between the virtual UAV and the terrain directly underneath it. Provide a dialog box for the user to input the initial or the final location for the 9 desired route. 10 3.2.2 Activate the A* algorithm. Graphics Display Object The Graphics Display (GD) object, as can be seen on Figure 3.2, is the area enclosed by the GUI frame. It is rendering a solid black scene. The GD object has several purposes. One is to render the virtual terrain. Another is to provide a user-friendly interface to RTPP operators. And yet another is to provide the display area as a screen-world that represents the real-world; this is for selecting10 the virtual UAV initial and final positions quickly, easily and without error. The accuracy of the rendered or selected data on/from the GD object is vital to obtaining a valid solution from the RTPP. The GD object’s tasks are described on Table 3.7 below as tasks performed on the GD object. Table 3.7: Graphics Display Object Tasks. Task No. 10Mouse Task Description clicks are used for selecting the virtual UAV initial and final positions. 57 1 View Natural Map Display the terrain map in natural views. 2 View Contour Map Display the terrain map in contour view. 3 View Grid Display the grid. 4 Zoom In/Out Increases/Decreases the display’s level of detail. Shift the displayed map left, right, up, or 5 Pan Terrain Map down. Display borders assigned to an area of the 6 View Borders terrain map. Recognize mouse clicks as inputs that set 7 Select Start/Destination Location the route’s initial and final locations. Transform screen environment to Convert screen coordinates (sx, sy) to real-world environment real-world ENU (x, y) coordinates. 8 Use input ENU (x, y) coordinates to Snaps input ENU (x, y) obtain the quantized value of the map 9 coordinates to quantized ENU (x, partition that was clicked, whose value is y) coordinates recorded on the terrain map file. 10 View Path Displays the A* path. 11 Toggle Contour Map View Alternate between terrain map views. Toggles rendering of selected objects: Inhibit/Enable Rendering of 12 applicable to terrain map, borders, A* Selected Graphics Objects paths, and grid. Tasks (1) and (2) from Table 3.7 are to render the terrain map in natural view and in contour view, respectively. Task (11) is to toggle the GD object between the two views. Figure 3.3 below contains snapshots of these two map views. The natural terrain view is on the left side 58 and the high contrast color contour view is on the right side. The natural view allows a user to identify higher elevation terrain without the use of a legend. Higher terrain elevations are rendered as a darker shade of brown, and lower terrain elevations are rendered as a bright shade of yellow. The high contrast color map renders the elevations by value. This allows an operator to easily identify the contours that separate terrain elevations. A legend is required for identifying which color corresponds to a particular range of terrain elevation. Table 3.8 is the legend for the RTPP contour map. 59 Figure 3.3: RTPP alpha prototype display modes—natural and contour. Table 3.8: Contour Map View Legend. Level Terrain Elevation (ft MSL) Color 0 Larger than 10,000 Orange 1 Between 9,500 and 10,0000 Red 60 2 Between 9,000 and 9,500 Light red 3 Between 8,500 and 9,000 Light pink 4 Between 8,000 and 8,500 Dark pink 5 Between 7,500 and 8,000 Light purple 6 Between 7,000 and 7,500 Dark purple 7 Between 6,500 and 7,000 Light blue 8 Between 6,000 and 6,500 Dark blue 9 Between 5,500 and 6,000 Light cyan 10 Between 5,000 and 5,500 Dark cyan 11 Between 4,500 and 5,000 Light green 12 Between 4,000 and 4,500 Dark green 13 Between 3,500 and 4,000 Yellow 14 Between 3,000 and 3,500 Yellow 15 Between 2,500 and 3,000 White 16 Between 2,000 and 2,500 White 17 Less than 2,000 White The map on the left side of Figure 3.3 is an example of the default view for a newly loaded terrain map. By default, the RTPP renders the entire terrain map to the GD object. Tasks (3), (4), and (5) can be used to eliminate the ambiguities resulting from not knowing where the terrain-map-partitions begin and end or the exact elevation value assigned to a map partition. Task (3) displays a grid that identifies where terrain-map-partitions begin and end; Task (4) is the zoom-in feature which varies the level of detail of terrain maps on the GD object. Task (5) is the pan feature; it shifts the terrain map up, down, left, or right. Tasks (3), (4), and (5) simplify the procedure of selecting the route’s start and destination locations. Figure 3.4 below shows 61 how Tasks (3), (4), and (5) from Table 3.7 were be used to vary the level of detail of the terrain maps on the left side of Figure 3.3. Figure 3.4: GD object zoom-in view of a terrain map. Task (6) is to display the borders of the available airspace to the GD object. These borders are provided as ordered locations within a file. Task (7) allows an operator to select one of the pixels on the screen-world by clicking the mouse on it. This pixel represents either the start or the destination location of the desired route. The value that goes into the RTPP is a screen-coordinate and it gets converted to the DFCS ENU real-world coordinates system by using Equations 3.1 and 3.2 below [Hil01]. sw = sxmax − sxmin + 1 where 62 (3.1) sw is the screen (or GD) width in pixels; and sxmax is the maximum x value on the screen (or GD) in pixels; and sxmin is the minimum x value on the screen (or GD) in pixels sh = symax − symin + 1 (3.2) where sh is the screen (or GD) width in pixels; and symax is the maximum y value on the screen (or GD) in pixels; and symin is the minimum y value on the screen (or GD) in pixels Task (8) is to encapsulate and hide all the mathematical details associated with the transformations between the screen-world and the ENU world since terrain maps are presented to human operators in screen-world coordinates (which have units of pixels). The screen-world coordinate system is a Cartesian coordinate system whose origin has values of zero, and its x and y axes are perpendicular to each other. The GD object uses only two dimensions of this screenworld to display the x-y plane of the DFCS ENU coordinate system. The origin of the screenworld is at the GD object’s top left corner, as depicted on Illustration 3.2. 63 Illustration 3.2: Screen world (GD object) coordinate system. Illustration 3.2 displays the locations of sxmin and symin (which make up the origin of the screen-world). The x-axis flows out from this corner into the right direction, and the y-axis flows down toward the bottom of the screen. Both of these axes have positive values only, and their values are discrete with units of pixels; the separation between each value is 1 pixel. As evident, this coordinate system has its limits at the end of the GD object. That is, using pixels as the units: the maximum x-value is the GD object’s width less 1 pixel, and the maximum y-value is the GD object’s height less 1 pixel. Table 3.9 below describes the screen-world’s coordinate system. Table 3.9: Screen World (GD Object) Coordinate System. Axis Name Maximum Value on Axis Maximum value on axis (Screen width -1, pixels) is the number of pixels on +x any row of the GD object minus 1 since the origin of the axis has a value of 0 64 pixels. The axis runs to the right and its values increment in intervals 1 pixel. Maximum value on axis (Screen height -1, pixels) is the number of pixels on any column of the GD object minus 1 since the origin of the axis has a value of +y 0 pixels. The axis runs to the bottom of the screen and its values increment in intervals 1 pixel. Task (7) allows a particular pixel to be selected with the mouse and Task (8) converts the pixel to ENU coordinates in ft; this value gets passed to Task (9) where it gets snapped to the quantized value that it is closest to. That is, since terrain maps contain discrete locations, each start location and destination location is set equal to the value that best approximates the input value. Task (10) is to view the A* path. A similarity between both maps is that they both render the A* path buffer to the graphics display object as red line (which is sometimes straight and other times jagged). Figure 3.3 shows an A* path on each of the map views as a red jagged line. Notice that in Figure 3.3 it is easier to spot the mountains and the A* path on the natural view: but that it is easier to spot the elevation levels and their borders on the corresponding contour view. Task (11) is to toggle the GD object between natural view and contour view. Task (12) is to inhibit all graphics processing (e.g. use all processing toward generating routes). 3.2.3 Terrain Map File Processing Object In the RTPP alpha prototype, the Terrain Map File Processing (TMFP) object extracts data from the terrain map files. Metaphorically, this extracted data is the fuel that powers the RTPP. In addition to performing this task, which is crucial to the successful operation, output accuracy, and the flexibility of the RTPP, it also populates the other RTPP buffers. Specifically, the TMFP object performs the following tasks. First, it opens terrain maps files and loads them to the terrain elevation data buffer. Second, it opens boundaries files and loads the terrain 65 boundaries buffer. Third, it opens A* path files and loads them to the A* path buffer. Fourth, it extracts data from terrain map files during the loading process. Fifth, upon user request, it saves generated A* paths to files. The files for the three buffers explained above are in ASCII format; an example of such a file can be seen on Figure 3.5. Although these files have similar formats, their index values are processed differently. The tasks of the TMFP object are summarized in Table 3.10 below, and the formats for the different objects are specified on Tables 3.8, 3.9, and 3.10. Table 3.10: Terrain Map File Processing Object Tasks. Task No. Description 1 Load the terrain elevation data buffer. 2 Load the terrain boundaries buffer. 3 Load the A* path buffer. Extract terrain map properties from the terrain map as it is loaded into its 4 buffer. 5 Save the A* path buffer. Figure 3.5: Terrain map ASCII file in (i, x, y, h) format. Table 3.11: Terrain Elevation Map File Format. Name Symbol Description 66 A unique identifier assigned to each distinct location of the Index i terrain elevation map. Horizontal x The x coordinate in ft using the ENU coordinate system. y The y coordinate in ft using the ENU coordinate system. Coordinate Vertical Coordinate Elevation The MSL elevation coordinate in ft attached to each (x, y) h Coordinate coordinate from the ENU coordinate system. Table 3.12: Boundaries File Format. Name Symbol Description The index identifies the order in which the boundaries are to Index i be set.; the boundary points must be arranged in the order they are to be implemented. Horizontal x The x coordinate in ft using the ENU coordinate system. y The y coordinate in ft using the ENU coordinate system. Coordinate Vertical Coordinate The MSL elevation coordinate in ft attached to each (x, y) Elevation h coordinate from the ENU coordinate system. The RTPP Coordinate boundaries are restricted at present to elevation of h=0 ft. Table 3.13: A* Path Format. Name Symbol Index i Description The unique identifier assigned to each distinct location of the terrain elevation map. The records are arranged in order 67 that traces from the destination location to the start location. Horizontal x The x coordinate in ft using the ENU coordinate system. y The y coordinate in ft using the ENU coordinate system. Coordinate Vertical Coordinate Elevation The MSL elevation coordinate in ft attached to each (x, y) h Coordinate coordinate from the ENU coordinate system. Tasks (2), (3), and (5) on Table 3.10 are standard procedures when imposing constraints or when acquiring data for analysis. These tasks are performed through the GUI object. The type of file to be loaded, e.g. Tasks (2) and (3), or saved, e.g. Task (5), can be set on the GUI object’s toolbar or menu (See Task 1 on Table 3.6). The GUI object activates a DB object when loading or saving a file; the DB object for the latter case is the File Save As and for the former case is the File Open, which is depicted in Figure 3.2. Task (2) has two purposes: first, to make the available terrain that is beneath the provided air-space visually identifiable to the human operator and second, to impose borders that specify this air-space’s boundaries to the virtual UAV. Having a GUI that displays boundaries that separate prohibited terrain from available terrain is useful for an operator who is selecting start and destination locations. Additionally, if the airspace is constricted to a subset of the terrain map, the virtual UAV must also be limited to touring only the virtual terrain within the boundaries. Tasks (3) and (5) are for analyzing the results: for example, “An A* path is needed for MATLAB™ analysis.” “Are the paths flyable?” “Do the paths have the tendency to put the UAV in high risk situations?”…etc. Tasks (3) and (5) are interrelated—task (5) which is to save a newly generated A* path must be performed before task (3) can be performed, which is to load the RTPP with a previously generated A* paths. 68 Task (1) of Table 3.10 involves loading terrain map files to the RTPP; these files are loaded in the same as the other files, with the GUI object. Aside from loading terrain maps, the main purpose of Task (1) is to make the RTPP flexible. The following statement describes the design that implements this flexibility: Design 3.1 The RTPP must use terrain maps of different geographical locations. Also, its terrain map’s properties can vary for different terrain maps. Each map’s area must be allowed to have different dimensions and values. That is, the lengths and widths and square footage can be distinct for each map. Hence, the RTPP must use maps with different terrain map resolutions, m, and quantization values, q. Notice how the TMFP object handles task (1) and (4) in Illustration 3.1. Observe that after the terrain map is loaded and processed by the TMFP object, it extracts the terrain map’s properties. These extracted map data flow from the TMFP object to the following three RTPP objects: GD, ASA, and DA. The data extracted from the map is described in Table 3.14 below. Table 3.14: Topographic Terrain Map Properties. Name Symbol Quantization value q Description The horizontal and vertical, but not diagonal, distance between points of the input terrain map. The total number of records (i.e. (i, x, y, h) Resolution m coordinates) of the input terrain elevation file. Minimum x ENU coordinate system value, in ft, of Horizontal Minimum xmin the input terrain map. Maximum x ENU coordinate system value, in ft, of Horizontal Maximum xmax the input terrain map. Minimum y ENU coordinate system value, in ft, of Vertical Minimum ymin the input terrain map. Maximum y ENU coordinate system value, in ft, of Vertical Maximum ymax the terrain map. 69 Design 3.1 described above has made it possible to use terrain elevation maps of different areas with different resolutions, m, and with different quantization values, q. These maps are created with the TMC, which returns elevations from the NED dataset. This particular terrain elevation data source has accuracy of 30 meters (approximately 98 ft), which means that nonredundant terrain elevation points are available in increments of 30 meter (or about 98 ft) vertically and horizontally, but not diagonally. This available dataset is for the geographical area located at WSMR center: -106.3339˚ longitude and 33.0834˚ latitude in geodetic coordinates. The RTPP has been using maps that vary in dimension: as small as 1,000 ft by 1,000 ft and as large as 50,000 ft by 500,000 ft with various quantization values and resolutions. Thus the RTPP design to allow the use of terrain maps with different properties has been implemented correctly. The details are provided on subsection 3.4.8, which describes the RTPP alpha prototype results. The MFC CSerialize class for reading and writing files was overwritten to read in the different types of files and to extract the terrain map properties. The default CSerialize base class could not be used to do these tasks, which are described on Table 3.10. The reason is that is in its default form, the CSerialize base class does not save data when the Save or Save As commands are activated from the GUI objects menu or toolbar. For the GUI object’s File Open command, no data is not loaded to the RTPP. Hence, the CSerialize base class was overwritten with the class whose instances create TMFP objects. This class was created exclusively with standard C++ using OOP techniques; this same class is used on the TMC—a benefit of using OOP. 3.2.4 A* Algorithm Object The RTPP virtual environment is the interface between human operators and the A* Algorithm (ASA) object11. The virtual environment is comprised of a virtual UAV and of a virtual terrain—to the human operator the virtual environment is presented visually: to the ASA object, it is presented computationally. The virtual UAV and virtual terrain were used to create the states within the implicit state-space12 that the ASA object searches for solutions. The virtual 11 12 A* Algorithm Object and AI module are used interchangeably in this document. All states within the state-space are solutions, thus A* searches for a state within a solution-space. 70 UAV is realized via control parameters13 entered by the RTPP operator on the GUI object. The virtual terrain map is based on the ENU plane, which is partitioned with a configuration recommended by Mitchell [Mit88]. Together, the ENU plane divided into squares, as indicated by this partitioning scheme, create the computational representation of the virtual terrain. The map partitioning scheme divides the ENU plane into discrete areas that are used to identify the initial states of the route-finding problem. The initial states have the attribute that two of the map partitions have been assigned; one as the initial location and the other as the final location of the virtual UAV. The virtual UAV flight altitude and its minimum AGL restriction are also part of the initial state description. For this problem’s state-space, initial states are completely described if these four parameters have been assigned. This is not true for the goal states. Goal states must also have a route between the virtual UAV initial and final position. In the RTPP, initial states are generated and entered by human operators, but goal states are generated by the ASA object. The ASA object generates goal states by expanding nodes. In the RTPP, nodes can be regarded as locations corresponding to terrain-map-partitions. In general, for nodes to be expanded, they must have minimal distance between its corresponding map partition location and the destination location. Also, the terrain elevation assigned to the associated map partition must be less than the virtual UAV flight altitude. Additionally, the vertical distance between the flight altitude and the terrain elevation must exceed the assigned minimum AGL. Moreover, nodes can also be regarded as a partial or incomplete goal state. The ASA object commences node expansions at the node assigned to the start location (from the initial state) and continues expanding the nodes that represent the map partitions between the start location and the destination location; halting this process before the goal state is generated results in a partial route (or partial goal state). The ASA object expands the most promising nodes first and places them at the top of the OPEN list. This list is a prioritized list of nodes that are arranged according to the values 13 Control parameters are the virtual UAV properties that must be set for each desired route. 71 assigned to them by the evaluation function. The evaluation function does four things: it computes the distance between the current node and the destination location, it determines if a node is worth using for the route, it computes the cost from the start node to the current node, and it assigns nodes a priority value for undergoing expansion. The evaluation function is a sum of two other functions called heuristic and cost. In general, the heuristic function guides the direction of the node expansions, and the cost function is used to effectively include or exclude a node associated with a certain map partition from belonging to the goal state. The heuristic function speeds up the goal state generation process by assigning lower values to more promising nodes. The same is true for the cost function. It speeds up the goal generation process by computing the cost from the start location to the current node (i.e. the node associated with a current location or map partition within the terrain map). The nodes that are assigned the lowest value by the evaluation function are expanded first. As each node is expanded, it is removed from the OPEN list and placed on the CLOSED list. The closed list identifies the nodes that have been expanded so that they will not be expanded again. This process iterates until the goal state is created. The OPEN list is a stack (i.e. nodes at the top of this list are used first); as new nodes are generated, those with the smaller values get placed at the top of the OPEN list, and those with larger values go to the bottom of this stack. In the RTPP, the two-dimensional Euclidean distance formula is used exclusively as the heuristic function from which all heuristic information is obtained. The two-dimensional Euclidean distances are computed between the destination location and the location associated with each new node that is to be placed on the OPEN list for expansion. This process begins at the initial state; the node assigned to the start location is expanded first. Once this node has been expanded, the heuristic function is computed for each of the successors of this node, and the successors are placed on the OPEN list. The node corresponding to the start location is placed on the CLOSED list. At this point a node is selected from the OPEN list, whether it can be expanded or not depends on its arc cost, which is assigned by the cost function. Assuming it is expanded, the distances of the offspring are computed and placed on the OPEN list, …, the 72 process repeats iteratively until it is determined that the goal state has been obtained (or that such a state does not exist). To create these goal-states, the cost function is used to perform obstacle avoidance and to increase the horizontal distance between the virtual UAV and certain terrain-map-partitions: specifically, those that have equal MSL to the flight altitude of the virtual UAV. This safety measures for the real-world UAV minimize collision risk associated with a real-world UAV brushing the side or the peak of a mountain. The cost function depends on the four control parameters of the virtual UAV to perform these tasks. It also depends on the map partition’s terrain elevation values. The cost function gets the terrain elevation information for each map partition by querying the Dynamic Array Object. The determination of whether a terrain-mappartition is an obstacle or not is made by comparing the virtual UAV flight altitude relative to the terrain elevation. The question to answer is if the virtual UAV is above or below the terrain. To implement obstacle avoidance, the cost function forbids processing of nodes that are regarded as obstacles. Such nodes will have the following property: the terrain elevation assigned to the associated map partition of the node is greater than or equal to the assigned virtual UAV flight altitude. Nodes such as these, which represent obstacles, are shunned away from the OPEN list by the cost function. The arc costs within the search tree determine if the presence of virtual UAV is allowed within map partitions. The method for assigning arc costs was suggested by Mitchell [Mit88] for obstacle avoidance. In the RTPP, the arc cost returned from a particular node depends on the virtual UAV flight altitude and on the minimum AGL. If the difference between the flight altitude and the terrain elevation is less than the minimum AGL, arc cost of infinity is retuned, otherwise unit arc cost is returned. Arc cost of infinity means that virtual UAV are not allowed in the map partition, and unit arc cost means that the virtual UAV can use the map partition to construct a goal state. In the RTPP, nodes with arc cost of infinity are not placed on the OPEN list at all, even though theoretically they should be placed at the very bottom of the stack. 73 3.2.5 Dynamic Array Object To force real-time performance, the ASA object references memory directly, which is more beneficial to real-time performance that using sequential lookup. This speeds up the generation of goal states. The direct memory reference was implemented by a C++ class. This class contains a buffer and some features for querying and retrieving datum from it. An instance of the class, called the Dynamic Array (DA) object is used by the ASA object to access memory directly and to affirm that the intended memory is being retrieved. Affirming that the intended memory is being referenced by the ASA object is implemented by comparing values computed by the ASA object against values obtained from read-only files. Direct reference is faster than sequential lookup when retrieving a particular datum because the datum can be retrieved by using its memory address. Performing a sequential lookup to retrieve a particular datum requires that the buffer be searched in a fixed order. Here, the datum in each buffer location must then undergo Boolean comparisons until a set condition is met; at this point, the datum is retrieved. Because direct reference requires that the memory address of the desired datum be known, the memory addresses of the DA object’s buffer were made to coincide one-to-one with the DFCS ENU (x, y) coordinates. The ASA object always has access to the required buffer address of the DA object. The ASA object computes the location, in DFCS ENU coordinates, of the node it wishes to explore. It does this during the goal state generation process. Hence, the ASA object, as was designed, uses these computed ENU (x, y) coordinates as the memory addresses for directly referencing the terrain elevation buffer of the DA object. The DA object is set up to fail if it is not indexed correctly by the and the ASA object because this means that an error has occurred: possibly with the terrain map that was loaded or with the computations performed by the ASA object of the quantized ENU coordinates. The ASA object performs error-checking by making Boolean comparisons between computed data and read-only data. The map index, i, that is assigned to each map partition as a unique identifier is also computed by the A* algorithm Object so that the values can be 74 compared to ensure that the correct map partition is being used. Before the ASA object uses the terrain elevation value, h, it compares the computed index, i, against index that was read in when the file was loaded. This sets up an error diagnostic system that causes the system to fail in the event of a program error resulting from a corrupted file or a data offset, or some other coding bug. 3.3 TERRAIN MAP CREATOR The TMC generates two-dimensional maps that represent a surface of the three- dimensional earth. These maps are in DFCS Earth-North-Up (ENU) coordinates. This coordinate system uses a flat plane that is tangent to the surface of the earth at WSMR center. Soto et al. [Sot07] provide the following definition for this ENU world: “The East North and Up (ENU) coordinate system is used at DFCS. The coordinates can be represented as (x, y, z, h). z is defined with respect to an imaginary flat plane that is tangent to the earth surface at the WSMR center, which is the origin of the DFCS ENU coordinate system. h is the MSL elevation (or altitude); it takes into account the curvature of the earth, which makes it very useful for measuring UAV AGL. The (x, y, z, h) = (0 ft, 0 ft, 0 ft, 0 ft) origin in the ENU coordinate system is at 33.0834 degrees North and 106.3339 degrees West. This point is 72.4112 ft MSL above the WGS 84 reference ellipsoid.” The DFCS ENU coordinate system is Cartesian; the units of each of its axes are in ft and its values are evenly spaced. Three axes perpendicular to each other and with positive values flow out from the origin: the first to the East, the second to the North, and the third Up: hence the acronym ENU. The corresponding axes with negative values also flow out form the origin, but they flow West, South, and Down. The z = 0 plane of the ENU world that is created by the TMC, is neither continuous nor infinite: the (x, y) coordinates are separated by a quantization value q vertically and horizontally, and by 2 q diagonally, also, the x and y axes have minimum and maximum x and y values. Table 3.15 below summarizes these properties. Illustration 3.3 depicts the DFCS ENU plane (z = 0); for clarity it is lifted up and to the left form its geographical location on earth. Table 3.15: DFCS ENU Coordinate System. 75 Axis name Axis alias Description Maximum value on axis (xmax ft) depends on the data of the East +x TMC file. The value at the origin is 0 ft and values increment to the East in intervals of the quantization value. Minimum value on axis (xmin ft) depends on the data of the West -x TMC file. The value at the origin is 0 ft and values decrement to the West in intervals of the quantization value. Maximum value on axis (ymax ft) depends on the data of the North +y TMC file. The value at the origin is 0 ft and values increment to the North in intervals of the quantization value. Minimum value on axis (ymin ft) depends on the data of the South -y TMC file. The value at the origin is 0 ft and values decrement to the South in intervals of the quantization value. Elevation value in MSL assigned to a DFCS ENU coordinate. Up h The maximum elevation at WSMR is approximately 10,000 ft MSL and the minimum is approximately 3,500 ft MSL. Negative MSL values indicate elevations below mean sea Down -h level, e.g. valleys, under-water, and under ground. Up z Value above the horizontal ENU plane. Down -z Value below the horizontal ENU plane. 76 Illustration 3.3: DFCS ENU coordinate system. 3.3.1 TMC Modules Illustration 3.4 below shows the software architectural diagram of the Terrain Map Creator; these modules perform the meticulous geographic conversions that yield files containing the precise transformation of the surface of the earth onto a topographic map in DFCS ENU coordinates. The blocks represent the modules (or objects) and the arrows indicate the passing of data between the modules. The modules, some of which are C++ objects, are listed on Table 3.16 below. 77 Illustration 3.4: TMC Architecture diagram. Table 3.16: TMC Modules. No. Object/Module Acronym 1 Graphical User Interface GUI 2 Dialog Box DB 3 Terrain Map File Processing TMFP 4 Geographic Conversions GC 5 NED Query NQ Terrain map files are the output of the (NQ) module. Its input is the file containing the ENU z = 0 partitioned plane. This input file, which is the output of the Terrain Map File 78 Processing (TMFP) module, contains the quantized (x, y, z) coordinates and each of these (x, y, z) ENU coordinate is used as the center of the area where the search for the highest peak is performed. The NQ module passes each of these coordinates, one at a time, to the Graphics Conversion (GC) object, so that they can be converted to geodetic latitudes and longitudes. Then the NQ module uses the resulting latitudes and longitudes to query the NED dataset. 3.3.2 GUI Object The TMC contains a Windows XP graphical user interface (GUI); it is shown at top of Figure 3.6. This GUI is very simple and intuitive. It contains a menu that is used to activate its two Dialog Box (DB) objects: the first is for partitioning the z = 0 plane into equal sized square partitions, the second is for assigning an elevation value to each of these partitions. The DB object at the center of Figure 3.6 is for performing the former task; it provides fields so that a user can enter the quantization value, q, the x and y minimum and maximum values in ENU coordinates, and the file name. These x and y values represent xmin, ymin, xmax, and ymax which are defined on Illustration 3.3 and used as the minimums and maximum for the DFCS ENU coordinate system that is described on Table 3.15. The quantization value q is entered into the section titled Step Distance, which contains a single field labeled Step14; this value is the horizontal (and vertical) separation distance between the centers of each map partition. The other DB object performs the latter task, which is to assign a Mean Sea Level (MSL) elevation to each of the partitions on the z = 0 plane; these values are saved as (x, y, h) ENU coordinates to a file. This DB object is displayed at the bottom of Figure 3.6; it provides two fields: one for stipulating what type of numerical value to use for writing the terrain map file and the other for providing the file name of the resulting RTPP terrain map. 14“Step” is simply an alias for the quantization value, q. 79 Figure 3.6: TMC GUI and dialog boxes. 3.3.3 Terrain Map File Processing Object The values—quantization, q, and the x and y minimums and maximums—entered via the GUI are initially passed to the Terrain Map File Processing (TMFP) object, whose RTPP tasks were described on the RTPP alpha prototype section. In the TMC, this object uses a “simple yet non-trivial” terrain partitioning scheme suggested by Mitchell [Mit88] for generating terrain 80 maps that are searchable by state-space search methods, where in this study is the A* algorithm. The scheme, which Mitchell calls a “binary-partitioning” divides the geographical area and assigns the partition as either traversable terrain or obstacle. The TMFP object partitions the z = 0 plane into rectangular areas whose length and width are equal, thus resulting in square partitions, which are used exclusively for this study. The TMFP object uses xmin, ymin, xmax, and ymax to determine the initial and final coordinates and all the intermediate coordinates in between. It creates these values by recording the bottom left coordinate, which is (xmin, ymin) for the map, and then incrementing the x coordinate by the quantization value, q, until xmax is reached. At this point, the y coordinate is incremented by the quantization value, q. This partitioning of the z = 0 plane terminates when the maximum y coordinate ymax is reached. Hence, the quantization value, q, determines the horizontal and vertical length of the map partitions. The minimum and maximum x and y values must be computed such that incrementing q will eventually lead to an x and y value directly on the x axis and on the y axis, respectively. If this occurs, this means that one of the ENU coordinates generated must be the origin to the coordinate system. In the case of DFCS, the origin is (x, y, z) = (0 ft, 0 ft, 0 ft), therefore values xmin, ymin, xmax, and ymax are rounded down or up such that the incrementing q will eventually produce a ENU coordinate whose value is (0 ft, 0 ft). By default, the value of z is zero since it is the z = 0 ft plane that is being partitioned. Each of these map partitions is assigned an index whose count begins at (xmin, ymin), which is the first ENU coordinate written to the RTPP terrain map. A value of 1 is assigned as the index to this terrain-map-partition, which is on the lower left of the terrain map. Then, the following partitions to the right are assigned indexes whose values increment by 1 until the last partition on the row is reached. At this point, the indexing continues on the next row up, at the partition to the left, for all the remaining rows. 81 3.3.4 Geographic Conversions Object The Geographic Conversions (GC) object uses the World Geodetic System 1984 (WGS84)15 [NIM07] reference ellipsoid to perform the translations between the different representations of earth’s surface. The results from the first and last TMC translations of the earth are topocentric; that is, the resulting maps are represented on a two-dimensional flat surface. The first topocentric translation is from the z = 0 partitioned plane; the last topocentric translation is to the RTPP terrain map. The latter is the precursor to the former. First, the GC object processes the z = 0 plane by translating its topographic coordinates to Earth Centered Earth Fixed (ECEF)—i.e. geocentric16—coordinates [Nav98]. Second, the geocentric coordinates are converted to geodetic coordinates. Last, the NED Query module uses the geodetic coordinates to produce the RTPP topographic maps. Hence, the GC object is charged with accurately performing all intermediary translations to convert the ENU based z-plane at z = 0 to the geodetic coordinates based on the WGS84 reference ellipsoid. The GC object begins by transforming the initial topocentric Cartesian coordinates to geocentric ECEF Cartesian coordinates. Both DFCS ENU and ECEF are Cartesian17 coordinate systems, but their coordinates are used differently to signify earth’s attributes. The DFCS ENU x and y coordinates are analogous to longitude and latitude, respectively, and the z = 0 ENU plane does not account for curvature of the earth. On the DFCS ENU coordinate system, z values signify the value above of or below the z = 0 plane. Curvature of the earth error increases as the x-y distance increases from the DFCS ENU coordinate system’s origin. Hence, the only one zvalue that can be used as an accurate MSL elevation is the ENU origin—where the plane is tangent to the surface of the earth. The ECEF coordinate system, as used by the TMC, implements the WGS84 ellipsoid in Cartesian (X, Y, Z) coordinates. In ECEF coordinates, (X, Y) ordered pairs are analogous to a longitudinal values on earth and Z coordinates, to latitudinal values. X-Y planes at different Z 15WGS84 (World Geodetic Survey 1984) is the U.S. standard model of the earth. coordinates are also referred to as Earth Centered Earth Fixed Coordinates. 17Cartesian coordinates signify distance from the origin. 16Geocentric 82 values are parallel to the equator. The prime meridian is perpendicular to the Z axis at two points: the North and South Poles. The WGS84 ellipsoid representation could be conceptualized as spinning about the Z axis of the ECEF coordinate system. The origin of the ECEF coordinate system is (X, Y, Z) = (0 ft, 0 ft, 0 ft); it is analogous to the center of the earth (i.e. to the earth’s core). The WGS84 ECEF coordinate system assumes the earth is a perfect ellipsoid. It does not account for mountains or craters on earth’s surface. Reiterating, the conversions from DFCS ENU topocentric coordinates to geocentric (ECEF) coordinates are based on the WGS84 ellipsoid. The reference point of the ellipsoid is (longitude, latitude) = (-106.3339˚, 33.0834˚). The WGS84 ellipsoid is 72.4112 ft above the MSL elevation at this location. These values are used to adjust the offset of the ellipsoid so that it is in sync with the corresponding location on earth at the reference point. This overlapping of the WGS84 model with the earth at the specified reference point produces (longitude, latitude) values with minimal error for the locations of interest on the earth, which are on the WSMR terrain. Illustration 3.5 below shows the relationship between the WGS84 ellipsoid and the X-YZ axes of the ECEF coordinate system. 83 Illustration 3.5: WGS84 ellipsoid on ECEF coordinate system. Next, the GC object transforms the geocentric coordinates to geodetic coordinates. Illustration 3.6 below shows the relationship between the geocentric coordinate system and the prime meridian; Illustration 3.7 shows the relationship between the geocentric coordinate system and the equator. The prime meridian is the horizontal reference line of the geodetic coordinate system; the equator is the vertical reference line. The geodetic coordinate system18 identifies angles from the prime meridian as longitudinal lines and angles from the equator as latitudinal lines; these angles use units of degrees. Illustration 3.6 below shows that the angles associated 18 In a flat map longitudinal lines and latitudinal lines can be seen as displacements from the prime meridian and the equator, respectively. 84 with longitudinal line are with respect to the prime meridian, which is at longitude = 0°. Notice that the angle between the prime meridian and the ECEF positive Y-axis is longitude = 90° and that the angle between the prime meridian and the ECEF negative y-axis is longitude = -90°. Illustration 3.7 below shows that the angles associated with latitudinal lines are with respect to the equator, which is at latitude = 0°. Observe that the angles above the equator are positive and those below the equator are negative. Furthermore, the transformation from the geocentric to geodetic coordinate system is also based on the WGS84 ellipsoid. This final geographic conversion since it yields the necessary geodetic longitudes and latitudes that are mapped to a particular location at earth’s surface. Illustration 3.6: Geodetic longitudinal lines relative to ECEF X-Y axes. 85 Illustration 3.7: Geodetic latitudinal lines relative to ECEF Y-Z axes. 3.3.5 NED Query Module The National Elevation Dataset (NED) Query module takes two inputs: (1) geodetic coordinates produced by the GC object; (2) digital terrain elevation data. The terrain elevation is obtained from the NED dataset which selects the highest elevation point within 30 meters [USG07] and that has an elevation accuracy of 1 meter. Hence this module returns an MSL elevation he when queried with geodetic coordinates. The NQ module was designed to be queried with a minimum value of 98 ft and all values greater than 98 ft up to values that are several orders of magnitude (for instance, q = 98,000 ft)— 86 the maximum quantization value for querying the NED dataset depends on the terrain image. The minimum value is based on the NED dataset resolution of 30 meters which is approximately equal to 98 ft (98 ft ≅ 30 m) 19; querying the NQ module at a smaller value is redundant since the same elevation value will be returned for locations that lie within the same 98 ft block. The NQ module searches for the highest peak within each terrain-map-partition by setting a buffer that is used for storing the first elevation value and the value in the buffer gets updated each time a higher elevation value is obtained from within the map partition of size q where the search for the highest peak is being performed. All map partitions of size q are searched in horizontal increments of 98 ft and when the horizontal limit is reached, the search is incremented 98 ft vertically and the process continues. When this procedure completes, the buffer contains the highest peak found within the map partition’s area. This value is assigned as the elevation to the terrain-map-partition that is represented as an ENU coordinate in the file that was read in by the NQ module. This means that the map partition could be assigned an elevation that is higher than the one at the geographical location which it represents. However, this is the goal: to trade map accuracy for safety. If this procedure is not performed for terrain maps, UAV safety is not guaranteed for the entire map partition of dimensions q ft by q ft; it is only guaranteed at the center of the map partition. But since the highest peak within the map partition is assigned, the UAV is guaranteed not to collide with a mountain when entering or exiting the terrain-mappartition. Hence assigning the highest peak to each partition guarantees the safety of the UAV not only at the center of the map partition but also for the entire map partition of dimensions q ft by q ft. 3.3.6 Quantized Terrain Maps The terrain maps produced by the Terrain Map Creator (TMC), as used by the RTPP, are analogous to United States maps. Both maps are partitioned into contiguous areas and the partitioned areas are each assigned a symbol in each of the maps that represents them uniquely. 19This value is repeatedly used in this study because it is in units of ft and it is approximately equal 30 m which is the actual resolution of the NED dataset. 87 For example, the unique symbol assigned to a state in the U.S. map is the name (e.g., Texas) while the unique symbol assigned to each RTPP map partition is a positive integer called the index. Both maps have an outline that borders their areas and the individual partitions within their areas. However, the geometry of RTPP terrain maps and that of its partitions is simple when compared to those of the U.S. The outlines of the U.S. area and that of each of its states are distinct and complex (i.e. they all have different and intricate shapes and sizes) whereas the outlines of a RTPP terrain map and the partitions within are rectangular and square, respectively. 3.4 RTPP-DFCS INTEGRATION ISSUES The technical semantics associated with integrating the RTPP into DFCS are as follows: • The RTPP must provide DFCS with flight profiles that are maneuverable by airborne aircrafts. DFCS will provide the characteristics of the desired flight profile to the RTPP and the RTPP will use these properties to generate safe and maneuverable flight profiles in real-time. • To allow DFCS to query the RTPP, a computer network communication link between the RTPP and the DFCS real-time computer network will be established. The purpose is two-fold: (1) to send flight profile request from the DFCS realtime computer network to the RTPP; (2) to have the RTPP acquire the DFCS flight profile from the DFCS real-time computer network requests and then respond by sending the requested flight profile into the DFCS real-time computer network. • DFCS must display the RTPP flight profiles on the DFCS Console Subsystems. • The RTPP must provide flight profiles that the DFCS Guidance, Navigation, and Control (GNC) system can utilize to automatically guide, navigate, and control aerial vehicles. At worst, DFCS must require only minor modifications to be able to use the RTPP generated flight-profiles. Once these issues are precisely defined and implemented, the RTPP will be considered as integrated into the DFCS real-time computer network. 88 3.4.1 Flight Profiles Flight profiles must possess certain properties if they are to become routes that are maneuverable by aircrafts. This section describes such properties. 3.4.1.1 Flight Profile Measures The flight-profiles in this study guide a UAV flying over know terrain with elevations he at a constant flight altitude ha from a user specified start location (xi, yi) to a user specified destination location (xf, yf). The flight-profiles maintain a minimum separation between the flight-profile and the terrain underneath; this reference value is called the minimum AboveGround-Level AGLm distance. A measure of the actual distance between the ground and a flightprofile (or between an airborne UAV and a flight profile) can be obtained by computing the AGL with Equation 3.3 below. AGL = ha − he (3.3) where AGL is the above-ground-level distance in ft; and ha is the flight altitude in ft MSL; and he is the terrain elevation in feet MSL; and AGLm is a reference value that specifies minimum above-ground-level distance in ft. The dynamic UAV direction is referred to as the heading ψ of the UAV; the heading is referenced to the earth’s North and South poles. There are two types of headings: magnetic and true. They are linearly related to each other and they differ only by an offset (i.e. an additive constant). This offset changes at different geographical locations of earth. Equation 3.4 below defines the relationship between the magnetic heading ψm, the true heading ψ, and their offset as it occurs at WSMR, NM. ψ m = ψ − offset 89 (3.4) where ψm is the magnetic heading in degrees; and ψ is the true heading in degrees; and offset = 11.25˚ at WSMR, NM. The true heading ψ and the magnetic heading ψm describe the direction of the velocity vector with values that range between 0˚ and 359˚. The reference values assigned to the directions of the true headings ψ are as follows: North is at 0˚; East is at 90˚; South is at 180˚; West is at 270˚. All the heading computations in this study were done using the true heading ψ to identify the velocity vector at a precise location. For instance, a UAV at location x = 0 ft, y = 0 ft that is flying due East at time t can be described by a point-vector as follows: 〈 (x, y), R ψ 〉 = 〈 (0 ft, 0 ft), R 90˚ 〉. All direction and heading references in this study use true headings ψ with units of degrees. The maximum estimated ground speed vg,max for each distinct flight profile is used to compute the maximum turn radius rt,max that is required by the UAV to make the turns on the flight profile. The turn radius rt,max defines the amount of space required for the UAV to change from an initial heading ψi to a terminal heading ψf. All turn radius computations in this study assume a vertical acceleration of av = 1 G = 32.2 ft/s2; this assumption is valid for UAV that are flying at a constant flight altitude. The maximum roll angle used in this study is 60˚. The UAV turn radius rt is proportional to the ground speed vg of the airborne UAV and inversely proportional to the vertical acceleration av. Equation 3.5 below defines the turn radius. rt = vg2 tan(ϕ )av where rt is the turn radius in ft; and vg is the ground speed in ft/s; and av is the vertical acceleration in ft/s2; and 90 (3.5) φ is the bank angle20 in degrees. 3.4.1.1 Types of Flight Profiles Two types of flight profiles are considered in this study; they are waypoints and flightpatterns. Waypoints are locations must be met in a specified order during the flight. Waypoints have the property that they can be over or under shot intentionally (i.e. by design) or as unintentionally. One example of a UAV guidance systems using waypoints guidance is as follows: an ordered set of points is provided for the UAV to follow; the UAV guidance system has the option to skip a waypoint by undershooting it or by overshooting it after it has approached the waypoint. The decision to undershoot, overshoot, or meet the waypoint depends on the location of the next waypoint. For instance, if UAV using waypoints guidance is trying to meet a certain waypoint, it can begin to turn toward the next waypoint prior to arriving at the current waypoint. The DFCS guidance system uses preplanned flight trajectories for providing UAV guidance. These preplanned flight trajectories are referred to as flight-patterns by the DFCS personnel. Flight-patterns provide very little freedom as to what flight trajectory a UAV can create since UAV must stay on flight-patterns for the specified duration of the flight. The perpendicular distance between the flight-pattern and the airborne UAV is referred to as the Cross-Track Error (CTE); the altitude distance between the flight-pattern and the airborne UAV is referred to as the Altitude Error (ALE). Because UAV flight-patterns can be defined and generated a-priori to the flight, they can provide more accuracy than waypoints; however, this is obtained as the cost of flexibility. The flight-trajectory of a UAV using waypoints guidance is not known a-priory since the UAV controller (be it machine or man) can choose to overshoot, undershoot, or meet the waypoint in real-time. Depending on the situation, this could be good or bad. 20 The bank angle is also known as the roll angle. It is 0˚ when the wings of an aircraft are perpendicular to the flight velocity vector. 91 3.4.2 Waypoints The original output of the flight trajectory generation program was to be flight-patterns, but this specification was changed to waypoints during project development (i.e., Task 8 on Table 3.1 was modified). This change in output specifications was allowed because waypoints appeared to have more benefits than did flight-patterns. First, waypoints seemed to allow more freedom than flight-patterns, and, as a result, it seemed that more combinations of flight trajectories could be obtained from the given geographical area. Second, waypoints seemed a more natural output for generating flight trajectories on a geographical area that is partitioned into squares. Third, the lists that comprise A* paths are very similar, if not identical, to waypoints lists [Osb05] in that both lists contain an ordered set of locations. These ideas led to the conclusion that if an obstacle free path was found, only minor post processing of the A* path would be required since the precursor of the desired flight trajectory had been obtained—it being the A* path. 3.4.3 Processing the A* Path to Waypoints The RTPP pre-processed output is a set of ENU coordinates; these coordinates represent and link the series of grid location that comprise an A* path. Before real-world UAV guidance can be attained from this output, post-processing is required. The preliminary post-processing effort began by attempting to convert the A* path to a valid flight guidance solution. The method uses all the points of the A* path and minimizes the distance between these points to a minimum value equal to the NED dataset resolution21. Minimal separation distance between the A* path’s points is sought in order to create a spline22 that approximates continuity. To implement this post-processing methodology, high resolution terrain maps were used. The first high resolution terrain map that was used had a quantization value of 98 ft (which is approximately 30 meters—the maximum resolution provided by the NED dataset). However, 21 The word resolution has two meanings in this report. The NED resolution refers to the physical separation between distinct data points on the elevation image. It is very similar to the quantization value, q, on terrain maps. The terrain map resolution refers to the number of (x, y, h) coordinates within the file; its symbol in this report is m. 22 A spline is a continuous curve made up of series of distinct curved segments. 92 this terrain map was not useful because it used too much memory. This side-effect showed that maps that consume that large amount of memory are impractical because they slow down the RTPP. The response times for the loading the terrain map files and for generating paths were affected. Loading the terrain map files took approximately 5 seconds and route generation could take as much as 3 seconds. Therefore, the attempt at constructing waypoints from a 50 mile by 100 mile terrain map whose points are separated by as little as 98 ft was omitted. 3.4.4 Bounding the RTPP Input to Guarantee Real-time Response The processing time for generating an obstacle free path in the high resolution terrain map (with a quantization value of q = 98 ft that covers an area of 50 miles by 100 miles) exceeded the real-time threshold. Additionally, the computer’s 2GB of RAM memory was used. To alleviate these anticipated shortcomings, while not sacrificing the real-time response of the RTPP, the idea of generating a spline from locations that are separated by minimal distance was abandoned. The new output is waypoints that are separated by the smallest quantization value that can be in used in a terrain map that spans 50 miles by 100 miles without diminishing realtime performance. To find this quantization value, terrain maps were generated and tested iteratively until a terrain map file whose size does not take too much memory was obtained. The smallest terrain map that covers a geographical area of approximately 50 miles by 100 miles but that dose not diminish real-time response was obtained by sampling the elevation dataset at approximately 5 times the NED resolution (i.e. 490 ft). This larger quantization value (q = 490 ft) generates a terrain map with a smaller resolutions (m = 577,915) which results in a terrain map file which uses less memory. This terrain map with resolution m = 577,915 locations in ENU coordinates was used to perform empirical testing on the RTPP; the purpose was to gauge the real-time response. With this terrain map file, the RTPP demonstrated real-time response by returning complicated23 A* paths in less than 1 second while not exhausting the computer’s memory. This means that the 23 Complicated path means that the corresponding ordered list has at least 1,000 coordinates, and that the general direction of the path is continually changing. 93 shortcomings associated with the A* algorithms and the computer’s resources while processing the A* path into waypoints can be alleviated by bounding the terrain map resolution and filesize. The terrain map with resolution m = 577,915 is defined as the baseline for creating terrain map files since it is the largest file that was used that did not degrade the RTPP real-time response; its properties are shown on Table 3.17. Table 3.17: Terrain Map Baseline. Quantity Symbol File Size Value 42,221 KB Quantization Value q 490 ft Resolution m 577,915 (x, y, h) coordinates East Axis maximum value xmax 127,890 ft West Axis maximum value xmin -127,890 ft North Axis maximum value ymax 270,480 ft South Axis maximum value ymin -270,480 ft Figure 3.7 below shows a complicated A* path that was generated during the RTPP empirical testing for real-time response. This route was generated by the RTPP in less than 1 second. This A* path is an example of a worst-case-scenario solution in two ways: (1) it uses the largest allowed terrain map file (described on Table 3.17); (2) it is far more complicated than any flight-pattern in current use. To generate this A* path, the RTPP used a little less than 25 % of the computer’s memory (approximately 497 MB, The 25 % is for the computer whose platform is specified on Table 3.4). This example establishes that the computer’s resources are stable and that the RTPP responds in real-time. 94 Figure 3.7: Complicated A* path. 95 3.4.5 Problems Associated with Waypoints Using high-resolution terrain maps (such as the one described on Table 3.17) to generate waypoints from A* paths that have minimal separation between points proved to be very problematic. The problem is that only the most trivial routes (i.e. routes with no change in direction) could be used for valid flight guidance. The problem is that the waypoints that are generated from these terrain maps do not account for the turn radius of an airborne UAV. Hence the majority of these A* routes could not be processed into maneuverable UAV flight trajectories. 3.4.5.1 Turn Radius vs. Terrain Map Quantization Value The terrain map quantization value q determines the size of the individual line segments in the A* route that is being used to generate the waypoints: (1) vertically or horizontally, the minimum line segment distance is q ft; (2) diagonally, the minimum line segment distance is 2 q ft. This means that there will be occasions when waypoints that change the flight direction of the UAV are separated by q ft. Figure 3.8 shows a zoomed-in view of the path on Figure 3.7 which was generated by using the terrain map described on Table 3.17. In this map, q = 490 ft and 2 q = 693 ft. 96 Figure 3.8: Generating Waypoints from an A* path. Figure 3.8 shows an A* path that has several line segments whose distances are 490 ft or 693 ft. This A* path will generate successive waypoints that are scattered in either the x or the y coordinates. Therefore, the resulting UAV guidance solution will eminently contain successive waypoints that are separated by either 490 ft or 693 ft and that recommend successive changes to the UAV true heading ψ. Limiting the UAV properties (e.g. ground speed vg, roll angle φ) to conform to the limitations imposed by the terrain map quantization value q = 490 ft is not an engineering solution. Nonetheless, the vertical acceleration av, ground speed vg, and bank angle φ can be set to minimize the turn radius in order to show that this solution is fallacious; the minimum attainable turn radius can be computed by using the maximum values allowed in this 97 study for vertical acceleration av and for roll angle φ, and by using an unusually low ground speed vg that barely keeps the UAV airborne. The minimum attainable turn radius rt can be computed by considering a UAV that is limited to using the following flight restrictions: (1) vertical acceleration av = 32.2 ft/s2, (2) bank angle φ = 60˚, and (3) ground speed vg = 400 ft/s—the turn radius computed from these values is rt = 2,869 ft! This means that waypoints that can have minimum separation of 490 ft are being used to guide a UAV that has a minimum turn radius of 2,869 ft. Hence the minimum turn radius required to change directions is almost six times larger than the minimum separation of the proposed waypoints. The most likely outcome for a UAV that is flying at these parameters while being guided by these waypoints is that the UAV will have good guidance when the waypoints do not force a change in heading ψ. However, when the UAV encounters the first waypoint that dictates a change in heading ψ, the UAV will meet it but it will surely overshoot the following waypoints. In the best-case scenario, the number of waypoints that are overshot is six and if the UAV does not recover to the waypoints list on the seventh waypoint, the flight dynamics will cause the UAV get lost while trying to recover to the waypoints list—and this is the best-case scenario. Therefore, the effort of generating waypoint lists where the minimum separation between the waypoints is smaller than the UAV turn radius has been terminated and replaced with a new effort. The new effort uses terrain maps that have a quantization value q that is equal to or greater than the maximum turn radius rt; this turn radius rt is computed by using the expected maximum ground speed vg. This effort yielded a valid waypoints guidance solution from the A* path. The waypoints lists that are generated are a subset of the A* path. The waypoints list does not use points from the A* path that do not cause a change in heading ψ; it only uses the following points: the first point, all the intermediate points that cause a change in heading ψ, and the last point. Task 8 of Table 3.1 which is the original specification of having flight-patterns as the output was re-introduced because of the uncertainty and risk associated with waypoints as they 98 would be used in this study. For example, one criterion that establishes if the RTPP performs as expected is if it can guide a UAV between two mountain peaks whose terrain elevation values he are larger than the UAV flight altitude ha. Moreover, aside from the risk they add, they restrict autonomy in that an operator will be required to make the judgment calls when the UAV is flying at these low flight altitudes where the terrain has obstacles. 3.4.6 RTPP-DFCS Interface The interface between the RTPP and DFCS is the DFCS Console Subsystem (DCS). The RTPP is to be linked to the DFCS real-time computer network so that it can provide flightpatterns in response to flight profile requests that are specified and sent to the RTPP from the DFCS console subsystem. The RTPP commands for requesting flight-patterns are to be entered via the keyboard at the DFCS console subsystem and the RTPP is to return the requested flight profile through the network to the CCS computer. Then the flight-patterns are to be loaded to the DFCS guidance system from the console subsystem. Tables 18 to 23 define the DFCS consoles subsystem keyboard commands and their parameters which are to be executed from the DFCS consoles subsystem to query the RTPP for flight-patterns. The HOST ASTAR command is used for setting up the IP address of the RTPP computer. It specifies to the DFCS real-time computer network where to send the flight-pattern requests. Table 3.18: Specify RTPP IP Address. Keyboard Command Command Arguments HOST ASTAR RTPP Computer IP address The ENA ASTAR command enables UDP protocol network communication between the RTPP and DFCS. The flight-pattern is request is sent as a UDP packet to the RTPP and the RTPP responds with a UDP packet containing a flight-pattern. Table 3.19: Enable Network Communication. 99 Keyboard Command Command Arguments ENA ASTAR none The PATH ASTAR command is used for requesting a flight-pattern from the RTPP with the DFCS console subsystem. This command can be used off-line or in real-time. The operator at the DFCS console subsystem can specify the following flight-pattern attributes: (1) the drone index di; (2) the route’s initial location (xi, yi) in DFCS ENU coordinates; (3) the route’s initial true heading ψi; (4) the flight-pattern’s altitude ha in ft MSL; (5) the route’s destination location (xf, yf) in DFCS ENU coordinates; (6) the flight-pattern final true heading ψf; (7) the minimum above-ground-level distance AGLm for the entire flight-pattern; (8) the UAV maximum ground speed vg. Table 3.20: Request Flight-pattern Between two locations. Keyboard Command Command Arguments di xi yi ψi ha PATH ASTAR xf yf ψf AGLm vg The ADD ASTAR command is entered from the DFCS console subsystem; it requests a flight-pattern from the current UAV location to a user specified destination location. The routes 100 initial location, the flight-pattern’s MSL altitude, and the route’s initial heading are obtained from the DFCS GNC system; the values are equal to the position, altitude, and heading of the UAV at the time the command is entered. The user-specified flight-pattern command arguments are as follows: (1) the drone index di; (2) the route’s destination location (xf, yf) in DFCS ENU coordinates; (3) the flight-pattern termination heading ψf; (4) the minimum flight-pattern aboveground-level distance AGLm; (5) the maximum UAV ground speed vg. This is a real-time command, i.e., the UAV can be airborne when the command is entered. Table 3.21: Request Flight-pattern for Airborne UAV. Keyboard Command Command Arguments di xf yf ADD ASTAR ψf AGLm vg The SEG ASTAR command specifies that guidance is required form the current UAV location to the start of an existing flight pattern’s first segment. The flight-pattern’s MSL altitude, its start location and heading are equal to the UAV altitude, position, and heading at the time the command is entered at the DFCS console subsystem. The destination location, which is the first segment of an existing flight-pattern, is the set of user specified attributes that are passed as arguments to the command. The attributes are as follows: (1) the drone index di; (2) the segment index si; (3) the minimum flight-pattern above-ground-level distance AGLm allowed for the pattern; (4) the maximum UAV ground speed vg. The flight-pattern’s terminal heading is the heading of the connecting flight-pattern’s start segment. This is a real-time command which means that the drone can be airborne when the command is entered. 101 Table 3.22: Request Flight-pattern for Airborne UAV and Existing Flight-pattern. Keyboard Command Command Arguments di si SEG ASTAR AGLm vg The INH ASTAR command inhibits network communication between the RTPP and DFCS. Table 3.23: Inhibit Network Communication. 3.4.7 Keyboard Command Command Arguments INH ASTAR none RTPP-DFCS Integration As specified on Task 8 of Table 3.1, the RTPP will only provide flight-patterns24 to DFCS. DFCS will use these flight-patterns in the GNC algorithms for to provide guidance to the aerial vehicles. The block diagram of how DFCS uses flight patterns and of how DFCS will use the RTPP flight-patterns is shown on Illustration 3.8 below. 24The RTPP waypoint capabilities will not be discarded because they can be useful in a future waypoint guidance project. 102 Illustration 3.8: RTPP-DFCS integration. In Illustration 3.8, each distinct entity is represented as a shaded block and the white blocks within represent the output of the corresponding modules. Starting from the left, the UAV position data is acquired via DME or GPS and this data is output into the navigation filters. The navigation filters use position data to compute, estimate, and predict the positions, velocities and accelerations. These values are output to the guidance system. The guidance system uses flight-patterns and navigation data to provide guidance to UAV. With the addition of the RTPP, the guidance system can obtain flight-patterns from a second source: the first and original source being the flight-pattern database. The navigation data and the set of flight-patterns of an airborne UAV are used to compute the guidance errors. The guidance errors measure how well the UAV follows the guidance it is provided with. These guidance errors are computed with respect to a dynamic reference point called the rabbit, which the DFCS GNC systems uses as a reference location. The GNC system attempts to have the UAV locked to the location of the rabbit during the entire duration of automatic control mode (i.e. when the computer maneuvering the UAV). The control system uses the guidance errors to 103 compute the values that are to be commanded (i.e. up-linked) to the UAV. The UAV transponder receives the commands from the ground stations. The commands are sent to the UAV autopilot and it closes the UAV control loops. Then the autopilot down-links telemetry data to the datalink ground stations and the cycle repeats. 3.4.8 Guidance Position Errors The guidance position errors are displacements that occur as follows: (1) between the UAV and the flight-pattern and (2) between the UAV and the rabbit on the flight-pattern. These errors are measured independent of each on a dynamic right-hand local coordinate system that moves on the flight-pattern. There are three guidance position errors; they are Cross-Track Error (CTE), Altitude Error (ALE), and Along-Track Error (ATE) and each is assigned to one of the axes on the dynamic right-hand local coordinate system. These errors are depicted on Figure 3.9 below. The CTE error is the perpendicular distance between the UAV and the flight-pattern. The ALE error is perpendicular to the CTE error and to the ENU x-y plane; it is the vertical distance between the UAV and the flight-pattern. The ATE error is the lead or lag distance between the rabbit and the UAV on the flight-pattern. These three guidance errors measure the how well a UAV uses a particular flight-pattern, which is the recommended flight guidance, by comparing it to the actual flight trajectory that was made by the UAV during the flight. 104 Figure 3.9: Guidance Position Errors. 3.5 RTPP BETA PROTOTYPE During the integration of the RTPP into DFCS, it was discovered that waypoints guidance would not suffice as a safe flight guidance solution and that flight-pattern guidance would be used instead. Simultaneously, the methodology depicted on Illustration 3.8 was conceptualized; this methodology defines how DFCS is to interface with the RTPP. However, the RTPP lacked the modules to implement this methodology. First, it lacked modules that convert A* paths to flight-patterns. Second, the RTPP lacked modules that allow it to be linked to the DFCS real-time computer network. Third, the RTPP lacked modules that allow it to recover and reset itself after it provides a flight-pattern. Therefore, the following modules were created and added to the RTPP alpha prototype: (1) Flight-Pattern Generation and Validation (FPGV), (2) Diagnostic System (DS), (3) Real-Time Timer (RTT), and (4) Network Link. The architecture that resulted from the addition of these modules is the RTPP beta prototype. The 105 RTPP beta prototype architecture is shown on Illustration 3.9 and its main modules are listed on Table 3.24 below (the modules from the RTPP alpha prototype are omitted for clarity). Illustration 3.9: RTPP beta prototype architectural diagram. 106 Table 3.24: RTPP Beta Prototype Modules. No. Object/Module Acronym 1 Flight-pattern Generation and FPGV Validation 3.5.1 2 Diagnostic System DS 3 Real-Time Timer RTT 4 Network Link NL Flight-Pattern Generation and Validation (FPGV) Module The FPGV module searches for an A* route that can be converted to a maneuverable waypoints list which can be used to generate a safe flight-pattern. To do this, it uses three route buffers and three internal modules. The three route buffers, which are listed on Table 3.25 below, are the following: (1) Path buffer, (2) Waypoints buffer, and (3) Flight-patterns buffer. The three modules within the FPGV module, which are listed on Table 3.26 below, are the following: (1) Turn-Radius Validation (TRV), (2) A* Algorithm (ASA), and (3) Flight-Pattern Generator25 (FPG); these three modules, which comprise the FPGV module can be seen on Illustration 3.9. Table 3.25: Route Buffers. No. Buffer Name 1 A* Path 2 Waypoints 3 Flight-pattern Table 3.26: Modules within the FPGV Module. 25 The Flight-pattern generator object converts waypoints to a flight-pattern and the Flight-pattern Generation and Validation object checks for discontinuities in the flight-pattern. 107 No. Object/Module Acronym 1 Turn-Radius Validation TRV 2 A* Algorithm ASA 3 Flight-pattern Generator FPG For each set of flight-pattern specifications, the FPGV module iteratively calls the ASA module to generate an A* route and then passes each A* route to the Flight-Pattern Generator (FPG) to determine if the A* route can be converted to a safe and maneuverable flight-pattern. The FPG module obtains each A* routes that gets sent to the A* path buffer. The FPG converts each of these A* routes to a waypoints list. The FPG searches each waypoints list for locations that, if used, add discontinuities to the flight-pattern. If it finds such a location, it terminates its search and penalizes the location. The FPG module assigns penalties to locations so that these locations are excluded from belonging to A* routes that are generated in upcoming calls to the ASA module. This process repeats for each discontinuity that is found, and terminates when no discontinuities are found. When the waypoints list is free of all discontinuities, it gets sent to the waypoints buffer and it also gets converted to a flight-pattern. The steps performed by the FPGV module can be summarized as follows: • Step 1: Use the TRV module to ensure that the turn-radius being used is for the specified ground speed. • Step 2: Use the ASA module to generate an A* route. • Step 3: Use the FPG module to convert the A* route to a waypoints list. • Step 4: Use the FPG module to search for the first location on the waypoints list that would cause a discontinuity26 on the flight-pattern; • Step 5: if a location that causes a discontinuity is found, penalize the location and return to Step 2; otherwise, continue to Step 6. 26 Discontinuities in flight-patters are similar to discontinuities as defines for functions by mathematicians. They are sharp turns and they are un-maneuverable by airborne UAV. 108 • Step 6: generate a flight-pattern. 3.5.1.1 Turn-Radius Validation (TRV) Module The FPGV module begins the flight-pattern generation process by calling the UAV TurnRadius Validation (TRV) module. The TRV module ensures that the minimum distance of each line segment on the A* path is at least equal to the maximum turn radius rt,max of the flight for the specified maximum ground speed vg,max. Using terrain maps with quantization value q that is equal to or greater than the worst-case scenario turn radius rt,max is done to enforce that the turns (on the A* route) leave enough space for the UAV to maneuver them. The TRV module computes the worst-case scenario turn-radius rt,max using a vertical acceleration of av = 1 G = 32.2 ft/s2, a bank-angle of φ = 60˚, and the specified maximum ground speed vg,max that is expected that the UAV will use on the desired flight-pattern. This worst-case-scenario turn radius is used as a check or to select the minimum value for the quantization value q of the terrain map that is currently loaded or that is to be loaded. This means that the quantization value q of the terrain map that is loaded or that is to be selected must be greater than or equal to the worst-case scenario turn-radius rt,max. The RTPP beta prototype implements UAV turn radius constraints to only the required amount. It does this by varying and setting the terrain-map-partition size q equal to the worstcase scenario turn-radius rt,max computed for UAV flying at a particular ground speeds. Adjusting the RTPP terrain map quantization value q also increases or decreases the RAM usage to only the required amount. The feature of allowing a UAV to use different ground speeds results in different values for the worst-case scenario turn radius. To handle this situation, multiple terrain maps with different quantization value q were created and each map is assigned to be used at a particular range of the specified ground speed. This method allows the terrain map that has the quantization value q that is closest to the worst-case scenario turn-radius rt,max and still greater than it to be loaded for a particular ground speed. The generation and use of terrain maps with variable quantization value q is a feature that was designed into the RTPP alpha prototype and into the TMC. Specifically, Design 3.1 forced 109 this flexibility which easily allows these variable quantization terrain maps to be generated by the TMC and used by the RTPP which are required for generating safe and maneuverable flightpatterns for UAV flying at different ground speeds. 3.5.1.2 A* Algorithm (ASA) Module The FPGV module continues the flight-pattern generation process by calling A* Algorithm (ASA) module; it does this after it uses the TRV module to enforce that the correct terrain map is loaded for the ground speed of the desired flight-pattern. Notice that the terrain map quantization value q is obtained from the File Processing and Map Feature Extraction object. This is done as a double check to ensure that the terrain map that is actually loaded has a quantization value q that is equal to or greater the turn-radius that was computed from the maximum ground speed that was entered by an operator and used by the TRV module. The ASA module’s inputs which are the flight-patterns specifications are obtained from the Real-Time Timer (RTT) module. The block diagram for this process is depicted on Illustration 3.9. The flight-pattern specifications that are input into the ASA module are listed on Table 3.27 below. Table 3.27: A* Algorithm Inputs for the Desired Flight-Pattern. Input Description ha Flight altitude AGLm Minimum Above-Ground-Level distance (xi, yi) Quantized start location ψi Quantized initial true heading (xf, yf) Quantized destination location ψf Quantized terminal true heading Quantization value of the terrain map that q is loaded 110 The ASA module requires the start location (xi, yi), the destination location (xf, yf), the flight altitude ha, the minimum Above-Ground-Level AGLm distance, and the quantization value q of the terrain map that is loaded so that it can generate an A* route. The initial and terminal true headings ψi and ψf for the desired A* route are not required by the ASA module. However, if true headings are provided, the flight-patterns initial and terminal segments will have these specified true headings27. The ASA module uses these values to compute the evaluation function f(ni) for each node that is to be generated. The heuristic function h(ni) uses the destination location (xf, yf) to compute the two-dimensional Euclidean distance between it and current location (xc, yc) on the z = 0 plane. The cost function g(ni) uses the node ns that represents the start location (xi, yi) to compute the sum of the arc-cost values to get from to the start node ns to the node that represents the current location ni. All the arcs on the implicit graph have one of two arc-cost values: 1 or ∞. The ASA module uses these arc-cost values to avoid including certain locations in the A* route that is being generated. Excluding these locations is what controls the following properties of the A* route: (1) the route’s initial and terminal true headings; (2) the minimum AGL distance between the flight-pattern and the terrain underneath it; (3) the exclusion of locations that interfere with flight-pattern smoothing. An arc-costs of ∞ is assigned to arcs that connect to vertices that are penalized. These constraints which implemented by penalizing the locations that do not meet these criteria are all represented graphically by the RTPP. First, the RTPP depicts penalized locations associated with true heading constraints as black squares. Second, high-contrast-color topographic maps are used to identify the locations that do not meet the minimum AGL constraints. Third, penalized locations associated with flight-pattern discontinuities as also depicted as black squares. In Figure 3.10 below, the A* route is depicted as a series of black line segments that connect from the center of one square to the center of the next square. Some of the A* route’s line segments appear to be longer than they actually are when no change in heading occurs 27 All true headings ψ are snapped to one of eight possible values: 0°, 45°, 90°, 135°, 180°, 225°, 270°, and 315°. 111 between successive locations. However, the A* route is an ordered set of points that separated by the space between the centers of successive squares. The effect of these penalties can be observed by comparing them to the A* route that is generated. Notice that the A* route does not pass through any of the penalized locations, which are marked with black squares. Notice the ends of the route. The start and destination locations can be distinguished by observing the color of the squares at the route’s ends. Green is for the start location and red is for the destinations location. Figure 3.10: A* route. Precise real-time guidance can be provided for an airborne UAV if its initial true heading is provided. True heading penalties are enforced on the implicit search graph before the search for a path begins. First, the arc-cost of the vertex that makes the specified true heading with the 112 start location is assigned a value of 1. This means that the virtual UAV can move from the start location to this next location. Next, arc-costs of ∞ are assigned to the arcs of the seven remaining vertices that connect to start location. This means that the cost to get from the start location to any of these seven locations is ∞. When the evaluation function is computed for each of these nodes, the node whose arc-cost is 1 will be above the ones whose arc-cost is ∞. The end result is that seven out of the eight locations adjacent to the start location are penalized when the initial true headings is specified. Figure 3.11 below shows an A* route that has a true heading constraint of 90° at the start location. Notice that seven of the locations that surround the start location are penalized and marked with a black square and that only one location is left un-penalized, and it is marked with a yellow square. Additionally, notice the true heading made between the start location and the location made with the yellow square is 90°. By observing the penalties assigned as a result of true heading constraints (See Figure 3.11), is obvious that no heading constraints were assigned to the A* route of Figure 3.10. 113 Figure 3.11: A* route with a 90° heading constraint at the start location. An A* route with the desired true heading for when the UAV is exiting it can be created if the route’s terminal heading is provided. The penalties for the terminal heading are enforced similarly to those of the initial heading. Arc-costs of ∞ are assigned to the arcs of seven vertices that connect to destination location. This means that the virtual UAV will not traverse the associated nodes because the cost to get to them from another node is ∞.There is only one node whose arc is not set to Arc-costs of ∞ are assigned to the arcs of seven vertices that connect to destination location. This means that the virtual UAV will not traverse the associated nodes because the cost to get to them from another node is ∞; it is the vertex that makes the specified true heading with the destination location. The arc of this node is assigned a value of 1. This leaves an opening for the virtual UAV to move from this location to the destination location. 114 The result of providing a terminal true heading is that seven out of the eight locations adjacent to the destination location are penalized. This can be observed on Figure 3.12 below. In this figure, an A* route that has a terminal true heading constraint of 90° is shown. The only location surrounding the destination location that is not penalized is marked with a yellow square. Notice that the true heading made between this location and the destination location is 90°. On Figure 3.11, the initial true heading was computed between the start location and the location with the yellow square whereas on Figure 3.12, the terminal true heading is computed between the location with the yellow square and the destination location. This is so because in Figure 3.11, the virtual UAV is exiting the start location and in Figure 3.12, the virtual UAV is entering the destination location. Figure 3.12: A* route with a 90° heading constraint on the destination location. 115 The true-heading constraints add precision to real-time guidance. For instance, consider the task of providing guidance to a UAV that has is flying at East at an initial true heading of 90° and the purpose is to make it fly to a presentation location and then have it return immediately to the start location. One solution to this situation is to use the RTP with an initial true heading specification equal to the initial true heading of the airborne UAV. Additionally, since the destination location is known, provide the terminal heading of the desired route so that at the end of the presentation, the UAV can begin its return to the start location. Figure 3.13 shows this solution. This A* route was provided with an initial true heading constraints of 90° and a terminal true heading constraint of 270°. Notice that the path was created by avoiding the locations that have the black squares surround the start location and the destination location. Figure 3.13: A* route with heading constraints of 90° at the start and 270° at the destination. 116 High-contrast-color topographic maps are used to identify the locations that do not meet the minimum AGL constraints. For instance, if a A* route is being generated for a UAV flying at . Notice that the route did not use the green squares. Figure 3.14: A* avoiding high-terrain. Figure 3.10 above has 17 penalized locations; there are no penalties surrounding the start location and there is only one penalty surrounding the destination location. Black squares identify locations that were penalized for one of two reasons: (1) to enforce true heading constraints; (2) to exclude locations make the guidance un-maneuverable for the UAV at that location. It was shown above that true heading constraints penalize seven of the locations that are adjacent to either the start or destination location. Therefore, the single penalty that is next to the destination location could not have resulted from a true heading constraint. 117 This penalty resulted as a flight-pattern discontinuity penalty. These penalties are assessed by the Flight-Pattern Generator (FPG) module after the ASA module had generated an A* route and sent it to the A* path buffer. As shown on Illustration 3.9, when the ASA module generates an A* route, it sends it to the A* path buffer and then the FPG module obtains the A* route in this buffer and checks if this route contains locations that caused problems. If the FPG module finds such a location, it penalizes the location and returns control to the FPGV module. The FPGV module calls the ASA module to generate another A* route by taking into account all the previously penalized locations. Since, penalized locations are ignored by the ASA module during the path generation process, the new A* route will not use them in the new path that is being generated. 3.5.1.3 Flight-Pattern Generator (FPG) Module The FPG module converts the A* path to a waypoints list by using the A* path’s first point as the start point of the waypoints list. Next, the FPG module computes the true heading between this point and the successive point. The FPG module uses this true heading value to find the next point on the A* path that changes the true heading of the A* route. When this point is found, it is recorded to the waypoints list. Next, the true heading between this point and the successive point is computed and used to find the next point on the A* path that changes the true heading of the A* route. This procedure continues until the last point on the A* path is reached. The last point on the A* path gets recorded to the waypoints list as its terminal location. The results of applying this procedure to the A* path of Figure 3.10 are shown on Figure 3.15 below as a waypoints lists that is a subset of the A* path on Figure 3.10. The waypoints are shown as grey squares. Notice that the waypoints list only includes the first point, all the intermediate points that cause a change in heading ψ, and the last point of the A* path. 118 Figure 3.15: Waypoints. Figure 3.16 below shows the A* path from Figure 3.10 and the waypoints list from Figure 3.15 together; notice that the points that do not cause a change in heading ψ on the A* path are excluded from belonging to the waypoints list. In that figure, the black squares represent penalized locations that are forbidden from belonging in the flight-patterns that is being generated. There are a total of 17 black squares which means that 17 locations were penalized; 17 penalized locations means that after performing 17 iterations of the steps performed by the FPGV module to generate a flight-pattern, the ASA module had not generated an A* path that could be made into a maneuverable flight-pattern. 119 Figure 3.16: Waypoints on top of A* route. The FPGV uses the waypoints lists generate flight-patterns (Appendix A1 describes the details of using an A* route to generate a flight-pattern). Figure 3.17 shows the results of converting the waypoints list of Figure 3.15 to a flight-pattern. In Figure 3.17, the waypoints are shown as a reference as to where circular arc-segments were placed. 120 Figure 3.17: Flight-pattern on top of waypoints list. Figure 3.18 shows the A* and the waypoints list from Figure 3.1l underneath the corresponding flight-pattern that is shown on Figure 3.17. From this image it can be determined that the ASA module was called 17 times and that only at the 18th iteration, a maneuverable A* route was found. This can be determined from the fact that the FPGV module processes the first maneuverable A* route that it finds into a flight pattern. This means that FPG module found a total of 17 discontinuities in 17 previously generated A* routes; One discontinuity penalty is enforced per A* iteration. Penalties resulting from discontinuities indicate the number of A* iterations that were performed before a maneuverable A* path was generated. 121 Figure 3.18: Flight-pattern on top of waypoints list on top of A* route. 3.5.2 Diagnostic System Module The Diagnostic System (DS) is a tool that was built into the RTPP to aid in its debugging and development in order to obtain diagnostic information on its output and performance. It consists of a graphics display, a nodes generated counter, a real-time path-requests simulator. The Graphics Display (GD) module is as an analysis tool used for observing A* routes, waypoints lists, and flight-patterns. This allows the RTPP output to be analyzed visually. The nodes generated counter was added to evaluate the A* algorithm’s performance when experimenting with the arc costs of a search-graphs or when using a heuristic function that has not been proven to be admissible. The fact that the A* algorithm exhausts computer memory 122 when it uses a heuristic function that is not admissible is known and during several experiments of this nature, there were instances when the A* algorithm used all of the computer’s memory. The simulation module was used to estimate the real-world and real-time RTPP throughput by performing the following tasks: • Establishing if flight-pattern are generated in less than 3 seconds, which establishes if real-time guidance can be attained from the RTPP • Iteratively generating different flight-pattern in real-time to estimate the endurance and stability of the RTPP beta prototype. • Determine if speed or stability became as issue when the RTPP beta prototype repeatedly queried for flight-patterns The level of stability is gauged by using the simulator to create several flight-patterns in succession. This allows the developer to look for problems in the overall system (e.g. program corruption, computer malfunction, real-time performance degradation). The simulator shows that extremely complicated flight-patterns are generated very fast. The simulator verified that benchmarking tools are required to obtain the precise flight-pattern generations times. The simulator also shows that repeatedly querying the RTPP for flight-patterns does not affect stability or the real-time performance. 3.5.3 Real-Time Timer (RTT) Module The timer operates at 10 Hz. Its purpose is to provide unlimited flight-patterns to the DFCS real-time computer network during missions. The timer module is linked to a UDP network connection module and to the diagnostic system’s simulator. It accepts flight-pattern specifications from these two modules and passes them to the FPGV module. If the flight-pattern request is obtained from the network module, the RTT returns a flight-pattern to the network module. 123 3.5.4 Network Link Flight-pattern specifications are sent from the CCS as UDP messages via the computer network to the RTPP. These messages are accepted by the RTPP at the Network Link (NL) module. This NL module places the flight-pattern specifications into a shared memory buffer, which is a subprogram that is spawned as a second process upon start up of the RTPP. Last, the RTT accesses the data from shared memory buffer and passes this data to the ASA module. This process continues for each set of flight-pattern specifications that are sent from the DFCS realtime computer network. The dataflow is depicted on the block diagram of Illustration 3.9. 124 Chapter 4: Flight-Pattern Analysis and RTPP Empirical Testing Results The RTPP is a prototype of an innovative product. Summarizing—the RTPP generates flight-patterns at constant MSL altitude for UAV flying over known geographical locations where all the obstacles are static. It uses DTED data as input to determine the locations of these obstacles; it uses user-inputs to determine the desired flight-pattern constrains; it uses AI technology to process the inputs and then generate minimal-distance and obstacle free routes; it links to the DFCS computer network to provide it with the output it generates; it provides the specified flight-patterns in real-time. The output of this prototype is ready to undergo analysis and the prototype itself it ready to undergo empirical testing on the DFCS real-time computer network and the RTPP output is ready to be used to guide simulated UAV. 4.1 PERFORMANCE CRITERIA The real-world reliability of the RTPP depends on how it performs two tasks: (1) its ability to generate flyable (i.e. minimal-distance, safe, and maneuverable) flight-patterns; (2) its ability to generate these flight-patterns in real-time. MATLAB analysis is performed to determine if the flight-patterns are minimal-distance and safe. The RTPP real-time performance is tested via empirical testing. The maneuverability of these flight-patterns is evaluated by examining data obtained in three flight-simulations on the 6-DOF DFCS flight simulator. A simulated MQM-107D is employed as the UAV in each of the three simulations. The data from each simulated mission is recorded at 10 Hz. This is consistent with real-world missions. Because these simulated missions have all the properties of live missions except for the risk of material loss, the UAV data for each flight is indicative of how a real-world UAV will perform. 4.2 SETUP FOR ANALYSIS OF PRE-LAUNCH FLIGHT-PATTERNS 4.2.1 Pre-launch Flight-pattern Parameters To test if the RTPP generates minimal-distance and safe flight-patterns, three flight- patterns were generated so that they can be compared to each other. Each of these flight-patterns 125 was generated for a different flight altitude in order to vary the presence of obstacles between the start and destination locations. The following altitudes were used: 7,000 ft MSL, 6,750 ft MSL, and 6,500 ft MSL. The obstacles for the UAV are the terrain-elevations that are equal to or greater than the flight-altitude. Since obstacles increase as flight altitude decreases, the paths at the lowest flight altitudes are expected to be lengthier since they have to be created to go around the obstacles. To visually compare and emphasize the effects of obstacles on RTPP flightpatterns, three flight-patterns were created with identical start locations and identical destination locations. The parameters for these three flight-patterns are listed on Tables 4.1, 4.2, and 4.3 below. Table 4.1: Pre-launch Parameters for a 7,000 ft MSL Flight-pattern. Flight-Pattern Symbol Reference Values RTPP Quantized Values Start Location (xi, yi) (-17,685 ft, -150,969 ft) (-15,680 ft, -148,960 ft) Start Heading ψi 0° Flight Altitude ha 7,000 ft MSL Destination Location (xf, yf) (-100536 ft, -37056 ft) Destination Heading ψf 45° Minimum AGL AGLm 150 ft Ground Speed vg 600 ft/s Properties (-101,920 ft, -39,200 ft) Table 4.2: Pre-launch Parameters for a 6,750 ft MSL Flight-pattern. RTPP Quantized Flight-Pattern Properties Symbol Reference Values Values Start Location (xi, yi) (-17,685 ft, -150,969 ft) Start Heading ψi 0° 126 (-15,680 ft, -148,960 ft) Flight Altitude ha 6,750 ft MSL Destination Location (xf, yf) (-100,536 ft, -37056 ft) Destination Heading ψf 45° Minimum AGL AGLm 150 ft Ground Speed vg 600 ft/s (-101,920 ft, -39,200 ft) Table 4.3: Pre-launch Parameters for a 6,500 ft MSL Flight-pattern. RTPP Quantized Flight-Pattern Properties Symbol Reference Values Values 4.2.2 Start Location (xi, yi) (-17,685 ft, -150,969 ft) Start Heading ψi 0° Flight Altitude ha 6,500 ft MSL Destination Location (xf, yf) (-100,536 ft, -37,056 ft) Destination Heading ψf 45° Minimum AGL AGLm 150 ft Ground Speed vg 600 ft/s (-15,680 ft, -148,960 ft) (-101,920 ft, -39,200 ft) RTPP Output The flight-patterns from Tables 4.1, 4.2, and 4.3 above were generated by the RTPP during the pre-launch phase of each simulated mission. The RTPP output is shown on Figures 4.1 to 4.5 below. 4.2.2.1 A* Routes on RTPP GUI Figures 4.1 to 4.3 are of the A* route. The green and red squares surrounding the route’s start and destination location indicate penalized locations that force the A* route to have the true headings specified on Tables 4.1 to 4.3. The solid white squares next to the routes in Figures 4.2 127 and 4.3 indicate that a penalty was assigned to the location. Each A* iteration that does not produce a flyable route assigns a penalty at the first problem location which caused the flightpattern to become un-flyable. The number of white squares is equal to the number of A* iterations that were performed to generate a valid flight route. Figure 4.1: RTPP GUI displaying A* route specified on Table 4.1. 128 Figure 4.2: RTPP GUI displaying A* route specified on Table 4.2. 129 Figure 4.3: RTPP GUI displaying A* route specified on Table 4.3. 4.2.2.2 Flight-patterns sent to DFCS Real-time Network The data that specifies the routes from Figures 4.1 to 4.3 were sent to the RTPP from the DFCS console subsystem. That is, the computer commands originated at the DFCS console subsystem, and the RTPP returned the flight-patterns through the network to the CCS computer. Then the flight-patterns were loaded to the DFCS console subsystem. Figures 4.4 and 4.5 show the flight-patterns on the DFCS console subsystem that correspond to Figures 4.2 and 4.3. 130 Figure 4.4: Flight-pattern from Table 4.2 on DFCS Console Subsystem. 131 Figure 4.5: Flight-pattern from Table 4.3 on DFCS Console Subsystem. 4.2.3 Milestone 1 The RTPP was conceptualized as part of this Thesis. Since its conceptualization, it has been implemented. Figures 4.1 to 4.3 are evidence that the RTPP employs the A* algorithm to use terrain elevation data to generate routes. Figures 4.4.and 4.5 are evidence that the RTPP can make a flight-pattern from an A* route and that it can pass these flight-patterns to the DFCS realtime computer network and that the RTPP flight-patterns are compatible with the DFCS guidance system. 4.3 FLIGHT-PATTERN DISTANCE ANALYSIS Distance is used as one criterion that establishes if a route is flyable. UAV flight time depends on limited resources (e.g. fuel) and limited resources deplete as flight time increases. 132 Therefore, a UAV that is low on fuel should not be provided with a longer route than necessary to get it to the destination location. 4.3.1 Impact of Obstacles on Flight-pattern Distance The distance of RTPP flight-patterns is smallest when no obstacles exist between the start and the destination location. To verify this claim, terrain elevation data and the three RTPP flight-patterns from Tables 4.1, 4.2, and 4.3 are plotted together in Figures 4.6 and 4.7 below. The flight-patterns have identical start locations, identical destination locations, but different flight altitudes albeit the flight altitude of each flight-pattern is constant. Constant flight altitude for each flight-pattern allows the terrain elevations to become obstacles that lie between the start and the destination location of each flight-pattern. Figure 4.6: Side view of flight-patterns from Tables 4.1 to 4.3 over elevation data. 133 Figure 4.7: Bird’s-eye view of flight-patterns from Tables 4.1 to 4.3 over elevation data. Figure 4.8 shows that the flight-pattern with the smallest distance is the one at 7,000 ft MSL and that the flight-pattern at 6,750 ft MSL is shorter than the flight-pattern with the largest distance, which is at 6,500 ft MSL. This is because the smallest flight-pattern passes in between the mountains. This means that the A* algorithm found passages between the obstacles and that it used the corresponding locations to link the start location to the destination location. This is also true for the medium length flight-pattern at 6,750 ft MSL. As can be seen on Figure 4.6, the A* algorithm did not use the passages available at 7,000 ft MSL. Instead, it encountered high elevation terrain at the corresponding (x, y) locations and thus continued to search for other passages. It ended up encountering other passages north of the those found for the 7,000 ft MSL flight-pattern. The same is true for the longest flight-pattern, which is at 6,500 ft MSL. The A* 134 algorithm had to search longer (both time and computation wise) to find passages between the obstacles. Figure 4.8: Flight-patterns from Tables 4.1 to 4.3 plotted on an ENU x-y plane. Using terminology from AI and graph theory, a claim in the literature is that A* is optimal (i.e. admissible)—that it provides the shortest path. I found this to be true only for connected graphs. An example of a connected graph is the state-space that was provided to generate the 7,000 ft MSL flight-pattern where the goal node was reachable from almost all other nodes. The state-space provided for the 6,500 ft MSL flight-pattern shows a graph with a large disconnect that is represented by the obstacle. Hence, the goal node is not reachable from as many nodes as was the case for the 7,000 ft MSL flight-pattern. 135 4.3.2 Milestone 2 The plots on Figure 4.8 verify that the RTPP has reliable obstacle avoidance capabilities and that it returns a minimal distance route—especially in the absence of obstacles. 4.4 FLIGHT-PATTERN SAFETY ANALYSIS For a flight-pattern to be safe, it must not to have any obstacles in close proximity to it for a specified distance to account for error when the UAV deviates28 from the flight-pattern. Hence the terrain beneath the flight-pattern must not be closer than a specified distance. Additionally, concerning the sides of the flight-pattern, up to a certain distance away, the area that outlines the flight-pattern should have a minimum separation distance between it and the terrain underneath it. To control the distance between the flight-pattern and the terrain underneath it, the user specified minimum above-ground-level AGLm distance is used. All elevation coordinates ha on the A* route are at least the minimum above-ground-level AGLm distance above the terrain elevation he that was assigned to the terrain-map-partition, i.e. ha - he ≥ AGLm for each location on the A* route. The distance between the area, which outlines the flight-pattern to its sides, and the terrain underneath this area is controlled with terrain-map files. The highest terrain elevation value h that is found within a terrain-map-partition is assigned as the elevation he of the entire partition. This ensures that the values he that are assigned to the centers of terrain-map-partitions have an above-ground-level distance AGL that is equal to that of the actual location within the terrain-map-partition with the highest terrain elevation. This forces the remaining area within each terrain-map-partition (save the location with the highest peak) to contain an above-groundlevel distance AGL that is greater than that at the center of its terrain-map-partition. The location with the highest peak will contain an above-ground-level distance AGL that is equal to that at the center of its terrain-map-partition. 28 Deviation from the ideal is imminent in any real-world system. 136 The safest parts of flight-patterns are those that correspond to the centers of the terrainmap-partitions. These locations guarantee that the minimum distance between the map partition area (which is q2 ft) and the entire terrain underneath it is at least AGLm ft. Therefore, all flightpatterns elevations ha that correspond to the centers of terrain-map-partitions are guaranteed by the RTPP to have a surrounding area29 of q2 ft which increases from q/2 ft at its sides to 2 q/2 at its diagonals. This area is at least AGLm ft above the highest peak he (i.e., he + AGLm ≤ ha). Hence A* routes whose locations join to create one straight line are extremely safe because they are guaranteed to have an above-ground-level distance AGL that is greater than the specified minimum AGL AGLm for an area that extends out from the flight pattern with an AGL safety radius rs-AGL whose distance is 2 q/2 ft to the diagonals at the ends of the flight-pattern and q/2 ft at the verticals and the horizontals of the flight-pattern. On the contrary, A* route line-segments that link terrain-map-partitions that are diagonal to each other exit the first terrain-map-partition through one of the partition’s corners. While exiting the first terrain-map-partition, these line-segments occupy four corners and hence four partitions simultaneously before they enter the next partition. Two of these partitions belong to the A* route and the other two do not. The two terrain-map-partitions that do not belong to the A* route might be penalized locations that did not meet the minimum AGL criteria. The problem is that the resulting flight-pattern curves will be in the proximity of these two locations. Hence it becomes apparent that these areas, which occur at the four corners, require further analysis. Out of the four terrain-map-partition areas, where two of them are used to link a line segment on the A* route, two of these areas of values q2 ft are safe and the other two, or a combination of the two, might or might not be safe. Two assumptions are made about the two terrain map partition areas that might or might not be safe: • Mountains increase or decrease gradually. 29 The size q of the terrain map partitions for a UAV with a ground speed of v = 600 ft/s is approximately q ≈ 6,455 g ft. Hence, for this value of q, the distance to the sides of the partition’s center is greater than 3,000 ft. It is common for DFCS guidance, navigation, and control systems to maneuver a UAV with cross-track errors of approximately 40 ft. 137 • It is unlikely that the highest peak on the terrain-map-partition will always occur at the area that is closest to the safe terrain-map-partitions. An analysis is performed to prove or disprove if these two assumptions when combined with the minimum AGL criteria create A* routes that have an area that surrounds them whose aboveground-level distances AGL approximates or exceeds the specified minimum above-ground-level distance AGLm. The analysis is carried out on the entire flight-pattern to verify that each of the procedures, tasks, and assumptions described above when combined yield a flight-pattern with a surrounding area that is a safe distance above the terrain. The data for this analysis is the NED elevation data queried at 98 ft and the RTPP flight-patterns from Tables 4.1, 4.2, and 4.3. In the analysis, each point on the flight-pattern is compared with the highest terrain elevation value that is found within a circle. The radius of this circle is called the AGL safety radius rs-AGL and it extends out from the location on the flight-pattern that is being used for the comparison. This analysis is performed using three different AGL safety radii rs-AGL for each flight-pattern: rs-AGL = 1,000 ft, rs-AGL = 2,000 ft and rs-AGL = 3,000 ft. 4.4.1 Safety Analysis for Flight-pattern at 7,000 ft MSL Figure 4.9 below shows the flight-pattern from Table 4.1. It is an altitude of 7,000 ft MSL and the specified minimum above-ground-level distance for this flight-pattern is AGLm = 150 ft. The end part of the flight-pattern can provide the most information from the analysis (i.e. the part that begins where the flight-pattern is headed between the two mountain peaks and ends at the destination location). 138 Figure 4.9: Flight-pattern from Table 4.1 near and over high elevation terrain. The plots on Figure 4.10 are used for comparing the flight-pattern altitude ha with the highest terrain elevation value he found within three different circles whose AGL safety radii rsAGL is as follows: 1,000 ft, 2,000 ft, and 3,000 ft. The dash-dot black trace at ha = 7,000 ft MSL is the flight-pattern altitude. The solid blue trace is the terrain elevation he that is directly underneath the flight-pattern. The solid black trace is the maximum terrain elevations found inside a circle of AGL safety radius rs-AGL = 1,000 ft, which extends out from each location on the flight-pattern that is being compared. The same is true for the solid pink and solid red traces; however, they each use AGL safety radii rs-AGL of 2,000 ft and 3,000 ft, respectively. Figure 4.10 shows that there are no mountain peaks that pose a collision threat with the flight-pattern. On the contrary, the flight-pattern appears to provide a flight-altitude error cushion to the UAV of 139 approximately 250 ft. This error cushion is much larger than what is normally used. Generally, the ALE has been bounded by 40 ft. Figure 4.10: Flight-pattern from Table 4.1 proximity to high elevation terrain. 4.4.2 Pre-launch Flight-pattern at 6,750 ft MSL Figure 4.11 below shows the flight-pattern from Table 4.2. It is an altitude of 6,750 ft MSL and the specified minimum above-ground-level distance for this flight-pattern is AGLm = 150 ft. Notice the curve at the middle part of the flight-pattern; the terrain elevation at this location appears to have the highest elevations, which should make the most useful for this analysis. 140 Figure 4.11: Flight-pattern from Table 4.2 near and over high elevation terrain. The line-types and colors of the plots on Figure 4.12 below are used identically and have the same meaning as those of Figure 4.10 above. In Figure 4.12, the red trace (which is created by the highest elevation terrain found within a circle whose AGL safety radius is rs-AGL = 3,000 ft) almost touches the dash-dot black trace, which represents the flight-pattern altitude ha at flight-pattern length of 60,000 ft. However, since the solid black and the solid pink traces have their highest elevation terrain separated from the flight-pattern altitude ha by a distance of approximately 250 ft. The black and the red traces show that there is collision threat inside a radius of 2,000 ft. The high elevation terrain on the red trace only poses an unlikely UAV collision risk outside a radius of 2,000 ft from the flight-pattern. I call the collision unlikely since the UAV flying on the flight-pattern would need to simultaneously have a CTE larger than 2,000 ft and an ALE of about 50 ft (where the error is a result of the UAV being under the flight141 pattern); and all this must occur at the flight-pattern length of about 60,000 ft—a highly unlikely condition for a mature target command and control system. Figure 4.12: Flight-pattern from Table 4.2 proximity to high elevation terrain. 4.4.3 Safety Analysis for Flight-pattern at 6,500 ft MSL Figure 4.13 below shows the flight-pattern from Table 4.3. It is an altitude of 6,500 ft MSL and the specified minimum above-ground-level distance for this flight-pattern is AGLm = 150 ft. Notice that the flight-pattern is always in the proximity of high terrain but that it stays away from it. This characteristic is a direct result of the minimum AGL criteria. As the mountain elevations increase, the distance between the mountains and the flight-pattern altitude decreases 142 up to the point that this distance becomes less than the minimum above-ground-level AGLm distance. Figure 4.13: Flight-pattern from Table 4.3 near and over high elevation terrain. The line-types and colors of the plots on Figure 4.14 below are used identically and have the same meaning as those of Figures 4.10 and 4.12 above. In Figure 4.14, the red trace that is created by the highest elevation terrain (found within a circle whose AGL safety radius is rs-AGL = 3,000 ft) passed through the dash-dot black trace, which represents the flight-pattern altitude ha at flight-pattern length of 6,000 ft. However, the solid black and solid pink traces have their highest elevation terrain separated by approximately 150 ft from the flight-pattern altitude ha. Therefore, the high elevation terrain on the red trace that exceeds the flight-pattern altitude of 6,500 ft MSL does not pose a high collision threat to a UAV flying on the flight-pattern for the same reasons provided for the plots on Figure 4.12 above (the DFCS GNC system rarely has a CTE that exceeds 50 ft or a ALE that exceeds 40 ft). 143 Figure 4.14: Flight-pattern from Table 4.3 proximity to high elevation terrain. 4.4.4 Milestone 3 Terrain elevations he are never greater than the flight-pattern altitude ha up to an AGL safety radius of 2,000 ft from any point on the flight-pattern. Furthermore, the highest terrain elevations were about 100 ft below the flight-altitude for this safety radius. This means that the UAV CTE must be bounded to 2,000 ft and the UAV ALE must also be bounded to 100 ft. CTE of 2,000 ft is a very large cushion for error as is an ALE of 100 ft since DFCS has very tight control on cross-track and altitude-error. All though there are exceptions (e.g. a realworld UAV can malfunction as a result of wear-and-tear or of a defective component), DFCS commands controls UAV at CTE and ALE values of less than 40 ft and 50 ft, respectively. 144 4.5 SETUP FOR REAL-TIME PERFORMANCE ANALYSIS To analyze the real-time performance of the RTPP, flight-patterns were generated for airborne UAV during the flight-simulations. These flight-patterns were generated after the takeoff phase but before the landing phase in two separate flight simulations. 4.5.1 Real-time Flight-pattern Conditions for Airborne UAV 4.5.1.1 Pre-determined Real-time Flight-pattern Parameters Two simulations were performed where real-time flight-patterns were generated by the RTPP in response to requests that originated at the DFCS console subsystem. One real-time flight-pattern was generated in each of the two flight simulations. For each of these flightpatterns, the destination locations were precisely pre-determined. The reference values for ground speeds and flight altitudes were also pre-determined as 600 ft/s and 6,500 ft MSL, respectively; however, the actual ground speed and altitude values to be used for generating the flight-patterns were obtained in real-time from the airborne UAV by the GCN algorithms. These measurements were obtained at the time of the flight-pattern request. The pre-determined parameters for these two flight-patterns are listed on Tables 4.4 and 4.5 below. The flightpatterns can be distinguished by their initial direction and their destination flight-altitude. The initial directions of the airborne UAV are Southern and Northern and their respective destination altitudes are 6,750 ft MSL and 6,500 ft MSL. Table 4.4: Pre-determined Flight-pattern Parameters for a Southern Bound Airborne UAV. RTPP Quantized Flight-Pattern Properties Symbol Reference Values Values Initial Direction South Destination Flight Altitude h 6,750 ft MSL Destination Location (xf, yf) (-17,685 ft, -150,969 ft) Destination Heading ψf 0° 145 (-15,680 ft, -148,960 ft) Minimum AGL AGLm 150 ft Ground Speed vg 600 ft/s Table 4.5: Pre-determined Flight-pattern Parameters for a Northern Bound Airborne UAV. RTPP Quantized Flight-Pattern Properties Symbol Reference Values Values Initial Direction North Destination Flight Altitude h 6,500 ft MSL Destination Location (xf, yf) (-17,685 ft, -150,969 ft) Destination Heading ψf 0° Minimum AGL AGLm 150 ft Ground Speed vg 600 ft/s (-15,680 ft, -148,960 ft) 4.5.1.2 Real-Time Flight-pattern Conditions Conditions were used instead of pre-determined values for the start locations. In each simulation, the condition for each start location was as follows: first, fly the UAV to approximately 6,500 ft MSL and lock it at that altitude; second, decrease (or increase) the UAV ground speed to 600 ft/s and lock it; and third, fly the UAV away from the destination location. When these conditions were set, the existing location, heading, ground speed and altitude were used as the start parameters. The start parameters were obtained at the precise moment when the flight-pattern requests were entered into the DFCS console subsystem. Tables 4.6 and 4.7 below show the start parameters that the RTPP received which were sent from the DFCS console subsystem. Table 4.6: Real-time Flight-pattern Parameters for a Southern Bound Airborne UAV. 146 Flight-Pattern Properties RTPP Quantized Symbol Reference Values Obtained in Real-Time Values Initial Direction South Start Location (xi, yi) (-17,685 ft, -150,969 ft) Start Heading ψi 180° Ground Speed vg 600 ft/s Flight Altitude h 7,000 ft MSL (-15,680 ft, -148,960 ft) Table 4.7: Real-time Flight-pattern Parameters for a Northern Bound Airborne UAV. RTPP Quantized Flight-Pattern Properties Symbol Reference Values Values Initial Direction 4.5.2 North Start Location (xi, yi) (-17,685 ft, -150,969 ft) Start Heading ψi 0° Ground Speed vg 600 ft/s Flight Altitude h 6,500 ft MSL (-15,680 ft, -148,960 ft) Real-time RTPP Output To generate the real-time flight-patterns, the UAV were situated in the worst case scenario in that they were flying away from the destination location. This was done to demonstrate that the RTPP uses the current heading of the UAV when generating flight-patterns. This prevents the situation where an instantaneous and unrealistic change in direction is required from an airborne UAV. The maximum change in direction required by RTPP flight-patterns is 45˚. This can be examined on Figures 4.15 and 4.16 below. 147 4.5.2.1 A* Routes sent to RTPP GUI As specified on Table 4.6, this real-time flight-pattern was generated when the UAV was flying south. To navigate the UAV from its current location, which is dynamic, the RTPP uses the initial true heading, which in this case is 180˚, to generate the flight-pattern. Notice on Figure 4.15, that the start location is represented by a dark-green square which has seven light-green squares and a yellow square surrounding it. The light-green squares represent the penalized locations that are adjacent to the start location. The locations with light-green squares are penalized with a cost of infinity and they cannot be used as locations in an A* route or a flightpattern. Therefore, only one location is accessible from the start location; it is the location that has the yellow square. This location is south of the start location and it is directed at a true heading of 180˚ from the start location. Observe that the destination location, represented by a maroon square, has seven red squares and one yellow square surrounding it. The red squares indicate locations that are adjacent to the destination location and that are penalized with a cost of infinity. This makes the location with the yellow square the only location that is accessible to the destination location. Notice that the destination location is directed at a true heading of 0˚ from the yellow square. Therefore, the destination parameters on Table 4.4 have been enforced. 148 Figure 4.15: RTPP GUI displaying A* route specified by Tables 4.4 and 4.6. Figure 4.16 shows the flight-pattern that was generated for the condition specified on Table 4.6. It is for a UAV whose initial true heading is north. Since this UAV is flying opposite of the destination location, the RTPP penalized the locations whose directions from the start location to the adjacent locations are not equal to the initial true heading of 0˚. The destination parameters described in Table 4.5 specify a destination heading of 0˚. Notice that none of the red squares surrounding the destination location yield a true heading of 0˚ with the destination location. Hence the destination location has a true heading only from the yellow square, which is directly beneath it. Therefore, this is the only adjacent location that is accessible to the destination location and the destination heading parameter is enforced. 149 Figure 4.16: RTPP GUI displaying A* route specified by Tables 4.5 and 4.7. 4.5.2.2 Flight-patterns sent to DFCS Real-time Network In the worst case scenario, it takes three seconds for the RTPP to generate a flight-pattern but it generally takes less than three seconds. However, a time delay for making flight-patterns ready for use occurs at the console subsystem. This is because a human operator has to type and enter two keyboard commands immediately after issuing a flight-pattern request to the RTPP. The quicker these commands a entered, the smaller the MQM-107D offset between the start coordinates sent to the RTPP and the current location of the UAV. The keyboard commands are necessary because they put the MQM-107D in automatic control mode and they have it acquire the flight-pattern just generated in real-time by the RTPP. Notice in Figure 4.17 that the UAV acquired the RTPP real-time flight-pattern from Figure 4.15. 150 Figure 4.17: Flight-pattern from Tables 4.4 and 4.6 on DFCS Console Subsystem. 4.5.3 Milestone 4 Generally, it takes much less than three seconds for the RTPP to generate a flight-pattern. The amount of time it takes for the DFCS console subsystem to receive the RTPP flight-pattern after it sent the request depends on issues external to the RTPP (e.g. computer network communications, operator typing ability). Nonetheless, since the RTPP technology takes less than three seconds to generate a solution, it is a viable real-time solution. There is an offset between the airborne UAV and the start location of real-time flightpattern. This offset is a product of the time delay between the flight-pattern request and the time that the flight-pattern is loaded onto the DFCS console subsystem. The offset is attributed to the following two items: (1) the constantly changing location of the airborne UAV; (2) the 151 quantization error that results from snapping the current location of the UAV to the center of the RTPP grid tile. The RTPP output on Figures 4.15 and 4.16 show that the RTPP uses the UAV start and destination direction vectors to generate flight-patterns that do not require more than a 45˚ change in true heading. This allows the UAV to adjust its true heading quickly and gradually to the direction of the flight-pattern’s segments. Hence, no instantaneous change in direction is required. These elements together establish that the innovations and technology used in the RTPP are functional in a real-time environment. In the first instance, a flight-pattern is requested for a UAV flying south and the RTPP returned a flight-pattern whose initial segment is directed south. The offset between the UAV and the real-time flight-pattern is small enough such that the UAV is able to acquire to it. Lastly, the real-time flight-pattern was returned to the DFCS real-time network in less than three seconds from the time it received the flight-pattern request. In the second instance, a flight-pattern is requested for a UAV flying north. The RTPP returned a flight-pattern whose first segment is directed north. Additionally, the UAV was able to acquire the real-time flight-pattern. This means that the effects of the offset between the UAV and the flight-pattern were negligible. This is also true for the time it took for the RTPP to provide the DFCS real-time computer network with a flight-pattern. Therefore, the RTPP and the technology it employs can function for guiding airborne UAV in a real-time environment. 4.6 SETUP AND ANALYSIS CRITERIA FOR 6-DOF FLIGHT-SIMULATIONS The DFCS 6-DOF flight simulator is used to obtain flight data that is representative of a real-world flight. The flight simulator models aircrafts and most of the states that they experience as a result of the atmosphere. The aircraft model to be used in the flight simulations is the MQM107D subscale UAV. The simulator is to model the MQM-107D as DFCS commands and controls real-world MQM-107D. Therefore, besides modeling the UAV sensors, engine forces and moments, servo subsystems, and onboard autopilot, the flight simulator is also to model the atmosphere, the DME data-link subsystem, and the navigation, guidance, and control systems. 152 4.6.1 DFCS Simulation Setup The DFCS 6-DOF flight simulator is used in this study to perform three flight simulations of the DFCS GNC system being utilized to control the simulated MQM-107D subscale UAV that are being guided in real-time by RTPP flight-patterns (This scenario is depicted on Illustration 3.8). The simulations are used to analyze following flight conditions: 1. The RTPP ability to guide a UAV in real-time 2. The MQM-107D ability to stay on the RTPP generated flight-pattern with minimal cross-track and altitude error 3. The MQM-107D ability to transition between different RTPP generated flightpatterns. (1) is concerned with providing a flight-pattern that takes into account the UAV dynamics (in particular, how does the RTPP provide a flight-pattern for an airborne UAV that is moving at an awkward heading with respect to the destination location). The main test of (2) is if the UAV is capable of maneuvering on extremely rigorous RTPP flight-patterns. (3) is used for examining the how a UAV transitions between different RTPP flight-patterns 4.6.2 Guidance Errors Analysis The Altitude Error (ALE) and the Cross-Track Error (CTE) from Section 3.8 are used to measure the extent that the UAV is capable of maneuvering and following the RTPP generated flight-patterns. Concerning flight-altitude, the ideal condition is to have the UAV flying at an altitude equal to that of the flight-pattern altitude ha for the duration of the flight-pattern; this corresponds to ALE = 0 ft on the flight-pattern. Concerning the UAV perpendicular displacement on the flight-pattern, the ideal condition is to have the UAV locked on the flightpattern such that it follows it exactly (in a similar manner to how a train follows the tracks). If this occurs, the UAV will recreate the flight-pattern with its trajectory; this corresponds to a CTE = 0 ft. These two guidance errors are the references that establish if the UAV follows the RTPP flight-patterns to a safe and realistic tolerance. 153 4.7 DATA ANALYSIS FOR FLIGHT SIMULATION AT 7,000 FT MSL This simulation is the base case—only one flight-pattern is used and it was not created in real-time. This simulation proves two things: (1) that RTPP flight-patterns are compatible with DFCS; (2) that the turn radii on the flight-pattern are maneuverable by a simulated MQM-107D subscale UAV. This simulation establishes that the RTPP performs flawlessly when it is not used in real-time, which is a necessary condition before it can function well in real-time. The simulation began by generating the pre-launch flight-pattern that is specified on Table 4.1. It proceeded by manually launching a simulated MQM-107D subscale UAV. The DFCS GNC system was used to maneuver the UAV to the start location of the flight-pattern. When the UAV reached the start of the 7,000 ft MSL flight-pattern, it was put to automatic control mode and the DFCS GNC system commanded and controlled it for the entire duration that the UAV was on the flight-pattern. 4.7.1 Pre-launch Flight-pattern Maneuverability Analysis In Figure 4.18 below the flight-pattern is the solid blue trace and the actual MQM-107D flight trajectory is the dash-dot red trace. This plot shows that the UAV followed the RTPP flight-pattern flawlessly. 154 Figure 4.18: Actual flight trajectory on flight-pattern from Table 4.1. The plots on Figure 4.19 show that the RTPP created a flight-pattern that meets the specified above-ground-level distance of 150 ft. Figure 4.19 (a) shows the flight-pattern as a blue trace, the actual UAV flight trajectory as a dotted red trace, and the terrain elevation he as a black trace. The RTPP flight-pattern altitude ha = 7,000 ft MSL is well above the specified minimum AGL of 150 ft. The smallest value of AGL distance is about 500 ft and it occurs at approximately 250 s. Figure 4.19 (b) shows the actual UAV AGL distance as a solid red trace and the specified flight-pattern AGL as a solid blue trace. The UAV always exceeded the specified minimum AGL by at least 200 ft. 155 Figure 4.19: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. Figure 4.20 (a) shows a time plot of the UAV ENU x-coordinate; Figure 4.20 (b) shows a time plot of the UAV ENU y-coordinate; Figure 4.20 (c) shows a time plot of the UAV true heading ψ; Figure 4.20 (d) shows a time plot of the UAV roll angle φ. True heading of 0˚ and 45˚ were specified for this flight-pattern’s start and destination locations, respectively. The vertical lines at the start of the true heading trace indicate oscillations from and between 0˚ and 359˚ since 359˚ transitions to 0˚ (as opposed to 360˚) and vice-versa; nonetheless, the UAV was traveling north at the start of the run. The true heading at the end of the plot is at 45˚. These values show that the UAV used the true headings that were specified on Table 4.1. The roll angle plot shows that the UAV made only two turns during the flight: one at the beginning and one at the end. At the start of each of the rolls, the roll angle φ appears to exceed 60˚ briefly and then the value stabilizes at about 55˚; this is a result from a roll angle 156 bound of φ = 60˚ imposed on the roll angle; hence DFCS commands a maximum roll angle to the UAV of φ = 60˚. Figure 4.20: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. Figure 4.21 (a) shows a time plot of the UAV ground speed vg; Figure 4.21 (b) shows a time plot of the UAV normal acceleration an; Figure 4.21 (c) shows a time plot of the UAV ALE. Figure 4.21 (d) shows a time plot of the UAV CTE. Figure 4.21 (e) shows a time plot of the UAV Along-Track Error (ATE). The ground speed of the UAV had minor variations from the specified speed of 600 ft/s when the UAV was performing its turns. These variations resulted from the ATE. The trace on Figure 4.21 (e) shows that the ATE was positive which means that the UAV got ahead of the rabbit. The DFCS GNC system commanded a lower ground-speed to allow the rabbit to catch up 157 with the UAV. However, the rabbit ended up getting ahead of the UAV, and the GNC system commanded a higher ground-speed so that the UAV could catch up with the rabbit. The ATE approaches zero after the variations in ground-speed; at zero ATE, the rabbit is locked to the UAV on the flight-pattern. The CTE and the ALE increased to approximately 50 ft and 20 ft, respectively, when the UAV exceeded 600 ft/s. However, these errors are normal when the DFCS is commanding and controlling a UAV. Furthermore, the ALE verifies that the MQM107D stayed at an altitude of approximately 7,000 ft MSL which is what is commanded by the RTPP flight-pattern. The UAV CTE and ALE are within the AGL safety radius. Figure 4.21: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. 158 4.7.2 Milestone 5 Having a simulated UAV maneuver the proposed trajectory establishes that the preliminary conditions required for real-time guidance have been met. This simulation demonstrates that the simulated MQM-107D stayed on the RTPP generated flight-pattern without difficulty. 4.8 DATA ANALYSIS FOR FLIGHT SIMULATION AT 6,500 AND 6,750 FT MSL This simulation is used for two purposes: (1) to acquire data on how an MQM-107D handles transitioning between two RTPP flight-patterns; (2) to perform empirical testing to estimate the real-time performance of the RTPP. The simulation began by generating the pre-launch flight-pattern that is specified on Table 4.2. The simulation proceeded by manually launching a simulated MQM-107D subscale UAV. The desired state of the UAV was a ground speed of 600 ft/s at a flight altitude of 6,500 ft MSL. The ground speed was allowed to exceed 600 ft/s during the take-off phase where the UAV was climbing to the specified flight altitude. When the MQM-107D reached an altitude of approximately 6,500 ft MSL, the Barometric Altitude Hold (BAH) control mode was enabled so that the DFCS GNC algorithms would maintain the MQM-107D at that altitude. At this point, the UAV ground speed was reduced to approximately 600 ft/s and the Speed Hold on Throttle (SHOT) control command was enabled to keep the ground speed at this rate. The UAV was flown until it was at a location to the right and south of the flight-pattern specified on Table 4.2. At this point the UAV was headed south and away from the Table 4.2 flight-pattern. Then, the SEG ASTAR keyboard command was entered and the RTPP was sent the UAV current state and parameters which are listed on Tables 4.4 and 4.6 (e.g. specified destination location, initial and final UAV true headings, minimum AGL, flight altitude, and UAV ground speed). In response, the RTPP generated the 6,500 ft MSL flight-pattern that connects to the pre-launch flight-pattern at 6,750 ft MSL. These RTPP flight-patterns are shown on Figure 4.22 below; the red flight-pattern was created in real-time; the black flight-pattern was created pre-launch. 159 Figure 4.22: Real-time flight-pattern links to pre-launch flight-pattern. Figure 4.23 below shows that the connecting flight-patterns are offset in elevation by a distance of 250 ft. 160 Figure 4.23: Real-time flight-pattern linking to pre-launch flight-pattern over terrain. 4.8.1 Real-time Flight-pattern Maneuverability Analysis The real-time flight-pattern was generated to guide the airborne UAV from its current location, at its current true heading, at the approximate pre-planned flight altitude of 6,500 ft MSL to the start location of the flight-pattern described on Table 4.2, where it is to transition30 to a flight altitude of 6,750 ft MSL. The precise time it took for the flight-pattern to be received at the DFCS console subsystem from the time the SEG ASTAR command was issued is not known since a bottleneck31 30 This transition is purposely made more challenging by having the UAV acquire to a flight-pattern that is at different flight altitudes than the one it is currently on. 31 In this sense, the term bottleneck means that although the flight-pattern was available to be loaded, it’s loading time was delayed for other reasons than the flight-pattern not being available. 161 was occurred at DFCS console subsystem where the human operator was typing the following keyboard commands: (1) ENA AUTO 1; (2) SET FPA 1 F 2. These commands are for making the flight-pattern ready for use by the DFCS GNC system and for putting the MQM-107D in automatic control mode to acquire to the real-time flight-pattern. In Figure 4.24 below, the solid blue trace is composed of the RTPP flight-patterns from Table 4.4 and from Table 4.2, in that order. The two flight-patterns are shown as a single plot to emphasize the smooth transition between the real-time and the pre-launch flight-patterns. The dash-dot red trace is the actual MQM-107D flight trajectory. It overlaps most of the real-time flight pattern and part of the pre-launch flight-pattern. This plot is missing its first part. However, this missing data only shows that the bottleneck effect is negligible since the part where the data begins is locked with the real-time flight-pattern; this means that it was also locked up to a certain point before then, which means that the UAV successfully acquired the flight-pattern within enough success that it was able to use it as guidance to take it to the destination location. This can be verified by the plots, which show that the UAV followed the real-time flight-pattern until it transitioned to the pre-launch flight-pattern. 162 Figure 4.24: Actual flight trajectory on flight-patterns from Table 4.4 and 4.6. The plots on Figure 4.25 (a) show the flight-pattern as a blue trace, the actual UAV flight trajectory as a dash-dot red trace, and the terrain elevation he as a black trace. The RTPP flightpattern altitude ha = 6,500 ft MSL is well above the specified minimum AGL of 150 ft for the entire flight-pattern. The flight-pattern altitude is one order of magnitude larger than the specified AGL. This means that the minimum AGL error cushion was not required for preventing the generation of a flight-pattern that is too close to the ground. Figure 4.25 (b) shows the actual UAV AGL distance as a solid red trace and the specified flight-pattern AGL as a solid blue trace. The AGL distance of the flight-pattern is approximately 2,500 ft for most of the flight-pattern. The results on Figure 4.25 (a) and (b) show that the MQM107D stayed at the altitude of 6,500 ft MSL and that when it reached the end of this flight- 163 pattern, it performed a smooth transition between flight-patterns by performing a 250 ft climb to transition the UAV from the 6,500 ft MSL flight-pattern to the 6,750 ft MSL flight-pattern. Figure 4.25: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. Figure 4.26 (a) shows a time plot of the UAV ENU x-coordinate; Figure 4.26 (b) shows a time plot of the UAV ENU y-coordinate; Figure 4.26 (c) shows a time plot of the UAV true heading ψ; Figure 4.26 (d) shows a time plot of the UAV roll angle φ. The data point on the true heading plot is at 270˚; this value is consistent with the flight trajectory shown as the dash-dot red trace on Figure 4.24 above. The oscillating true heading that occurs at the middle of the trace (between 0˚ and 359˚) is when the UAV is transitioning between flight-patterns. The CTE for the corresponding part of the plot shows that the transition occurred very smoothly between the flight-patterns. However, the ATE for the corresponding plot shows a 164 transient; this is due to the climb from one flight-pattern to the other. The roll angle plot shows that the UAV rolled three times during the flight: once at the beginning, once at the middle, and once at the end. The CTE of the first roll is at 200 ft, the ALE is about 10 ft. This can be seen of Figure 4.27 below. Figure 4.26: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. Figure 4.21 (a) shows a time plot of the UAV ground speed vg; Figure 4.21 (b) shows a time plot of the UAV normal acceleration an; Figure 4.21 (c) shows a time plot of the UAV ALE. Figure 4.21 (d) shows a time plot of the UAV CTE. Figure 4.21 (e) shows a time plot of the UAV Along-Track Error (ATE). The ground speed of the UAV exceeded the specified speed of 600 ft/s by about 65 ft/s when the UAV was performing its first turn, which resulted in an ATE of -500 ft. Nonetheless, 165 the CTE which started at 230 ft stabilized to 0 ft in about 12 s and the ALE was always stable through out the entire run. These plots verify that the RTPP provided stable and valid guidance in real-time even though the UAV was being flying faster than what the flight-pattern was created for. Figure 4.27: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. 4.8.2 Pre-launch Flight-pattern Maneuverability Analysis In Figure 4.28, the blue trace is the flight-pattern from Table 4.2 and the dash-dot red trace is the actual MQM-107D flight trajectory. The part of the dash-dot red trace that does not have a blue trace underneath it was analyzed in the previous section and is only shown to emphasize that the UAV transitioned smoothly between flight-patterns. These traces verify that 166 the UAV completed pre-launch flight-pattern after it completed the real-time flight-pattern without difficulty. Figure 4.28: Actual flight trajectory on flight-pattern from Table 4.2. 167 Figure 4.29: Flight-pattern from Tables 4.4 and 4.6 on DFCS Console Subsystem. The plots on Figure 4.30 show that the RTPP created a flight-pattern that meets the specified above-ground-level distance of 150 ft. Figure 4.30 (a) shows the flight-pattern as a blue trace, the actual UAV flight trajectory as a dotted red trace, and the terrain elevation he as a black trace. The RTPP flight-pattern altitude ha = 6,750 ft MSL is well above the specified minimum AGL of 150 ft. Figure 4.30 (b) shows the actual UAV AGL distance as a solid red trace and the specified flight-pattern AGL as a solid blue trace. The UAV was always exceeded the specified minimum AGL by at least 250 ft. The results on Figure 4.30 (a) and (b) show that the MQM107D stayed at the altitude of 6,750 ft MSL commanded by the flight-pattern and that the minimum AGL of the UAV was well above the specified minimum AGL of 150 ft. Hence the UAV flew at a safe flight altitude for the duration of the flight-pattern. 168 Figure 4.30: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. Figure 4.31 (a) shows a time plot of the UAV ENU x-coordinate; Figure 4.31 (b) shows a time plot of the UAV ENU y-coordinate; Figure 4.31 (c) shows a time plot of the UAV true heading ψ; Figure 4.31 (d) shows a time plot of the UAV roll angle φ. True heading of 0˚ and 45˚ were specified for this flight-pattern’s start and destination locations, respectively. The start and the middle of the true heading trace show that the UAV was headed north (i.e. ψ = 0˚, 359˚); at the end of the plot, true heading is 45˚. These values show that the UAV used the specified true heading for the flight-pattern. The roll angle plot shows that the UAV performed a series of plots while following the flight-pattern. The magnitudes of the CTE and the ALE errors as the UAV maneuvered these turns are shown on Figure 4.31 below. 169 Figure 4.31: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. Figure 4.32 (a) shows a time plot of the UAV ground speed vg; Figure 4.32 (b) shows a time plot of the UAV normal acceleration an; Figure 4.32 (c) shows a time plot of the UAV ALE. Figure 4.32 (d) shows a time plot of the UAV CTE. Figure 4.32 (e) shows a time plot of the UAV Along-Track Error (ATE). The UAV ground speed was unstable. It exceeded the specified speed of 600 ft/s several times during this part of the simulation. The ground speed transient at t = 740 s caused an ATE magnitude of 150 ft. This resulted in a CTE of 350 ft. However, the ALE was not affected by the CTE and the ATE. Overall, this data and the plots on Figures 4.24 and 4.28 verify that the UAV followed the traces within a tolerance of CTE = 350 ft and ALE = 20 ft except during the climb from the first flight-pattern to the second flight-pattern. 170 Figure 4.32: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. 4.8.3 Milestone 6 This simulation shows that the UAV acquired the real-time generated flight pattern and that it used it as guidance to travel to the start of the pre-launch generated flight pattern. The true-heading specifications that were built in to the RTPP were used to generate the real-time flight-pattern that would have the account for the airborne UAV direction and for the flightpattern direction when the UAV exited the flight-pattern. These heading constrained proved to be essential for the real-time guidance success that was exhibited during this simulation. The RTPP real-time response had to be estimated since precision benchmarking equipment was not available. Nevertheless, real-time performance was exhibited by synergy of the RTPP and DFCS 171 when the airborne UAV successfully acquired to flight-pattern that was generated in real-time and used it to the flight-patterns completion as guidance. This simulation established that the RTPP can create flight-patterns that link perfectly to allow a UAV to transition between them. This is shown in the blue trace on Figure 4.24 which appears to be a single flight pattern, when in actuality the trace is composed of two distinct flight patterns that connect perfectly. This can also be seen in the simulation in that an MQM-107D transitioned smoothly from the real-time flight pattern to the pre-launch generated flight pattern even though both flight-patterns were at different flight-altitudes. Hence, RTPP flight-patterns force smooth transition between the flight-patterns it generates. 4.9 DATA ANALYSIS FOR FLIGHT SIMULATION AT 6,500 FT MSL This simulation is used for two purposes: (1) to acquire data on how an MQM-107D maneuvers rigorous RTPP flight-patterns; (2) to perform empirical testing to estimate the realtime performance of the RTPP. The simulation began by generating the pre-launch flight-pattern that is specified on Table 4.3. The simulation proceeded by manually launching a simulated MQM-107D subscale UAV. The desired state of the UAV was a ground speed of 600 ft/s at a flight altitude of 6,500 ft MSL. The ground speed was allowed to exceed 600 ft/s during the take-off phase where the UAV was climbing to the specified flight altitude. When the MQM-107D reached an altitude of approximately 6,500 ft MSL, the Barometric Altitude Hold (BAH) control mode was enabled so that the DFCS GNC algorithms would maintain the MQM-107D at that altitude. At this point, the UAV ground speed was reduced to approximately 600 ft/s and the Speed Hold on Throttle (SHOT) control command was enabled to keep the ground speed at this rate. The UAV was flown until it was at a location to the right and north of the start location of the flight-pattern that is specified on Table 4.3. At this point the UAV was headed a north. Once the UAV was sufficiently separated and headed away from the start location of the off-line flight-pattern, the RTPP command was issued. The operator entered the SEG ASTAR keyboard command from the DFCS console subsystem to request flight guidance from the current UAV 172 location to the start of the pre-launch flight-pattern. The real-time flight-pattern, which is described on Tables 4.5 and 4.7, was generated by the RTPP. Figure 4.33 below shows the realtime flight-pattern as a red trace and the pre-launch generated flight-pattern as a black trace. Figure 4.34 shows these flight-patterns as a single flight-trajectory over the WSMR terrain. Figure 4.33: Real-time flight-pattern links to pre-launch flight-pattern. 173 Figure 4.34: Real-time flight-pattern linking to pre-launch flight-pattern over terrain. 4.9.1 Real-time Flight-pattern Maneuverability Analysis The flight-pattern was set on the DFCS console subsystem and automatic control mode was enabled and the DFCS GNC algorithms started commanding and controlling the UAV on the newly generated red flight-pattern. The time it took for the RTPP to generate this real-time flight-pattern is not known (an educated guess would be less than one second). However, a bottleneck occurred when setting this flight-pattern to be used by the airborne UAV. It occurred at the DFCS console subsystem. The bottleneck proves that using a keyboard to activate a flightpattern, although feasible, is not the best solution when attempting to minimize the offset 174 between the dynamic location of the airborne MQM-107D and the start location of the real-time flight-pattern. In Figure 4.35 below, the solid blue trace is composed of the RTPP flight-patterns from Table 4.5 and from Table 4.3, in that order. The two flight-patterns are shown as a single plot to emphasize the smooth transition between the real-time and the pre-launch flight-patterns. The dash-dot red trace is the actual MQM-107D flight trajectory. It overlaps most of the real-time flight pattern and part of the pre-launch flight-pattern. This plot is missing its first part. However, this missing data only shows that the bottleneck effect is negligible since the part where the data begins is locked with the real-time flight-pattern; this means that it was also locked up to a certain point before then, which means that the UAV acquired the flight-pattern within enough success that it was able to use it as guidance to take it to the destination location. This can be verified by the plots, which show that the UAV followed the real-time flight-pattern until it transitioned to the pre-launch flight-pattern. 175 Figure 4.35: Actual flight trajectory on flight-patterns from Table 4.5 and 4.7. The plots on Figure 4.36 (a) show the flight-pattern as a blue trace, the actual UAV flight trajectory as a dash-dot red trace, and the terrain elevation he as a black trace. The RTPP flightpattern altitude is ha = 6,500 ft MSL. Figure 4.36 (b) shows the actual UAV AGL distance as a solid red trace and the specified flight-pattern AGL as a solid blue trace. The plots on Figure 4.36 (a) and (b) show that the altitude error cushion provided by minimum above-ground-level criterion was not used since the MQM-107D was flying at altitude that easily exceeded the minimum AGL distance. 176 Figure 4.36: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL. Figure 4.20 (a) shows a time plot of the UAV ENU x-coordinate; Figure 4.20 (b) shows a time plot of the UAV ENU y-coordinate; Figure 4.20 (c) shows a time plot of the UAV true heading ψ; Figure 4.20 (d) shows a time plot of the UAV roll angle φ. The data point on the true heading plot is at 315˚; this value is consistent with the flight trajectory shown as the dash-dot red trace on Figure 4.35 above. The UAV is transitions between flight-patterns at approximately t = 470 s where oscillating true heading occurs. The roll angle has slight transients when compared to the plots on Figure 4.20 (e), 4.26 (e), 4.31 (e), and 4.42 (e)—these are a result of my lack of experience in using the DFCS GNC system to command and control a UAV. Nonetheless, these transients are negligible as can be seen on the plot of Figure 4.35 above where the UAV followed the flight-pattern with extreme precision. This is also 177 verified by the CTE and the ATE plots on Figure 4.38 below; both values are within the AGL safety cushion. Figure 4.37: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. Figure 4.38 (a) shows a time plot of the UAV ground speed vg; Figure 4.38 (b) shows a time plot of the UAV normal acceleration an; Figure 4.38 (c) shows a time plot of the UAV ALE. Figure 4.38 (d) shows a time plot of the UAV CTE. Figure 4.38 (e) shows a time plot of the UAV Along-Track Error (ATE). The UAV ground speed was unstable. It started at 615 ft/s and peaked at 625 ft/s. It continued to oscillate between 585 ft/s and 615 ft/s for the remaining time that the UAV was on this real-time flight-pattern. This ground speed oscillation was caused by the ATE, which 178 appears to be sinusoidal. As ATE increases in the positive direction, the ground-speed drops and as ATE decreases to the negative direction, the ground-speed increases. Nonetheless, the CTE of has a peak of -350 ft and the ALE peaked at 40 ft. Aside from these extremes, the CTE magnitude was at about 100 ft and the ALE magnitude was at about 20 ft. Overall, this data and the plot on Figures 4.35 verify that the UAV followed the RTPP flight-pattern to within the AGL safety radius. Figure 4.38: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. 4.9.2 Pre-launch Flight-pattern Maneuverability Analysis In Figure 4.39 the flight-pattern is the blue trace and the actual MQM-107D flight trajectory is the dash-dot red trace. This plot shows that the UAV transitioned smoothly to the flight-pattern from Table 4.3 and that the UAV followed most flight-pattern flawlessly. 179 However, a problem occurred at the end of the run at location x = -15x104 ft and y = 0.5x105 ft— the rabbit got ahead of the MQM-107D which caused the along-track-error to increase. This in turn caused the DFCS GNC systems to increase the ground speed from the specified value of 600 ft/s, which is stipulated on Table 4.3 to approximately 700 ft/s. The DFCS GNC system performed this action in an attempt to minimize the along-track-error as quickly as possible by having the UAV catch up with the rabbit. During this action, the DFCS GNC system also overrode the RTPP flight-pattern momentarily. At this point, I terminated the flight simulation because the DFCS GNC algorithms took over the UAV and used different flight parameters that those that had pre-planned for the simulation. What this simulation shows is that a maximum ground-speed must be set for the duration that the target is on a flight-pattern: especially for the lengthier flight-patterns. Increasing the ground speed was entirely un-necessary because the guidance errors that establish success or failure are the cross-track and the altitude errors. These errors do not require that the simulated UAV keep up with the rabbit when the rabbit is moving faster than the target. Also, the flight-patterns are generated for a maximum ground speed and in this case, it was increased beyond that for which the flight-patterns were generated. 180 Figure 4.39: Actual flight trajectory on flight-pattern from Table 4.3. 181 Figure 4.40: Flight-pattern from Table 4.3 on DFCS Console Subsystem. The plots on Figure 4.41 show that the RTPP created a flight-pattern that meets the specified above-ground-level distance of 150 ft. Figure 4.41 (a) shows the flight-pattern as a blue trace, the actual UAV flight trajectory as a dotted red trace, and the terrain elevation he as a black trace. The RTPP flight-pattern altitude ha = 6,500 ft MSL is well above the specified minimum AGL of 150 ft. The smallest value of AGL distance is about 500 ft and it occurs at approximately 1,090 s. Figure 4.41 (b) shows the actual UAV AGL distance as a solid red trace and the specified flight-pattern AGL as a solid blue trace. The UAV always exceeded the specified minimum AGL by at least 150 ft. The results on Figure 4.41 (a) and (b) show that the MQM-107D stayed at the altitude of 6,500 ft MSL commanded by the flight-pattern and that the minimum AGL of the UAV was well above the specified minimum AGL of 150 ft. 182 Figure 4.41: (a) Flight altitudes and terrain elevations; (b) Actual and desired AGL.. Figure 4.20 (a) shows a time plot of the UAV ENU x-coordinate; Figure 4.20 (b) shows a time plot of the UAV ENU y-coordinate; Figure 4.20 (c) shows a time plot of the UAV true heading ψ; Figure 4.20 (d) shows a time plot of the UAV roll angle φ. True heading of 0˚ and 45˚ were specified for this flight-pattern’s start and destination locations, respectively. The true heading plot shows that the UAV used the specified true heading at the start of the flight on the flight-pattern. The final true heading should be 45˚; however, it is approximately 200˚ since this is the UAV true heading when the simulation was stopped as a result of the DFCS legacy guidance system overriding the RTPP guidance32. The simulation was stopped since it is the CTE and the ALE that establish how successfully the UAV 32 The legacy guidance system overrode the RTPP guidance in order to minimize the ATE; however, ATE does not measure how well a UAV stays on the flight-patterns; it measures if the UAV gets ahead or behind of the rabbit. 183 follows flight-patterns and the turns within them. This can be verified by comparing the roll angle plot which shows that the UAV performed a series of turns while on the flight-pattern to the CTE and the ALE plots on Figure 4.43 below which show that the error incurred as the UAV maneuvered these turns is within 400 ft and 20 ft, respectively. Figure 4.42: (a) ENU x; (b) ENU y; (c) True heading; (d) Roll angle. Figure 4.43 (a) shows a time plot of the UAV ground speed vg; Figure 4.43 (b) shows a time plot of the UAV normal acceleration an; Figure 4.43 (c) shows a time plot of the UAV ALE. Figure 4.43 (d) shows a time plot of the UAV CTE. Figure 4.43 (e) shows a time plot of the UAV Along-Track Error (ATE). The ATE plot shows that the ground-speed that the DFCS GNC system commands to a UAV depends on the UAV ATE. These plots show that an increase or decrease in ATE causes 184 the DFCS GNC system to compensate by decreasing or increasing the ground-speed (e.g. when the ground-speed value oscillated at 600 ft/s). Hence, the DFCS GNC system always attempts to minimize the along-track-error. Nevertheless, the CTE and the ALE stayed within the tolerance established by the AGL error cushion even though it was the ATE transients that caused higher than necessary CTE and the ALE magnitudes. Even though the RTPP guidance was overwritten and the simulation was stopped prematurely, the CTE and the ALE show that the UAV was able to maneuver most of this complicated flight-pattern. Figure 4.43: (a) Ground speed; (b) Normal acceleration; (c) CTE; (d) ATE. 4.9.3 Milestone 7 This simulation demonstrates that the RTPP can provide excellent guidance during extreme situations, such as for a UAV that is flying away from its destination location. 185 Furthermore, this simulation exhibits real-time guidance in that an airborne UAV acquired a flight-pattern that was generated in real-time and in that the UAV stayed on this real-time flightpattern until it acquired to the pre-launch generated flight-pattern. This simulation also established that rigorous flight-patterns that the RTPP generates are maneuverable by UAV. This is seen in the UAV flight-trajectories, CTE, and ATE. The combined set of plots show that the UAV handled most of the flight-pattern from Table 4.3 which has a series of tight turns in succession by staying on parameter up until the DFCS GNC system overrode the RTPP guidance. 186 Chapter 5: Conclusion The RTPP uses a virtual environment based on real-world measurements and parameters to respond to requests that originate in its physical environment. The RTPP virtual environment consists of a virtual terrain and a virtual UAV. The virtual terrain is created with the files obtained from the TMC, and the virtual UAV is created from the expected parameters of a realworld UAV. The virtual UAV parameters are provided by guidance system operators. The virtual UAV is not to be confused with the simulated UAV that are part of the DFCS flight simulator. Simulated UAV are as part of the physical environment as are physical UAV since it is transparent to the RTPP whether DFCS is using a simulated UAV or a physical UAV. The virtual components have physical counterparts; but they can be distinguished. Concerning the virtual environment, its components are—save the flight-patterns and waypoints—those contained within the RTPP. The RTPP physical environment includes the DFCS real-time computer network, the DFCS geographical area, and the UAV. The RTPP interacts directly with the DFCS real-time computer network by processing the requests that originate at the DFCS console subsystem, while the DFCS CCS (Central Control System) computer buffers the RTPP from the DFCS geographical area, the UAV, and the associated assets. To provide the requested flight trajectories, the RTPP uses the virtual environment discussed above. It creates a virtual UAV with the parameters that match the expected parameters of the real-world UAV. It also uses the virtual environment to locate the obstacles that will be present at the expected flight altitude. And the end result is that the RTPP generates and sends the flight trajectories through the DFCS realtime computer network, to the CCS computer, where the guidance system uses these flightpatterns to navigate UAV. 5.1 DISCUSSION The goal of this work was to provide evidence that AI technologies have become computationally feasible for solving real-world problems faced by DoD TCCS personnel. This 187 work proves this by using the AI theories in the implementation of real-time UAV guidance system to be used in an existing DoD TCCS. 5.2 FUTURE WORK 5.2.1 System Integration Issue 5.2.1.1 Improve User-Interface During simulations, mistakes such as typos at the DFCS console subsystem, cause timely delays that impede the UAV from acquiring the flight-pattern immediately. The RTPP user interface would benefit by using an interface-system that is less prone to such errors: one that prevents errors when sending requests, coordinates, and parameters. 5.2.2 Artificial Intelligence 5.2.2.1 Minimize Quantization Error Investigate how to remove the quantization error. 5.2.2.2 Trade-Offs between Heuristic Functions: Optimal vs. Sub-optimal Solutions Investigate the tradeoffs between using an admissible heuristic function and obtaining results quickly with less accuracy and between using a non-admissible heuristic function and obtaining more accurate results at the cost of sometimes exhausting the computer’s memory. 5.2.2.3 Create a Heuristic Function The goal of this project is to evaluate the real-world implementation of the A* algorithm. Therefore, risk factors to the project, such as using an experimental heuristic function, were removed. Having shown that the A* algorithm can be used to provide real-world and real-time solutions, a more accurate heuristic function should be developed. The diagnostic system nodes’ expanded counter was created for this very purpose since the A* algorithm can use up the computer’s memory since it stores each node that is creates in memory. The nodes generated counter notifies the developer every time 1,000 nodes get generated. Therefore, the nodes expanded counter is a useful tool for determining the progress or 188 digression of projects involving the development of experimental heuristic functions. The nodes expanded counter can be activated to slow down the process of overusing the memory or to allow a developer to terminate the system when memory exhaustion is imminent. 5.2.2.3 Create a State-Space that contains 3-Dimentional Routes Create a connected graph by implementing a third dimension 5.3 CONCLUSION The RTPP is a solution that was created from research, design, and development to be utilized in conjunction with DFCS to guide, navigate, and control UAV. It was created to evaluate if heuristic search theories from AI could be used to solve existing problems being faced by DoD TCCS personnel. The RTPP provides a prototype of the system that ameliorates problems in the UAV flight trajectory generation process by providing the following solutions: (1) automating the processes of performing obstacle avoidance and of generating flight-pattern; (2) providing the capability to modify the shape of flight-patterns in real-time and when the UAV is airborne; (3) reducing the work load of the DoD TCCS personnel, especially the guidance system operators. The RTPP solves problems in the UAV flight trajectory generation process by automatically creating flight-patterns when provided with the following data: (1) DTED data; (2) the flight-pattern’s start and destination location; (3) the UAV flight altitude; (4) the UAV maximum ground speed to be used in the desired flight-pattern (5) the minimum AGL distance for the desired flight-pattern. The RTPP tests each A* route that it generates to determine if it can be used to generate a safe and maneuverable flight-pattern. If the complete set of A* routes that exist for a desired state within the state-space cannot be converted to safe and maneuverable flight-patterns, no flight guidance is provided since the RTPP only generates flight-patterns from A* routes that have tested to be safe and maneuverable. Furthermore, the RTPP proved to be a real-time solution for airborne UAV when it was linked to DFCS and it produced flight-patterns in real-time in response to requests that were made from the DFCS console subsystem. 189 Additionally, the simulations that were performed with the 6-DOF DFCS flight simulator, RTPP flight-patterns, and the simulated MQM-107D validate that RTPP flight-patterns are flyable and that the RTPP performs as designed for an airborne UAV within a real-time environment. In conclusion, the RTPP generates safe and maneuverable flight-patterns by performing the following tasks: (1) A* route generation, (2) maneuverability validation of all generated A* routes; (3) flight-pattern generation from safe and maneuverable A* routes. Regarding the quality of the solution, the RTPP succeeds in solving the following problems: (1) reducing collision risk that exists when flying at low elevations over mountainous terrain (2) eliminating the need for flight-patterns to be created before each mission (3) reducing the dangers that exist in changing flight-pattern shape in real-time (4) minimizing labor intensive tasks of DoD TCCS personnel by allowing those that do not possess the required specialized knowledge to create flight-patterns to create them with the RTPP. 190 References [Bar93] Barto, A. G., S. J. Bradtke and S. P. Singh, “Learning to act using real-time dynamic programming”, Artificial Intelligence, Vol. 72, pp. 81-138. [Boe88] Boehm, B. W., “A spiral model of software development and enhancement,” IEEE Computer Society, May 1988, Vol. 21, No. 5, pp. 61-72. [Bro74] Brogan, W. L., Modern Control Theory, Quantum Publishers Inc., 1974. [Cap02] Capozzi, B., D. Rathbun, S. Kragelund, and A. Pongpunwattana, “An evolution path planning algorithm for autonomous motion of a UAV through uncertain environments,” IEEE Proceedings: The 21st Digital Avionics Systems Conference, 2002, Proceedings.pp. 8D2-1 - 8D2-12 Vol.2. [Car07] Carrano, F. M., Data abstraction and problem solving with C++: walls and mirrors, 5th Ed, Addison Wesley Developers Press, 2007. [Cor90] Cormen, T.H., C.E. Leiserson and R.L. Rivest, Introduction to algorithms, McGrawHill, Inc., 1990. [Dei01] Deitel H. M., and P. J. Deitel, C++ How to Program, 3rd Ed., Prentice-Hall, Inc., 2001. [Dre65] Dreyfus, S. E., Dynamic programming and the calculus of variations, Academic Press, 1965. [Fau94] Fausett, L., Fundamentals of neural networks: architectures, algorithms, and applications, Prentice-Hall, Inc., 1994. [Kru98] Kruglinski D. J., G. Shepherd and S. Wingo, Programming Microsoft Visual C++, 5th Ed, Microsoft Press, 1997. [Kum88] Kumar, V., D. S. Nau and L. N. Kanal, “A General Branch-and-Bound Formulation for AND/OR Graph and Game Tree Search, in Search in Artificial Intelligence, ed. Kanal and Kumar, Springer-Verlag, 1988” pp. 91-130. [Lee75] Lee, W. H. Jr. and L. T. Richardson, “Automatic Control of Drones and RPV’s in Formation,” AIAA, 1975, USA, 1075, AIAA 1975-1122. [Har68] Hart, P. E., N. J. Nilsson and B. Raphael, “A formal basis for the heuristic determination of minimum cost paths,” IEEE Transactions of Systems Science and Cybernetics, July 1968, Vol. 4, No. 2, pp. 100-107. [Hil01] Hill, F. S., Computer Graphics Using OpenGL, 2nd Ed, Prentice-Hall, Inc., 2001. 191 [Mit88] Mitchell, J.S.B., “An Algorithmic Approach to Some Problems in Terrain Navigation,” Artificial Intelligence, Vol. 37, pp. 171-201. [Nav98] Navtech Seminars & GPS Supply, Inc., GPS and GNSS Simulation and Analysis Using the GPSoft SatNav Toolbox for MATLAB®, Navtech Seminars, Inc., 1998. [Nil71] Nilsson, N. J., Problem-solving methods in artificial intelligence, McGraw-Hill, Inc., 1971. [Nil80] Nilsson, N. J., Principles of artificial intelligence, Tioga Publishing Co., 1980. [NIM07] National Imagery and Mapping Agency, “National Geospatial-Intelligence Data,” http://earth-info.nga.mil/GandG/publications/tr8350.2/tr8350_2.html. [Osb05] Osborne, J. and R. Rysdyk, “Waypoint Guidance for Small UAVs in Wind,” AIAA, Infotech@Aerospace 2005, Arlington, Virginia, Sep. 2005, AIAA 2005-6561. [Ran76] Raney, J. T., and K. D. Rehm, “Precision Location, Navigation and Guidance Using DME Techniques,” IEEE Position Location and Navigation Symposium, 1976. [Rog95] Rogerson, D., “Open GL III: Building an OpenGL C++ Class,” OpenGL Technical Articles in MSDN Library for Visual Studio.NET 2003, Microsoft Corp., 2003 [Rus03] Russell, S. and Norvig, P., Artificial intelligence: a modern approach, 2nd Ed., PrenticeHall, 2003. [Sec88] Secretariat, “Document 650-88, Targets Directory, Targets Ad Hoc Group, Range Commanders Council”, Range Commanders Council, U.S. Army, White Sands Missile Range [Sot07] Soto, M., P. A. Nava and L. E. Alvarado, “Drone Formation Control System Real-Time Path Planning,” AIAA, Infotech@Aerospace 2007 Conference and Exhibit, May 2007, AIAA 2007-2770. [Ste95] Stefik, M., Introduction to knowledge systems, Morgan Kaufmann Publishers, Inc., 1995. [USG07] U.S.G.S. Earth Resources Observations and Science, “Seamless Data Distribution System,” http://seamless.usgs.gov/. [Vis03] Visual C++.NET™, Visual Studio.NET™, Ver. 7.1.3088, Microsoft Corp., 2003 [Win94] Winston, W. L., Operations research: applications and algorithms, 3rd Ed., International Thomson Publishing, 1994. [Woo97] Woo M., J. Neider and T. Davis, OpenGL programming guide: the official guide to learning OpenGL, version 1.1, 2nd Ed, Addison Wesley Developers Press, 1997. [Yao05] Yao-hong Q., P. Quan, and Y. Jian-guo, “Flight path planning of UAV based on Heuristically Search and Genetic Algorithms,” IEEE 32nd Annual Conference of 192 Industrial Electronics Society, 6-10 Nov. 2005, pp. Digital Object Identifier 10.1109/IECON.2005.1568876. 193 Glossary 3-D = 3 dimensional A* = Route finding algorithm, pronunciation: A-star AGL = Above Ground Level in ft AGLm = minimum Above Ground Level in ft AI Artificial Intelligence = BAH = Barometric Altitude Hold di drone index = DFCS = Drone Formation Control System DME = Distance Measuring Equipment DoD = Department of Defense DOF = Degrees of Freedom Drone = UAV DTED = Digital Terrain Elevation Data ECEF = Earth Center Earth Fixed (geocentric) coordinate system ENU = East North and Up coordinate system fi = flight-pattern index f(n) = evaluation function FP = Flight-pattern Full-scale = droned RPV g(n) = cost function G = 32.2 ft/s2 geocentric = ECEF coordinate system geodetic = latitude and longitude with respect to equator and prime meridian, respectively, coordinate system 194 GUI = Graphical User Interface h(n) = heuristic function h = MSL height (e.g. the elevation or the altitude) in ft ha = flight-pattern altitude in ft MSL he = terrain elevation in ft MSL IS = Interrogator Subsystem m = terrain map resolution–the number of points in the terrain map mission = MSL = Mean Sea Level in ft MQM-107D = a real-time event involving the remote operation of a RPV or UAV subscale RPV (UAV) n = node ni = current node nj = designates either the previous node or the next node NED = National Elevation Dataset Nz Target Normal Acceleration in Gs = Off-line = q quantization value – the horizontal and vertical distance between points on the = UAV state denoting it is not airborne terrain map Vz = Target Vertical Acceleration in ft/s rt = turn radius RF = Radio Frequency RFM = Radio Frequency Module RPV Remotely Piloted Vehicle = RTPP = Real Time Path Planner Real-time = si = flight-pattern segment index sh = Graphics Display Object (or screen) height UAV state denoting it is airborne 195 sw = Graphics Display Object (or screen) width sxmin = screen minimum x value in pixels on Graphics Display Object sxmax = screen maximum x value in pixels on Graphics Display Object symin = screen minimum y value in pixels on Graphics Display Object symax = screen maximum y value in pixels on Graphics Display Object SHOT = Speed Hold on Throttle Sub-scale = Target = UAV small UAV Topographic = Earth surface projection to a flat plane UAV = Unmanned Aerial Vehicle UHF = Ultra High Frequency vg = ground speed in ft/s WGS 84 = World Geodetic Systems 1984 Weapon system = WSMR = White Sands Missile Range xf = final route x location xi = initial route x location xmin = minimum x value on terrain map in ft xmax = maximum x value on terrain map in ft yf = final route y location yi = initial route y location ymin = minimum y value on terrain map in ft ymax = maximum y value on terrain map in ft z = distance between the z=0 plane and a reference object in ft ψ = true heading in degrees ψf = final true heading ψi = initial true heading 196 ψm = magnetic heading φ = bank angle in degrees 197 Appendix 1: Mathematics of Generating a Flight-Pattern from an A* Route A1.1 FLIGHT-PATTERNS: ELEMENTS, INDEXING AND FORMAT Flight-patterns are composed of three types of segments: (1) clockwise circular arcs, (2) counter-clockwise circular arcs, and (3) straight lines. Combinations of these segments are used to create the continuous and smooth curves within flight-pattern. A1.1.1 DFCS Flight-Pattern Indexing Scheme The DFCS guidance system uses multiple flight-patterns at one time. To prevent ambiguities between flight-patterns and their segments, it provides a unique key to each distinct flight-pattern and to each distinct segment. This prevents different flight-patterns from having the same key and it allows segments in different flight-patterns to be referenced by using only the segment key. The first segment of a flight-pattern is always assigned a key whose value is equal to the key of the flight-pattern. This makes it easy to identify the first segment of a flightpattern. For example, the red flight-pattern in Figure A1.1 below has its first segment in the middle of the figure and to the far left. Notice that underneath the green airplane symbol, there is the value 2-2—the value to the left of the dash is the flight-pattern’s key and the value to the right is the segment’s key. The other green numbers that are in the red flight-pattern’s proximity33 identify some of the other segments on the red flight-pattern. The flight-pattern key, which is the value to the left of the dash, always identifies the flight-pattern that a particular segment belongs to. 33 At DFCS the first number is the flight-pattern key, the value after the dash is the segment key. 198 Figure A1.1: Two flight-patterns on the DFCS console subsystem. In the figure above, notice that the red flight-pattern terminates at the right by joining to a white flight-pattern. The red flight-pattern’s last segment is 2-35 and it joins to segment 5-26 on the white flight-pattern. By comparing the flight-pattern numbers, it can be observed that the white flight-pattern key is 5 and that red flight-pattern key is 2; this comparison can be used to conclude that the red flight-pattern and the white flight-pattern are distinct. Observe that even though the two flight-patterns join, the flight-patterns are distinct. Furthermore, the white flight- 199 pattern’s first segment is not identified; the absence of the segment 5-5 can mean that it is out of the displays view port or that it is in the view port but not explicitly identified. A1.1.2 Orientation of Circular Arc-segments Circular arc-segments can have one of two orientations: clockwise and counterclockwise. Since the orientation of arcs depends on how the segment is directed (e.g. from North to South, from South to West, etc.), arc orientations are not always intuitive. However, the arc’s orientation can be derived by knowing the following items about a flight-pattern’s arc-segments: • The arc’s direction from its initial location to its final location • Keeping in mind that every arc on a flight-pattern is taken from a circle. • The general location (e.g. up, down, left, right), relative to the flight-pattern, of this circle’s center point For instance, in Figure A1.1, Segment 2-17, which follows Segment 2-2, is directed from South to North. Furthermore, since the circle from which this arc is cropped is concaved toward the right, the circle’s center point is also to the right. With this information, it can be concluded that the circle is created by locking the radius at the circle’s center point and then sweeping the radius clockwise. This method of sweeping the radius is analogous to how a needle on a clock moves. As a different example, consider an arc-segment that is identical in shape and location to Segment 2-17. Furthermore, assume that is lies directly underneath Segment 2-17 in Figure A1.1 and thus cannot be seen. Assume that this segment has the initial location of Segment 2-17 as its final location and that it has the final location of Segment 2-17 as its initial point. Because the initial and final locations are reversed, this invisible arc-segment is directed from North to South. Because this arc is identical to Segment 2-17, the circle and its center point that were used to create Segment 2-17 are also used. However, the radius now lines up from the center of the circle to the initial location of the invisible arc. To reorient the direction of this radius such that it is directed from the center of the circle to the final location of the invisible arc, the radius must be swept in a counter-clock wise motion. Hence, this invisible arc that is identical in shape and location to Segment 2-17 has counter-clockwise orientation. 200 A1.1.3 RTPP Flight-Pattern Format Flight-patterns are stored as lists and the format for each record on this list is that shown on Table A1.1 below. Every record on this list represents a unique segment on a flight-pattern. Although the format for storing flight-patterns is very similar to that used by DFCS, the RTPP does not use the DFCS flight-pattern indexing scheme. The RTPP does not label each flightpattern that it produces, and it numbers the segments of each different flight-pattern in consecutive order starting with 1 at the first segment of each different flight-pattern. Using the same format for storing flight-patterns, while using a generic scheme for indexing the segments of every new flight-pattern makes DFCS flight-patterns compatible with DFCS and allows the DFCS guidance system to assign keys that are free to be assigned to flight-patterns that it receives from the RTPP. Table A1.1: Flight-pattern Format. Name Symbol Description Segment sc The current segment of the flight-pattern. Next segment sn The next segment of the flight-pattern. If dfp = 0, the current segment sc is a line. Segment type or If dfp = -1, the current segment sc is a clock-wise arc. dfp direction If dfp = 1, the current segment sc is a counter-clockwise arc. Elevation hifp Current segment x- Initial elevation in ft MSL of the current-segment sc. Initial ENU x-coordinate in ft of the current segment xifp coordinate sc . Turn radius x- ENU x-coordinate in ft of the turn radius for the xo coordinate Current segment y- current segment which has dfp = ±1. yifp Initial ENU y-coordinate in ft of the current segment 201 coordinate sc . Turn radius y- ENU y-coordinate in ft of the turn radius for the yo coordinate A1.2 current segment which has dfp = ±1. A* ROUTES: POINTS, LINE SEGMENTS, AND VECTORS A1.2.1 Representing A* Routes as Vectors A* routes are stored as (x, y, h) ENU coordinates; joining these coordinates, the A* route can be visualized as a series of line segments; these line-segments can be converted to vectors. This leads to the first task in producing a flight-pattern from an A* route; to convert to vectors all these line segments so that the directions of the segments in the flight-patterns can be derived. This creates a series of vectors with magnitude q or 2 q and that have one of the following eight direction angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, and 315°. All vectors that are computed from A* routes can be described by Equation A1.1 below. q, R θ , 2q , R θ (A1.1) where q is the quantization value of the terrain map in ft; and θ is the angle between two adjacent line segments on the A* route in degrees. The magnitudes and angles result from the fact that each line segment is created by connecting the centers of squares on the A* route. Hence the magnitudes are a direct reflection that the distance between the centers of adjacent squares is either q or 2 q. Moreover, the reason the angles are snapped to one of eight values can be explained by envisioning a point object at the center square of any 3x3 grid within the terrain map. First, assume that the center square is 202 centered at the origin of an x-y plane and that the planes positive x-axis points toward 0°, its positive y-axis points toward 90°, its negative x-axis points toward 180°, and that its negative yaxis point toward 270°. The point object is allowed to transition to any one of the eight surrounding squares from the center square. Additionally, the point object is always constricted to being at the center of the square that it occupies—i.e., if the point object is in the square, it is located at the center point of that square. Therefore, the angles (made between the point object’s current location and its next location) are quantized to one of eight possible values: up, down, left, right, and the four diagonals. A1.2.2 Representing A* Routes as Point-Vectors A straight line of length n times q, or n·q, in an A* route is comprised of n smaller line segments whose lengths are q. When these n line segments of length q get converted to vectors, there will be n identical vectors 〈q, R θ〉 having magnitudes q and direction angles θ. The redundant vectors can be eliminated by creating a new list (e.g. a waypoints list) that only records the initial location (xi, yi, ha) and angle θ of each vector where an angle change ∆θ occurs and that ignores all the vectors that follow until another angle change occurs at which point this new location and angle are again recorded. This method eliminates the redundant vectors that are not necessary to describe the straight line. It allows for the properties of two vectors to be used to describe any line segment within an A* route: • The first vector 〈q, R θ1〉 is where a change in direction ∆θ occurs; this vector’s initial location (x1, y1, ha) and angle θ1 are recorded to a list. • The second vector 〈q, R θ2〉 is where a change in direction ∆θ occurs; the vector’s initial location (x2, y2, ha) and angle θ2 are recorded to a list. This methodology can be used to guide a moving point-object that can maneuver sharp turns. It can start traveling from the first vector’s initial location (x1, y1, ha) headed at an angle θ1 until it reaches the second vector’s initial location (x2, y2, ha) where it changes its heading to θ2. Notice that this method does not require any vector magnitudes to describe a straight line since each location and direction of travel are provided by the properties of each of the two vectors. If the 203 initial location (xi, yi, ha) and angle θ of each vector where an angle changes ∆θ occurs are recorded in order in a list, the list completely describe an entire A* route. Because the initial locations (xi, yi, ha) and direction angles θ of these vectors can be used to specify an entire A* route, a convention has been developed to describe these values. It is called the point-vector notation, and it is defined in Equation A1.2 below: ( xi , yi , ha ), R θ (A1.2) where xi is an ENU x-coordinate in ft; and yi is an ENU y-coordinate in ft; and ha is the elevation of the desired flight-pattern in ft MSL; and (xi, yi, ha) is the initial location where motion begins at the direction angle θ; and θ is direction of travel in degrees. A1.3 FLIGHT-PATTERN GENERATION Angle changes ∆θ found on A* routes are used for representing A* routes as a set of point-vectors on waypoints lists; waypoints lists differ from A* route lists, which are ordered lists of ENU (x, y, h) coordinates. Using waypoints lists that are stored as point-vectors simplifies the flight-pattern generation procedure by providing all the information necessary to derive the values that get stored on a list whose format is that of Table A1.1. Moreover, the direction angle θ on the point-vectors of the waypoint’s list is described using the true heading ψ from Equation 3.4. This eliminates any ambiguities concerning direction angles and allows the direction angles θ = ψ to be used to derive the orientations of the arc-segments, which depend on the orientation of each line segment on the waypoint’s list. The final result is that smooth turns are generated to replace the sharp turn on waypoints lists. 204 A1.3.1 Generating a Waypoints List with Point-Vectors The waypoints list contains all the line segments and sharp turns of the A* route from which it is generated. The A* route and the waypoints list represent the exact same route except that waypoints lists store the A* route more efficiently by using point-vectors that represent the series of line segments (or redundant vectors) on A* routes. Each point-vector, or waypoint, identifies the ENU (x, y, h) coordinate where every new direction of travel occurs. Hence, pointvectors contain only the location where each angle change ∆θ occurs. Table A1.2 below defines the format for each record on the waypoints list. Table A1.2: Waypoint Format. Name Symbol Current segment x- Description Initial ENU x-coordinate in ft of the current line xc coordinate segment. Current segment y- Initial ENU y-coordinate in ft of the current line yc coordinate segment. Elevation in ft MSL of the x-y plane in which the A* Elevation ha route was generated. The current direction of travel, specified as the current Direction Angle θc true heading ψc, in degrees. The records in the waypoints list are point-vectors 〈 (x, y, h), R θ 〉. Consecutive records on this list contain different direction angles θ. This means that each record on the waypoints list specifies a transition between the current direction of travel and a different direction of travel. For instance, the first record on the waypoints list, which is Waypoint 1 w1, describes the direction of travel θ1 = ψ1 from the given location (x1, y1, ha). The second record, which is 205 Waypoint 2 w2, provides the location (x2, y2, ha) where the direction of travel changes to θ2 = ψ2. All the following waypoints in the list are used in a similar fashion, except for the one at the last record, which is Waypoint f wf. This waypoint’s location (xf, yf, ha) and direction angle θf have special meaning—the location is the destination location for which the A* route was generated; the angle is a sentinel which has been assigned a unique value that indicates that the destination location on the A* route has been reached. A1.3.2 Angle Changes on a 3x3 Grid The legs of a triangle and the numbered tiles on Figure A1.2 below are used to formally identify all possible values that exist for the angle changes ∆θ of a point object that has reached the center square of a 3x3 grid within an RTPP quantized terrain map. In these measurements, only two legs of the triangle are used and the vertex of these two legs always occurs at Tile 1. 206 Figure A1.2: An A* route with ∆θ = 135˚ at the center square of a 3x3 grid. Of the two angles (i.e. the inner and outer) that result at the vertex on Tile 1, it the smaller of the two angles that is used to describe the angle change ∆θ that results from connecting the previous leg, Leg p, to the next leg, Leg n. In Figure A1.2, Leg p is a constant which is created by linking the centers of Tile 9 and Tile 1 and Leg n is a set of legs whose elements are created by linking the centers of Tile 1 and Tile s, where s = 2, 3, 4, 5, 6, 7, 8, 9. The angle changes ∆θ 207 that a point object goes through when it starts from Tile 9 and passes through Tile 1 to reach Tile s are as follows: • for s = 9, ∆θ= 0˚ • for s = 8, ∆θ= 45˚ • for s = 7, ∆θ= 45˚ • for s = 6, ∆θ= 90˚ • for s = 5, ∆θ= 90˚ • for s = 4, ∆θ= 180˚ • for s = 3, ∆θ= 135˚ • for s = 2, ∆θ= 135˚ Notice that in the cases of s = 4 and s = 9, when Leg p joins to Leg n, the result is straight line. To say an angle exists in a straight line is a contradiction. Therefore, the two angle changes that result from s = 4 and s = 9, which are ∆θ = 0˚ and ∆θ = 180˚, are discarded and not counted as angle changes because they do not cause angle changes within a line segment of an A* route. Nonetheless, the point object did undergo angle changes when it traveled to the centers of Tile s, for s = 2, 3, 5, 6, 7, 8. The set of angle changes is as follows: {45˚, 90˚, 135˚}. This means that a point object that has traveled from Tile 9 to Tile 1 and then to Tile s for s = 2, 3, 5, 6, 7, 8 has undergone a heading change of 45˚, 90˚, or 135˚. A1.3.3 Angle Changes on A* Routes In analyzing a point object at the center of a 3x3 grid of squares, it was discovered that line segments that have angles of 0˚ or 180˚ between them can be ignored because they do not cause angle changes within the A* route. Furthermore, when using the A* algorithm to find a route in a terrain map that is portioned into squares, all the routes must advance in the direction of the destination location as they are being generated; when traversing an RTPP terrain map, only angle changes of 135˚ and 180˚ result in a route that is moving away from a specified square. During the generation of an A* route, if an obstacle is encountered between the partially generated route’s current location and the destination location, the route must turn sideways to 208 avoid the obstacle; sideways turns corresponds to an angle changes of 90˚ in RTPP terrain maps. If the route cannot advance sideways (e.g. because of an obstacle or a penalized location), it must backtrack to one of the two locations that are diagonal to the partially generated A* route’s end point; this corresponds to an angle change of 45˚. It can also backtrack to one of the routes existing locations, which corresponds to an angle change of 0˚. However, when partially generated A* routes are forced to backtrack, the location that the A* route backed up to becomes the end point of the A* route and the previous location is removed from it. This means that the angle change of 45˚ also disappears when the previous location was removed from the A* route. Lastly, Steps 2 and 4 from an excerpt taken from [Har68] backup the claim that RTPP A* routes cannot contain angle change of ∆θ = 45˚. “Search Algorithm A*: 1.) Mark s “open” and calculate f(s). 2.) Select the open node n whose value of f is smallest. Resolve ties arbitrarily, but always in favor of any node n ∈ T. 3.) If n ∈ T, mark n “closed” and terminate the algorithm. 4.) Otherwise, mark n closed and apply the successor operator Γ to n. Calculate f for each successor of n and mark as open each successor not already marked closed. Remark as open any closed node ni which is a successor of n and for which f(ni) is smaller now than it was when ni was marked closed. Go to Step 2.” Step 2 forces the end points of partial paths to advance toward the goal node and Step 4 changes the end point of a partially generated A* path to a child node created by a more recently expanded node if this child node seems more promising. Hence A* routes always advance toward the goal node and if any partially generated A* path backtracks to a previous node on the path the node at which the backtracking occurred gets removed from the solution path. A1.3.4 Describing Direction Angles with True Headings The directions angles θ on A* routes correspond with the true heading description that explains Equation 3.4; this allows the direction of motion for line segment on A* routes to be specified as a true heading ψ. Furthermore, using true headings to describe the direction angles 209 of A* routes that are generated on terrain maps that are partitioned into squares produces A* routes that are limited to having only one of the following eight values for the direction angle of the resulting vectors: 0˚, 45˚, 90˚, 135˚, 180˚, 225˚, 270˚, and 315˚. The numbered tiles on Figure A1.2 above and Equation 3.4 can be used to show the following: (1) how the quantized terrain map leads to quantization of the direction angles θ; (2) how the true heading ψ is computed for each direction angle θ; (3) how vectors that use true heading ψ as their direction angle are used to describe the direction angles θ created by from Tile 1 to Tile s, where s = 2, 3, 4, 5, 6, 7, 8, 9. The eight distinct vectors on a 3x3 square grid (such as the one shown on Figure A1.1), are created by using Tile 1 as the tail (i.e. as the initial location), and the eight tiles that surround it as the head (i.e. the final location). In each of the cases, Tile 1 is the reference tile and Tiles 4, 6, 9, and 5 represent True North, True East, True South, and True West, respectively, which is consistent with the DFCS ENU coordinate system. The respective vectors between Tile 1 and Tiles 4, 6, 9 and 5 are as follows: 〈q, R ψ1〉, 〈q, R ψ2〉, 〈q, R ψ3〉, and 〈q, R ψ4〉, where the true heading ψ from each vector is as follows: (1) between Tiles 1 and 4, ψ1= 0˚; (2) between Tiles 1 and 6, ψ2 = 90˚; (3) between Tiles 1 and 9, ψ3 = 180˚; (4) between Tiles 1 and 5, ψ4 = 270˚;. the respective vectors between Tile 1 and Tiles 2, 8, 7 and 3 are as follows: 〈 2 q, R ψ5〉, 〈 2 q, R ψ6〉, 〈 2 q, R ψ7〉, and 〈 2 q, R ψ8〉, where the true heading ψ from each vector is as follows: (1) between Tiles 1 and 2, ψ5 = 45˚; (2) between Tiles 1 and 8, ψ6 = 135˚; (3) between Tiles 1 and 7, ψ7 = 225˚; (4) between Tiles 1 and 3, ψ8 = 315˚. A1.3.5 Number of Records vs. Number of Segment The number line segments l on an A* route that is stored using the format on Table A1.2 is not always equal to the number of segments s of a flight-pattern that is stored using the format on Table A1.1. The number of A* route-line-segments l is equal to the number of flight-pattern segments s only in the most trivial case of l = 1; the relationship between A* route-line-segments l and the number of flight-pattern segments s is as follows: s = 2l - 1. The number of records rf on flight-pattern lists depends on the number of records rw on waypoints lists. A waypoints list with rw records represents an A* route that contains l = rw – 1 210 line segments where each successive line segment points in a different direction. For instance, a waypoints list with rw = 2 records represents an A* route with only l = 1 line segment. This means that a waypoint list with rw = 2 records always represents a straight line. This dependence between records on the waypoints list rw and line segments l on the A* route is true for all real rw. Using a different example, a waypoint list with rw = 3 records represents an A* route with l = 2 line segments. This relationship described by Equation A1.3 below. l = rw − 1 (A1.3) where rw l is the number of records in the waypoints list; and is the number of different line segments on the A* route. Equation A1.4 below describes the dependence between the number of flight-pattern segments s and the number of A* route-line-segments l. s = 2l − 1 (A1.4) where l is the number of different line segments on the A* route; and s is the number of distinct segments on the resulting flight-pattern. This equation is useful for using the number of line-segments on the A* route to compute the number of flight-pattern segments that are created as a result of replacing the sharp edges on the A* route with arc-segments to create a flight-pattern. Therefore, an A* route that contains l = 1 line segments contain s = 1 distinct flight-pattern segments; an A* route that contains l = 2 line 211 segments contains s = 3 distinct flight-pattern segments; an A* route that contains l = 20 line segments contains s = 39 distinct flight-pattern segments. The number of records rf on the flight-pattern list can be computed by using the number of flight-pattern segments s as shown on Equation A1.5 below. rf = s + 1 (A1.5) where rf is the number of records in the flight-pattern list; and s is the number of distinct segments on the resulting flight-pattern. Equations A1.3, A1.4, and A1.5 are independent and they can combined to compute rw, l, rf, and s in terms or each other. For example, an equation that computes the number of records rf on the flight-pattern list by using the number of records rw on the waypoints list can be created by performing substitutions; i.e. substituting Equation A1.3 into Equation A1.4 and the result into Equation A1.5 produces the following equation: rf = 2rw – 2. A1.3.6 Creating Flight-pattern Segments Waypoints lists (whose record format is defined on Table A1.2) are used to generate the flight-pattern segments whose format for each segment is defined on Table A1.1. Table A1.1 shows that there are three basic types of flight-pattern segments: (1) straight lines, (2) clockwise circular arcs, and (3) counter-clockwise circular arcs. The conversion of each sharp edge on an A* route to a smooth curve is accomplished by reconfiguring the two connecting A* route-linesegments into three flight-pattern segments: two lines that are linked by one arc. A1.3.6.1 Angle Changes Between Two Consecutive Line Segments on A* routes Two types of angle changes ∆θ occur on A* routes: ∆θ = 90˚ and ∆θ = 135˚. A* routes with these two angle changes can be seen on Illustrations A1.1 and A1.2 below. 212 The A* route in Illustration A1.1 below is made up of three ENU coordinates that join to create two line segments; the three ENU coordinates in order are as follows: (xi, yi, ha), (xf, yf, ha), and (xu, yu, ha). The two line segment are converted to two point vectors whose angle change between them is ∆θ = 90˚. The first line segment is created by linking location (xi, yi, ha) to location (xf, yf, ha). These coordinates are also used to create the first vector 〈 q, R 0˚ 〉 and the first point-vector 〈 (xi, yi, ha), R 0˚ 〉. In the first vector and in the first point vector, the tail of the vector is at (xi, yi, ha) and the head is at (xf, yf, ha); therefore, for both vectors, the true heading ψ = 0˚ is the direction of travel. The second line segment is created by using (xf, yf, ha) as the initial location and (xu, yu, ha) as the final location. These two locations, in that order, create the second vector 〈 q, R 90˚ 〉 and the second point-vector 〈 (xf, yf, ha), R 90˚ 〉. In the ENU coordinate system, this direction of travel is east and it corresponds to a true heading ψ = 90˚34. The corresponding waypoint list for this A* route is shown on Table A1.3 below. The fact that the angle change is ∆θ = 90˚ and that is has the same value as the true heading ψ = 90˚ is coincidental. If the second vector were directed west, the angle change would still be ∆θ = 90˚ and the true heading would be ψ = 270˚. 34 213 Illustration A1.1: An A* route with an angle change of ∆θ = 90˚. Table A1.3: Waypoint List for A* route from Illustration A1.1. xc yc ha ψc xi yi ha 0˚ xf yf ha 90˚ xu yu ha -1000 The A* route on Illustration A1.2 below is made up of three locations that join to create two line segments with an angle change of ∆θ = 135˚ between them. The three locations are as 214 follows: (xi, yi, ha), (xf, yf, ha), and (xu, yu, ha); the first line segment is created by connecting location (xi, yi, ha) to location (xf, yf, ha). This line segment represents the following vector and point-vector, respectively: 〈 q, R 0˚ 〉 and 〈 (xi, yi, ha), R 0˚ 〉. The second vector is created with the following locations: (xf, yf, ha), and (xu, yu, ha). This respective vector and point-vector, which are 〈 q, R 45˚ 〉 and 〈 (xf, yf, ha), R 45˚ 〉, have true headings of ψ = 45˚, which corresponds to the north-eastern direction. The second vector makes an angle change of ∆θ = 135˚ with the first vector. The corresponding waypoint list for this A* route is shown on Table A1.4 below. Illustration A1.2: An A* route with an angle change of ∆θ = 135˚. Table A1.4: Waypoint List for A* route from Illustration A1.2. 215 A1.3.6.2 xc yc ha ψc xi yi ha 0˚ xf yf ha 45˚ xu yu ha -1000 Sectors Sectors are used to create arc-segment that continuously link two line segments. A unique sector is required to smooth each of the two angle changes that occur on A* routes because the angles α∆θ at the sector’s vertex are different for each of the two sectors. The sector vertex χ90˚ has a vertex angle of α90˚ = 90˚ and sector vertex χ135˚ has a vertex angle α130˚ = 45˚. Equation A1.6 below computes the arc-segment length a∆θ of each sector: the arc segment length for the sector χ90˚ shown on Illustration A1.3 below is a90˚ = 1.57q and the arc length for the sector χ135˚ shown on Illustration A1.4 below is a135˚ = 0.785q. a∆θ = qα ∆θ π 180° (A1.6) where a∆θ q is the length of the arc-segment in ft; and is the length of the radius in ft; and α∆θ is the sector’s angle in degrees. Illustration A1.3 shows the sector χ90˚ that smoothes angle changes of ∆θ = 90˚ and the flight-pattern records that result from smoothing angle changes of ∆θ = 90˚ are listed in order on Table A1.5. 216 Illustration A1.3: Using sector χ90˚ to smooth an angle change of ∆θ = 90˚. Table A1.5: Flight-pattern List for A* route from Illustration A1.3. sc sn dfp hifp xifp xo yifp yo sp sc 0 ha xp 0 yp 0 sc sn -1 ha xi xo yi yo sn st 0 ha xn 0 yn 0 st -1000 -1000 ha xt 0 yt 0 217 Illustration A1.4 shows the sector χ135˚ that smoothes angle changes of ∆θ = 135˚ and the flight-pattern records that result from smoothing angle changes of ∆θ = 135˚ are listed in order on Table A1.6. Illustration A1.4: Using sector χ135˚ to smooth an angle change of ∆θ = 135˚. Table A1.6: Flight-pattern List for A* route from Illustration A1.3. sc sn dfp hifp xifp xo yifp yo si sc 0 ha xi 0 yi 0 218 sc sn -1 ha xc xo yc yo sn st 0 ha xn 0 yn 0 st -1000 -1000 ha xt 0 yt 0 219 Curriculum Vita Manuel Soto was born on October 20, 1972 to Modesto and Maria Estela Soto. He attended public school in El Paso, TX, where he showed to have a knack for mathematics and science. He began attending El Paso Community College in the fall of 1993, at which time he began his pursuit for an Electrical Engineering degree. He made the Dean’s list during most of the semesters. Manuel’s first professional job began on the fall of 1994 as a Student Assistant at a tutoring center at the El Paso Community College (EPCC) where he was a student. He was chosen for this job over several candidates even though the job description required 30 completed college hours and he had only completed 27. During the spring of 1995 he was awarded one of the Alliance for Minority Participation (AMP) awards which included a monetary stipend, books and tuition for three credit hours, and a research job position with a professor for the summer of 1995: all at the University of Texas at El Paso (UTEP). Manuel used the award to enroll in the differential equations class and to be mentored by Dr. Benjamin Flores. That summer, Manuel did research on Doppler radar and he upgraded the computer provided by Dr. Flores—upgraded the BIOS, installed Windows 3.1, and set it up for performing MATLAB simulations. The next semester (Fall 1995) was the last semester that Manuel attended EPCC as a student; it was also his second semester enrolled at UTEP. He continued working as a Student Assistant at the tutoring center up until August of 1995, at which time he was hired as Math Tutor at a different tutoring center within EPCC, where he worked until the summer of 1997. At this time Manuel switched jobs to become a Research Assistant for Dr. Rene Villalobos. Here he did research on Image Processing and Machine Vision. He also upgraded the image processing system from DOS to Windows NT. During this research Manuel was awarded several Minority Institutions for Excellence (MIE) stipends to help fund his research. Next, during spring of 1999, Manuel worked for Dr. Sergio Cabrera as a research Assistant, where his research was 220 exclusively in Machine Vision. Manuel graduated in May 1999 with a Bachelors Degree in Electrical Engineering. From May 1999 to April 2000, Manuel Soto developed graphics, databases, and database-driven web sites as a Software Engineer for the ESEI consulting firm. On May 2000, Manuel Soto was hired by UNITECH as a Government contractor, where he is currently employed as a Computer Engineer. In this job, aside from providing services (e.g. mission support, hardware and software maintenance), he created a tank simulation module that has a GUI interface to control servos that are simulating the tank’s steering and throttle controls. Also, he assisted in creating and setting up modules for remote operation of M-60 tanks. Furthermore, he created several Head-Down Displays (HDD) emulating real cockpits that are used by controllers (e.g. U.S. Air Force pilots) to remotely operate unmanned aerial vehicles. Manuel is currently researching and designing a new source-code repository for the DFCS source code to update or replace the existing one. His latest work, which is part of this study, is to create an operational version of the RTPP on DFCS. As a result of this study, Manuel along with Dr. Patricia A. Nava and Mr. Luis E. Alvarado as co-authors has published his first professional article in the American Institute of Aeronautics and Astronautics journal. Additionally, Manuel and Mr. Luis E. Alvarado presented practical applications from this study at the National Defense Industrial Association’s 45th Annual Targets, UAVs and Range Operations Symposium & Exhibition. Permanent address: 812 Porras El Paso, TX, 79912 This Thesis was typed by Manuel Soto. 221