Programming a Line Follower Robot
About
Have fun programming a line follower robot, and learn embedded no_std, async Rust along the way! We cannot provide physical robots, but the robot code you will write will run in a very realistic physical simulation, where wheels can lose grip, motor responses are not linear, sensors have noise and other kinds of quirks, and we will see how all these issues become more problematic at higher speeds. Over the course of the workshop, initially we will implement the robot in a trivial way, then we will see how to make it more precise so that it can travel faster, first with a classical PID controller and then applying extensions to make it more effective. Then, for added fun, we will make our virtual robots compete head-to-head against each other!
Description
This workshop will be at the same time playful and deep. About Rust, it goes in depth on no_std programming and async code execution in embedded context. Despite the fact that we will not use physical robots, the environment will faithfully simulate the experience of programming a robot and having limited visibility into what is actually happening during its execution. We will also use a data collection (telemetry) system, and see that it is the only reasonable way to gain insight into the causes of any robot “misbehavior” (and, thanks to the realistic physical simulation, there will be plenty of them, which will be fun!). We have extensive experience in controlling small robots, and we will guide the participants through all the pitfalls that they’ll find when programming this line follower.
Prerequisites
A reasonable knowledge of Rust is required. No previous knowledge of embedded no_std Rust is needed, and also async experience, while useful, is not mandatory. Each participant will only need a notebook usable for developing with Rust, with rustup, git, and the editor or IDE of their choice.