<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3-mathml3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title-group>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1638853</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2025.1638853</article-id>
<article-version article-version-type="Version of Record" vocab="NISO-RP-8-2008"/>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Original Research</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>A PSO&#x2013;ML-LSTM-based IMU state estimation approach for manipulator teleoperation</article-title>
<alt-title alt-title-type="left-running-head">Zhou et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2025.1638853">10.3389/frobt.2025.1638853</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Zhou</surname>
<given-names>Renyi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Li</surname>
<given-names>Yuanchong</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Data curation" vocab-term-identifier="https://credit.niso.org/contributor-roles/data-curation/">Data curation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="investigation" vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/">Investigation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Aimin</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Funding acquisition" vocab-term-identifier="https://credit.niso.org/contributor-roles/funding-acquisition/">Funding acquisition</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="resources" vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/">Resources</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="visualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/visualization/">Visualization</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Tie</given-names>
</name>
<xref ref-type="aff" rid="aff4">
<sup>4</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="methodology" vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/">Methodology</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="validation" vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/">Validation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Guan</surname>
<given-names>Yisheng</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/949553"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Formal analysis" vocab-term-identifier="https://credit.niso.org/contributor-roles/formal-analysis/">Formal analysis</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Funding acquisition" vocab-term-identifier="https://credit.niso.org/contributor-roles/funding-acquisition/">Funding acquisition</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="resources" vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/">Resources</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="validation" vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/">Validation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhao</surname>
<given-names>Zhijia</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Chen</surname>
<given-names>Shouyan</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1816060"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="conceptualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/conceptualization/">Conceptualization</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="methodology" vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/">Methodology</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Project administration" vocab-term-identifier="https://credit.niso.org/contributor-roles/project-administration/">Project administration</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="software" vocab-term-identifier="https://credit.niso.org/contributor-roles/software/">Software</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing &#x2013; original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &amp; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/">Writing &#x2013; review &amp; editing</role>
</contrib>
</contrib-group>
<aff id="aff1">
<label>1</label>
<institution>School of Electro-mechanical Engineering, Guangdong University of Technology</institution>, <city>Guangzhou</city>, <country country="CN">China</country>
</aff>
<aff id="aff2">
<label>2</label>
<institution>Advanced Technology Department, GAC R&#x26;D Center, Guangzhou Automobile Group Co. Ltd.</institution>, <city>Guangzhou</city>, <country country="CN">China</country>
</aff>
<aff id="aff3">
<label>3</label>
<institution>School of Mechanical and Electrical Engineering, Guangzhou University</institution>, <city>Guangzhou</city>, <country country="CN">China</country>
</aff>
<aff id="aff4">
<label>4</label>
<institution>School of Mechanical and Automotive Engineering, South China University of Technology</institution>, <city>Guangzhou</city>, <country country="CN">China</country>
</aff>
<author-notes>
<corresp id="c001">
<label>&#x2a;</label>Correspondence: Shouyan Chen, <email xlink:href="maxcsy@gzhu.edu.cn">maxcsy@gzhu.edu.cn</email>
</corresp>
</author-notes>
<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2025-09-16">
<day>16</day>
<month>09</month>
<year>2025</year>
</pub-date>
<pub-date publication-format="electronic" date-type="collection">
<year>2025</year>
</pub-date>
<volume>12</volume>
<elocation-id>1638853</elocation-id>
<history>
<date date-type="received">
<day>31</day>
<month>05</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>30</day>
<month>07</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Zhou, Li, Zhang, Zhang, Guan, Zhao and Chen.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Zhou, Li, Zhang, Zhang, Guan, Zhao and Chen</copyright-holder>
<license>
<ali:license_ref start_date="2025-09-16">https://creativecommons.org/licenses/by/4.0/</ali:license_ref>
<license-p>This is an open-access article distributed under the terms of the <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution License (CC BY)</ext-link>. The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</license-p>
</license>
</permissions>
<abstract>
<p>Manipulator teleoperation can liberate humans from hazardous tasks. Signal noise caused by environmental disturbances and the devices&#x2019; inherent characteristics may limit the teleoperation performance. This paper proposes an approach for inertial measurement unit (IMU) state estimation based on particle swarm optimization (PSO) and modulated long short-term memory (ML-LSTM) neural networks to mitigate the impact of IMU cumulative error on the robot teleoperation performance. A motion mapping model for the human arm and a seven-degree-of-freedom (7-DOF) robotic arm are first established based on global configuration parameters and a hybrid mapping method. This model is used to describe the impact of IMU cumulative error on the robot teleoperation performance. Subsequently, the IMU pose state estimation model is constructed using PSO and ML-LSTM neural networks. The initial data of multiple IMUs and handling handles are used for training the estimation model. Finally, comparative experiments are conducted to verify the performance of the proposed state estimation model. The results demonstrate that the PSO&#x2013;ML-LSTM algorithm can effectively eliminate the impact of IMU cumulative errors on robot teleoperation.</p>
</abstract>
<kwd-group>
<kwd>state estimation</kwd>
<kwd>manipulator teleoperation</kwd>
<kwd>particle swarm optimization&#x2013;modulated long short-term memory</kwd>
<kwd>master&#x2013;slave mapping</kwd>
<kwd>cumulative errors</kwd>
</kwd-group>
<funding-group>
<funding-statement>The author(s) declare that financial support was received for the research and/or publication of this article. This study was funded by the Research Project of the Education Bureau of Guangzhou City (No.2024312411) and the National Natural Science Foundation of China (No.12172095).</funding-statement>
</funding-group>
<counts>
<fig-count count="16"/>
<table-count count="3"/>
<equation-count count="37"/>
<ref-count count="23"/>
<page-count count="12"/>
</counts>
<custom-meta-group>
<custom-meta>
<meta-name>section-in-acceptance</meta-name>
<meta-value>Human-Robot Interaction</meta-value>
</custom-meta>
</custom-meta-group>
</article-meta>
</front>
<body>
<sec id="s1" sec-type="intro">
<label>1</label>
<title>Introduction</title>
<p>There are many environments and situations where robots are expected to replace or assist humans at the sites (<xref ref-type="bibr" rid="B3">Darvish et al., 2023</xref>; <xref ref-type="bibr" rid="B11">Liu et al., 2025</xref>). However, due to the limitations of AI techniques, fully autonomous solutions are still far from being able to generate natural and appropriate operational behaviors. Consequently, robot teleoperation is considered a reasonable solution for tasks in extreme environments, which can relieve human operators from potential hazards (<xref ref-type="bibr" rid="B9">Li S. et al., 2024</xref>). Various efforts have been made to deploy human senses, actions, and presence in remote locations. During the teleoperation, the robot is required to imitate human actions to perform highly dexterous tasks under limited information exchange. The priority of the robotic teleoperation system is to measure the kinematic and dynamic information of the human and transfer it to the robot&#x2019;s movements for teleoperation. One of the key challenges lies in establishing precise motion mapping between the human operator and the robot.</p>
<p>To provide references for robotic motion, scholars have explored different technologies to measure human motion, including wearable inertial measurement unit (IMU)-based motion estimation (<xref ref-type="bibr" rid="B15">Penco et al., 2019</xref>; <xref ref-type="bibr" rid="B16">&#x160;kulj et al., 2021</xref>), vision-based motion capture (<xref ref-type="bibr" rid="B17">Tsitos and Dagioglou, 2022</xref>), exoskeleton-based motion measurement (<xref ref-type="bibr" rid="B2">Cheng et al., 2024</xref>), and EMG- and EEG-based motion intention estimation (<xref ref-type="bibr" rid="B1">Chen et al., 2023</xref>; <xref ref-type="bibr" rid="B10">Li H. et al., 2024</xref>). The performance of the vision-based capture approach is impacted by the occlusion and low portability of the setup, while the EMG- and EEG-based approaches have high requirements for the detection environment and equipment (<xref ref-type="bibr" rid="B19">Wang et al., 2023</xref>). In contrast, the IMU-based approach can estimate human motion without occlusion-related problems, which is more suitable for use in the field and other unstructured scenarios. However, gyroscopic drift of IMU tends to cause cumulative errors, which will gradually accumulate and amplify over time.</p>
<p>Scholars have attempted to improve IMU state estimation accuracy by deploying Kalman filtering and machine learning methods (<xref ref-type="bibr" rid="B13">Luo et al., 2025</xref>). <xref ref-type="bibr" rid="B22">Zhang et al. (2022)</xref> proposed a quadrotor state estimation method based on deep neural networks and a multi-sensor data fusion model. The IMU&#x2019;s kinematic characteristics, the robot&#x2019;s dynamic properties, and uncertainty representations are learned by training a cascaded network on real-world quadrotor flight data, the information of which is fused into a two-stage extended Kalman filter (EKF) framework for better estimation. <xref ref-type="bibr" rid="B6">Hosseinyalamdary (2018)</xref> proposed a combination of deep learning and Kalman filters for modeling to eliminate the system state estimation errors caused by IMU errors. <xref ref-type="bibr" rid="B5">Han et al. (2019)</xref> proposed a deep VIO algorithm that combines vision and IMU and uses a self-supervised end-to-end strategy to estimate system state. <xref ref-type="bibr" rid="B8">Kim et al. (2021)</xref> used one-dimensional convolutional neural networks to predict the desired velocity from the raw acceleration data to improve the accuracy of individual IMU state estimations. <xref ref-type="bibr" rid="B12">Luo et al. (2024)</xref> proposed a Kalman filtering and modulated long short-term memory (ML-LSTM)-based approach to estimate the state of the vehicle system. <xref ref-type="bibr" rid="B21">Xu et al. (2022)</xref> proposed a full-state estimation algorithm based on the error-state extended Kalman filter (ESEKF) framework, which can enable simultaneous state estimation and external calibration (POS&#x2013;IMU and IMU&#x2013;IMU), handheld platforms, quadrotor unmanned aerial vehicles (UAVs), and ground vehicles.</p>
<p>Furthermore, due to the structural differences between the human body and the robot, teleoperation control of robots requires consideration of the motion mapping between the human body and the robot. It can be categorized into motion mapping for the upper limbs, lower limbs, and the whole body. Upper-limb motion mapping typically involves mapping the Cartesian space movements of human limbs to the corresponding values of the robot&#x2019;s limbs and then considering the robot&#x2019;s constraints to solve the inverse kinematics problem by minimizing a cost function. A common approach is to establish motion mapping between the human wrist and the robot&#x2019;s end-effector, which is known as configuration space retargeting (<xref ref-type="bibr" rid="B18">Wang et al., 2021</xref>). <xref ref-type="bibr" rid="B23">Zhao et al. (2023)</xref> proposed that the lower-priority elbow motion should be considered in the mapping process, which is important for delicate operations in constrained spaces. In reference to the above study, an IMU state estimation approach based on particle swarm optimization (PSO) and an ML-LSTM network is proposed to estimate the IMU error for robot teleoperation, while the human wrist and elbow motions are measured and imitated.</p>
<p>This study focuses on the human-robot posture mapping problem caused by multi-IMU drift errors in a remote sensing system. Unlike normal IMU drift issues, this problem requires establishing the spatial relationships among multiple IMUs on the human arm through kinematic modeling, leveraging their invariant spatial constraints to correct drift errors. The key contribution lies in proposing a lightweight, PSO-ML-LSTM-based online IMU calibration model that accounts for computational and temporal costs in data training. By fitting the model using early-stage IMU data (where drift is minimal), it enables real-time correction of subsequent drift-affected data. This method is used to establish the state and observation models for the teleoperation motion mapping, thereby enabling online calibration of the IMUs. The remainder of this study is structured as follows. Section II establishes the teleoperation mapping model and describes the background of the problem. Section III introduces the working principles of the algorithm. Section IV verifies the performance of the algorithm through comparative experiments. Section V summarizes the innovative methods proposed in this paper.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Robot teleoperation model and problem description</title>
<sec id="s2-1">
<label>2.1</label>
<title>Robot teleoperation system</title>
<p>The robot teleoperation system is based on two IMUs and an operating handle. The operating handle provides the position and orientation of the human hand, while the two IMUs, worn on the upper arm and forearm of the human body, are used to detect the motion state of the human arm. The data from the IMUs and operating handle are transmitted via Bluetooth to the STM32 for data acquisition and processing. Subsequently, the data are sent through a Wi-Fi module to the rk3588 processor for robot inverse kinematics and arm angle calculations, generating the trajectory of a seven-degree-of-freedom (7-DOF) robot. The system composition and data transmission process are illustrated in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Robot teleoperation system.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g001.tif">
<alt-text content-type="machine-generated">A collage showing a person with sensors labeled IMU attached to the arm, a 7DOF robotic arm, and electronic boards labeled STM32 and rk3588 with arrows indicating data flow between the components.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s2-2">
<label>2.2</label>
<title>Robot model</title>
<p>This paper adopts incremental position mapping and absolute attitude mapping. The kinematic model of the robot and the human body is established before determining the human&#x2013;robot motion mapping. The 7-DOF robot structure is shown in <xref ref-type="fig" rid="F2">Figure 2</xref> and the robot DH parameters are provided in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Robot configuration.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g002.tif">
<alt-text content-type="machine-generated">Illustration of a complex mechanical structure with interconnected cylindrical components and gears, resembling parts of a robotic or industrial arm. The design includes visible gears and likely indicates a system of joints and couplings.</alt-text>
</graphic>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Seven-DOF robot DH parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">i</th>
<th align="center">
<inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1</td>
<td align="center">0&#xb0;</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">&#x2212;90&#xb0;</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">90&#xb0;</td>
<td align="center">
<inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">&#x2212;90&#xb0;</td>
<td align="center">
<inline-formula id="inf10">
<mml:math id="m10">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">5</td>
<td align="center">90&#xb0;</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">6</td>
<td align="center">&#x2212;90&#xb0;</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf14">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">7</td>
<td align="center">90&#xb0;</td>
<td align="center">
<inline-formula id="inf15">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf16">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>7</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The robot kinematics model can be obtained by:<disp-formula id="e1">
<mml:math id="m29">
<mml:mrow>
<mml:mmultiscripts>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>7</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mprescripts/>
<mml:mn>7</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>11</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>12</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>13</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>21</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>22</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>23</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>31</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>32</mml:mn>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>33</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>z</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd/>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mmultiscripts>
<mml:mi>R</mml:mi>
<mml:mi>r</mml:mi>
<mml:none/>
<mml:mprescripts/>
<mml:mn>7</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
</mml:mtd>
<mml:mtd>
<mml:mmultiscripts>
<mml:mi>P</mml:mi>
<mml:mprescripts/>
<mml:mn>7</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf29">
<mml:math id="m30">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>P</mml:mi>
<mml:mprescripts/>
<mml:mn>7</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the robot end-effector position.</p>
<p>To solve the problem of multiple solutions in the inverse solution of a redundant DOF manipulator, a unique solution can be obtained by introducing the global configuration parameter GCk. According to <xref ref-type="bibr" rid="B4">Faria et al. (2018)</xref>, the spatial orientation of robotic arms is directly affected by GCk of the shoulder, elbow, and wrist.</p>
<p>To address the global and local self-motion manifolds, two supplementary parameters are incorporated into the redundant robot inverse kinematics calculation, namely, global configuration (GC) and arm angle <inline-formula id="inf30">
<mml:math id="m31">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The global configuration is used to specify the branch of the inverse kinematics solutions for the global configuration manifold. The arm angle <inline-formula id="inf31">
<mml:math id="m32">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> indicates the elbow position in the redundancy circle, as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The global configuration parameter <inline-formula id="inf32">
<mml:math id="m33">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is divided into three variables that represent the sign of the joint angle coordinates for the shoulder joint (<inline-formula id="inf33">
<mml:math id="m34">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), the elbow joint (<inline-formula id="inf34">
<mml:math id="m35">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), and the wrist joint (<inline-formula id="inf35">
<mml:math id="m36">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>). <inline-formula id="inf36">
<mml:math id="m37">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is given as follows:<disp-formula id="e2">
<mml:math id="m38">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtext> </mml:mtext>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>if</mml:mtext>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mtext>if</mml:mtext>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
<mml:mtext> </mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Representation of the arm angle <inline-formula id="inf37">
<mml:math id="m39">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as the angle between the robot arm plane and the reference plane.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g003.tif">
<alt-text content-type="machine-generated">Diagram illustrating a reference plane and an arm plane connected by points \(P_S\), \(P_E\), and \(P_W\). An IMU sensor is located between these planes, indicating movement direction. An angular measurement, labeled as \(\psi\), is present between the planes.</alt-text>
</graphic>
</fig>
<p>In this paper, when the operator employs the right arm for teleoperation, the values are set as GC2 &#x3d; 1, GC4 &#x3d; 1, and GC6 &#x3d; &#x2212;1; conversely, when the left arm is utilized for teleoperation, the values are assigned as GC2 &#x3d; &#x2212;1, GC4 &#x3d; &#x2212;1, and GC6 &#x3d; 1. Subsequently, a unique inverse solution can be derived based on the pose <inline-formula id="inf38">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the arm angle <inline-formula id="inf39">
<mml:math id="m41">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and the global configuration parameter GCk. Since &#x3b8;_4 is not affected by the arm angle <inline-formula id="inf40">
<mml:math id="m42">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, other angles can be obtained using the following formulas.<disp-formula id="equ1">
<mml:math id="m43">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>atan</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close="" separators="|">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>22</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="3em"/>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>12</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
<disp-formula id="equ2">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>arccos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="equ3">
<mml:math id="m45">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>atan</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close="" separators="|">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="3em"/>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
<disp-formula id="equ4">
<mml:math id="m46">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>atan</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close="" separators="|">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="3em"/>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>13</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
<disp-formula id="equ5">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>arccos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e3">
<mml:math id="m48">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mn>7</mml:mn>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>atan</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mrow>
<mml:mfenced open="(" close="" separators="|">
<mml:mrow>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="3em"/>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mn>31</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-3">
<label>2.3</label>
<title>Virtual human arm model</title>
<p>To construct a virtual human arm model, the coordinate system on the human arm is established as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. Coordinate systems {1} and {2} are on the human shoulder joint, while coordinate system {3} is on the human elbow joint, and coordinate system {4} is established on the wrist. The DH parameterof virtual huma arm is shown in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Human arm DH parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">i</th>
<th align="center">
<inline-formula id="inf17">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf18">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf19">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf20">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf21">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">
<inline-formula id="inf22">
<mml:math id="m22">
<mml:mrow>
<mml:mn>90</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf23">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf24">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf25">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">
<inline-formula id="inf26">
<mml:math id="m26">
<mml:mrow>
<mml:mn>90</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf27">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0</td>
<td align="center">
<inline-formula id="inf28">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Here, <inline-formula id="inf41">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the length of the upper arm and <inline-formula id="inf42">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the length of the lower arm. According to the homogeneous transformation formula, the elbow position can be derived as follows:<disp-formula id="e4">
<mml:math id="m51">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>P</mml:mi>
<mml:mi>h</mml:mi>
<mml:none/>
<mml:mprescripts/>
<mml:mn>3</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>The wrist position is<disp-formula id="e5">
<mml:math id="m52">
<mml:mrow>
<mml:mmultiscripts>
<mml:mi>P</mml:mi>
<mml:mi>h</mml:mi>
<mml:none/>
<mml:mprescripts/>
<mml:mn>4</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>23</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-4">
<label>2.4</label>
<title>Master&#x2013;slave motion relationship mapping</title>
<p>This paper employs a hybrid mapping approach, where position is mapped incrementally while orientation uses absolute mapping. The robot model and virtual human arm model are utilized to map the posture of both the human arm and wrist.</p>
<p>The positions of human wrist and robot can be obtained according to <xref ref-type="disp-formula" rid="e1">Equations 1</xref>, <xref ref-type="disp-formula" rid="e5">5</xref>. The positions of the human wrist and robot end-effector are mapped incrementally. Assuming that the initial calibration position is <inline-formula id="inf43">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf44">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mmultiscripts>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
<mml:none/>
<mml:mprescripts/>
<mml:mn>7</mml:mn>
<mml:mn>0</mml:mn>
</mml:mmultiscripts>
</mml:mrow>
</mml:math>
</inline-formula>, the positions in relation to the master and slave ends can be expressed as follows:<disp-formula id="equ6">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e6">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
<disp-formula id="equ7">
<mml:math id="m57">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf45">
<mml:math id="m58">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the mapping scale. The attitude of the human wrist and the robot end-effector are mapped absolutely:<disp-formula id="e7">
<mml:math id="m59">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>In order to ensure that the robot arm can adjust the attitude of the intermediate joint according to the requirements of the operator to achieve obstacle avoidance, the intermediate joint adopts absolute attitude mapping:<disp-formula id="equ8">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>According to <xref ref-type="disp-formula" rid="e6">Equations 6</xref>&#x2013;<xref ref-type="disp-formula" rid="e8">8</xref>, the relationship mapping can be established. For ease of calculation, the arm angle <inline-formula id="inf46">
<mml:math id="m62">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> in this paper is defined as the angle between the arm and reference planes, where the arm plane is considered parallel to the axis <inline-formula id="inf47">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf48">
<mml:math id="m64">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the IMU on the upper and lower arms. To figure out the arm plane, the Euler angles of the two IMUs are converted into direction vectors. By defining the IMU Euler angles as <inline-formula id="inf49">
<mml:math id="m65">
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf50">
<mml:math id="m66">
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, the normal vector S of the arm plane can be obtained by the cross product of <inline-formula id="inf51">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf52">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e9">
<mml:math id="m69">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2a;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>Defining the reference plane as being perpendicular to the horizontal plane, the arm angle <inline-formula id="inf53">
<mml:math id="m70">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> can be obtained by dotting the normal vector <inline-formula id="inf54">
<mml:math id="m71">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with the horizontal normal vector <inline-formula id="inf55">
<mml:math id="m72">
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e10">
<mml:math id="m73">
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>The inverse kinematics can be obtained by substituting <xref ref-type="disp-formula" rid="e10">Equation 10</xref> into <xref ref-type="disp-formula" rid="e2">Equation 2</xref>.</p>
</sec>
<sec id="s2-5">
<label>2.5</label>
<title>Problem description</title>
<p>When there is magnetic field interference in the operating environment, the magnetometer cannot be used to calibrate the IMU online, and the IMU cumulative error <inline-formula id="inf56">
<mml:math id="m74">
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> will appear. In this case, the normal vector of the arm plane is <inline-formula id="inf57">
<mml:math id="m75">
<mml:mrow>
<mml:msup>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, and the arm angle error is<disp-formula id="e11">
<mml:math id="m76">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>S</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mi>H</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>To observe the drift problem, an IMU with magnetometer malfunction is bound with a high-precision IMU with magnetometer. A random arm motion is conducted to observe the drift of the low-cost IMU, while the high-precision IMU is regarded as a reference standard. The <xref ref-type="fig" rid="F4">Figure 4</xref> shows the IMU yaw angle without (blue line) and with the magnetometer after 20 min of various random motions. The final cumulative error is approximately 70&#xb0;. It is worth noting that to perform online calibration of the IMU on the arm, accurate data are required as a reference point. Since the handle has its own vision-based calibration function, this paper assumes that the position data of the handle are accurate.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>IMU cumulative error after 20 min.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g004.tif">
<alt-text content-type="machine-generated">Line graph showing two data sets labeled &#x22;Actual&#x22; in blue and &#x22;pico_imu_Euler_z (55% to end)&#x22; in green. The x-axis represents sample numbers from 0 to 6000, and the y-axis represents imu1_Euler_z values ranging from -75 to 100. The blue line fluctuates more widely than the green line.</alt-text>
</graphic>
</fig>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>PSO&#x2013;ML-LSTM-based IMU state estimation</title>
<p>In the case of magnetic field disturbance, the IMU cannot be self-calibrated by a magnetometer, and the cumulative error caused by drift will occur in the IMU. Therefore, it is necessary to estimate the IMU state online. This section introduces the PSO&#x2013;ML-LSTM-based IMU state estimation approach. The whole process is shown in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Process of PSO&#x2013;ML-LSTM-based IMU state estimation.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g005.tif">
<alt-text content-type="machine-generated">Flowchart of a robot motion control system. IMU data undergoes Kalman filtering, feature selection, and modulation LSTM for IMU estimation. Master-Slave motion mapping leads to robot motion. Previous IMU data is used for Random Forest feature selection and parameter optimization.</alt-text>
</graphic>
</fig>
<sec id="s3-1">
<label>3.1</label>
<title>Feature selection based on random forest</title>
<p>Considering the computation and time costs for online training, random forest-based feature selection is conducted to exclude unimportant feature data. Random forest-based feature selection combines the powerful representation capabilities of neural networks with the stability and nonlinear processing capabilities of random forest models. During the generation of each decision tree, the data subset and feature subset are randomly selected to enhance the robustness of the model and reduce overfitting. The input data for feature selection include the position and attitude of the operating handle, the attitude of IMUs, and the angular velocity and acceleration of IMUs. The feature selection results indicate that the position of the operating handle and the pitch and roll angle of IMUs have a significant impact on the IMUs&#x2019; yaw angle estimation.</p>
</sec>
<sec id="s3-2">
<label>3.2</label>
<title>Kalman filtering for data processing</title>
<p>In this paper, Kalman filtering is used to reduce IMU data bias and noise. To achieve this, the angular velocity measured by the gyroscope is used to predict the attitude and simultaneously model the slow change of zero offset:<disp-formula id="e12">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>Here, A is the state transition matrix, <inline-formula id="inf58">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the angular velocity measured by the gyroscope, and <inline-formula id="inf59">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is data noise. The process is started with the initiating states <inline-formula id="inf60">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf61">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">P</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The prediction state <inline-formula id="inf62">
<mml:math id="m82">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and error covariance <inline-formula id="inf63">
<mml:math id="m83">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are calculated as follows:<disp-formula id="equ9">
<mml:math id="m84">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e13">
<mml:math id="m85">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mover accent="true">
<mml:mi>A</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>Q</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>The Kalman gain <inline-formula id="inf64">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and state are updated according to<disp-formula id="equ10">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:msup>
<mml:mi>H</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>H</mml:mi>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:msup>
<mml:mi>H</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>R</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="equ11">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>Z</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>H</mml:mi>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e14">
<mml:math id="m89">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mi>H</mml:mi>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf65">
<mml:math id="m90">
<mml:mrow>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the process noise covariance matrix, and <inline-formula id="inf66">
<mml:math id="m91">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the measurement noise covariance matrix.</p>
</sec>
<sec id="s3-3">
<label>3.3</label>
<title>PSO&#x2013;ML-LSTM-based IMU state estimation</title>
<p>The ML-LSTM neural network introduces the modulation gate into traditional LSTM to evaluate the importance of historical information at different times. It can improve the traditional memory mode and take the memory summation average value of each data segment as the standard memory, thus improving the model&#x2019;s ability to recognize key information and the model&#x2019;s ability to interpret. The structure of the ML-LSTM neural network is shown in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Structure of ML-LSTM.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g006.tif">
<alt-text content-type="machine-generated">Diagram of an LSTM cell, showing how information flows through input, output, and forget gates. It includes operations like sigmoid and tanh functions, with connections illustrating dependencies. Gates and processes are color-coded.</alt-text>
</graphic>
</fig>
<p>The forget gate of ML-LSTM is used to determine what information can pass through the memory unit and generate an <inline-formula id="inf67">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> according to the output value <inline-formula id="inf68">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at the last moment and the current input value <inline-formula id="inf69">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e15">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf70">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the weight, <inline-formula id="inf71">
<mml:math id="m97">
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the offset, and <inline-formula id="inf72">
<mml:math id="m98">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the activation function sigmoid. To generate updated information, the values of <inline-formula id="inf73">
<mml:math id="m99">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and the new candidate <inline-formula id="inf74">
<mml:math id="m100">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> will be calculated and added to the memory unit as a candidate value generated by the current layer.<disp-formula id="equ12">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e16">
<mml:math id="m102">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>tanh</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>C</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>C</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>The memory cells are updated by<disp-formula id="e17">
<mml:math id="m103">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>C</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>The modulation gate sums the memory information and calculates the mean <italic>E</italic>.<disp-formula id="e18">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mi>m</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mtext>&#x200a;</mml:mtext>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>Here, m is the number of data segments. The model output <inline-formula id="inf75">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be obtained as follows:<disp-formula id="e19">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>o</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>o</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>tanh</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>Then, the PSO algorithm is run offline using previous data to optimize the neuron number <inline-formula id="inf76">
<mml:math id="m107">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and learning rate <inline-formula id="inf77">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of ML-LSTM. The initial position and speed of the particles are first randomly generated. The fitness evaluation of each particle solution is conducted. The historical best position (<inline-formula id="inf78">
<mml:math id="m109">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>) and the global best position (<inline-formula id="inf79">
<mml:math id="m110">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>) for each particle are then recorded. The speed and position of each particle according to <inline-formula id="inf80">
<mml:math id="m111">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf81">
<mml:math id="m112">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are updated to calculate the neuron number and learning rate according to the following equation.<disp-formula id="equ13">
<mml:math id="m113">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c9;</mml:mi>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>g</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e20">
<mml:math id="m114">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf82">
<mml:math id="m115">
<mml:mrow>
<mml:msubsup>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf83">
<mml:math id="m116">
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> can be represented by <inline-formula id="inf84">
<mml:math id="m117">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf85">
<mml:math id="m118">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf86">
<mml:math id="m119">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf87">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The above process will be repeated until the number of iterations is reached or an optimal solution is found. The PSO flow chart is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Process of PSO.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g007.tif">
<alt-text content-type="machine-generated">Flowchart depicting a process starting with data preprocessing. It initializes LSTM parameters and PSO population, calculates PSO fitness, and updates positions. It checks if requirements are met, repeating or moving to predicting yaw angle using an optimized LSTM model. After checking prediction error requirements, it predicts angle and IMU data, finally outputting the global optimal value and ending once the prediction is completed.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s3-4">
<label>3.4</label>
<title>Evaluation index</title>
<p>To evaluate the performance of the IMU state estimation model, three evaluation indexes are used, including the root mean square error (RMSE), mean absolute error (MAE), mean bias error (MBE), and R-squared <inline-formula id="inf88">
<mml:math id="m121">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e21">
<mml:math id="m122">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mtext>&#x200a;</mml:mtext>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
<disp-formula id="e22">
<mml:math id="m123">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msubsup>
</mml:mstyle>
<mml:mtext>&#x200a;</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m124">
<mml:mrow>
<mml:mtext>MBE</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mtext>&#x200a;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
<disp-formula id="e24">
<mml:math id="m125">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
</mml:mstyle>
<mml:mtext>&#x200a;</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:msubsup>
</mml:mstyle>
<mml:mtext>&#x200a;</mml:mtext>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#xaf;</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Experiment and discussion</title>
<p>In this paper, the IMU estimation model is implemented online using LibTorch, which is integrated into the rk3588 processor. The dataset is split into training and validation sets with a ratio of 2:8. The random forest is first used for feature selection. and the particle swarm optimization is used to optimize the number of neurons and the learning rate of the ML-LSTM model before online estimation to reduce data requirement for model training and prediction. The search bounds for the number of neurons are set to [50, 200], while the learning rate is bounded within [1e-5, 1e-1]. The PSO hyperparameters are configured as follows: population size &#x3d; 10, maximum iterations &#x3d; 20, decay factor &#x3d; 0.5, contraction&#x2013;expansion coefficient &#x3d; 1.0, and random seed &#x3d; 42. The Adam optimizer is used for network training, where the training batch size is 64 and the number of iterations is 1,000. To confirm the validity of the proposed method, we compared it with other models, including Gaussian process regression (GPR) based on the radial basis kernel function (<xref ref-type="bibr" rid="B14">Ouyang et al., 2023</xref>), BP neural network based on the Levenberg&#x2013;Marquardt algorithm (<xref ref-type="bibr" rid="B7">Hua et al., 2023</xref>), and neural network based on PSO&#x2013;LSTM (<xref ref-type="bibr" rid="B20">Xiao et al., 2024</xref>). In order to observe the performance of the estimation models, the IMU data of 30 min without and with magnetometer calibration are compared with the IMU data estimated by the model mentioned above.</p>
<sec id="s4-1">
<label>4.1</label>
<title>Levenberg&#x2013;Marquardt-BP-based IMU estimation</title>
<p>The Levenberg&#x2013;Marquardt-BP neural network can accelerate the training process and is suitable for complex nonlinear regression problems. The goal of this algorithm is to adjust the network weight by minimizing the error function. The algorithm implementation process is as follows: 1) the gradient of the loss function is calculated. 2) The weights are updated according to the Levenberg&#x2013;Marquardt algorithm. 3) Iterations are repeated until convergence or the maximum number of iterations is reached. The model calculation results are given below, where the forecast results are colored yellow, the drift data are colored blue, and the correct data are colored green. The performance of LM-BP-based IMU estimation is shown in <xref ref-type="fig" rid="F8">Figure 8</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Performance of LM-BP-based IMU estimation.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g008.tif">
<alt-text content-type="machine-generated">Line chart titled &#x22;Test Set Prediction (imu1_Euler_z)&#x22; with three data series: blue for actual, orange for predicted, and green for pico_imu values. The x-axis is labeled &#x22;Sample,&#x22; the y-axis &#x22;imu1_Euler_z.&#x22; Statistics include RMSE of 10.2096, MAE of 7.1981, MBE of -5.1577, and R-squared of 0.7878.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-2">
<label>4.2</label>
<title>K-means-RBF-GPR-based IMU estimation</title>
<p>Gaussian process regression is a powerful non-parametric Bayesian regression method. It uses kernel functions to capture complex relationships of data by mapping the input space to a high-dimensional feature space. The cluster center of K-means (KM) is selected as the input feature point. The similarity between these feature points is calculated using the RBF kernel function. The model parameters are optimized by maximizing the posterior probability or minimizing the negative log-likelihood. The performance of KM-RBF-GPR-based IMU estimation is shown in <xref ref-type="fig" rid="F9">Figure 9</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Performance of K-means-RBF-GPR-based IMU estimation.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g009.tif">
<alt-text content-type="machine-generated">Line graph titled &#x22;Test Set Prediction (imu1_Euler_z)&#x22; showing actual, predicted, and pico_imu_Euler_z values over samples from 0 to 8000. Blue represents actual, orange is predicted, and green is pico_imu_Euler_z. Metrics include RMSE of 10.2264, MAE of 7.5576, MBE of -5.7296, and R squared of 0.7871. The vertical axis ranges from -100 to 75.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-3">
<label>4.3</label>
<title>PSO&#x2013;ML-LSTM-based IMU estimation</title>
<p>Two experiments are conducted, including the PSO&#x2013;LSTM- and the PSO&#x2013;ML-LSTM-based IMU estimations. The performances of both models are shown in <xref ref-type="fig" rid="F10">Figures 10</xref>, <xref ref-type="fig" rid="F11">11</xref>.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Performance of PSO&#x2013;LSTM-based IMU estimation.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g010.tif">
<alt-text content-type="machine-generated">Line graph showing test set prediction for imu1_Euler_z. The x-axis represents the sample number, and the y-axis represents imu1_Euler_z values. Three lines are plotted: Actual in blue, Predicted in orange, and pico_imu_Euler_z in green. Evaluation metrics include RMSE of 9.8345, MAE of 6.9113, MBE of -3.8944, and R-squared of 0.8032.</alt-text>
</graphic>
</fig>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Performance of PSO&#x2013;ML-LSTM-based IMU estimation.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g011.tif">
<alt-text content-type="machine-generated">Line graph titled &#x22;Test Set Prediction (imu1_Euler_z)&#x22; showing actual, predicted, and &#x22;pico_imu_Euler_z&#x22; values across samples. The blue line represents actual values, orange for predicted, and green for &#x22;pico_imu_Euler_z&#x22;. Key statistics include RMSE of 7.2721, MAE of 5.2758, MBE of -1.6680, and R squared of 0.8924. The x-axis is labeled &#x22;Sample&#x22; and the y-axis is &#x22;imu1_Euler_z&#x22;.</alt-text>
</graphic>
</fig>
<p>The results of the experiments are shown in <xref ref-type="table" rid="T3">Table 3</xref>. Although KM-RBF-GPR slightly outperforms LM-BP in terms of RMSE and MAE, it exhibits a larger bias (MBE) and relatively lower goodness of fit. The performance of PSO&#x2013;LSTM is superior to that of KM-RBF-GPR, particularly showing an improvement in the goodness of fit (<italic>R</italic>
<sup>2</sup>), but it still cannot surpass that of PSO&#x2013;ML-LSTM. The RMSE of PSO&#x2013;ML-LSTM is 8.3116, which is 1.9 units lower than that of LM-BP and 1.5 units lower than the RMSE of PSO&#x2013;LSTM. The MAE and <italic>R</italic>
<sup>2</sup> of PSO&#x2013;ML-LSTM are 6.1617 and 0.8594, indicating that PSO&#x2013;ML-LSTM has no significant systematic bias and fits the data well. The average cumulative error of PSO&#x2013;ML-LSTM is approximately 2.8&#xb0;, which is significantly better than that of the other three models.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Performance comparison.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">
<inline-formula id="inf89">
<mml:math id="m126">
<mml:mrow>
<mml:mtext>Method</mml:mtext>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf90">
<mml:math id="m127">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>M</mml:mi>
<mml:mi>S</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf91">
<mml:math id="m128">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>A</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf92">
<mml:math id="m129">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mi>B</mml:mi>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">
<inline-formula id="inf93">
<mml:math id="m130">
<mml:mrow>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="center">Average cumulative error</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<italic>LM-BP</italic>
</td>
<td align="center">10.2096</td>
<td align="center">7.1981</td>
<td align="center">&#x2212;5.157</td>
<td align="center">0.7878</td>
<td align="center">
<inline-formula id="inf94">
<mml:math id="m131">
<mml:mrow>
<mml:mn>3.2</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">
<italic>KM-RBF-GPR</italic>
</td>
<td align="center">10.2264</td>
<td align="center">10.5973</td>
<td align="center">&#x2212;5.7296</td>
<td align="center">0.7871</td>
<td align="center">
<inline-formula id="inf95">
<mml:math id="m132">
<mml:mrow>
<mml:mn>3.2</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">
<italic>PSO&#x2013;LSTM</italic>
</td>
<td align="center">9.8345</td>
<td align="center">6.9113</td>
<td align="center">&#x2212;3.8944</td>
<td align="center">0.8032</td>
<td align="center">
<inline-formula id="inf96">
<mml:math id="m133">
<mml:mrow>
<mml:mn>3.1</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="center">
<italic>PSO&#x2013;ML-LSTM</italic>
</td>
<td align="center">7.2721</td>
<td align="center">5.2758</td>
<td align="center">&#x2212;1.6680</td>
<td align="center">0.8924</td>
<td align="center">
<inline-formula id="inf97">
<mml:math id="m134">
<mml:mrow>
<mml:mn mathvariant="bold">2.8</mml:mn>
<mml:mo>&#xb0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-4">
<label>4.4</label>
<title>Ablation study</title>
<p>The ablation studies are conducted to evaluate the effects of the Kalman filter and random-forest feature selection. The results are shown in the <xref ref-type="fig" rid="F12">Figures 12</xref>, <xref ref-type="fig" rid="F13">13</xref>. Compared with the result shown in figure, the results shown in <xref ref-type="fig" rid="F8">Figure 8</xref> indicate that the use of random-forest feature selection and Kalman filter can achieve a better performance of RMSE, MAE, MBE and <italic>R</italic>
<sup>2</sup>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Performance of PSO&#x2013;ML-LSTM without random forest feature selection.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g012.tif">
<alt-text content-type="machine-generated">Line graph titled &#x22;Test Set Prediction (imu1_Euler_z)&#x22; displaying actual values in blue, predicted values in orange, and pico_imu_Euler_z in green. Metrics include RMSE&#x3d;8.6173, MAE&#x3d;6.1075, MBE&#x3d;-1.5845, and R&#xB2;&#x3d;0.8488. The vertical axis represents imu1_Euler_z ranging from -100 to 75, and the horizontal axis represents samples from 0 to 8000.</alt-text>
</graphic>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>The performance of PSO-ML-LSTM without KF.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g013.tif">
<alt-text content-type="machine-generated">Line graph titled &#x22;Test Set Prediction (imu1_Euler_z)&#x22; showing actual vs. predicted values. Blue represents actual data, orange the predicted, and green pico_imu_Euler_z. The x-axis is labeled &#x22;Sample&#x22; and the y-axis &#x22;imu1_Euler_z.&#x22; Performance metrics include RMSE&#x3d;8.3116, MAE&#x3d;6.1617, MBE&#x3d;-4.1606, and R-squared&#x3d;0.8594.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-5">
<label>4.5</label>
<title>Robot remote control experiment</title>
<p>A manipulator teleoperation experiment was conducted. By comparing the arm angles of the manipulator before and after IMU error compensation, the effectiveness of the proposed method was verified. The manipulator used was the 7-DOF manipulator described in the previous section, whose structure is shown in <xref ref-type="fig" rid="F14">Figure 14</xref>. <xref ref-type="fig" rid="F15">Figure 15</xref> shows the arm angle conditions after 20 min, including 1) the manipulator&#x2019;s arm angle without compensation (green curve), 2) the arm angle of the human operator (yellow curve), and 3) the manipulator&#x2019;s arm angle using the proposed method (red curve). Without IMU error correction, the deviation between the manipulator&#x2019;s arm angle and the operator&#x2019;s arm angle is approximately 30&#xb0;, and the deviation exhibits a nonlinear variation. After applying the proposed approach, the arm angle deviation is significantly reduced. The maximum deviation decreased from 30&#xb0; to 10&#xb0;, and the variation trends followed similar patterns.</p>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>Seven-DOF manipulator.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g014.tif">
<alt-text content-type="machine-generated">A robotic arm with exposed wiring and joints is positioned against a dark background. The arm features multiple articulated segments and visible cables, suggesting it is either under construction or undergoing repairs.</alt-text>
</graphic>
</fig>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>Robot arm angle under remote control.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g015.tif">
<alt-text content-type="machine-generated">Line graph comparing actual, predicted, and real arm angles in degrees over time. Solid green, dashed purple, and dotted orange lines represent actual, predicted, and real angles, respectively, with fluctuating trends across the graph.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F16">Figure 16</xref> shows the robot end-effector position, including 1) the actual end-effector position without compensation (green curve), 2) the operator wrist position (blue curve), and 3) the predicted position of the end-effector using the proposed approach (purple curve). Without IMU error correction, the position deviation between the end-effector position and the operator&#x2019;s wrist is approximately 0.25 m, and the angle of the end-effector differs significantly from that of the operator&#x2019;s wrist. After applying the proposed approach, the position deviation is reduced to 0.13 m, and the end-effector&#x2019;s angle closely matches the operator&#x2019;s wrist.</p>
<fig id="F16" position="float">
<label>FIGURE 16</label>
<caption>
<p>Robot end-effector position under remote control.</p>
</caption>
<graphic xlink:href="frobt-12-1638853-g016.tif">
<alt-text content-type="machine-generated">Three graphs compare trajectories over ten seconds. The first graph in green shows the actual position on the XY plane. The second graph in purple displays the predicted position on the same plane. The third graph in blue illustrates the operator wrist trajectory on the XZ plane. Each graph has its respective legend to differentiate the positions.</alt-text>
</graphic>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<label>5</label>
<title>Conclusion</title>
<p>This paper proposes a PSO-based modulated LSTM for online estimation of the IMU state in robot teleoperation. Experimental results show that the proposed method can effectively estimate the true attitude of the IMU, thus reducing the cumulative error of the IMU and the absolute error in teleoperation. However, the proposed method still has some limitations. For example, there is room for improvement in the RMSE and cumulative error.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>RZ: Writing &#x2013; original draft, Writing &#x2013; review and editing. YL: Data curation, Investigation, Writing &#x2013; review and editing, Writing &#x2013; original draft. AZ: Funding acquisition, Resources, Visualization, Writing &#x2013; original draft, Writing &#x2013; review and editing. TZ: Methodology, Supervision, Validation, Writing &#x2013; original draft, Writing &#x2013; review and editing. YG: Formal analysis, Funding acquisition, Resources, Supervision, Validation, Writing &#x2013; original draft, Writing &#x2013; review and editing. ZZ: Writing &#x2013; review and editing. SC: Conceptualization, Methodology, Project administration, Software, Supervision, Writing &#x2013; original draft, Writing &#x2013; review and editing.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>Authors RZ and AZ were employed by Guangzhou Automobile Group Co. Ltd.</p>
<p>The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s10">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<fn-group>
<fn fn-type="custom" custom-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1807895/overview">Gustavo J. G. Lahr</ext-link>, Hospital Israelita Albert Einstein, Brazil</p>
</fn>
<fn fn-type="custom" custom-type="reviewed-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1734597/overview">Xin Zhang</ext-link>, University of Portsmouth, United Kingdom</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3098751/overview">Hamidreza Raei</ext-link>, Italian Institute of Technology (IIT), Italy</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Togo</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yokoi</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>A layered sEMG&#x2013;FMG hybrid sensor for hand motion recognition from forearm muscle activities</article-title>. <source>IEEE Trans. Human-Mach. Syst.</source> <volume>53</volume> (<issue>5</issue>), <fpage>935</fpage>&#x2013;<lpage>944</lpage>. <pub-id pub-id-type="doi">10.1109/THMS.2023.3287594</pub-id>
</mixed-citation>
</ref>
<ref id="B2">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cheng</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Dai</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Efficient and precise homo-hetero teleoperation based on an optimized upper limb exoskeleton</article-title>. <source>IEEE/ASME Trans. Mechatron.</source>, <fpage>1</fpage>&#x2013;<lpage>13</lpage>. <pub-id pub-id-type="doi">10.1109/TMECH.2024.3479873</pub-id>
</mixed-citation>
</ref>
<ref id="B3">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Darvish</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Penco</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Ramos</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Cisneros</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Pratt</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yoshida</surname>
<given-names>E.</given-names>
</name>
<etal/>
</person-group> (<year>2023</year>). <article-title>Teleoperation of humanoid robots: a survey</article-title>. <source>IEEE Trans. Robot.</source> <volume>39</volume> (<issue>3</issue>), <fpage>1706</fpage>&#x2013;<lpage>1727</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2023.3236952</pub-id>
</mixed-citation>
</ref>
<ref id="B4">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Faria</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Ferreira</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Erlhagen</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Monteiro</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bicho</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Position-based kinematics for 7-DoF serial manipulators with global configuration control, joint limit and singularity avoidance</article-title>. <source>Mech. Mach. Theory</source> <volume>121</volume>, <fpage>317</fpage>&#x2013;<lpage>334</lpage>. <pub-id pub-id-type="doi">10.1016/j.mechmachtheory.2017.10.025</pub-id>
</mixed-citation>
</ref>
<ref id="B5">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Lian</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>DeepVIO: self-Supervised deep learning of monocular visual inertial odometry using 3D geometric constraints</article-title>,&#x201d; in <conf-name>2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Macau, China</conf-loc>, <conf-date>03-08 November 2019</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>6906</fpage>&#x2013;<lpage>6913</lpage>.</mixed-citation>
</ref>
<ref id="B6">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hosseinyalamdary</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Deep kalman filter: simultaneous multi-sensor integration and modelling; A GNSS/IMU case study</article-title>. <source>Sensors</source> <volume>18</volume> (<issue>5</issue>), <fpage>1316</fpage>. <pub-id pub-id-type="doi">10.3390/s18051316</pub-id>
</mixed-citation>
</ref>
<ref id="B7">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hua</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kr&#xf3;lczyk</surname>
<given-names>G. M.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Positioning a magnetically controlled capsule robot based on double-layer symmetric sensor array</article-title>. <source>IEEE Trans. Instrum. Meas.</source> <volume>72</volume>, <fpage>1</fpage>&#x2013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1109/TIM.2023.3300426</pub-id>
</mixed-citation>
</ref>
<ref id="B8">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kim</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yoon</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ko</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Robust methods for estimating the orientation and position of IMU and MARG sensors</article-title>. <source>Electron. Lett.</source> <volume>57</volume> (<issue>21</issue>), <fpage>816</fpage>&#x2013;<lpage>818</lpage>. <pub-id pub-id-type="doi">10.1049/ell2.12263</pub-id>
</mixed-citation>
</ref>
<ref id="B9">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hendrich</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ruppel</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>A dexterous hand-arm teleoperation system based on hand pose estimation and active vision</article-title>. <source>IEEE Trans. Cybern.</source> <volume>54</volume> (<issue>3</issue>), <fpage>1417</fpage>&#x2013;<lpage>1428</lpage>. <pub-id pub-id-type="doi">10.1109/TCYB.2022.3207290</pub-id>
</mixed-citation>
</ref>
<ref id="B10">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Bi</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Gan</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Robust predictive control for EEG-based brain&#x2013;robot teleoperation</article-title>. <source>IEEE Trans. Intell. Transp. Syst.</source> <volume>25</volume> (<issue>8</issue>), <fpage>9130</fpage>&#x2013;<lpage>9140</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2024.3359216</pub-id>
</mixed-citation>
</ref>
<ref id="B11">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Pang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Su</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2025</year>). <article-title>An origami-wheeled robot with variable width and enhanced sand walking versatility</article-title>. <source>Thin-Walled Struct.</source> <volume>206</volume> (<issue>part A</issue>), <fpage>112645</fpage>. <pub-id pub-id-type="doi">10.1016/j.tws.2024.112645</pub-id>
</mixed-citation>
</ref>
<ref id="B12">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>An improved UKF for IMU state estimation based on modulation LSTM neural network</article-title>. <source>IEEE Trans. Intell. Transp. Syst.</source> <volume>25</volume> (<issue>9</issue>), <fpage>10702</fpage>&#x2013;<lpage>10711</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2024.3368040</pub-id>
</mixed-citation>
</ref>
<ref id="B13">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Si</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zeng</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Enhancing human&#x2013;robot collaboration: supernumerary robotic limbs for object balance</article-title>. <source>IEEE Trans. Syst. Man. Cybern.</source> <volume>55</volume> (<issue>2</issue>), <fpage>1334</fpage>&#x2013;<lpage>1347</lpage>. <pub-id pub-id-type="doi">10.1109/TSMC.2024.3501389</pub-id>
</mixed-citation>
</ref>
<ref id="B14">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ouyang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zou</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zou</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Adaptive hybrid-kernel function based gaussian process regression for nonparametric modeling of ship maneuvering motion</article-title>. <source>Ocean. Eng.</source> <volume>268</volume>, <fpage>113373</fpage>. <pub-id pub-id-type="doi">10.1016/j.oceaneng.2022.113373</pub-id>
</mixed-citation>
</ref>
<ref id="B15">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Penco</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Scianca</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Modugno</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Lanari</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Oriolo</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Ivaldi</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>A multimode teleoperation framework for humanoid loco-manipulation: an application for the iCub robot</article-title>. <source>IEEE Robot. Autom. Mag.</source> <volume>26</volume> (<issue>4</issue>), <fpage>73</fpage>&#x2013;<lpage>82</lpage>. <pub-id pub-id-type="doi">10.1109/MRA.2019.2941245</pub-id>
</mixed-citation>
</ref>
<ref id="B16">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>&#x160;kulj</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Vrabi&#x10d;</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Podr&#x17e;aj</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A wearable IMU system for flexible teleoperation of a collaborative industrial robot</article-title>. <source>Sensors</source> <volume>21</volume> (<issue>17</issue>), <fpage>5871</fpage>. <pub-id pub-id-type="doi">10.3390/s21175871</pub-id>
</mixed-citation>
</ref>
<ref id="B17">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tsitos</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Dagioglou</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>Handling vision noise through robot motion control in a real-time teleoperation system</article-title>,&#x201d; in <conf-name>2022 30th Mediterranean Conference on Control and Automation (MED)</conf-name>, <conf-loc>Vouliagmeni, Greece</conf-loc>, <conf-date>28 June 2022 - 01 July 2022</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>624</fpage>&#x2013;<lpage>629</lpage>.</mixed-citation>
</ref>
<ref id="B18">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Murphy</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Kenney</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Ramos</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>A comparison between joint space and task space mappings for dynamic teleoperation of an anthropomorphic robotic arm in reaction tests</article-title>,&#x201d; in <conf-name>2021 IEEE International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Xi&#x2019;an, China</conf-loc>, <conf-date>30 May 2021 - 05 June 2021</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>2846</fpage>&#x2013;<lpage>2852</lpage>.</mixed-citation>
</ref>
<ref id="B19">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yong</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>L.</given-names>
</name>
<etal/>
</person-group> (<year>2023</year>). <article-title>Whole-body teleoperation control of dual-arm robot using sensor fusion</article-title>. <source>Biomimetics</source> <volume>8</volume> (<issue>8</issue>), <fpage>591</fpage>. <pub-id pub-id-type="doi">10.3390/biomimetics8080591</pub-id>
</mixed-citation>
</ref>
<ref id="B20">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Fu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Joint torque prediction of industrial robots based on PSO-LSTM deep learning</article-title>. <source>Ind. Robot.</source> <volume>51</volume> (<issue>3</issue>), <fpage>501</fpage>&#x2013;<lpage>510</lpage>. <pub-id pub-id-type="doi">10.1108/IR-08-2023-0191</pub-id>
</mixed-citation>
</ref>
<ref id="B21">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Cai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Robots&#x2019; state estimation and observability analysis based on statistical motion models</article-title>. <source>IEEE Trans. Contr. Syst. Technol.</source> <volume>30</volume> (<issue>5</issue>), <fpage>2030</fpage>&#x2013;<lpage>2045</lpage>. <pub-id pub-id-type="doi">10.1109/TCST.2021.3133080</pub-id>
</mixed-citation>
</ref>
<ref id="B22">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>C.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>DIDO: deep inertial quadrotor dynamical odometry</article-title>. <source>IEEE Robot. Autom. Lett.</source> <volume>7</volume> (<issue>4</issue>), <fpage>9083</fpage>&#x2013;<lpage>9090</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2022.3189168</pub-id>
</mixed-citation>
</ref>
<ref id="B23">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Human-robot kinematics mapping method based on dynamic equivalent points</article-title>. <source>Ind. Robot.</source> <volume>50</volume> (<issue>2</issue>), <fpage>219</fpage>&#x2013;<lpage>233</lpage>. <pub-id pub-id-type="doi">10.1108/IR-02-2022-0056</pub-id>
</mixed-citation>
</ref>
</ref-list>
</back>
</article>