Are we embedded yet? I'd say yes! In this talk I'll show you how I programmed a self-balancing robot from scratch. I'll cover IO abstractions, motion sensors, motor drivers, filters, control stuff, bare metal multitasking, logging, etc. And I'll explain how some of Rust features made development easier and made the program more correct.
The talk will cover the following topics (as time allows):
Dynamics of the inverted pendulum
Motion sensors
Motors
Controller architecture
Implementation
Logging
Performance evaluation
I should note that I won't go in too much detail about the control engineering topics; just enough to motivate the design of the program.
The main takeaways of the talk will be:
Rust's rich type system lets you validate parts of your program, like the system initialization, at compile time eliminating a whole class of logic bugs.
Zero cost abstractions give you the high performance required to target microcontrollers with just a few KBs of RAM and that operate at tens of MHz.
Memory safety enables fearless multitasking, even on a system without an OS.
Speakers: Jorge Aparicio Rivera