User Tools

Site Tools


Small Unmanned Aircraft: Theory and Practice

R. Beard, T. McLain,
Princeton University Press, 2012

Small Unmanned Aircraft: Theory and Practice: Supplement

  • Supplemental material is currently under construction. It will be regularly updated during Winter 2019. This file is preliminary and has not been carefully proof read.


The following lecture materials are included as a resource for instructors. The slides closely follow the book. We welcome suggestions on how these slides might be improved. - RWB & TWM

Chapter PDF Slides Powerpoint Last Modified
Chapter 1 - Introduction chap1.pdf chap1.pptx 9/10/2014
Chapter 2 - Coordinate Frames chap2.pdf chap2.pptx 1/11/2019
Chapter 3 - Kinematics and Dynamics chap3.pdf chap3.pptx 1/28/2019
Chapter 4 - Forces and Moments chap4.pdf chap4.pptx 1/28/2019
Chapter 5 - Linear Design Models chap5.pdf chap5.pptx 2/5/2019
Chapter 6 - Autopilot Design chap6.pdf chap6.pptx 2/21/2017
Chapter 7 - Sensors chap7.pdf chap7.pptx 2/19/2019
Chapter 8 - State Estimation chap8.pdf chap8.pptx 3/8/2017
Chapter 9 - Nonlinear Design Models chap9.pdf chap9.pptx 11/4/2014
Chapter 10 - Waypoint and Orbit Following chap10.pdf chap10.pptx 3/18/2019
Chapter 11 - Path Manager chap11.pdf chap11.pptx 03/29/2017
Chapter 12 - Path Planning chap12.pdf chap12.pptx 04/03/2017
Chapter 13 - Cameras chap13.pdf chap13.pptx 04/10/2017


The following files are included to help students with the project outlined in the book. We have found that if students start with these files, that they can generally do the project in about 3 hours per chapter. Full solutions to the project are available to instructors upon request. We respectfully ask that students and instructors do not post full solutions to the project anywhere on the web. The project creates an excellent learning experience and we believe that anyone who works the project for themselves will be much better equipped to make contributions to the state of the art in small unmanned air vehicles. - RWB & TWM

Github repository

The template files for Simulink, Matlab OOP, and Python are available at the following github repository:


  • There are some issues with the Zagi coefficients given in the book. We recommend that you use the following (slightly modified from the book) coefficients for the aerosonde aircraft. aerosonde.m
  • For the Aerosonde model use an initial speed of Va = 35 m/s, and and radius of 250 meters.
  • Additional information: The Aerosonde weight is actually 25kg. Also, the cruise speed is approximately Va=35 m/s.

Video Solutions


As you find typos and errors in the book, please send us an email. We will post the errors on this page and work with Princeton University Press to ensure that they do not propagate to future printings. - RWB & TWM

  • Chapter 1
  • Chapter 2
    • Page 19, just above Eq. 2.7: In the wind frame to body frame rotation matrix, the (3,2) and (2,3) entries in the matrix should be swapped. The (2,3) entry should be 0 and the (3,2) entry should be mimeTeX.
    • Equation (2.9) assumes that the side slip angle mimeTeX Otherwise, assuming that the roll angle mimeTeX, the right hand side should be mimeTeX
  • Chapter 3
  • Chapter 4
    • Page 43. The matrices mimeTeX should both be multiplied by 0.5.
    • Top of pg. 51. There is a sentence with a string of variables that all equal zero. The last variable should be mimeTeX instead of mimeTeX.
    • is used for the Oswald efficiency factor on page 48 and 63. This is an unfortunate and unintended double use of notation since is also used on page 47 and elsewhere throughout the book as the exponential.
  • Chapter 5
    • page 65. “horizontal component of the ground speed, mimeTeX.”
    • page 66. The order of the inputs mimeTeX does not match the order of the inputs in the simulation which is mimeTeX.
    • (page 75, line 17),(page 76, lines 6,10,12,15), (page 77, line 4) - the constant multiplying mimeTeX should be mimeTeX
    • page 76, line 5, mimeTeX should be mimeTeX.
    • page 77, line 4, mimeTeX should be mimeTeX
    • page 77, line 9 should be mimeTeX
    • In table 5.1, the m in the denominator represents mass and should be the font that represents mass. Same for some elements in Table 5.2.
  • Chapter 6
    • page 101. The only equation on this page has an error in the numerator of the second term on the right-hand side: It should read mimeTeX instead of mimeTeX.
    • page 106. Line 22, “ach” should be “each”.
    • page 116. References to line numbers are incorrect.
      • (4th line from top) “Line 11” should be “Line 12”
      • (5th line from top) “lines 12-13” should be “lines 14-15”
      • (9th line from top) “line 11” should be “line 12”
      • (10th line from top) “line 15-20” should be “line 19-23”
      • (19th line from top) “Lines 22-25” should be “Lines 26-29”
      • (page 117, 7th line from top) “line 24” should be “line 28”
  • Chapter 7
  • Page 128. The conversion from 1 N/m^2 = 3385 inches Hg is backwards. It should be 3385 N/m^2 = 1 inch Hg.
  • Page 134. The description of GPS trilateration is not correct. Replace the last paragraph on the page with the following:
    • Because of clock synchronization errors between the satellites (whose atomic clocks are almost perfectly synchronized) and the receiver, four independent pseudorange measurements are required to trilaterate the position of the receiver as depicted in figure 7.8. Why are four pseudorange measurements required? One range measurement narrows the receiver position to a sphere around the satellite. A second measurement from another satellite narrows the possible positions to the the intersection of the the two spheres around the satellites, which is a circle. A third measurement narrows the possible positions to the intersection of the three spheres around the satellites, which is two points. The point closest to the surface of the earth is taken as the position. To resolve position in three dimensions with a receiver clock offset error, at least four measurements are needed. The geometry associated with the pseudorange measurements from four different satellites form a system of four nonlinear algebraic equations in four unknowns: latitude, longitude, and altitude of the GPS receiver, and receiver clock time offset [33].
  • Triangulate in the caption of Figure 7.8 should be trilaterate.
  • Page 140, equation (7.22) should be mimeTeX
  • Chapter 8
    • Page 151, Line 1 in Algorithm 1 should be mimeTeX and not mimeTeX.
    • Page 152. We assume that the process noise satisfies mimeTeX where mimeTeX is the Dirac delta function.
    • Page 153, fourth equation from the bottom: there should be a curly bracket at the end of the line after mimeTeX, and the first mimeTeX under the integral should be mimeTeX
    • Page 158, For the Jacobian of f for x, the equation in the first row second column should have an addition in the numerator as opposed to a subtraction.
    • Page 159. The expression for mimeTeX in the middle of the page can be simplified significantly.
    • Page 160. The (3,5) and (3,6) terms of the Jacobian of f should have mimeTeX terms in the denominator.
    • Page 161. The definition for mimeTeX should be mimeTeX.
    • Page 162, problem 8.2. mimeTeX in the list of states to estimate, should be changed to mimeTeX.
  • Chapter 9
  • Chapter 10
  • Figure 10.2. mimeTeX in subfigure (b) should be replaced with mimeTeX.
  • Figure 10.2 should appear as figure_10.2.pdf.
  • page 177. The first equation relating similar triangles should read mimeTeX.
  • Equation 10.5 should be changed to read: mimeTeX.
  • Chapter 11*
  • pg. 187, second equation: there should not be a “)” after the mimeTeX
  • Figure 11.4 should appear as figure_11.4.pdf. Note that mimeTeX has been changed to mimeTeX.
  • pg. 192, lines 8-9: should read “If the MAV has transitioned into mimeTeX”, not mimeTeX.
  • pg. 194, line 3: should read “fillet is mimeTeX”, not mimeTeX.
  • pg. 201, line 32 of Algorithm 7, mimeTeX should be mimeTeX.
  • Chapter 12
    • In the first two equations on p. 210 (middle of section 12.1.1), the term mimeTeX should be replaced with mimeTeX to give mimeTeX and mimeTeX
  • Chapter 13
  • Figure 13.1 shows the elevation angle as being defined with respect to the vehicle frame. It should show the elevation angle mimeTeX defined with respect to the body frame, i.e., mimeTeX is measured from mimeTeX and not mimeTeX.
  • Appendix A
  • Appendix B
  • Appendix C
  • Appendix D
  • The references to line numbers on page 271 are not correct.
    • flag is shown in lines 2-11 should be flag is shown in lines 3-15
    • initial conditions are shown in lines 13-27 should be initial conditions are shown in lines 18-31
    • inputs are defined in lines 16-19 should be inputs are defined in lines 20-23
    • feedthrough term on line 20 should be feedthrough term on line 24
    • initial conditions are defined on line 24 should be initial conditions are define on line 28
    • sample times are defined on line 27 should be sample times are defined on line 31
    • f(t,x,u) is defined in lines 30-32 should be f(t,x,u) is defined in lines 34-36
    • h(t,x,u) is defined in lines 35-36 should be h(t,x,u) is defined in lines 39-40
  • The references to line numbers on page 272 are not correct. The paragraph at the bottom of page 272 should read as follows:
    • The code listing for a C-file s-function that implements the system defined by equations (D.5) and (D.6) is shown below. The function name must be specified as in Line~3. The number of parameters that are passed to the s-function is specified in Line 19, and macros that access the parameters are defined in Lines 6 and 7. Line 8 defines a macro that allows easy access to the input of the block. The block structure is defined using mdlInitializeSizes in Lines 17-39. The number of continuous states, discrete states, inputs, and outputs is defined in Lines 25-31. The sample time and offset are specified in Lines 41-46. The initial conditions for the states are specified in Lines 53-58. The function mimeTeX is defined in Lines 75-90, and the function mimeTeX is defined in Lines 60-73. The C-file s-function is compiled using the Matlab command » mex secondOrder_c.c.
  • Appendix E
  • Appendix F
  • Page 278, 2nd and 5th lines: mimeTeX should be mimeTeX. See page equation 5.21 on page 67.
  • Page 278, Line defining Y0: the gamma term should be replaced with 0 (zero). This is just an initial value for angle of attack, which is an output of the trim function.
  • Page 279, 3rd and 4th equations on the page: mimeTeX should be mimeTeX.
  • Appendix G
  • Appendix H


Our intention is to occasionally add supplemental material to this page. We would also welcome contributions from the broader community. If you are interested in adding material, please contact the authors.

  • Full Longitudinal State Direct and Indirect Kalman Filter
    • The Kalman filters presented in the book are meant to be tutorial and are intended for aircraft with very limited processors. Estimating the full state using all available sensors is a much better approach. There are two methods for constructing the Kalman filter: direct state estimation, and indirect state estimation. The following pdf and Simulink model describes and implements both filters for the full longitudinal state. You will note from the simulation, that this method works much better than that described in the book.
  • Dubins Airplane Paths
    • The Dubins paths discussed in Chapter 11 assume that the MAV is flying at a constant altitude. The associated model is typically called a Dubins car model. The Dubins car can be extended to a Dubins airplane model that includes altitude. An explanation of the associated Dubins airplane paths is discussed in:
      • Mark Owen, Randal W. Beard, Timothy W. McLain, “Implementing Dubins Airplane Paths on Fixed-wing UAVs,” Handbook of Unmanned Aerial Vehicles, ed. Kimon P. Valavanis, George J. Vachtsevanos, Springer Verlag, Section XII, Chapter 68, p. 1677-1702, 2014. Preprint.
    • Simulink files implementing Dubins airplane paths. Run the Simulink file mavsim_dubins.slx.
  • Python Simulator
  • Zagi Coefficients
    • zagi_coefficents.pdf The aerodynamic coefficients for the Zagi aircraft as given in the book, come from this paper.
  • Total Energy Control
    • An alternative to the longitudinal autopilot described in the textbook is the “Total Energy Control System” described here: tecs_autopilot.pdf.
    • A nonlinear version of the total energy control system is described in the following paper.
      • Matthew Argyle, Randal W. Beard, “Nonlinear Total Energy Control for the Longitudinal Dynamics of an Aircraft,” Proceedings of the American Control Conference, Boston, MA, 2016.PDF
    • For more detail, see Chapter 6 of
      • Matthew E. Argyle, “Modeling and Control of a Tailsitter with a Ducted Fan,” PhD Dissertation, Brigham Young University, 2016. PDF
    • The advantage of the total energy control method is that it is independent of the aerodynamic model.
  • Accelerometers and Attitude Control For Multi-rotors
    • Accelerometers are often used to estimate the roll and pitch angles of multi-rotor vehicles. It turns out that since the aerodynamics of multi-rotors are quite different than fixed wing vehicles, the method described in the book does not work for multi-rotor vehicles. An detailed explanation of what data can be extracted from accelerometers on multi-rotor vehicles is given in
      • Robert Leishman, John Macdonald, Randal W. Beard, Timothy W. McLain, “Quadrotors and Accelerometers: State Estimation with an Improved Dynamic Model,” IEEE Control Systems Magazine, vol. 34, no. 1, p. 28-41, February, 2014. Preprint.
start.txt · Last modified: 2019/07/22 13:31 by beard