# mavsim_public: the companion repository for Small Unmanned Aircraft, and the gaps in it

> mavsim_public holds the lecture slides, project templates and partial video solutions for the Beard and McLain textbook Small Unmanned Aircraft, spread across Python, MATLAB and Simulink versions. It is a teaching repository rather than a flight software package, and it comes with an explicit request that solved projects stay off the web.

**byu-magicc/mavsim_public** — Repository for the textbook:  Small Unmanned Aircraft: Theory and Practice, by Randy Beard and Tim McLain

- Repository: https://github.com/byu-magicc/mavsim_public
- Stars: 1,036 · Forks: 267
- Language: Python
- License: GPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/byu-magicc-mavsim-public

## A teaching repository, not an autopilot you could fly

mavsim_public is the public companion to a published textbook. Small Unmanned Aircraft: Theory and Practice was written by Randy Beard and Tim McLain and published by Princeton University Press in 2012, and the repository collects the teaching material around it: a working PDF of the book, lecture slides for thirteen chapters, template files for the course project, and a set of video walkthroughs.

It is worth being blunt about what this is not. It is not a flight control library with a stable API, no version scheme, no release artefacts and no published dependency list. There is nothing to pip install, no plugin interface, and no support promise. What it is, precisely, is a body of course material plus a starting point for student projects.

That framing also explains the repository's most unusual feature. The project files section states that full solutions are available from instructors upon request, and it asks that students and instructors not post full solutions to the project anywhere on the web. The stated reason is pedagogical: working the project yourself is what equips you to contribute to the state of the art in small unmanned air vehicles. This is a repository that deliberately withholds its most valuable output, which is either admirable discipline or an annoying constraint depending on whether you are on the teaching side.

The code itself is licensed GPL-3.0, with a LICENSE file at the repository root. That matters if you intend to reuse the MAVSim implementation in anything that is not itself GPL, and it is worth remembering that the license covers the code and not the textbook or the slides, which are separate published artifacts.

## Slide dates that show which chapters are still being touched

The lecture material is presented as a table of thirteen chapters, each with a PDF slide deck, a Powerpoint file and a last modified date. The dates are the most informative column in the repository, more so than the titles, because they are inconsistent in a way that reveals which material the instructors still maintain.

Several chapters carry dates in 2024, including coordinate frames, kinematics and dynamics, forces and moments, linear design models, autopilot design, sensors, state estimation and waypoint and orbit following. Others are older: chapter 9 on nonlinear design models is marked 11/4/2014, chapter 12 on path planning 04/03/2017, chapter 13 on cameras 04/10/2017. Chapter 11 on the path manager is 03/21/2022 and chapter 1 on introduction 4/4/2022.

Two things follow from that spread. First, the newer decks are the ones aligned with the material the authors were still refining for the second edition work, so if you are teaching or learning the parts of the book that involve estimation and control design, you are working from the most current slides. Second, the 2014 date on the nonlinear design models chapter is a genuine gap: slides a decade old for a chapter that many students find the hardest. Nobody claims the older decks are wrong, but nobody has updated them either.

The slides are hosted on Google Drive and Google Slides rather than committed to the repository, so they are not versioned alongside the code. That is a practical limitation: a link can break, and a deck you present cannot be diffed against a later revision of the same deck.

## Templates that cut a chapter of work down to about three hours

The project files are what the repository is really for. The project outlined in the book asks students to build up an MAVSim implementation chapter by chapter, and the template files in this account are provided so students can start from a working skeleton rather than an empty directory. The stated payoff is time: the authors report that students who start with these files can generally do the project in about three hours per chapter.

That figure is the honest metric for the value here. Without the templates you are re-deriving the same scaffolding, the same file layout and the same starting parameters thirteen times. With them, each chapter is a focused exercise on the new material.

The chapter list is a standard small UAS curriculum. Chapter 1 introduces the project, chapter 2 covers coordinate frames, chapter 3 kinematics and dynamics, chapter 4 forces and moments, chapter 5 linear design models, chapter 6 autopilot design, chapter 7 sensors, chapter 8 state estimation, chapter 9 nonlinear design models, chapter 10 waypoint and orbit following, chapter 11 the path manager, chapter 12 path planning, and chapter 13 cameras.

A template repository also carries the usual risk of skeletons: starting code that assumes a particular file layout, particular variable names and particular tool versions. If you take only one thing from the templates, take the aerosonde parameter set they encode, and check it against the notes below.

## Four implementations side by side, and a file listing the pending corrections

The repository root is the clearest evidence of how the project has evolved. It contains legacy_mavsim_python, mavsim_python, mavsim_matlab and mavsim_simulink, plus bookcover.jpg, the README, the LICENSE and merge_corrections_todo.md.

Four parallel trees is a maintenance signal rather than a feature. Having a legacy Python directory alongside a current Python one means there is a migration in progress or a period where two generations of the same code coexist, and the presence of a file named merge_corrections_todo.md suggests the authors are tracking corrections that still need to be carried across versions. The primary language for the repository is listed as Python, but the MATLAB and Simulink trees remain, which is normal for a textbook that has been through more than one generation of its toolchain.

For a reader picking this up, the practical question is which tree is the one to start from, and the repository does not answer it in the README beyond the directory names. That is a genuine gap, and it is the first thing to resolve, because the corrections described in the next section have to be applied to whichever tree you adopt.

The Simulink tree carries a different kind of weight in an academic context, so it is likely to be the most maintained in practice. That is an inference from the toolchain rather than a documented fact, and the merge_corrections_todo.md file is the place to check.

## The aerosonde coefficients the book gets wrong

The comments section is short and unusually valuable, and it is the most concrete engineering content in the repository. It states that there are issues with the Zagi coefficients given in the textbook, and that slightly modified values should be used for the aerosonde aircraft instead, with the aerosonde parameters supplied as a download.

Two more corrections follow. For the Aerosonde model, use an initial speed of Va of 35 m/s and a radius of 250 meters. Additional information given: the Aerosonde weight is actually 25 kg, and the cruise speed is approximately Va of 35 m/s.

This is the kind of errata that a textbook repository exists to carry, and it is also a warning about a subtler class of problem. Aero coefficients propagate. A wrong Zagi coefficient does not produce an obviously wrong simulation, it produces a plausible one that is off, and a student who spends a week wondering why the autopilot will not converge is probably chasing exactly this. The weight correction matters for the same reason: mass enters the dynamics, and 25 kg may not be what the book implies.

If you are using these files, apply the comments section values and treat the book coefficients as suspect for the aerosonde specifically. The repository is explicit that the aerosonde is the aircraft where the coefficients need adjusting, which implies the same files for other airframes are not necessarily suspect in the same way.

## Video solutions that stop short of the final project files

The repository links YouTube walkthroughs for chapters 2, 3, 4, 5, 6, 10, 11 and 12, plus a downloadable archive of estimation results for chapter 8. What is missing from that list is as informative as what is present: there is no video for chapter 1, for the sensors chapter 7, for the nonlinear design models chapter 9, or for the cameras chapter 13.

That pattern matches the project structure. The videos cover the chapters where the modelling work is the interesting part, coordinate frames through the design models, and the path management and planning work. They are not there for the chapters that are more configuration than derivation.

The chapter 8 results archive is a different kind of artifact, a screenshot set of estimation results, which is a reference target for the state estimation chapter rather than a walkthrough. It is the sort of thing that saves a student from guessing what a correct Kalman filter output should look like.

The missing solutions, full project files for all thirteen chapters, are what instructors request, and the request to keep them off the web is explicit. If you are a student, that constraint means the video walkthroughs are the ceiling of what is publicly available, and you will be writing the rest yourself, which is the intended learning outcome. If you are an instructor, you have to ask the authors, which adds a dependency to your course preparation timeline.

## There is no install step, so start from a clone and a Drive link

Nothing here is installed. There is no package on PyPI, no build script and no dependency file at the root, so the first use of this repository is a clone and a set of downloads.

What you get locally from a clone is the code trees and the README. The rest is hosted on Google Drive and Google Slides: the book PDF as uavbook.pdf, one PDF deck and one Powerpoint file per chapter, and the aerosonde parameters as a download in the project directory. The chapter 8 estimation results are also a download, sitting alongside the other project files.

The first real use, then, is deciding what to run. Pick one implementation tree, pull the chapter slides for the chapter you are on, and open the matching template file. If you are working in Python, the choice between mavsim_python and legacy_mavsim_python matters, and nothing in the repository settles it for you. If you are working in MATLAB or Simulink, the same question applies in a milder form.

Then apply the corrections before you trust any output, which is the subject of the next section. Skipping that step is how a student ends up debugging a simulator that was never wrong in the way they assume.

## A private clone of a public repo, for a semester of updates

The GitHub Repo section addresses a specific workflow problem. A course runs for a term, and during that term the instructors push updates to the material. A student who clones the public repository directly can pull those updates, but a student who has modified the files has a merge problem. The linked slide deck, Making a Private Clone of a Public Repo, describes the arrangement: make a private copy of the public repository, so incoming updates can be received while the student retains their own work.

This is a small detail with a large practical effect, and it is the kind of thing that only appears in a repository maintained for real classrooms rather than for demonstration. The alternative, and the one many students will default to, is to fork, work in the fork, and merge manually at the end of the term.

The same section also shows the appetite for supplementary material. The intent is stated as occasionally adding supplemental material to the page, and an invitation to contribute is included. Since the last push was on 2026-06-13 and the repository has no GitHub releases, a student picking this up should not expect a versioned update cadence, only occasional pushes to the main branch. The private clone arrangement is what makes that workable, since it is designed to absorb exactly that kind of intermittent update.

The book PDF itself is hosted on Google Drive and is described as a work in progress, intended to become a second edition of the book, with the explicit caveat that it has not been carefully proofread and is updated regularly. That caveat matters if you plan to study from the PDF rather than the published edition.

## Conclusion

mavsim_public suits students working through the Small Unmanned Aircraft project chapters and instructors assembling a course from slides and templates, and it is the fastest way to get a working MAVSim starting point rather than writing the aerosonde model from scratch. It does not suit a team that wants a production autopilot, a pinned dependency set, or a project with a supported maintenance path, and it does not suit anyone expecting the textbook itself. Check three things first. Check that the implementation track you pick is the maintained one, because the tree carries both a legacy_mavsim_python directory and a mavsim_python directory alongside MATLAB and Simulink versions, and a merge_corrections_todo.md file records pending corrections. Check the aerosonde parameters against the notes in the project section, since the repository states that some Zagi coefficients in the book are wrong and lists corrected values, a mass of 25 kg and a cruise speed near Va of 35 m/s. And check the licensing boundary before you reuse anything, because the code is GPL-3.0 while the slides and the text of the book are separate published works. The last push was on 2026-06-13 and the repository has no GitHub releases.

## FAQ

### What is the mavsim_public repository for?

It is the companion repository for the textbook Small Unmanned Aircraft: Theory and Practice by Randy Beard and Tim McLain, published by Princeton University Press in 2012. It holds the book PDF, lecture slides for thirteen chapters, project template files and video walkthroughs.

### Which MAVSim implementations does the repository contain?

The top-level listing shows legacy_mavsim_python, mavsim_python, mavsim_matlab and mavsim_simulink, plus a merge_corrections_todo.md file that records corrections still pending. The repository does not state in the README which tree is the current one, so that is a question to resolve before starting.

### What are the corrected aerosonde parameters?

The comments section states that some Zagi coefficients in the textbook are problematic and gives slightly modified values for the aerosonde, and it specifies an initial speed of Va of 35 m/s with a radius of 250 meters. It also notes the Aerosonde weight is actually 25 kg and that the cruise speed is approximately Va of 35 m/s.

### Are the full project solutions available in the repository?

No. Full solutions are available from instructors upon request, and the repository asks that students and instructors not post full solutions to the project anywhere on the web. Public video walkthroughs exist for chapters 2, 3, 4, 5, 6, 10, 11 and 12.

### What license does mavsim_public use?

The repository is licensed GPL-3.0, with a LICENSE file at the root. The textbook and the lecture slides are separate published works rather than part of that code license.

### How current is the mavsim_public repository?

The last push was on 2026-06-13 and the repository has no GitHub releases. The lecture slides carry their own last modified dates, ranging from 11/4/2014 for the nonlinear design models chapter to dates in 2024 for several others.

## Sources

- [byu-magicc/mavsim_public on GitHub](https://github.com/byu-magicc/mavsim_public)
- [Issues](https://github.com/byu-magicc/mavsim_public/issues)
- [License: GPL-3.0](https://github.com/byu-magicc/mavsim_public/blob/main/LICENSE)
- [README](https://github.com/byu-magicc/mavsim_public/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/byu-magicc-mavsim-public
