| Literature DB >> 28095857 |
Bence J Borbély1, Péter Szolgay2.
Abstract
BACKGROUND: Model based analysis of human upper limb movements has key importance in understanding the motor control processes of our nervous system. Various simulation software packages have been developed over the years to perform model based analysis. These packages provide computationally intensive-and therefore off-line-solutions to calculate the anatomical joint angles from motion captured raw measurement data (also referred as inverse kinematics). In addition, recent developments in inertial motion sensing technology show that it may replace large, immobile and expensive optical systems with small, mobile and cheaper solutions in cases when a laboratory-free measurement setup is needed. The objective of the presented work is to extend the workflow of measurement and analysis of human arm movements with an algorithm that allows accurate and real-time estimation of anatomical joint angles for a widely used OpenSim upper limb kinematic model when inertial sensors are used for movement recording.Entities:
Keywords: Embedded systems; Inertial measurement unit (IMU); Inverse kinematics (IK); OpenSim; Real-time; Upper limb; Wearable
Mesh:
Year: 2017 PMID: 28095857 PMCID: PMC5240469 DOI: 10.1186/s12938-016-0291-x
Source DB: PubMed Journal: Biomed Eng Online ISSN: 1475-925X Impact factor: 2.819
Fig. 1Representations of the used upper limb model with reference poses and markers. a Screenshot taken from OpenSim while displaying the used full arm model. The reference configuration is shown as a shaded overlay on an actual example configuration determined by the joint angle vector [ = , = , = , = , = , = , = ]. b Representation of the model’s exported structure in MATLAB producing the same actual configuration as in sub-figure (a) using the developed forward kinematics function (functionally equivalent to OpenSim’s version). c Locations of prototype markers that are solely used to the reconstruction of model-defined anatomical joint angles with the proposed algorithm. d Locations of virtual markers that are used for the algorithm validation process by serving as inputs to OpenSim’s inverse kinematics tool directly
Fig. 2Representative screenshot of the tool developed for visual inspection of [defined in (6)]. The interactive MATLAB script allows simulation of different user-defined wrist configurations through separate sliders for and while plotting all relevant information about the optimization problem. The two thinner vertical black lines located at indicate model-defined limits for
Fig. 3Representative simulated movement pattern used for algorithm validation. Simulated movement patterns were generated to validate the proposed kinematic algorithm. 100 separate pseudo-random joint coordinate trajectories were constructed as 5th order Bézier-curves having 5 s duration and 100 Hz sampling frequency. PMx and VMx marker trajectories were calculated with our forward kinematics MATLAB function to generate simulated “measurement” data for the proposed algorithm and OpenSim
RMS errors
| Test environment |
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
| OpenSim | 0.0429 ± 0.0339 | 0.0192 ± 0.0053 | 0.1472 ± 0.0760 | 0.0764 ± 0.0288 | 0.6365 ± 0.1701 | 0.9198 ± 0.2477 | 2.2916 ± 1.1142 |
| MATLAB | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0014 ± 0.0007 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0023 ± 0.0041 | 0.0049 ± 0.0087 |
| PC double | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0014 ± 0.0007 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0025 ± 0.0051 | 0.0053 ± 0.0107 |
| PC float | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.4193 ± 0.8995 | 1.1148 ± 2.4730 |
| PC float mod. | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0045 ± 0.0092 | 0.0097 ± 0.0195 |
| ARM M4 double | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0014 ± 0.0007 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0025 ± 0.0051 | 0.0053 ± 0.0107 |
| ARM M4 soft float | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.4193 ± 0.8995 | 1.1147 ± 2.4730 |
| ARM M4 hard float | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.4095 ± 0.9051 | 1.0944 ± 2.4840 |
| ARM M4 soft float mod. | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0078 ± 0.0128 | 0.0170 ± 0.0276 |
| ARM M4 hard float mod. | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0077 ± 0.0128 | 0.0167 ± 0.0275 |
| ARM M7 double | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0014 ± 0.0007 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0025 ± 0.0051 | 0.0053 ± 0.0107 |
| ARM M7 soft float | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.4193 ± 0.8995 | 1.1147 ± 2.4730 |
| ARM M7 hard float | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.4095 ± 0.9051 | 1.0944 ± 2.4840 |
| ARM M7 soft float mod. | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0078 ± 0.0128 | 0.0170 ± 0.0276 |
| ARM M7 hard float mod. | 0.0028 ± 0.0003 | 0.0006 ± 0.0002 | 0.0016 ± 0.0013 | 0.0005 ± 0.0002 | 0.0008 ± 0.0006 | 0.0077 ± 0.0128 | 0.0167 ± 0.0275 |
Each row represents a separate test environment for the reference (OpenSim) and proposed inverse kinematics algorithm. The columns show mean ± standard deviation joint angle RMS errors across all valid trials (59 for OpenSim, 100 otherwise) for each test environment
Execution times
| Test environment | Execution time per iteration (ms) | Speedup wrt. OpenSim |
|---|---|---|
| OpenSim | 145.0532 ± 10.0669 | 1x |
| MATLAB | 2.3656 ± 0.6689 | 61x |
| PC double | 0.0111 ± 0.0013 | 13011x |
| PC float | 0.0088 ± 0.0008 | 16416x |
| PC float mod. | 0.0097 ± 0.0013 | 14982x |
| ARM M4 double | 4.8777 ± 0.3554 | 30x |
| ARM M4 soft float | 2.7327 ± 0.0928 | 53x |
| ARM M4 hard float | 0.9713 ± 0.0214 | 149x |
| ARM M4 soft float mod. | 2.7394 ± 0.0930 | 53x |
| ARM M4 hard float mod. | 0.9740 ± 0.0216 | 149x |
| ARM M7 double | 2.3124 ± 0.1704 | 63x |
| ARM M7 soft float | 1.4293 ± 0.0504 | 101x |
| ARM M7 hard float | 0.4462 ± 0.0117 | 325x |
| ARM M7 soft float mod. | 1.4296 ± 0.0505 | 101x |
| ARM M7 hard float mod. | 0.4478 ± 0.0115 | 324x |
Each row represents a separate test environment for the reference (OpenSim) and proposed inverse kinematics algorithm. Table values show mean ± standard deviation for a single iteration across all valid trials (59 for OpenSim, 100 otherwise) and the speed increase of each tested setup with respect to OpenSim
Axis and angle notations
| Anatomical joint | Degree of freedom | Identifier | Rotation axis | Rotation angle |
|---|---|---|---|---|
| Shoulder | Elevation plane | elv |
|
|
| Thoracohumeral (elevation) angle | sh_elv |
|
| |
| Axial rotation | sh_rot |
|
| |
| Elbow | Elbow flexion | el_flex |
|
|
| Forearm rotation | pro_sup |
|
| |
| Wrist | Deviation | dev |
|
|
| Flexion | flex |
|
| |
| Proximal-distal r1 | pdr1 |
|
| |
| Proximal-distal r3 | pdr3 |
|
|
The table lists identifiers derived from the model file and notations of rotation axes and angles for all relevant degrees of freedom used for algorithm formulation