While designing the hardware for the Motion Capture System, I tried to find some software to show results in a fancy way. My idea was getting something visually stunning, similar to the hardware itself. I evaluated different options, including Matlab and various 3D Software Packages but I found that integrating my system with them was not really straight forward, it really required some time to learn in deep how those packages work. Finally, I probably took the worst decision, developing the software myself.
The requirements were quite simply, create a software that receives data through the serial port, processes that data and shows that data in a simulation. My idea was showing that acquired data applied to the movement of a 3D arm in real time... quite ambitious taking into consideration that at that moment I had no idea at all about 3D API interfaces and my experience designing software was limited to Delphi programming.
I evaluate various options to integrate a 3D visualization system within Delphi, those options include mainly DelphiX, based on DirecX libraries and OpenGL. Both were quite complicated and require some learning time, a time that I didnít have. Finally, an amazing Delphi component come to my hands, GLScene; it was a visual component based on OpenGL that allows creating 3D environments with nearly no programming, just placing the viewer and tweaking some parameters. It was great and it makes my work really easier, I could really focus my attention on application design better than hard coding.
A part from GLScene, I used other secondary components to manage serial port communications and even the visual style of the application. I also had to create my own library to manage accurately the bit based data provided by the interface.
Data received from the serial port were 16bit words, those words contain a 12bit bending information, 4bit sensor number, and 2bit parity checks for bending data and sensor number. That data was extracted for the word and the parity was checked, in case data was invalid, it was discarded; if data was higher or lower than the established bending limits for each joint, it was discarded too. In other words, just correct and logical data was taken into consideration for the simulation.
Various small testing application were designed and implemented to test GLScene functionality, serial port connection and data checking. Finally the 'big' application was designed and implemented.
MCS Tester Program
MCS Simulator Program