Wearable Intertace for Teleoperation of Robot Arms - WITRA

[Update 12] Human Arm Direct Kinematics Made Simple
Update #10140  |  01 Dec 2014

Previous Direct Kinematics Method

On update 4 we showed in details how to perform the direct kinematics of the human arm. That method, however is very useful when we have the rotations in each joing calculated in a chain. That is, when, for example, the elbow rotation is calculated relatively to the upper-arm. This would be the case if a potentiometer or encoder were attached to the user's elbow. To illustrate this fact, recall the figure shown previously, that has all the seven rorational axes of the human arm:

arm axes

All seven DoFs of the Human Arm


How We Measure Angles with the IMUs

The final version of WITRA has 3 IMUs positioned on specific positions at the human arm: one at the upper-arm, one at the forearm and one at the hand, as shown below:

imu positioning

Thus, each IMU can measured the orientation its respective section of the arm. Nevertheless, a IMU measures absolute values of Yaw, Pitch and Roll, that is, in terms of a world reference.

Now, let's take the example of the angle measure at the elbow. In this sense, we would not have a direct measure for the elbow rotation, for example, as we would have when using a encoder/potentiometer. This issue is also valid for each DoF at the wrist. Therefore we have two options:

  • Use geometric relations to compare the Yaw, Pitch and Roll values from the two IMUs (at the upper-arm and forearm) to develop an expression for the value of the elbow rotation;
  • Use a simpler geometrical approach that takes as input for the direct kinematics the absolute orientation of each section of the arm.

A Simpler Way of Analisys

The second option is more accurate and less calculation-consuming for our application. Calculating the Direct Kinematics at each iteration of the program (around every 50 miliseconds) is crucial and plays a very important role in translating the user's arm movement to robot's trajectory. Hence, a geometrical approach is used. The basic and only-one concept used here is the representation of any position in terms of spherical coordinates.

Spherical coordinates are represented by a radius of sphere, r, and two angles: theta and phi. The first is measured on the horizontal x-y plane and the second, on a vertical plane formed by the z-axis and r.


Now, consider that the upper-arm is treated of r on a spherical coordinate system that has it's origin at the user's shoulder. Thus we can find its other end cartesian position by doing a quick calculation:


On the same manner, it is possible to now attach a coordinate frame to the users upper-arm end (or elbow, beginning of forearm) and procede with the same calculation method. This new frame is non-inertial. However it has only translation, no rotation. Thus the position of the wrist (end of forearm) in terms of the elbow can be calculated as 

Finally, we attach a frame to the wirst and calculate the position of the center of the hand in terms of the wrist:


Now we have the coordinates of each section of the human arm in terms of a coordinate frame with origin at the base of each respective section. That is, we have the (x,y,z) coordinates of the hand in terms of the position of the wrist; the coordinates of the wrist in terms of the position of the elbow; and the coordinates of the elbow in terms of the position of the shoulder, taken as the reference. Finally, in order to find the position of the hand in terms of the reference at the shoulder, we can simply add the intermediate coordinates calculated above and thus have:


A graphical represetation of what as said above is shown next:


Schematic of the human arm with a frame in each joint


We thus complete the mathematical derivation of the direct kinematics of the human arm. This simple calculation is applied on our code to calculate the position of the human hand.


Make sure you also follow our news and updates on our social channels below. 

youtube       facebook       email