<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="review-article" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">cobot</journal-id>
            <journal-title-group>
                <journal-title>Cobot</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2752-5813</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/cobot.17444.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Review</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>A review of dynamic parameters identification for manipulator control</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 1 approved, 1 approved with reservations]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Huang</surname>
                        <given-names>Wenhui</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Investigation</role>
                    <role content-type="http://credit.niso.org/">Resources</role>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-7305-0816</uri>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Min</surname>
                        <given-names>Huasong</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Funding Acquisition</role>
                    <role content-type="http://credit.niso.org/">Project Administration</role>
                    <role content-type="http://credit.niso.org/">Supervision</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-4845-0097</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Guo</surname>
                        <given-names>Yixuan</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Liu</surname>
                        <given-names>Mingxin</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Institute of Robotics and Intelligent Systems, Institute of Robotics and Intelligent Systems, College of Information Science and Engineering, Wuhan University of Science and Technology, Wuhan, 430000, China</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:mhuasong@wust.edu.cn">mhuasong@wust.edu.cn</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>The article processing charge for this article was funded by AUBO.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>21</day>
                <month>1</month><year>2022</year>
            </pub-date>
            <pub-date pub-type="collection"><year>2022</year>
            </pub-date><volume>1</volume>
            <elocation-id>5</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>5</day>
                    <month>1</month><year>2022</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#xA9; 2022 Huang W et al.</copyright-statement>
                <copyright-year>2022</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://collaborative-robot.org/articles/1-5/pdf"/>
            <abstract>
                <p>Due to the important role of the manipulator dynamic model in manipulation control, the identification of the dynamic parameters of manipulators has become a research hotspot once again. In this paper, we present an overview of the modeling of manipulator dynamics, the optimization methods of excitation trajectory, the identification methods for dynamic parameters, and the identification of friction model parameters. First, the process and basic methods of identification of manipulation dynamic parameters are summarized, and the optimization methods for excitation trajectory are analyzed in detail. Further, friction model parameter identification and the physical feasibility of dynamic parameters are discussed. These are research hotspots associated with the identification of dynamic parameters of manipulators. The backgrounds and solutions of the problems of physical feasibility and identification of friction parameters are reviewed in this paper. Finally, neural networks and deep learning methods are discussed. The neural networks and deep learning methods have been used to improve the accuracy of identification. However, deep learning methods and neural networks need more in-depth analysis and experiments. At present, the instrumental variable method with complete physical feasibility constraints is an optimal choice for dynamic parameter identification. Moreover, this review aims to present the important theoretical foundations and research hotspots for the identification of manipulation dynamic parameters and help researchers determine future research areas.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>Manipulator dynamic</kwd>
                <kwd>dynamic parameters identification</kwd>
                <kwd>friction model</kwd>
                <kwd>physical feasibility</kwd>
                <kwd>deep learning</kwd>
            </kwd-group>
            <funding-group>
                <award-group id="fund-1">
                    <funding-source>National Natural Science Foundation of China</funding-source>
                    <award-id>No.62073249</award-id>
                </award-group>
                <award-group id="fund-2">
                    <funding-source>Hubei Province Technology Innovation</funding-source>
                    <award-id>No.2019AAA071</award-id>
                </award-group>
                <funding-statement>This work was partly supported by National Natural Science Foundation of China (Grant No. 62073249), and is a major project of Hubei Province Technology Innovation (Grant No. 2019AAA071).  </funding-statement>
                <funding-statement>
                    <italic>The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</italic>
                </funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>1 Introduction</title>
            <p>Force perception and force control have been the key factors for the development of human-robot collaboration. In practical terms, the mobile manipulators are the next step after the collaborative manipulator, and the base of the manipulator is flexible, which varies the contact force between the manipulator and the environment
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>
                </sup>. Thus, a high precision dynamic model is necessary for dynamic control of manipulator dynamics, and it is fundamental for many force perception and force control methods, such as sensorless collisions detection and impedance control
                <sup>
                    <xref ref-type="bibr" rid="ref-2">2</xref>,
                    <xref ref-type="bibr" rid="ref-3">3</xref>
                </sup>. The precision of the dynamic parameters, which describe the dynamic model, are the key factor influencing the accuracy of the dynamic model. However, dynamic parameters are not always provided by the robot manufacturers, or else those parameters provided by the manufacturers might not be precise enough. The manipulator operators must therefore master the methods of obtaining the dynamic parameters, which is the key skill for operators to develop a high-performance manipulator dynamic control system.</p>
            <p>The methods of obtaining the dynamic parameters can be divided into three categories
                <sup>
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>: CAD (Computer-Aided Design) technology, physical experiments, and identification methods that estimate dynamic parameters with special experiments. Due to the manufacturing error, the accuracy of the estimated parameter of CAD technology is low
                <sup>
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>. The physical experiments detect the dynamic parameters of links separately, which ignores the assembly errors and joint characteristics. The identification methods can estimate the dynamic parameters of manipulators simply and accurately, and identification methods have been used and researched extensively
                <sup>
                    <xref ref-type="bibr" rid="ref-2">2</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>.</p>
            <p>Usually, the process of dynamic parameter identification can be divided into five steps
                <sup>
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>: I model formulation, II excitation trajectory design, III signal processing, IV parameter identification, V verification. The dynamic model equation is converted to an identifiable form in the process of formulation,  and the regressor matrix in the identified form is a linear matrix
                <sup>
                    <xref ref-type="bibr" rid="ref-5">5</xref>,
                    <xref ref-type="bibr" rid="ref-6">6</xref>
                </sup>. The purpose of excitation trajectory design is to excite dynamic parameters and reduce the negative impact of noise
                <sup>
                    <xref ref-type="bibr" rid="ref-7">7</xref>,
                    <xref ref-type="bibr" rid="ref-8">8</xref>
                </sup>. In signal processing, filtering is a process that removes noise in the sampled encoder or current sensor data. Moreover, some singular values in the sampled data set must be filtered to avoid identification errors. Then, numerical methods have been used to estimate dynamic parameter values during parameters identification
                <sup>
                    <xref ref-type="bibr" rid="ref-6">6</xref>,
                    <xref ref-type="bibr" rid="ref-9">9</xref>
                </sup>. Finally, the accuracy of identified dynamic parameters is verified with test trajectory.</p>
            <p>In dynamic parameters identification, there are another two research areas, namely friction parameter identification and physical feasibility of dynamic parameters. Friction is an additional force in the dynamic model, which can affect the accuracy of the dynamic model. However, the friction force is nonlinear, and the friction force cannot be modeled directly by the analytical method. Moreover, indirect identification methods or specific identification experiments must be used to identify the friction parameters. For the physical feasibility problem, additional constraints are used to ensure the physical feasibility of dynamic parameters, to improve the reliability of the identified dynamic model.</p>
            <p>This paper reviews the works on dynamic parameter identification of serial manipulation. The paper is organized as follows: after a summary of the dynamic identification process (
                <xref ref-type="other" rid="s2">Section 2</xref>), the physical feasibility problems of dynamic parameters are discussed in 
                <xref ref-type="other" rid="s3">Section 3</xref>. The parameter identification methods of the friction model are surveyed in 
                <xref ref-type="other" rid="s4">Section 4</xref>. In 
                <xref ref-type="other" rid="s5">Section 5</xref>, deep learning and neural network methods are discussed. Finally, a summary is presented.</p>
        </sec>
        <sec>
            <title>2 Model and identification algorithm</title>
            <sec>
                <title>2.1 Dynamic model and dynamic parameters</title>
                <p id="s2">An identifiable mathematical formulation of the dynamic model of manipulators is necessary for dealing with problems of identification of dynamic parameters. First, an essential dynamic model must be calculated. The dynamic model can be calculated by several methods such as the Newton-Euler method, Lagrangian method, or energy model
                    <sup>
                        <xref ref-type="bibr" rid="ref-2">2</xref>
                    </sup>. The Newton-Euler method and Lagrangian method are commonly used. No matter which of these methods is used, a standard form of manipulator dynamic in joint space could be calculated, as shown in 
                    <xref ref-type="other" rid="e1">Equation (1)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-2">2</xref>
                    </sup> (the friction force is considered in 
                    <xref ref-type="other" rid="s4">Section 4</xref>).</p>
                <disp-formula id="e1">
                    <mml:math display="block" id="math1">
                        <mml:mspace width="10em"/>
                        <mml:mrow>
                            <mml:mi>&#x3C4;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>M</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>q</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo>+</mml:mo>
                            <mml:mi>V</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>q</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2022;</mml:mo>
                            </mml:mover>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>+</mml:mo>
                            <mml:mi>G</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>q</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="13.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where, 
                    <italic toggle="yes">M</italic>(
                    <italic toggle="yes">q</italic>) is the inertial matrix, 
                    <italic toggle="yes">V</italic>(
                    <italic toggle="yes">q</italic>, 
                    <inline-formula>
                        <mml:math display="inline" id="M1">
                            <mml:mover accent="true">
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2D9;</mml:mo>
                            </mml:mover>
                        </mml:math>
                    </inline-formula>) is the Coriolis and centripetal matrix, 
                    <italic toggle="yes">G</italic>(
                    <italic toggle="yes">q</italic>) is the gravity force, 
                    <italic toggle="yes">q</italic> is the generalized joint position, and 
                    <italic toggle="yes">&#x3C4;</italic> is the generalized joint force. 
                    <xref ref-type="other" rid="e1">Equation (1)</xref> cannot be directly used to identify the dynamic parameters, and the dynamic parameters must be extracted separately as vectors. Thus, Atkeson
                    <sup>
                        <xref ref-type="bibr" rid="ref-9">9</xref>
                    </sup> proposed a standard identified expression of the dynamic model, as 
                    <xref ref-type="other" rid="e1">Equation (2)</xref>.</p>
                <disp-formula id="e2">
                    <mml:math display="block" id="math2">
                        <mml:mspace width="15em"/>
                        <mml:mrow>
                            <mml:mi>&#x3C4;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>Y</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>q</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2022;</mml:mo>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mi>X</mml:mi>
                        </mml:mrow>
                        <mml:mspace width="14em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>2</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where 
                    <italic toggle="yes">X</italic> is the manipulator dynamic parameters vector, 
                    <italic toggle="yes">n</italic> is the number of links, 
                    <italic toggle="yes">Y</italic> is the regressor matrix calculated from the 
                    <xref ref-type="other" rid="e1">Equation (1)</xref>.</p>
                <p>The dynamic parameters of link 
                    <italic toggle="yes">i</italic> contains: the inertial matrix, as shown in 
                    <xref ref-type="other" rid="e3">Equation (3)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-2">2</xref>
                    </sup>, 
                    <italic toggle="yes">m
                        <sub>i</sub>
                    </italic> is the weight of link 
                    <italic toggle="yes">i</italic>, (
                    <italic toggle="yes">mx
                        <sub>i</sub>
                    </italic>, 
                    <italic toggle="yes">my
                        <sub>i</sub>
                    </italic>, 
                    <italic toggle="yes">mz
                        <sub>i</sub>
                    </italic>) is the first moment of link 
                    <italic toggle="yes">i</italic>, and (
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic>, 
                    <italic toggle="yes">y
                        <sub>i</sub>
                    </italic>, 
                    <italic toggle="yes">z
                        <sub>i</sub>
                    </italic>) is the centroid of link 
                    <italic toggle="yes">i</italic>.</p>
                <disp-formula id="e3">
                    <mml:math id="math3">
                        <mml:mrow>
                            <mml:msub>
                                <mml:mi>r</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo>[</mml:mo>
                                    <mml:mrow>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>r</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo>,</mml:mo>
                                                    <mml:mi>x</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>r</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo>,</mml:mo>
                                                    <mml:mi>y</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>r</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo>,</mml:mo>
                                                    <mml:mi>z</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                    </mml:mrow>
                                    <mml:mo>]</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mi>&#x2009;</mml:mi>
                                </mml:mrow>
                            </mml:msup>
                        </mml:mrow>
                    </mml:math>
                </disp-formula>
                <p>The regressor matrix is a linear matrix, which makes the dynamic parameters redundant. Thus, dynamic parameters have been divided into two categories: identified parameter and unidentified parameter
                    <sup>
                        <xref ref-type="bibr" rid="ref-5">5</xref>,
                        <xref ref-type="bibr" rid="ref-6">6</xref>
                    </sup>. Unidentified dynamic parameters do not affect the torque calculation of dynamic model of manipulators. Conversely, when the identifiable parameters change, the calculation results of the dynamic model will change with the values of identifiable dynamic parameters. Different identifiable dynamic parameters determine different dynamic models. Therefore, a dynamic model can be uniquely determined by a set of identifiable dynamic parameters, which are called base parameters
                    <sup>
                        <xref ref-type="bibr" rid="ref-10">10</xref>
                    </sup>. The set that contains all dynamic parameters are called standard dynamic parameters, expressed as 
                    <italic toggle="yes">&#x3B4;</italic>. There are some columns of regressor matrix that have all zero elements or can be expressed linearly by other columns, thus, 
                    <xref ref-type="other" rid="e2">Equation (2)</xref> can be rewritten as 
                    <xref ref-type="other" rid="e3">Equation (3)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-11">11</xref>
                    </sup>, where 
                    <inline-formula>
                        <mml:math display="inline" id="M2">
                            <mml:mrow>
                                <mml:msubsup>
                                    <mml:mi>&#x3B4;</mml:mi>
                                    <mml:mi>b</mml:mi>
                                    <mml:mi>T</mml:mi>
                                </mml:msubsup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> is the set of base parameters, 
                    <inline-formula>
                        <mml:math display="inline" id="M3">
                            <mml:mrow>
                                <mml:msubsup>
                                    <mml:mi>&#x3B4;</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>T</mml:mi>
                                </mml:msubsup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> is the set of unidentified dynamic parameters. 
                    <italic toggle="yes">Y
                        <sub>b</sub>
                    </italic> has 
                    <italic toggle="yes">n
                        <sub>b</sub>
                    </italic> linearly independent columns, and 
                    <italic toggle="yes">Y
                        <sub>d</sub>
                    </italic> has 
                    <italic toggle="yes">n
                        <sub>d</sub>
                    </italic> remaining null and dependent columns. 
                    <italic toggle="yes">n</italic> = 
                    <italic toggle="yes">n
                        <sub>b</sub>
                    </italic> + 
                    <italic toggle="yes">n
                        <sub>d</sub>
                    </italic> is the total number of columns of the regression matrix 
                    <italic toggle="yes">Y</italic>, which is also the total number of dynamic parameters.</p>
                <disp-formula id="e3a">
                    <mml:math display="block" id="math4">
                        <mml:mspace width="11.5em"/>
                        <mml:mrow>
                            <mml:mi>&#x3C4;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mo stretchy="false">[</mml:mo>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>b</mml:mi>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">]</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="false">[</mml:mo>
                                    <mml:msubsup>
                                        <mml:mi>&#x3B4;</mml:mi>
                                        <mml:mi>b</mml:mi>
                                        <mml:mi>T</mml:mi>
                                    </mml:msubsup>
                                    <mml:mo>,</mml:mo>
                                    <mml:msubsup>
                                        <mml:mi>&#x3B4;</mml:mi>
                                        <mml:mi>d</mml:mi>
                                        <mml:mi>T</mml:mi>
                                    </mml:msubsup>
                                    <mml:mo stretchy="false">]</mml:mo>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mo>,</mml:mo>
                            <mml:mi>&#x3B4;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mo stretchy="false">[</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mi>b</mml:mi>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">]</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="10em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>3</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The 
                    <italic toggle="yes">Y
                        <sub>d</sub>
                    </italic> can be written as a linear combination of 
                    <italic toggle="yes">Y
                        <sub>b</sub>
                    </italic>, as shown in 
                    <xref ref-type="other" rid="e4">Equation (4)</xref>, 
                    <italic toggle="yes">K
                        <sub>d</sub>
                    </italic> is a constant matrix. Thus, the base parameters can be calculated as 
                    <xref ref-type="other" rid="e5">Equation (5)</xref>, where 
                    <italic toggle="yes">&#x3B2;</italic> is the set of base parameters.</p>
                <disp-formula id="e4">
                    <mml:math display="block" id="math5">
                        <mml:mspace width="14.5em"/>
                        <mml:mrow>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>K</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>b</mml:mi>
                            </mml:msub>
                        </mml:mrow>
                        <mml:mspace width="16em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>4</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e5">
                    <mml:math display="block" id="math6">
                        <mml:mspace width="15em"/>
                        <mml:mrow>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mi>b</mml:mi>
                            </mml:msub>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                                <mml:mi>K</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                        </mml:mrow>
                        <mml:mspace width="14.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>5</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Moreover, the base parameters are the linear combination of the standard dynamic parameters, as 
                    <xref ref-type="other" rid="e6">Equation (6)</xref>, where, 
                    <italic toggle="yes">P
                        <sub>b</sub>
                    </italic> and 
                    <italic toggle="yes">P
                        <sub>d</sub>
                    </italic> are the permutation matrix of 
                    <italic toggle="yes">Y
                        <sub>b</sub>
                    </italic> and 
                    <italic toggle="yes">Y
                        <sub>d</sub>
                    </italic>, 
                    <italic toggle="yes">Y
                        <sub>b</sub>
                    </italic> = 
                    <italic toggle="yes">YP
                        <sub>b</sub>
                    </italic>, 
                    <italic toggle="yes">Y
                        <sub>d</sub>
                    </italic> = 
                    <italic toggle="yes">YP
                        <sub>d</sub>
                    </italic>.</p>
                <disp-formula id="e6">
                    <mml:math display="block" id="math7">
                        <mml:mspace width="13em"/>
                        <mml:mrow>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>K</mml:mi>
                            <mml:mi>&#x3B4;</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:mi>K</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>P</mml:mi>
                                <mml:mi>b</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msubsup>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                                <mml:mi>K</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:msubsup>
                                <mml:mi>P</mml:mi>
                                <mml:mi>d</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msubsup>
                        </mml:mrow>
                        <mml:mspace width="12.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>6</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Numerical analysis methods are used to extract the base parameters from standard dynamic parameters in research, such as QR decomposition method or Singular Value Decomposition(SVD) method
                    <sup>
                        <xref ref-type="bibr" rid="ref-6">6</xref>
                    </sup>. We respectively describe the process of QR decomposition and SVD method, and briefly describe the application of numerical methods in the least-squares problem, to provide a reference for research and engineering of dynamic parameters identification.</p>
                <p>Least square problem
                    <sup>
                        <xref ref-type="bibr" rid="ref-9">9</xref>
                    </sup>:</p>
                <disp-formula>
                    <mml:math display="block" id="math8">
                        <mml:mspace width="14em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mi>&#x3B5;</mml:mi>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mi>X</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="14em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>7</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where the 
                    <italic toggle="yes">&#x3B5;</italic> is the error between sampled torque and simulated torque.</p>
                <p>QR decomposition:</p>
                <p>The basic representation of QR decomposition is shown in 
                    <xref ref-type="other" rid="e8">Equation (8)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-6">6</xref>,
                        <xref ref-type="bibr" rid="ref-9">9</xref>
                    </sup>, 
                    <italic toggle="yes">Q</italic> is an orthogonal matrix. Therefore, the least squares problem can be rewritten as 
                    <xref ref-type="other" rid="e10">Equation (10)</xref> according to the 
                    <xref ref-type="other" rid="e9">Equation (9)</xref>, where 
                    <inline-formula>
                        <mml:math display="inline" id="M4">
                            <mml:mrow>
                                <mml:msubsup>
                                    <mml:mi>Q</mml:mi>
                                    <mml:mn>2</mml:mn>
                                    <mml:mi>T</mml:mi>
                                </mml:msubsup>
                                <mml:mi>&#x3C4;</mml:mi>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> is constant. The 
                    <xref ref-type="other" rid="e11">Equation (11)</xref> is the simplified form of 
                    <xref ref-type="other" rid="e10">Equation (10)</xref>.</p>
                <disp-formula id="e8">
                    <mml:math display="block" id="math9">
                        <mml:mspace width="13em"/>
                        <mml:mrow>
                            <mml:mi>Y</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>Q</mml:mi>
                            <mml:mi>R</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mo stretchy="false">[</mml:mo>
                            <mml:msub>
                                <mml:mi>Q</mml:mi>
                                <mml:mn>1</mml:mn>
                            </mml:msub>
                            <mml:mspace width="0.2em"/>
                            <mml:msub>
                                <mml:mi>Q</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msub>
                            <mml:mo stretchy="false">]</mml:mo>
                            <mml:mrow>
                                <mml:mo>[</mml:mo>
                                <mml:mtable columnalign="left">
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:msub>
                                                <mml:mi>R</mml:mi>
                                                <mml:mn>1</mml:mn>
                                            </mml:msub>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mn>0</mml:mn>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                                <mml:mo>]</mml:mo>
                            </mml:mrow>
                        </mml:mrow>
                        <mml:mspace width="13em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>8</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e9">
                    <mml:math display="block" id="math10">
                        <mml:mspace width="8em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi>Q</mml:mi>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                            <mml:mi>&#x3B5;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:msup>
                                        <mml:mi>Q</mml:mi>
                                        <mml:mi>T</mml:mi>
                                    </mml:msup>
                                    <mml:mi>&#x3B5;</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msup>
                                <mml:mi>Q</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>&#x3B5;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x3B5;</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>Q</mml:mi>
                            <mml:msup>
                                <mml:mi>Q</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>&#x3B5;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x3B5;</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>&#x3B5;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mi>&#x3B5;</mml:mi>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="7em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>9</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e10">
                    <mml:math display="block" id="math11">
                        <mml:mspace width="8em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mi>&#x3B5;</mml:mi>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi>Q</mml:mi>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msup>
                                                <mml:mi>Q</mml:mi>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mi>&#x3B2;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mtable columnalign="left">
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msubsup>
                                                                <mml:mi>Q</mml:mi>
                                                                <mml:mn>1</mml:mn>
                                                                <mml:mi>T</mml:mi>
                                                            </mml:msubsup>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msubsup>
                                                                <mml:mi>Q</mml:mi>
                                                                <mml:mn>2</mml:mn>
                                                                <mml:mi>T</mml:mi>
                                                            </mml:msubsup>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                </mml:mtable>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mtable columnalign="left">
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msub>
                                                                <mml:mi>R</mml:mi>
                                                                <mml:mn>1</mml:mn>
                                                            </mml:msub>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:mn>0</mml:mn>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                </mml:mtable>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:mi>&#x3B2;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="7.7em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>10</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e11">
                    <mml:math display="block" id="math12">
                        <mml:mspace width="10em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mi>&#x3B5;</mml:mi>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>Q</mml:mi>
                                                <mml:mn>2</mml:mn>
                                                <mml:mi>T</mml:mi>
                                            </mml:msubsup>
                                            <mml:mi>&#x3C4;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>Q</mml:mi>
                                                <mml:mn>1</mml:mn>
                                                <mml:mi>T</mml:mi>
                                            </mml:msubsup>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>R</mml:mi>
                                                <mml:mn>1</mml:mn>
                                            </mml:msub>
                                            <mml:mi>&#x3B2;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="11.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>11</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where the 
                    <italic toggle="yes">Q</italic>
                    <sub>1</sub> and 
                    <italic toggle="yes">Q</italic>
                    <sub>2</sub> is the sub-matrix of 
                    <italic toggle="yes">Q</italic>, 
                    <italic toggle="yes">R</italic>
                    <sub>1</sub> is the singular value of regression matrix.</p>
                <p>SVD methods:</p>
                <p>Equation (12) is a basic expression of SVD method
                    <sup>
                        <xref ref-type="bibr" rid="ref-6">6</xref>
                    </sup>, and the &#x2211;
                    <sub>2</sub> is zero when the measured data is noise-free. Thus, the least square problem can be rewritten as 
                    <xref ref-type="other" rid="e13">Equation (13)</xref>, the 
                    <italic toggle="yes">U</italic> and 
                    <italic toggle="yes">V</italic> are orthogonal matrix. Finally, a decomposition expression can be calculated, as 
                    <xref ref-type="other" rid="e14">Equation (14)</xref>
                </p>
                <disp-formula id="e13">
                    <mml:math display="block" id="math13">
                        <mml:mspace width="10em"/>
                        <mml:mrow>
                            <mml:mi>Y</mml:mi>
                            <mml:mi>V</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>U</mml:mi>
                            <mml:mstyle displaystyle="false">
                                <mml:mo>&#x2211;</mml:mo>
                            </mml:mstyle>
                            <mml:mo>,</mml:mo>
                            <mml:mspace width="0.8em"/>
                            <mml:mstyle displaystyle="false">
                                <mml:mo>&#x2211;</mml:mo>
                            </mml:mstyle>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo>[</mml:mo>
                                <mml:mrow>
                                    <mml:mtable columnalign="left">
                                        <mml:mtr columnalign="left">
                                            <mml:mtd columnalign="left">
                                                <mml:mtable columnalign="left">
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msub>
                                                                <mml:mo>&#x2211;</mml:mo>
                                                                <mml:mn>1</mml:mn>
                                                            </mml:msub>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msub>
                                                                <mml:mn>0</mml:mn>
                                                                <mml:mrow>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#x2212;</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>n</mml:mi>
                                                                        <mml:mi>b</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo>,</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>n</mml:mi>
                                                                        <mml:mi>b</mml:mi>
                                                                    </mml:msub>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                </mml:mtable>
                                            </mml:mtd>
                                        </mml:mtr>
                                    </mml:mtable>
                                    <mml:mspace width="0.8em"/>
                                    <mml:mtable columnalign="left">
                                        <mml:mtr columnalign="left">
                                            <mml:mtd columnalign="left">
                                                <mml:mtable columnalign="left">
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msub>
                                                                <mml:mn>0</mml:mn>
                                                                <mml:mrow>
                                                                    <mml:msub>
                                                                        <mml:mi>n</mml:mi>
                                                                        <mml:mi>b</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo>,</mml:mo>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#x2212;</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>n</mml:mi>
                                                                        <mml:mi>b</mml:mi>
                                                                    </mml:msub>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                    <mml:mtr>
                                                        <mml:mtd>
                                                            <mml:msub>
                                                                <mml:mo>&#x2211;</mml:mo>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msub>
                                                        </mml:mtd>
                                                    </mml:mtr>
                                                </mml:mtable>
                                            </mml:mtd>
                                        </mml:mtr>
                                    </mml:mtable>
                                </mml:mrow>
                                <mml:mo>]</mml:mo>
                            </mml:mrow>
                        </mml:mrow>
                        <mml:mspace width="8em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>13</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e14">
                    <mml:math display="block" id="math14">
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mi>&#x3B5;</mml:mi>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mi>X</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mtext>=</mml:mtext>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>U</mml:mi>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mrow>
                                                    <mml:mtable columnalign="left">
                                                        <mml:mtr columnalign="left">
                                                            <mml:mtd columnalign="left">
                                                                <mml:mtable columnalign="left">
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:msub>
                                                                                <mml:mo>&#x2211;</mml:mo>
                                                                                <mml:mn>1</mml:mn>
                                                                            </mml:msub>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                </mml:mtable>
                                                            </mml:mtd>
                                                        </mml:mtr>
                                                    </mml:mtable>
                                                    <mml:mspace width="0.2em"/>
                                                    <mml:mtable columnalign="left">
                                                        <mml:mtr columnalign="left">
                                                            <mml:mtd columnalign="left">
                                                                <mml:mtable columnalign="left">
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                </mml:mtable>
                                                            </mml:mtd>
                                                        </mml:mtr>
                                                    </mml:mtable>
                                                </mml:mrow>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:msup>
                                                <mml:mi>V</mml:mi>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                            <mml:mo stretchy="false">[</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mspace width="0.4em"/>
                                            <mml:mi>&#x3B1;</mml:mi>
                                            <mml:mo stretchy="false">]</mml:mo>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>U</mml:mi>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mrow>
                                                    <mml:mtable columnalign="left">
                                                        <mml:mtr columnalign="left">
                                                            <mml:mtd columnalign="left">
                                                                <mml:mtable columnalign="left">
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:msub>
                                                                                <mml:mo>&#x2211;</mml:mo>
                                                                                <mml:mn>1</mml:mn>
                                                                            </mml:msub>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                </mml:mtable>
                                                            </mml:mtd>
                                                        </mml:mtr>
                                                    </mml:mtable>
                                                    <mml:mspace width="0.2em"/>
                                                    <mml:mtable columnalign="left">
                                                        <mml:mtr columnalign="left">
                                                            <mml:mtd columnalign="left">
                                                                <mml:mtable columnalign="left">
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                    <mml:mtr>
                                                                        <mml:mtd>
                                                                            <mml:mn>0</mml:mn>
                                                                        </mml:mtd>
                                                                    </mml:mtr>
                                                                </mml:mtable>
                                                            </mml:mtd>
                                                        </mml:mtr>
                                                    </mml:mtable>
                                                </mml:mrow>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:msup>
                                                <mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mo>[</mml:mo>
                                                        <mml:mtable columnalign="left">
                                                            <mml:mtr>
                                                                <mml:mtd>
                                                                    <mml:msub>
                                                                        <mml:mi>V</mml:mi>
                                                                        <mml:mn>1</mml:mn>
                                                                    </mml:msub>
                                                                </mml:mtd>
                                                            </mml:mtr>
                                                            <mml:mtr>
                                                                <mml:mtd>
                                                                    <mml:msub>
                                                                        <mml:mi>V</mml:mi>
                                                                        <mml:mn>2</mml:mn>
                                                                    </mml:msub>
                                                                </mml:mtd>
                                                            </mml:mtr>
                                                        </mml:mtable>
                                                        <mml:mo>]</mml:mo>
                                                    </mml:mrow>
                                                </mml:mrow>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                            <mml:mo stretchy="false">[</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mspace width="0.4em"/>
                                            <mml:mi>&#x3B1;</mml:mi>
                                            <mml:mo stretchy="false">]</mml:mo>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="3.6em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>14</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e15">
                    <mml:math display="block" id="math15">
                        <mml:mspace width="11em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mi>&#x3B2;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>U</mml:mi>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mstyle displaystyle="false">
                                                <mml:mo>&#x2211;</mml:mo>
                                            </mml:mstyle>
                                            <mml:msub>
                                                <mml:mi>V</mml:mi>
                                                <mml:mn>1</mml:mn>
                                            </mml:msub>
                                            <mml:mi>&#x3B2;</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="12em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>15</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The classification of dynamic parameters is the prerequisite for the identification of dynamic parameters. It is only possible to identify the base parameters since the regressor matrix is linear. Thus, the research on the identification of dynamic parameters of the manipulators revolves around the base parameters, since the accuracy of the manipulator dynamic model is determined by the base parameters. The numerical decomposition methods are mostly used for calculating the base parameters. Numerical decomposition methods can calculate base parameters directly, and many auxiliary tools can realize numerical decomposition methods easily, such as the &#x2018;svd&#x2019; command in MATLAB. In addition, the symbolic calculation method can also be used to calculate the base parameters by merging the linear correlation columns of the regression matrix. However, the symbolic calculation method of calculation is complicated when the number of degrees of the manipulator is more than three.</p>
            </sec>
            <sec>
                <title>2.2 Excitation trajectory design</title>
                <p>There is lots of noise in sampled position data, speed data, and torque data. This noise will reduce the precision of the identified dynamic parameters and introduce the over-determined problem
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup>. When the amount of sampled data is insufficient, the dynamic parameters cannot be fully identified. When the amount of sampled data is too large, the identified result may be overfitting. To ensure the accuracy of the identification result, it is necessary to ensure the quality of sampled data, which is related to the convergence rate and the noise immunity of the estimation of dynamic parameters. The objective of excitation trajectory design is to provide a high-quality sampled data set for identification in the presence of measurement noise and various interferences
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup>. The excitation trajectory algorithm is divided into two parts: excitation trajectory optimization and excitation trajectory parameterization.</p>
                <p>The excitation trajectory optimization aims to obtain a trajectory that can fully excite identified dynamic parameters. The statistical process of the manipulator dynamic is not stable due to the nonlinear relationship between the input and output of the manipulator system. Thus, the linear system trajectory optimization method may not be implemented directly, which optimizes the excitation trajectory by minimizing the condition number of the regressor matrix (observation matrix). An improved criterion must be presented. Some criteria have been used: (I) The sum of the condition number of the observation matrix and the equilibrium value of the observation matrix
                    <sup>
                        <xref ref-type="bibr" rid="ref-8">8</xref>
                    </sup>, as shown in 
                    <xref ref-type="table" rid="T1">Table 1</xref> No.1; (II) The condition number of the observation matrix and the smallest singular value derivative of the observation matrix, as shown in 
                    <xref ref-type="table" rid="T1">Table 1</xref> No.2; (III) The condition number of the weighted observation matrix, as shown in 
                    <xref ref-type="table" rid="T1">Table 1</xref> No. 3, where the 
                    <italic toggle="yes">Z</italic> is the weighted matrix.</p>
                <table-wrap id="T1" orientation="portrait" position="anchor">
                    <label>Table 1. </label>
                    <caption>
                        <title>Criterion for optimization
                            <sup>
                                <xref ref-type="bibr" rid="ref-12">12</xref>,
                                <xref ref-type="bibr" rid="ref-15">14</xref>,
                                <xref ref-type="bibr" rid="ref-15">15</xref>
                            </sup>.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">No.</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Criterion for
                                    <break/>optimization</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Framework</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <italic toggle="yes">k</italic>
                                    <sub>1</sub>
                                    <italic toggle="yes">Cond</italic>(
                                    <italic toggle="yes">Y</italic>) + 
                                    <inline-formula>
                                        <mml:math display="inline" id="M21">
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>k</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msub>
                                                <mml:mfrac>
                                                    <mml:mrow>
                                                        <mml:msub>
                                                            <mml:mi>Y</mml:mi>
                                                            <mml:mrow>
                                                                <mml:mtext>max</mml:mtext>
                                                            </mml:mrow>
                                                        </mml:msub>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:msub>
                                                            <mml:mi>Y</mml:mi>
                                                            <mml:mrow>
                                                                <mml:mtext>min</mml:mtext>
                                                            </mml:mrow>
                                                        </mml:msub>
                                                    </mml:mrow>
                                                </mml:mfrac>
                                            </mml:mrow>
                                        </mml:math>
                                    </inline-formula>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">deterministic</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">2</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <italic toggle="yes">Cond</italic>(
                                    <italic toggle="yes">Y</italic>) + 
                                    <inline-formula>
                                        <mml:math display="inline" id="M22">
                                            <mml:mrow>
                                                <mml:mfrac>
                                                    <mml:mn>1</mml:mn>
                                                    <mml:mrow>
                                                        <mml:msub>
                                                            <mml:mi>&#x3BB;</mml:mi>
                                                            <mml:mrow>
                                                                <mml:mi>min</mml:mi>
                                                                <mml:mo>&#x2061;</mml:mo>
                                                            </mml:mrow>
                                                        </mml:msub>
                                                        <mml:mo stretchy="false">(</mml:mo>
                                                        <mml:msup>
                                                            <mml:mi>Y</mml:mi>
                                                            <mml:mi>T</mml:mi>
                                                        </mml:msup>
                                                        <mml:mi>Y</mml:mi>
                                                        <mml:mo stretchy="false">)</mml:mo>
                                                    </mml:mrow>
                                                </mml:mfrac>
                                            </mml:mrow>
                                        </mml:math>
                                    </inline-formula> </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">deterministic</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">3</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <italic toggle="yes">Cond</italic>(
                                    <italic toggle="yes">Ydiag</italic>(
                                    <italic toggle="yes">Z</italic>))</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">deterministic</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">4</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2013;log(det(
                                    <italic toggle="yes">Y
                                        <sup>T</sup>
                                    </italic>&#x2211;
                                    <sup>&#x2013;1</sup>
                                    <italic toggle="yes">Y</italic>))</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Statistical(D-optimality)
                                    <sup>
                                        <xref ref-type="bibr" rid="ref-14">14</xref>
                                    </sup>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">5</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">det(
                                    <italic toggle="yes">Y
                                        <sup>T</sup>Y</italic>) &#x2264; 
                                    <inline-formula>
                                        <mml:math display="inline" id="M23">
                                            <mml:mrow>
                                                <mml:munderover>
                                                    <mml:mtext>&#x3A0;</mml:mtext>
                                                    <mml:mrow>
                                                        <mml:mi>g</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:msub>
                                                            <mml:mi>N</mml:mi>
                                                            <mml:mi>b</mml:mi>
                                                        </mml:msub>
                                                    </mml:mrow>
                                                </mml:munderover>
                                                <mml:msubsup>
                                                    <mml:mi>Y</mml:mi>
                                                    <mml:mi>g</mml:mi>
                                                    <mml:mi>s</mml:mi>
                                                </mml:msubsup>
                                            </mml:mrow>
                                        </mml:math>
                                    </inline-formula>
                                </td>
                                <td align="left" colspan="1" rowspan="1" valign="top">statistical</td>
                            </tr>
                        </tbody>
                    </table>
                    <table-wrap-foot>
                        <fn>
                            <p>Notation: 
                                <italic toggle="yes">k</italic>
                                <sub>1</sub> and 
                                <italic toggle="yes">k</italic>
                                <sub>2</sub> are constant,</p>
                            <p>
                                <italic toggle="yes">Y</italic>
                                <sub>max</sub> is the max element of regressor matrix</p>
                            <p>
                                <italic toggle="yes">Y</italic>
                                <sub>min</sub> is the minimum element of the regressor matrix</p>
                            <p>
                                <italic toggle="yes">&#x3BB;</italic>
                                <sub>min</sub> (
                                <italic toggle="yes">Y
                                    <sup>T</sup>Y</italic>) is the minimum singular value</p>
                            <p>
                                <inline-formula>
                                    <mml:math display="inline" id="M24">
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>Y</mml:mi>
                                                <mml:mi>g</mml:mi>
                                                <mml:mi>s</mml:mi>
                                            </mml:msubsup>
                                        </mml:mrow>
                                    </mml:math>
                                </inline-formula> is the summation of elements of gth columns of the regressor matrix.</p>
                        </fn>
                    </table-wrap-foot>
                </table-wrap>
                <p>There are other methods based on the statistical framework in addition to the above methods based on the deterministic framework
                    <sup>
                        <xref ref-type="bibr" rid="ref-13">13</xref>,
                        <xref ref-type="bibr" rid="ref-14">14</xref>
                    </sup>. The method based on the statistical framework can only be carried out when having information on the statistical characteristics of measurement noise. For example, reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup> proposed a method to optimize the excitation trajectory and identification results simultaneously. The bound of covariance and the Fisher information matrix is used to design the criterion. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-14">14</xref>
                    </sup> proposed a hybrid criteria method so that the excitation trajectory satisfies the criteria of the deterministic framework and criteria of the statistical framework at the same time. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-15">15</xref>
                    </sup> used the Hadamard inequality based on the statistical framework as the criterion to optimize the excitation trajectory. The equation of Hadamard inequality is shown in 
                    <xref ref-type="table" rid="T1">Table 1</xref> No. 5, where the 
                    <inline-formula>
                        <mml:math display="inline" id="M5">
                            <mml:mrow>
                                <mml:msubsup>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mi>g</mml:mi>
                                    <mml:mi>s</mml:mi>
                                </mml:msubsup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> is the summation of elements of gth columns of regressor matrix. 
                    <xref ref-type="table" rid="T1">Table 1</xref> shows the different criteria for optimization. 
                    <italic toggle="yes">k</italic>
                    <sub>1</sub> and 
                    <italic toggle="yes">k</italic>
                    <sub>2</sub> are constant, 
                    <italic toggle="yes">Y
                        <sub>max</sub>
                    </italic> is the max element of regressor matrix, 
                    <italic toggle="yes">Y
                        <sub>min</sub>
                    </italic> is the minimum element of regressor matrix, 
                    <italic toggle="yes">&#x3BB;</italic>
                    <sub>min</sub> (
                    <italic toggle="yes">Y
                        <sup>T</sup>Y</italic>) is the minimum singular value.</p>
                <disp-formula id="e15a">
                    <mml:math display="block" id="math16">
                        <mml:mspace width="14em"/>
                        <mml:mrow>
                            <mml:mtable columnalign="left">
                                <mml:mtr columnalign="left">
                                    <mml:mtd columnalign="left">
                                        <mml:mrow>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:mtext>min</mml:mtext>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>F</mml:mi>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>Y</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                        </mml:mrow>
                                    </mml:mtd>
                                </mml:mtr>
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:mrow>
                                            <mml:mi>s</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo>.</mml:mo>
                                            <mml:mspace width="0.6em"/>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>I</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>F</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                    </mml:mtd>
                                </mml:mtr>
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:mspace width="2em"/>
                                        <mml:mrow>
                                            <mml:mo>|</mml:mo>
                                            <mml:msub>
                                                <mml:mrow>
                                                    <mml:mover>
                                                        <mml:mi>q</mml:mi>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mover>
                                                </mml:mrow>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>|</mml:mo>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:msub>
                                                <mml:mrow>
                                                    <mml:mover>
                                                        <mml:mi>q</mml:mi>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mover>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:mi>M</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                    </mml:mtd>
                                </mml:mtr>
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:mspace width="2em"/>
                                        <mml:mrow>
                                            <mml:mo>|</mml:mo>
                                            <mml:mover>
                                                <mml:mrow>
                                                    <mml:msub>
                                                        <mml:mi>q</mml:mi>
                                                        <mml:mi>i</mml:mi>
                                                    </mml:msub>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mrow>
                                            </mml:mover>
                                            <mml:mo>|</mml:mo>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mover>
                                                <mml:mrow>
                                                    <mml:msub>
                                                        <mml:mi>q</mml:mi>
                                                        <mml:mtext>Mi</mml:mtext>
                                                    </mml:msub>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mrow>
                                            </mml:mover>
                                        </mml:mrow>
                                    </mml:mtd>
                                </mml:mtr>
                            </mml:mtable>
                        </mml:mrow>
                        <mml:mspace width="13em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>15</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Optimization methods should be given after presenting the criteria. The excitation trajectory optimization problem involves a nonlinear optimization problem with motion constraints
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>
                    </sup>. The basic criterion form is given by 
                    <xref ref-type="other" rid="e15">Equation (15)</xref>, where 
                    <italic toggle="yes">q
                        <sub>Ii</sub>
                    </italic> is the lower bound of the position trajectory, 
                    <italic toggle="yes">q
                        <sub>Fi</sub>
                    </italic> is the upper bound of the position trajectory, and 
                    <italic toggle="yes">q
                        <sub>Fi</sub>
                    </italic> is the velocity, 
                    <inline-formula>
                        <mml:math display="inline" id="M6">
                            <mml:mover accent="true">
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2D9;</mml:mo>
                            </mml:mover>
                        </mml:math>
                    </inline-formula>
                    <italic toggle="yes">
                        <sub>Mi</sub>
                    </italic> is the limit of the acceleration. Sometimes, additional constraints should be given depending on the difference in the parameterization method of the excitation trajectory. Many scholars use intelligent optimization algorithms to solve this nonlinear optimization problem. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-16">16</xref>
                    </sup> uses sequential quadratic programming algorithm, reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-17">17</xref>
                    </sup> uses a genetic algorithm (GA) with binary coding to solve this nonlinear optimization problem, reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-18">18</xref>
                    </sup> uses a memetic algorithm (memetic algorithm, a hybrid evolutionary algorithm), and reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-19">19</xref>
                    </sup> uses the artificial bee colony algorithm (ABC).</p>
                <p>The excitation trajectory parameterization is to interpolate the position, velocity, and acceleration curve between two points of optimized trajectory to ensure continuity of joints of manipulators. The most used trajectory interpolation methods are the fifth polynomial method and finite Fourier series method. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-8">8</xref>
                    </sup> uses the fifth polynomial to interpolate the position, velocity, and acceleration trajectory in joint space, as in 
                    <xref ref-type="other" rid="e16">Equation (16)</xref>. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-20">20</xref>
                    </sup> uses Fourier series to generate periodic trajectories to further suppress measurement noise, as shown in 
                    <xref ref-type="other" rid="e17">Equation (17)</xref>, where 
                    <italic toggle="yes">&#x3C9;
                        <sub>f</sub>
                    </italic> is the fundamental frequency of the Fourier series, and 
                    <italic toggle="yes">q
                        <sub>io</sub>
                    </italic> is the offset value of the position trajectory. The periodic trajectory can average the measured noise, so the Fourier series method has a better noise suppression effect. Some scholars have given an improved finite Fourier series method
                    <sup>
                        <xref ref-type="bibr" rid="ref-21">21</xref>
                    </sup>, which optimizes the problem of the discontinuity of the velocity of the finite Fourier series at the starting point of the trajectory.</p>
                <p>Fifth polynomial method：</p>
                <disp-formula id="e16">
                    <mml:math display="block" id="math17">
                        <mml:mspace width="7em"/>
                        <mml:mtable columnalign="left">
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>4</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>4</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>5</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>5</mml:mn>
                                    </mml:msup>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mover>
                                            <mml:mi>q</mml:mi>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mover>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>2</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>3</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>4</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>4</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>5</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>5</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>4</mml:mn>
                                    </mml:msup>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mover>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mo>&#x2022;</mml:mo>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mrow>
                                    </mml:mover>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>2</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msub>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>6</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>12</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>4</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>20</mml:mn>
                                    <mml:msub>
                                        <mml:mi>a</mml:mi>
                                        <mml:mn>5</mml:mn>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mi>t</mml:mi>
                                        <mml:mn>3</mml:mn>
                                    </mml:msup>
                                </mml:mtd>
                            </mml:mtr>
                        </mml:mtable>
                        <mml:mspace width="8.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>16</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Finite Fourier series method：</p>
                <disp-formula id="e17">
                    <mml:math display="block" id="math18">
                        <mml:mspace width="6em"/>
                        <mml:mtable columnalign="left">
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mstyle displaystyle="true">
                                        <mml:munderover>
                                            <mml:mo>&#x2211;</mml:mo>
                                            <mml:mrow>
                                                <mml:mi>l</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>N</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:munderover>
                                        <mml:mrow>
                                            <mml:mfrac>
                                                <mml:mrow>
                                                    <mml:msubsup>
                                                        <mml:mi>a</mml:mi>
                                                        <mml:mi>l</mml:mi>
                                                        <mml:mi>i</mml:mi>
                                                    </mml:msubsup>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:msub>
                                                        <mml:mi>&#x3C9;</mml:mi>
                                                        <mml:mi>f</mml:mi>
                                                    </mml:msub>
                                                    <mml:mi>l</mml:mi>
                                                </mml:mrow>
                                            </mml:mfrac>
                                            <mml:mi>sin</mml:mi>
                                            <mml:mo>&#x2061;</mml:mo>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mfrac>
                                                <mml:mrow>
                                                    <mml:msubsup>
                                                        <mml:mi>b</mml:mi>
                                                        <mml:mi>l</mml:mi>
                                                        <mml:mi>i</mml:mi>
                                                    </mml:msubsup>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:msub>
                                                        <mml:mi>&#x3C9;</mml:mi>
                                                        <mml:mi>f</mml:mi>
                                                    </mml:msub>
                                                    <mml:mi>l</mml:mi>
                                                </mml:mrow>
                                            </mml:mfrac>
                                            <mml:mi>cos</mml:mi>
                                            <mml:mo>&#x2061;</mml:mo>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>+</mml:mo>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mi>O</mml:mi>
                                                </mml:mrow>
                                            </mml:msub>
                                        </mml:mrow>
                                    </mml:mstyle>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mover>
                                            <mml:mi>q</mml:mi>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mover>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mstyle displaystyle="true">
                                        <mml:munderover>
                                            <mml:mo>&#x2211;</mml:mo>
                                            <mml:mrow>
                                                <mml:mi>l</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>N</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:munderover>
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>a</mml:mi>
                                                <mml:mi>l</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msubsup>
                                            <mml:mtext>cos</mml:mtext>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>+</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>b</mml:mi>
                                                <mml:mi>l</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msubsup>
                                            <mml:mtext>sin</mml:mtext>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                    </mml:mstyle>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mover>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>q</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mo>&#x2022;</mml:mo>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mrow>
                                    </mml:mover>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mstyle displaystyle="true">
                                        <mml:munderover>
                                            <mml:mo>&#x2211;</mml:mo>
                                            <mml:mrow>
                                                <mml:mi>l</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>N</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:munderover>
                                        <mml:mrow>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>a</mml:mi>
                                                <mml:mi>l</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msubsup>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mtext>cos</mml:mtext>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>+</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>b</mml:mi>
                                                <mml:mi>l</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msubsup>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mtext>sin</mml:mtext>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C9;</mml:mi>
                                                <mml:mi>f</mml:mi>
                                            </mml:msub>
                                            <mml:mi>l</mml:mi>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                    </mml:mstyle>
                                </mml:mtd>
                            </mml:mtr>
                        </mml:mtable>
                        <mml:mspace width="8em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>17</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The signal processing method is another part of the identification of dynamic parameters which ensure the quality of the sampled data. The value of speed and acceleration needs to be calculated by differential equations, since the manipulator may only contain encoders in the joints. The joint toque is also calculated from the motor current or a six-dimensional force/torque sensor. Some manipulators have torque sensors in joints, such as Franka Emika Panda Manipulator
                    <sup>
                        <xref ref-type="bibr" rid="ref-3">3</xref>
                    </sup>. The joint positions obtained from the encoders are discrete. Thus, it is impossible to filter the position signal by analog filtering. Generally, a Butterworth low-pass filter is used to filter the noise in the position signal
                    <sup>
                        <xref ref-type="bibr" rid="ref-19">19</xref>
                    </sup>. To avoid phase shifts in the differential calculation, it is necessary to use the central differential method to calculate the value of speed and acceleration from encoder data
                    <sup>
                        <xref ref-type="bibr" rid="ref-22">22</xref>,
                        <xref ref-type="bibr" rid="ref-23">23</xref>
                    </sup>. The use of motor current to calculate the torque also requires filtering. Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-15">15</xref>
                    </sup> proposed a regression method-Robust LOcal polynomial regression(RLOESS), which uses a moving average filter and residual analysis to remove the singular value in motor current.</p>
                <p>Based on the analysis of the above references, we have summarized some conclusions. The optimization of excitation trajectory is the prerequisite to ensuring the accuracy of the identification result. The noise in sampled data reduces the accuracy of the result of the dynamic parameters identification, which is consistent with the previous analysis. The noise in sampled data is the main source of errors in parameters identification. The objective of optimization of excitation trajectory is to better excite dynamic parameters and suppress data noise. The main method of optimization is to minimize the condition number of the regression matrix with constraints. The constraints of optimization of excitation trajectory can be divided into two categories: deterministic framework and statistical framework, and the problem of the optimization is nonlinear. Many scholars solve this nonlinear problem by using intelligent algorithms. However, trajectory optimization cannot completely avoid the effect of noise, and additional filtering methods are needed to further process sampled data.</p>
            </sec>
            <sec>
                <title>2.3 Parameter identification method and verification</title>
                <p>The problem of identification of dynamic parameters of the manipulators can be described as how to calculate the base parameters with position, speed, acceleration, and torque of joints. The commonly used identification methods are the least-squares method
                    <sup>
                        <xref ref-type="bibr" rid="ref-24">24</xref>,
                        <xref ref-type="bibr" rid="ref-25">25</xref>
                    </sup>, the maximum likelihood estimation
                    <sup>
                        <xref ref-type="bibr" rid="ref-12">12</xref>,
                        <xref ref-type="bibr" rid="ref-26">26</xref>
                    </sup>, and instrumental variable method
                    <sup>
                        <xref ref-type="bibr" rid="ref-27">27</xref>
                    </sup>. There are other methods, such as the weighted least squares method
                    <sup>
                        <xref ref-type="bibr" rid="ref-28">28</xref>
                    </sup>, extended Kalman filtering
                    <sup>
                        <xref ref-type="bibr" rid="ref-29">29</xref>
                    </sup>, nonlinear least-squares methods
                    <sup>
                        <xref ref-type="bibr" rid="ref-30">30</xref>
                    </sup>, particle swarm optimization (PSO)
                    <sup>
                        <xref ref-type="bibr" rid="ref-31">31</xref>
                    </sup>, etc., as shown in 
                    <xref ref-type="fig" rid="f1">Figure 1</xref>.</p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>The identification methods of dynamic parameters
                            <sup>
                                <xref ref-type="bibr" rid="ref-12">12</xref>,
                                <xref ref-type="bibr" rid="ref-24">24</xref>,
                                <xref ref-type="bibr" rid="ref-26">26</xref>,
                                <xref ref-type="bibr" rid="ref-27">27</xref>,
                                <xref ref-type="bibr" rid="ref-29">29</xref>,
                                <xref ref-type="bibr" rid="ref-31">31</xref>
                            </sup>. </title>
                        <p>Orange block diagrams represent the methods mostly discussed in research papers.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure1.gif"/>
                </fig>
                <p>Nowadays, the least square method is the most used method to identify the dynamic parameters, because the least square method can directly minimize the root mean square error and the implementation of the least square method is simple. This error refers to the difference between the measured joint torque and the predicted joint torque. However, the least square method has two problems
                    <sup>
                        <xref ref-type="bibr" rid="ref-26">26</xref>
                    </sup>: a. The value of parameters identified by the least square method is not the optimal local minimum, b. The least-squares method is sensitive to measurement noise. Maximum likelihood estimation is used to reduce the estimation error caused by measurement noise since this method estimates parameters with the known statistical characteristics of measurement noise of joint torque and joint position. However, the rate of convergence of the maximum likelihood method is slow. The instrumental variable method is to use the instrumental variables to reconstruct the instrumental matrix, and then use the least square method to estimate the dynamic parameters. The instrumental variable method reduces the identification error of measurement noise and accelerates the rate of convergence.</p>
                <p>We present  the linear least square method to illustrate the basic process of parameter identification. The least-squares problem is shown in 
                    <xref ref-type="other" rid="e18">Equation (18)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-9">9</xref>
                    </sup>, which is to find a set of dynamic parameters to minimize the residual error. 
                    <inline-formula>
                        <mml:math display="inline" id="M7">
                            <mml:mrow>
                                <mml:msubsup>
                                    <mml:mi>&#x3C4;</mml:mi>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>*</mml:mo>
                                </mml:msubsup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> is the estimated torque of the joint 
                    <italic toggle="yes">i</italic>, and 
                    <italic toggle="yes">&#x3C4;
                        <sub>i</sub>
                    </italic> is the measured torque of the joint 
                    <italic toggle="yes">i</italic>. Then, the cost function (
                    <xref ref-type="other" rid="e19">19</xref>) is given by solving 
                    <xref ref-type="other" rid="e18">Equation (18)</xref> with a matrix
                    <sup>
                        <xref ref-type="bibr" rid="ref-24">24</xref>,
                        <xref ref-type="bibr" rid="ref-25">25</xref>
                    </sup>. According to the principle of the least square method, the value of the derivative of the cost function should be zero. Thus, a general form of the least-squares method based on matrix form can be presented
                    <sup>
                        <xref ref-type="bibr" rid="ref-24">24</xref>,
                        <xref ref-type="bibr" rid="ref-25">25</xref>
                    </sup>, as 
                    <xref ref-type="other" rid="e20">Equation (20)</xref>. The block diagram of the linear least square method is shown in 
                    <xref ref-type="fig" rid="f2">Figure 2</xref>.</p>
                <disp-formula id="e18">
                    <mml:math display="block" id="math19">
                        <mml:mspace width="14.5em"/>
                        <mml:mrow>
                            <mml:mi>min</mml:mi>
                            <mml:mo>&#x2061;</mml:mo>
                            <mml:mstyle displaystyle="true">
                                <mml:munderover>
                                    <mml:mo>&#x2211;</mml:mo>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mo>=</mml:mo>
                                        <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                    <mml:mi>n</mml:mi>
                                </mml:munderover>
                                <mml:mrow>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>&#x3C4;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                                <mml:mo>*</mml:mo>
                                            </mml:msubsup>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C4;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                </mml:mrow>
                            </mml:mstyle>
                        </mml:mrow>
                        <mml:mspace width="13em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>18</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e19">
                    <mml:math display="block" id="math20">
                        <mml:mspace width="12em"/>
                        <mml:mrow>
                            <mml:mi>J</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>&#x3B8;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:mfrac>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mi>X</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mi>&#x3C4;</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>Y</mml:mi>
                            <mml:mi>X</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>&#x3C4;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="11em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>19</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e20">
                    <mml:math display="block" id="math21">
                        <mml:mspace width="15em"/>
                        <mml:mrow>
                            <mml:mi>X</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:msup>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                                <mml:mi>Y</mml:mi>
                            </mml:mrow>
                            <mml:msup>
                                <mml:mo stretchy="false">)</mml:mo>
                                <mml:mrow>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>&#x3C4;</mml:mi>
                        </mml:mrow>
                        <mml:mspace width="13em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>20</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title> The block diagram of the linear least-squares method.</title>
                        <p>
                            <inline-formula>
                                <mml:math display="inline" id="M8">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the reference position, speed and acceleration; 
                            <inline-formula>
                                <mml:math display="inline" id="M9">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the sample position, speed, acceleration, and torque; 
                            <inline-formula>
                                <mml:math display="inline" id="M10">
                                    <mml:mrow>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>s</mml:mi>
                                            <mml:mi>F</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mover>
                                            <mml:mrow>
                                                <mml:msubsup>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mi>s</mml:mi>
                                                    <mml:mi>F</mml:mi>
                                                </mml:msubsup>
                                            </mml:mrow>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mover>
                                        <mml:mo>,</mml:mo>
                                        <mml:mover>
                                            <mml:mrow>
                                                <mml:msubsup>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mi>s</mml:mi>
                                                    <mml:mi>F</mml:mi>
                                                </mml:msubsup>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mo>&#x2022;</mml:mo>
                                                <mml:mo>&#x2022;</mml:mo>
                                            </mml:mrow>
                                        </mml:mover>
                                        <mml:mo>,</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mi>s</mml:mi>
                                            <mml:mi>F</mml:mi>
                                        </mml:msubsup>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> 
                            <italic toggle="yes">is</italic> the filtered sample position, speed and acceleration; 
                            <italic toggle="yes">&#x3B2;</italic> is the identified dynamic parameters.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure2.gif"/>
                </fig>
                <p>
                    <bold>
                        <italic toggle="yes">2.3.1 Maximum likelihood estimation.</italic>
                    </bold> Maximum likelihood estimation is the statistically correct estimate
                    <sup>
                        <xref ref-type="bibr" rid="ref-32">32</xref>
                    </sup>. The reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-32">32</xref>
                    </sup> first used maximum likelihood estimation method to identify dynamic parameters of the manipulator. The maximum likelihood estimation method is used to reduce the negative effect of noise in sampled data set. The detailed process of maximum likelihood estimation has been described in 
                    <xref ref-type="bibr" rid="ref-32">32</xref>: Using 
                    <italic toggle="yes">n</italic> measured points 
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic> &#x2208; 
                    <italic toggle="yes">R
                        <sup>p</sup>
                    </italic> 
                    <italic toggle="yes">i</italic> = 1,...,
                    <italic toggle="yes">n</italic> to estimate parameters 
                    <italic toggle="yes">&#x3B2;</italic> = (
                    <italic toggle="yes">&#x3B2;</italic>
                    <sub>1</sub>,...,
                    <italic toggle="yes">&#x3B2;
                        <sub>r</sub>
                    </italic>)
                    <italic toggle="yes">
                        <sup>T</sup>
                    </italic> related to a given model 
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) = 0, 
                    <italic toggle="yes">k</italic> = 1,...,
                    <italic toggle="yes">m</italic>. To be more precise, 
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) &#x2248; 0, 
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) &#x2013; 
                    <italic toggle="yes">&#x3B5;</italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) = 0, where 
                    <italic toggle="yes">&#x3B5;</italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) represents the integration of model error and measurement error. However, the characteristics of 
                    <italic toggle="yes">&#x3B5;</italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) is not clear. For the convenience of calculation, suppose the mean value of 
                    <italic toggle="yes">&#x3B5;</italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x</italic>) is 0, and the covariance is 
                    <italic toggle="yes">&#x3B4;
                        <sub>ii</sub>
                    </italic>. For dynamic parameter identification of manipulators, 
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic>) can be represented as 
                    <xref ref-type="other" rid="e21">Equation (21)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-33">33</xref>
                    </sup>. The maximum likelihood estimation can be expressed as the 
                    <xref ref-type="other" rid="e22">Equation (22)</xref>. Then, an objective function is calculated by using the Lagrange multiplier, as 
                    <xref ref-type="other" rid="e23">Equation (23)</xref>. Finally, this objective function needs to be minimized to find the optimal identification result. However, the calculation of solving the minimization of 
                    <xref ref-type="other" rid="e24">Equation (24)</xref> is difficult, especially to solve the second derivative and the third derivative of the objective function 
                    <xref ref-type="other" rid="e23">(23)</xref>. Thus, a linear approximation of 
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic>) must be given, as 
                    <xref ref-type="other" rid="e24">Equation (24)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-32">32</xref>
                    </sup>.</p>
                <disp-formula id="e21">
                    <mml:math display="block" id="math22">
                        <mml:mspace width="11.5em"/>
                        <mml:mrow>
                            <mml:msub>
                                <mml:mi>G</mml:mi>
                                <mml:mi>k</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:msub>
                                <mml:mi>x</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:mi>Y</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>q</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2022;</mml:mo>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mi>q</mml:mi>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>&#x3C4;</mml:mi>
                        </mml:mrow>
                        <mml:mspace width="12em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>21</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e22">
                    <mml:math display="block" id="math23">
                        <mml:mspace width="9.5em"/>
                        <mml:mrow>
                            <mml:mrow>
                                <mml:mo>{</mml:mo>
                                <mml:mtable columnalign="left">
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mtext>min</mml:mtext>
                                            <mml:mfrac>
                                                <mml:mn>1</mml:mn>
                                                <mml:mn>2</mml:mn>
                                            </mml:mfrac>
                                            <mml:mstyle displaystyle="true">
                                                <mml:munderover>
                                                    <mml:mo>&#x2211;</mml:mo>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>j</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mi>n</mml:mi>
                                                </mml:munderover>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>x</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>&#x3C8;</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mi>T</mml:mi>
                                                    </mml:msup>
                                                    <mml:mrow>
                                                        <mml:mo>[</mml:mo>
                                                        <mml:mrow>
                                                            <mml:msubsup>
                                                                <mml:mi>&#x3B4;</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>i</mml:mi>
                                                                    <mml:mi>j</mml:mi>
                                                                </mml:mrow>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msubsup>
                                                        </mml:mrow>
                                                    </mml:mrow>
                                                </mml:mrow>
                                            </mml:mstyle>
                                            <mml:msup>
                                                <mml:mo>]</mml:mo>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>1</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>x</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C8;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:msub>
                                                <mml:mi>G</mml:mi>
                                                <mml:mi>k</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mo>,</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C8;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>=</mml:mo>
                                            <mml:mn>0</mml:mn>
                                            <mml:mspace width="1em"/>
                                            <mml:mo>&#x2200;</mml:mo>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo>,</mml:mo>
                                            <mml:mi>k</mml:mi>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                        </mml:mrow>
                        <mml:mspace width="9em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>22</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e23">
                    <mml:math display="block" id="math24">
                        <mml:mspace width="5em"/>
                        <mml:mrow>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:mfrac>
                            <mml:mstyle displaystyle="true">
                                <mml:munderover>
                                    <mml:mo>&#x2211;</mml:mo>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mo>,</mml:mo>
                                        <mml:mi>j</mml:mi>
                                        <mml:mo>=</mml:mo>
                                        <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                    <mml:mi>n</mml:mi>
                                </mml:munderover>
                                <mml:mrow>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>x</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C8;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mi>T</mml:mi>
                                    </mml:msup>
                                    <mml:mrow>
                                        <mml:mo>[</mml:mo>
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>&#x3B4;</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mi>j</mml:mi>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                        </mml:mrow>
                                        <mml:mo>]</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:mstyle>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>x</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3C8;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>+</mml:mo>
                            <mml:mstyle displaystyle="true">
                                <mml:munderover>
                                    <mml:mo>&#x2211;</mml:mo>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mo>,</mml:mo>
                                        <mml:mi>k</mml:mi>
                                        <mml:mo>=</mml:mo>
                                        <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                    <mml:mrow>
                                        <mml:mi>n</mml:mi>
                                        <mml:mo>,</mml:mo>
                                        <mml:mi>m</mml:mi>
                                    </mml:mrow>
                                </mml:munderover>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>&#x3BB;</mml:mi>
                                        <mml:mrow>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo>,</mml:mo>
                                            <mml:mi>k</mml:mi>
                                        </mml:mrow>
                                    </mml:msub>
                                    <mml:msub>
                                        <mml:mi>G</mml:mi>
                                        <mml:mi>k</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>&#x3B2;</mml:mi>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>&#x3C8;</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mrow>
                            </mml:mstyle>
                        </mml:mrow>
                        <mml:mspace width="8.1em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>23</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e24">
                    <mml:math display="block" id="math25">
                        <mml:mspace width="9.5em"/>
                        <mml:mrow>
                            <mml:mrow>
                                <mml:mo>{</mml:mo>
                                <mml:mtable columnalign="left">
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mtext>min</mml:mtext>
                                            <mml:mfrac>
                                                <mml:mn>1</mml:mn>
                                                <mml:mn>2</mml:mn>
                                            </mml:mfrac>
                                            <mml:mstyle displaystyle="true">
                                                <mml:munderover>
                                                    <mml:mo>&#x2211;</mml:mo>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>j</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mi>n</mml:mi>
                                                </mml:munderover>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>x</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>&#x3C8;</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mi>T</mml:mi>
                                                    </mml:msup>
                                                    <mml:mrow>
                                                        <mml:mo>[</mml:mo>
                                                        <mml:mrow>
                                                            <mml:msubsup>
                                                                <mml:mi>&#x3B4;</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>i</mml:mi>
                                                                    <mml:mi>j</mml:mi>
                                                                </mml:mrow>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msubsup>
                                                        </mml:mrow>
                                                        <mml:mo>]</mml:mo>
                                                    </mml:mrow>
                                                </mml:mrow>
                                            </mml:mstyle>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>x</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C8;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mi>B</mml:mi>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>i</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:msup>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>&#x3B2;</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:msub>
                                                <mml:mi>x</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x3C8;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>=</mml:mo>
                                            <mml:msup>
                                                <mml:mi>b</mml:mi>
                                                <mml:mrow>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                            </mml:msup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                        </mml:mrow>
                        <mml:mspace width="10em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>24</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where, 
                    <italic toggle="yes">B</italic>
                    <sup>(
                        <italic toggle="yes">i</italic>)</sup>(
                    <italic toggle="yes">&#x3B2;</italic>) is a 
                    <italic toggle="yes">m</italic>&#xD7;
                    <italic toggle="yes">p</italic> matrix, the element of 
                    <italic toggle="yes">kth</italic> row of  is 
                    <italic toggle="yes">B</italic>
                    <sup>(
                        <italic toggle="yes">i</italic>)</sup> (
                    <italic toggle="yes">&#x3B2;</italic>) is [&#x2207;
                    <italic toggle="yes">
                        <sub>x</sub>
                    </italic>
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic>)]
                    <italic toggle="yes">
                        <sup>T</sup>
                    </italic>, 
                    <italic toggle="yes">b</italic>
                    <sup>(
                        <italic toggle="yes">i</italic>)</sup> is a vector, which elements are &#x2013;
                    <italic toggle="yes">G
                        <sub>k</sub>
                    </italic>(
                    <italic toggle="yes">&#x3B2;</italic>,
                    <italic toggle="yes">x
                        <sub>i</sub>
                    </italic>). The analytical solution of 
                    <xref ref-type="other" rid="e24">Equation (24)</xref> can be represented as 
                    <xref ref-type="other" rid="e25">Equation (25)</xref>, and the optimization problem can be rewritten as 
                    <xref ref-type="other" rid="e26">Equation (26)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-32">32</xref>
                    </sup>.</p>
                <disp-formula id="e25">
                    <mml:math display="block" id="math26">
                        <mml:mspace width="3em"/>
                        <mml:mrow>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>x</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3C8;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>i</mml:mi>
                                    <mml:mi>j</mml:mi>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msubsup>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>[</mml:mo>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi>B</mml:mi>
                                                <mml:mrow>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                            </mml:msup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mo>]</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>{</mml:mo>
                                        <mml:mrow>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mi>B</mml:mi>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>i</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:msup>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>&#x3B2;</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:mspace width="0.2em"/>
                                            <mml:msubsup>
                                                <mml:mi>&#x3B4;</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mi>j</mml:mi>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                            <mml:msup>
                                                <mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mo>[</mml:mo>
                                                        <mml:mrow>
                                                            <mml:msup>
                                                                <mml:mi>B</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mo stretchy="false">(</mml:mo>
                                                                    <mml:mi>i</mml:mi>
                                                                    <mml:mo stretchy="false">)</mml:mo>
                                                                </mml:mrow>
                                                            </mml:msup>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>&#x3B2;</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mo>]</mml:mo>
                                                    </mml:mrow>
                                                </mml:mrow>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                        </mml:mrow>
                                        <mml:mo>}</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>b</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="8em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>25</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e26">
                    <mml:math display="block" id="math27">
                        <mml:mspace width="5em"/>
                        <mml:mrow>
                            <mml:mtext>min</mml:mtext>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:mfrac>
                            <mml:mstyle displaystyle="true">
                                <mml:munderover>
                                    <mml:mo>&#x2211;</mml:mo>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mo>,</mml:mo>
                                        <mml:mi>j</mml:mi>
                                        <mml:mo>=</mml:mo>
                                        <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                    <mml:mi>n</mml:mi>
                                </mml:munderover>
                                <mml:mrow>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="false">[</mml:mo>
                                            <mml:msup>
                                                <mml:mi>b</mml:mi>
                                                <mml:mrow>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                            </mml:msup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>&#x3B2;</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo stretchy="false">]</mml:mo>
                                        </mml:mrow>
                                        <mml:mi>T</mml:mi>
                                    </mml:msup>
                                </mml:mrow>
                            </mml:mstyle>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>{</mml:mo>
                                        <mml:mrow>
                                            <mml:mrow>
                                                <mml:mo>[</mml:mo>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mi>B</mml:mi>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>i</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:msup>
                                                    <mml:mo stretchy="false">(</mml:mo>
                                                    <mml:mi>&#x3B2;</mml:mi>
                                                    <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                                <mml:mo>]</mml:mo>
                                            </mml:mrow>
                                            <mml:mspace width="0.2em"/>
                                            <mml:msubsup>
                                                <mml:mi>&#x3B4;</mml:mi>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mi>j</mml:mi>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                            <mml:msup>
                                                <mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mo>[</mml:mo>
                                                        <mml:mrow>
                                                            <mml:msup>
                                                                <mml:mi>B</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mo stretchy="false">(</mml:mo>
                                                                    <mml:mi>i</mml:mi>
                                                                    <mml:mo stretchy="false">)</mml:mo>
                                                                </mml:mrow>
                                                            </mml:msup>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mi>&#x3B2;</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mo>]</mml:mo>
                                                    </mml:mrow>
                                                </mml:mrow>
                                                <mml:mi>T</mml:mi>
                                            </mml:msup>
                                        </mml:mrow>
                                        <mml:mo>}</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>b</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="7.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>26</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The maximum likelihood estimation method avoids part of errors of the parameters identification result caused by measurement noise, but the statistical characteristics of the noise must be determined. Compared with the least square method, the negative effects of noise are suppressed. However, the calculation amount of the maximum likelihood estimation method is larger than the least square method, and the increase of the amount of parameter identification does not greatly improve the accuracy of the parameter identification results.</p>
                <p>
                    <bold>
                        <italic toggle="yes">2.3.2 Instrumental variable method.</italic>
                    </bold> The instrumental variable method
                    <sup>
                        <xref ref-type="bibr" rid="ref-22">22</xref>,
                        <xref ref-type="bibr" rid="ref-27">27</xref>
                    </sup> is iterative. The instrumental variable method reconstructs an instrumental matrix 
                    <italic toggle="yes">Z</italic> to estimate dynamic parameters. When the instrument matrix fulfills the following conditions, a. 
                    <italic toggle="yes">Z
                        <sup>T</sup> X</italic> is a full column rank, b. the instrument matrix must be uncorrelated with the error, the dynamic parameters can be calculated as 
                    <xref ref-type="other" rid="e29">Equation (29)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-22">22</xref>
                    </sup>. Thus, how to calculate the instrument matrix is important. The direct dynamic model is the most auxiliary model to calculate the instrument matrix., The direct dynamic model can be calculated as 
                    <xref ref-type="other" rid="e27">Equation (27)</xref> with the previous moment estimated instrumental variable 
                    <italic toggle="yes">&#x3B2;</italic>
                    <italic toggle="yes">
                        <sup>t</sup>
                    </italic>
                    <sup>-1</sup>, and the simulated data (
                    <italic toggle="yes">q</italic>, 
                    <inline-formula>
                        <mml:math display="inline" id="M11">
                            <mml:mover accent="true">
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2D9;</mml:mo>
                            </mml:mover>
                        </mml:math>
                    </inline-formula>, 
                    <inline-formula>
                        <mml:math display="inline" id="M12">
                            <mml:mover accent="true">
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#xA8;</mml:mo>
                            </mml:mover>
                        </mml:math>
                    </inline-formula>) can be calculated from the direct dynamic model
                    <sup>
                        <xref ref-type="bibr" rid="ref-27">27</xref>
                    </sup>. Then, a reconstructed instrumental matrix can be calculated as 
                    <xref ref-type="other" rid="e28">Equation (28)</xref>. Finally, the 
                    <italic toggle="yes">&#x3B2;
                        <sup>t</sup>
                    </italic> can be calculated, as shown in 
                    <xref ref-type="other" rid="e29">Equation (29)</xref>
                </p>
                <disp-formula id="e27">
                    <mml:math display="block" id="math28">
                        <mml:mspace width="10em"/>
                        <mml:mrow>
                            <mml:mi>M</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>q</mml:mi>
                                <mml:mi>s</mml:mi>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x3B2;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mover>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3C4;</mml:mi>
                                <mml:mi>s</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>N</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>q</mml:mi>
                                <mml:mi>s</mml:mi>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                </mml:mrow>
                                <mml:mo>&#x2022;</mml:mo>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x3B2;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="9.4em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>27</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e28">
                    <mml:math display="block" id="math29">
                        <mml:mspace width="12em"/>
                        <mml:mrow>
                            <mml:mi>Z</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>X</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>q</mml:mi>
                                <mml:mi>s</mml:mi>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:mover>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>q</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mo>&#x2022;</mml:mo>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mrow>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x3B2;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="13.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>28</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e29">
                    <mml:math display="block" id="math30">
                        <mml:mspace width="13em"/>
                        <mml:mrow>
                            <mml:msup>
                                <mml:mi>&#x3B2;</mml:mi>
                                <mml:mi>t</mml:mi>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:msup>
                                    <mml:mi>Z</mml:mi>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                                <mml:mi>X</mml:mi>
                            </mml:mrow>
                            <mml:msup>
                                <mml:mo stretchy="false">)</mml:mo>
                                <mml:mrow>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>Z</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mi>y</mml:mi>
                        </mml:mrow>
                        <mml:mspace width="14.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>29</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The instrumental variable method is a closed-loop method, which is more stable than the least square method. Compared with the maximum likelihood estimation method, it can better guarantee the convergence of the data. The instrumental variable method and the least square method are also the most widely used and discussed methods for the identification of manipulator dynamic parameters.</p>
                <p>
                    <bold>
                        <italic toggle="yes">2.3.3 Closed-loop output error method.</italic>
                    </bold> The closed-loop output error method uses the torque error between actual torque and the simulated torque to estimate the dynamic parameters, the structure of this method is shown in 
                    <xref ref-type="fig" rid="f3">Figure 3</xref>. First, the direct dynamic model, such as 
                    <xref ref-type="other" rid="e30">Equation (30)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-34">34</xref>
                    </sup>, and the estimated value of the measured torque and dynamic parameters are used to calculate the position, velocity, and acceleration. Then, the values of position, velocity, and acceleration obtained by simulation are compared with the actual measured values of position, velocity, and acceleration. Generally, the identification just uses the position error
                    <sup>
                        <xref ref-type="bibr" rid="ref-34">34</xref>
                    </sup>. For convenience, the positive dynamic model is transformed to a state-space model, as 
                    <xref ref-type="other" rid="e31">Equation (31)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-34">34</xref>
                    </sup>.</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>The block diagram of the closed-loop output error method.</title>
                        <p>
                            <inline-formula>
                                <mml:math display="inline" id="M13">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the reference position, speed and acceleration; 
                            <inline-formula>
                                <mml:math display="inline" id="M14">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mi>&#x3C4;</mml:mi>
                                            <mml:mi>s</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the sample position, speed, acceleration and torque; 
                            <inline-formula>
                                <mml:math display="inline" id="M15">
                                    <mml:mrow>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>s</mml:mi>
                                            <mml:mi>F</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mover>
                                            <mml:mrow>
                                                <mml:msubsup>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mi>s</mml:mi>
                                                    <mml:mi>F</mml:mi>
                                                </mml:msubsup>
                                            </mml:mrow>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mover>
                                        <mml:mo>,</mml:mo>
                                        <mml:mover>
                                            <mml:mrow>
                                                <mml:msubsup>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mi>s</mml:mi>
                                                    <mml:mi>F</mml:mi>
                                                </mml:msubsup>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mo>&#x2022;</mml:mo>
                                                <mml:mo>&#x2022;</mml:mo>
                                            </mml:mrow>
                                        </mml:mover>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the filtered sample position, speed and acceleration; 
                            <inline-formula>
                                <mml:math display="inline" id="M16">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>d</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the simulated position, speed, and acceleration; 
                            <italic toggle="yes">&#x3B2;</italic> is the identified dynamic parameters.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure3.gif"/>
                </fig>
                <disp-formula id="e30">
                    <mml:math display="block" id="math31">
                        <mml:mspace width="8em"/>
                        <mml:mrow>
                            <mml:mi>M</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>q</mml:mi>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:msub>
                                <mml:mrow>
                                    <mml:mover>
                                        <mml:mi>q</mml:mi>
                                        <mml:mrow>
                                            <mml:mo>&#x2022;</mml:mo>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mrow>
                                    </mml:mover>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x3C4;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>N</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>q</mml:mi>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:msub>
                                <mml:mrow>
                                    <mml:mover>
                                        <mml:mi>q</mml:mi>
                                        <mml:mo>&#x2022;</mml:mo>
                                    </mml:mover>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>d</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mi>&#x3B2;</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="8em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>30</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e31">
                    <mml:math display="block" id="math32">
                        <mml:mspace width="15em"/>
                        <mml:mtable columnalign="left">
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mi>G</mml:mi>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:msub>
                                        <mml:mi>x</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:msub>
                                        <mml:mover>
                                            <mml:mi>x</mml:mi>
                                            <mml:mo>&#x2022;</mml:mo>
                                        </mml:mover>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>=</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:msub>
                                        <mml:mi>x</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>u</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">)</mml:mo>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mi>y</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>=</mml:mo>
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:msub>
                                        <mml:mi>x</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>D</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:msub>
                                        <mml:mi>u</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                </mml:mtd>
                            </mml:mtr>
                        </mml:mtable>
                        <mml:mspace width="12em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>31</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e32">
                    <mml:math display="block" id="math33">
                        <mml:mtable columnalign="left">
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mi>G</mml:mi>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:msub>
                                        <mml:mi>x</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mrow>
                                        <mml:mo>[</mml:mo>
                                        <mml:mrow>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mi>I</mml:mi>
                                                                <mml:mi>n</mml:mi>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mn>0</mml:mn>
                                                                <mml:mrow>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#xD7;</mml:mo>
                                                                    <mml:mi>n</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                            <mml:mspace width="0.8em"/>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mn>0</mml:mn>
                                                                <mml:mrow>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#xD7;</mml:mo>
                                                                    <mml:mi>n</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:mi>M</mml:mi>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>q</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>m</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                            <mml:mo>,</mml:mo>
                                                            <mml:mi>&#x3B2;</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                        </mml:mrow>
                                        <mml:mo>]</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>,</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo stretchy="false">(</mml:mo>
                                    <mml:msub>
                                        <mml:mi>x</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>u</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="false">)</mml:mo>
                                    <mml:mo>=</mml:mo>
                                    <mml:mrow>
                                        <mml:mo>[</mml:mo>
                                        <mml:mrow>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mrow>
                                                                    <mml:mover>
                                                                        <mml:mi>q</mml:mi>
                                                                        <mml:mo>&#x2022;</mml:mo>
                                                                    </mml:mover>
                                                                </mml:mrow>
                                                                <mml:mrow>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>m</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mi>&#x3C4;</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>m</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                            <mml:mi>N</mml:mi>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>q</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>m</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                            <mml:mo>,</mml:mo>
                                                            <mml:msub>
                                                                <mml:mrow>
                                                                    <mml:mover>
                                                                        <mml:mi>q</mml:mi>
                                                                        <mml:mo>&#x2022;</mml:mo>
                                                                    </mml:mover>
                                                                </mml:mrow>
                                                                <mml:mrow>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>d</mml:mi>
                                                                    <mml:mi>m</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                            <mml:mo>,</mml:mo>
                                                            <mml:mi>&#x3B2;</mml:mi>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                        </mml:mrow>
                                        <mml:mo>]</mml:mo>
                                    </mml:mrow>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mi>s</mml:mi>
                                    </mml:msub>
                                    <mml:mo>=</mml:mo>
                                    <mml:mrow>
                                        <mml:mo>[</mml:mo>
                                        <mml:mrow>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mi>I</mml:mi>
                                                                <mml:mrow>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#xD7;</mml:mo>
                                                                    <mml:mi>n</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                            <mml:mspace width="0.8em"/>
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="left">
                                                    <mml:mtd columnalign="left">
                                                        <mml:mrow>
                                                            <mml:msub>
                                                                <mml:mn>0</mml:mn>
                                                                <mml:mrow>
                                                                    <mml:mi>n</mml:mi>
                                                                    <mml:mo>&#xD7;</mml:mo>
                                                                    <mml:mn>2</mml:mn>
                                                                    <mml:mi>n</mml:mi>
                                                                </mml:mrow>
                                                            </mml:msub>
                                                        </mml:mrow>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                        </mml:mrow>
                                        <mml:mo>]</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>,</mml:mo>
                                    <mml:mtext>&#x2009;</mml:mtext>
                                    <mml:mi>D</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:msub>
                                        <mml:mn>0</mml:mn>
                                        <mml:mrow>
                                            <mml:mi>n</mml:mi>
                                            <mml:mo>&#xD7;</mml:mo>
                                            <mml:mi>n</mml:mi>
                                        </mml:mrow>
                                    </mml:msub>
                                </mml:mtd>
                            </mml:mtr>
                        </mml:mtable>
                        <mml:mspace width="6em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>32</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where, 
                    <italic toggle="yes">G</italic>(
                    <italic toggle="yes">x
                        <sub>s</sub>
                    </italic>), 
                    <italic toggle="yes">f</italic>(
                    <italic toggle="yes">x
                        <sub>s</sub>,u
                        <sub>s</sub>
                    </italic>), 
                    <italic toggle="yes">C
                        <sub>s</sub>
                    </italic>, 
                    <italic toggle="yes">D
                        <sub>s</sub>
                    </italic> are shown in 
                    <xref ref-type="other" rid="e32">Equation (32)</xref>, 
                    <italic toggle="yes">I
                        <sub>n</sub>
                    </italic> is the identity matrix, 
                    <italic toggle="yes">x
                        <sub>s</sub>
                    </italic> = [
                    <italic toggle="yes">q
                        <sub>ddm</sub>
                    </italic>, 
                    <inline-formula>
                        <mml:math display="inline" id="M17">
                            <mml:mover accent="true">
                                <mml:mi>q</mml:mi>
                                <mml:mo>&#x2D9;</mml:mo>
                            </mml:mover>
                        </mml:math>
                    </inline-formula>
                    <italic toggle="yes">
                        <sub>ddm</sub>
                    </italic>], 
                    <italic toggle="yes">u
                        <sub>s</sub>
                    </italic> = 
                    <italic toggle="yes">&#x3C4;
                        <sub>ddm</sub>
                    </italic> and 
                    <italic toggle="yes">y
                        <sub>s</sub>
                    </italic> = 
                    <italic toggle="yes">q
                        <sub>ddm</sub>
                    </italic>. Finally, the estimated values of dynamic parameters are corrected according to the position error. The closed-loop output error method is also an iterative process, and to ensure the optimal identification result, a quadratic standard such as 
                    <xref ref-type="other" rid="e33">Equation (33)</xref> is given, which is a nonlinear least-squares problem. 
                    <italic toggle="yes">Y
                        <sub>s</sub>
                    </italic> and 
                    <italic toggle="yes">Y</italic> are obtained by filtering the vectors of samples 
                    <italic toggle="yes">Y
                        <sub>fm</sub>
                    </italic> and 
                    <italic toggle="yes">Y
                        <sub>sfm</sub>
                    </italic>, where 
                    <inline-formula>
                        <mml:math display="inline" id="M18">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="false">[</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mn>1</mml:mn>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mo>&#x2026;</mml:mo>
                                        <mml:mo>,</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mi>n</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo stretchy="false">]</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                                <mml:mo>,</mml:mo>
                                <mml:msubsup>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:mrow>
                                    <mml:mi>j</mml:mi>
                                </mml:msubsup>
                                <mml:mo>=</mml:mo>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="false">[</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mn>1</mml:mn>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mo>&#x2026;</mml:mo>
                                        <mml:mo>,</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mi>n</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo stretchy="false">]</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula> and 
                    <inline-formula>
                        <mml:math display="inline" id="M19">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>s</mml:mi>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="false">[</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>s</mml:mi>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mn>1</mml:mn>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mo>&#x2026;</mml:mo>
                                        <mml:mo>,</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>Y</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>s</mml:mi>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mi>n</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo stretchy="false">]</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                                <mml:mo>,</mml:mo>
                                <mml:msubsup>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>s</mml:mi>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:mrow>
                                    <mml:mi>j</mml:mi>
                                </mml:msubsup>
                                <mml:mo>=</mml:mo>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="false">[</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>s</mml:mi>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mn>1</mml:mn>
                                        </mml:msubsup>
                                        <mml:mo>,</mml:mo>
                                        <mml:mo>&#x2026;</mml:mo>
                                        <mml:mo>,</mml:mo>
                                        <mml:msubsup>
                                            <mml:mi>q</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>s</mml:mi>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:mrow>
                                            <mml:mi>n</mml:mi>
                                        </mml:msubsup>
                                        <mml:mo stretchy="false">]</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>T</mml:mi>
                                </mml:msup>
                            </mml:mrow>
                        </mml:math>
                    </inline-formula>.</p>
                <disp-formula id="e33">
                    <mml:math display="block" id="math34">
                        <mml:mspace width="12.8em"/>
                        <mml:mrow>
                            <mml:mi>J</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>x</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                        <mml:mrow>
                                            <mml:msub>
                                                <mml:mi>Y</mml:mi>
                                                <mml:mi>s</mml:mi>
                                            </mml:msub>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>Y</mml:mi>
                                        </mml:mrow>
                                        <mml:mo>&#x2016;</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:mrow>
                        <mml:mspace width="15em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>33</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>In general, the Newton method, the Lewinberg Marquardt method, etc. are used to calculate the minimized result of the 
                    <xref ref-type="other" rid="e33">Equation (33)</xref>
                    <sup>
                        <xref ref-type="bibr" rid="ref-34">34</xref>
                    </sup>. The closed-loop output error method also has a deformation method, the closed-loop input error method, which turns the position error into a torque error, that is, the error between the simulated model torque and the actual measured torque.</p>
                <p>
                    <bold>
                        <italic toggle="yes">2.3.4 Particle swarm optimization algorithm.</italic>
                    </bold> The particle swarm optimization method is an intelligent evolution algorithm. The particle swarm optimization method is used to solve the negative effect of measurement noise and model error on the identification of dynamic parameters. The structure of the particle swarm optimization identification method is similar to the closed-loop input error method. The error of the measured torque and the simulated torque is used to identify the dynamic parameters, as shown in 
                    <xref ref-type="fig" rid="f4">Figure 4</xref>. Similarly, the particle swarm algorithm also needs a cost function or constraint
                    <sup>
                        <xref ref-type="bibr" rid="ref-31">31</xref>
                    </sup>. The cost function given in 
                    <xref ref-type="bibr" rid="ref-31">31</xref> is as 
                    <xref ref-type="other" rid="e34">Equation (34)</xref>.</p>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>The block diagram of particle swarm optimization algorithm.</title>
                        <p>
                            <inline-formula>
                                <mml:math display="inline" id="M20">
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>q</mml:mi>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mo>&#x2022;</mml:mo>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mover>
                                                    <mml:mi>q</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                        <mml:mo>&#x2022;</mml:mo>
                                                    </mml:mrow>
                                                </mml:mover>
                                            </mml:mrow>
                                            <mml:mi>r</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:math>
                            </inline-formula> is the reference position, speed and acceleration; 
                            <italic toggle="yes">&#x3C4;
                                <sub>s</sub>
                            </italic> is the sample torque; 
                            <italic toggle="yes">&#x3B2;
                                <sub>PSO</sub>
                            </italic> is the estimated parameters.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure4.gif"/>
                </fig>
                <disp-formula id="e34">
                    <mml:math display="block" id="math35">
                        <mml:mspace width="6em"/>
                        <mml:mrow>
                            <mml:mi>E</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>k</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mi>M</mml:mi>
                            </mml:mfrac>
                            <mml:mstyle displaystyle="true">
                                <mml:munderover>
                                    <mml:mo>&#x2211;</mml:mo>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mo>=</mml:mo>
                                        <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                    <mml:mi>M</mml:mi>
                                </mml:munderover>
                                <mml:mrow>
                                    <mml:msqrt>
                                        <mml:mrow>
                                            <mml:msubsup>
                                                <mml:mi>e</mml:mi>
                                                <mml:mn>1</mml:mn>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>+</mml:mo>
                                            <mml:mn>...</mml:mn>
                                            <mml:mo>+</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>e</mml:mi>
                                                <mml:mi>j</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                            <mml:mo>+</mml:mo>
                                            <mml:mn>...</mml:mn>
                                            <mml:mo>+</mml:mo>
                                            <mml:msubsup>
                                                <mml:mi>e</mml:mi>
                                                <mml:mi>n</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                            <mml:mo stretchy="false">(</mml:mo>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo stretchy="false">)</mml:mo>
                                        </mml:mrow>
                                    </mml:msqrt>
                                </mml:mrow>
                            </mml:mstyle>
                        </mml:mrow>
                        <mml:mspace width="10em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>34</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where 
                    <italic toggle="yes">M</italic> is the number of sampling points, 
                    <italic toggle="yes">n</italic> is the number of joints, and 
                    <italic toggle="yes">e
                        <sub>j</sub>
                    </italic>(
                    <italic toggle="yes">i</italic>) is the error between the actual measured torque and the simulated torque of the 
                    <italic toggle="yes">j</italic> joint. Then, many particles perform the swarm movement to find the optimal solution. That is, change the velocity or acceleration of each particle according to the local optimal solution and the global optimal solution, as in 
                    <xref ref-type="other" rid="e35">formula (35)</xref>.</p>
                <disp-formula id="e35">
                    <mml:math display="block" id="math36">
                        <mml:mrow>
                            <mml:msub>
                                <mml:mi>V</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:mi>&#x3BB;</mml:mi>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:msub>
                                <mml:mi>V</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                                <mml:mi>a</mml:mi>
                                <mml:mn>1</mml:mn>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>r</mml:mi>
                                <mml:mn>1</mml:mn>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>p</mml:mi>
                            <mml:mi>b</mml:mi>
                            <mml:mi>e</mml:mi>
                            <mml:mi>s</mml:mi>
                            <mml:msub>
                                <mml:mi>t</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msub>
                                <mml:mi>P</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                                <mml:mi>a</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>r</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>g</mml:mi>
                            <mml:mi>b</mml:mi>
                            <mml:mi>e</mml:mi>
                            <mml:mi>s</mml:mi>
                            <mml:msub>
                                <mml:mi>t</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msub>
                                <mml:mi>P</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="2.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>35</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Where 
                    <italic toggle="yes">pbest
                        <sub>i</sub>
                    </italic> is the local optimal solution of particle 
                    <italic toggle="yes">i</italic>, 
                    <italic toggle="yes">gbest
                        <sub>i</sub>
                    </italic> is the global optimal solution of particle 
                    <italic toggle="yes">i</italic>, and 
                    <italic toggle="yes">V
                        <sub>i</sub>
                    </italic>(
                    <italic toggle="yes">t</italic> &#x2013; 1)  is the speed of the particle 
                    <italic toggle="yes">i</italic> at moment t-1, 
                    <italic toggle="yes">V
                        <sub>i</sub>
                    </italic>(
                    <italic toggle="yes">t</italic>) is the speed of the particle 
                    <italic toggle="yes">i</italic> at moment t, 
                    <italic toggle="yes">a</italic>
                    <sub>1</sub> and 
                    <italic toggle="yes">a</italic>
                    <sub>2</sub> are constants bigger than 0, 
                    <italic toggle="yes">r</italic>
                    <sub>1</sub> and 
                    <italic toggle="yes">r</italic>
                    <sub>2</sub> are random numbers between 0 and 1. 
                    <italic toggle="yes">&#x3BB;</italic> is the construction factor, as 
                    <xref ref-type="other" rid="e36">Equation (36)</xref>. Thus, the position function of particle 
                    <italic toggle="yes">i</italic> as 
                    <xref ref-type="other" rid="e37">Equation (37)</xref>. Finally, take the cost function (
                    <xref ref-type="other" rid="e34">34</xref>) as the position of the particles, and then, given the global optimal solution and the local optimal solution of the cost function, the iterative process is used to estimate the optimal solution of the dynamic parameters.</p>
                <disp-formula id="e36">
                    <mml:math display="block" id="math37">
                        <mml:mspace width="11em"/>
                        <mml:mrow>
                            <mml:mi>&#x3BB;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mfrac>
                                <mml:mn>2</mml:mn>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo>|</mml:mo>
                                        <mml:mrow>
                                            <mml:mn>2</mml:mn>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>b</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msqrt>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mi>b</mml:mi>
                                                        <mml:mn>2</mml:mn>
                                                    </mml:msup>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                    <mml:mi>b</mml:mi>
                                                </mml:mrow>
                                            </mml:msqrt>
                                        </mml:mrow>
                                        <mml:mo>|</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:mfrac>
                            <mml:mo>,</mml:mo>
                            <mml:mi>b</mml:mi>
                            <mml:mo>&gt;</mml:mo>
                            <mml:mn>4</mml:mn>
                        </mml:mrow>
                        <mml:mspace width="11.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>36</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <disp-formula id="e37">
                    <mml:math display="block" id="math38">
                        <mml:mspace width="13em"/>
                        <mml:mrow>
                            <mml:msub>
                                <mml:mi>P</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>P</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                                <mml:mi>V</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mi>t</mml:mi>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:mrow>
                        <mml:mspace width="11.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>37</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>The intelligent optimization algorithm can obtain a better identification result under the premise of sufficient data and can ensure the global optimum while ensuring the local optimum. However, there is also a problem that the data cannot be converged, which also causes the number of iterations of the particle swarm algorithm to be uncertain.</p>
                <p>The confidence of the dynamic model with identified dynamic parameters should be verified
                    <sup>
                        <xref ref-type="bibr" rid="ref-4">4</xref>
                    </sup>. The specific trajectory is used to implement verification experiments. Then, the difference between the curve of actual joint torque and the curve of estimated joint torque from the dynamic model will be intuitively presented, such as reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-35">35</xref>
                    </sup>. Numerically, there are three methods to illustrate the difference between the actual torque and estimated torque: Root means square error (RMS), residual standard deviation (RSD), and protocol index (AI)
                    <sup>
                        <xref ref-type="bibr" rid="ref-36">36</xref>
                    </sup>. The expressions of these methods are shown in 
                    <xref ref-type="other" rid="e38">Equation (38)</xref>.</p>
                <disp-formula id="e38">
                    <mml:math display="block" id="math39">
                        <mml:mspace width="13em"/>
                        <mml:mtable columnalign="left">
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mi>R</mml:mi>
                                    <mml:mi>M</mml:mi>
                                    <mml:mi>S</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:msqrt>
                                        <mml:mrow>
                                            <mml:mfrac>
                                                <mml:mrow>
                                                    <mml:mstyle displaystyle="true">
                                                        <mml:msubsup>
                                                            <mml:mo>&#x2211;</mml:mo>
                                                            <mml:mrow>
                                                                <mml:mi>i</mml:mi>
                                                                <mml:mo>=</mml:mo>
                                                                <mml:mn>1</mml:mn>
                                                            </mml:mrow>
                                                            <mml:mi>N</mml:mi>
                                                        </mml:msubsup>
                                                        <mml:mrow>
                                                            <mml:msup>
                                                                <mml:mrow>
                                                                    <mml:mo stretchy="false">(</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>o</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo>&#x2212;</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>p</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo stretchy="false">)</mml:mo>
                                                                </mml:mrow>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msup>
                                                        </mml:mrow>
                                                    </mml:mstyle>
                                                </mml:mrow>
                                                <mml:mi>N</mml:mi>
                                            </mml:mfrac>
                                        </mml:mrow>
                                    </mml:msqrt>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mi>R</mml:mi>
                                    <mml:mi>S</mml:mi>
                                    <mml:mi>D</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:msqrt>
                                        <mml:mrow>
                                            <mml:mfrac>
                                                <mml:mrow>
                                                    <mml:mstyle displaystyle="true">
                                                        <mml:msubsup>
                                                            <mml:mo>&#x2211;</mml:mo>
                                                            <mml:mrow>
                                                                <mml:mi>i</mml:mi>
                                                                <mml:mo>=</mml:mo>
                                                                <mml:mn>1</mml:mn>
                                                            </mml:mrow>
                                                            <mml:mi>N</mml:mi>
                                                        </mml:msubsup>
                                                        <mml:mrow>
                                                            <mml:msup>
                                                                <mml:mrow>
                                                                    <mml:mo stretchy="false">(</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>o</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo>&#x2212;</mml:mo>
                                                                    <mml:msub>
                                                                        <mml:mi>p</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                    </mml:msub>
                                                                    <mml:mo stretchy="false">)</mml:mo>
                                                                </mml:mrow>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msup>
                                                        </mml:mrow>
                                                    </mml:mstyle>
                                                </mml:mrow>
                                                <mml:mrow>
                                                    <mml:mstyle displaystyle="true">
                                                        <mml:msubsup>
                                                            <mml:mo>&#x2211;</mml:mo>
                                                            <mml:mrow>
                                                                <mml:mi>i</mml:mi>
                                                                <mml:mo>=</mml:mo>
                                                                <mml:mn>1</mml:mn>
                                                            </mml:mrow>
                                                            <mml:mi>N</mml:mi>
                                                        </mml:msubsup>
                                                        <mml:mrow>
                                                            <mml:msubsup>
                                                                <mml:mi>o</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                                <mml:mn>2</mml:mn>
                                                            </mml:msubsup>
                                                        </mml:mrow>
                                                    </mml:mstyle>
                                                </mml:mrow>
                                            </mml:mfrac>
                                        </mml:mrow>
                                    </mml:msqrt>
                                </mml:mtd>
                            </mml:mtr>
                            <mml:mtr>
                                <mml:mtd>
                                    <mml:mi>A</mml:mi>
                                    <mml:mi>I</mml:mi>
                                    <mml:mo>=</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>i</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mi>N</mml:mi>
                                                </mml:msubsup>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>o</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                            <mml:msub>
                                                                <mml:mi>p</mml:mi>
                                                                <mml:mi>i</mml:mi>
                                                            </mml:msub>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mn>2</mml:mn>
                                                    </mml:msup>
                                                </mml:mrow>
                                            </mml:mstyle>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mstyle displaystyle="true">
                                                <mml:msubsup>
                                                    <mml:mo>&#x2211;</mml:mo>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mi>N</mml:mi>
                                                </mml:msubsup>
                                                <mml:mrow>
                                                    <mml:msup>
                                                        <mml:mrow>
                                                            <mml:mo stretchy="false">(</mml:mo>
                                                            <mml:mrow>
                                                                <mml:mo>|</mml:mo>
                                                                <mml:mrow>
                                                                    <mml:msubsup>
                                                                        <mml:mi>o</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                        <mml:mo>'</mml:mo>
                                                                    </mml:msubsup>
                                                                </mml:mrow>
                                                                <mml:mo>|</mml:mo>
                                                            </mml:mrow>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                            <mml:mrow>
                                                                <mml:mo>|</mml:mo>
                                                                <mml:mrow>
                                                                    <mml:msubsup>
                                                                        <mml:mi>p</mml:mi>
                                                                        <mml:mi>i</mml:mi>
                                                                        <mml:mo>'</mml:mo>
                                                                    </mml:msubsup>
                                                                </mml:mrow>
                                                                <mml:mo>|</mml:mo>
                                                            </mml:mrow>
                                                            <mml:mo stretchy="false">)</mml:mo>
                                                        </mml:mrow>
                                                        <mml:mn>2</mml:mn>
                                                    </mml:msup>
                                                </mml:mrow>
                                            </mml:mstyle>
                                        </mml:mrow>
                                    </mml:mfrac>
                                </mml:mtd>
                            </mml:mtr>
                        </mml:mtable>
                        <mml:mspace width="11.5em"/>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>38</mml:mn>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:math>
                </disp-formula>
                <p>Different identification methods will generate different results. Thus, how to choose an identification method is a basic issue. The Reference
                    <sup>
                        <xref ref-type="bibr" rid="ref-37">37</xref>
                    </sup> presented many comparative experiments and discussions on several identification methods, such as least squares, maximum likelihood estimation, extended Kalman filtering, instrumental variable method, and recurrent neural networks. These experiments were implemented on TX40 and RV2SQ manipulators. Three evaluation indicators are given: noise immunity, estimation accuracy, and convergence speed. A summary from these three aspects
                    <sup>
                        <xref ref-type="bibr" rid="ref-37">37</xref>
                    </sup>: a. all methods are very sensitive to the noise of the joint position signal, on the contrary, the joint torque measurement noise has a relatively small impact on the estimated statistical characteristics of these methods; b. Under the same noise environment, the instrumental variable method has higher identification accuracy; c instrumental variable method also has the fastest convergence. A comparison of typical identification methods is shown in 
                    <xref ref-type="table" rid="T2">Table 2</xref>.</p>
                <table-wrap id="T2" orientation="portrait" position="anchor">
                    <label>Table 2. </label>
                    <caption>
                        <title>Identification methods comparison
                            <sup>
                                <xref ref-type="bibr" rid="ref-37">37</xref>
                            </sup>.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="center" colspan="1" rowspan="1" valign="top">Methods</th>
                                <th align="center" colspan="1" rowspan="1" valign="top">Theory</th>
                                <th align="center" colspan="1" rowspan="1" valign="top">Advantage</th>
                                <th align="center" colspan="1" rowspan="1" valign="top">Disadvantage</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="center" colspan="1" rowspan="1" valign="top">Linear least square
                                    <break/>method.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Least square</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">easy to implement; Minimize the root
                                    <break/>mean square error</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The identification result is not
                                    <break/>accurate enough</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1" valign="top">Closed-loop output
                                    <break/>error method.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Non-linear
                                    <break/>least square</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">the identification accuracy is high; </td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The experiment is complicated</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1" valign="top">Instrumental variable
                                    <break/>method.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Least square</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The identification accuracy is high; the
                                    <break/>rate of convergence is fast.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">A high detailed direct dynamic
                                    <break/>simulation model is necessary</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1" valign="top">Partial swarm
                                    <break/>optimization</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Evolutionary
                                    <break/>algorithm</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The identification accuracy is high.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The rate of convergence is uncertain.</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1" valign="top">Maximum. Likelihood
                                    <break/>estimation.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Statistical</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">Noise immunity is good.</td>
                                <td align="center" colspan="1" rowspan="1" valign="top">The rate of convergence is slow.</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
            </sec>
        </sec>
        <sec>
            <title>3 The physical feasibility and consistency of dynamic parameters</title>
            <p id="s3">Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-38">38</xref>
                </sup> first mentioned that the physical feasibility of the dynamic parameters would affect the accuracy of the dynamic model in simulation in 2000. However, scholars did not pay more attention to this problem until reference
                <sup>
                    <xref ref-type="bibr" rid="ref-39">39</xref>
                </sup>. The physical feasibility became a research hotspot in the dynamic parameters identification with the development of human-robot interaction. When dynamic parameters are estimated by the numerical method, the value of dynamic parameters may be less than 0, so the dynamic parameters are physically infeasible. This problem reduces the accuracy of the dynamic model when we use the Newton-Euler recursion method in simulation.</p>
            <p>The physical feasibility of dynamic parameters is that the values of mass and inertia matrix of links must be greater than or equal to 0. Thus, the criteria of physical feasibility must be discussed first. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-39">39</xref>
                </sup> optimized the identification of dynamic parameters with constraints in 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems(IROS). Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-39">39</xref>
                </sup> uses CAD parameters as prior values to optimize the identified dynamic parameters so that the physical feasibility of dynamic parameters can be ensured. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-40">40</xref>
                </sup> also uses CAD dynamic parameters as prior values to optimize the identification parameters and uses the simulated annealing algorithm (SA) to achieve an optimal identification of the standard dynamic parameters. However, the accuracy of CAD parameters is limited by the CAD software and the mechanical accuracy of the manipulators. Therefore, reference
                <sup>
                    <xref ref-type="bibr" rid="ref-11">11</xref>
                </sup> proposed a method based on linear matrix inequality, the inequality constraints as 
                <xref ref-type="other" rid="e39">Equation (39)</xref>. Moreover, the semi-definite programming method is used to estimate optimal dynamic parameters, which are physical feasibility. The dynamic parameter identification method can only identify base dynamic parameters. Thus, the optimization problem can be described as how to map from the physical feasibility set of standard dynamic parameters to the physical feasibility set of base parameters. 
                <xref ref-type="fig" rid="f5">Figure 5</xref> shows the physical feasibility sets in standard dynamic parameter set and base dynamic parameter set, and an intermediate virtual space 
                <italic toggle="yes">D
                    <sub>&#x3B2;</sub>
                </italic> is used to translate the space 
                <italic toggle="yes">D
                    <sub>&#x3B2;</sub>
                </italic> to space 
                <italic toggle="yes">D
                    <sub>&#x3B2;B</sub>
                </italic>, which is illustrated in 
                <xref ref-type="bibr" rid="ref-11">11</xref>.</p>
            <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                <label>Figure 5. </label>
                <caption>
                    <title>Physical feasibility set in standard dynamic parameter set and physical feasibility set in base dynamic parameter.</title>
                    <p>
                        <italic toggle="yes">&#x3B4;</italic> is the standard dynamic parameter set; 
                        <italic toggle="yes">D</italic> is the physical feasibility set in space 
                        <italic toggle="yes">&#x3B4;</italic>;  
                        <italic toggle="yes">&#x3B2;</italic> is the base dynamic parameter base; 
                        <italic toggle="yes">D
                            <sub>&#x3B2;B</sub>
                        </italic> is the physical feasibility set in space 
                        <italic toggle="yes">&#x3B2;</italic>. 
                        <italic toggle="yes">D
                            <sub>&#x3B2;</sub>
                        </italic> is the intermediate virtual physical feasibility space described in reference
                        <sup>
                            <xref ref-type="bibr" rid="ref-11">11</xref>
                        </sup>.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure5.gif"/>
            </fig>
            <disp-formula id="e39">
                <mml:math display="block" id="math40">
                    <mml:mspace width="13em"/>
                    <mml:mrow>
                        <mml:mrow>
                            <mml:mo>{</mml:mo>
                            <mml:mrow>
                                <mml:mtable columnalign="right">
                                    <mml:mtr columnalign="right">
                                        <mml:mtd columnalign="right">
                                            <mml:mtable columnalign="left">
                                                <mml:mtr columnalign="right">
                                                    <mml:mtd columnalign="right">
                                                        <mml:msub>
                                                            <mml:mi>m</mml:mi>
                                                            <mml:mi>i</mml:mi>
                                                        </mml:msub>
                                                        <mml:mo>&gt;</mml:mo>
                                                        <mml:mn>0</mml:mn>
                                                    </mml:mtd>
                                                </mml:mtr>
                                                <mml:mtr>
                                                    <mml:mtd>
                                                        <mml:msub>
                                                            <mml:mi>L</mml:mi>
                                                            <mml:mi>i</mml:mi>
                                                        </mml:msub>
                                                        <mml:mo>&#x2212;</mml:mo>
                                                        <mml:mfrac>
                                                            <mml:mn>1</mml:mn>
                                                            <mml:mrow>
                                                                <mml:msub>
                                                                    <mml:mi>m</mml:mi>
                                                                    <mml:mi>i</mml:mi>
                                                                </mml:msub>
                                                            </mml:mrow>
                                                        </mml:mfrac>
                                                        <mml:mi>S</mml:mi>
                                                        <mml:msup>
                                                            <mml:mrow>
                                                                <mml:mo stretchy="false">(</mml:mo>
                                                                <mml:msub>
                                                                    <mml:mi>l</mml:mi>
                                                                    <mml:mi>i</mml:mi>
                                                                </mml:msub>
                                                                <mml:mo stretchy="false">)</mml:mo>
                                                            </mml:mrow>
                                                            <mml:mi>T</mml:mi>
                                                        </mml:msup>
                                                        <mml:mi>S</mml:mi>
                                                        <mml:mo stretchy="false">(</mml:mo>
                                                        <mml:msub>
                                                            <mml:mi>l</mml:mi>
                                                            <mml:mi>i</mml:mi>
                                                        </mml:msub>
                                                        <mml:mo stretchy="false">)</mml:mo>
                                                        <mml:mo>&gt;</mml:mo>
                                                        <mml:mn>0</mml:mn>
                                                    </mml:mtd>
                                                </mml:mtr>
                                            </mml:mtable>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                        </mml:mrow>
                    </mml:mrow>
                    <mml:mspace width="12em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>39</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Where 
                <italic toggle="yes">l
                    <sub>i</sub>
                </italic> is first moment of link 
                <italic toggle="yes">i</italic>,
                <italic toggle="yes">l
                    <sub>i</sub>
                </italic> = [
                <italic toggle="yes">l
                    <sub>i,x</sub>
                </italic> 
                <italic toggle="yes">l
                    <sub>i,y</sub>
                </italic> 
                <italic toggle="yes">l
                    <sub>i,z</sub>
                </italic>]
                <italic toggle="yes">
                    <sup>T</sup>
                </italic> &#x2013; 
                <italic toggle="yes">m
                    <sub>k</sub>
                </italic>
                <italic toggle="yes">r
                    <sub>k</sub>
                </italic> &#x2013; [
                <italic toggle="yes">m
                    <sub>i</sub>
                </italic>
                <italic toggle="yes">r
                    <sub>i,x</sub>
                </italic> 
                <italic toggle="yes">m
                    <sub>i</sub>
                </italic>
                <italic toggle="yes">r
                    <sub>i,y</sub>
                </italic> 
                <italic toggle="yes">m
                    <sub>i</sub>
                </italic>
                <italic toggle="yes">r
                    <sub>i,z</sub>
                </italic>]
                <italic toggle="yes">
                    <sup>T</sup>
                </italic>, 
                <italic toggle="yes">r
                    <sub>i</sub>
                </italic> is the centroid of link, 
                <italic toggle="yes">r
                    <sub>i</sub>
                </italic> = [
                <italic toggle="yes">r
                    <sub>i,x</sub>
                </italic> 
                <italic toggle="yes">r
                    <sub>i,y</sub>
                </italic> 
                <italic toggle="yes">r
                    <sub>i,z</sub>
                </italic>].
                <italic toggle="yes">S</italic>(
                <italic toggle="yes">x</italic>): Skew symmetric matrix operator，as 
                <xref ref-type="other" rid="e41">Equation (40)</xref>.</p>
            <disp-formula id="e40">
                <mml:math display="block" id="math41">
                    <mml:mspace width="10em"/>
                    <mml:mrow>
                        <mml:mi>S</mml:mi>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mi>x</mml:mi>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                            <mml:mo>[</mml:mo>
                            <mml:mrow>
                                <mml:mtable>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mn>0</mml:mn>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>3</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                                <mml:mspace width="0.6em"/>
                                <mml:mtable>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>3</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mn>0</mml:mn>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>1</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                                <mml:mspace width="0.6em"/>
                                <mml:mtable>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mn>1</mml:mn>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mn>0</mml:mn>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                            <mml:mo>]</mml:mo>
                        </mml:mrow>
                        <mml:mo>,</mml:mo>
                        <mml:mspace width="0.1em"/>
                        <mml:mi>x</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                            <mml:mo>[</mml:mo>
                            <mml:mtable columnalign="left">
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mn>1</mml:mn>
                                        </mml:msub>
                                    </mml:mtd>
                                </mml:mtr>
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mn>2</mml:mn>
                                        </mml:msub>
                                    </mml:mtd>
                                </mml:mtr>
                                <mml:mtr>
                                    <mml:mtd>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mn>3</mml:mn>
                                        </mml:msub>
                                    </mml:mtd>
                                </mml:mtr>
                            </mml:mtable>
                            <mml:mo>]</mml:mo>
                        </mml:mrow>
                    </mml:mrow>
                    <mml:mspace width="10.5em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>40</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>To further optimize the accuracy of identification results, reference
                <sup>
                    <xref ref-type="bibr" rid="ref-41">41</xref>
                </sup> proposed another physical consistency constraint, a triangular inequality of the inertial matrix. Such as 
                <xref ref-type="other" rid="e41">Equation (41)</xref>. 
                <italic toggle="yes">I
                    <sub>i,x</sub>
                </italic>, 
                <italic toggle="yes">I
                    <sub>i,y</sub>
                </italic>, 
                <italic toggle="yes">I
                    <sub>i,z</sub>
                </italic> are the characteristic roots of the inertial matrix, which guarantees the physical consistency of identified dynamic parameters. The problem of dynamic identification is described as a manifold optimization problem. Moreover, the constraint proposed in 
                <xref ref-type="bibr" rid="ref-41">41</xref> is a relatively complete physical meaning constraint. A novel optimization problem is introduced by these constraints.</p>
            <disp-formula id="e41">
                <mml:math display="block" id="math42">
                    <mml:mspace width="15em"/>
                    <mml:mrow>
                        <mml:mrow>
                            <mml:mo>{</mml:mo>
                            <mml:mrow>
                                <mml:mtable>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>x</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>+</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>y</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>&gt;</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>z</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>y</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>+</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>z</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>&gt;</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>x</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr>
                                        <mml:mtd>
                                            <mml:mrow>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>z</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>+</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>x</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                                <mml:mo>&gt;</mml:mo>
                                                <mml:msub>
                                                    <mml:mrow>
                                                        <mml:mover>
                                                            <mml:mi>I</mml:mi>
                                                            <mml:mo>&#x2212;</mml:mo>
                                                        </mml:mover>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>,</mml:mo>
                                                        <mml:mi>y</mml:mi>
                                                    </mml:mrow>
                                                </mml:msub>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                        </mml:mrow>
                    </mml:mrow>
                    <mml:mspace width="13em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>41</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>This optimization problem of physical feasibility and physical consistency is to find a local minimum value. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-42">42</xref>
                </sup> combines the inertial matrix triangle inequality to the LMI-SDP (linear matrix inequality-semi-definite programming) framework, and gives the specific implementation process. In addition, under the framework of linear matrix inequalities and inertial triangular matrix inequalities, reference
                <sup>
                    <xref ref-type="bibr" rid="ref-43">43</xref>
                </sup> gives an optimization method based on the penalty mechanism, and reference
                <sup>
                    <xref ref-type="bibr" rid="ref-44">44</xref>
                </sup> uses a global optimization method.</p>
            <p>The physical feasibility and consistency of dynamic parameters is a hotspot of current dynamic parameter identification research. By ensuring the physical feasibility and consistency of the dynamic parameters, the dynamic parameters can be identified more accurately. At present, the most discussed constraint is linear matrix inequality and the inertial triangular matrix inequality. However, the physical feasibility and consistency problems have multiple minima value in a local area, and it is necessary to choose a suitable optimization method to calculate the optimal value.</p>
        </sec>
        <sec>
            <title>4 Friction force model and identification method</title>
            <p id="s4">
                <xref ref-type="other" rid="e1">Equation (1)</xref> is a basic dynamic mathematical model in joint space without considering friction, but a complete dynamic model must include friction. The friction force is a key factor that affects the accuracy of the dynamic model of the manipulator, especially in the process of joint commutation. However, the friction force is a typical nonlinear force, and there are greater difficulties in modeling friction, including the research on plastic deformation, fluid mechanics, wave transmission, and material science
                <sup>
                    <xref ref-type="bibr" rid="ref-45">45</xref>
                </sup>. The methods of friction model generally use empirical modeling methods. The friction modeling method can be divided into two categories: static friction model and dynamic friction model.</p>
            <p>The structure of the static friction model is simple and intuitive, and the static friction model is a static function of the relative speed of the contact surfaces, so it is mostly used in engineering applications. In robotics, the most familiar static friction model is the Coulomb friction model combined with the viscous friction model, as 
                <xref ref-type="other" rid="e42">Equation (42)</xref>
                <sup>
                    <xref ref-type="bibr" rid="ref-45">45</xref>
                </sup>, 
                <italic toggle="yes">f
                    <sub>c</sub>
                </italic> is the Coulomb friction and  
                <italic toggle="yes">f
                    <sub>v</sub>
                </italic> is the viscous friction. The relationship between the friction force and friction model parameter is linear. Thus, linear least squares can also be used for identifying friction model parameters, and the set of dynamic parameters can be expanded, as 
                <xref ref-type="other" rid="e43">Equation (43)</xref>
                <sup>
                    <xref ref-type="bibr" rid="ref-45">45</xref>
                </sup>. The static friction model has been used in several papers, such as reference
                <sup>
                    <xref ref-type="bibr" rid="ref-46">46</xref>,
                    <xref ref-type="bibr" rid="ref-47">47</xref>
                </sup>.</p>
            <disp-formula id="e42">
                <mml:math display="block" id="math43">
                    <mml:mspace width="12em"/>
                    <mml:mrow>
                        <mml:msub>
                            <mml:mi>&#x3C4;</mml:mi>
                            <mml:mi>f</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                            <mml:mi>f</mml:mi>
                            <mml:mi>c</mml:mi>
                        </mml:msub>
                        <mml:mi>s</mml:mi>
                        <mml:mi>i</mml:mi>
                        <mml:mi>g</mml:mi>
                        <mml:mi>n</mml:mi>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mover>
                            <mml:mi>q</mml:mi>
                            <mml:mo>&#x2022;</mml:mo>
                        </mml:mover>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:mo>+</mml:mo>
                        <mml:msub>
                            <mml:mi>f</mml:mi>
                            <mml:mi>v</mml:mi>
                        </mml:msub>
                        <mml:mover>
                            <mml:mi>q</mml:mi>
                            <mml:mo>&#x2022;</mml:mo>
                        </mml:mover>
                    </mml:mrow>
                    <mml:mspace width="14em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>42</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <disp-formula id="e43">
                <mml:math display="block" id="math44">
                    <mml:mrow>
                        <mml:msub>
                            <mml:mi>X</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:mo stretchy="false">[</mml:mo>
                        <mml:mi>X</mml:mi>
                        <mml:msub>
                            <mml:mi>X</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:mi>X</mml:mi>
                        <mml:msub>
                            <mml:mi>Y</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:mi>X</mml:mi>
                        <mml:msub>
                            <mml:mi>Z</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:mi>Y</mml:mi>
                        <mml:msub>
                            <mml:mi>Y</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:mi>Y</mml:mi>
                        <mml:msub>
                            <mml:mi>Z</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:mi>Z</mml:mi>
                        <mml:msub>
                            <mml:mi>Z</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>m</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>m</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:msub>
                            <mml:mi>x</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>m</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:msub>
                            <mml:mi>y</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>m</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:msub>
                            <mml:mi>z</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>f</mml:mi>
                            <mml:mi>c</mml:mi>
                        </mml:msub>
                        <mml:mo>,</mml:mo>
                        <mml:msub>
                            <mml:mi>f</mml:mi>
                            <mml:mi>v</mml:mi>
                        </mml:msub>
                        <mml:mo stretchy="false">]</mml:mo>
                    </mml:mrow>
                    <mml:mspace width="10em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>43</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>However, the static friction model cannot fully illustrate the dynamic characteristics of the friction, especially the transition from static process to sliding friction, that is, the pre-sliding process. Therefore, many scholars have studied the dynamic friction models
                <sup>
                    <xref ref-type="bibr" rid="ref-45">45</xref>
                </sup>. The dynamic friction models are described by a set of state variables that not only considers the current state of the system, but also consider the past state of the system. The methods of dynamic friction models include the Dahl model
                <sup>
                    <xref ref-type="bibr" rid="ref-48">48</xref>
                </sup>, Bristle model
                <sup>
                    <xref ref-type="bibr" rid="ref-49">49</xref>,
                    <xref ref-type="bibr" rid="ref-50">50</xref>
                </sup>, Bliman-Sorine model
                <sup>
                    <xref ref-type="bibr" rid="ref-47">47</xref>
                </sup>, LuGre model
                <sup>
                    <xref ref-type="bibr" rid="ref-48">48</xref>
                </sup>, and maxwell sliding model
                <sup>
                    <xref ref-type="bibr" rid="ref-51">51</xref>
                </sup>. The LuGre model is an improvement of the Dahl model, combined with other dynamic characteristics of friction, such as the Strebeck effect. Adding additional dynamic characteristics can also form an extension of the LuGre model, such as elasto-plastic model
                <sup>
                    <xref ref-type="bibr" rid="ref-52">52</xref>
                </sup>. These models have been used to compensate for the joint friction force errors, such as reference
                <sup>
                    <xref ref-type="bibr" rid="ref-53">53</xref>
                </sup> and reference
                <sup>
                    <xref ref-type="bibr" rid="ref-54">54</xref>
                </sup>. However, neither the Dahl model nor the LuGre model specifies the characteristics of friction. The reference
                <sup>
                    <xref ref-type="bibr" rid="ref-55">55</xref>
                </sup> proposed a generalized maxwell sliding friction model. Moreover, the reference
                <sup>
                    <xref ref-type="bibr" rid="ref-55">55</xref>
                </sup> compares several different dynamic friction models and describes some specific characteristics of friction force. These characteristics are also the evaluation index for describing the quality of a friction model. Sliding process, Stribeck characteristics, friction hysteresis, separation force, and drift characteristics. References
                <sup>
                    <xref ref-type="bibr" rid="ref-56">56</xref>,
                    <xref ref-type="bibr" rid="ref-57">57</xref>
                </sup> use the generalized Maxwell slip model (GMS) to design an adaptive friction compensation control to improve the accuracy of friction force compensation.</p>
            <p>Dahl model:</p>
            <p>The Dahl model
                <sup>
                    <xref ref-type="bibr" rid="ref-48">48</xref>,
                    <xref ref-type="bibr" rid="ref-58">58</xref>
                </sup> is as in 
                <xref ref-type="other" rid="e44">Equation (44)</xref>, where 
                <italic toggle="yes">x</italic> is the relative sliding position of the two metal surfaces, 
                <italic toggle="yes">F</italic> is the friction force, 
                <italic toggle="yes">F
                    <sub>c</sub>
                </italic> is the Coulomb friction, 
                <italic toggle="yes">&#x3C3;</italic> is the stiffness coefficient, and 
                <italic toggle="yes">&#x3B1;</italic> is the coefficient that determines the stress-strain curve.</p>
            <disp-formula id="e44">
                <mml:math display="block" id="math45">
                    <mml:mspace width="13em"/>
                    <mml:mrow>
                        <mml:mfrac>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>F</mml:mi>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>x</mml:mi>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>=</mml:mo>
                        <mml:mi>&#x3C3;</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mfrac>
                                <mml:mi>F</mml:mi>
                                <mml:mrow>
                                    <mml:msub>
                                        <mml:mi>F</mml:mi>
                                        <mml:mi>c</mml:mi>
                                    </mml:msub>
                                </mml:mrow>
                            </mml:mfrac>
                            <mml:mi>sgn</mml:mi>
                            <mml:mo>&#x2061;</mml:mo>
                            <mml:mi>v</mml:mi>
                        </mml:mrow>
                        <mml:msup>
                            <mml:mo stretchy="false">)</mml:mo>
                            <mml:mi>&#x3B1;</mml:mi>
                        </mml:msup>
                    </mml:mrow>
                    <mml:mspace width="12.5em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>44</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>The Dahl model describes the change in friction between two metal surfaces. Compared with the static friction model, it additionally considers the effect of strain on friction. However, the Dahl model neither considers the Stribeck effect nor the sticking problem.</p>
            <p>LuGre model:</p>
            <p>The LuGre model
                <sup>
                    <xref ref-type="bibr" rid="ref-48">48</xref>
                </sup> is shown in 
                <xref ref-type="other" rid="e45">Equation (45)</xref>, where  
                <italic toggle="yes">z</italic> represents the deformation of the Bristles, 
                <italic toggle="yes">&#x3C3;</italic>
                <sub>0</sub> is the stiffness of the brush, 
                <italic toggle="yes">&#x3C3;</italic>
                <sub>1</sub>(
                <italic toggle="yes">v</italic>)  is the damping of the Bristles, 
                <italic toggle="yes">v</italic>  is the relative velocity of the contact surface, and 
                <italic toggle="yes">f</italic>(
                <italic toggle="yes">v</italic>) is the viscous friction. The LuGre model regards the contact points of two contact surfaces as the bristles.</p>
            <disp-formula id="e45">
                <mml:math display="block" id="math46">
                    <mml:mspace width="11em"/>
                    <mml:mrow>
                        <mml:mrow>
                            <mml:mo>{</mml:mo>
                            <mml:mrow>
                                <mml:mtable columnalign="left">
                                    <mml:mtr columnalign="left">
                                        <mml:mtd columnalign="left">
                                            <mml:mrow>
                                                <mml:mfrac>
                                                    <mml:mrow>
                                                        <mml:mi>d</mml:mi>
                                                        <mml:mi>z</mml:mi>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>d</mml:mi>
                                                        <mml:mi>t</mml:mi>
                                                    </mml:mrow>
                                                </mml:mfrac>
                                                <mml:mo>=</mml:mo>
                                                <mml:mi>v</mml:mi>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>&#x3C3;</mml:mi>
                                                    <mml:mn>0</mml:mn>
                                                </mml:msub>
                                                <mml:mfrac>
                                                    <mml:mrow>
                                                        <mml:mrow>
                                                            <mml:mo>|</mml:mo>
                                                            <mml:mi>v</mml:mi>
                                                            <mml:mo>|</mml:mo>
                                                        </mml:mrow>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>g</mml:mi>
                                                        <mml:mo stretchy="false">(</mml:mo>
                                                        <mml:mi>v</mml:mi>
                                                        <mml:mo stretchy="false">)</mml:mo>
                                                    </mml:mrow>
                                                </mml:mfrac>
                                                <mml:mi>z</mml:mi>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                    <mml:mtr columnalign="left">
                                        <mml:mtd columnalign="left">
                                            <mml:mrow>
                                                <mml:mi>F</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>&#x3C3;</mml:mi>
                                                    <mml:mn>0</mml:mn>
                                                </mml:msub>
                                                <mml:mi>z</mml:mi>
                                                <mml:mo>+</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>&#x3C3;</mml:mi>
                                                    <mml:mn>1</mml:mn>
                                                </mml:msub>
                                                <mml:mo stretchy="false">(</mml:mo>
                                                <mml:mi>v</mml:mi>
                                                <mml:mo stretchy="false">)</mml:mo>
                                                <mml:mfrac>
                                                    <mml:mrow>
                                                        <mml:mi>d</mml:mi>
                                                        <mml:mi>z</mml:mi>
                                                    </mml:mrow>
                                                    <mml:mrow>
                                                        <mml:mi>d</mml:mi>
                                                        <mml:mi>t</mml:mi>
                                                    </mml:mrow>
                                                </mml:mfrac>
                                                <mml:mo>+</mml:mo>
                                                <mml:mi>f</mml:mi>
                                                <mml:mo stretchy="false">(</mml:mo>
                                                <mml:mi>v</mml:mi>
                                                <mml:mo stretchy="false">)</mml:mo>
                                            </mml:mrow>
                                        </mml:mtd>
                                    </mml:mtr>
                                </mml:mtable>
                            </mml:mrow>
                        </mml:mrow>
                    </mml:mrow>
                    <mml:mspace width="12.5em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>45</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Generalized Maxwell slip model (GMS):</p>
            <p>The generalized Maxwell slip model
                <sup>
                    <xref ref-type="bibr" rid="ref-51">51</xref>
                </sup> is composed of multiple essential friction models connected in parallel, as shown in 
                <xref ref-type="fig" rid="f6">Figure 6</xref>, and the LuGre model is used to give the expression of essential friction, as in 
                <xref ref-type="other" rid="e46">Equation (46)</xref>, where 
                <italic toggle="yes">z</italic> is the deformation of the Bristles, 
                <italic toggle="yes">k
                    <sub>i</sub>
                </italic> is the stiffness, 
                <italic toggle="yes">W
                    <sub>i</sub>
                </italic> is slip force limit. Comparing 
                <xref ref-type="other" rid="e46">Equation (46)</xref> and 
                <xref ref-type="other" rid="e45">Equation (45)</xref>, the middle term and viscous friction of 
                <xref ref-type="other" rid="e45">Equation (45)</xref> are omitted. First, the middle term of 
                <xref ref-type="other" rid="e45">Equation (45)</xref> has no corresponding physical explanation. Second, viscous friction is additional superimposed friction and is not a component of the essential friction models. The general form of the first derivative of 
                <italic toggle="yes">z</italic> is shown in 
                <xref ref-type="other" rid="e47">formula (47)</xref>, where 
                <italic toggle="yes">g</italic>*(
                <italic toggle="yes">t</italic>)  and 
                <italic toggle="yes">h</italic>*(
                <italic toggle="yes">t</italic>) need to be defined. Under the premise of steady state, 
                <italic toggle="yes">dz</italic> / 
                <italic toggle="yes">dt</italic> = 0, 
                <italic toggle="yes">g</italic>*(
                <italic toggle="yes">t</italic>) = 
                <italic toggle="yes">z
                    <sub>ss</sub>
                </italic> can be calculated, 
                <italic toggle="yes">z
                    <sub>ss</sub>
                </italic> is the stiffness of the Bristles in the steady-state, therefore, 
                <xref ref-type="other" rid="e47">Equation (47)</xref> can be rewritten as 
                <xref ref-type="other" rid="e48">Equation (48)</xref>,  
                <italic toggle="yes">v</italic> is the relative velocity of the contact surface, and 
                <italic toggle="yes">s</italic>(
                <italic toggle="yes">v</italic>)  is the Stribeck curve. 
                <italic toggle="yes">h</italic>(
                <italic toggle="yes">t</italic>) can be approximated as 
                <italic toggle="yes">C</italic>/ |
                <italic toggle="yes">v</italic>|, 
                <italic toggle="yes">C</italic> is a constant.</p>
            <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                <label>Figure 6. </label>
                <caption>
                    <title>The model of Generalized Maxwell slip friction model.</title>
                    <p>The 
                        <italic toggle="yes">z</italic> is the deformation of the Bristles; 
                        <italic toggle="yes">k
                            <sub>i</sub>
                        </italic> is the stiffness;  
                        <italic toggle="yes">W
                            <sub>i</sub>
                        </italic> is the slip force.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure6.gif"/>
            </fig>
            <disp-formula id="e46">
                <mml:math display="block" id="math47">
                    <mml:mspace width="15em"/>
                    <mml:mrow>
                        <mml:mi>F</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                            <mml:mi>&#x3C3;</mml:mi>
                            <mml:mn>0</mml:mn>
                        </mml:msub>
                        <mml:mi>z</mml:mi>
                    </mml:mrow>
                    <mml:mspace width="17em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>46</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <disp-formula id="e47">
                <mml:math display="block" id="math48">
                    <mml:mspace width="13.2em"/>
                    <mml:mrow>
                        <mml:mfrac>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>z</mml:mi>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>t</mml:mi>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>=</mml:mo>
                        <mml:mi>v</mml:mi>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mo>&#x2212;</mml:mo>
                        <mml:mfrac>
                            <mml:mi>z</mml:mi>
                            <mml:mrow>
                                <mml:msup>
                                    <mml:mi>g</mml:mi>
                                    <mml:mo>*</mml:mo>
                                </mml:msup>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mi>t</mml:mi>
                                <mml:mo stretchy="false">)</mml:mo>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:msup>
                            <mml:mi>h</mml:mi>
                            <mml:mo>*</mml:mo>
                        </mml:msup>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mi>t</mml:mi>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:mrow>
                    <mml:mspace width="12em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>47</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <disp-formula id="e48">
                <mml:math display="block" id="math49">
                    <mml:mspace width="12.8em"/>
                    <mml:mrow>
                        <mml:mfrac>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>F</mml:mi>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>t</mml:mi>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>=</mml:mo>
                        <mml:mi>v</mml:mi>
                        <mml:mrow>
                            <mml:mo>(</mml:mo>
                            <mml:mrow>
                                <mml:mn>1</mml:mn>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:mi>sgn</mml:mi>
                                <mml:mo>&#x2061;</mml:mo>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mi>v</mml:mi>
                                <mml:mo stretchy="false">)</mml:mo>
                                <mml:mfrac>
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>F</mml:mi>
                                            <mml:mi>f</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                    <mml:mrow>
                                        <mml:mi>s</mml:mi>
                                        <mml:mo stretchy="false">(</mml:mo>
                                        <mml:mi>v</mml:mi>
                                        <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                </mml:mfrac>
                            </mml:mrow>
                            <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mi>h</mml:mi>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mi>t</mml:mi>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:mrow>
                    <mml:mspace width="10em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>48</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Then, it is necessary to merge the pre-sliding model and the sliding model to give the expression of the essential friction model, such as 
                <xref ref-type="other" rid="e49">Equation (49)</xref>. The expression of the complete generalized Maxwell sliding friction force model can be expressed as 
                <xref ref-type="other" rid="e50">formula (50)</xref>, which &#x3C3;
                <sub>2</sub>  is the viscous friction coefficient.</p>
            <disp-formula id="e49">
                <mml:math display="block" id="math50">
                    <mml:mspace width="14em"/>
                    <mml:mrow>
                        <mml:mfrac>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:msub>
                                    <mml:mi>F</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mi>d</mml:mi>
                                <mml:mi>t</mml:mi>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>=</mml:mo>
                        <mml:mi>sgn</mml:mi>
                        <mml:mo>&#x2061;</mml:mo>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mi>v</mml:mi>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:mi>C</mml:mi>
                        <mml:mrow>
                            <mml:mo>(</mml:mo>
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>&#x3B1;</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:mfrac>
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>F</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                    </mml:mrow>
                                    <mml:mrow>
                                        <mml:mi>s</mml:mi>
                                        <mml:mo stretchy="false">(</mml:mo>
                                        <mml:mi>v</mml:mi>
                                        <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                </mml:mfrac>
                            </mml:mrow>
                            <mml:mo>)</mml:mo>
                        </mml:mrow>
                    </mml:mrow>
                    <mml:mspace width="10em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>49</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <disp-formula id="e50">
                <mml:math display="block" id="math51">
                    <mml:mspace width="14em"/>
                    <mml:mrow>
                        <mml:msub>
                            <mml:mi>F</mml:mi>
                            <mml:mi>f</mml:mi>
                        </mml:msub>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mi>t</mml:mi>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:mo>=</mml:mo>
                        <mml:mstyle displaystyle="true">
                            <mml:munderover>
                                <mml:mo>&#x2211;</mml:mo>
                                <mml:mrow>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>N</mml:mi>
                            </mml:munderover>
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>F</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mi>t</mml:mi>
                                <mml:mo stretchy="false">)</mml:mo>
                                <mml:mo>+</mml:mo>
                                <mml:msub>
                                    <mml:mi>&#x3C3;</mml:mi>
                                    <mml:mn>2</mml:mn>
                                </mml:msub>
                                <mml:mi>f</mml:mi>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mi>v</mml:mi>
                                <mml:mo stretchy="false">)</mml:mo>
                            </mml:mrow>
                        </mml:mstyle>
                    </mml:mrow>
                    <mml:mspace width="10em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>50</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>The dynamic parameters identification process of friction can be divided into two types: 1. Identify the friction model parameters individually; 2. The friction parameters are identified as part of dynamic parameters. For much research, the simplest static friction model, Coulomb friction + viscous friction, is often used, and the friction model parameters are identified as part of dynamic parameters, such as reference
                <sup>
                    <xref ref-type="bibr" rid="ref-36">36</xref>,
                    <xref ref-type="bibr" rid="ref-38">38</xref>
                </sup>. However, when accurate force detection and force control are required, this indirect identification strategy will degree the accuracy of the dynamic model. Identifying the parameters of the friction model separately is a way to use a specific trajectory for friction, which can avoid the interference caused by other dynamic parameters.</p>
            <p>The friction force is also influenced by some parameters which are speed weakness dependent, such as load, temperature
                <sup>
                    <xref ref-type="bibr" rid="ref-59">59</xref>
                </sup>. The reference
                <sup>
                    <xref ref-type="bibr" rid="ref-60">60</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-62">62</xref>
                </sup> has discussed the effect of temperature parameters on the friction force with many experiments. The results of experiments show that the temperature has a large impact on the accuracy of the friction model. The modeling method of temperature parameters of friction force usually adopts the four-parameters method and six-parameters method
                <sup>
                    <xref ref-type="bibr" rid="ref-61">61</xref>
                </sup>. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-61">61</xref>
                </sup> also compared these two modeling methods experimentally. Under sufficient experimental data, the fitting effect of the six-parameter method is significantly better than that of the four-parameters method. However, this will cause obvious overfitting in the actual robot arm parameter identification, which may degree the accuracy of the friction model. In addition, the four-parameters method and six-parameters method are linear modeling methods. Thus, there is a linear relationship between temperature parameters and friction force. The linear least square method can be used to identify temperature parameters of the friction model directly. The detail of the design of the four-parameters method can be found in reference
                <sup>
                    <xref ref-type="bibr" rid="ref-62">62</xref>
                </sup>.</p>
            <p>In robotics, the complex dynamic friction models are not used very commonly, due to the typical nonlinear characteristics of some friction force models which make identification and control more difficult.  Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-62">62</xref>
                </sup> compared the identification results of nonlinear regression methods, linear regression methods, and polynomial linear fitting methods by using GMS models. The experimental results clearly illustrate the better accuracy of predicted torque of dynamic models by using nonlinear regression methods and nonlinear dynamic models. Thus, it is very necessary to model the friction force model with nonlinear characteristics completely. At present, the influence of the weakness speed-dependent factors on the friction force and identification methods are also the main research topics
                <sup>
                    <xref ref-type="bibr" rid="ref-62">62</xref>
                </sup>. Improving the accuracy of friction force model will significantly improve the accuracy of predicted torque.</p>
        </sec>
        <sec>
            <title>5 Problems and future works</title>
            <p id="s5">Based on the above review of the identification of dynamic parameters of manipulators, the identification errors are mainly caused by the noise in sampled data. Moreover, the non-linear characteristics of friction force also complicate parameters identification, since it is important and complicated to choose a proper modeling method for friction force in manipulators. Besides, analytical modeling methods inevitably result in identification errors, and it is difficult to reduce the identification error by adding details to the dynamic model. Moreover, a more complicated dynamic model does not fully guarantee that the identification accuracy can be improved, and it greatly complicates the identification.</p>
            <p>For structure errors, some scholars reduced the structure errors without using deep learning and neural networks. This type of method is also called the non-parametric regression method, which is used to learn the inverse dynamic
                <sup>
                    <xref ref-type="bibr" rid="ref-63">63</xref>
                </sup>. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-64">64</xref>
                </sup> proposed a polynomial approximation method by using Jacobian polynomials (hypergeometric polynomials). This method used the iterative methods to make the Jacobian matrix approximate the actual regression matrix 
                <italic toggle="yes">Y</italic>, and then the identification methods were used to identify dynamic parameters with the estimated regression matrix. For robot dynamic model learning and parameter identification optimization, many scholars are trying to use deep learning and neural networks for research
                <sup>
                    <xref ref-type="bibr" rid="ref-37">37</xref>
                </sup>. In research
                <sup>
                    <xref ref-type="bibr" rid="ref-37">37</xref>
                </sup>, the application of basic neural networks in dynamic parameters identification is introduced, involving Adaline neural networks and recurrent neural networks.</p>
            <p>ADALINE neural network:</p>
            <p>Adaline neural network is an adaptive linear neural network based on the least square method, and the calculation model of the Adaline neural network is shown in 
                <xref ref-type="fig" rid="f7">Figure 7</xref>. For the manipulator, the cost function used by the Adaline model can be the square of the torque error between the actual torque and the simulated torque, as shown in 
                <xref ref-type="other" rid="e51">Equation (51)</xref>. The network weighted value changes according to the partial derivative of the cost function, as shown in 
                <xref ref-type="other" rid="e52">Equation (52)</xref>, where 
                <italic toggle="yes">&#x3B7;</italic> is the learning rate. Thus, the gradient descent method can be used to find the weight which makes the torque error smallest.</p>
            <fig fig-type="figure" id="f7" orientation="portrait" position="float">
                <label>Figure 7. </label>
                <caption>
                    <title>Calculation model of Adaline neural network. </title>
                    <p>
                        <italic toggle="yes">X
                            <sub>i</sub>
                        </italic> represents the state, 
                        <italic toggle="yes">W
                            <sub>i</sub>
                        </italic> represents the weights.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure7.gif"/>
            </fig>
            <disp-formula id="e51">
                <mml:math display="block" id="math52">
                    <mml:mspace width="17.1em"/>
                    <mml:mrow>
                        <mml:mi>J</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:msup>
                            <mml:mi>e</mml:mi>
                            <mml:mi>T</mml:mi>
                        </mml:msup>
                        <mml:mi>e</mml:mi>
                    </mml:mrow>
                    <mml:mspace width="15em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>51</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <disp-formula id="e52">
                <mml:math display="block" id="math53">
                    <mml:mspace width="14.5em"/>
                    <mml:mrow>
                        <mml:msub>
                            <mml:mi>w</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                            <mml:mi>w</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>&#x2212;</mml:mo>
                        <mml:mi>&#x3B7;</mml:mi>
                        <mml:mtext>&#x394;</mml:mtext>
                        <mml:mi>J</mml:mi>
                    </mml:mrow>
                    <mml:mspace width="15em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>52</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Recurrent neural network:</p>
            <p>The recurrent neural network is very effective for data with sequential characteristics, and it can mine the timing information and semantic information in the data. The reference
                <sup>
                    <xref ref-type="bibr" rid="ref-65">65</xref>
                </sup> first uses recurrent neural network for parameter identification of system, the calculation model of the recurrent neural network as shown in 
                <xref ref-type="fig" rid="f8">Figure 8</xref>, and the mathematical model is as 
                <xref ref-type="other" rid="e53">Equation (53)</xref>.</p>
            <fig fig-type="figure" id="f8" orientation="portrait" position="float">
                <label>Figure 8. </label>
                <caption>
                    <title>Calculation model of Recurrent neural network. </title>
                    <p>
                        <italic toggle="yes">X
                            <sub>i</sub>
                        </italic> is intermediate state; 
                        <italic toggle="yes">u</italic>  is the input; 
                        <italic toggle="yes">w
                            <sub>ij</sub>
                        </italic> is the weight between 
                        <italic toggle="yes">i</italic> neuron and 
                        <italic toggle="yes">j</italic> neuron.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://collaborative-robot-files.f1000.com/manuscripts/18719/c331d977-8e76-4963-a4fa-9799f6079afa_figure8.gif"/>
            </fig>
            <disp-formula id="e53">
                <mml:math display="block" id="math54">
                    <mml:mspace width="11em"/>
                    <mml:mrow>
                        <mml:msub>
                            <mml:mrow>
                                <mml:mover>
                                    <mml:mi>X</mml:mi>
                                    <mml:mo>&#x2022;</mml:mo>
                                </mml:mover>
                            </mml:mrow>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:mo>&#x2212;</mml:mo>
                        <mml:msub>
                            <mml:mi>X</mml:mi>
                            <mml:mi>j</mml:mi>
                        </mml:msub>
                        <mml:mo>+</mml:mo>
                        <mml:mstyle displaystyle="true">
                            <mml:munderover>
                                <mml:mo>&#x2211;</mml:mo>
                                <mml:mrow>
                                    <mml:mi>j</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>n</mml:mi>
                            </mml:munderover>
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>i</mml:mi>
                                        <mml:mi>j</mml:mi>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mi>&#x3B4;</mml:mi>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>x</mml:mi>
                                    <mml:mi>j</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="false">)</mml:mo>
                                <mml:mo>+</mml:mo>
                                <mml:msub>
                                    <mml:mi>&#x3B3;</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mi>u</mml:mi>
                            </mml:mrow>
                        </mml:mstyle>
                    </mml:mrow>
                    <mml:mspace width="11em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>53</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Where,  
                <italic toggle="yes">X
                    <sub>i</sub>
                </italic> is the intermediate state, 
                <italic toggle="yes">u</italic> is the input, 
                <italic toggle="yes">w
                    <sub>ij</sub>
                </italic> is the weight between neuron 
                <italic toggle="yes">i</italic> and neuron 
                <italic toggle="yes">j</italic>. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-37">37</xref>
                </sup> mentioned a method that use hyperbolic tangent function as the activation function, as 
                <xref ref-type="other" rid="e54">Equation (54)</xref>.</p>
            <disp-formula id="e54">
                <mml:math display="block" id="math55">
                    <mml:mspace width="13em"/>
                    <mml:mrow>
                        <mml:mi>&#x3B4;</mml:mi>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:msub>
                            <mml:mi>x</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo stretchy="false">)</mml:mo>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                            <mml:mi>&#x3B1;</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mspace width="0.2em"/>
                        <mml:mi>tanh</mml:mi>
                        <mml:mo>&#x2061;</mml:mo>
                        <mml:mo stretchy="false">(</mml:mo>
                        <mml:mfrac>
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>x</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>&#x3D1;</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                            </mml:mrow>
                        </mml:mfrac>
                        <mml:mo stretchy="false">)</mml:mo>
                    </mml:mrow>
                    <mml:mspace width="14em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>54</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Where 
                <italic toggle="yes">&#x3B1;
                    <sub>i</sub>
                </italic> and 
                <italic toggle="yes">&#x3D1;
                    <sub>i</sub>
                </italic> are constants bigger than 0. Moreover, the state of the recurrent neural network will naturally converge to the minimum value of the energy function by using 
                <xref ref-type="other" rid="e55">Equation (55)</xref> as an active function. The energy function is shown as 
                <xref ref-type="other" rid="e53">Equation (53)</xref>.</p>
            <disp-formula id="e55">
                <mml:math display="block" id="math56">
                    <mml:mspace width="8em"/>
                    <mml:mrow>
                        <mml:mi>E</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:mo>&#x2212;</mml:mo>
                        <mml:mfrac>
                            <mml:mn>1</mml:mn>
                            <mml:mn>2</mml:mn>
                        </mml:mfrac>
                        <mml:mstyle displaystyle="true">
                            <mml:munderover>
                                <mml:mo>&#x2211;</mml:mo>
                                <mml:mrow>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>N</mml:mi>
                            </mml:munderover>
                            <mml:mrow>
                                <mml:mstyle displaystyle="true">
                                    <mml:munderover>
                                        <mml:mo>&#x2211;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>j</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:mn>1</mml:mn>
                                        </mml:mrow>
                                        <mml:mi>N</mml:mi>
                                    </mml:munderover>
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>w</mml:mi>
                                            <mml:mrow>
                                                <mml:mi>i</mml:mi>
                                                <mml:mi>j</mml:mi>
                                            </mml:mrow>
                                        </mml:msub>
                                        <mml:mi>&#x3B4;</mml:mi>
                                        <mml:mo stretchy="false">(</mml:mo>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="false">)</mml:mo>
                                        <mml:mi>&#x3B4;</mml:mi>
                                        <mml:mo stretchy="false">(</mml:mo>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mi>j</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                </mml:mstyle>
                                <mml:mo>+</mml:mo>
                                <mml:mstyle displaystyle="true">
                                    <mml:munderover>
                                        <mml:mo>&#x2211;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:mn>1</mml:mn>
                                        </mml:mrow>
                                        <mml:mi>N</mml:mi>
                                    </mml:munderover>
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>&#x3B3;</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:mi>u</mml:mi>
                                        <mml:mi>&#x3B4;</mml:mi>
                                        <mml:mo stretchy="false">(</mml:mo>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mi>j</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                </mml:mstyle>
                            </mml:mrow>
                        </mml:mstyle>
                    </mml:mrow>
                    <mml:mspace width="8em"/>
                    <mml:mo stretchy="false">(</mml:mo>
                    <mml:mn>55</mml:mn>
                    <mml:mo stretchy="false">)</mml:mo>
                </mml:math>
            </disp-formula>
            <p>Recurrent neural networks have the problem of difficulty in training. Therefore, we can consider using an improved type of recurrent neural network, such as long-short-term memory network. The long-short-term memory network adds a new state to the original recurrent neural network, which is used to save the state for a long time and solve the problem of gradient disappearance.</p>
            <p>The application of these neural networks is also to optimize the results of the dynamic parameters identification of the manipulator. By converting and transferring the output error to the weight of the neural network, the optimal identification of the dynamic parameters is realized. However, there is no specific change in the structure of the identification algorithm, only the traditional optimization algorithm is replaced by the neural network methods, and the problem of structural errors of parameter identification has not been solved. Therefore, many scholars have used the data-driven characteristics of neural networks to propose methods for system identification and dynamic model learning, e.g. reference
                <sup>
                    <xref ref-type="bibr" rid="ref-66">66</xref>,
                    <xref ref-type="bibr" rid="ref-67">67</xref>
                </sup>. They are no longer limited to optimizing the parameter identification results, but also consider the problems of the model itself.</p>
            <p>Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-66">66</xref>
                </sup> uses a recurrent neural network, using a data-driven approach to improve the dynamic model's ability to respond to environmental changes in real-time. This method dynamically adapts to the input and output characteristics of the dynamic model and avoids the limitations of theoretical modeling. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-67">67</xref>
                </sup> proposed a neural network-based uncertainty compensation model to compensate for the errors caused by uncertain factors in the process of dynamic parameter identification and to solve the problems caused by structural errors. However, there is no standard data set to train the model. The actual collected data often contains a lot of noise. Thus, reference
                <sup>
                    <xref ref-type="bibr" rid="ref-68">68</xref>
                </sup> proposes a "Gen2Real" method to transfer the pre-training model to the actual robot, which can more accurately realize the learning of the dynamic model. The pre-training model is trained in the simulation environment. These methods all require a lot of time to collect and process data. Thus, reference
                <sup>
                    <xref ref-type="bibr" rid="ref-69">69</xref>
                </sup> uses the Generative Adversarial Networks (GAN) to approximate the dynamic characteristics as much as possible under a limited data set. The adversarial neural network can generate additional data based on the existing data set. Reference
                <sup>
                    <xref ref-type="bibr" rid="ref-70">70</xref>
                </sup> also uses the characteristics of GAN to generate data to solve the problem of traditional excitation trajectory design over-reliance on evolution and gradient-based optimization methods. These optimization methods generate a single long trajectory which reduces identification efficiency. In addition, a GAN-based method for simultaneously generating multiple trajectories is proposed, which improves the efficiency of trajectory optimization.</p>
            <p>The above methods are iterative regression methods based on a large amount of data to obtain dynamic models and optimize the result of dynamic parameter identification. However, the dynamic model and parameters of the manipulators are not always constant, and the value of dynamic parameters may change with the execution of the task
                <sup>
                    <xref ref-type="bibr" rid="ref-71">71</xref>
                </sup>. For traditional parameters identification methods or model learning methods, there is not enough time and data to obtain an accurate dynamic model or dynamic parameters in real-time. Many scholars have proposed solutions to this problem, which can be divided into two categories: 1. Incremental learning methods
                <sup>
                    <xref ref-type="bibr" rid="ref-72">72</xref>,
                    <xref ref-type="bibr" rid="ref-73">73</xref>
                </sup>, 2. Error model learning methods
                <sup>
                    <xref ref-type="bibr" rid="ref-74">74</xref>,
                    <xref ref-type="bibr" rid="ref-75">75</xref>
                </sup>. For dynamic model and dynamic parameter identification, the changing characteristics of the dynamic model should be studied further. A more flexible dynamic model can make the manipulator better interact with the environment.</p>
            <p>The nature of neural networks is data-driven, which allows researchers to identify the characteristics of dynamic model of the manipulator directly. This makes it possible to obtain a higher precision dynamic model than analytical modeling methods. Thus, many scholars have proposed many methods on the research of system identification and dynamic model learning, but, these methods lack systematical theoretical analysis, especially for the problem of structural errors. How to use neural networks to reduce the structural errors of dynamic models has become a research hotspot. Moreover, calibrating the dynamic model and dynamic parameters of the manipulator through real-time identification methods is also an interesting solution for structural errors.</p>
        </sec>
        <sec sec-type="conclusions">
            <title>6 Conclusions</title>
            <p>This paper presents an overview of excitation trajectory optimization, identification methods, and hotspots in dynamic parameters identification. The main problem is estimating the dynamic parameters from the measured data optimally. First, the design of the excitation trajectory is an important part of suppressing the measurement noise. This paper divides excitation trajectory design into two parts, excitation trajectory optimization, and excitation trajectory parameterization. The use of finite Fourier series and intelligent optimization algorithms can reduce the noise level in sampled data set and accelerate the convergence of the dynamic parameter identification. Moreover, the identification of dynamic parameters must filter the noise and singular values in the sampled data set to ensure the accuracy of the identification result. However, the estimated dynamic parameters may be also physically unfeasible by using the numerical identification methods. Thus, many scholars have proposed constraint-based optimization methods for optimizing the estimated dynamic parameters. Linear matrix inequalities and triangular inequalities are commonly used to ensure the physical feasibility and consistency of dynamic parameters. In addition, the identification of the parameters of the friction model also has an impact on the accuracy of the dynamic model of manipulators, and many scholars have conducted in-depth research on the model of friction force. Among them, the static friction models have been widely used. However, according to many surveys by scholars, the accuracy of the static friction model is not enough when manipulators interact with humans or the environment. Now, a more precise dynamic friction model should be studied, and some nonlinear factors should be considered, such as temperature.</p>
            <p>The traditional identification methods of dynamic parameters based on analytical models require special trajectories, long identification times, and complex optimization methods. The most important problem is that there are unavoidable structural errors in analytical modeling methods, which limit the accuracy of the identification methods that can be achieved. Therefore, some scholars try to use deep learning and neural network methods to reduce structural errors. At the same time, some real-time identification methods have been proposed to calibrate dynamic parameters online.</p>
            <p>Identification of dynamic parameters of manipulators is very important for manipulator dynamic control, since an accurate dynamic model is the fundamental part of a collaborative manipulators system.</p>
            <p>Nowadays, the manipulators are mobile manipulators, which are combined with a mobile trolley or a lifting platform. This hybrid system is a floating base system. Thus, the manipulators will control the contact force during the movement. First, there is a dynamic modeling problem in joint space and interactive space. Secondly, just identifying the base parameters may not satisfy the demand of the dynamic control for mobile manipulators, since the base of the manipulator is mobile.</p>
        </sec>
        <sec>
            <title>Data availability</title>
            <p>No data are associated with this article.</p>
        </sec>
    </body>
    <back>
        <ref-list>
            <ref id="ref-1">
                <label>1</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Zhang</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ma</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Li</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Contact Force Estimation and Regulation of a Position-controlled Floating Base System without Joint Torque Information.</article-title>
                    <source>

                        <italic toggle="yes">IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</italic>
</source><year>2020</year>;<fpage>3967</fpage>&#x2013;<lpage>3974</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS45743.2020.9340785</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <label>2</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Siciliano</surname>
                            <given-names>B</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sciavicco</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Villani</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Robotics: modelling, planning and control.</article-title>Springer Science &amp; Business Media,<year>2010</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://books.google.co.in/books/about/Robotics.html?id=VsTOQOnQjCAC&amp;sourc=kp_book_description&amp;redir_esc=y">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-3">
                <label>3</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gaz</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cognetti</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Oliva</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Dynamic identification of the franka emika panda robot with retrieval of feasible parameters using penalty-based optimization.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Robot Autom Lett.</italic>
</source><year>2019</year>;<volume>4</volume>(<issue>4</issue>):<fpage>4147</fpage>&#x2013;<lpage>4154</lpage>.
                    <pub-id pub-id-type="doi">10.1109/LRA.2019.2931248</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <label>4</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wu</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>You</surname>
                            <given-names>Z</given-names>
                        </name>
</person-group>:
                    <article-title>An overview of dynamic parameter identification of robots.</article-title>
                    <source>

                        <italic toggle="yes">Robot Comput Integr Manuf.</italic>
</source><year>2010</year>;<volume>26</volume>(<issue>5</issue>):<fpage>414</fpage>&#x2013;<lpage>419</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.rcim.2010.03.013</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kawasaki</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kanzaki</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>Minimum Dynamics parameters of robot models.</article-title>
                    <source>

                        <italic toggle="yes">Robot Control.</italic>
</source><year>1992</year>;<volume>24</volume>(<issue>9</issue>):<fpage>33</fpage>&#x2013;<lpage>38</lpage>.
                    <pub-id pub-id-type="doi">10.1016/S1474-6670(17)51028-9</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <label>6</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Numerical calculation of the base inertial parameters of robots.</article-title>
                    <source>

                        <italic toggle="yes">J Robot Syst.</italic>
</source><year>1991</year>;<volume>8</volume>(<issue>4</issue>):<fpage>485</fpage>&#x2013;<lpage>506</lpage>.
                    <pub-id pub-id-type="doi">10.1002/rob.4620080405</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <label>7</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Jin</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gans</surname>
                            <given-names>N</given-names>
                        </name>
</person-group>:
                    <article-title>Parameter identification for industrial robots with a fast and robust trajectory design approach.</article-title>
                    <source>

                        <italic toggle="yes">Robot Comput Integr Manuf.</italic>
</source><year>2015</year>;<volume>31</volume>:<fpage>21</fpage>&#x2013;<lpage>29</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.rcim.2014.06.004</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Optimal motion planning for robot's inertial parameters identification</article-title>. In Proceedings of the 31st IEEE Conference on Decision and Control.<year>1992</year>;<fpage>70</fpage>&#x2013;<lpage>73</lpage>.
                    <pub-id pub-id-type="doi">10.1109/CDC.1992.371788</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Atkeson</surname>
                            <given-names>CG</given-names>
                        </name>

                        <name name-style="western">
                            <surname>An</surname>
                            <given-names>CH</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hollerbach</surname>
                            <given-names>JM</given-names>
                        </name>
</person-group>:
                    <article-title>Estimation of inertial parameters of manipulator loads and links.</article-title>
                    <source>

                        <italic toggle="yes">Int J Rob Res.</italic>
</source><year>1986</year>;<volume>5</volume>(<issue>3</issue>):<fpage>101</fpage>&#x2013;<lpage>119</lpage>.
                    <pub-id pub-id-type="doi">10.1177/027836498600500306</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <label>10</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mayeda</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Yoshida</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Osuka</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>Base parameters of manipulator dynamic models</article-title>. In Proceedings.
                    <italic toggle="yes">IEEE Int Conf Robot Autom.</italic><year>1988</year>;<fpage>1367</fpage>&#x2013;<lpage>1372</lpage>.
                    <pub-id pub-id-type="doi">10.1109/70.56663</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <label>11</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sousa</surname>
                            <given-names>CD</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cortes&#xE3;o</surname>
                            <given-names>R</given-names>
                        </name>
</person-group>:
                    <article-title>Physical feasibility of robot base inertial parameter identification: A linear matrix inequality approach.</article-title>
                    <source>

                        <italic toggle="yes">Int J Robot Res.</italic>
</source><year>2014</year>;<volume>33</volume>(<issue>6</issue>):<fpage>931</fpage>&#x2013;<lpage>944</lpage>.
                    <pub-id pub-id-type="doi">10.1177/0278364913514870</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <label>12</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Swevers</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ganseman</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Tukel</surname>
                            <given-names>DB</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Optimal robot excitation and identification</article-title>.
                    <source>

                        <italic toggle="yes">IEEE Trans Rob Autom.</italic>
</source><year>1997</year>;<volume>13</volume>(<issue>5</issue>):<fpage>730</fpage>&#x2013;<lpage>740</lpage>.
                    <pub-id pub-id-type="doi">10.1109/70.631234</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <label>13</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Jia</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zhang</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zang</surname>
                            <given-names>X</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Dynamic parameter identification for a manipulator with joint torque sensors based on an improved experimental design.</article-title>
                    <source>

                        <italic toggle="yes">Sensors (Basel).</italic>
</source><year>2019</year>;<volume>19</volume>(<issue>10</issue>):<fpage>2248</fpage>.
                    <pub-id pub-id-type="pmid">31096656</pub-id>
                    <pub-id pub-id-type="doi">10.3390/s19102248</pub-id>
                    <pub-id pub-id-type="pmcid">6567314</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-14">
                <label>14</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>D&#xED;az-Rodr&#xED;guez</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Iriarte</surname>
                            <given-names>X</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Mata</surname>
                            <given-names>Vicente</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>On the experiment design for direct dynamic parameter dentification of parallel robots.</article-title>
                    <source>

                        <italic toggle="yes">Adv Robot.</italic>
</source><year>2009</year>;<volume>23</volume>:<fpage>329</fpage>&#x2013;<lpage>348</lpage>.
                    <pub-id pub-id-type="doi">10.1163/156855308X397550</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-15">
                <label>15</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Jin</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gans</surname>
                            <given-names>N</given-names>
                        </name>
</person-group>:
                    <article-title>Parameter identification for industrial robots with a fast and robust trajectory design approach.</article-title>
                    <source>

                        <italic toggle="yes">Robot Com Int Manuf.</italic>
</source><year>2015</year>;<volume>31</volume>:<fpage>21</fpage>&#x2013;<lpage>29</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.rcim.2014.06.004</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-16">
                <label>16</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Armstrong</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>On finding exciting trajectories for identification experiments involving systems with nonlinear dynamic.</article-title>
                    <source>

                        <italic toggle="yes">Int J Rob Res.</italic>
</source><year>1989</year>;<volume>8</volume>(<issue>6</issue>):<fpage>28</fpage>&#x2013;<lpage>48</lpage>.
                    <pub-id pub-id-type="doi">10.1177/027836498900800603</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-17">
                <label>17</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wu</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zhu</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>X</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Closed-loop dynamic parameter identification of robot manipulators using modified fourier series.</article-title>
                    <source>

                        <italic toggle="yes">Int J Adv Robot Syst.</italic>
</source><year>2012</year>;<volume>9</volume>(<issue>1</issue>):<fpage>29</fpage>.
                    <pub-id pub-id-type="doi">10.5772/45818</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-18">
                <label>18</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Zimmermann</surname>
                            <given-names>SA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Berninger</surname>
                            <given-names>TFC</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Derkx</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Dynamic modeling of robotic manipulators for accuracy evaluation.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Int Conf Robot Autom.</italic>
</source><year>2020</year>;<fpage>8144</fpage>&#x2013;<lpage>8150</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ICRA40945.2020.9197304</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-19">
                <label>19</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Tika</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ulmen</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bajcinca</surname>
                            <given-names>N</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic Parameter Estimation Utilizing Optimized Trajectories.</article-title>
                    <source>

                        <italic toggle="yes">IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</italic>
</source><year>2020</year>;<fpage>7300</fpage>&#x2013;<lpage>7307</lpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://ras.papercept.net/images/temp/IROS/files/1546.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Swevers</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ganseman</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>De Schutter</surname>
                            <given-names>J</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Experimental robot identification using optimised periodic trajectories.</article-title>
                    <source>

                        <italic toggle="yes">Mech Syst Signal Process.</italic>
</source><year>1996</year>;<volume>10</volume>(<issue>5</issue>):<fpage>561</fpage>&#x2013;<lpage>577</lpage>.
                    <pub-id pub-id-type="doi">10.1006/mssp.1996.0039</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-21">
                <label>21</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Cleveland</surname>
                            <given-names>WS</given-names>
                        </name>
</person-group>:
                    <article-title>Robust locally weighted regression and smoothing scatterplots.</article-title>
                    <source>

                        <italic toggle="yes">J Am Stat Assoc.</italic>
</source><year>1979</year>;<volume>74</volume>(<issue>368</issue>):<fpage>829</fpage>&#x2013;<lpage>836</lpage>.
                    <pub-id pub-id-type="doi">10.1080/01621459.1979.10481038</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-22">
                <label>22</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Brunot</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Janot</surname>
                            <given-names>A</given-names>
                        </name>
</person-group>:
                    <article-title>A New Recursive Instrumental Variables Approach for Robot Identification.</article-title>
                    <source>

                        <italic toggle="yes">IFAC-PapersOnLine.</italic>
</source><year>2018</year>;<volume>51</volume>(<issue>15</issue>):<fpage>132</fpage>&#x2013;<lpage>137</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.ifacol.2018.09.103</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-23">
                <label>23</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic identification of robots with power model.</article-title>
                    <source>

                        <italic toggle="yes">Proceedings of international conference on robotics and automation.</italic>
</source><year>1997</year>;<fpage>1922</fpage>&#x2013;<lpage>1927</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ROBOT.1997.619069</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-24">
                <label>24</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Khalil</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>On the identification of the inertial parameters of robots.</article-title>In
                    <italic toggle="yes">Proceedings of the 27th conference on decision and control. Austin TX.</italic><year>1998</year>;<fpage>2264</fpage>&#x2013;<lpage>2269</lpage>.
                    <pub-id pub-id-type="doi">10.1109/CDC.1988.194738</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-25">
                <label>25</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Khalil</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Dombre</surname>
                            <given-names>E</given-names>
                        </name>
</person-group>:
                    <article-title>Modeling identification and control of robots</article-title>. CRC Press,<year>2002</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://books.google.co.in/books/about/Modeling_Identification_and_Control_of_R.html?id=Nx4X95PNyAkC&amp;redir_esc=y">Reference Source</ext-link></mixed-citation>
            </ref>
            <ref id="ref-26">
                <label>26</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hahn</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Niebergall</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Development of a measurement robot for identifying all inertia parameters of a rigid body in a single experiment.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Transactions on Control Systems Technology.</italic>
</source><year>2001</year>;<volume>9</volume>(<issue>2</issue>):<fpage>416</fpage>&#x2013;<lpage>423</lpage>.
                    <pub-id pub-id-type="doi">10.1109/87.911394</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-27">
                <label>27</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Brunot</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Janot</surname>
                            <given-names>A</given-names>
                        </name>
</person-group>:
                    <article-title>A New Recursive Instrumental Variables Approach for Robot Identification.</article-title>
                    <source>

                        <italic toggle="yes">IFAC-PapersOnLine.</italic>
</source><year> 2018</year>;<volume>51</volume>(<issue>15</issue>):<fpage>132</fpage>&#x2013;<lpage>137</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.ifacol.2018.09.103</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-28">
                <label>28</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Zak</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Benhabib</surname>
                            <given-names>B</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Fenton</surname>
                            <given-names>RG</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Application of the weighted least squares parameter estimation method to the robot calibration.</article-title>
                    <source>

                        <italic toggle="yes">IEEE/ASME J Mech Des</italic>
</source><year>1994</year>;<volume>116</volume>(<issue>3</issue>):<fpage>890</fpage>&#x2013;<lpage>893</lpage>.
                    <pub-id pub-id-type="doi">10.1115/1.2919465</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-29">
                <label>29</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Poignet</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Comparison of weighted least squares and extended kalman filtering methods for dynamic identification of robots</article-title>. 
In
                    <italic toggle="yes">Proceedings of the 2000 IEEE International Conference on Robotics and Automation.</italic>San Francisco, CA USA.<year>2000</year>;<fpage>3622</fpage>&#x2013;<lpage>3627</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ROBOT.2000.845296</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-30">
                <label>30</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Janot</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Vandanjon</surname>
                            <given-names>PO</given-names>
                        </name>
</person-group>:
                    <article-title>A new closed-loop output error method for parameter identification of robot dynamics.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Trans Control Syst Technol</italic>
</source><year>2013</year>;<volume>21</volume>(<issue>2</issue>):<fpage>428</fpage>&#x2013;<lpage>444</lpage>.
                    <pub-id pub-id-type="doi">10.1109/TCST.2012.2185697</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-31">
                <label>31</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Bing&#xFC;l</surname>
                            <given-names>Z</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Karahan</surname>
                            <given-names>O</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic identification of Staubli RX-60 robot using PSO and LS methods.</article-title>
                    <source>

                        <italic toggle="yes">Expert Syst Appl: Int J.</italic>
</source><year>2011</year>;<volume>38</volume>(<issue>4</issue>):<fpage>4136</fpage>&#x2013;<lpage>4149</lpage>.
                    <pub-id pub-id-type="doi">10.1016/j.eswa.2010.09.076</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-32">
                <label>32</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Olsen</surname>
                            <given-names>MM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Petersen</surname>
                            <given-names>HG</given-names>
                        </name>
</person-group>:
                    <article-title>A new method for estimating parameters of a dynamic robot model.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Trans Rob Autom.</italic>
</source><year>2001</year>;<volume>17</volume>(<issue>1</issue>):<fpage>95</fpage>&#x2013;<lpage>100</lpage>.
                    <pub-id pub-id-type="doi">10.1109/70.917088</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-33">
                <label>33</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Olsen</surname>
                            <given-names>MM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Swevers</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Verdonck</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>Maximum likelihood identification of a dynamic robot model: Implementation issues.</article-title>
                    <source>

                        <italic toggle="yes">Int J Rob Res.</italic>
</source><year>2002</year>;<volume>21</volume>(<issue>2</issue>):<fpage>89</fpage>&#x2013;<lpage>96</lpage>.
                    <pub-id pub-id-type="doi">10.1177/027836402760475379</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-34">
                <label>34</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Janot</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Vandanjon</surname>
                            <given-names>PO</given-names>
                        </name>
</person-group>:
                    <article-title>A new closed-loop output error method for parameter identification of robot dynamic.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Transactions on Control Systems Technology.</italic>
</source><year>2012</year>;<volume>21</volume>(<issue>2</issue>):<fpage>428</fpage>&#x2013;<lpage>444</lpage>.
                    <pub-id pub-id-type="doi">10.1109/TCST.2012.2185697</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-35">
                <label>35</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gautier</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Briot</surname>
                            <given-names>S</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic parameter identification of a 6 DOF industrial robot using power model.</article-title>
                    <source>

                        <italic toggle="yes">2013 IEEE International Conference on Robotics and Automation.</italic>
</source>Karlsruhe, Germany.<year>2013</year>;<fpage>2914</fpage>&#x2013;<lpage>2920</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ICRA.2013.6630981</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-36">
                <label>36</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Urrea</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Pascal</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Design and validation of a dynamic parameter identification model for industrial manipulator robots.</article-title>
                    <source>

                        <italic toggle="yes">Arch Appl Mech.</italic>
</source><year>2021</year>;<volume>91</volume>(<issue>5</issue>):<fpage>1981</fpage>&#x2013;<lpage>2007</lpage>.
                    <pub-id pub-id-type="doi">10.1007/s00419-020-01865-2</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-37">
                <label>37</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Leboutet</surname>
                            <given-names>Q</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Roux</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Janot</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Inertial Parameter Identification in Robotics: A Survey.</article-title>
                    <source>

                        <italic toggle="yes">Appl Sci.</italic>
</source><year>2021</year>;<volume>11</volume>(<issue>9</issue>):<fpage>4303</fpage>.
                    <pub-id pub-id-type="doi">10.3390/app11094303</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-38">
                <label>38</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Yoshida</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Khalil</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>Verification of the positive definiteness of the inertial matrix of manipulators using base inertial parameters.</article-title>
                    <source>

                        <italic toggle="yes">Int J Robot Res.</italic>
</source><year>2000</year>;<volume>19</volume>(<issue>5</issue>):<fpage>498</fpage>&#x2013;<lpage>510</lpage>.
                    <pub-id pub-id-type="doi">10.1177/02783640022066996</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-39">
                <label>39</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Fontanelli</surname>
                            <given-names>GA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ficuciello</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Villani</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Modelling and identification of the da Vinci research kit robotic arms</article-title>.
                    <italic toggle="yes">2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</italic>.<year>2017</year>;<fpage>1464</fpage>&#x2013;<lpage>1469</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2017.8205948</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-40">
                <label>40</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Traversaro</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Brossette</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Escande</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Identification of fully physical consistent inertial parameters using optimization on manifolds</article-title>.
                    <italic toggle="yes">2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</italic>.<year>2016</year>;<fpage>5446</fpage>&#x2013;<lpage>5451</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2016.7759801</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-41">
                <label>41</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sousa</surname>
                            <given-names>CD</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cortesao</surname>
                            <given-names>R</given-names>
                        </name>
</person-group>:
                    <article-title>Inertia tensor properties in robot dynamics identification: A linear matrix inequality approach.</article-title>
                    <source>

                        <italic toggle="yes">IEEE/ASME Transactions on Mechatronics.</italic>
</source><year>2019</year>;<volume>24</volume>(<issue>1</issue>):<fpage>406</fpage>&#x2013;<lpage>411</lpage>.
                    <pub-id pub-id-type="doi">10.1109/TMECH.2019.2891177</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-42">
                <label>42</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Golluccio</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gillini</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Marino</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Robot dynamics identification: a reproducible comparison with experiments on the kinova jaco.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Robot Autom Mag.</italic>
</source><year>2020</year>;<volume>28</volume>(<issue>3</issue>):<fpage>128</fpage>&#x2013;<lpage>140</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MRA.2020.3004149</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-43">
                <label>43</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gaz</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cognetti</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Oliva</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Dynamic identification of the franka emika panda robot with retrieval of feasible parameters using penalty-based optimization.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Robot Autom Lett.</italic>
</source><year>2019</year>;<volume>4</volume>(<issue>4</issue>):<fpage>4147</fpage>&#x2013;<lpage>4154</lpage>.
                    <pub-id pub-id-type="doi">10.1109/LRA.2019.2931248</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-44">
                <label>44</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xu</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Fan</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chen</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Dynamic identification of the KUKA LBR iiwa robot with retrieval of physical parameters using global optimization.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Access.</italic>
</source><year>2020</year>;<volume>8</volume>:<fpage>108018</fpage>&#x2013;<lpage>108031</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ACCESS.2020.3000997</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-45">
                <label>45</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Olsson</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>&#xC5;str&#xF6;m</surname>
                            <given-names>KJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>De Wit</surname>
                            <given-names>CC</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Friction models and friction compensation.</article-title>
                    <source>

                        <italic toggle="yes">Eur J Control.</italic>
</source><year>1998</year>;<volume>4</volume>(<issue>3</issue>):<fpage>176</fpage>&#x2013;<lpage>195</lpage>.
                    <pub-id pub-id-type="doi">10.1016/S0947-3580(98)70113-X</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-46">
                <label>46</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Shao</surname>
                            <given-names>X</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Yang</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Research on Feedforward Control Based on Robot Dynamics Parameters Identification</article-title>.
                    <italic toggle="yes">2020 IEEE International Conference on Mechatronics and Automation (ICMA)</italic>.<year>2020</year>;<fpage>973</fpage>&#x2013;<lpage>978</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ICMA49215.2020.9233788</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-47">
                <label>47</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Porcelli</surname>
                            <given-names>G</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic parameters identification of a UR5 robot manipulator</article-title>. Politecnico di Torino,<year>2020</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://webthesis.biblio.polito.it/15519/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-48">
                <label>48</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Dahl</surname>
                            <given-names>P</given-names>
                        </name>
</person-group>:
                    <article-title>A solid friction model</article-title>. Technical Report TOR-0158(3107-18)-1, Aerospace Corporation, EI Segundo, CA,<year>1968</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.semanticscholar.org/paper/A-Solid-Friction-Model-Dahl/3b1a40fe83dabfca5178c2eadff67edac48e7418">Reference Source</ext-link></mixed-citation>
            </ref>
            <ref id="ref-49">
                <label>49</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Haessig</surname>
                            <given-names>DA Jr</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Friendland</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>On the modeling and simulation of friction.</article-title>
                    <source>

                        <italic toggle="yes">J Dyn Syst Meas Control Trans ASME.</italic>
</source><year>1991</year>;<volume>113</volume>(<issue>3</issue>):<fpage>354</fpage>&#x2013;<lpage>362</lpage>.
                    <pub-id pub-id-type="doi">10.1115/1.2896418</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-50">
                <label>50</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>de Wit</surname>
                            <given-names>CC</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Olsson</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Astrom</surname>
                            <given-names>KJ</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>A new model for control of systems with friction.</article-title>
                    <source>

                        <italic toggle="yes">IEEE trans On Automation Control.</italic>
</source><year>1995</year>;<volume>40</volume>(<issue>3</issue>):<fpage>419</fpage>&#x2013;<lpage>425</lpage>.
                    <pub-id pub-id-type="doi">10.1109/9.376053</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-51">
                <label>51</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Al-Bender</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Swevers</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Characterization of friction force dynamics.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Control Systems Magazine.</italic>
</source><year>2008</year>;<volume>28</volume>(<issue>6</issue>):<fpage>64</fpage>&#x2013;<lpage>81</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MCS.2008.929279</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-52">
                <label>52</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Dupont</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Armstrong</surname>
                            <given-names>B</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hayward</surname>
                            <given-names>V</given-names>
                        </name>
</person-group>:
                    <article-title>Elasto-plastic friction model: contact compliance and stiction.</article-title>
                    <source>

                        <italic toggle="yes">Proceedings of the 2000 American control conference.</italic>
</source><year>2000</year>;<fpage>1072</fpage>&#x2013;<lpage>1077</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ACC.2000.876665</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-53">
                <label>53</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Liu</surname>
                            <given-names>SP</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ma</surname>
                            <given-names>ZY</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chen</surname>
                            <given-names>JL</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>An improved parameter identification method of redundant manipulator.</article-title>
                    <source>

                        <italic toggle="yes">Int J Adv Robot Syst.</italic>
</source><year>2021</year>;<volume>18</volume>(<issue>2</issue>).
                    <pub-id pub-id-type="doi">10.1177/17298814211002118</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-54">
                <label>54</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Freidovich</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Robertsson</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Shiriaev</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>LuGre-model-based friction compensation.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Trans Control Syst Technol.</italic>
</source><year>2010</year>;<volume>18</volume>:<fpage>194</fpage>&#x2013;<lpage>200</lpage>.
                    <pub-id pub-id-type="doi">10.1109/TCST.2008.2010501</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-55">
                <label>55</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lampaert</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Al-Bender</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Swevers</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>A generalized Maxwell-slip friction model appropriate for control purposes.</article-title>
                    <source>

                        <italic toggle="yes">2003 IEEE International Workshop on Workload Characterization (IEEE Cat. No. 03EX775).</italic>
</source><year>2003</year>;<volume>4</volume>:<fpage>1170</fpage>&#x2013;<lpage>1177</lpage>.
                    <pub-id pub-id-type="doi">10.1109/PHYCON.2003.1237071</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-56">
                <label>56</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Madsen</surname>
                            <given-names>E</given-names>
                        </name>
</person-group>:
                    <article-title>Joint Dynamics and Adaptive Feedforward Control of Lightweight Industrial Robots.</article-title><year> 2020</year>.
                    <pub-id pub-id-type="doi">10.7146/aul.384</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-57">
                <label>57</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Nilkhamhang</surname>
                            <given-names>I</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sano</surname>
                            <given-names>A</given-names>
                        </name>
</person-group>:
                    <article-title>Adaptive Compensation of a Linearly-Parameterized GMS Friction Model with Parameter Projection.</article-title>
                    <source> In 

                        <italic toggle="yes">Proceedings of the 45th IEEE Conference on Decision and Control.</italic>
</source><year>2006</year>;<fpage>6271</fpage>&#x2013;<lpage>6276</lpage>.
                    <pub-id pub-id-type="doi">10.1109/CDC.2006.377695</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-58">
                <label>58</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Bliman</surname>
                            <given-names>PA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sorine</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Friction modeling by hysteresis operators: application to Dahl, sticking and Stribeck effects</article-title>. In
                    <italic toggle="yes">Processdings of the conference &#x2018;Models of hysteresis</italic>.<year>1991</year>.</mixed-citation>
            </ref>
            <ref id="ref-59">
                <label>59</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Bittencourt</surname>
                            <given-names>AC</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wernholt</surname>
                            <given-names>E</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sander-Tavallaey</surname>
                            <given-names>S</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>An extended friction model to capture load and temperature effects in robot joints.</article-title>
                    <source>

                        <italic toggle="yes">2010 IEEE/RSJ international conference on intelligent robots and systems.</italic>
</source><year>2010</year>;<fpage>6161</fpage>&#x2013;<lpage>6167</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2010.5650358</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-60">
                <label>60</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Carlson</surname>
                            <given-names>FB</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Robertsson</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Johansson</surname>
                            <given-names>R</given-names>
                        </name>
</person-group>:
                    <article-title>Modeling and identification of position and temperature dependent friction phenomena without temperature sensing</article-title>.
                    <italic toggle="yes">2015 IEEE/RSJ international conference on intelligent robots and systems (IROS)</italic>.<year>2015</year>;<fpage>3045</fpage>&#x2013;<lpage>3051</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2015.7353797</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-61">
                <label>61</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Simoni</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Beschi</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Legnani</surname>
                            <given-names>G</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Friction modeling with temperature effects for industrial robot manipulators</article-title>.
                    <italic toggle="yes">2015 IEEE/RSJ international conference on intelligent robots and systems (IROS)</italic>.<year>2015</year>;<fpage>3524</fpage>&#x2013;<lpage>3529</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2015.7353869</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-62">
                <label>62</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Madsen</surname>
                            <given-names>E</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Rosenlund</surname>
                            <given-names>OS</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Brandt</surname>
                            <given-names>D</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Comprehensive modeling and identification of nonlinear joint dynamics for collaborative industrial robot manipulators.</article-title>
                    <source>

                        <italic toggle="yes">Control Eng Pract.</italic>
</source><year>2020</year>;<volume>101</volume>:<fpage>104462</fpage>.
                    <pub-id pub-id-type="doi">10.1016/j.conengprac.2020.104462</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-63">
                <label>63</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Nguyen-Tuong</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Peters</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Seeger</surname>
                            <given-names>M</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Learning inverse dynamic: a comparison.</article-title>
                    <source>

                        <italic toggle="yes">European symposium on artificial neural networks.</italic>
</source><year> 2008</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.researchgate.net/publication/221165532_Learning_Inverse_Dynamics_A_Comparison">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-64">
                <label>64</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lomakin</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Deutscher</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Identification of Dynamic Parameters for Rigid Robots based on Polynomial Approximation.</article-title>
                    <source>

                        <italic toggle="yes">2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</italic>
</source><year>2020</year>;<fpage>7271</fpage>&#x2013;<lpage>7278</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS45743.2020.9341195</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-65">
                <label>65</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Delgado</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kambhampati</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Warwick</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic recurrent neural network for system identification and control.</article-title>
                    <source>

                        <italic toggle="yes">IEE Proceedings-Control Theory and Applications.</italic>
</source><year>1995</year>;<volume>142</volume>(<issue>4</issue>):<fpage>307</fpage>&#x2013;<lpage>314</lpage>.
                    <pub-id pub-id-type="doi">10.1049/ip-cta:19951873</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-66">
                <label>66</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mukhopadhyay</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chaki</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sutradhar</surname>
                            <given-names>A</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Model learning for robotic manipulators using recurrent neural networks.</article-title>
                    <source>

                        <italic toggle="yes">TENCON 2019-2019 IEEE Region 10 Conference (TENCON).</italic>
</source><year>2019</year>;<fpage>2251</fpage>&#x2013;<lpage>2256</lpage>.
                    <pub-id pub-id-type="doi">10.1109/TENCON.2019.8929622</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-67">
                <label>67</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Shao</surname>
                            <given-names>X</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Yang</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Deep learning aided dynamic parameter identification of 6-DOF robot manipulators.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Access.</italic>
</source><year>2020</year>;<volume>8</volume>:<fpage>138102</fpage>&#x2013;<lpage>138116</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ACCESS.2020.3012196</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-68">
                <label>68</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xing</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Li</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Yang</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>General Robot Dynamic Learning and Gen2Real.</article-title>
                    <source>

                        <italic toggle="yes">arXiv preprint.</italic>
</source><year> 2021</year>; arXiv: 2104.02402.
                    <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/pdf/2104.02402.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-69">
                <label>69</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ren</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ben-Tzvi</surname>
                            <given-names>P</given-names>
                        </name>
</person-group>:
                    <article-title>Learning inverse kinematics and dynamics of a robotic manipulator using generative adversarial networks.</article-title>
                    <source>

                        <italic toggle="yes">Rob Auton Syst.</italic>
</source><year>2020</year>;<volume>124</volume>:<fpage>103386</fpage>.
                    <pub-id pub-id-type="doi">10.1016/j.robot.2019.103386</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-70">
                <label>70</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Jegorova</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Mistry</surname>
                            <given-names>M</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Adversarial Generation of Informative Trajectories for Dynamics System Identification.</article-title>
                    <source>

                        <italic toggle="yes">2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</italic>
</source><year>2020</year>;<fpage>7109</fpage>&#x2013;<lpage>7115</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS45743.2020.9340801</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-71">
                <label>71</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hitzler</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Meier</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Schaal</surname>
                            <given-names>S</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Learning and adaptation of inverse Dynamics models: A comparison.</article-title>
                    <source>

                        <italic toggle="yes">2019 IEEE-RAS 19th International Conference on Humanoid Robots (Humanoids).</italic>
</source><year>2019</year>;<fpage>491</fpage>&#x2013;<lpage>498</lpage>.
                    <pub-id pub-id-type="doi">10.1109/Humanoids43949.2019.9035048</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-72">
                <label>72</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Vijayakumar</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Schaal</surname>
                            <given-names>S</given-names>
                        </name>
</person-group>:
                    <article-title>Locally weighted projection regression: An o (n) algorithm for incremental real time learning in high dimensional space.</article-title>
                    <source>

                        <italic toggle="yes">Proceedings of the Seventeenth International Conference on Machine Learning (ICML 2000).</italic>
</source><year>2000</year>;<fpage>288</fpage>&#x2013;<lpage>293</lpage>.
                    <ext-link ext-link-type="uri" xlink:href="https://homepages.inf.ed.ac.uk/svijayak/publications/vijayakumar-ICML2000.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-73">
                <label>73</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Nguyen-Tuong</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Peters</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Local gaussian process regression for real-time model-based robot control.</article-title>
                    <source>

                        <italic toggle="yes">2008 IEEE/RSJ International Conference on Intelligent Robots and Systems.</italic>
</source><year>2008</year>;<fpage>380</fpage>&#x2013;<lpage>385</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2008.4650850</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-74">
                <label>74</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Nguyen-Tuong</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Peters</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Using model knowledge for learning inverse dynamics.</article-title>
                    <source>

                        <italic toggle="yes">2010 IEEE international conference on robotics and automation.</italic>
</source><year>2010</year>;<fpage>2677</fpage>&#x2013;<lpage>2682</lpage>.
                    <pub-id pub-id-type="doi">10.1109/ROBOT.2010.5509858</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-75">
                <label>75</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kappler</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Meier</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ratliff</surname>
                            <given-names>N</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>A new data source for inverse dynamics learning.</article-title>
                    <source>

                        <italic toggle="yes">2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).</italic>
</source><year>2017</year>;<fpage>4723</fpage>&#x2013;<lpage>4730</lpage>.
                    <pub-id pub-id-type="doi">10.1109/IROS.2017.8206345</pub-id>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report27029">
        <front-stub>
            <article-id pub-id-type="doi">10.21956/cobot.18719.r27029</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Roveda</surname>
                        <given-names>Loris</given-names>
                    </name>
                    <xref ref-type="aff" rid="r27029a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-4427-536X</uri>
                </contrib>
                <aff id="r27029a1">
                    <label>1</label>Istituto Dalle Molle di studi sull&#x2019;Intelligenza Artificiale (IDSIA), Scuola Universitaria Professionale della Svizzera Italiana (SUPSI), Universit&#xE0; della Svizzera italiana (USI), Manno, Switzerland</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>27</day>
                <month>10</month><year>2022</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#xA9; 2022 Roveda L</copyright-statement>
                <copyright-year>2022</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport27029" related-article-type="peer-reviewed-article" xlink:href="10.12688/cobot.17444.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve-with-reservations</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The paper reviews the state of the art related to dynamics parameters identification for robot control purposes.</p>
            <p> </p>
            <p> 
                <bold>Comments:</bold> 
                <list list-type="order">
                    <list-item>
                        <p>Matrices and vectors should be bold;</p>
                    </list-item>
                    <list-item>
                        <p>The paper should consider also some other approaches based on ML, such as these papers
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-27029-1">1</xref>
                            </sup>
                            <sup>-</sup>
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-27029-3">3</xref>
                            </sup>. This is important to provide more insights to the last&#xA0; generation data-driven methods;</p>
                    </list-item>
                    <list-item>
                        <p>Some other papers such as Beschi 
                            <italic>et al.,</italic> (2015)
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-27029-4">4</xref>
                            </sup>&#xA0;and&#xA0;Pedrocchi 
                            <italic>et al.,</italic> (2014)
                            <sup>
                                <xref ref-type="bibr" rid="rep-ref-27029-5">5</xref>
                            </sup> should be discussed. The three papers I mentioned above are related to the topic covered by the proposed paper and their discussion and, together with the other two mentioned papers, would improve the state of the art analysis that is performed by the authors;</p>
                    </list-item>
                    <list-item>
                        <p>In general, it seems that the review is not taking into consideration all the approaches in the state of the art
                            <bold> </bold>(see comment 1). A more clear description on the selection procedure for the paper included in the review has to be provided;</p>
                    </list-item>
                    <list-item>
                        <p>Check the English for typos.</p>
                    </list-item>
                </list>
            </p>
            <p>Is the review written in accessible language?</p>
            <p>Yes</p>
            <p>Are all factual statements correct and adequately supported by citations?</p>
            <p>Yes</p>
            <p>Are the conclusions drawn appropriate in the context of the current research literature?</p>
            <p>Yes</p>
            <p>Is the topic of the review discussed comprehensively in the context of the current literature?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Control; modelling; robotics; machine learning</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above.</p>
        </body>
        <back>
            <ref-list>
                <title>References</title>
                <ref id="rep-ref-27029-1">
                    <label>1</label>
                    <mixed-citation publication-type="journal">
                        <person-group person-group-type="author"/>:
                        <article-title>Robot joint friction compensation learning enhanced by 6D virtual sensor</article-title>.
                        <source>
                            <italic>International Journal of Robust and Nonlinear Control</italic>
                        </source>.<year>2022</year>;<volume>32</volume>(<issue>9</issue>) :
                        <elocation-id>10.1002/rnc.6108</elocation-id><fpage>5741</fpage>-<lpage>5763</lpage>
                        <pub-id pub-id-type="doi">10.1002/rnc.6108</pub-id>
                    </mixed-citation>
                </ref>
                <ref id="rep-ref-27029-2">
                    <label>2</label>
                    <mixed-citation publication-type="journal">
                        <person-group person-group-type="author"/>:
                        <article-title>Iterative Learning Procedure With Reinforcement for High-Accuracy Force Tracking in Robotized Tasks</article-title>.
                        <source>
                            <italic>IEEE Transactions on Industrial Informatics</italic>
                        </source>.<year>2018</year>;<volume>14</volume>(<issue>4</issue>) :
                        <elocation-id>10.1109/TII.2017.2748236</elocation-id><fpage>1753</fpage>-<lpage>1763</lpage>
                        <pub-id pub-id-type="doi">10.1109/TII.2017.2748236</pub-id>
                    </mixed-citation>
                </ref>
                <ref id="rep-ref-27029-3">
                    <label>3</label>
                    <mixed-citation publication-type="journal">
                        <person-group person-group-type="author"/>:
                        <article-title>Robot control parameters auto-tuning in trajectory tracking applications</article-title>.
                        <source>
                            <italic>Control Engineering Practice</italic>
                        </source>.<year>2020</year>;<volume>101</volume>:
                        <elocation-id>10.1016/j.conengprac.2020.104488</elocation-id>
                        <pub-id pub-id-type="doi">10.1016/j.conengprac.2020.104488</pub-id>
                    </mixed-citation>
                </ref>
                <ref id="rep-ref-27029-4">
                    <label>4</label>
                    <mixed-citation>
                        <person-group person-group-type="author"/>:
                        <article-title>A general analytical procedure for robot dynamic model reduction</article-title>.
                        <source>
                            <italic>2015 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</italic>
                        </source>.<year>2015</year>;
                        <elocation-id>10.1109/IROS.2015.7353960</elocation-id><fpage>4127</fpage>-<lpage>4132</lpage>
                        <pub-id pub-id-type="doi">10.1109/IROS.2015.7353960</pub-id>
                    </mixed-citation>
                </ref>
                <ref id="rep-ref-27029-5">
                    <label>5</label>
                    <mixed-citation>
                        <person-group person-group-type="author"/>:
                        <article-title>Robot-dynamic calibration improvement by local identification</article-title>.
                        <source>
                            <italic>2014 IEEE International Conference on Robotics and Automation (ICRA)</italic>
                        </source>.<year>2014</year>;
                        <elocation-id>10.1109/ICRA.2014.6907742</elocation-id><fpage>5990</fpage>-<lpage>5997</lpage>
                        <pub-id pub-id-type="doi">10.1109/ICRA.2014.6907742</pub-id>
                    </mixed-citation>
                </ref>
            </ref-list>
        </back>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report26831">
        <front-stub>
            <article-id pub-id-type="doi">10.21956/cobot.18719.r26831</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Jiang</surname>
                        <given-names>Quansheng</given-names>
                    </name>
                    <xref ref-type="aff" rid="r26831a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-4148-3438</uri>
                </contrib>
                <aff id="r26831a1">
                    <label>1</label>School of Mechanical &amp; Electronical Engineering, Suzhou University of Science and Technology, Suzhou, China</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>8</day>
                <month>3</month><year>2022</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#xA9; 2022 Jiang Q</copyright-statement>
                <copyright-year>2022</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport26831" related-article-type="peer-reviewed-article" xlink:href="10.12688/cobot.17444.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The identification of the dynamic parameters of manipulators in robot field is a research hotspot. This paper give an overview of the modeling of manipulator dynamics, the optimization methods of excitation trajectory, the identification methods for dynamic parameters, and the identification of friction model parameters. The work is interesting. The framework of the manuscript is reasonable and the overall quality is good. Specific recommendations are as follows: 
                <list list-type="order">
                    <list-item>
                        <p>In the abstract, the authors point out that the instrumental variable method with complete physical feasibility constraints is an optimal choice for dynamic parameter identification. Please give specific instructions in the content.</p>
                    </list-item>
                    <list-item>
                        <p>In the introduction, please add the reviews&#xA0;about deep learning methods based parameters identification for manipulator control.</p>
                    </list-item>
                    <list-item>
                        <p>The future works of parameters identification should be further analysis.</p>
                    </list-item>
                    <list-item>
                        <p>To improve the readability of the submitted manuscript, the editing of typos and grammar expression should be checked.</p>
                    </list-item>
                </list>
            </p>
            <p>Is the review written in accessible language?</p>
            <p>Partly</p>
            <p>Are all factual statements correct and adequately supported by citations?</p>
            <p>Yes</p>
            <p>Are the conclusions drawn appropriate in the context of the current research literature?</p>
            <p>Yes</p>
            <p>Is the topic of the review discussed comprehensively in the context of the current literature?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Robot and automation; Mechanical signal processing.</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
</article>