motion capture
Replicating Dynamic Humerus Motion Using an Industrial Robot
Where is the humerus? A tale of two reference frames...
In my first Ph.D. project, I robotically replicated the motion of the humerus as recorded via motion capture while subjects performed activities typical of an active amputee. The first task of this project was to program the position and orientation of the humerus onto the robot. In this post, I describe my method for accomplishing this task. To me, this is an interesting topic because it uses the same concepts as my previous post on establishing the position and orientation of a rigid body; but, the pen and paper are replaced by a robot and motion-tracking system.
The Singular Value Decomposition: the Swiss Army knife of data analysis applied to motion capture
The Singular Value Decomposition (SVD) is an incredibly useful tool with a staggering number of applications in seemingly unrelated fields. In this post I want to write about how the SVD is utilized to determine the orientation of a body segment from the skin markers attached to it. It's an interesting application of the SVD because it has straightforward geometrical interpretation.
Performance of common biomechanics linear algebra operations in Numpy
numpy.einsum
could accommodate all linear algebra operations I am interested in performing, but I was curious to compare its performance against numpy.matmul
for operations that could be performed just by matrix multiplication. Thanks to Numpy's broadcasting algorithm a considerable number of operation can be performed using numpy.matmul
.
Lazy evaluation using Python descriptors (and decorators)
In Container Emulation in Python I showed how easy it is to emulate container behavior in Python in order to enable concise data access. In this post I want to talk about how this can be accomplished lazily.
Container emulation in Python
The Python data model makes it easy to implement classes that allow concise data access. For example, when analyzing skin marker motion capture data, I frequently access data for a particular marker (identified by its name). Below I demonstrate how to access marker data from a trial (say arm raising and lowering) using an instance method, and via container emulation.