Preface xiii
Aerospace Series Preface xvii
Glossary xix
About the Author xxiii
About the Companion Website xxv
1 Design of an Engineering Flight Simulator 1
1.1 The Evolution of Flight Simulation 1
1.2 Structure of a Flight Simulator 3
1.3 Real-time Flight Simulation 6
1.3.1 The Concept of Real-time Computing 6
1.3.2 Operating Systems 8
1.3.3 Latency 9
1.4 Distributed Computing 10
1.5 Processes and Threads 15
1.5.1 Multi-tasking 15
1.5.2 Semaphores 16
1.5.3 Asynchronous Input 18
1.5.4 Real-time Scheduling 21
1.6 Software Partitioning 22
1.7 Simulator Data 24
1.8 Input and Output 29
1.8.1 Data Acquisition 29
1.8.2 Digital-to-Analogue Conversion 30
1.8.3 Analogue-to-Digital Conversion 31
1.8.4 Multiplexing 33
1.8.5 Encoders 33
1.8.6 Digital Input/Output 34
1.8.7 Signal Conditioning 35
1.8.8 Embedded Systems 36
1.8.9 USB Interfacing 40
References 42
2 Software Methods in Simulation 45
2.1 The Laplace Transform 45
2.2 Transfer Functions 47
2.3 Discrete-event Systems 54
2.4 Data Fitting 58
2.4.1 Data Sources 58
2.4.2 Least-squares Method 60
2.4.3 Spline Methods 63
2.4.4 Extrapolation 70
2.4.5 Observations on Data Fitting 72
2.5 Numerical Methods 72
2.6 Numerical Stability and Accuracy 80
2.6.1 Numerical Stability 80
2.6.2 Numerical Accuracy 82
2.7 Timing Analysis 84
2.8 Simulation Packages 87
References 92
3 Aircraft Equations of Motion 93
3.1 Atmospheric Model 93
3.1.1 The Atmosphere 93
3.1.2 Wind 96
3.1.3 Turbulence 96
3.1.4 Wind Shear 98
3.2 Axes 99
3.2.1 Body Axes 99
3.2.2 Stability Axes 101
3.2.3 Local Frame 101
3.2.4 Earth-centred Earth-fixed Frame 104
3.2.5 Rotating Earth Frame 104
3.3 Quaternions 105
3.4 Aerodynamics 108
3.4.1 Performance and Handling 109
3.4.2 Coefficient of Lift 110
3.4.3 Coefficient of Drag 112
3.4.4 Coefficient of Side Force 113
3.4.5 Pitching Moment Coefficients 114
3.4.6 Rolling Moment Coefficients 115
3.4.7 Yawing Moment Coefficients 115
3.4.8 Mach Number 116
3.4.9 Observations 117
3.5 Equations of Motion 118
3.5.1 Forces 120
3.5.2 Moments 122
3.5.3 Long-Range Navigation 125
3.6 Propulsion 126
3.6.1 Piston Engines 127
3.6.2 Turbofans 134
3.7 Landing Gear 137
References 144
4 Flight Control Systems 147
4.1 Automatic Flight Control 147
4.2 Development of Flight Control Laws 148
4.2.1 The Case for Offline Development and Testing 148
4.2.2 SimPlot 150
4.2.3 Trimming 152
4.3 PID Control 154
4.4 Automatic Modes 157
4.4.1 Turn Coordinator 157
4.4.2 Yaw Damper 158
4.4.3 Pitch Rate Controller 160
4.4.4 Auto-throttle 163
4.4.5 Vertical Speed Hold 165
4.4.6 Altitude Hold 165
4.4.7 Heading Hold 166
4.4.8 Observations on Automatic Modes 170
4.5 Airbus Control Laws 170
4.5.1 Pitch Normal Law 171
4.5.2 Roll Rate Law 173
4.6 Tracking 174
4.7 Auto-land 177
4.8 Flight Director 180
4.9 Flight Management Systems 181
4.9.1 Flight Control Unit 182
4.9.2 Flight Management Systems Simulation 182
References 187
5 Navigation Systems 189
5.1 The Earth 189
5.1.1 Gravity 189
5.1.2 Magnetic Variation 190
5.2 Sensor Modelling 191
5.3 Navigation Principles 192
5.3.1 Position 192
5.3.2 Airspeed 194
5.3.3 Altitude 195
5.3.4 Heading 195
5.3.5 Distance and Bearing 197
5.4 Navigation Databases 199
5.5 Map Projections and Charts 203
5.6 Navigation Computations 207
5.7 Radio Navigation Aids 212
5.7.1 Automatic Direction Finding (ADF) 212
5.7.2 VHF Omni-directional Range 214
5.7.3 Distance Measuring Equipment 217
5.7.4 Instrument Landing System 218
5.8 Traffic Collision Avoidance Systems 221
5.9 Inertial Navigation Systems 223
5.10 Satellite Navigation 230
References 241
6 Aircraft Displays 243
6.1 OpenGL 243
6.1.1 The Development of OpenGL 243
6.1.2 Legacy OpenGL 244
6.1.3 OpenGL Version 4 245
6.2 glib – A 2D Graphics Library for Flight Simulation 253
6.2.1 GPU Software Interface 254
6.2.2 Dots, Vectors and Triangles 256
6.2.3 Textures 260
6.2.4 Fonts 264
6.2.5 Matrix Transformations 273
6.2.6 Summary of glib Functions 275
6.3 Graphics Libraries 275
6.3.1 GLFW 277
6.3.2 cglm 278
6.3.3 PngLib 278
6.3.4 FreeImage 279
6.3.5 FreeType 281
6.3.6 Compiling, Linking and Loading Shader Programs 281
6.3.7 Svg 281
6.4 Design Considerations 284
6.4.1 Absolute and Relative Rendering 284
6.4.2 Memory Organisation 286
6.5 EFIS Displays 287
6.5.1 Primary Flight Display 288
6.5.2 Navigation Flight Display 292
6.5.3 EICAS Display 294
6.6 Flight Instruments 296
6.7 Soft Panels 303
References 308
7 Image Generation Systems 309
7.1 IG Pipeline 309
7.2 Visual Databases 311
7.2.1 Constructing Visual Databases 311
7.2.2 Visual Database Standards 313
7.2.3 Visual Database Editing Tools 314
7.2.4 Representative Visual Databases 316
7.2.5 Visual Database Organisation 319
7.2.6 Binary-spaced Partition Trees 322
7.3 OpenSceneGraph 323
7.4 X-Plane 11 329
7.4.1 X-Plane 11 API 329
7.4.2 An X-Plane 11 Plug-in 330
7.4.3 OSG versus X-Plane 11 333
7.5 Head-up Displays 335
7.6 Digital Terrain Elevation Data 337
7.7 Visualisation 343
7.8 Observations 343
References 345
8 Sound Generation 347
8.1 Sound Waveforms 347
8.2 Sound Generation Methods 350
8.2.1 WAV Format 351
8.2.2 Fast Fourier Transform 352
8.2.3 FFTW 354
8.2.4 Filters 356
8.3 OpenAL 359
8.3.1 OpenAL Application Programming Interface 359
8.3.2 Loading Sound Files 360
8.3.3 Dynamic Sounds 363
8.4 Tones 364
8.4.1 Outer Marker 365
8.4.2 Middle Marker 367
8.4.3 Morse Code 367
8.4.4 Warnings 368
8.4.5 Background Sounds 369
8.4.6 Turbofan Sounds 369
8.4.7 Real-time Sound Generation 371
8.5 Recordings 372
8.5.1 Airspeed-related Sound 372
8.5.2 Turbofan Engines 373
8.6 Observations 373
References 374
9 The Instructor Station 375
9.1 Requirements 375
9.1.1 User Interfaces 375
9.1.2 Instructor Station Requirements 377
9.2 GUIs 380
9.2.1 User Inputs 380
9.2.2 Colour 381
9.2.3 Prototyping 381
9.2.4 User Actions 384
9.2.5 Software Considerations 384
9.3 Design of the User Interface 387
9.3.1 Classification of Operations 387
9.3.2 Design and Implementation of Menus 390
9.3.3 Widgets 395
9.3.4 Mouse Events 400
9.4 Real-time Operation 402
9.5 Charts and Maps 405
9.6 Flight Data Recording 408
9.6.1 Data Recording 409
9.6.2 Data Display 411
9.7 Scripting 411
9.7.1 A Simple Scripting Language 413
9.7.2 A Stack Machine 414
References 421
10 Validation 423
10.1 Software Verification 423
10.2 Static Validation 424
10.2.1 I/O Systems 425
10.2.2 Control Loading Systems 426
10.2.3 Weather Module 427
10.2.4 Navigation Systems 428
10.2.5 Display Modules 428
10.2.6 Visual Systems 430
10.2.7 The Instructor Station 432
10.2.8 Networking 433
10.3 Aircraft Performance 435
10.3.1 Taxiing 436
10.3.2 Take-off 436
10.3.3 Level Flight 436
10.3.4 Climbing Flight 440
10.3.5 Approach and Touchdown 440
10.3.6 Turning Flight 442
10.3.7 Sideslip 444
10.3.8 Observations 445
10.4 Dynamic Response 445
10.4.1 Longitudinal Dynamics 445
10.4.2 Lateral Dynamics 447
10.4.3 Engine Failure 449
10.4.4 Observations 450
10.5 Octave and MATLAB 451
10.5.1 Longitudinal Model 452
10.5.2 Lateral Model 456
10.6 Simulator Qualification 459
10.6.1 Aeroplane Flight Simulator Evaluation Handbook – Volume I 461
10.6.2 Aeroplane Flight Simulator Evaluation Handbook – Volume II 462
References 463
Appendix 465
A1 System-wide #include files 465
A2 Libraries 466
A3 Boeing 747-100 466
A4 Cessna- 172 468
A5 Supporting Files 469
A6 SimPlot 470
A7 Raspberry Pi 470
A8 Diagnostics 471
A9 MSYS2 471
A10 Miscellaneous 472
Index 473