Embedded systems design is a productive synergy between hardware and software design. Essentially, it’s the art of choosing and designing the proper combination of hardware and software components to achieve design goals like speed and efficiency. Although we may not realize it, most of us use these embedded systems constantly in our daily lives.
The Myo armband is an example of a real-time embedded device. While running on a battery, it performs computationally intensive gesture recognition algorithms to detect the motion and gestures of the user’s hand. The hardware design must be efficient enough to use the battery for a good length of time and fast enough to meet the real-time requirement of gesture recognition algorithms.
In order to provide the desired user experience, we’ve had to overcome a number of tricky design challenges. Real-time gesture recognition, limited power consumption, and computationally intensive machine learning algorithms are just some of the challenges that we’ve had to address.
To overcome these challenges, we’ve designed the Myo armband efficiently from both a hardware and software perspective. On the embedded software side, the implementation is designed to put the least possible computation load on the main processing unit, reducing the power consumption as a result. The implementation is paralleled among different input/output (I/O) and computation modules to achieve real-time responses for gesture recognition algorithms. We also make use of techniques such as direct-memory-access (DMA), which reduces the load on the CPU by directly handling the I/O module’s access to main memory, thereby reducing power consumption.
On the hardware side, the design takes advantage of the latest power-efficient components running with very low current draw. Different modes of operation for the Myo device result in automatically shutting-off some sections of the electronics to further decrease power consumption. Strategic selection of passive components’ values (including resistors and capacitors) are also used to minimize power consumption. All of this is done while balancing many additional competing factors such as efficiency cost, reliability, and noise levels.
In short, embedded systems engineers often need to balance multiple competing parameters to obtain the optimal blend of performance and power consumption. Much care needs to be taken to carefully design the hardware alongside the software, as the two components are integrally coupled together. For this reason, our embedded software teams and our hardware development teams work side-by-side here at Thalmic Labs.