How does the KINARM EP compute hand position? The documentation simply refers to absolute encoders (Kinarm Lab Hardware Guide pg 17).
The robot contains “encoders” for each joint in the arm. Depending on the Kinarm lab you may have primary or primary and secondary encoders.
- Primary encoders – these are built into the motors that control each joint. These are considered “low resolution” with 20,000 ticks per revolution.
- Secondary encoders – these are glass scales that are mounted to the rotating point for each joint of the arm. These are “high resolution” with 655,000 counts per revolution.
As the robot arm is moved your task will read the encoders constantly to find their current rotation. For Kinarm End-Point robots we know the exact length of the segments of the robot arms. For Kinarm Exoskeleton robots the calibration process tells us the length of the arm segments. Using the angles of the arm segments, the lengths of the arm segments and some trigonometry the position of the hand can be calculated. The specific math that is used can be found in the TDK and in the Kinarm Analysis Scripts. In the analysis scripts, KINARM_add_hand_kinematics.m has a sub function called CalcHandKinematics(), that function uses arm segment lengths and segment angles to build the hand position. The calculation is built to handle Exoskeleton data, which is a bit more complex than End-Point data (the parts of the calculation with “L2ptr” can be ignored for End-Points).
Please let us know if you’d like any more detail on how this all works.