<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurorobot.</journal-id>
<journal-title>Frontiers in Neurorobotics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurorobot.</abbrev-journal-title>
<issn pub-type="epub">1662-5218</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnbot.2022.883816</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>An Enhanced Positional Error Compensation Method for Rock Drilling Robots Based on LightGBM and RBFN</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Zhou</surname> <given-names>Xuanyi</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1616326/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Bai</surname> <given-names>Wenyu</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>He</surname> <given-names>Jilin</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Dai</surname> <given-names>Ju</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Liu</surname> <given-names>Peng</given-names></name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhao</surname> <given-names>Yuming</given-names></name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<xref ref-type="aff" rid="aff5"><sup>5</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Bao</surname> <given-names>Guanjun</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Key Laboratory of Special Purpose Equipment and Advanced Processing Technology, Zhejiang University of Technology</institution>, <addr-line>Hangzhou</addr-line>, <country>China</country></aff>
<aff id="aff2"><sup>2</sup><institution>Zhejiang Jinbang Sports Equipment Co. Ltd.</institution>, <addr-line>Zhejiang</addr-line>, <country>China</country></aff>
<aff id="aff3"><sup>3</sup><institution>State Key Laboratory of High Performance Complex Manufacturing, Central South University</institution>, <addr-line>Changsha</addr-line>, <country>China</country></aff>
<aff id="aff4"><sup>4</sup><institution>Sunward Intelligent Equipment Company, Ltd.</institution>, <addr-line>Changsha</addr-line>, <country>China</country></aff>
<aff id="aff5"><sup>5</sup><institution>Department of Precision Instruments, Tsinghua University</institution>, <addr-line>Beijing</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Hang Su, Fondazione Politecnico di Milano, Italy</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Jing Luo, Wuhan Institute of Technology, China; Peiyuan Guan, University of Oslo, Norway; Xiaoshan Qian, Yichun University, China</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Wenyu Bai <email>bauyo&#x00040;zjut.edu.cn</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>13</day>
<month>05</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>16</volume>
<elocation-id>883816</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>02</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>14</day>
<month>03</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2022 Zhou, Bai, He, Dai, Liu, Zhao and Bao.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Zhou, Bai, He, Dai, Liu, Zhao and Bao</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Rock drilling robots are able to greatly reduce labor intensity and improve efficiency and quality in tunnel construction. However, due to the characteristics of the heavy load, large span, and multi-joints of the robot manipulator, the errors are diverse and non-linear, which pose challenges to the intelligent and high-precision control of the robot manipulator. In order to enhance the control accuracy, a hybrid positional error compensation method based on Radial Basis Function Network (RBFN) and Light Gradient Boosting Decision Tree (LightGBM) is proposed for the rock drilling robot. Firstly, the kinematics model of the robotic manipulator is established by applying MDH. Then a parallel difference algorithm is designed to modify the kinematics parameters to compensate for the geometric error. Afterward, non-geometric errors are analyzed and compensated by applying RBFN and lightGBM including features and kinematics model. Finally, the experiments of the error compensation by combing combining the geometric and non-geometric errors verify the performance of the proposed method.</p></abstract>
<kwd-group>
<kwd>rock drilling robot</kwd>
<kwd>error compensation</kwd>
<kwd>parameter identification</kwd>
<kwd>parallel differential evolution algorithm</kwd>
<kwd>RBFN</kwd>
</kwd-group>
<contract-num rid="cn001">52105127</contract-num>
<contract-sponsor id="cn001">National Natural Science Foundation of China<named-content content-type="fundref-id">10.13039/501100001809</named-content></contract-sponsor>
<counts>
<fig-count count="12"/>
<table-count count="3"/>
<equation-count count="19"/>
<ref-count count="32"/>
<page-count count="12"/>
<word-count count="7121"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>The tunnel construction machine has been playing an increasingly important role in the development of the modern economy due to the continuous expansions of anthropogenic activity. Moreover, the drilling and blasting method is the most practical and effective method for tunnel engineering (Ocak and Bilgin, <xref ref-type="bibr" rid="B14">2010</xref>). Rock drilling robots are one of an essential piece of tunnel equipment used for drilling and blasting methods. They have been widely applied in the tunnel construction due to its their advantages for reducing labor intensity. Robotic drilling can effectively prevent overcutting and undercutting to improve the efficiency and quality of the tunnel. However, due to the characteristics of the heavy load, large span, and multi-joints of the robotic manipulator, the errors of the rock drilling robot are diverse and non-linear, which pose challenges to the intelligent and high-precision control of the robotic manipulator.</p>
<p>Position accuracy is an important parameter for the robot (Chen D. et al., <xref ref-type="bibr" rid="B4">2018</xref>; Qi et al., <xref ref-type="bibr" rid="B18">2021</xref>). High positioning accuracy is the a guarantee for complex robotic tasks. Especially for industrial robots and medical robots, the error compensation method is important for efficiency and safety. Now robotic surgery is gradually replacing manual surgery because of its stability and convenience, and high precision is the most important guarantee element needed for safety (Su et al., <xref ref-type="bibr" rid="B22">2018</xref>, <xref ref-type="bibr" rid="B20">2021</xref>). These electrical robots for the industry can achieve high accuracy of up to a millimeter level with a high-precision motor (Su et al., <xref ref-type="bibr" rid="B21">2022</xref>). However, the accuracy of hydraulic robots is limited by the underlying rigid actuation mechanisms of the hydraulic actuators. With the improvement of accuracy, the price of hydraulic components has also increased substantially. Therefore, it is necessary to use error compensation methods for the hydraulic robot utilizing conventional hydraulic actuators.</p>
<p>In general, considering the characteristics of nonlinear and multi-coupling, the robotic error is very complex. With the advancement of computer technology, numerous non-linear fitting algorithms are proposed, such as Artificial Neural Networks (ANN) (Zhang et al., <xref ref-type="bibr" rid="B30">2021</xref>), Radial Basis Function Network (RBFN) (Park and Sandberg, <xref ref-type="bibr" rid="B15">1991</xref>), and extreme learning machine (ELM) (Huang et al., <xref ref-type="bibr" rid="B7">2004</xref>), etc. Huang proposed a method to assess the critical parameters for short-term wind generation forecasting by ANN (Sewdien et al., <xref ref-type="bibr" rid="B19">2020</xref>). Chen D. et al. (<xref ref-type="bibr" rid="B3">2019</xref>) proposed a positional error compensation combing RBFN and error similarity. RBFN is used to estimate the error of the target positions. Yuan et al. (<xref ref-type="bibr" rid="B28">2018</xref>) demonstrated that a trained ELM method could guarantee high position accuracy on the drilling robot and reduce the working time and workload. Neural networks have a very wide application. However, it needs many super-parameters to set and takes too long to train the process.</p>
<p>Decision Tree (DT) is a supervised learning method that is widely used to predict models based on a tree structure. DT has higher decision-making efficiency in comparison with other machine learning methods. In fact, many researchers have improved DT models, and some more optimized algorithms have been proposed, such as Random Forest (RF) (Breiman, <xref ref-type="bibr" rid="B1">2001</xref>; Svetnik et al., <xref ref-type="bibr" rid="B23">2003</xref>), Gradient Boosting Decision Tree (GBDT) (Ke et al., <xref ref-type="bibr" rid="B9">2017</xref>), eXtreme Gradient Boosting (XGBoost) (Naghibi et al., <xref ref-type="bibr" rid="B13">2020</xref>), and so on. The liquid crystalline behaviors are successfully predicted using RF in Chen C. H. et al. (<xref ref-type="bibr" rid="B2">2018</xref>). Yao et al. (<xref ref-type="bibr" rid="B26">2019</xref>) proposed a method for predicting line loss rate in a low voltage distribution network based on GBDT method. By analyzing and verifying the data, the GBDT method is accurate and effective. Light-GBM is also an improved algorithm based on GBDT, which was firstly proposed by Microsoft Research Asia in 2016 (Chen P. et al., <xref ref-type="bibr" rid="B5">2019</xref>). Zhou et al. (<xref ref-type="bibr" rid="B31">2020</xref>) proposed a hybrid reservoir permeability prediction method based on Light-GBM. The results show that the method has excellent prediction ability. Compared with the DT algorithm, Light-GBM can significantly promote the training speed without decreasing the accuracy and also occupy less memory during the training process.</p>
<p>There are two types of positional errors in robotic control. The first error is a geometric error, which is generated by the mechanical manufacturing error and assembling error of the robot. To reduce the geometric errors, a parallel difference algorithm is designed in this article to modify the kinematics parameters (Praveen and Denis, <xref ref-type="bibr" rid="B17">2018</xref>; Zhu et al., <xref ref-type="bibr" rid="B32">2020</xref>). The second error is generated by environmental factors, such as temperature and gravity, etc., that have nothing to do with the robot itself, which are defined as non-geometric errors (Zeng et al., <xref ref-type="bibr" rid="B29">2017</xref>; Jiang et al., <xref ref-type="bibr" rid="B8">2021</xref>). These non-geometric errors are usually difficult to analyze accurately because of their non-linear characteristics. Specifically for the manipulators as long as 15 meters, the accuracy is affected by many factors such as elastic deflection and hydraulic components. Nevertheless, Atlas Copco, the world-leading rock drilling robot corporation, can achieve an accuracy of up to 100 mm (Molfino et al., <xref ref-type="bibr" rid="B12">2008</xref>).</p>
<p>In order to enhance the control accuracy, a hybrid positional error compensation method based on Radial Basis Function Network (RBFN) and Light Gradient Boosting Decision Tree (LightGBM) is proposed for the rock drilling robot. Firstly, the kinematics model of the robotic manipulator is established by applying MDH. Then a parallel difference algorithm is designed to modify the kinematics parameters to compensate for the geometric error. Afterward, non-geometric errors are analyzed and compensated by applying RBFN and lightGBM, including features and the kinematics model. Finally, the experiments of the error compensation by combing combining the geometric and non-geometric errors verify the performance of the proposed method.</p>
<p>The structure of the article is divided into five parts. The first part is the introduction. The second part is the kinematic model of the rock drilling robot. According to the structural characteristics of the manipulator, the MDH method is applied to establish the kinematics model of the manipulator. The third part is methodology. By analyzing the parameters of the geometric error compensation model, a parallel difference error compensation algorithm is designed to identify the parameters. Moreover, RBFN and lightGBM are applied to compensate for the non-geometric errors. The fourth part is experimental validation and results. The error compensation experiment is carried out, and the effectiveness of the proposed method is verified. The fifth part is the discussion and summary, which discusses the advantages of the error compensation method.</p></sec>
<sec id="s2">
<title>2. Kinematic Model of the Rock Drilling Robot</title>
<sec>
<title>2.1. Mechanical Structure of the Rock Drilling Robot</title>
<p>The rock drilling robot is mainly composed of the wingspan platform, left and right drilling manipulator, as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. The wingspan platform <italic>C</italic><sub><italic>w</italic></sub> can be raised to enhance the work area. The drilling manipulator, which is mounted at the end of the wingspan, is the main working device of the rock drilling robot. The drilling manipulator has three moving joints and six rotating joints. The left and right manipulator oil cylinders <italic>C</italic><sub><italic>d</italic></sub> are placed at the front end of the manipulator to form a double triangle structure. At the same time, the left and right pitching cylinders <italic>C</italic><sub><italic>s</italic></sub> form a small triangle structure and are connected in series with the manipulator front support cylinder <italic>C</italic><sub><italic>d</italic></sub> to realize parallel linkage at the rear end of the manipulator. The extension of the manipulator telescopic cylinder <italic>C</italic><sub><italic>b</italic></sub> determines the longitudinal working distance of the manipulator. The hydraulic motor <italic>C</italic><sub><italic>f</italic></sub> of the flip joint is used to control the propeller around the axis Linear lateral rotation, with thruster tilt cylinder <italic>C</italic><sub><italic>q</italic></sub> to achieve different drilling angles. Compensation cylinder <italic>C</italic><sub><italic>t</italic></sub> pushes the bracket to move forward and backward to realize the fine adjustment of the position and posture. Each of the joints is actuated by hydraulic cylinders, which effectively serve as velocity sources.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>The structure of a rock drilling robot, <italic>C</italic><sub><italic>w</italic></sub>, wingspan cylinder; <italic>C</italic><sub><italic>d</italic></sub>, large triangle left and right manipulator oil cylinder; <italic>C</italic><sub><italic>b</italic></sub>, telescopic oil cylinder; <italic>C</italic><sub><italic>s</italic></sub>, small triangle left and right pitching oil cylinder; <italic>C</italic><sub><italic>f</italic></sub>, turnover hydraulic motor; <italic>C</italic><sub><italic>q</italic></sub>, tilt oil cylinder; <italic>C</italic><sub><italic>t</italic></sub>, compensation oil cylinder; <italic>C</italic><sub><italic>z</italic></sub>, drill rod oil cylinder.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0001.tif"/>
</fig></sec>
<sec>
<title>2.2. Forward Kinematics Based on MDH Model</title>
<p>DH method is a standard method to realize the transformation between joint variables and Cartesian coordinates and learn the kinematics modeling of the robot. However, when the joint axes between adjacent links are close to parallel, the position of the actual normal will deviate significantly from the theoretical normal due to the slight deviation of parallelism, which will affect the kinematic calculation.</p>
<p>Therefore, the MDH method is adopted to describe the conversion relationship of parallel joint axis systems. Its characteristic role is to add the rotation change Rot (<italic>y</italic><sub><italic>i</italic></sub>, &#x003B2;<sub><italic>i</italic></sub>) around the y axis on the original DH model and set the initial value of &#x003B2;<sub><italic>i</italic></sub> of adjacent joints to 0.</p>
<p>According to the structural characteristics of the rock drilling manipulator, the coordinate system transformation between links is designed, and the kinematic model of the manipulator is established, as shown in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Kinematics of rock drilling manipulator. Joint 1, wingspan rotation joint; Joint 2, wingspan parallel joint; Joint 3, left and right rotation joint of big triangle; Joint 4, pitch joint of big triangle; Joint 5, pitch joint of small triangle; Joint 6, left and right rotation joint of small triangle; Joint 7, turning joint; Joint 8, tilt joint; Joint 9, front end of compensation joint; Joint 10, end of compensation joint; L1, span support oil cylinder; L2, telescopic oil cylinder of large manipulator; L3, compensation propulsion cylinder.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0002.tif"/>
</fig></sec>
<sec>
<title>2.3. Forward Kinematics Model With MDH</title>
<p>When the coordinate systems of the manipulator 1, 2, 4, and 5 are parallel, the forward kinematics model of the rock drilling robot is established according to MDH method as shown in <xref ref-type="table" rid="T1">Table 1</xref>, and the homogeneous transformation matrix <inline-formula><mml:math id="M1"><mml:msubsup><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> between adjacent link coordinate systems is obtained, as shown in Equation (1):</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mo>=</mml:mo><mml:mo class="qopname">Trans</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">Rot</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mo class="qopname">Trans</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo class="qopname">Rot</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">Rot</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>11</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>12</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>13</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>14</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>21</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>22</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>23</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>24</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>31</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>32</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>33</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mn>34</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>m</italic><sub>11</sub> &#x0003D; <italic>c&#x003B8;</italic><sub><italic>i</italic></sub><italic>c&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>12</sub> &#x0003D; &#x02212;<italic>s&#x003B8;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>13</sub> &#x0003D; <italic>c&#x003B8;</italic><sub><italic>i</italic></sub><italic>s&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>14</sub> &#x0003D; <italic>a</italic><sub><italic>i</italic>&#x02212;1</sub>, <italic>m</italic><sub>21</sub> &#x0003D; <italic>s&#x003B8;</italic><sub><italic>i</italic></sub><italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>c&#x003B2;</italic><sub><italic>i</italic></sub> &#x0002B; <italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>s&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>22</sub> &#x0003D; <italic>c&#x003B8;</italic><sub><italic>i</italic></sub><italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub>, <italic>m</italic><sub>23</sub> &#x0003D; <italic>s&#x003B8;</italic><sub><italic>i</italic></sub><italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>s&#x003B2;</italic><sub><italic>i</italic></sub>&#x02212;<italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>c&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>24</sub> &#x0003D; &#x02212;<italic>d</italic><sub><italic>i</italic></sub><italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub>, <italic>m</italic><sub>31</sub> &#x0003D; <italic>s&#x003B8;</italic><sub><italic>i</italic></sub><italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>c&#x003B2;</italic><sub><italic>i</italic></sub>&#x02212;<italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>s&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>32</sub> &#x0003D; <italic>c&#x003B8;</italic><sub><italic>i</italic></sub><italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub>, <italic>m</italic><sub>33</sub> &#x0003D; <italic>s&#x003B8;</italic><sub><italic>i</italic></sub><italic>s&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>s&#x003B2;</italic><sub><italic>i</italic></sub> &#x0002B; <italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub><italic>c&#x003B2;</italic><sub><italic>i</italic></sub>, <italic>m</italic><sub>34</sub> &#x0003D; <italic>d</italic><sub><italic>i</italic></sub><italic>c&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub>. <italic>s</italic> presents the sine function while <italic>c</italic> is the cosine function.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>DH parameter of the rock drilling robot.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold>i</bold></th>
<th valign="top" align="center"><bold>Variable</bold></th>
<th valign="top" align="center"><bold>Variable range</bold></th>
<th valign="top" align="center"><bold>&#x003B1;<sub><italic>i</italic>&#x02212;1</sub>/(&#x000B0;)</bold></th>
<th valign="top" align="center"><bold><italic>a</italic><sub><italic>i</italic>&#x02212;1</sub>/mm</bold></th>
<th valign="top" align="center"><bold><italic>d</italic><sub><italic>i</italic></sub>/mm</bold></th>
<th valign="top" align="center"><bold>&#x003B8;<sub><italic>i</italic></sub>/(&#x000B0;)</bold></th>
<th valign="top" align="center"><bold>&#x003B2;<sub><italic>i</italic></sub>/(&#x000B0;)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">&#x003B8;<sub>1</sub></td>
<td valign="top" align="center">&#x02212;15 to 60&#x000B0;</td>
<td valign="top" align="center">90&#x000B0;</td>
<td valign="top" align="center">200</td>
<td valign="top" align="center">250</td>
<td valign="top" align="center">&#x003B8;<sub>1</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">&#x003B8;<sub>2</sub></td>
<td valign="top" align="center">15 to 60&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">1,382</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">&#x02212;&#x003B8;<sub>1</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">&#x003B8;<sub>3</sub></td>
<td valign="top" align="center">30 to 150&#x000B0;</td>
<td valign="top" align="center">&#x02212;90&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2,500</td>
<td valign="top" align="center">&#x003B8;<sub>3</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">&#x003B8;<sub>4</sub></td>
<td valign="top" align="center">&#x02212;15 to 60&#x000B0;</td>
<td valign="top" align="center">&#x02212;90&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">&#x003B8;<sub>4</sub></td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">5</td>
<td valign="top" align="center"><italic>L</italic><sub>2</sub>,&#x003B8;<sub>5</sub></td>
<td valign="top" align="center">0&#x0007E;2,168 mm, &#x02212;30 to 30&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">5,000&#x0002B;<italic>L</italic><sub>2</sub></td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">&#x003B8;<sub>5</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">6</td>
<td valign="top" align="center">&#x003B8;<sub>6</sub></td>
<td valign="top" align="center">&#x02212;75 to &#x02212;125&#x000B0;</td>
<td valign="top" align="center">90&#x000B0;</td>
<td valign="top" align="center">145</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">&#x003B8;<sub>6</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">7</td>
<td valign="top" align="center">&#x003B8;<sub>7</sub></td>
<td valign="top" align="center">&#x02212;25 to &#x02212;175&#x000B0;</td>
<td valign="top" align="center">&#x02212;90&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">900</td>
<td valign="top" align="center">&#x003B8;<sub>7</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">8</td>
<td valign="top" align="center">&#x003B8;<sub>8</sub></td>
<td valign="top" align="center">15 to &#x02212;20&#x000B0;</td>
<td valign="top" align="center">90&#x000B0;</td>
<td valign="top" align="center">240</td>
<td valign="top" align="center">580</td>
<td valign="top" align="center">&#x003B8;<sub>8</sub></td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">9</td>
<td valign="top" align="center"><italic>L</italic><sub>3</sub></td>
<td valign="top" align="center">0 to 1,778 mm</td>
<td valign="top" align="center">&#x02212;90&#x000B0;</td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">2,230&#x0002B;<italic>L</italic><sub>3</sub></td>
<td valign="top" align="center">0</td>
<td valign="top" align="center">0</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>When the coordinate systems of two adjacent joints are not parallel, &#x003B2;<sub><italic>i</italic></sub> = 0, and the second transformation <inline-formula><mml:math id="M3"><mml:msubsup><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> between the links of two adjacent non-parallel joints is defined in Equation (2):</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M4"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mtext>&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mo class="qopname">Rot</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">Trans</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">Rot</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo class="qopname">Trans</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mtext>&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>-</mml:mo><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>-</mml:mo><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>c</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Substituting the parameters of each joint into the homogeneous transformation matrix, the transformation matrix of the robot manipulator end actuator relative to the base is obtained, as shown in Equation (3):</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>o</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mi>R</mml:mi></mml:mtd><mml:mtd><mml:mi>P</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
</sec></sec>
<sec sec-type="methods" id="s3">
<title>3. Methodology</title>
<sec>
<title>3.1. Parameter Identification of Geometric Error Compensation Model</title>
<p>The geometric error mainly refers to the error between the ideal kinematic model parameters and the parameters of the actual MDH modeling (Khan and Chen, <xref ref-type="bibr" rid="B10">2011</xref>; Cui et al., <xref ref-type="bibr" rid="B6">2012</xref>). Therefore, the geometric errors are composed of measurement errors of length and angles during modeling, the calibration errors of the sensor, the manufacturing errors, and assembly errors. For positive kinematics parameters, <italic>a</italic><sub><italic>i</italic></sub> represents the distance between the joint axes of two adjacent joints, and the main error caused by <italic>a</italic><sub><italic>i</italic></sub> is the actual machining error. The symbol &#x003B1;<sub><italic>i</italic></sub> represents the relative rotation angle of the two connected joints, and its main error comes from the coaxiality error in the assembly. <italic>d</italic><sub><italic>i</italic></sub> represents the relative distance between the two joints on the common joint axis, which is mainly derived from the measurement error during modeling. &#x003B8;<sub><italic>i</italic></sub> represents the rotation angle of two adjacent joints around the common axis; the error mainly comes from the observation error of the sensors.</p>
<p>The key role of the MDH method is to determine the axis of each joint. Therefore, by tracking and recording the trajectory of each joint&#x00027;s movement, the actual joint axis position of the robot can be established in the MDH model. The kinematic parameters of the manipulator are defined by error computation or estimation applying the posture measurement and position data of the end effector. In this article, the kinematic parameters are estimated by applying a differential evolution algorithm. The identified kinematics error parameters &#x00394;&#x003B1;, &#x00394;<italic>a</italic>, &#x00394;<italic>d</italic>, &#x00394;&#x003B8;, &#x00394;&#x003B2; are defined as: Kinematic parameters are estimated applying differential evolution algorithm. The identified kinematics error parameters &#x00394;&#x003B1;, &#x00394;<italic>a</italic>, &#x00394;<italic>d</italic>, &#x00394;&#x003B8;, &#x00394;&#x003B2; are defined as:</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>F</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>d</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B4;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>e</italic><sub><italic>d</italic></sub> denotes the error of the end position, which indicates the distance deviation between the predicted position of the model and the actual position. The symbol <italic>e</italic><sub>&#x003B4;</sub> is the error of the end attitude, which indicates the predicted rotation angle deviation between the model and the actual attitude on the x, y, and z axes. The observation prisms &#x0201C;r&#x0201D; and &#x0201C;s&#x0201D; are set at the front and end of the manipulator&#x00027;s compensation cylinder. The displacement from the deflection deformation and other nonlinear factors are ignored in the geometric compensation. Then the attitude error at the end of the robotic manipulator <inline-formula><mml:math id="M7"><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msubsup></mml:mtd><mml:mtd><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B4;</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msubsup></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> can be obtained from the position error of the two observation <inline-formula><mml:math id="M8"><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msubsup></mml:mtd><mml:mtd><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msubsup></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. The geometric error model can be expressed as:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M9"><mml:mrow><mml:mi>F</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>d</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mi>r</mml:mi></mml:msubsup><mml:msup><mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>e</mml:mi><mml:mi>d</mml:mi><mml:mi>s</mml:mi></mml:msubsup><mml:msup><mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:math></disp-formula>
</sec>
<sec>
<title>3.2. Parallel Differential Evolution</title>
<p>The differential evolution algorithm is a heuristic algorithm that can be applied to solve the optimization problem through competition and cross-mutation. In order to identify the parameters of the rock drilling robot, the common differential evolution algorithm is proposed as the following five steps:</p>
<p><bold>Step 1</bold> Initialization</p>
<p>The initial population is generated by randomly sampling the feasible search space defined by joint bounds, as shown in Equation (6):</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M10"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mo class="qopname">rand</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Let <italic>n</italic> be the individual dimension, expressed as the value of the first individual of the generation population in the dimension, and the individual randomly generates an initial value that meets the constraints in each dimension:</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M11"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mo class="qopname">rand</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In Equation (6), <italic>U</italic><sub><italic>j</italic></sub> and <italic>L</italic><sub><italic>j</italic></sub> represent the upper and lower bounds of the individual on the dimension and <italic>rand</italic><sub><italic>ij</italic></sub>(0, 1) represents a random number between [0, 1] that obeys a uniform distribution.</p>
<p><bold>Step 2</bold> Mutation</p>
<p>There are multiple solutions for the parameter identification of the rock drilling robot error model, the robust DE/rand/1/bin evolution model is used to preserve the diversity of the search population (Mlakar et al., <xref ref-type="bibr" rid="B11">2015</xref>). The specific operation is to select an individual with the highest fitness from the current population, randomly select three different individuals, and scale the difference between the two vectors and add it to another individual vector to obtain a new variable Individual (Pavelski et al., <xref ref-type="bibr" rid="B16">2016</xref>):</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M12"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>F</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where F is the scaling factor of DE, the value range is [0, 1].</p>
<p><bold>Step 3</bold> Boundary constraint</p>
<p>The individual vector after the mutation operation may exceed the boundary of the search solution space, and the infeasible solution is converted to generate a new vector (Tian et al., <xref ref-type="bibr" rid="B24">2020</xref>):</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M13"><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><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:mi>min</mml:mi><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>if&#x000A0;</mml:mtext><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0003C;</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd columnalign="left"><mml:mrow><mml:mi>max</mml:mi><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mi>U</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>if&#x000A0;</mml:mtext><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0003E;</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p><bold>Step 4</bold> Crossover</p>
<p>The differential evolution algorithm crosses the reference vector and mutation vector to increase the diversity of the next generation population. The specific operations are as follows:</p>
<disp-formula id="E10"><label>(10)</label><mml:math id="M14"><mml:msub><mml:mi>h</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><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>v</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mtext>&#x000A0;if&#x000A0;rand&#x000A0;</mml:mtext></mml:mrow><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">]</mml:mo><mml:mo>&#x0003C;</mml:mo><mml:mi>C</mml:mi><mml:mi>r</mml:mi><mml:mtext>&#x000A0;or&#x000A0;</mml:mtext><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>j</mml:mi><mml:mrow><mml:mtext>rand</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;Otherwise&#x000A0;</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>Where: rand[0,1] represents the uniformly distributed random number on the jth dimension, C<sub><italic>r</italic></sub> represents the crossover probability in the range of [0,1], j<sub>rand</sub> represents a random number in 1,2,&#x02026;,n.</p>
<p><bold>Step 5</bold> Selection</p>
<p>Based on the greedy selection mechanism, it compares the fitness of the mutated and cross-generated individual with the original individual and retains the highly adaptive individual as the next-generation population individual. The specific expression is as follows:</p>
<disp-formula id="E11"><label>(11)</label><mml:math id="M15"><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mtext>&#x000A0;if&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x0003E;</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>X</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:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msub><mml:mi>X</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:mtext>&#x000A0;if&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x0003C;</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>X</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:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>where <italic>f</italic> is the fitness function.</p>
<p>Since the rock drilling robot has three moving joints and six rotating joints, the dimension numbers of the error compensation model is 38. The high-dimensional solution requires a high number of populations and evolutionary algebra, which poses challenges to computer performance, algorithm model convergence, and computing speed. In order to accelerate the model convergence and increase the calculation speed under the same computing power input, a parallel structure of the differential evolution algorithm is proposed. The computing performance of the CPU can be enhanced by applying a parallel differential evolution algorithm to calculate independent individual populations. Specifically, due to the independence of the sub-populations, multiple processes can be allocated through different computing cores of the CPU to calculate the fitness of multiple sub-populations parallel. The structure of the parallel differential evolution algorithm is shown in <xref ref-type="fig" rid="F2">Figures 2</xref>&#x02013;<bold>6</bold>. Set the kinematic parameter error compensation vector &#x00394;&#x003B1;, &#x00394;<italic>a</italic>, &#x00394;<italic>d</italic>, &#x00394;&#x003B8;, &#x00394;&#x003B2; to be the population individual in the differential evolution algorithm. The sum of squared errors between the trajectory of the end of the robotic manipulator and the observation trajectory in the population is <italic>F</italic>.</p>
</sec>
<sec>
<title>3.3. Non-geometric Error Analysis</title>
<p>Due to the heavy load, large span, redundant joints, and hydraulic character of the rock drilling robot, the error shows a high degree of non-linearity. After geometric error compensation is performed on the positive kinematics model, there are still errors due to the non-linearity. The non-geometric errors are composed of regular errors and irregular errors. Regular errors refer to predictable errors, including elastic deformation due to changes in load, frictional force direction, structural changes, and the cumulative error caused by the transducer. The irregular errors mainly come from observation errors and system errors. The observation errors are related to the dynamic position capture accuracy of the total station, the observation elevation angle, and the measurement accuracy of the optical sensor; the system errors mainly come from the command error of the encoder and the signal transmission communication delay, vibration errors caused by kinetic energy changes, etc. Regular non-geometric errors are related to the time and space of the robot arm movement. Take the compensation joint L3 as an example. Moreover, changes in the relative speed and direction of joint motion affect the magnitude and direction of frictional resistance, and thereby the position error is changed.</p>
<p>Features are important conditions that affects the machine learning models. Important features are extracted from the original data for the use of algorithms and models (Yu et al., <xref ref-type="bibr" rid="B27">2017</xref>; Wen et al., <xref ref-type="bibr" rid="B25">2021</xref>). Different algorithms have different feature selections during supervised learning training due to their training methods and structural characteristics. To perform supervised learning training on non-geometric error compensation of rock drilling robots, various features are extracted according to different input feature vectors. The feature types are divided into three types:</p>
<list list-type="simple">
<list-item><p>(1) <bold>Feature of the joint:</bold> The value of each joint sensor is applied as a feature vector.</p></list-item>
<list-item><p>(2) <bold>Feature of positive kinematics model:</bold> The positive kinematics of the robotic manipulator can project the posture of each joint from the sensor to the Cartesian three-dimensional coordinate, including the motion state, spatial changes, and transformations of the non-geometric errors.</p></list-item>
<list-item><p>(3) <bold>Feature of control system:</bold> The feature of the control system refers to the signal to control the electro-hydraulic proportional valve, and the direction of joint, movement speed, and stroke distance. The hydraulic control is affected by the temperature, pressure, external load, and external environment of the hydraulic system.</p></list-item>
</list></sec>
<sec>
<title>3.4. RBFN</title>
<p>RBFNN is a three-layer neural network that can quickly approximate the nonlinear function to overcome local minimums. There are three layers in RBFN, namely including an input layer, a hidden layer, and an output layer, as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>The structure of the RBFN network.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0003.tif"/>
</fig>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>One of the regression tree of lightGBM.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0004.tif"/>
</fig>
<p>The relationship of the RBFN from vector input to output is described as:</p>
<disp-formula id="E12"><label>(12)</label><mml:math id="M16"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>&#x003C9;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>&#x003C9;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B8;</mml:mi><mml:mo stretchy="false">|</mml:mo><mml:mo stretchy="false">|</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">|</mml:mo><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>x</italic> is the input vector, &#x003C9; is the output layer connection weight, &#x003D5; is the hidden layer basis function, and <italic>c</italic><sub><italic>k</italic></sub> is the basis function center of the <italic>k</italic>th neuron node</p>
<p>The radial basis kernel function is defined as Gaussian radial basis function:</p>
<disp-formula id="E13"><label>(13)</label><mml:math id="M17"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo><mml:mo stretchy="false">|</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo stretchy="false">|</mml:mo><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo class="qopname">exp</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>&#x000B7;</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000B7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where &#x003C3;<sub><italic>k</italic></sub> is the expansion width of the radial basis function of the first neuron in the hidden layer.</p>
<p>Features are composed of the joint sensor value and the three-dimensional coordinates calculated through positive kinematics. In this article, the input of the RBFN model is normalized &#x0201C;joint sensor value (9-dimensional)&#x0201D; and &#x0201C;positive kinematics model parameters (27-dimensional)&#x0201D; which is 36-dimensional in total, and the output is the predicted three-dimensional coordinates. When <italic>k</italic> &#x0003D; 100 and &#x003C3; &#x0003D; 0.05, it is validated that the model shows the best result through experiments.</p></sec>
<sec>
<title>3.5. LightGBM</title>
<p>LightGBM is a fast, distributed, and high-performing framework based on gradient boosting decision tree (GBDT), which has wide applications in for decades for due to its superior predictive performance. Combining gradient boosting and decision tree, lightGBM has a strong expressive ability, good training effect, and can effectively prevent overfitting by controlling the growth of the tree. It can solve continuous and discrete values flexibly and is robust to outliers. The process is mainly composed of three steps, outlined as below:</p>
<p><bold>Step 1</bold> The training data set is given as: <italic>P</italic> &#x0003D; {(<italic>x</italic><sub>1</sub>, <italic>y</italic><sub>1</sub>), &#x02026;, (<italic>x</italic><sub>2</sub>, <italic>y</italic><sub>2</sub>)}, let the loss function be <italic>L</italic>(<italic>y</italic>, &#x003B3;), the learner is initialized:</p>
<disp-formula id="E14"><label>(14)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo class="qopname">arg</mml:mo><mml:msub><mml:mrow><mml:mi>m</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mi>L</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><bold>Step 2</bold> M base learners are iteratively generated</p>
<p>The negative gradient of each samples <italic>i</italic> &#x0003D; 1, 2, &#x02026;, <italic>N</italic> is calculated as:</p>
<disp-formula id="E15"><label>(15)</label><mml:math id="M19"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>L</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</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>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>f</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:mrow></mml:mfrac></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:math></disp-formula>
<p>(<italic>x</italic><sub><italic>i</italic></sub>, <italic>r</italic><sub><italic>mi</italic></sub>)(<italic>i</italic> &#x0003D; 1, 2, &#x02026;, <italic>N</italic>) is utilized as the training data for the next regression tree. The leaf node area <italic>R</italic><sub>(<italic>jm</italic>)</sub> of the m-th tree <italic>f</italic><sub><italic>m</italic></sub>(<italic>x</italic>), <italic>j</italic> &#x0003D; 1, 2, &#x02026;, <italic>J</italic>,<italic>J</italic> is the number of leaf nodes of the regression tree. The best fit is calculated as</p>
<disp-formula id="E16"><label>(16)</label><mml:math id="M20"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo class="qopname">arg</mml:mo><mml:mi>m</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>&#x003F5;</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder></mml:mstyle><mml:mi>L</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><bold>Step 3</bold> The strong learner is generated as:</p>
<disp-formula id="E17"><label>(17)</label><mml:math id="M21"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mtext>&#x000A0;</mml:mtext><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>M</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>M</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>J</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>&#x003B3;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mi>&#x003F5;</mml:mi><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The endpoint error compensation is used as the training label for supervised learning; its training features have a total of 66 dimensions, which are &#x0201C;feature of the joint (9 dimensions)&#x0201D; &#x0002B; &#x0201C;feature of positive kinematics model (27 dimensions)&#x0201D; &#x0002B; &#x0201C;feature of control system (30 dimensions).&#x0201D; K-fold cross-validation method is applied. The test data <italic>D</italic> is divided into k parts in equal proportions. One of the parts is applied as the verification set. The other <italic>K</italic>&#x02212;1 parts of data are used as the training data. After performing K times of training, the average result of the K training experiments is used as the final result. When the model stability is low, increasing the value of K can achieve better results.</p></sec></sec>
<sec id="s4">
<title>4. Experimental Validation and Results</title>
<sec>
<title>4.1. Experimental Set-Up</title>
<p>In order to achieve accurate position compensation for the rock drilling robot, the error compensation experiment is performed. In this experiment, the SWDT82 rock drilling robot developed by Sunward Intelligent Co., Ltd, as shown in <xref ref-type="fig" rid="F5">Figure 5</xref>, has a maximum manipulator length of 12.8 m and a wingspan of 5.2 m. The maximum coverage section width of the dual-manipulator rock drilling robot is 17.65 m, the maximum coverage section height is 13.38 m, and the maximum invert depth is 3.31 m.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>SWDT82 rock drilling robot.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0005.tif"/>
</fig>
<p>The rock drilling robot is equipped with a three length transducer and seven angle sensors as shown in <xref ref-type="fig" rid="F6">Figure 6</xref>. The angle sensors are the rotary encoder of POSITAL&#x00027;s model IXARC, and its theoretical measurement error is 0.1&#x000B0;; the length transducer is TRANSTRONIC&#x00027;s model 022441, and the theoretical error of measurement linearity of this sensor is 0.1% mm. The observation instrument in the experiment is a Topcon laser total station, which has functions such as motor tracking, automatic sighting, and Bluetooth transmission.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>The sensors applied in the rock drilling robot, <bold>(A)</bold> a joint angle sensor, <bold>(B)</bold> is a length transducer.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0006.tif"/>
</fig>
</sec>
<sec>
<title>4.2. Experimental Results</title>
<p>To compensate for the geometric error of the rock drilling robot, the motion of a single joint is carried out. The position and posture of the rock drilling robot are collected through Topcon total station transmitting to the master computer using Bluetooth as shown in <xref ref-type="fig" rid="F7">Figure 7</xref>. The data of the angle sensors and length transducers are transmitted to the master computer <italic>w</italic>, <italic>b</italic>, <italic>r</italic>, and <italic>s</italic> corresponding to the joint 3, the joint 5, the front of the compensation cylinder 9, and the end position of the compensation cylinder 10, as shown in <xref ref-type="fig" rid="F8">Figure 8</xref>. Moreover, the end posture of the rock drilling manipulator is determined by the position of observation point <italic>r</italic> and <italic>s</italic>.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Experiment of the rock drilling robot.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0007.tif"/>
</fig>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Schematic diagram of observation point.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0008.tif"/>
</fig>
<p>So as to identify the geometric error of the manipulator, single-joint motion of the manipulator is carried out. After substituting each observation point, obtained from sensors, into the forward kinematics model for calculation, the absolute errors can be obtained. The absolute average error of each observation point is <inline-formula><mml:math id="M22"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M23"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M24"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M25"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> = 323.59: 477.53: 895.52: 930.88 (mm).</p>
<p>Afterwards, the multi-joint motion experiment is carried out. Trajectory data of the observation points of rock drilling robot motion <italic>r</italic>, <italic>s</italic>, <italic>b</italic>, <italic>w</italic> is applied for error analysis. In the multi-joint movement, the absolute average error of each observation point data set <inline-formula><mml:math id="M26"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M27"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M28"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>: <inline-formula><mml:math id="M29"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> = 355.61: 783.17: 1085.32: 1288.916 (mm).</p>
<p>In order to identify the forward kinematics of the manipulator, the differential evolution method is applied to compensate for the geometric error. This experiment not only explores the error compensation effect of the error model method but also explores the influence of the amount of data on the convergence of the parameter identification of the error model method. Due to the high-dimension of the model, the population of the differential evolution algorithm is set to 30,000. To avoid premature convergence of parameter optimization, the differential cross recombination probability <italic>C</italic><sub><italic>r</italic></sub> is set to 1, the scaling factor <italic>F</italic> = 0.5, and the number of evolutions is set to 400. To improve the performance of the model, the data set is shuffled and substituted into the model multiple times to obtain the optimal solution. To optimize the error model, the joint constraints are increased. Set the end trajectory of each observation point as <inline-formula><mml:math id="M30"><mml:msubsup><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M31"><mml:msubsup><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M32"><mml:msubsup><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M33"><mml:msubsup><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>, the trajectory observation point set is <italic>P</italic>&#x02032; and the model prediction point set are (<italic>X</italic>&#x02032;, <italic>Y</italic>&#x02032;, <italic>Z</italic>&#x02032;, Then the position error of each observation position are <inline-formula><mml:math id="M34"><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula>. The average absolute error <italic>F</italic> of the optimal error model with ideal multi-joint constraints at each observation point is expressed as:</p>
<disp-formula id="E18"><label>(18)</label><mml:math id="M35"><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>F</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>min</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi>w</mml:mi><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>min</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi>b</mml:mi><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>S</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>min</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi>S</mml:mi><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign="left"><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>min</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>
<p>The solutions of <italic>F</italic><sub><italic>w</italic></sub>, <italic>F</italic><sub><italic>b</italic></sub>, <italic>F</italic><sub><italic>s</italic></sub>, <italic>and F</italic><sub><italic>r</italic></sub> are difficult to satisfy simultaneously, and the reduction of the error of some joint clusters requires the degradation of the error fitting effect of the other joint clusters, resulting in the Pareto solution. And new observation errors are introduced by adding trajectory constraints, which reduce the overall accuracy of the model. In order to solve the above problems, an equal amount of data in the model calculation are applied for each joint. Moreover, a weight coefficient is assigned to each joint, and the functions are obtained by linearly combining the multi-objective functions:</p>
<disp-formula id="E19"><label>(19)</label><mml:math id="M36"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>F</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>d</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where &#x003BC;<sub><italic>r</italic></sub>, &#x003BC;<sub><italic>s</italic></sub>, &#x003BC;<sub><italic>b</italic></sub>, <italic>and &#x003BC;</italic><sub><italic>w</italic></sub> are the weight coefficients of the multi-objective error constraint, and<italic>n</italic><sub><italic>r</italic></sub>, <italic>n</italic><sub><italic>s</italic></sub>, <italic>n</italic><sub><italic>b</italic></sub>, <italic>and n</italic><sub><italic>w</italic></sub> are the numbers of each data set. The parameters of forward kinematics of the optimal method are obtained shown in as <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Parameters of positive kinematics compensation.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th valign="top" align="left"><bold><italic>i</italic></bold></th>
<th valign="top" align="center"><bold>&#x00394;<italic>&#x003B1;</italic><sub><italic>i</italic>&#x02212;1</sub>/(&#x000B0;)</bold></th>
<th valign="top" align="center"><bold>&#x00394;<italic>a</italic><sub><italic>i</italic>&#x02212;1</sub>/mm</bold></th>
<th valign="top" align="center"><bold>&#x00394;<italic>d</italic><sub><italic>i</italic>&#x02212;1</sub>/mm</bold></th>
<th valign="top" align="center"><bold>&#x00394;<italic>&#x003B8;</italic><sub><italic>i</italic>&#x02212;1</sub>/(&#x000B0;)</bold></th>
<th valign="top" align="center"><bold>&#x00394;&#x003B2;<italic>i</italic>&#x02212;1/(&#x000B0;)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">3.5932</td>
<td valign="top" align="center">266.49</td>
<td valign="top" align="center">&#x02212;37.92</td>
<td valign="top" align="center">3.9988</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">0.3292</td>
<td valign="top" align="center">&#x02212;91.55</td>
<td valign="top" align="center">85.62</td>
<td valign="top" align="center">2.3400</td>
<td valign="top" align="center">5.3136</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">5.9856</td>
<td valign="top" align="center">90.88</td>
<td valign="top" align="center">96.04</td>
<td valign="top" align="center">2.9599</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">&#x02212;5.7576</td>
<td valign="top" align="center">95.11</td>
<td valign="top" align="center">369.38</td>
<td valign="top" align="center">5.1696</td>
<td valign="top" align="center">&#x02212;2.9444</td>
</tr>
<tr>
<td valign="top" align="left">5</td>
<td valign="top" align="center">&#x02212;3.1405</td>
<td valign="top" align="center">123.58</td>
<td valign="top" align="center">230.58</td>
<td valign="top" align="center">1.1894</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">6</td>
<td valign="top" align="center">&#x02212;0.5786</td>
<td valign="top" align="center">&#x02212;253.95</td>
<td valign="top" align="center">&#x02212;33.82</td>
<td valign="top" align="center">&#x02212;0.5875</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">7</td>
<td valign="top" align="center">1.0460</td>
<td valign="top" align="center">269.17</td>
<td valign="top" align="center">225.12</td>
<td valign="top" align="center">4.6678</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">8</td>
<td valign="top" align="center">&#x02212;1.0995</td>
<td valign="top" align="center">376.07</td>
<td valign="top" align="center">24.36</td>
<td valign="top" align="center">2.8406</td>
<td valign="top" align="center">0</td>
</tr>
<tr>
<td valign="top" align="left">9</td>
<td valign="top" align="center">3.5932</td>
<td valign="top" align="center">266.49</td>
<td valign="top" align="center">&#x02212;37.92</td>
<td valign="top" align="center">3.9988</td>
<td valign="top" align="center">0</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The average absolute error can be calculated from the compensated positive kinematics. A parallel differential evolution algorithm is applied to move a single joint as the first experiment. Then, a parallel differential evolution algorithm is applied for moving multi-joints applying as the second experiment. Ultimately, the optimal differential evolution algorithm is applied as the third experiment. Consequently, the distribution of errors is shown in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p>The mean absolute error of each experiment.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th/>
<th valign="top" align="center"><bold>&#x00113;<sub><italic>r</italic></sub> (mm)</bold></th>
<th valign="top" align="center"><bold>&#x00113;<sub><italic>s</italic></sub> (mm)</bold></th>
<th valign="top" align="center"><bold>&#x00113;<sub><italic>b</italic></sub> (mm)</bold></th>
<th valign="top" align="left"><bold>&#x00113;<sub><italic>w</italic></sub> (mm)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Single <break/> joint</td>
<td valign="top" align="center">382.58</td>
<td valign="top" align="center">396.04</td>
<td valign="top" align="center">466.92</td>
<td valign="top" align="center">263.21</td>
</tr>
<tr>
<td valign="top" align="left">Multi <break/> joint</td>
<td valign="top" align="center">389.08</td>
<td valign="top" align="center">334.58</td>
<td valign="top" align="center">290.45</td>
<td valign="top" align="center">44.83</td>
</tr>
<tr>
<td valign="top" align="left">Optimal <break/> method</td>
<td valign="top" align="center">306.82</td>
<td valign="top" align="center">320.12</td>
<td valign="top" align="center">298.69</td>
<td valign="top" align="center">70.37</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Applying the optimal method of parallel differential evolution, the errors of the end effectors are compensated, and the best performance is achieved compared to the parallel differential evolution algorithm.</p>
<p>The overall control flowchart is shown in <xref ref-type="fig" rid="F9">Figure 9</xref>. Firstly, the modified positive kinematics is obtained through an optimal parallel differential evolution algorithm to compensate for the geometric error. Afterward, the features are applied to train RBFN. The estimated position and features are combined to train light GBM. The non-geometric errors are compensated through RBFN and light GBM. The top 10 features are shown in <xref ref-type="fig" rid="F10">Figure 10</xref>. <italic>X</italic>_<italic>i</italic>, <italic>Y</italic>_<italic>i, Z</italic>_<italic>i</italic> (i=1, 2..) are the Cartesian coordinates of the joint i, <italic>orient</italic>3 is the control current of the hydraulic valve, <italic>Propeller</italic>_<italic>Flip</italic>_<italic>Angle</italic> is the sensor of the flip joint, <italic>Z</italic>_<italic>dabi, Y</italic>_<italic>dabi</italic> denote the Z coordinate and Y coordinate of the big manipulator separately, Y coordinate. The hydraulic valve current control ranks 7th in feature importance as a system feature, indicating that the system feature has an important contribution for the model.</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>Control flowchart of the rock drilling robot&#x00027;s error compensation.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0009.tif"/>
</fig>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p>Top 10 features of lightGBM.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0010.tif"/>
</fig>
<p>The absolute error of the endpoint is obtained for multiple experiments in <xref ref-type="fig" rid="F11">Figure 11</xref>. All of the experiments are carried out by applying the same positive kinematics from the optimal parallel differential evolution. The average error of the RBFN is 41.5 mm, while the standard error of the RBFN is 33.5 mm. Moreover, the average error of the lightGBM is 41.0 mm, while the standard error of the RBFN is 28.5 mm. Moreover, the average error of the hybrid method is 30.5 mm, while the standard error of the hybrid method is 17.4 mm. It can be concluded that the hybrid method can achieve a good performance.</p>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p>The absolute error of the end point.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0011.tif"/>
</fig>
<p>A validation experiment is carried out to verify the effectiveness of the proposed method as shown in <xref ref-type="fig" rid="F12">Figure 12</xref>. Two hundred points collected along the trajectory are analyzed in two error compensation methods. The blue line is the absolute error before compensation. The yellow line is the absolute error applying the parallel difference algorithm for geometric compensation. The green line is the absolute error applying RBFN combined with light GBM for geometric compensation and non-geometric compensation. It can be concluded that the error of the rock drilling robot is compensated effectively by applying the proposed method, which meets the practical application needs of rock drilling robots.</p>
<fig id="F12" position="float">
<label>Figure 12</label>
<caption><p>The absolute error before compensation (blue line), the absolute error applying geometric compensation (yellow line), the absolute error applying geometric compensation and non-geometric compensation (green line).</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-883816-g0012.tif"/>
</fig></sec></sec>
<sec id="s5">
<title>5. Discussion and Summary</title>
<p>Geometric error compensation and non-geometric error compensation methods are combined in this article. Firstly, the positive kinematics model of the rock drilling robot is established by the MDH method. Then, a parallel differential evolution algorithm is designed to identify the forward kinematic parameters to compensate for the geometric error. Single joint and multi-joint experiments are carried out to analyze the error. By analyzing non-geometric error through experimental trajectories, non-geometric error compensation based on RBF neural network and lightGBM is proposed. Moreover, feature engineering for the rock drilling robot is analyzed based on the robotic kinematics model to achieve the optimization of the non-geometric error compensation model. Finally, the experiment is carried out to validate the performance of the proposed method, which meets the precision requirements of rock drilling robots. This article has shown that the addition of positive kinematic parameters and control signal parameters as feature engineering can greatly improve the learning ability of machine learning. Therefore, features such as speed, oil pressure, and artificial deflection calculation can be considered in the research of machine learning to further improve the learning ability and generalization of the model. And the deflection deformation of the manipulators can be modeled and analyzed in the field of mechanical materials to enhance positional accuracy.</p></sec>
<sec sec-type="data-availability" id="s6">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p></sec>
<sec id="s7">
<title>Author Contributions</title>
<p>XZ contributed to the development of the simulation engine of the platform under the guidance of JH, YZ, and GB. JD and PL contributed to experimental acquisition and algorithm verification. XZ and WB contributed to analysis of the data from simulation and physical experiments. All authors contributed to writing, reviewing, and proofreading the manuscript.</p></sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>This research was supported by the National Natural Science Foundation of China (52105127) and the Natural Science Foundation of Zhejiang Province, PRC (LGG22E050025).</p></sec>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of Interest</title>
<p>WB was employed by Zhejiang Jinbang Sports Equipment Co. Ltd. PL and YZ were employed by Sunward Intelligent Equipment Company, Ltd. The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p></sec>
<sec sec-type="disclaimer" id="s9">
<title>Publisher&#x00027;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p></sec>
</body>
<back>
<ack><p>The authors would like to thank Dr. Hongqiang Zhao and Dr. Xihua Xie for their advice and guidance while designing the rock drilling robot, Shurong Gao and Dr. Daqing Zhang for sharing their expertise in manufacturing and controls. We would also like to thank Dr. Changsheng Liu, Peng Hu, and all other members of the Sunward Intelligent Equipment Company for their assistance with the experiments.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><collab>Breiman</collab></person-group> (<year>2001</year>). <article-title>Random forests</article-title>. <source>Mach. Learn</source>. <volume>45</volume>, <fpage>5</fpage>&#x02013;<lpage>32</lpage>. <pub-id pub-id-type="doi">10.1023/A:1010933404324</pub-id></citation></ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>C.-H.</given-names></name> <name><surname>Tanaka</surname> <given-names>K.</given-names></name> <name><surname>Funatsu</surname> <given-names>K.</given-names></name></person-group> (<year>2018</year>). <article-title>Random forest model with combined features: a practical approach to predict liquid-crystalline property</article-title>. <source>Mol. Informatics</source> <volume>38</volume>:<fpage>1800095</fpage>. <pub-id pub-id-type="doi">10.1002/minf.201800095</pub-id><pub-id pub-id-type="pmid">30548221</pub-id></citation></ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>D.</given-names></name> <name><surname>Wang</surname> <given-names>T.</given-names></name> <name><surname>Yuan</surname> <given-names>P.</given-names></name> <name><surname>Sun</surname> <given-names>N.</given-names></name> <name><surname>Tang</surname> <given-names>H.</given-names></name></person-group> (<year>2019</year>). <article-title>A positional error compensation method for industrial robots combining error similarity and radial basis function neural network</article-title>. <source>Meas. Sci. Technol</source>. <volume>30</volume>:<fpage>125010</fpage>. <pub-id pub-id-type="doi">10.1088/1361-6501/ab3311</pub-id></citation></ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>D.</given-names></name> <name><surname>Yuan</surname> <given-names>P.</given-names></name> <name><surname>Wang</surname> <given-names>T.</given-names></name> <name><surname>Ying</surname> <given-names>C.</given-names></name> <name><surname>Tang</surname> <given-names>H.</given-names></name></person-group> (<year>2018</year>). <article-title>A compensation method based on error similarity and error correlation to enhance the position accuracy of an aviation drilling robot</article-title>. <source>Meas. Sci. Technol</source>. <volume>29</volume>:<fpage>085011</fpage>. <pub-id pub-id-type="doi">10.1088/1361-6501/aacd6e</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>P.</given-names></name> <name><surname>Niu</surname> <given-names>A.</given-names></name> <name><surname>Jiang</surname> <given-names>W.</given-names></name> <name><surname>Liu</surname> <given-names>D.</given-names></name> <name><surname>Ma</surname> <given-names>B.</given-names></name> <name><surname>Bao</surname> <given-names>T.</given-names></name></person-group> (<year>2019</year>). <article-title>Air pollutant prediction: comparisons between LSTM, light GBM and random forests</article-title>. <source>J. Environ. Protect. Ecol</source>.</citation></ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cui</surname> <given-names>G.</given-names></name> <name><surname>Yong</surname> <given-names>L.</given-names></name> <name><surname>Li</surname> <given-names>J.</given-names></name> <name><surname>Gao</surname> <given-names>D.</given-names></name> <name><surname>Yao</surname> <given-names>Y.</given-names></name></person-group> (<year>2012</year>). <article-title>Geometric error compensation software system for CNC machine tools based on NC program reconstructing</article-title>. <source>Int. J. Adv. Manufact. Technol</source>. <volume>63</volume>, <fpage>169</fpage>&#x02013;<lpage>180</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-011-3895-0</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>G.</given-names></name> <name><surname>Zhu</surname> <given-names>Q.</given-names></name> <name><surname>Siew</surname> <given-names>C.</given-names></name></person-group> (<year>2004</year>). <article-title>Extreme learning machine: a new learning scheme of feedforward neural networks,</article-title> in <source>IEEE International Joint Conference on Neural Networks</source> (<publisher-loc>Budapest</publisher-loc>), <fpage>985</fpage>&#x02013;<lpage>990</lpage>.<pub-id pub-id-type="pmid">18991365</pub-id></citation></ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>Z.</given-names></name> <name><surname>Huang</surname> <given-names>M.</given-names></name> <name><surname>Tang</surname> <given-names>X.</given-names></name> <name><surname>Guo</surname> <given-names>Y.</given-names></name></person-group> (<year>2021</year>). <article-title>A new calibration method for joint-dependent geometric errors of industrial robot based on multiple identification spaces</article-title>. <source>Robot. Comput. Integr. Manufact</source>. <volume>71</volume>:<fpage>102175</fpage>. <pub-id pub-id-type="doi">10.1016/j.rcim.2021.102175</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ke</surname> <given-names>G.</given-names></name> <name><surname>Meng</surname> <given-names>Q.</given-names></name> <name><surname>Finley</surname> <given-names>T.</given-names></name> <name><surname>Wang</surname> <given-names>T.</given-names></name> <name><surname>Chen</surname> <given-names>W.</given-names></name> <name><surname>Ma</surname> <given-names>W.</given-names></name> <etal/></person-group>. (<year>2017</year>). <article-title>LightGBM: a highly efficient gradient boosting decision tree,</article-title> in <source>Advances in Neural Information Processing Systems</source> (<publisher-loc>Beijing</publisher-loc>).</citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Khan</surname> <given-names>A. W.</given-names></name> <name><surname>Chen</surname> <given-names>W.</given-names></name></person-group> (<year>2011</year>). <article-title>A methodology for systematic geometric error compensation in five-axis machine tools</article-title>. <source>Int. J. Adv. Manufact. Technol</source>. <volume>53</volume>, <fpage>615</fpage>&#x02013;<lpage>628</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-010-2848-3</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mlakar</surname> <given-names>M.</given-names></name> <name><surname>Petelin</surname> <given-names>D.</given-names></name> <name><surname>Tu&#x00161;ar</surname> <given-names>T.</given-names></name> <name><surname>Filipi&#x0010D;</surname> <given-names>B.</given-names></name></person-group> (<year>2015</year>). <article-title>GP-demo: Differential evolution for multiobjective optimization based on Gaussian process models</article-title>. <source>Eur. J. Oper. Res</source>. <volume>243</volume>, <fpage>347</fpage>&#x02013;<lpage>361</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejor.2014.04.011</pub-id></citation></ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Molfino</surname> <given-names>R. M.</given-names></name> <name><surname>Razzoli</surname> <given-names>R. P.</given-names></name> <name><surname>Zoppi</surname> <given-names>M.</given-names></name></person-group> (<year>2008</year>). <article-title>Autonomous drilling robot for landslide monitoring and consolidation</article-title>. <source>Autom. Constr</source>. <volume>17</volume>, <fpage>111</fpage>&#x02013;<lpage>12122</lpage>. <pub-id pub-id-type="doi">10.1016/j.autcon.2006.12.004</pub-id></citation></ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Naghibi</surname> <given-names>S. A.</given-names></name> <name><surname>Hashemi</surname> <given-names>H.</given-names></name> <name><surname>Berndtsson</surname> <given-names>R.</given-names></name> <name><surname>Lee</surname> <given-names>S.</given-names></name></person-group> (<year>2020</year>). <article-title>Application of extreme gradient boosting and parallel random forest algorithms for assessing groundwater spring potential using DEM-derived factors</article-title>. <source>J. Hydrol</source>. <volume>589</volume>:<fpage>125197</fpage>. <pub-id pub-id-type="doi">10.1016/j.jhydrol.2020.125197</pub-id></citation></ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ocak</surname> <given-names>I.</given-names></name> <name><surname>Bilgin</surname> <given-names>N.</given-names></name></person-group> (<year>2010</year>). <article-title>Comparative studies on the performance of a roadheader, impact hammerand drilling and blasting method in the excavation of metro stationtunnels in Istanbul</article-title>. <source>Tunnel. Undergr. Space Technol</source>. <volume>25</volume>, <fpage>181</fpage>&#x02013;<lpage>187</lpage>. <pub-id pub-id-type="doi">10.1016/j.tust.2009.11.002</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Park</surname> <given-names>J.</given-names></name> <name><surname>Sandberg</surname> <given-names>I. W.</given-names></name></person-group> (<year>1991</year>). <article-title>Universal approximation using radial-basis-function networks</article-title>. <source>Neural Comput</source>. <volume>3</volume>, <fpage>246</fpage>&#x02013;<lpage>257</lpage>. <pub-id pub-id-type="doi">10.1162/neco.1991.3.2.246</pub-id><pub-id pub-id-type="pmid">31167308</pub-id></citation></ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pavelski</surname> <given-names>L. M.</given-names></name> <name><surname>Delgado</surname> <given-names>M. R.</given-names></name> <name><surname>Almeida</surname> <given-names>C. P.</given-names></name> <name><surname>Gon&#x000E7;alves</surname> <given-names>R. A.</given-names></name> <name><surname>Venske</surname> <given-names>S. M.</given-names></name></person-group> (<year>2016</year>). <article-title>Extreme learning surrogate models in multi-objective optimization based on decomposition</article-title>. <source>Neurocomputing</source> <volume>180</volume>, <fpage>55</fpage>&#x02013;<lpage>67</lpage>. <pub-id pub-id-type="doi">10.1016/j.neucom.2015.09.111</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Praveen</surname> <given-names>K. M.</given-names></name> <name><surname>Denis</surname> <given-names>A. S.</given-names></name></person-group> (<year>2018</year>). <article-title>Artificial neural network based geometric error correction model for enhancing positioning accuracy of a robotic sewing manipulator</article-title>. <source>Proc. Comput. Sci</source>. <volume>133</volume>, <fpage>1048</fpage>&#x02013;<lpage>1055</lpage>. <pub-id pub-id-type="doi">10.1016/j.procs.2018.07.069</pub-id></citation></ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Qi</surname> <given-names>W.</given-names></name> <name><surname>Wang</surname> <given-names>N.</given-names></name> <name><surname>Su</surname> <given-names>H.</given-names></name> <name><surname>Aliverti</surname> <given-names>A.</given-names></name></person-group> (<year>2021</year>). <article-title>DCNN based human activity recognition framework with depth vision guiding</article-title>. <source>Neurocomputing</source> <volume>486</volume>, <fpage>261</fpage>&#x02013;<lpage>271</lpage>. <pub-id pub-id-type="doi">10.1016/j.neucom.2021.11.044</pub-id></citation></ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sewdien</surname> <given-names>V.</given-names></name> <name><surname>Preece</surname> <given-names>R.</given-names></name> <name><surname>Torres</surname> <given-names>J. R.</given-names></name> <name><surname>Rakhshani</surname> <given-names>E.</given-names></name> <name><surname>van der Meijden</surname> <given-names>M.</given-names></name></person-group> (<year>2020</year>). <article-title>Assessment of critical parameters for artificial neural networks based short-term wind generation forecasting</article-title>. <source>Renew. Energy</source> <volume>161</volume>, <fpage>878</fpage>&#x02013;<lpage>892</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2020.07.117</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Su</surname> <given-names>H.</given-names></name> <name><surname>Mariani</surname> <given-names>A.</given-names></name> <name><surname>Ovur</surname> <given-names>S. E.</given-names></name> <name><surname>Menciassi</surname> <given-names>A.</given-names></name> <name><surname>Ferrigno</surname> <given-names>G.</given-names></name> <name><surname>De Momi</surname> <given-names>E.</given-names></name></person-group> (<year>2021</year>). <article-title>Toward teaching by demonstration for robot-assisted minimally invasive surgery</article-title>. <source>IEEE Trans. Autom. Sci. Eng</source>. <volume>18</volume>, <fpage>484</fpage>&#x02013;<lpage>494</lpage>. <pub-id pub-id-type="doi">10.1109/TASE.2020.3045655</pub-id></citation></ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Su</surname> <given-names>H.</given-names></name> <name><surname>Qi</surname> <given-names>W.</given-names></name> <name><surname>Hu</surname> <given-names>Y.</given-names></name> <name><surname>Karimi</surname> <given-names>H. R.</given-names></name> <name><surname>Ferrigno</surname> <given-names>G.</given-names></name> <name><surname>Momi</surname> <given-names>E. D.</given-names></name></person-group> (<year>2022</year>). <article-title>An incremental learning framework for human-like redundancy optimization of anthropomorphic manipulators</article-title>. <source>IEEE Trans. Indus. Inform</source>. <volume>18</volume>, <fpage>1864</fpage>&#x02013;<lpage>1872</lpage>. <pub-id pub-id-type="doi">10.1109/TII.2020.3036693</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Su</surname> <given-names>H.</given-names></name> <name><surname>Sandoval</surname> <given-names>J.</given-names></name> <name><surname>Vieyres</surname> <given-names>P.</given-names></name> <name><surname>Poisson</surname> <given-names>G.</given-names></name> <name><surname>Ferrigno</surname> <given-names>G.</given-names></name> <name><surname>De Momi</surname> <given-names>E.</given-names></name></person-group> (<year>2018</year>). <article-title>Safety-enhanced collaborative framework for tele-operated minimally invasive surgery using a 7-DOF torque-controlled robot</article-title>. <source>Int. J. Control Autom. Syst</source>. <volume>16</volume>, <fpage>2915</fpage>&#x02013;<lpage>2923</lpage>. <pub-id pub-id-type="doi">10.1007/s12555-017-0486-3</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Svetnik</surname> <given-names>V.</given-names></name> <name><surname>Liaw</surname> <given-names>A.</given-names></name> <name><surname>Tong</surname> <given-names>C.</given-names></name> <name><surname>Culberson</surname> <given-names>J.</given-names></name> <name><surname>Sheridan</surname> <given-names>R.</given-names></name> <name><surname>Feuston</surname> <given-names>B.</given-names></name></person-group> (<year>2003</year>). <article-title>Random forest: a classification and regression tool for compound classification and QSAR modeling</article-title>. <source>J. Chem. Inform. Comput. Sci</source>. <volume>43</volume>, <fpage>1947</fpage>&#x02013;<lpage>1958</lpage>. <pub-id pub-id-type="doi">10.1021/ci034160g</pub-id><pub-id pub-id-type="pmid">14632445</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tian</surname> <given-names>Y.</given-names></name> <name><surname>Zheng</surname> <given-names>X.</given-names></name> <name><surname>Zhang</surname> <given-names>X.</given-names></name> <name><surname>Jin</surname> <given-names>Y.</given-names></name></person-group> (<year>2020</year>). <article-title>Efficient large-scale multiobjective optimization based on a competitive swarm optimizer</article-title>. <source>IEEE Trans. Cybern</source>. <volume>50</volume>, <fpage>3696</fpage>&#x02013;<lpage>3708</lpage>. <pub-id pub-id-type="doi">10.1109/TCYB.2019.2906383</pub-id><pub-id pub-id-type="pmid">30951490</pub-id></citation></ref>
<ref id="B25">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wen</surname> <given-names>Z.</given-names></name> <name><surname>Zhou</surname> <given-names>C.</given-names></name> <name><surname>Pan</surname> <given-names>J.</given-names></name> <name><surname>Nie</surname> <given-names>T.</given-names></name> <name><surname>Jia</surname> <given-names>R.</given-names></name> <name><surname>Yang</surname> <given-names>F.</given-names></name></person-group> (<year>2021</year>). <article-title>Froth image feature engineering-based prediction method for concentrate ash content of coal flotation</article-title>. <source>Miner. Eng</source>. <volume>170</volume>:<fpage>107023</fpage>. <pub-id pub-id-type="doi">10.1016/j.mineng.2021.107023</pub-id></citation></ref>
<ref id="B26">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yao</surname> <given-names>M.</given-names></name> <name><surname>Zhu</surname> <given-names>Y.</given-names></name> <name><surname>Li</surname> <given-names>J.</given-names></name> <name><surname>Wei</surname> <given-names>H.</given-names></name> <name><surname>He</surname> <given-names>P.</given-names></name></person-group> (<year>2019</year>). <article-title>Research on predicting line loss rate in low voltage distribution network based on gradient boosting decision tree</article-title>. <source>Energies</source> <volume>12</volume>:<fpage>2522</fpage>. <pub-id pub-id-type="doi">10.3390/en12132522</pub-id></citation></ref>
<ref id="B27">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yu</surname> <given-names>S.</given-names></name> <name><surname>Chen</surname> <given-names>H.</given-names></name> <name><surname>Brown</surname> <given-names>R. A.</given-names></name></person-group> (<year>2017</year>). <article-title>Hidden Markov model-based fall detection with motion sensor orientation calibration: a case for real-life home monitoring</article-title>. <source>IEEE J. Biomed. Health Inform</source>. <volume>22</volume>, <fpage>1847</fpage>&#x02013;<lpage>1853</lpage>. <pub-id pub-id-type="doi">10.1109/JBHI.2017.2782079</pub-id><pub-id pub-id-type="pmid">29990227</pub-id></citation></ref>
<ref id="B28">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yuan</surname> <given-names>P.</given-names></name> <name><surname>Chen</surname> <given-names>D.</given-names></name> <name><surname>Wang</surname> <given-names>T.</given-names></name> <name><surname>Cao</surname> <given-names>S.</given-names></name> <name><surname>Cai</surname> <given-names>Y.</given-names></name> <name><surname>Xue</surname> <given-names>L.</given-names></name></person-group> (<year>2018</year>). <article-title>A compensation method based on extreme learning machine to enhance absolute position accuracy for aviation drilling robot</article-title>. <source>Adv. Mech. Eng</source>. <volume>10</volume>:<fpage>1687814018763411</fpage>. <pub-id pub-id-type="doi">10.1177/1687814018763411</pub-id></citation></ref>
<ref id="B29">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zeng</surname> <given-names>Y.</given-names></name> <name><surname>Tian</surname> <given-names>W.</given-names></name> <name><surname>Li</surname> <given-names>D.</given-names></name> <name><surname>He</surname> <given-names>X.</given-names></name> <name><surname>Liao</surname> <given-names>W.</given-names></name></person-group> (<year>2017</year>). <article-title>An error-similarity-based robot positional accuracy improvement method for a robotic drilling and riveting system</article-title>. <source>Int. J. Adv. Manuf. Technol</source>. <volume>88</volume>, <fpage>2745</fpage>&#x02013;<lpage>2755</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-016-8975-8</pub-id></citation></ref>
<ref id="B30">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>F.</given-names></name> <name><surname>Shang</surname> <given-names>W.</given-names></name> <name><surname>Li</surname> <given-names>G.</given-names></name> <name><surname>Cong</surname> <given-names>S.</given-names></name></person-group> (<year>2021</year>). <article-title>Calibration of geometric parameters and error compensation of non-geometric parameters for cable-driven parallel robots</article-title>. <source>Mechatronics</source> <volume>77</volume>:<fpage>102595</fpage>. <pub-id pub-id-type="doi">10.1016/j.mechatronics.2021.102595</pub-id></citation></ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>K.</given-names></name> <name><surname>Hu</surname> <given-names>Y.</given-names></name> <name><surname>Pan</surname> <given-names>H.</given-names></name> <name><surname>Kong</surname> <given-names>L.</given-names></name> <name><surname>Liu</surname> <given-names>J.</given-names></name> <name><surname>Huang</surname> <given-names>Z.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>Fast prediction of reservoir permeability based on EFS-LightGBM using direct logging data</article-title>. <source>Meas. Sci. Technol</source>. <volume>31</volume>:<fpage>045101</fpage>. <pub-id pub-id-type="doi">10.1088/1361-6501/ab4a45</pub-id></citation></ref>
<ref id="B32">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhu</surname> <given-names>Y.</given-names></name> <name><surname>Zhuang</surname> <given-names>F.</given-names></name> <name><surname>Wang</surname> <given-names>J.</given-names></name> <name><surname>Ke</surname> <given-names>G.</given-names></name> <name><surname>Chen</surname> <given-names>J.</given-names></name> <name><surname>Bian</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>Deep subdomain adaptation network for image classification,</article-title> in <source>IEEE Transactions on Neural Networks and Learning Systems</source>, <volume>Vol. 32</volume> (<publisher-name>IEEE</publisher-name>), <fpage>1713</fpage>&#x02013;<lpage>1722</lpage>.<pub-id pub-id-type="pmid">32365037</pub-id></citation></ref>
</ref-list> 
</back>
</article> 
