Understanding PID Control: A Presentation

I made a slideshow for my team covering the basics of PID Control. I’m posting it here in case anyone in the community finds it helpful, as kind of a sequel to The Complete FRC Git Tutorial.

The PDF (pid_presentation.pdf) is meant to be used as a presentation, so it has a bunch of overlays that might make it annoying to read. I have attached also an overlay-free version (pid_handout.pdf) that might be more suitable for use outside of presentations.

This presentation was made in LaTeX with Beamer. I’ve also attached the TeX sources in a zip if anyone is interested.

pid_presentation.pdf (168.1 KB)
pid_handout.pdf (121.2 KB)
pid_sources.zip (9.9 KB)


This is a really through definition! I really like the in-depth nature.

Here’s some things I would suggest:

  1. Your presentation is almost all words, with the few pictures being quite technically. Adding some video and photos will make it more accessible to students of different learning styles.

  2. You get technical fast. Consider taking more time to explain what motives the material. There are lots of students that could understand the concepts behind a PID, and would benefit from it, but would be completely lost once you start introducing such rigorous explanations.

  3. Your code example is a really nice addition, but since this is aimed for FRC students, I think you should also include code examples from wpilib and/or CTRE. There are a lot of plug and play options for PID that are going to lead to a higher reward/work ratio. If a rookie team stumbled onto this documention, I think it’s important for them to know what options are out there.

It’s really looking great! I’m glad you made it, super cool resource.

To be fair, it does explicitly say

And frankly, I think going through a basic implementation of a PID controller is the right way to go in a presentation called “Understanding PID Control”. If it was “How to Get PID Running Quickly Without Understanding It”, then yeah, jumping straight to the preexisting libraries would be appropriate.


Thank you! Yeah I realized I should’ve probably gone slower and have more stuff leading up to the more technical explanations. I thought of adding in examples of using PIDs in WPILib/CTRE/Rev etc but I don’t really know it well (I remember setting up PIDs for a Neo but that’s about it), so ultimately I just decided to add the example as a complement to the theory only, and maybe show some WPILib examples on the side when presenting.

I full heartedly agree that all the other material should exist to fully understand the PID, but we still need to have the standard method of implementing PID’s present. It’s a dangerous precedent to stray far from well established libraries. In most cases its more prone to errors and it will be harder for the community to help.

I’ll teach my kids HSL vs HSV, how to create vision pipelines, and how retro-reflective tape works, but we are still using a limelight. Why? Because the reward/work ratio is so much higher than writing our own.

Using the pre-build libraries is more representative of the real world. I’m not going to re-write all of tensor flow just so I can understand it a little better. I wish someone had taught me how to read documentation and implement other people’s code.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.