Links to Exploration step
Le document en format XML
<record><TEI><teiHeader><fileDesc><titleStmt><title xml:lang="en">Automatic identification of inertial sensor placement on human body segments during walking</title>
<author><name sortKey="Weenk, Dirk" sort="Weenk, Dirk" uniqKey="Weenk D" first="Dirk" last="Weenk">Dirk Weenk</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Van Beijnum, Bert Jan F" sort="Van Beijnum, Bert Jan F" uniqKey="Van Beijnum B" first="Bert-Jan F" last="Van Beijnum">Bert-Jan F. Van Beijnum</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Baten, Chris Tm" sort="Baten, Chris Tm" uniqKey="Baten C" first="Chris Tm" last="Baten">Chris Tm Baten</name>
<affiliation><nlm:aff id="I3">Roessingh Research and Development, , Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Hermens, Hermie J" sort="Hermens, Hermie J" uniqKey="Hermens H" first="Hermie J" last="Hermens">Hermie J. Hermens</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I3">Roessingh Research and Development, , Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Veltink, Peter H" sort="Veltink, Peter H" uniqKey="Veltink P" first="Peter H" last="Veltink">Peter H. Veltink</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
</titleStmt>
<publicationStmt><idno type="wicri:source">PMC</idno>
<idno type="pmid">23517757</idno>
<idno type="pmc">3651313</idno>
<idno type="url">http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3651313</idno>
<idno type="RBID">PMC:3651313</idno>
<idno type="doi">10.1186/1743-0003-10-31</idno>
<date when="2013">2013</date>
<idno type="wicri:Area/Pmc/Corpus">000353</idno>
<idno type="wicri:explorRef" wicri:stream="Pmc" wicri:step="Corpus" wicri:corpus="PMC">000353</idno>
</publicationStmt>
<sourceDesc><biblStruct><analytic><title xml:lang="en" level="a" type="main">Automatic identification of inertial sensor placement on human body segments during walking</title>
<author><name sortKey="Weenk, Dirk" sort="Weenk, Dirk" uniqKey="Weenk D" first="Dirk" last="Weenk">Dirk Weenk</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Van Beijnum, Bert Jan F" sort="Van Beijnum, Bert Jan F" uniqKey="Van Beijnum B" first="Bert-Jan F" last="Van Beijnum">Bert-Jan F. Van Beijnum</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Baten, Chris Tm" sort="Baten, Chris Tm" uniqKey="Baten C" first="Chris Tm" last="Baten">Chris Tm Baten</name>
<affiliation><nlm:aff id="I3">Roessingh Research and Development, , Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Hermens, Hermie J" sort="Hermens, Hermie J" uniqKey="Hermens H" first="Hermie J" last="Hermens">Hermie J. Hermens</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I2">CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="I3">Roessingh Research and Development, , Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Veltink, Peter H" sort="Veltink, Peter H" uniqKey="Veltink P" first="Peter H" last="Veltink">Peter H. Veltink</name>
<affiliation><nlm:aff id="I1">MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</nlm:aff>
</affiliation>
</author>
</analytic>
<series><title level="j">Journal of NeuroEngineering and Rehabilitation</title>
<idno type="eISSN">1743-0003</idno>
<imprint><date when="2013">2013</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
</fileDesc>
<profileDesc><textClass></textClass>
</profileDesc>
</teiHeader>
<front><div type="abstract" xml:lang="en"><sec><title>Background</title>
<p>Current inertial motion capture systems are rarely used in biomedical applications. The attachment and connection of the sensors with cables is often a complex and time consuming task. Moreover, it is prone to errors, because each sensor has to be attached to a predefined body segment. By using wireless inertial sensors and automatic identification of their positions on the human body, the complexity of the set-up can be reduced and incorrect attachments are avoided.</p>
<p>We present a novel method for the automatic identification of inertial sensors on human body segments during walking. This method allows the user to place (wireless) inertial sensors on arbitrary body segments. Next, the user walks for just a few seconds and the segment to which each sensor is attached is identified automatically.</p>
</sec>
<sec><title>Methods</title>
<p>Walking data was recorded from ten healthy subjects using an Xsens MVN Biomech system with full-body configuration (17 inertial sensors). Subjects were asked to walk for about 6 seconds at normal walking speed (about 5 km/h). After rotating the sensor data to a global coordinate frame with <italic>x</italic>
-axis in walking direction, <italic>y</italic>
-axis pointing left and <italic>z</italic>
-axis vertical, RMS, mean, and correlation coefficient features were extracted from <italic>x</italic>
-, <italic>y</italic>
- and <italic>z</italic>
-components and magnitudes of the accelerations, angular velocities and angular accelerations. As a classifier, a decision tree based on the C4.5 algorithm was developed using Weka (Waikato Environment for Knowledge Analysis).</p>
</sec>
<sec><title>Results and conclusions</title>
<p>After testing the algorithm with 10-fold cross-validation using 31 walking trials (involving 527 sensors), 514 sensors were correctly classified (97.5%). When a decision tree for a lower body plus trunk configuration (8 inertial sensors) was trained and tested using 10-fold cross-validation, 100% of the sensors were correctly identified. This decision tree was also tested on walking trials of 7 patients (17 walking trials) after anterior cruciate ligament reconstruction, which also resulted in 100% correct identification, thus illustrating the robustness of the method.</p>
</sec>
</div>
</front>
<back><div1 type="bibliography"><listBibl><biblStruct><analytic><author><name sortKey="Roetenberg, D" uniqKey="Roetenberg D">D Roetenberg</name>
</author>
<author><name sortKey="Slycke, Pj" uniqKey="Slycke P">PJ Slycke</name>
</author>
<author><name sortKey="Veltink, Ph" uniqKey="Veltink P">PH Veltink</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct><analytic><author><name sortKey="Cloete, T" uniqKey="Cloete T">T Cloete</name>
</author>
<author><name sortKey="Scheffer, C" uniqKey="Scheffer C">C Scheffer</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Zhou, H" uniqKey="Zhou H">H Zhou</name>
</author>
<author><name sortKey="Stone, T" uniqKey="Stone T">T Stone</name>
</author>
<author><name sortKey="Hu, H" uniqKey="Hu H">H Hu</name>
</author>
<author><name sortKey="Harris, N" uniqKey="Harris N">N Harris</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Lim, Ck" uniqKey="Lim C">CK Lim</name>
</author>
<author><name sortKey="Luo, Z" uniqKey="Luo Z">Z Luo</name>
</author>
<author><name sortKey="Chen, Im" uniqKey="Chen I">IM Chen</name>
</author>
<author><name sortKey="Yeo, Sh" uniqKey="Yeo S">SH Yeo</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Kunze, K" uniqKey="Kunze K">K Kunze</name>
</author>
<author><name sortKey="Lukowicz, P" uniqKey="Lukowicz P">P Lukowicz</name>
</author>
<author><name sortKey="Junker, H" uniqKey="Junker H">H Junker</name>
</author>
<author><name sortKey="Troster, G" uniqKey="Troster G">G Tröster</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Kunze, K" uniqKey="Kunze K">K Kunze</name>
</author>
<author><name sortKey="Lukowicz, P" uniqKey="Lukowicz P">P Lukowicz</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Amini, N" uniqKey="Amini N">N Amini</name>
</author>
<author><name sortKey="Sarrafzadeh, M" uniqKey="Sarrafzadeh M">M Sarrafzadeh</name>
</author>
<author><name sortKey="Vahdatpour, A" uniqKey="Vahdatpour A">A Vahdatpour</name>
</author>
<author><name sortKey="Xu, W" uniqKey="Xu W">W Xu</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct><analytic><author><name sortKey="Baten, Ctm" uniqKey="Baten C">CTM Baten</name>
</author>
<author><name sortKey="Schoot Uiterkamp, Rhm" uniqKey="Schoot Uiterkamp R">RHM Schoot Uiterkamp</name>
</author>
<author><name sortKey="Wassink, Rgv" uniqKey="Wassink R">RGV Wassink</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Schepers, Hm" uniqKey="Schepers H">HM Schepers</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct><analytic><author><name sortKey="Hall, M" uniqKey="Hall M">M Hall</name>
</author>
<author><name sortKey="Frank, E" uniqKey="Frank E">E Frank</name>
</author>
<author><name sortKey="Holmes, G" uniqKey="Holmes G">G Holmes</name>
</author>
<author><name sortKey="Pfahringer, B" uniqKey="Pfahringer B">B Pfahringer</name>
</author>
<author><name sortKey="Reutemann, P" uniqKey="Reutemann P">P Reutemann</name>
</author>
<author><name sortKey="Witten, Ih" uniqKey="Witten I">IH Witten</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Avci, A" uniqKey="Avci A">A Avci</name>
</author>
<author><name sortKey="Bosch, S" uniqKey="Bosch S">S Bosch</name>
</author>
<author><name sortKey="Marin Perianu, M" uniqKey="Marin Perianu M">M Marin-Perianu</name>
</author>
<author><name sortKey="Marin Perianu, Rs" uniqKey="Marin Perianu R">RS Marin-Perianu</name>
</author>
<author><name sortKey="Havinga, Pjm" uniqKey="Havinga P">PJM Havinga</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Witten, Ih" uniqKey="Witten I">IH Witten</name>
</author>
<author><name sortKey="Frank, E" uniqKey="Frank E">E Frank</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Dubitzky, W" uniqKey="Dubitzky W">W Dubitzky</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Wassink, Rgv" uniqKey="Wassink R">RGV Wassink</name>
</author>
<author><name sortKey="Baten, C" uniqKey="Baten C">C Baten</name>
</author>
<author><name sortKey="Veltink, Ph" uniqKey="Veltink P">PH Veltink</name>
</author>
<author><name sortKey="Veldhuis, Rnj" uniqKey="Veldhuis R">RNJ Veldhuis</name>
</author>
<author><name sortKey="Smeding, Jh" uniqKey="Smeding J">JH Smeding</name>
</author>
</analytic>
</biblStruct>
</listBibl>
</div1>
</back>
</TEI>
<pmc article-type="research-article" xml:lang="en"><pmc-dir>properties open_access</pmc-dir>
<front><journal-meta><journal-id journal-id-type="nlm-ta">J Neuroeng Rehabil</journal-id>
<journal-id journal-id-type="iso-abbrev">J Neuroeng Rehabil</journal-id>
<journal-title-group><journal-title>Journal of NeuroEngineering and Rehabilitation</journal-title>
</journal-title-group>
<issn pub-type="epub">1743-0003</issn>
<publisher><publisher-name>BioMed Central</publisher-name>
</publisher>
</journal-meta>
<article-meta><article-id pub-id-type="pmid">23517757</article-id>
<article-id pub-id-type="pmc">3651313</article-id>
<article-id pub-id-type="publisher-id">1743-0003-10-31</article-id>
<article-id pub-id-type="doi">10.1186/1743-0003-10-31</article-id>
<article-categories><subj-group subj-group-type="heading"><subject>Research</subject>
</subj-group>
</article-categories>
<title-group><article-title>Automatic identification of inertial sensor placement on human body segments during walking</article-title>
</title-group>
<contrib-group><contrib contrib-type="author" corresp="yes" id="A1"><name><surname>Weenk</surname>
<given-names>Dirk</given-names>
</name>
<xref ref-type="aff" rid="I1">1</xref>
<xref ref-type="aff" rid="I2">2</xref>
<email>d.weenk@utwente.nl</email>
</contrib>
<contrib contrib-type="author" id="A2"><name><surname>van Beijnum</surname>
<given-names>Bert-Jan F</given-names>
</name>
<xref ref-type="aff" rid="I1">1</xref>
<xref ref-type="aff" rid="I2">2</xref>
<email>b.j.f.vanbeijnum@utwente.nl</email>
</contrib>
<contrib contrib-type="author" id="A3"><name><surname>Baten</surname>
<given-names>Chris TM</given-names>
</name>
<xref ref-type="aff" rid="I3">3</xref>
<email>c.baten@rrd.nl</email>
</contrib>
<contrib contrib-type="author" id="A4"><name><surname>Hermens</surname>
<given-names>Hermie J</given-names>
</name>
<xref ref-type="aff" rid="I1">1</xref>
<xref ref-type="aff" rid="I2">2</xref>
<xref ref-type="aff" rid="I3">3</xref>
<email>h.j.hermens@utwente.nl</email>
</contrib>
<contrib contrib-type="author" id="A5"><name><surname>Veltink</surname>
<given-names>Peter H</given-names>
</name>
<xref ref-type="aff" rid="I1">1</xref>
<email>p.h.veltink@utwente.nl</email>
</contrib>
</contrib-group>
<aff id="I1"><label>1</label>
MIRA Institute for Biomedical Technology and Technical Medicine, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</aff>
<aff id="I2"><label>2</label>
CTIT Centre for Telematics and Information Technology, Biomedical Signals and Systems, University of Twente, Enschede, The Netherlands</aff>
<aff id="I3"><label>3</label>
Roessingh Research and Development, , Enschede, The Netherlands</aff>
<pub-date pub-type="collection"><year>2013</year>
</pub-date>
<pub-date pub-type="epub"><day>21</day>
<month>3</month>
<year>2013</year>
</pub-date>
<volume>10</volume>
<fpage>31</fpage>
<lpage>31</lpage>
<history><date date-type="received"><day>13</day>
<month>2</month>
<year>2012</year>
</date>
<date date-type="accepted"><day>5</day>
<month>2</month>
<year>2013</year>
</date>
</history>
<permissions><copyright-statement>Copyright © 2013 Weenk et al.; licensee BioMed Central Ltd.</copyright-statement>
<copyright-year>2013</copyright-year>
<copyright-holder>Weenk et al.; licensee BioMed Central Ltd.</copyright-holder>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/2.0"><license-p>This is an Open Access article distributed under the terms of the Creative Commons Attribution License (<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/2.0">http://creativecommons.org/licenses/by/2.0</ext-link>
), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri xlink:href="http://www.jneuroengrehab.com/content/10/1/31"></self-uri>
<abstract><sec><title>Background</title>
<p>Current inertial motion capture systems are rarely used in biomedical applications. The attachment and connection of the sensors with cables is often a complex and time consuming task. Moreover, it is prone to errors, because each sensor has to be attached to a predefined body segment. By using wireless inertial sensors and automatic identification of their positions on the human body, the complexity of the set-up can be reduced and incorrect attachments are avoided.</p>
<p>We present a novel method for the automatic identification of inertial sensors on human body segments during walking. This method allows the user to place (wireless) inertial sensors on arbitrary body segments. Next, the user walks for just a few seconds and the segment to which each sensor is attached is identified automatically.</p>
</sec>
<sec><title>Methods</title>
<p>Walking data was recorded from ten healthy subjects using an Xsens MVN Biomech system with full-body configuration (17 inertial sensors). Subjects were asked to walk for about 6 seconds at normal walking speed (about 5 km/h). After rotating the sensor data to a global coordinate frame with <italic>x</italic>
-axis in walking direction, <italic>y</italic>
-axis pointing left and <italic>z</italic>
-axis vertical, RMS, mean, and correlation coefficient features were extracted from <italic>x</italic>
-, <italic>y</italic>
- and <italic>z</italic>
-components and magnitudes of the accelerations, angular velocities and angular accelerations. As a classifier, a decision tree based on the C4.5 algorithm was developed using Weka (Waikato Environment for Knowledge Analysis).</p>
</sec>
<sec><title>Results and conclusions</title>
<p>After testing the algorithm with 10-fold cross-validation using 31 walking trials (involving 527 sensors), 514 sensors were correctly classified (97.5%). When a decision tree for a lower body plus trunk configuration (8 inertial sensors) was trained and tested using 10-fold cross-validation, 100% of the sensors were correctly identified. This decision tree was also tested on walking trials of 7 patients (17 walking trials) after anterior cruciate ligament reconstruction, which also resulted in 100% correct identification, thus illustrating the robustness of the method.</p>
</sec>
</abstract>
<kwd-group><kwd>Inertial sensors</kwd>
<kwd>Feature extraction</kwd>
<kwd>Classification</kwd>
<kwd>Decision trees</kwd>
<kwd>Weka</kwd>
</kwd-group>
</article-meta>
</front>
<body><sec><title>Background</title>
<p>Conventional human motion capture systems make use of cameras and are therefore bounded to a restricted area. This is one of the reasons why over the last few years, inertial sensors (accelerometers and gyroscopes) in combination with magnetic sensors were demonstrated to be a suitable ambulatory alternative. Although accurate 6 degrees of freedom information is available [<xref ref-type="bibr" rid="B1">1</xref>
], these inertial sensor systems are rarely used in biomedical applications, for example rehabilitation and sports training. This unpopularity could be related to the set-up of the systems. The attachment and connection of the sensors with cables is often a complex and time consuming task. Moreover, it is prone to errors, because each sensor has to be attached to a predefined body segment. Despite the fact that the set-up time for inertial systems is significantly lower (≤ 15 minutes for an Xsens MVN Biomech system [<xref ref-type="bibr" rid="B2">2</xref>
]) than for optical systems [<xref ref-type="bibr" rid="B3">3</xref>
], it is still a significant amount of time.</p>
<p>However, with decreasing sensor sizes and upcoming wireless inertial sensor technology, the inertial sensors can be attached to the body more easily and quickly, for example using Velcro <sup><italic>Ⓡ</italic>
</sup>
straps [<xref ref-type="bibr" rid="B4">4</xref>
] or even plasters [<xref ref-type="bibr" rid="B5">5</xref>
]. If it were not necessary to attach each sensor to a predefined segment and if the wired inertial sensors were to be replaced by wireless sensors, the system could be easier to use and both the set-up time and the number of attachment errors could be reduced.</p>
<p>A number of studies on localization of body worn sensors have been conducted previously. Kunze <italic>et al.</italic>
[<xref ref-type="bibr" rid="B6">6</xref>
,<xref ref-type="bibr" rid="B7">7</xref>
] used accelerometer data from 5 inertial sensors combined with various classification algorithms for on-body device localization, resulting in an accuracy of up to 100% for walking and up to 82% for arbitrary activities (92% when using 4 sensors). Amini <italic>et al.</italic>
[<xref ref-type="bibr" rid="B8">8</xref>
] used accelerometer data of 10 sensors combined with an SVM (support vector machine) classifier to determine the on-body sensor locations. An accuracy of 89% was achieved. Despite their promising results, several important questions remain. For example, the robustness of these algorithms was not tested on patients with movement disorders. Additionally, a limited number of sensors was used and no method for identifying left and right limbs was presented.</p>
<p>In order for ambulatory movement analysis systems to become generally accepted in biomedical applications, it is essential that the systems become easier to use. By making the systems plug and play, they can be used without having prior knowledge about technical details of the system and they become robust against incorrect sensor placement. This way clinicians or even the patients themselves can attach the sensors, even if they are at home.</p>
<p>In this paper, a method for automatic identification of body segments to which (wireless) inertial sensors are attached is presented. This method allows the user to place inertial sensors on arbitrary segments of the human body, in a full body- or a lower body plus trunk configuration (17 or 8 inertial sensors respectively). Next, the user walks for just a few seconds and the body segment to which each sensor is attached is identified automatically, based on acceleration and angular velocity data. Walking data was used, because it is often used for motion analysis during rehabilitation. In addition to healthy subjects, the method is tested on a group of 7 patients after anterior cruciate ligament (ACL) reconstruction, using a lower body plus trunk configuration.</p>
</sec>
<sec sec-type="methods"><title>Methods</title>
<sec><title>Measurements</title>
<p>From 11 healthy subjects (2 female and 9 male students, all between 20-30 years old), 35 walking trials were recorded using an Xsens MVN Biomech system [<xref ref-type="bibr" rid="B2">2</xref>
] with full body configuration, that is, 17 inertial sensors were placed on 17 different body segments: pelvis, sternum, head, right shoulder, right upper arm, right forearm, right hand, left shoulder, left upper arm, left forearm, left hand, right upper leg, right lower leg, right foot, left upper leg, left lower leg and left foot [<xref ref-type="bibr" rid="B9">9</xref>
]. The subjects, wearing their own daily shoes (no high heels), were asked to stand still for a few seconds and then to start walking at normal speed (about 5 km/h). Because the data was obtained from different previous studies, the number of trials per subject varied from one to four trials. Also the length of the trials varied. From each trial the first 3 walking cycles (about 6 seconds) were used, which was the minimum available number for several trials. Walking cycles were obtained using peak detection of the summation of magnitudes of accelerations and angular velocities of all sensors (<inline-formula><mml:math id="M1" name="1743-0003-10-31-i1" overflow="scroll"><mml:munderover><mml:mrow><mml:mo>∑</mml:mo>
</mml:mrow>
<mml:mrow><mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow><mml:mi>n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mo>(</mml:mo>
<mml:mo>∥</mml:mo>
<mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>∥</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo>∥</mml:mo>
<mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>∥</mml:mo>
<mml:mo>)</mml:mo>
</mml:math>
</inline-formula>
, where <italic>n</italic>
is the number of sensors). One subject (4 trials) showed little to no arm movement during walking and was excluded from the analysis, hence 31 walking trials were used for developing our identification algorithm.</p>
<p>Inertial sensor data – that is, 3D measured acceleration (<bold><italic>s</italic>
</bold>
<sup><italic>s</italic>
</sup>
) and 3D angular velocity (<bold><italic>ω</italic>
</bold>
<sup><italic>s</italic>
</sup>
), both expressed in sensor coordinate frame – recorded with a sampling frequency of 120 Hz was saved in MVN file format, converted to XML and loaded into MATLAB <sup><italic>Ⓡ</italic>
</sup>
for further analysis.</p>
<p>Besides the full-body configuration a subset of this configuration was analyzed. This lower body plus trunk configuration contained 8 inertial sensors placed on 8 different body segments: pelvis, sternum, upper legs, lower legs and feet. In addition to lower body information, the sternum sensor provides important information about the movement of the trunk. This can be useful in applications where balance needs to be assessed.</p>
<p>In order to test the robustness of the algorithm, 17 walking trials of 7 patients (1 female, 6 male, age 28 ±8.35) after anterior cruciate ligament (ACL) reconstruction were used. These trials were recorded using an Xbus Kit (Xsens Technologies B.V. [<xref ref-type="bibr" rid="B2">2</xref>
]) during a study of Baten <italic>et al.</italic>
[<xref ref-type="bibr" rid="B10">10</xref>
]. In their study 7 patients were measured four times during the rehabilitation process, with an interval of one month. To test the robustness of our identification algorithm, the first measurements – approximately 5 weeks after the ACL reconstruction, where walking asymmetry was largest – were used. No medical ethical approval was required under Dutch regulations, given the materials and methods used. The research was in full compliance with the “Declaration of Helsinki” and written informed consent was obtained from all patients for publication of the results.</p>
</sec>
<sec><title>Preprocessing</title>
<p>Identification of the inertial sensors was split into three steps: preprocessing, feature extraction and classification (Figure <xref ref-type="fig" rid="F1">1</xref>
). To be able to compare the sensors between different body segments and different subjects, the accelerations and angular velocities were pre-processed; that is, the gravitational accelerations were subtracted from the accelerometer outputs and the 3D sensor signals were all transformed to the global coordinate frame <italic>ψ</italic>
<sub><italic>g</italic>
</sub>
with the <italic>z</italic>
-axis pointing up, the <italic>x</italic>
-axis in the walking direction and the <italic>y</italic>
-axis pointing left.</p>
<fig id="F1" position="float"><label>Figure 1</label>
<caption><p><bold>The three steps used for identifying the inertial sensors.</bold>
Inputs are the measured 3D acceleration (<bold><italic>s</italic>
</bold>
<sup><italic>s</italic>
</sup>
) and angular velocity (<bold><italic>ω</italic>
</bold>
<sup><italic>s</italic>
</sup>
), both expressed in sensor coordinate frame. Outputs of the identification process are the classes, in this case the body segments to which the inertial sensors are attached.</p>
</caption>
<graphic xlink:href="1743-0003-10-31-1"></graphic>
</fig>
<p>To transform the 3D accelerations and angular velocities from sensor coordinate frame <italic>ψ</italic>
<sub><italic>s</italic>
</sub>
to global coordinate frame <italic>ψ</italic>
<sub><italic>g</italic>
</sub>
, the orientation of the inertial sensor – with respect to the global coordinate frame – had to be estimated. For this purpose, first the inclination of the sensors was estimated when the subjects were standing still, by using the accelerometers that measure the gravitational acceleration under this condition. When the subjects were walking, the change of orientation of the sensors was estimated using the gyroscopes by integrating the angular velocities. The following differential equation was solved to integrate the angular velocities to angles [<xref ref-type="bibr" rid="B11">11</xref>
]: </p>
<p><disp-formula id="bmcM1"><label>(1)</label>
<mml:math id="M2" name="1743-0003-10-31-i2" overflow="scroll"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mover accent="true"><mml:mrow><mml:mi>R</mml:mi>
</mml:mrow>
<mml:mo>˙</mml:mo>
</mml:mover>
</mml:mstyle>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mover accent="true"><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mo>~</mml:mo>
</mml:mover>
</mml:mstyle>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</disp-formula>
</p>
<p>where the 3D rotation matrix <inline-formula><mml:math id="M3" name="1743-0003-10-31-i3" overflow="scroll"><mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>
represents the change of coordinates from <italic>ψ</italic>
<sub><italic>s</italic>
</sub>
to a frame <inline-formula><mml:math id="M4" name="1743-0003-10-31-i4" overflow="scroll"><mml:msub><mml:mrow><mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
with all vertical axes aligned, but with the heading in the original (unchanged) direction. <inline-formula><mml:math id="M5" name="1743-0003-10-31-i5" overflow="scroll"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mover accent="true"><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mo>~</mml:mo>
</mml:mover>
</mml:mstyle>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
is a skew-symmetric matrix consisting of the components of the angular velocity vector expressed in <italic>ψ</italic>
<sub><italic>s</italic>
</sub>
: </p>
<p><disp-formula id="bmcM2"><label>(2)</label>
<mml:math id="M6" name="1743-0003-10-31-i6" overflow="scroll"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mover accent="true"><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mo>~</mml:mo>
</mml:mover>
</mml:mstyle>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mfenced open="(" close=")"><mml:mrow><mml:mtable columnalign="center"><mml:mtr><mml:mtd><mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd><mml:mo>−</mml:mo>
<mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd><mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd><mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd><mml:mo>−</mml:mo>
<mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr><mml:mtd><mml:mo>−</mml:mo>
<mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd><mml:msub><mml:mrow><mml:mi>ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd><mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
</p>
<p>where the indices ()<sup><italic>s</italic>
</sup>
are omitted for readability (see also [<xref ref-type="bibr" rid="B11">11</xref>
]). For the 3D sensor acceleration in frame <inline-formula><mml:math id="M7" name="1743-0003-10-31-i7" overflow="scroll"><mml:msub><mml:mrow><mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
, denoted <inline-formula><mml:math id="M8" name="1743-0003-10-31-i8" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:math>
</inline-formula>
, the following equation holds: </p>
<p><disp-formula id="bmcM3"><label>(3)</label>
<mml:math id="M9" name="1743-0003-10-31-i9" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">g</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</disp-formula>
</p>
<p>where <bold><italic>s</italic>
</bold>
<sup><italic>s</italic>
</sup>
(<italic>t</italic>
) is the measured acceleration and <inline-formula><mml:math id="M10" name="1743-0003-10-31-i10" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">g</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
is the gravitational acceleration expressed in <inline-formula><mml:math id="M11" name="1743-0003-10-31-i11" overflow="scroll"><mml:msub><mml:mrow><mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
(assumed to be constant and known), which was subsequently subtracted from the <italic>z</italic>
-component of the 3D sensor acceleration. The rotation matrix <inline-formula><mml:math id="M12" name="1743-0003-10-31-i12" overflow="scroll"><mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:math>
</inline-formula>
was also used to express <bold><italic>ω</italic>
</bold>
<sup><italic>s</italic>
</sup>
in <inline-formula><mml:math id="M13" name="1743-0003-10-31-i13" overflow="scroll"><mml:msub><mml:mrow><mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
: </p>
<p><disp-formula id="bmcM4"><label>(4)</label>
<mml:math id="M14" name="1743-0003-10-31-i14" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msubsup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>s</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>After aligning the vertical axes, the heading was aligned by aligning the positive <inline-formula><mml:math id="M15" name="1743-0003-10-31-i15" overflow="scroll"><mml:msup><mml:mrow><mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
-axis with the walking direction, which was obtained by integrating the acceleration in frame <inline-formula><mml:math id="M16" name="1743-0003-10-31-i16" overflow="scroll"><mml:msub><mml:mrow><mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
– yielding the velocity <inline-formula><mml:math id="M17" name="1743-0003-10-31-i17" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
– using trapezoidal numerical integration. From <inline-formula><mml:math id="M18" name="1743-0003-10-31-i18" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
, the <italic>x</italic>
and <italic>y</italic>
components were used to obtain the angle (in the horizontal plane) with the positive <italic>x</italic>
-axis (<inline-formula><mml:math id="M19" name="1743-0003-10-31-i19" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
). Drawback of this method is the drift caused by integrating noise and sensor bias. The effect of this integration drift on the estimation of the walking direction was reduced by using the mean of the velocity of the first full walking cycle to estimate the walking direction, assuming that this gave a good estimate of the walking direction of the complete walking trial.</p>
<p>The angle <italic>θ</italic>
(in the horizontal plane) between <inline-formula><mml:math id="M20" name="1743-0003-10-31-i20" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
and the velocity vector <inline-formula><mml:math id="M21" name="1743-0003-10-31-i21" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
was obtained using: </p>
<p><disp-formula id="bmcM5"><label>(5)</label>
<mml:math id="M22" name="1743-0003-10-31-i22" overflow="scroll"><mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arccos</mml:mo>
<mml:mfenced open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>·</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow><mml:mo>∥</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>∥</mml:mo>
<mml:mo>∥</mml:mo>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">v</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
<mml:mo>∥</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
</p>
<p>This angle was then used to obtain the rotation matrix: </p>
<p><disp-formula id="bmcM6"><label>(6)</label>
<mml:math id="M23" name="1743-0003-10-31-i23" overflow="scroll"><mml:msubsup><mml:mrow><mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>(</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfenced open="(" close=")"><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mo>cos</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mo>−</mml:mo>
<mml:mo>sin</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr><mml:mtd><mml:mo>sin</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mo>cos</mml:mo>
<mml:mi>θ</mml:mi>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr><mml:mtd><mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd><mml:mspace width="2.77695pt"></mml:mspace>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mspace width="0.3em"></mml:mspace>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
</p>
<p>which was used (as in (4)) to rotate the accelerations (<inline-formula><mml:math id="M24" name="1743-0003-10-31-i24" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
) and angular velocities (<inline-formula><mml:math id="M25" name="1743-0003-10-31-i25" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:msup><mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow><mml:mo>′</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>
) of all the sensors to global coordinate frame <italic>ψ</italic>
<sub><italic>g</italic>
</sub>
, with <italic>x</italic>
-axis in walking direction, <italic>y</italic>
-axis pointing left and <italic>z</italic>
-axis vertical.</p>
<p>To obtain additional information about (rotational) accelerations, which are invariant to the position on the segment, the 3D angular acceleration <bold><italic>α</italic>
</bold>
<sup><italic>g</italic>
</sup>
was calculated: </p>
<p><disp-formula id="bmcM7"><label>(7)</label>
<mml:math id="M26" name="1743-0003-10-31-i26" overflow="scroll"><mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">α</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>=</mml:mo>
<mml:mfrac><mml:mrow><mml:mi>d</mml:mi>
<mml:msup><mml:mrow><mml:mi mathvariant="bold-italic">ω</mml:mi>
</mml:mrow>
<mml:mrow><mml:mi>g</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow><mml:mtext mathvariant="italic">dt</mml:mtext>
</mml:mrow>
</mml:mfrac>
</mml:math>
</disp-formula>
</p>
<p>In the remainder of this paper <bold><italic>a</italic>
</bold>
, <bold><italic>ω</italic>
</bold>
and <bold><italic>α</italic>
</bold>
are always expressed in frame <italic>ψ</italic>
<sub><italic>g</italic>
</sub>
, the index ()<sup><italic>g</italic>
</sup>
is omitted for readability.</p>
</sec>
<sec><title>Feature extraction</title>
<p>Features were extracted from magnitudes as well as from the <italic>x</italic>
-, <italic>y</italic>
-, and <italic>z</italic>
-components of the 3D accelerations (<bold><italic>a</italic>
</bold>
), angular velocities (<bold><italic>ω</italic>
</bold>
) and angular accelerations (<bold><italic>α</italic>
</bold>
). The features that were extracted are RMS, variance, correlation coefficients (cc’s) between (the same components of) sensors on different segments, and inter-axis correlation coefficients (of single sensors) and are listed in Table <xref ref-type="table" rid="T1">1</xref>
.</p>
<table-wrap position="float" id="T1"><label>Table 1</label>
<caption><p>Features used for identifying the inertial sensors</p>
</caption>
<table frame="hsides" rules="groups" border="1"><colgroup><col align="left"></col>
<col align="center"></col>
<col align="center"></col>
<col align="center"></col>
</colgroup>
<thead valign="top"><tr><th align="left"> </th>
<th align="left"> </th>
<th align="center"><bold>Feature</bold>
</th>
<th align="center"> </th>
</tr>
</thead>
<tbody valign="top"><tr><td align="left" valign="bottom"><bold>Description</bold>
<hr></hr>
</td>
<td align="center" valign="bottom"><bold><italic>a</italic>
</bold>
<hr></hr>
</td>
<td align="center" valign="bottom"><bold><italic>ω</italic>
</bold>
<hr></hr>
</td>
<td align="center" valign="bottom"><bold><italic>α</italic>
</bold>
<hr></hr>
</td>
</tr>
<tr><td colspan="4" align="left" valign="bottom"> RMS of the<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-magnitude<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ ||<bold><italic>a</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ ||<bold><italic>ω</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ ||<bold><italic>α</italic>
</bold>
||}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>y</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>a</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>ω</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">RMS{ <italic>α</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td colspan="4" align="left" valign="bottom"> Variance of the<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-magnitude<hr></hr>
</td>
<td align="center" valign="bottom">Var{ ||<bold><italic>a</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ ||<bold><italic>ω</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ ||<bold><italic>α</italic>
</bold>
||}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>y</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>a</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>ω</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>α</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>z</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>a</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>ω</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">Var{ <italic>α</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td colspan="4" align="left" valign="bottom"> Sum of cc’s of a sensor with all other sensors of the<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-magnitude<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ ||<bold><italic>a</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ ||<bold><italic>ω</italic>
</bold>
||}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ ||<bold><italic>α</italic>
</bold>
||}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>y</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>a</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>ω</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>α</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>z</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>a</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>ω</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom"><italic>Σ</italic>
cc{ <italic>α</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td colspan="4" align="left" valign="bottom"> The maximum value of the cc’s of a sensor with all other sensors of the<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-magnitude<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ ||<bold><italic>a</italic>
</bold>
||}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ ||<bold><italic>ω</italic>
</bold>
||}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ ||<bold><italic>α</italic>
</bold>
||}}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
}}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>y</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>a</italic>
<sub><italic>y</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>ω</italic>
<sub><italic>y</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>α</italic>
<sub><italic>y</italic>
</sub>
}}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>z</italic>
-component<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>a</italic>
<sub><italic>z</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>ω</italic>
<sub><italic>z</italic>
</sub>
}}<hr></hr>
</td>
<td align="center" valign="bottom">Max{cc{ <italic>α</italic>
<sub><italic>z</italic>
</sub>
}}<hr></hr>
</td>
</tr>
<tr><td colspan="4" align="left" valign="bottom"> The inter-axis cc’s of a sensor between the<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
- and <italic>y</italic>
-axes<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
,<italic>a</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
,<italic>ω</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
,<italic>α</italic>
<sub><italic>y</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">-<italic>x</italic>
- and <italic>z</italic>
-axes<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>a</italic>
<sub><italic>x</italic>
</sub>
,<italic>a</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>ω</italic>
<sub><italic>x</italic>
</sub>
,<italic>ω</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
<td align="center" valign="bottom">cc{ <italic>α</italic>
<sub><italic>x</italic>
</sub>
,<italic>α</italic>
<sub><italic>z</italic>
</sub>
}<hr></hr>
</td>
</tr>
<tr><td align="left">-<italic>y</italic>
- and <italic>z</italic>
-axes</td>
<td align="center">cc{ <italic>a</italic>
<sub><italic>y</italic>
</sub>
,<italic>a</italic>
<sub><italic>z</italic>
</sub>
}</td>
<td align="center">cc{ <italic>ω</italic>
<sub><italic>y</italic>
</sub>
,<italic>ω</italic>
<sub><italic>z</italic>
</sub>
}</td>
<td align="center">cc{ <italic>α</italic>
<sub><italic>y</italic>
</sub>
,<italic>α</italic>
<sub><italic>z</italic>
</sub>
}</td>
</tr>
</tbody>
</table>
<table-wrap-foot><p>All 57 (19 ·3) features are given as input to the decision tree learner. The C4.5 algorithm automatically chooses the features that split the data most effectively.</p>
</table-wrap-foot>
</table-wrap>
<p>Because the correlation coefficients were in matrix form, they could not be inserted directly as features (because the identity of the other sensors was unknown). For this reason, the sum of the correlation coefficients of a sensor with all other sensors and the maximum value of the correlation coefficients of a sensor with the other sensors were used as features. This corresponds to the sums and the maximum values of each row (neglecting the autocorrelations on the diagonal) of the correlation matrix respectively and gives an impression of the correlation of a sensor with all other sensors. Minimal values and the sum of the absolute values of the correlation coefficients were also investigated, but did not contribute to the identification of the sensors.</p>
</sec>
<sec><title>Classification for full-body configurations</title>
<p>Following feature extraction, Weka (Waikato Environment for Knowledge Analysis), a collection of machine learning algorithms for data mining tasks [<xref ref-type="bibr" rid="B12">12</xref>
,<xref ref-type="bibr" rid="B13">13</xref>
], was used for the classification of the inertial sensors.</p>
<p>In this study decision trees were used for classification, because they are simple to understand and interpret, they require little data preparation, and they perform well with large datasets in a short time [<xref ref-type="bibr" rid="B14">14</xref>
,<xref ref-type="bibr" rid="B15">15</xref>
].</p>
<p>The datasets for classification contained instances of 31 walking trials of 17 sensors each. All 57 features that are listed in Table <xref ref-type="table" rid="T1">1</xref>
were given as input to Weka. The features were ranked, using fractional ranking (also known as “1 2.5 2.5 4” ranking: equal numbers receive the mean of what they would receive when using ordinal ranking), to create ordinal features. This was done to minimize variability between individuals and between different walking speeds. This ranking process of categorizing the features is a form of classification and can only be used when the sensor-configuration is known beforehand (in this case it was known that a full-body configuration was used). A drawback of this ranking process is that the distance between the feature values (and thus the physical meaning) is removed.</p>
<p>In Weka, the J4.8 decision tree classifier – which is an implementation of the C4.5 algorithm – with default parameters was chosen. As a test option, a 10-fold cross-validation was chosen because in the literature this has been shown to be a good estimate of the error rate for many problems [<xref ref-type="bibr" rid="B15">15</xref>
].</p>
<p>The C4.5 algorithm builds decision trees from a set of training data using the concept of information entropy. Information entropy <italic>H</italic>
(in bits) is a measure of uncertainty and is defined as: </p>
<p><disp-formula id="bmcM8"><label>(8)</label>
<mml:math id="M27" name="1743-0003-10-31-i27" overflow="scroll"><mml:mi>H</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:munderover><mml:mrow><mml:mo mathsize="big">∑</mml:mo>
</mml:mrow>
<mml:mrow><mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow><mml:mi>n</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:mi>p</mml:mi>
<mml:mo>(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>)</mml:mo>
<mml:munder><mml:mrow><mml:mo>log</mml:mo>
</mml:mrow>
<mml:mrow><mml:mn>2</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mo>(</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo>(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>)</mml:mo>
<mml:mo>)</mml:mo>
</mml:math>
</disp-formula>
</p>
<p>where <italic>n</italic>
is the number of classes (in this case body segments) and <italic>p</italic>
(<italic>i</italic>
) is the probability that a sensor is assigned to class <italic>i</italic>
. This probability is defined as the number of sensors attached to segment <italic>i</italic>
divided by the total number of sensors. Information gain is the difference in entropy, before and after selecting one of the features to make a split [<xref ref-type="bibr" rid="B15">15</xref>
,<xref ref-type="bibr" rid="B16">16</xref>
].</p>
<p>At each node of the decision tree, the C4.5 algorithm chooses one feature of the dataset that splits the data most effectively, that is, the feature with the highest information gain is chosen to make the split.</p>
<p>The main steps of the C4.5 algorithm are [<xref ref-type="bibr" rid="B15">15</xref>
,<xref ref-type="bibr" rid="B16">16</xref>
]: </p>
<p>1. If all (remaining) instances (sensors) belong to the same class (segment), then finish</p>
<p>2. Calculate the information gain for all features</p>
<p>3. Use the feature with the largest information gain to split the data</p>
<p>4. Repeat steps 1 to 3.</p>
<p>To improve robustness, the classification was split into three steps. In the first step the body segments were classified without looking at left or right (or contra-/ipsilateral), while in the next steps the distinction between left and right was made.</p>
<sec><title><italic>Step one – segment identification</italic>
</title>
<p>In the first step, the body segments were identified, without distinguishing left and right. The features were ranked 1-17, but sensors were classified in ten different classes (pelvis, sternum, head, shoulder, upper arm, forearm, hand, upper leg, lower leg and foot), using Weka as described above.</p>
</sec>
<sec><title><italic>Step two – left and right upper arm and upper leg identification</italic>
</title>
<p>When segments were identified in step 1, left and right upper legs (and arms) were identified using correlation coefficients between pelvis-sensor (sternum-sensor for the upper arms) orientation <italic>θ</italic>
and upper leg (or arm) movement.</p>
<p>The sternum- and pelvis-sensor orientation <italic>θ</italic>
about <italic>x</italic>
, <italic>y</italic>
and <italic>z</italic>
axes were obtained by trapezoidal numerical integration of angular velocity, followed by detrending. In this case it was not necessary to use differential equation (1), because in all directions only small changes in orientation were measured on these segments. This provides left and right information, because of the coordinate frame transformation described before in the preprocessing Section (the <italic>y</italic>
-axis points left). For the upper arms and upper legs, accelerations, velocities, angular velocities, angular accelerations and orientations of <italic>x</italic>
, <italic>y</italic>
and <italic>z</italic>
axes were used.</p>
<p>Correlation coefficients of 45 combinations of <italic>x</italic>
, <italic>y</italic>
, <italic>z</italic>
components were calculated, ranked and used to train a decision tree using the same method as described above.</p>
</sec>
<sec><title><italic>Step three – left and right identification for shoulders, forearms, hands, lower legs and feet</italic>
</title>
<p>Left and right identification of the remaining segments (shoulders, forearms, hands, lower legs and feet) was done using correlation coefficients between (<italic>x</italic>
, <italic>y</italic>
, <italic>z</italic>
or magnitude) accelerations and angular velocities of sensors on adjacent segments for which it is known whether they are left or right.</p>
</sec>
</sec>
<sec><title>Classification for lower body plus trunk configurations</title>
<p>The classification for a lower body plus trunk configuration was similar to the full-body configuration, but instead of 17 inertial sensors, only 8 inertial sensors (on pelvis, sternum, right upper leg, left upper leg, right lower legs, left lower leg, right foot and left foot) were used. In the first step the features were now ranked 1-8, but sensors were classified in 5 different classes (pelvis, sternum, upper leg, lower leg, foot). In steps 2 and 3 the distinction between left and right was made again. The decision trees were trained using the 31 trials of the healthy subjects and subsequently tested, using 10-fold cross-validation, on these 31 trials and also on 17 trials of 7 patients after ACL reconstruction.</p>
</sec>
</sec>
<sec sec-type="results"><title>Results</title>
<sec><title>Full-body configurations</title>
<p>The results of the three steps are described individually below.</p>
<sec><title><italic>Step one – segment identification</italic>
</title>
<p>The J4.8 decision tree classifier, as constructed using Weka, is shown in Figure <xref ref-type="fig" rid="F2">2</xref>
. The corresponding confusion matrix is shown in Table <xref ref-type="table" rid="T2">2</xref>
. From the (31 ·17=) 527 inertial sensors, 514 were correctly classified (97.5%).</p>
<fig id="F2" position="float"><label>Figure 2</label>
<caption><p><bold>Decision tree for segment identification (step 1).</bold>
Constructed with the J4.8 algorithm of Weka. 31 walking trials of 10 different healthy subjects were used. As testing option a 10-fold cross-validation was used. From the (31·17=)527 inertial sensors, 514 were correctly classified (97.5%). The numbers at the leaves (the rectangles containing the class labels) indicate the number of sensors reaching that leaf and the number of incorrectly classified sensors. For example, 26 sensors reach the sternum leaf, of which one is not a sensor attached to the sternum.</p>
</caption>
<graphic xlink:href="1743-0003-10-31-2"></graphic>
</fig>
<table-wrap position="float" id="T2"><label>Table 2</label>
<caption><p>Confusion matrix</p>
</caption>
<table frame="hsides" rules="groups" border="1"><colgroup><col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="right"></col>
<col align="center"></col>
<col align="left"></col>
</colgroup>
<thead valign="top"><tr><th align="right"><bold>a</bold>
</th>
<th align="right"><bold>b</bold>
</th>
<th align="right"><bold>c</bold>
</th>
<th align="right"><bold>d</bold>
</th>
<th align="right"><bold>e</bold>
</th>
<th align="right"><bold>f</bold>
</th>
<th align="right"><bold>g</bold>
</th>
<th align="right"><bold>h</bold>
</th>
<th align="right"><bold>i</bold>
</th>
<th align="right"><bold>j</bold>
</th>
<th colspan="2" align="center"><bold><italic><</italic>
</bold>
<bold>— classified as</bold>
</th>
</tr>
</thead>
<tbody valign="top"><tr><td align="right" valign="bottom">30<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">1<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">a<hr></hr>
</td>
<td align="left" valign="bottom">Pelvis<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">25<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">6<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">b<hr></hr>
</td>
<td align="left" valign="bottom">Sternum<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">1<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">30<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">c<hr></hr>
</td>
<td align="left" valign="bottom">Head<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">1<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">61<hr></hr>
</td>
<td align="right" valign="bottom">1<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">d<hr></hr>
</td>
<td align="left" valign="bottom">Shoulder<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">61<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">e<hr></hr>
</td>
<td align="left" valign="bottom">Upper arm<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">62<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">f<hr></hr>
</td>
<td align="left" valign="bottom">Forearm<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">3<hr></hr>
</td>
<td align="right" valign="bottom">59<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">g<hr></hr>
</td>
<td align="left" valign="bottom">Hand<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">62<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">h<hr></hr>
</td>
<td align="left" valign="bottom">Upper leg<hr></hr>
</td>
</tr>
<tr><td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="right" valign="bottom">62<hr></hr>
</td>
<td align="right" valign="bottom">0<hr></hr>
</td>
<td align="center" valign="bottom">i<hr></hr>
</td>
<td align="left" valign="bottom">Lower leg<hr></hr>
</td>
</tr>
<tr><td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">0</td>
<td align="right">62</td>
<td align="center">j</td>
<td align="left">Foot</td>
</tr>
</tbody>
</table>
<table-wrap-foot><p>Resulting from testing the decision tree in Figure <xref ref-type="fig" rid="F2">2</xref>
with 10-fold cross-validation, using 31 walking trials. From the (31 ·17=)527 inertial sensors, 514 were correctly classified (97.5%).</p>
</table-wrap-foot>
</table-wrap>
<p>The decision making is based on the ranking of the features. For example, when looking at the top of the decision tree (at the first split) the 6 sensors (of each trial) with the largest RMS magnitude of the acceleration (RMS{ ||<bold><italic>a</italic>
</bold>
||}) are separated from the rest. These are the upper legs, lower legs and feet. Consequently the other 11 sensors of each walking trial are the pelvis, sternum, head, shoulders, upper arms, forearms and hand.</p>
</sec>
<sec><title><italic>Step two – left and right upper arm and upper leg identification</italic>
</title>
<p>In Figure <xref ref-type="fig" rid="F3">3</xref>
, the decision trees that were constructed for left and right upper arm and upper leg identification are shown. The left Figure indicates that, to identify left and right upper arms, from both upper arm sensors the correlation of the acceleration in <italic>z</italic>
direction with the sternum sensor orientation about the <italic>x</italic>
-axis has to be calculated. The sensor which results in the largest correlation coefficient is the sensor on the right upper arm. For the upper legs the orientation of the pelvis sensor is used instead of the sternum sensor (right Figure). For these segments, all sensors were identified correctly (100% accuracy).</p>
<fig id="F3" position="float"><label>Figure 3</label>
<caption><p><bold>Decision trees for left and right upper arm and upper leg identification (step 2).</bold>
To identify left and right upper arms, from both upper arm sensors the correlation of the acceleration in <italic>z</italic>
direction with the sternum sensor orientation about the <italic>x</italic>
-axis was used (left). For the upper legs the orientation of the pelvis sensor was used (right). For these segments, all sensors were identified correctly (100% accuracy).</p>
</caption>
<graphic xlink:href="1743-0003-10-31-3"></graphic>
</fig>
</sec>
<sec><title><italic>Step three – left and right identification for shoulders, forearms, hands, lower legs and feet</italic>
</title>
<p>Table <xref ref-type="table" rid="T3">3</xref>
lists the correlation coefficients for left and right identification of the remaining segments (shoulders, forearms, hands, lower legs and feet), determined using Weka. For example, to identify left and right shoulders, the correlation coefficients of acceleration in <italic>z</italic>
-direction between shoulders and upper arms (from which left and right were determined in the previous step) have to be calculated. The largest correlation coefficient then indicates whether segments are on the same lateral side or not. This step also resulted in 100% correct identification.</p>
<table-wrap position="float" id="T3"><label>Table 3</label>
<caption><p>Correlation coefficients (cc’s) used for left and right identification in step 3</p>
</caption>
<table frame="hsides" rules="groups" border="1"><colgroup><col align="left"></col>
<col align="left"></col>
<col align="left"></col>
</colgroup>
<thead valign="top"><tr><th align="left"><bold>Segments</bold>
</th>
<th align="left"><bold>cc’s with</bold>
</th>
<th align="left"><bold>Component</bold>
</th>
</tr>
</thead>
<tbody valign="top"><tr><td align="left" valign="bottom">Shoulders<hr></hr>
</td>
<td align="left" valign="bottom">Upper arms<hr></hr>
</td>
<td align="left" valign="bottom"><italic>a</italic>
<sub><italic>z</italic>
</sub>
<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">Forearms<hr></hr>
</td>
<td align="left" valign="bottom">Upper arms<hr></hr>
</td>
<td align="left" valign="bottom"><italic>a</italic>
<sub><italic>x</italic>
</sub>
<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">Hands<hr></hr>
</td>
<td align="left" valign="bottom">Forearms<hr></hr>
</td>
<td align="left" valign="bottom"><italic>a</italic>
<sub><italic>y</italic>
</sub>
<hr></hr>
</td>
</tr>
<tr><td align="left" valign="bottom">Lower Legs<hr></hr>
</td>
<td align="left" valign="bottom">Upper legs<hr></hr>
</td>
<td align="left" valign="bottom"><italic>a</italic>
<sub><italic>x</italic>
</sub>
<hr></hr>
</td>
</tr>
<tr><td align="left">Feet</td>
<td align="left">Lower legs</td>
<td align="left"><italic>a</italic>
<sub><italic>x</italic>
</sub>
</td>
</tr>
</tbody>
</table>
<table-wrap-foot><p>The “cc’s with”-column indicates the segments – for which it is known whether they are left or right – used for determining the component (third column, constructed with J4.8 algorithm in Weka) to determine left and right segments.</p>
</table-wrap-foot>
</table-wrap>
</sec>
</sec>
<sec><title>Lower body plus trunk configurations</title>
<p>The results of the three steps are again described individually below.</p>
<sec><title>Step one – segment identification</title>
<p>The decision tree for lower body plus trunk identification is shown in Figure <xref ref-type="fig" rid="F4">4</xref>
. To train this tree, 31 walking trials were used (31·8=248 sensors). 10-fold cross-validation was used for testing the tree, resulting in 248 (100%) correctly classified inertial sensors.</p>
<fig id="F4" position="float"><label>Figure 4</label>
<caption><p><bold>Decision tree for segment identification (step 1), when using a lower body plus trunk configuration.</bold>
31 walking trials were used (31·8=248 sensors). 10-fold cross-validation was used for testing the tree, resulting in 248 (100%) correctly classified inertial sensors.</p>
</caption>
<graphic xlink:href="1743-0003-10-31-4"></graphic>
</fig>
</sec>
<sec><title><italic>Step two – left and right upper arm and upper leg identification</italic>
</title>
<p>For left and right upper leg identification the tree from Figure <xref ref-type="fig" rid="F3">3</xref>
can be used again, which resulted in 100% correctly classified sensors.</p>
</sec>
<sec><title><italic>Step three – left and right identification for remaining segments</italic>
</title>
<p>This step is also the same as the left and right leg identification in the full-body configuration case (see Table <xref ref-type="table" rid="T3">3</xref>
), that is, the correlations of acceleration in <italic>x</italic>
direction between upper and lower legs and between lower legs and feet were used, resulting in 100% correctly classified sensors.</p>
</sec>
</sec>
<sec><title>Testing the lower body plus trunk identification algorithms on the patients</title>
<p>The decision trees trained using the walking trials of the healthy subjects were tested on the walking trials of the patients, after the ACL reconstruction. This resulted in 100% correctly identified inertial sensors in all three steps.</p>
</sec>
</sec>
<sec sec-type="discussion"><title>Discussion</title>
<p>The decision trees were trained with features extracted from walking trials involving healthy subjects. It is assumed that the system ‘knows’ the movement of a subject using for example, movement classification algorithms as described in literature [<xref ref-type="bibr" rid="B14">14</xref>
,<xref ref-type="bibr" rid="B17">17</xref>
]. This is important, because for our current method the subject needs to be walking. Our expectation is that the identification will become more robust when combining the current classification method with other daily-life activities. For example, when standing up from sitting the sensors on the upper legs rotate approximately 90°, which make these sensors easy to identify. These other activities could then be monitored using activity classification as described, for example, in [<xref ref-type="bibr" rid="B14">14</xref>
,<xref ref-type="bibr" rid="B17">17</xref>
], provided that this is possible without having to know the segment to which each sensor is attached beforehand. Then, based on this information, the correct decision tree for identifying the sensors can be chosen. Several new features (such as peak count or peak amplitude) will be needed when other activities are investigated.</p>
<p>It is not always essential (or even desirable) to use a full-body configuration, for example the ACL patients, where the interest is mainly on the gait pattern and the progress in the rehabilitation process. If not all the sensors are used, there are two options. The first option is to use a known subset of the 17 inertial sensors and to use decision trees that are trained using this subset of the sensors. This was shown for a lower body plus trunk configuration, but can be done similarly for every desired configuration, using the same methods. If it is not clear which segments are without sensors, the correlation features between different sensors and the ranking can not be used anymore, because these are both dependent on the number of sensors that is used (if for instance the sensors on the feet are missing – and this is not known – the sensors on the lower legs will be classified as if they are on the feet). A second option that can be used in this case, is to use a new decision tree that was created with features of all the 17 inertial sensors, but without the ranking (so using actual RMS and variance values) and without the correlation coefficients between different sensors (on the other hand, inter-axis correlation coefficient could be used, because they are not dependent on other sensors). To demonstrate this, a decision tree was constructed, which resulted in 400 of 527 correctly classified instances (75.9%). A possible explanation for this decreased performance could be the fact that – because of variations in walking speeds and or arm movements between different walking trials – there is more overlap in the (unranked) features, decreasing the performance of arm and leg identification. This implies that the ranking of the features is a suitable method for reducing the overlap of features between different trials. Another option of minimizing variability between subjects and walking speeds is to normalize the features. We tested this by creating a decision tree with normalized instead of ranked features. This resulted in 461 (87.5%) correctly classified sensors.</p>
<p>To obtain an indication of the sensitivity to changes in feature values, for each feature in the decision tree in Figure <xref ref-type="fig" rid="F2">2</xref>
, the difference between feature-value of each sensor and split-value was calculated. For example, for the feature at the top of the tree, RMS{ ||<bold><italic>a</italic>
</bold>
||}, the 17 RMS values were ranked and the split-value, that is, the mean RMS of ranks 11 and 12 was calculated. Subsequently, the difference between RMS value of each sensor and split-value was calculated (and normalized for each trial), resulting in a measure for the sensitivity to changes in acceleration. If differences are small, even small changes in acceleration can cause incorrectly classified sensors. These differences were calculated for all eight features used in the decision tree and for all trials. For each sensor the mean, variance, minimum and maximum was calculated. From this we concluded that RMS{ ||<bold><italic>a</italic>
</bold>
||}, splitting the sensors on the legs from the other sensors, is not sensitive to changes (in acceleration) and RMS{ <bold><italic>α</italic>
</bold>
<sub><italic>x</italic>
</sub>
}, splitting the sternum- and shoulder-sensors, is very sensitive to changes (in angular acceleration about the <italic>x</italic>
-axis), as can also be concluded from the confusion matrix (Table <xref ref-type="table" rid="T2">2</xref>
) where six sternum-sensors were classified as shoulder-sensors (and one vice versa) and all sensors on the legs were correctly classified.</p>
<p>The measurements used in this study involved placing the inertial sensors on the ideal positions as described in the Xsens MVN user manual to reduce soft tissue artifacts [<xref ref-type="bibr" rid="B9">9</xref>
]. But what is the influence of the sensor positions on the accuracy of the decision tree? Will the sensors be classified correctly if they are located at different positions? To answer this question a decision tree without the translational acceleration features was investigated, because on a rigid body the angular velocities (so also the angular accelerations) are considered to be the same everywhere on that rigid body. This tree for segment identification resulted in an accuracy of 97.2% (512 of 527 sensors correctly classified). The tree without the translational accelerations also introduced errors in the left and right identification, for example, the left and right upper arm and upper leg identification both resulted in 60/62 (96.8%) correctly classified sensors. To gain a better understanding of the influence of the sensor positions, additional measurements are required.</p>
<p>In current motion capture systems, data from several inertial sensors is collected and fused on a PC running an application that calculates segment kinematics and joint angles. This application currently requires information about the position of each sensor, which is handled by labeling each sensor and let the user attach it to the corresponding body segment. The algorithm presented in this paper can be implemented in this application and take over the responsibility of the correct attachment from the user, with the additional advantage to reduce possible attachment errors. Consequently, the procedure must guarantee a 100% correct identification, which will not always be the case. Therefore, a solution for this problem could be for the user to perform a visual check via an avatar – representing the subject that is measured – in the running application. If the movement of the avatar does not correspond to the movement of the subject, the subject is asked to walk a few steps to which the identification algorithm can be applied again. In addition to this, the system detects the activity the subject performs and can hence apply the algorithm several times during a measurement and alarm the user if the classifications do not fully correspond.</p>
<p>In this study, a decision tree classifier was used resulting in 97.5% correctly classified sensors. Other classifiers were investigated. For example a support vector machine (SVM) as used by Amini <italic>et al.</italic>
in [<xref ref-type="bibr" rid="B8">8</xref>
] resulted in 518/527 (98.3%) correctly classified sensors when a radial basis function was used with best parameters obtained using cross-validation (“CVParameterSelection” in Weka) [<xref ref-type="bibr" rid="B15">15</xref>
]. Disadvantage, however, is that the resulting parameters of the hyperplanes are not as easy to interpret as decision trees.</p>
<p>Other differences with previous studies, as described in the Introduction, are the number of sensors used. While in [<xref ref-type="bibr" rid="B6">6</xref>
,<xref ref-type="bibr" rid="B8">8</xref>
] respectively 5 and 10 inertial sensors were used, our algorithm provides identification for full-body configurations (17 inertial sensors). Whereas in these previous studies only acceleration features (in sensor coordinates) were used, we also use angular velocities – reducing the influence of the position of the sensor on the segment – and rotated sensor data to a global coordinate frame, for a 3D comparison of movement data from different subjects and allowing left and right identification.</p>
<p>Currently the results are based on three walking cycles. Increasing the trial length (which was possible for most of the recorded trials) did not improve accuracy, whereas a decrease resulted in accuracies of 92.6% when using two walking cycles and 90.1% when using one walking cycle (without looking at left and right identification). When using one and a half walking cycle, the accuracy was 92.0%, hence using multiples of full walking cycles seems no necessity.</p>
<p>To test the influence of integration drift on the estimation of the walking direction, we added an error angle to the angle <italic>θ</italic>
from (5). The accelerometer bias stability is 0.02 m/s<sup>2</sup>
[<xref ref-type="bibr" rid="B2">2</xref>
], which can cause a maximum error in velocity of 0.06 m/s after integrating over three seconds (the first walking cycle was always within three seconds). This subsequently leads to an error in the angle <italic>θ</italic>
of 3.5 degrees. We added a random error angle, obtained from a normal distribution with standard deviation of 3.5 degrees to the angle <italic>θ</italic>
. From this we calculated the features and tested them on the decision trees constructed using the normal features. This resulted in 97.7% correctly classified sensors in step one and 100% correctly classified sensors in the steps two and three. For an error angle of 10 degrees 97.2% of the sensors were correctly classified in step one. In steps two and three all sensors were correctly classified, except for the upper legs, from which 96.8% of the sensors were correctly classified.</p>
<p>No outstanding differences between male and female subjects were observed.</p>
</sec>
<sec sec-type="conclusions"><title>Conclusions</title>
<p>A method for the automatic identification of inertial sensor placement on human body segments has been presented. By comparing 10 easy to extract features, the body segment to which each inertial sensor is attached can be identified with an accuracy of 100.0% for lower body plus trunk configurations and 97.5% for full-body configurations, under the following constraints, which are satisfied in most practical situations: </p>
<p>•From a standing start (so the initial sensor inclination in the global frame can be obtained) the subject starts walking normally in a straight line, with sufficient arm movement.</p>
<p>•The sensor configuration needs to be known.</p>
<p>The features were extracted from magnitudes and 3D components of accelerations, angular velocities and angular accelerations, after transforming all signals to a global coordinate frame with <italic>x</italic>
-axis in walking direction, <italic>y</italic>
-axis pointing left and <italic>z</italic>
-axis vertical. Identification of left and right limbs was realized using correlations with sternum orientation for upper arms and pelvis orientation for upper legs and for remaining segments by correlations with sensors on adjacent segments. We demonstrated the robustness of the classification method for walking in ACL reconstruction patients.</p>
<p>When the sensor configuration is unknown, the ranking and the correlation coefficients between sensors cannot be used anymore. In this case, only 75.9% of the sensors are identified correctly (that is 400 of 527 sensors, based on a full body configuration). If it is known which sensors are missing, another decision tree without the missing sensors can be used. If the sensors are not attached to the optimal body positions, decision trees which only use features extracted from angular velocities and angular accelerations can be used instead.</p>
</sec>
<sec><title>Competing interests</title>
<p>The authors declare that they have no competing interests.</p>
</sec>
<sec><title>Authors’ contributions</title>
<p>DW developed and tested the sensor to segment identification algorithm and drafted the manuscript. BB, CB and PV assisted with data interpretation and helped to develop the algorithm. BB and PV helped to draft the manuscript. BB, CB, HH and PV supervised the research. CB provided the data of the ACL patients and revised the manuscript. All authors read and approved the final manuscript.</p>
</sec>
</body>
<back><sec><title>Acknowledgements</title>
<p>The authors would like to thank PIDON, the Dutch ministry of economic affairs and the Provinces Overijssel and Gelderland for financially supporting the Fusion project.</p>
</sec>
<ref-list><ref id="B1"><mixed-citation publication-type="journal"><name><surname>Roetenberg</surname>
<given-names>D</given-names>
</name>
<name><surname>Slycke</surname>
<given-names>PJ</given-names>
</name>
<name><surname>Veltink</surname>
<given-names>PH</given-names>
</name>
<article-title>Ambulatory position and orientation tracking fusing magnetic and inertial sensing</article-title>
<source>Biomed Eng IEEE Trans</source>
<year>2007</year>
<volume>54</volume>
<issue>5</issue>
<fpage>883</fpage>
<lpage>890</lpage>
</mixed-citation>
</ref>
<ref id="B2"><mixed-citation publication-type="other"><article-title>Xsens Technologies B.V. website</article-title>
<year>2013</year>
<comment>[<ext-link ext-link-type="uri" xlink:href="http://www.xsens.com">http://www.xsens.com</ext-link>
]. [February 7]</comment>
</mixed-citation>
</ref>
<ref id="B3"><mixed-citation publication-type="book"><name><surname>Cloete</surname>
<given-names>T</given-names>
</name>
<name><surname>Scheffer</surname>
<given-names>C</given-names>
</name>
<article-title>Benchmarking of a full-body inertial motion capture system for clinical gait analysis</article-title>
<source>Engineering in Medicine and Biology Society, 2008. EMBS 2008. 30th Annual International Conference of the IEEE</source>
<year>2008</year>
<publisher-name>Vancouver, British Columbia, Canada</publisher-name>
<fpage>4579</fpage>
<lpage>4582</lpage>
</mixed-citation>
</ref>
<ref id="B4"><mixed-citation publication-type="journal"><name><surname>Zhou</surname>
<given-names>H</given-names>
</name>
<name><surname>Stone</surname>
<given-names>T</given-names>
</name>
<name><surname>Hu</surname>
<given-names>H</given-names>
</name>
<name><surname>Harris</surname>
<given-names>N</given-names>
</name>
<article-title>Use of multiple wearable inertial sensors in upper limb motion tracking</article-title>
<source>Med Eng Phys</source>
<year>2008</year>
<volume>30</volume>
<fpage>123</fpage>
<lpage>133</lpage>
<pub-id pub-id-type="doi">10.1016/j.medengphy.2006.11.010</pub-id>
<pub-id pub-id-type="pmid">17251049</pub-id>
</mixed-citation>
</ref>
<ref id="B5"><mixed-citation publication-type="journal"><name><surname>Lim</surname>
<given-names>CK</given-names>
</name>
<name><surname>Luo</surname>
<given-names>Z</given-names>
</name>
<name><surname>Chen</surname>
<given-names>IM</given-names>
</name>
<name><surname>Yeo</surname>
<given-names>SH</given-names>
</name>
<article-title>Wearable wireless sensing system for capturing human arm motion</article-title>
<source>Sensors Actuators A: Phys</source>
<year>2011</year>
<volume>166</volume>
<fpage>125</fpage>
<lpage>132</lpage>
<comment>[<ext-link ext-link-type="uri" xlink:href="http://www.sciencedirect.com/science/article/pii/S0924424710004619">http://www.sciencedirect.com/science/article/pii/S0924424710004619</ext-link>
]</comment>
<pub-id pub-id-type="doi">10.1016/j.sna.2010.10.015</pub-id>
</mixed-citation>
</ref>
<ref id="B6"><mixed-citation publication-type="book"><name><surname>Kunze</surname>
<given-names>K</given-names>
</name>
<name><surname>Lukowicz</surname>
<given-names>P</given-names>
</name>
<name><surname>Junker</surname>
<given-names>H</given-names>
</name>
<name><surname>Tröster</surname>
<given-names>G</given-names>
</name>
<person-group person-group-type="editor">Strang T, Linnhoff-Popien C</person-group>
<article-title>Where am I: Recognizing on-Body positions of wearable sensors</article-title>
<source>Location- and Context-Awareness, Volume 3479 of Lecture Notes in Computer Science</source>
<year>2005</year>
<publisher-name>Berlin Heidelberg: Springer</publisher-name>
<fpage>264</fpage>
<lpage>275</lpage>
</mixed-citation>
</ref>
<ref id="B7"><mixed-citation publication-type="book"><name><surname>Kunze</surname>
<given-names>K</given-names>
</name>
<name><surname>Lukowicz</surname>
<given-names>P</given-names>
</name>
<article-title>Using acceleration signatures from everyday activities for on-body device location</article-title>
<source>Wearable Computers, 2007 11th IEEE International Symposium on</source>
<year>2007</year>
<publisher-name>Boston: IEEE</publisher-name>
<fpage>115</fpage>
<lpage>116</lpage>
</mixed-citation>
</ref>
<ref id="B8"><mixed-citation publication-type="journal"><name><surname>Amini</surname>
<given-names>N</given-names>
</name>
<name><surname>Sarrafzadeh</surname>
<given-names>M</given-names>
</name>
<name><surname>Vahdatpour</surname>
<given-names>A</given-names>
</name>
<name><surname>Xu</surname>
<given-names>W</given-names>
</name>
<article-title>Accelerometer-based on-body sensor localization for health and medical monitoring applications</article-title>
<source>Pervasive Mobile Comput</source>
<year>2011</year>
<volume>7</volume>
<issue>6</issue>
<fpage>746</fpage>
<lpage>760</lpage>
<comment>[<ext-link ext-link-type="uri" xlink:href="http://www.sciencedirect.com/science/article/pii/S1574119211001222">http://www.sciencedirect.com/science/article/pii/S1574119211001222</ext-link>
]</comment>
<pub-id pub-id-type="doi">10.1016/j.pmcj.2011.09.002</pub-id>
</mixed-citation>
</ref>
<ref id="B9"><mixed-citation publication-type="other"><collab>Xsens Technologies B.V.</collab>
<source>MVN User Manual</source>
<year>2010</year>
</mixed-citation>
</ref>
<ref id="B10"><mixed-citation publication-type="book"><name><surname>Baten</surname>
<given-names>CTM</given-names>
</name>
<name><surname>Schoot Uiterkamp</surname>
<given-names>RHM</given-names>
</name>
<name><surname>Wassink</surname>
<given-names>RGV</given-names>
</name>
<article-title>Can ambulatory analysis of movement be performed sufficiently accurate for decision support in ACL surgery rehabilitation?</article-title>
<source>Gait and Clinical Movement Analysis Society 2012 Annual Conference</source>
<year>2012</year>
<publisher-name>Grand Rapids</publisher-name>
<fpage>95</fpage>
<lpage>96</lpage>
</mixed-citation>
</ref>
<ref id="B11"><mixed-citation publication-type="other"><name><surname>Schepers</surname>
<given-names>HM</given-names>
</name>
<article-title>Ambulatory assessment of human body kinematics and kinetics</article-title>
<source>PhD thesis,</source>
<comment>University of Twente 2009</comment>
</mixed-citation>
</ref>
<ref id="B12"><mixed-citation publication-type="other"><article-title>Weka website</article-title>
<year>2013</year>
<comment>[<ext-link ext-link-type="uri" xlink:href="http://www.cs.waikato.ac.nz/ml/weka/">http://www.cs.waikato.ac.nz/ml/weka/</ext-link>
]. [February 7]</comment>
</mixed-citation>
</ref>
<ref id="B13"><mixed-citation publication-type="journal"><name><surname>Hall</surname>
<given-names>M</given-names>
</name>
<name><surname>Frank</surname>
<given-names>E</given-names>
</name>
<name><surname>Holmes</surname>
<given-names>G</given-names>
</name>
<name><surname>Pfahringer</surname>
<given-names>B</given-names>
</name>
<name><surname>Reutemann</surname>
<given-names>P</given-names>
</name>
<name><surname>Witten</surname>
<given-names>IH</given-names>
</name>
<article-title>The WEKA data mining software: an update</article-title>
<source>ACM SIGKDD Explorations Newsl</source>
<year>2009</year>
<volume>11</volume>
<fpage>10</fpage>
<lpage>18</lpage>
<pub-id pub-id-type="doi">10.1145/1656274.1656278</pub-id>
</mixed-citation>
</ref>
<ref id="B14"><mixed-citation publication-type="book"><name><surname>Avci</surname>
<given-names>A</given-names>
</name>
<name><surname>Bosch</surname>
<given-names>S</given-names>
</name>
<name><surname>Marin-Perianu</surname>
<given-names>M</given-names>
</name>
<name><surname>Marin-Perianu</surname>
<given-names>RS</given-names>
</name>
<name><surname>Havinga</surname>
<given-names>PJM</given-names>
</name>
<article-title>Activity recognition using inertial sensing for Healthcare, wellbeing and sports applications: A survey</article-title>
<source>23th International Conference on Architecture of Computing Systems, ARCS 2010, Hannover, Germany</source>
<year>2010</year>
<publisher-name>Berlin: VDE Verlag</publisher-name>
<fpage>167</fpage>
<lpage>176</lpage>
</mixed-citation>
</ref>
<ref id="B15"><mixed-citation publication-type="book"><name><surname>Witten</surname>
<given-names>IH</given-names>
</name>
<name><surname>Frank</surname>
<given-names>E</given-names>
</name>
<source>Data Mining: Practical Machine Learning Tools and Techniques</source>
<year>2005</year>
<publisher-name>San Francisco: Morgan Kaufmann Publishers</publisher-name>
</mixed-citation>
</ref>
<ref id="B16"><mixed-citation publication-type="book"><name><surname>Dubitzky</surname>
<given-names>W</given-names>
</name>
<source>Data Mining Techniques in Grid Computing Environments</source>
<year>2008</year>
<publisher-name>Chichester: Wiley-Blackwell</publisher-name>
</mixed-citation>
</ref>
<ref id="B17"><mixed-citation publication-type="journal"><name><surname>Wassink</surname>
<given-names>RGV</given-names>
</name>
<name><surname>Baten</surname>
<given-names>C</given-names>
</name>
<name><surname>Veltink</surname>
<given-names>PH</given-names>
</name>
<name><surname>Veldhuis</surname>
<given-names>RNJ</given-names>
</name>
<name><surname>Smeding</surname>
<given-names>JH</given-names>
</name>
<article-title>Monitoring of human activities using a trainable system based on Hidden Markov modelling technology</article-title>
<source>Gait Posture</source>
<year>2006</year>
<volume>24</volume>
<issue>Suppl 2</issue>
<fpage>S109</fpage>
<lpage>S110</lpage>
</mixed-citation>
</ref>
</ref-list>
</back>
</pmc>
</record>
Pour manipuler ce document sous Unix (Dilib)
EXPLOR_STEP=$WICRI_ROOT/Ticri/CIDE/explor/TelematiV1/Data/Pmc/Corpus
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 0003539 | SxmlIndent | more
Ou
HfdSelect -h $EXPLOR_AREA/Data/Pmc/Corpus/biblio.hfd -nk 0003539 | SxmlIndent | more
Pour mettre un lien sur cette page dans le réseau Wicri
{{Explor lien |wiki= Ticri/CIDE |area= TelematiV1 |flux= Pmc |étape= Corpus |type= RBID |clé= |texte= }}
![]() | This area was generated with Dilib version V0.6.31. | ![]() |