All Kinds of Updates, and Merry Christmas!
It's been a full three months (exactly!) since the last Keyglove Kickstarter update, so I'll get right into the details.
Actually, no. I'll start with the summary, and then get into the details:
- 6-DOF motion tracking is working (video link) with rudimentary gesture detection
- Bluetooth wireless is working (video link) with keyboard and mouse support
- Microcontroller code is much more efficient than before due to extensive use of interrupts
- New more efficient serial communication/configuration protocol is under development
- New detailed Roadmap page is up on the website
- New How to Build page is up on the website
- Possible physical glove prototype manufacturing option found
I still haven't been able to reverse-engineer the inner workings of the very powerful MPU-6050 motion sensor chip I'm using, but I managed (with a lot of help from others) to implement the calculations right inside the Keyglove code that allow for remarkably accurate and reliable orientation and movement detection. This is a major milestone, since what I had before was quite limited and not useful at all for gesture detection. This new code detects the orientation of the glove at any given moment, which allows the rest of the code to know which direction is up even if the glove is upside-down. The only remaining hurdle in this area is to figure out how the on-board digital motion processing (a.k.a. "DMP") feature works on the MPU-6050, which will allow me to offload the complex math onto that chip instead to save a lot of time and battery power. This not easy because the manufacturer does not give out information on how that feature works, treating it as a valuable trade secret. You can watch a video of the motion detection here.
Although I've been working on the code to use the Bluetooth module I have for quite some time, I've only recently managed to integrate it correctly with the existing Keyglove code. (Prior to this, it was only functional in a proof-of-concept sort of way.) There are a few things I still need to do, but I'm waiting for a redesigned circuit board to arrive in the mail before I can develop them. Those should be arriving in the next few days, hopefully before the new year. It was definitely exciting to hold a completely wireless, battery-powered prototype board in my hand for the first time and watch the mouse cursor move as I moved it. You can see that happening here.
When something needs to happen repeatedly and consistently using software, there are two different approaches: one is to use polling, and one is to use interrupts. Polling is where you keep checking for a certain condition over and over until it occurs; this is simple, but less reliable and more constant effort for the processor (which means decreased battery life). Interrupts, on the other hand, use special hardware features to automatically trigger some behavior whenever the hardware itself notices the condition. The software, in the mean time, case just sit and do nothing while it waits for an interrupt signal. I've now fully transitioned all of the existing Keyglove code to use interrupts, with a noticeable increase in performance.
Using interrupts also provides a much better guarantee that certain events, like reading the motion sensor or testing for touch detection, always happen at exactly the same rate. For example, the motion sensors and touch sensors are read 100 times per second (or 100 Hz). The interrupt-based approach lets me to do this simply and reliably, instead of estimating how much delay is necessary between each check.
Faster Serial Communication Protocol
For configuration and special functionality, the Keyglove uses a simple serial communication "language" to send and receive data. The old stuff I was using was pretty inefficient, and obviously we can't have that! You can read the details of this new approach here, but the short version is that I've been able to cut down most data by at least 50%, with some cases being even better. Less data to send means it will take less time to send it, and for battery-powered operation, this is crucial to maximizing battery life (since wireless transmission is a very power-hungry operation).
Roadmap and How to Build Pages
For those of you following the project more closely and/or interested in the technical side of things, I've replaced the old "Project Status" page with a much more thorough Roadmap page, powered by the impressive Interstate app. This shows at a glance (or a bit more than that) how each feature is coming along, what's already done, and what's planned for future development. Check it out if you have a moment!
Also, I've added a new and (hopefully) intuitive set of instructions on the How to Build page. It contains far more info than was there before, and it's full of simple step-by-step instructions and lots of pictures, such as the one attached to this update. The guys at Digital Telepathy hooked me up with a free Pro version of the SlideDeck content slider, and it's an awesome way to present instructions such as these. It doesn't have steps for every current feature of the Keyglove design, but it's enough to get you started, and as more of the design settles into place, I'll add more instructions. There are already a few people that I know of who are starting their own development prototypes! This is very exciting for me to watch.
Physical Glove Manufacturing Option
One of the biggest hurdles for me is still the lack of a manufactured glove to work with for prototyping. I've had a few setbacks on this front over the last few months, not all of which have even yet been resolved, but I'm hopeful that the difficulties may be coming to an end. I've located a company in Europe that manufactures custom gloves of all kinds using very good materials--some even military-grade for the best combination of features--and while I don't know whether a long-term arrangement is wise yet, they can produce small quantities for prototyping. I am currently working on a basic reference design to give them more detail about what I'm looking for, and we'll continue discussing different possibilities after I get that to them.
At the beginning of this year, I was hoping that I'd have some products ready for retail by the end of 2011, and that hasn't happened. (I don't think five more days in the year will allow me to reach that goal either, sadly.) While the delays are disappointing to me, they also are a constant reminder and motivation for me to keep pushing as hard as I can. I want to realize the goals of the Keyglove project as much as much as you all do, and I'm confident that I will be able to present a robust, intuitive, powerful device to the tech world sooner rather than later.
Thanks again for all of your support! I hope you all have an excellent Christmas holiday and happy new year.