Self Guided

Two dozen microcontrollers, all coordinated over high-speed CAN, navigation, triangulation, path-planning, sonar, spinning blades and turning wheels... all developed by four people.  I was one of the four core developers for the Hybrid-Z self-guided lawnmower by Self-Guided Systems.  


The brains of the mower, or the System Controller, was a high-end processor buried safely in the mower.  It took in all the sensor data and the users input and decided what should be done.  It ran the positioning, path planning, and navigation algorithms.  It also drove the GUI.  To coordinate all this work, I ported RTEMS to our MIPS processor, then used it to architect our system.  I used the Rate Monotonic Scheduler to create a system where all tasks were guaranteed to get their timeslice when they needed it.  While I had used an RTOS many times before this, it was this project that really taught me what real-time is all about.



This pattern of being the person who sets up the architecture for others to play in has been repeated through my career.  Sometimes it starts with porting RTEMS or FreeRTOS to a new microcontroller.  Sometimes it's creating a small realtime executive from scratch.  Sometimes it's a design based on a super-loop or coroutines.  I understand the tradeoffs between the options and can design the best platform to build a reliable easy-to-maintain system upon. 

Often, this is where the 80% begins.  It is important to have a robust platform to reach a project's goals, but the platform is rarely part of the idea itself... it's an enabler.  A good platform can make everything easier.