Inspiration The original idea behind MyoMotor was the creation of an automated occupational therapist: children with motor skill deficits, stroke victims, etc. would be able to, instead of paying for often expensive and inaccessible rehabilitation, be able to download this program, which would help guide them to proper functioning. While it can be very easily generalized to any motor skill, MyoMotor was built with the goal of improving handwriting.
What it does MyoMotor is able to extract the "essence" of motor skills as they relate to some utility function (e.g., how wrist angle, tendon strain, etc. impact handwriting legibility). It is then able to interactively teach users how to maximize that utility function themselves — for instance, a child, wearing the Myo Armband, practices their writing as MyoMotor analyzes their movements and tells them in real time how to improve their handwriting.
How we built it We attacked the problem on two fronts. Two of us worked on capturing raw data from the Myo Armband and outputting it to a given file via C++, as well as understanding how exactly it worked — what information it captured, what devices were inside, etc. One of us created the mathematical model which underlies MyoMotor's intelligent data processing, and implemented it in Python.
Challenges None of us knew much about machine learning, so the mathematical model was almost entirely derived from scratch (save for a specific linear regression equation) using some knowledge of linear algebra; two _ major _ obstacles arose during this process. First, one generally can't optimize a function obtained by linear regression: df/dx is constant, and will generally, for some specific component x_i, be greater than 0, meaning optimization will tend towards infinity. Second, even if one figures out what variables to adjust in a given direction, one can't tell a child "adjust the angle of your wrist by 14° and your speed in the y direction by 35%," so the program has to figure out how to express its findings in a way that a child could understand. Our solution to the first problem is to stitch the function together from a series of carefully selected _ local _ linear regressions, and our solution to the second problem is the creation of a set of "recognizable transformations," a vector space over them, and a change of basis. In addition, MyoMotor requires experimentally generated motor skill data in order to learn about and be able to teach a given motor skill; to collect such data would not only take days, but would inflate the size of our team to much more than 4 people as we recruited people to take part in the collection of data. So it is currently a blank slate, with dummy variables inserted to demonstrate functionality: metaphorically, we have programmed the game system, but you still can't "play" it without a cartridge.
Accomplishments that we're proud of This was a _ really _ exciting program for us to make: with proper development/"cartridges", it could revolutionize many industries. Automated occupational therapy, obviously, but also: athletics, musicians and artists, _ all sorts _ of artisans and blue-collar workers, etc., etc.: when the "je ne sais quoi" that makes masters of their craft great can be algorithmically extracted and programmatically taught to anybody, humans become that much more free to make beautiful things, pursue their passions, and excel in all things. The math is also really cool.
What we learned None of us came out explicitly knowing more than we came in with, but we grew much more proficient at our crafts: at C++, Python, and mathematics, for the most part.
What's next for MyoMotor Start gathering experimental data to build all sorts of "cartridges" for various motor skill–dependent activities. Market MyoMotor as a product for art schools, basketball teams, welding companies, etc., as a novel training device. Make millions???
Log in or sign up for Devpost to join the conversation.