The SO3 input device
The SO3 input device is a computer input device which I designed to facilitate intuitive user control of the perspective on a 3D graphic image on a computer screen. At first glance the device appears to be very similar to an ordinary trackball. However, the mechanisms it uses are thoroughly different, and, more importantly, unlike an ordinary trackball, the SO3 input device allows complete freedom of rotation.
First incarnation (prototype 1)
Prototype 1 is a three degree of freedom device. An ordinary trackball is a two degree of freedom device. As a consequence, an ordinary trackball may be used to position a cursor on a flat display, but it is not well suited to the task of controlling the orientation of a 3D graphic. I currently have a patent on some aspects of the design embodied by prototype 1. (Utility Patent US6670947)
This project included hardware design and construction (in a basement!), system level coding to read raw information from the hardware, construction of diagnostic software to aid in debugging the system software and locating wiring errors, construction of a daemon to interpret the raw information, and the coding of demonstration applications to share with others some basic ideas about what can be done with the processed information that the daemon makes available.
The source code for this project includes a device driver in C (for a particular Linux platform), shell scripts to load and unload the device driver, a makefile to build the driver, a graphical diagnostic utility which I wrote in C using the LessTif widget set, a daemon implemented with a family of C++ files and a project makefile, as well as a few demonstration applications.
Protoype 2 used magnets and Hall Effect sensors.
Prototype 3 was constructed principally by canabalizing and adapting sophisticated off-the-shelf components, rather than by working from scratch with simple chips and wires.
Current design (embodied by prototype 4)
Prototype 4 is a precise, robust intuitive six degree of freedom input device. I received a patent on my contribution to the system embodied by prototype 4 on September 28, 2010. (Utility Patent US7804486)