<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Mech. Eng.</journal-id>
<journal-title>Frontiers in Mechanical Engineering</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mech. Eng.</abbrev-journal-title>
<issn pub-type="epub">2297-3079</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1643848</article-id>
<article-id pub-id-type="doi">10.3389/fmech.2025.1643848</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Mechanical Engineering</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Motion path optimization of truss manipulator based on simulated annealing and BP neural network</article-title>
<alt-title alt-title-type="left-running-head">Huang and Tian</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fmech.2025.1643848">10.3389/fmech.2025.1643848</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Huang</surname>
<given-names>Yingya</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Tian</surname>
<given-names>Jieyu</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3094769/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
</contrib>
</contrib-group>
<aff>
<institution>College of Railway Locomotive and Rolling Stock, Hebei Vocational College of Rail Transportation</institution>, <addr-line>Shijiazhuang</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2643361/overview">Mohamed Arezki Mellal</ext-link>, University of Boumerd&#xe9;s, Algeria</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2637431/overview">Amlana Panda</ext-link>, KIIT University, India</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3114955/overview">Arif G&#xf6;k</ext-link>, Dumlupinar University, T&#xfc;rkiye</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Jieyu Tian, <email>tianjieyuhb@163.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>24</day>
<month>09</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>11</volume>
<elocation-id>1643848</elocation-id>
<history>
<date date-type="received">
<day>09</day>
<month>06</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>09</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Huang and Tian.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Huang and Tian</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>
<sec>
<title>Introduction</title>
<p>This research focuses on optimizing the motion path of truss manipulators and proposes a path optimization method based on a simulated annealing algorithm and a neural network to address the positioning deviation problem that occurs in industrial production.</p>
</sec>
<sec>
<title>Methods</title>
<p>The research method first uses a simulated annealing algorithm to initially improve the path parameters and avoid falling into local optima. The path is then further optimized through a neural network to ensure the precision and energy productivity of the motion path.</p>
</sec>
<sec>
<title>Results</title>
<p>The experimental outcomes indicated that the proposed algorithm performs well across multiple indicators, reducing the path length to 12.486 m, improving energy consumption optimization by 23.78%, controlling the path error at 2.14 cm, and achieving a convergence speed of 147 iterations. Compared with other algorithms, the algorithm proposed in the study also has significant advantages in path smoothness and computation time.</p>
</sec>
<sec>
<title>Discussion</title>
<p>The significance of the research lies in providing an efficient and energy-saving optimization strategy for the motion path of truss manipulators in industrial automation, which is expected to improve production efficiency and reduce industrial energy consumption.</p>
</sec>
</abstract>
<abstract abstract-type="graphical">
<title>Graphical Abstract</title>
<p>
<fig>
<caption>
<p>This research addresses significant geometric positioning errors in truss manipulator systems by proposing a hybrid optimization algorithm. The method uses a Simulated Annealing Algorithm (SAA) to initialize the weights of a Backpropagation (BP) neural network. The direct impact is a highly efficient control response, demonstrated by the rapid convergence of the system&#x2019;s PID controller parameters (Kp, Ki, and Kd) to stable values within 0.2&#xa0;s. This swift stabilization confirms the algorithm&#x2019;s ability to produce a fast, stable, and accurately optimized motion path for the manipulator.</p>
</caption>
<graphic xlink:href="FMECH_fmech-2025-1643848_wc_abs.tif">
<alt-text content-type="machine-generated">Diagram showing a robotic arm system with labeled parts: vacuum pump, walking rack, raise the beam, upgrade servo motor, mobile board, drop detection, and suction cup holder. Errors affecting the system include workpiece flexibility deformation, geometric and temperature errors, feeding anchor positioning, gear rack deformation, and mechanical arm errors. Graphs below plot parameters Kp, Ki, and Kd over time. A neural network diagram displays input, intermediate, and output layers influenced by simulated annealing algorithm weights.</alt-text>
</graphic>
</fig>
</p>
</abstract>
<kwd-group>
<kwd>truss manipulator</kwd>
<kwd>motion path optimization</kwd>
<kwd>simulated annealing algorithm</kwd>
<kwd>BP neural network</kwd>
<kwd>industrial automation</kwd>
</kwd-group>
<counts>
<page-count count="12"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Mechatronics</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>With the thriving development of industrial automation, the application of truss manipulators in production processes is experiencing a continuous and extensive expansion. They can automatically complete operations such as material grabbing, handling, and placement, significantly improving production efficiency and accuracy (<xref ref-type="bibr" rid="B19">Zhou et al., 2024</xref>). However, in practical applications, because of the complicacy of the production status and the restrictive conditions of the robot arm&#x2019;s own structure and control system, truss robots often face problems such as positioning errors and inaccurate path planning, which pose challenges to overall production efficiency and safety (<xref ref-type="bibr" rid="B15">Yald&#x131;z et al., 2013</xref>; <xref ref-type="bibr" rid="B6">G&#xf6;k et al., 2017</xref>). Therefore, how to optimize the motion path of the truss manipulator to maintain high precision and stability in complex production environments has become a hot research topic (<xref ref-type="bibr" rid="B2">Ayd&#x131;n et al., 2015</xref>). Traditional path optimization methods for truss manipulators often rely on pre-set paths or simple algorithms for control, but these methods have significant limitations. Firstly, the pre-defined path encounters significant challenges in adapting to the dynamic alterations that may transpire throughout the production process. Moreover, once deviations emerge, the robotic arm exhibits limited capacity for self-adjustment (<xref ref-type="bibr" rid="B7">Han et al., 2023</xref>). Secondly, many existing optimization algorithms such as Genetic Algorithms (GA) and Particle Swarm Optimization (PSO) can optimize paths to a certain extent, but they tend to become trapped in local minima and cannot guarantee global optima (GO) (<xref ref-type="bibr" rid="B9">Liu B. et al., 2023</xref>). In addition, these algorithms have long computation times and low efficiency in complex path planning problems, making it difficult to meet the real-time and efficient requirements in industrial production. Therefore, traditional research still has many shortcomings in the accuracy, efficiency, and adaptability of path optimization.</p>
<p>Recent research has focused on using simulated annealing algorithms (SAA) and their combination with neural networks (NN) to optimize prediction and control problems for various complex systems. Yan et al. constructed the SA-GRU city flooding forecasting model based on Gated Recurrent Unit (GRU) NN and SAA to optimize hyperparameters. Compared to traditional models, SA-GRU had higher accuracy in short-term forecasting, effectively improving the accuracy and response speed of urban waterlogging warning (<xref ref-type="bibr" rid="B17">Yan et al., 2023</xref>). Tsoulos et al. proposed a novel combined way to improve the training efficiency of artificial NN in sorting learning and data fitting issues. This technology combined variants of GA and SAA, by periodically applying SAA to stochastically chosen chromosomes in the GA population to cut training errors related to these chromosomes (<xref ref-type="bibr" rid="B14">Tsoulos et al., 2024</xref>). The two-step SAA proposed by Pei et al. effectively improved the accuracy and stability of spectral feature extraction, which was consistent with the goal of studying and optimizing the path of truss manipulators, indicating the wide application of SAA in multiple fields and its ability to optimize complex systems (<xref ref-type="bibr" rid="B11">Pei et al., 2023</xref>). Rehman et al. used a two-step optimization algorithm based on Recurrent Neural Network (RNN) and improved the accuracy of wind speed data estimation by combining the Broyden-Fletcher-Goldfarb-Shanno algorithm with SA. The algorithm improved the accuracy and efficiency of path optimization for truss manipulators (<xref ref-type="bibr" rid="B12">Rehman et al., 2023</xref>). Yin et al. predicted the loss factor of particle dampers using SA backpropagation NN (SA-BP), which was consistent with the SA-BP method for optimizing the path of truss manipulators, demonstrating the effectiveness of SA-BP in complex engineering problems (<xref ref-type="bibr" rid="B18">Yin et al., 2023</xref>).</p>
<p>The efficiency of motion planning in the design of engineering systems such as truss robots has broad application prospects. Suvorov et al. used SA-BP NN to optimize the design of ship cranes, to cut weight and improve productivity. The optimization design method applied by it was consistent with the goal of studying the path optimization of truss manipulators, indicating the wide applicability of SA-BP algorithm in engineering optimization design (<xref ref-type="bibr" rid="B13">Suvorov et al., 2023</xref>). Cao et al. proposed a novel way for predicting the dependability of stamping machine loading and unloading truss robots. This method first used the component counting method to forecast the error rate of the electronic managing machinery, and then used the professional valuing strategy based on fuzzy theory to estimate the MTBF and error rate of the mechanical and pneumatic systems (<xref ref-type="bibr" rid="B3">Cao et al., 2024</xref>). Dai et al. used reinforcement learning and SA-BP algorithm to optimize the in orbit assembly of space trusses. Similar to the methods used in optimizing the path of truss manipulators, they combined multiple optimization strategies in complex systems to improve the efficiency of automation systems (<xref ref-type="bibr" rid="B4">Dai et al., 2023</xref>). A reinforcement learning algorithm proposed by Liu et al. optimized a variable topology truss robot and improved the assembly and motion planning efficiency of complex systems through intelligent optimization techniques (<xref ref-type="bibr" rid="B10">Liu C. et al., 2023</xref>). The improved sparrow algorithm designed by Dai et al. effectively planned the motion path of robots climbing trusses, improved the efficiency of path planning through optimization algorithms, and solved complex automation problems (<xref ref-type="bibr" rid="B5">Dai et al., 2024</xref>).</p>
<p>In summary, many experts have studied the application of NN-based path optimization and SAA in model training. However, current research still has shortcomings such as insufficient path planning accuracy, poor adaptability to dynamic environments, and long training time. Therefore, a research proposes a motion path optimization method for truss manipulators based on the combination of SA and BP NN to solve problems such as improving path accuracy, enhancing adaptability in dynamic environments, and improving training efficiency. The peculiar thing of the study lies in the SAA, which can effectively break out of local optima (LO) and explore GO solutions by simulating the state changes during the cooling process of materials. At the same time, combining BP NN to adaptively adjust path parameters further improves the accuracy and efficiency of path planning. The contribution of this research lies in proposing a hybrid SA-BP method which adeptly formulates a synergistic strategy combining &#x2018;global exploration&#x2019; with &#x2018;local exploitation&#x2019;. Specifically, the SAA is employed to perform a global search to optimize the initial weights of the BP NN. This approach addresses the network&#x2019;s tendency to settle in poor LO. Subsequently, the BP algorithm leverages its efficient local search capabilities to rapidly fine-tune the solution from this advantageous starting point. This integrated strategy is designed to enhance both the final accuracy and the computational efficiency of path optimization, providing a more intelligent and robust solution for truss manipulators in industrial automation.</p>
</sec>
<sec sec-type="materials|methods" id="s2">
<title>2 Methods and materials</title>
<sec id="s2-1">
<title>2.1 Optimization of motion path and automatic control strategy of truss robot arm</title>
<p>Truss manipulators are widely used in industrial automation, capable of automatically executing pre-programmed trajectories and actions to achieve operations such as grabbing and transporting objects. The key components include the actuator, drive system, control software, and sensing equipment, which together ensure the efficient material handling of the robotic arm in industrial production, as shown in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Truss manipulator.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g001.tif">
<alt-text content-type="machine-generated">Automated assembly system with labeled components: vacuum pump, walking rack, beam raising mechanism, servo motor, mobile board, drop detection, and suction cup holder.</alt-text>
</graphic>
</fig>
<p>As shown in <xref ref-type="fig" rid="F1">Figure 1</xref>, the structure of the truss manipulator consists of a vacuum pump, a walking rack, an accumulator, a lifting beam, a lifting servo motor, a moving plate, a descent detection, and a suction cup frame. The vacuum pump is responsible for providing suction power, the walking rack guides the horizontal movement of the robotic arm, the accumulator maintains stable system pressure, and the lifting beam and lifting servo motor work together to achieve vertical movement of objects. The moving plate is used to carry and transport objects, the descent detection sensor monitors the descent process of objects, and the suction cup holder fixes the suction cup to grasp objects. <xref ref-type="fig" rid="F2">Figure 2</xref> shows the workflow of the truss manipulator.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Workflow of the truss manipulator.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g002.tif">
<alt-text content-type="machine-generated">Flowchart illustrating an automation process: Power on leads to a system self-check. If self-check fails, report abnormality and exit; otherwise, proceed. The communication module receives instructions. If work is incomplete, goes to mechanical arm feedback. If completed, CPU processes data, converts digital command to analog signal, and initiates motor movement, ending the process.</alt-text>
</graphic>
</fig>
<p>As shown in <xref ref-type="fig" rid="F2">Figure 2</xref>, as the control center of the truss manipulator, the industrial controller is responsible for executing logical control tasks. It analyzes input signals, makes decisions based on the analysis results, and commands execution components. These components operate synchronously according to the instructions of the controller, achieving multi-axis coordinated actions of the robotic arm to complete automation tasks. Automated robotic arms are susceptible to environmental and equipment fluctuations during operation, resulting in workpiece positioning errors that can reduce efficiency and even cause machine tool collisions. Therefore, the machine tool system requires strict error control and coordination with other systems to adapt to complex production requirements. In the motion of the truss manipulator, significant positioning errors can occur, compromising precision and operational safety. These discrepancies primarily stem from geometric inaccuracies inherent in the mechanical system. Key contributing factors include manufacturing and assembly tolerances, rotational deviations in the gripper, wear and tear on components like gears and racks, and thermal expansion of the guide rails due to temperature changes. <xref ref-type="fig" rid="F3">Figure 3</xref> provides a schematic representation of these primary geometric errors within the manipulator&#x2019;s coordinate system, illustrating how they contribute to the overall positioning deviation.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Geometric error of truss manipulator system.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g003.tif">
<alt-text content-type="machine-generated">Flowchart illustrating potential error sources in a mechanical arm system. Blue circles indicate errors like workpiece flexibility deformation, feeding anchor positioning, and mechanical arm loading/unloading. Orange hexagons show errors such as workpiece geometric, temperature, and gear rack deformation. Central circle highlights mechanical arm position and posture error, linking to all sources.</alt-text>
</graphic>
</fig>
<p>In the motion of the truss manipulator, significant positioning errors can occur due to factors such as manufacturing, assembly, gripper rotation, gear and rack wear, and changes in guide rail temperature (<xref ref-type="bibr" rid="B16">Yald&#x131;z et al., 2016</xref>). To improve the positioning accuracy, an NN trained model combined with PID control algorithm is used for error compensation.</p>
<p>As shown in <xref ref-type="fig" rid="F4">Figure 4</xref>, in the research of optimizing the motion path of the truss manipulator, it is necessary to first select a suitable factor encoding method to represent the motion path parameters of the manipulator. Subsequently, a path optimization objective function is constructed, which is used to evaluate the optimization process and guide the search direction. It adjusts weights through BP NN to further refine the motion path. Meanwhile, a comprehensive explanation of the weight optimization matter in the BP algorithm is provided to give a theoretical basis for the algorithm. During the SA process, the energy differences of different paths are calculated and annealing operations are performed to explore the solution space. The fitness of each solution is evaluated to determine its optimization potential. Ultimately, the initial solution is crafted to serve as the algorithm&#x2019;s starting point, from which it iteratively seeks out the optimal path.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Optimization process of motion path for truss manipulator.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g004.tif">
<alt-text content-type="machine-generated">Flowchart illustrating a process for optimizing weights in a BP (Back Propagation) Algorithm. The steps include selecting parameter encoding methods, defining path optimization objective functions, BP neural network weight adjustment model, description of weight optimization problem, annealing operation, calculating energy difference, generating initial solutions, and evaluating the fitness of the solution. Each step is represented by an icon and connected by arrows, showing the sequence of operations.</alt-text>
</graphic>
</fig>
<p>In this study, path smoothness is a critical metric used to evaluate the quality of the manipulator&#x2019;s trajectory. It is quantified as the average cosine of the angle between consecutive path segments. For a path defined by a sequence of points <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>N</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the smoothness <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is calculated as shown in <xref ref-type="disp-formula" rid="e1">Formula 1</xref>.<disp-formula id="e1">
<mml:math id="m3">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2225;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo>&#x2225;</mml:mo>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2225;</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>This metric yields a value between &#x2212;1 and 1, where a value closer to one indicates a smoother path with minimal changes in direction. Path smoothness is highly relevant as it directly correlates with real-world performance. A smoother path reduces mechanical stress and vibrations on the manipulator&#x2019;s joints and structure, leading to less wear and tear. Furthermore, it improves energy efficiency by minimizing abrupt accelerations and decelerations, and enhances stability when handling delicate or liquid materials (<xref ref-type="bibr" rid="B8">Kara et al., 2015</xref>).</p>
</sec>
<sec id="s2-2">
<title>2.2 Optimization of motion path for truss manipulator based on SA-BP algorithm and PID control</title>
<p>To optimize the motion path of the truss manipulator, research needs to be conducted according to the process shown in <xref ref-type="fig" rid="F4">Figure 4</xref>. SAA is used for path planning of truss manipulator, mimicking the annealing process of material heating and gradually cooling. As an extension of the random search algorithm, it probabilistically accepts changes in the solution and adjusts the grope method over time to locate the overall best solution, decreasing the danger of falling into LO. The SAA model is shown in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>SAA model.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g005.tif">
<alt-text content-type="machine-generated">Chart showing energy levels (E) versus number of iterations. The curve displays fluctuations with peaks and troughs labeled as A, B, C, D, and E. Arrows indicate changes in direction, with local optima (LO) at B, C, E, and global optimum (GO) at D.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F5">Figure 5</xref> illustrates the core mechanism of the SAA, which is designed to find a GO solution by mimicking the physical process of annealing. The algorithm begins at an initial solution (State A) and explores the solution space by generating neighboring solutions (e.g., State B). The decision to move to a new state is governed by two principles. First, if the new solution is an improvement (i.e., has lower &#x2018;energy&#x2019;), it is always accepted, guiding the search towards better solutions. Second, and more critically, if the new solution is worse (higher &#x2018;energy&#x2019;), it may still be accepted based on a certain probability. This probabilistic acceptance allows the algorithm to make temporary &#x2018;uphill&#x2019; moves, enabling it to escape LO that would trap simpler algorithms. As the algorithm progresses, a &#x2018;temperature&#x2019; parameter is gradually lowered, which systematically reduces the probability of accepting worse solutions, ensuring that the search eventually converges towards the globally optimal state. The SAA combined with BP NN is represented in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>SAA combined with BP NN.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g006.tif">
<alt-text content-type="machine-generated">Diagram of a neural network architecture using a simulated annealing algorithm. It includes input layer nodes at the bottom, intermediate layer nodes in the middle, and a single output layer node at the top. Arrows indicate connections with weights labeled \( w_j \) and \( \theta_{ij} \). A clock icon represents the simulated annealing process.</alt-text>
</graphic>
</fig>
<p>As represented in <xref ref-type="fig" rid="F6">Figure 6</xref>, in the research on optimizing the motion path of the truss manipulator, SAA and BP NN are used to train the critical path parameters. Through a three-layer NN model, SAA is used to initialize network weights and avoid LO, while BP NN adjusts weights to optimize paths. The objective function evaluates the path efficiency to ensure that the robotic arm plans its motion path quickly and efficiently, improves production efficiency, and ensures operational safety (<xref ref-type="bibr" rid="B1">Agrawal et al., 2024</xref>). In this training model, the amount of input points is <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and the input layer (IL) points of the network correspond to the teaching quality evaluation indicators, as shown in <xref ref-type="disp-formula" rid="e2">Formula 2</xref>.<disp-formula id="e2">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e2">Formula 2</xref>, <inline-formula id="inf4">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the output signal of the <inline-formula id="inf5">
<mml:math id="m7">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th input node, and the number of motion parameters of the robotic arm corresponds to the amount of nodes in the IL of the NN. These parameters include position, velocity, and acceleration, which serve as input signals to the intermediate layer of the network after processing. Therefore, for the IL of an NN, the received motion parameters are consistent in quantity with the information output to the intermediate layer. The number of intermediate layer points is <inline-formula id="inf6">
<mml:math id="m8">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and the calculation for the network layer input is represented in <xref ref-type="disp-formula" rid="e3">Formula 3</xref>.<disp-formula id="e3">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e3">Formula 3</xref>, <inline-formula id="inf7">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the input signal of the <inline-formula id="inf8">
<mml:math id="m11">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron, and <inline-formula id="inf9">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the contribution of the <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th input node to the input signal of the <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron. The calculation for the output of the intermediate layer is shown in <xref ref-type="disp-formula" rid="e4">Formula 4</xref>.<disp-formula id="e4">
<mml:math id="m15">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>I</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e4">Formula 4</xref>, <inline-formula id="inf12">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the output of the <inline-formula id="inf13">
<mml:math id="m17">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th intermediate node. The final output layer (OL) node number is 1. To convert a real value into a value between 0 and 1, the calculation is shown in <xref ref-type="disp-formula" rid="e5">Formula 5</xref>.<disp-formula id="e5">
<mml:math id="m18">
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mstyle>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e5">Formula 5</xref>, <inline-formula id="inf14">
<mml:math id="m19">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the probability of an event occurring. <inline-formula id="inf15">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the value of the <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th input feature. <inline-formula id="inf17">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the contribution of input features to the output variable. In the SA-BP algorithm, for the purpose of facilitating genetic operations, the SAA chooses binary encoding to genetically encode the weight coefficients. The training objective function is determined, whose mathematical expression is shown in <xref ref-type="disp-formula" rid="e6">Formula 6</xref>.<disp-formula id="e6">
<mml:math id="m23">
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>P</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>P</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e6">Formula 6</xref>, <inline-formula id="inf18">
<mml:math id="m24">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the mean square error, which is the average of the squares of all individual errors. <inline-formula id="inf19">
<mml:math id="m25">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the actual value of a single observation point. <inline-formula id="inf20">
<mml:math id="m26">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> represents the average of actual values. <inline-formula id="inf21">
<mml:math id="m27">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> means the amount of samples. <inline-formula id="inf22">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the square of the error at the <inline-formula id="inf23">
<mml:math id="m29">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th observation point. In the process of adjusting the weight coefficients, the gradient descent method is used, and the adjustment formula for <inline-formula id="inf24">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is shown in <xref ref-type="disp-formula" rid="e7">formula 7</xref>.<disp-formula id="e7">
<mml:math id="m31">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e7">Formula 7</xref>, <inline-formula id="inf25">
<mml:math id="m32">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the change in weight; <inline-formula id="inf26">
<mml:math id="m33">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the learning rate; <inline-formula id="inf27">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the partial derivative of the loss function <inline-formula id="inf28">
<mml:math id="m35">
<mml:mrow>
<mml:mi>E</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> with respect to the weight <inline-formula id="inf29">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The adjustment amount of <inline-formula id="inf30">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is shown in <xref ref-type="disp-formula" rid="e8">Formula 8</xref>.<disp-formula id="e8">
<mml:math id="m38">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:mi>E</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e8">Formula 8</xref>, <inline-formula id="inf31">
<mml:math id="m39">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the change in <inline-formula id="inf32">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The weight <inline-formula id="inf33">
<mml:math id="m41">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is further updated as shown in <xref ref-type="disp-formula" rid="e9">Formula 9</xref>.<disp-formula id="e9">
<mml:math id="m42">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e9">Formula 9</xref>, <inline-formula id="inf34">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the activation value or input signal of the <inline-formula id="inf35">
<mml:math id="m44">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th input node. <inline-formula id="inf36">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> means the error derivative of the <inline-formula id="inf37">
<mml:math id="m46">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron, used to propagate errors and update weights, as shown in <xref ref-type="disp-formula" rid="e10">Formula 10</xref>.<disp-formula id="e10">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>j</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e10">Formula 10</xref> is used to update the weights in the network to reduce the discrepancy between the forecasted result and the real target value. When studying the optimization of the motion path of the truss manipulator, the MPU6050 sensor is used to obtain real-time posture data of the manipulator, and the BP NN is applied to forecast the optimal motion trajectory. By combining SAA to optimize PID control parameters, the system can reduce actual motion deviation and ensure precise control.<disp-formula id="e11">
<mml:math id="m48">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mo>&#x2211;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e11">Formula 11</xref>, <inline-formula id="inf38">
<mml:math id="m49">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the control input or control action at discrete time step <inline-formula id="inf39">
<mml:math id="m50">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf40">
<mml:math id="m51">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents proportional gain. <inline-formula id="inf41">
<mml:math id="m52">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> means the error at discrete time step <inline-formula id="inf42">
<mml:math id="m53">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf43">
<mml:math id="m54">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents differential gain. A BP NN with a single hidden layer was constructed in the study. The OL is designed with three output nodes, corresponding to the <inline-formula id="inf44">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf45">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf46">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> parameters of the PID controller. Each node outputs a non-negative value, thus forming a three neuron OL. Since the input and output of the IL are the same, it can be expressed as <xref ref-type="disp-formula" rid="e12">Formula 12</xref>.<disp-formula id="e12">
<mml:math id="m58">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e12">Formula 12</xref>, <inline-formula id="inf47">
<mml:math id="m59">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> means the output of the <inline-formula id="inf48">
<mml:math id="m60">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron in the first layer of the NN. <inline-formula id="inf49">
<mml:math id="m61">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the <inline-formula id="inf50">
<mml:math id="m62">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th element in the input vector. The input and output of the hidden layer in the network are shown in <xref ref-type="disp-formula" rid="e13">Formula 13</xref>.<disp-formula id="e13">
<mml:math id="m63">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e13">Formula 13</xref>, <inline-formula id="inf51">
<mml:math id="m64">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the weighted sum of the inputs of the <inline-formula id="inf52">
<mml:math id="m65">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron in the second layer of the NN at the discrete-time step <inline-formula id="inf53">
<mml:math id="m66">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf54">
<mml:math id="m67">
<mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the weight between the <inline-formula id="inf55">
<mml:math id="m68">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron in the first layer and the <inline-formula id="inf56">
<mml:math id="m69">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron in the second layer. <inline-formula id="inf57">
<mml:math id="m70">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of neurons in the first layer. The output of the hidden layer neurons in the time step is shown in <xref ref-type="disp-formula" rid="e14">Formula 14</xref>.<disp-formula id="e14">
<mml:math id="m71">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>The recursive formula for updating the weights of the third layer is shown in <xref ref-type="disp-formula" rid="e15">Formula 15</xref>.<disp-formula id="e15">
<mml:math id="m72">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:mi>E</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x2202;</mml:mi>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e15">Formula 15</xref>, <inline-formula id="inf58">
<mml:math id="m73">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the update amount of the weight <inline-formula id="inf59">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the third layer at time step <inline-formula id="inf60">
<mml:math id="m75">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf61">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the learning rate. <inline-formula id="inf62">
<mml:math id="m77">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the momentum factor. The final update is shown in <xref ref-type="disp-formula" rid="e16">Formula 16</xref>.<disp-formula id="e16">
<mml:math id="m78">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:msubsup>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi>f</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:msubsup>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:msubsup>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e16">Formula 16</xref>, <inline-formula id="inf63">
<mml:math id="m79">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the error derivative of the <inline-formula id="inf64">
<mml:math id="m80">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th neuron in the second layer of the BP NN assisted by SAA. This error derivative is the key to the calculation in the backpropagation process and directly affects the update of hidden layer weights, thereby affecting the optimization effect of the robotic arm motion path. By accurately calculating the error derivative of each neuron, the network weights can be effectively adjusted to make the motion path of the robotic arm closer to the ideal state.</p>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>3 Results</title>
<sec id="s3-1">
<title>3.1 Performance evaluation and comparative analysis of SA-BP algorithm in optimizing the motion path of truss manipulator</title>
<p>The performance assessment metrics for the model were studied through three metrics: Mean Absolute Error (MAE), Root Mean Square Error (RMSE), and Mean Absolute Percentage Error (MAPE). The SA-BP algorithm was used to verify the optimization of the motion path of the truss manipulator. The network structure adopted a three-layer NN, with 10 IL nodes corresponding to multiple motion parameters of the truss manipulator. The amount of points in the hidden layer varied between 10 and 30. The OL was a single node that output the optimized motion path. The learning rate ranged from 0.0004 to 0.0012, and the gradient descent method was applied to optimize the model throughout the training phase. To determine the optimal hyper-parameters for the SA-BP model, a systematic tuning strategy based on Grid Search combined with 5-fold Cross-Validation was implemented. This approach ensured that the selected parameters were robust and not overfitted to a specific data split. The hyper-parameter space was defined based on preliminary experiments and common practices. Specifically, the number of hidden layer nodes was explored in the range of [10, 30] with an integer step of 2, while the learning rate was searched within the range of [0.0004, 0.0012] with a step of 0.0002. For each combination of hyper-parameters in the grid, the model was trained and evaluated using 5-fold cross-validation on the training dataset. The performance was measured by the average RMSE across the five validation folds. The combination yielding the lowest average RMSE was selected as the optimal configuration for the final model. The training data was the actual data of multiple motion paths of the robotic arm. This historical data were collected from a physical truss manipulator system as depicted in <xref ref-type="fig" rid="F1">Figure 1</xref>. The data acquisition process involved executing a series of predefined motion tasks, such as pick-and-place operations, across various start and end points within the manipulator&#x2019;s workspace. An MPU6050 inertial measurement unit was used to capture real-time posture data, including position, velocity, and acceleration for each axis. The dataset was structured as a time-series collection of data points, where each point contained a timestamp, the Cartesian coordinates (X, Y, Z) of the end-effector, its corresponding velocity and acceleration values, and the motor control signals sent from the controller. The error of SA-BP algorithm in optimizing the motion path of truss manipulator is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Error of SA-BP algorithm in optimizing the motion path of truss manipulator. <bold>(a)</bold> Number of nodes. <bold>(b)</bold> Number of Learning rate.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g007.tif">
<alt-text content-type="machine-generated">Two graphs comparing error values against different parameters. Graph (a) plots MAE, RMSE, and MAPE against the number of hidden layer nodes, highlighting a peak at approximately 20 nodes. Graph (b) plots the same error metrics against the learning rate, indicating a minimum around 0.0008. Both graphs show MAE with crosses, RMSE with circles, and MAPE with triangles. A red ellipse highlights significant points.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F7">Figure 7a</xref> shows the trend of three indicators as the amount of hidden layer nodes rose from 10 to 30. When the amount of hidden layer points was 20, the MAE reached the lowest value of 0.211, while the RMSE and MAPE were 0.282 and 0.347, separately, indicating that the model performed best at this number of nodes. <xref ref-type="fig" rid="F7">Figure 7b</xref> shows the variation of model error as the learning rate was adjusted from 0.0004 to 0.0012. When the learning rate was 0.0008, the error values of MAE, RMSE, and MAPE were 0.942, 1.466, and 2.513, separately. At this time, the model&#x2019;s error was relatively lowest, indicating that the model performed best at this learning rate. To enhance the algorithm performance, a three-layer SA-BP NN model was applied in the validation experiment. The IL had 10 nodes representing the key motion parameters of the truss manipulator, the hidden layer has 20 nodes, and the OL output the optimized path for a single node. The model used mean square error (MSE) as the loss function, with a learning rate of 0.0008, and was optimized through gradient descent. The model was trained and tested using historical motion data, and its stability was ensured through cross validation. The loss convergence curves of the SA-BP algorithm training and testing sets are shown in <xref ref-type="fig" rid="F8">Figure 8</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Loss convergence curves of SA-BP algorithm training and testing sets. <bold>(a)</bold> Training set loss rate. <bold>(b)</bold> Test set loss rate.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g008.tif">
<alt-text content-type="machine-generated">Two graphs show loss curves and trendlines with Mean Squared Error on the y-axis and Number of Iterations on the x-axis. Graph (a) in blue shows the loss curve decreasing from 6 to 13 (&#xD7;10&#xB3;) iterations. Graph (b) in green shows a similar trend from 0 to 16 (&#xD7;10&#xB3;) iterations. Both graphs include red dashed trendlines.</alt-text>
</graphic>
</fig>
<p>On the training set shown in <xref ref-type="fig" rid="F8">Figure 8a</xref>, the mean square error rapidly decreases in the initial stage, then continues to steadily decrease and converges to nearly 10<sup>&#x2212;2</sup> around 1.3 &#xd7; 10<sup>&#x2212;4</sup> iterations. Although there are slight fluctuations caused by random optimization, the overall trend is smooth and consistent; On the test set shown in <xref ref-type="fig" rid="F8">Figure 8b</xref>, there is also monotonic convergence, with a rapid decline in the initial stage and a slow approach to the low error interval, reaching a low value of the same magnitude as the training set around 1.5-1.6 &#xd7; 10<sup>&#x2212;4</sup> iterations. The continuous decline and convergence of the training and testing curves indicate that the model performs well in both optimization efficiency and generalization performance. It can quickly reduce errors without significant overfitting, thus demonstrating the advantages of the proposed method in terms of stability and prediction accuracy. To first evaluate the core discriminative power of the proposed model against other algorithms, a binary classification task was established as a preliminary assessment. In this framework, historical motion paths from the training dataset were labeled as either &#x2018;acceptable&#x2019; (Class 1) or &#x2018;unacceptable&#x2019; (Class 0) based on a predefined threshold of performance, such as exceeding a critical positioning error or failing to meet smoothness criteria. The performance of the SA-BP algorithm was benchmarked against four other common optimization algorithms (GA, PSO, DE, and ABC) on a binary classification task, with the results detailed in <xref ref-type="table" rid="T1">Table 1</xref>. This comparison aimed to assess the core discriminative power of each model in distinguishing between &#x2018;acceptable&#x2019; and &#x2018;unacceptable&#x2019; motion paths.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Comparison of algorithm performance indicators.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Algorithm name</th>
<th align="center">Accuracy(%)</th>
<th align="center">Precision</th>
<th align="center">Recall</th>
<th align="center">F1 score</th>
<th align="center">Specificity</th>
<th align="center">ROC-AUC value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">SA-BP algorithm</td>
<td align="center">93.78</td>
<td align="center">91.62</td>
<td align="center">92.34</td>
<td align="center">91.98</td>
<td align="center">94.21</td>
<td align="center">0.954</td>
</tr>
<tr>
<td align="center">GA</td>
<td align="center">91.45</td>
<td align="center">89.67</td>
<td align="center">88.92</td>
<td align="center">89.29</td>
<td align="center">91.33</td>
<td align="center">0.925</td>
</tr>
<tr>
<td align="center">PSO</td>
<td align="center">92.12</td>
<td align="center">90.34</td>
<td align="center">91.08</td>
<td align="center">90.71</td>
<td align="center">92.74</td>
<td align="center">0.941</td>
</tr>
<tr>
<td align="center">DE</td>
<td align="center">90.87</td>
<td align="center">88.55</td>
<td align="center">89.12</td>
<td align="center">88.83</td>
<td align="center">90.45</td>
<td align="center">0.916</td>
</tr>
<tr>
<td align="center">ABC</td>
<td align="center">92.76</td>
<td align="center">91.01</td>
<td align="center">91.23</td>
<td align="center">91.12</td>
<td align="center">93.02</td>
<td align="center">0.947</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As shown in <xref ref-type="table" rid="T1">Table 1</xref>, the SA-BP algorithm demonstrated superior performance across all key metrics. It achieved the highest accuracy (93.78%), precision (91.62%), and recall (92.34%). Crucially, it also obtained the top F1 score of 91.98%, indicating the best balance between precision and recall, and the highest ROC-AUC value of 0.954, signifying its excellent overall capability to discriminate between the two classes. While other algorithms like ABC and PSO also yielded strong results, with F1 scores of 91.12% and 90.71% respectively, they did not surpass the balanced performance of the SA-BP model. The GA and DE algorithms showed comparatively weaker performance in this task. Overall, the comprehensive results in <xref ref-type="table" rid="T1">Table 1</xref> confirmed that the SA-BP algorithm possessed the most robust and reliable discriminative power for evaluating the quality of manipulator motion paths.</p>
</sec>
<sec id="s3-2">
<title>3.2 Performance analysis and verification of SA-BP algorithm combined with PID control in optimizing the motion path of truss manipulator</title>
<p>The SA-BP algorithm combined with a PID controller was used in the experiment to optimize the motion path of the truss manipulator. The PID controller was used to adjust the motion trajectory of the robotic arm to minimize its error. The parameter settings were as follows: the initial value of proportional gain <italic>K</italic>
<sub>
<italic>p</italic>
</sub> was 0.1, the initial value of integral gain <italic>K</italic>
<sub>
<italic>i</italic>
</sub> was 0.05, and the initial value of differential gain <italic>K</italic>
<sub>
<italic>d</italic>
</sub> was 0.01. The sampling period of this experiment was 0.01&#xa0;s, and the total running time was 3&#xa0;s. The actual motion data of the robotic arm were fed back to the controller in real-time through sensors, and the PID parameters were optimized using BP NN and SAA to make the movement trajectory of the robotic arm smoother and more accurate. The time-varying curves of the three parameters of the PID controller are shown in <xref ref-type="fig" rid="F9">Figure 9</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Time dependent curves of the three parameters of the PID controller.</p>
</caption>
<graphic xlink:href="fmech-11-1643848-g009.tif">
<alt-text content-type="machine-generated">Three line graphs display the variation of PID controller parameters over time. The top graph shows \( K_p \) stabilizing around 0.1. The middle graph displays \( K_i \) stabilizing near 0.1. The bottom graph shows \( K_d \) stabilizing around 0.02. All graphs have a time range from 0 to 3 seconds.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F9">Figure 9</xref> shows the changes in three parameters <italic>K</italic>
<sub>
<italic>p</italic>
</sub>, <italic>K</italic>
<sub>
<italic>i</italic>
</sub>, and <italic>K</italic>
<sub>
<italic>d</italic>
</sub> over time when the SA-BP algorithm was combined with a PID controller in the motion path optimization task of a truss manipulator. Firstly, there was a change in the <italic>K</italic>
<sub>
<italic>p</italic>
</sub> parameter, which rapidly increased in the initial stage and stabilized at around 0.15&#xa0;at approximately 0.1&#xa0;s. Next was the <italic>K</italic>
<sub>
<italic>i</italic>
</sub> parameter, which rapidly increased to around 0.11&#xa0;at the beginning and reached a stable value at about 0.2&#xa0;s. The final curve showed the variation of <italic>K</italic>
<sub>
<italic>d</italic>
</sub> parameter, which rapidly increased to 0.02&#xa0;at about 0.05&#xa0;s and remained unchanged. All three parameters converged to stable values within a brief timeframe, indicating that the algorithm had a fast and stable response speed in PID control. The comparison of optimization algorithm effectiveness for the motion path of the truss robotic arm is represented in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>The comparison of optimization algorithm effectiveness for the motion path of truss robotic arm.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Algorithm name</th>
<th align="center">Path length (m)</th>
<th align="center">Calculation time (s)</th>
<th align="center">Energy consumption optimization (%)</th>
<th align="center">Path smoothness (unit)</th>
<th align="center">Convergence speed (number of iterations)</th>
<th align="center">Path error (cm)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">SA-BP algorithm</td>
<td align="center">12.486</td>
<td align="center">8.213</td>
<td align="center">23.78</td>
<td align="center">0.854</td>
<td align="center">147</td>
<td align="center">2.14</td>
</tr>
<tr>
<td align="center">GA</td>
<td align="center">13.168</td>
<td align="center">10.453</td>
<td align="center">21.29</td>
<td align="center">0.803</td>
<td align="center">203</td>
<td align="center">3.56</td>
</tr>
<tr>
<td align="center">PSO</td>
<td align="center">12.934</td>
<td align="center">9.769</td>
<td align="center">22.46</td>
<td align="center">0.826</td>
<td align="center">182</td>
<td align="center">2.88</td>
</tr>
<tr>
<td align="center">DE</td>
<td align="center">13.513</td>
<td align="center">9.315</td>
<td align="center">20.92</td>
<td align="center">0.794</td>
<td align="center">215</td>
<td align="center">3.12</td>
</tr>
<tr>
<td align="center">ABC</td>
<td align="center">12.763</td>
<td align="center">10.817</td>
<td align="center">22.35</td>
<td align="center">0.842</td>
<td align="center">173</td>
<td align="center">2.67</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As shown in <xref ref-type="table" rid="T2">Table 2</xref>, the SA-BP algorithm performed excellently in key performance indicators, with a path length of 12.486 m, the shortest, energy optimization reaching 23.78%, calculation time of 8.213&#xa0;s, iteration convergence speed of 147 times, path error of 2.14 cm, smoothness of 0.854, demonstrating high stability. In contrast, the GA path length was 13.168 m, with an optimized energy consumption of 21.29% and a path error of 3.56 cm, showing slightly inferior performance. The PSO algorithm had a path length of 12.934 m, energy optimization of 22.46%, and 182 iterations, slightly slower than SA-BP. The DE algorithm had a path length of 13.513 m, a computation time of 9.315&#xa0;s, 215 iterations, and the slowest convergence speed. The ABC algorithm had a path length of 12.763 m, optimized energy consumption of 22.35%, smoothness of 0.842, computation time of 10.817&#xa0;s, balanced performance, and was close to SA-BP. Overall, the SA-BP algorithm demonstrated significant advantages in path optimization, energy consumption, and computational efficiency. The performance of the proposed SA-BP algorithm was comprehensively validated by comparing its generated path against both the original, unoptimized path and a theoretically optimal path, with the results detailed in <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Performance validation of truss manipulator motion path optimization model.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Evaluation metric</th>
<th align="center">SA-BP algorithm</th>
<th align="center">Theoretical optimal path</th>
<th align="center">Pre-optimization path</th>
<th align="center">Deviation rate (%)</th>
<th align="center">Efficiency improvement (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Path length (m)</td>
<td align="center">12.486</td>
<td align="center">12.342</td>
<td align="center">14.872</td>
<td align="center">1.16</td>
<td align="center">16.05</td>
</tr>
<tr>
<td align="center">Energy consumption (kWh)</td>
<td align="center">2.317</td>
<td align="center">2.290</td>
<td align="center">2.765</td>
<td align="center">1.18</td>
<td align="center">16.22</td>
</tr>
<tr>
<td align="center">Execution time (s)</td>
<td align="center">8.213</td>
<td align="center">8.104</td>
<td align="center">9.756</td>
<td align="center">1.34</td>
<td align="center">15.80</td>
</tr>
<tr>
<td align="center">Smoothness (units)</td>
<td align="center">0.854</td>
<td align="center">0.862</td>
<td align="center">0.792</td>
<td align="center">0.93</td>
<td align="center">7.83</td>
</tr>
<tr>
<td align="center">Positioning accuracy (cm)</td>
<td align="center">1.38</td>
<td align="center">1.25</td>
<td align="center">3.64</td>
<td align="center">10.40</td>
<td align="center">62.09</td>
</tr>
<tr>
<td align="center">Stability (%)</td>
<td align="center">94.32</td>
<td align="center">95.01</td>
<td align="center">89.78</td>
<td align="center">0.73</td>
<td align="center">5.05</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As shown in <xref ref-type="table" rid="T3">Table 3</xref>, the algorithm demonstrated substantial improvements over the pre-optimization baseline across all evaluation metrics. Notably, it reduced the path length from 14.872 m to 12.486&#xa0;m (a 16.05% improvement) and slashed the positioning error by a remarkable 62.09%, from 3.64&#xa0;cm down to 1.38&#xa0;cm. Crucially, the performance of the SA-BP optimized path closely approached the benchmarks set by the theoretically optimal path. The optimized path length, energy consumption, and execution time showed minimal deviation rates of just 1.16%, 1.18%, and 1.34% from the ideal values, respectively. Furthermore, key performance indicators such as smoothness (0.854 units) and stability (94.32%) were also remarkably close to the theoretical best-case scenario, with deviations of less than 1%. This proximity to the ideal benchmark strongly underscored the algorithm&#x2019;s high efficiency and its capability to converge on a near-optimal solution. To rigorously validate the real-world applicability of the proposed SA-BP algorithm, a final verification experiment was conducted on the physical truss manipulator system described in <xref ref-type="sec" rid="s2-1">Section 2.1</xref>. In this experiment, a standard pick-and-place task was defined with specified start and end coordinates. The SA-BP algorithm was first used to generate the optimal motion path and corresponding control commands. These commands were then fed directly to the manipulator&#x2019;s control system. The actual executed trajectory of the manipulator&#x2019;s end-effector was tracked in real-time using the MPU6050 sensor system. The performance of the predicted path was then compared against the actual executed path. Key performance indicators (KPIs) were measured to quantify the fidelity of the real-world execution against the algorithm&#x2019;s optimized plan. The comparison between the SA-BP predicted path and the actual execution path on the physical system is shown in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Comparison of SA-BP predicted path vs actual executed path on physical system.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Performance metric</th>
<th align="center">Performance metric</th>
<th align="center">Performance metric</th>
<th align="center">Performance metric</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">SA-BP predicted path (Ideal)</td>
<td align="center">SA-BP predicted path (Ideal)</td>
<td align="center">SA-BP predicted path (Ideal)</td>
<td align="center">SA-BP predicted path (Ideal)</td>
</tr>
<tr>
<td align="center">Actual executed path (Measured)</td>
<td align="center">Actual executed path (Measured)</td>
<td align="center">Actual executed path (Measured)</td>
<td align="center">Actual executed path (Measured)</td>
</tr>
<tr>
<td align="center">Fidelity deviation</td>
<td align="center">Fidelity deviation</td>
<td align="center">Fidelity deviation</td>
<td align="center">Fidelity deviation</td>
</tr>
<tr>
<td align="center">Execution time (s)</td>
<td align="center">Execution time (s)</td>
<td align="center">Execution time (s)</td>
<td align="center">Execution time (s)</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The results of this direct comparison are presented in <xref ref-type="table" rid="T4">Table 4</xref>, demonstrating a high degree of correlation between the predicted performance and the physically realized results, thereby confirming the algorithm&#x2019;s effectiveness and robustness in a practical application scenario.</p>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>4 Discussion</title>
<p>The research focused on optimizing the motion path of truss manipulators to solve their positioning deviation problem in industrial automation. The research proposed an optimization method that combined SA and BP NN. The SAA was used to initially optimize path weights, and then the BP NN was applied to further adjust the motion path to improve the precision and energy productivity of path planning. The research results indicated that the SA-BP algorithm outperformed other optimization algorithms in multiple performance metrics. Specifically, the SA-BP algorithm reduced path error to 1.38 cm, improved energy optimization by 16.22%, and reduced execution time to 8.213&#xa0;s. Meanwhile, the smoothness of the path reached 0.854, significantly better than GA&#x2019;s 0.803 and PSO&#x2019;s 0.826. In contrast, GA had a path error of 3.56 cm and an energy optimization rate of 21.29%. These data further proved that the SA-BP algorithm had significant advantages in path optimization and energy saving. Although the research results were satisfactory, there were still some shortcomings in this study. The training time of the model was relatively long, especially when dealing with large-scale data, which might affect the practical application of the algorithm. Future work prospects can further optimize the computational efficiency of algorithms to shorten training time. Meanwhile, incorporating dynamic path planning into the research scope and developing more intelligent and flexible control systems to cope with complex industrial automation scenarios.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s5">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/supplementary material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s6">
<title>Author contributions</title>
<p>YH: Writing &#x2013; original draft, Validation, Methodology, Formal Analysis. JT: Supervision, Data curation, Writing &#x2013; review and editing, Resources.</p>
</sec>
<sec sec-type="funding-information" id="s7">
<title>Funding</title>
<p>The author(s) declare that no financial support was received for the research and/or publication of this article.</p>
</sec>
<sec sec-type="COI-statement" id="s8">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s9">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
<p>Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Agrawal</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Panda</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sahoo</surname>
<given-names>A. K.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Advancements in tool wear monitoring in turning operations: digital image processing and AI techniques</article-title>. <source>J. Phys. Conf. Ser. IOP Publ.</source> <volume>2818</volume> (<issue>1</issue>), <fpage>012040</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/2818/1/012040</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ayd&#x131;n</surname>
<given-names>&#x130;.</given-names>
</name>
<name>
<surname>&#xd6;zbek</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kara</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>A new approach to minimization of the surface roughness and cutting force <italic>via</italic> fuzzy TOPSIS, multi-objective grey design and RSA</article-title>. <source>Measurement</source> <volume>70</volume>, <fpage>100</fpage>&#x2013;<lpage>109</lpage>. <pub-id pub-id-type="doi">10.1016/j.measurement.2015.03.037</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cao</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Continuum modeling and boundary control of a satellite with a large space truss structure</article-title>. <source>Aerospace</source> <volume>11</volume> (<issue>1</issue>), <fpage>54</fpage>&#x2013;<lpage>71</lpage>. <pub-id pub-id-type="doi">10.3390/aerospace11010054</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xiang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Bao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Qi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Qu</surname>
<given-names>W. Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Q. H.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Research on orbit assembly strategy of large-scale space truss structure</article-title>. <source>Recent Pat. Eng.</source> <volume>17</volume> (<issue>1</issue>), <fpage>e301221199672</fpage>&#x2013;<lpage>135</lpage>. <pub-id pub-id-type="doi">10.2174/1872212116666211230121623</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Nie</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Rui</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Q.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Three-dimensional truss path planning of cellular robots based on improved sparrow algorithm</article-title>. <source>Robotica</source> <volume>42</volume> (<issue>2</issue>), <fpage>347</fpage>&#x2013;<lpage>366</lpage>. <pub-id pub-id-type="doi">10.1017/s0263574723001480</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>G&#xf6;k</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>G&#xf6;k</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Bilgin</surname>
<given-names>M. B.</given-names>
</name>
<name>
<surname>Alkan</surname>
<given-names>M. A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>The effects of cutting parameters and tool path strategies on tool acceleration in ball end milling</article-title>. <source>Mater. Technol.</source> <volume>51</volume> (<issue>6</issue>), <fpage>957</fpage>&#x2013;<lpage>965</lpage>. <pub-id pub-id-type="doi">10.17222/mit.2017.039</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Kinematic and dynamic characteristics&#x27; analysis of a scissor multi-rod ring deployable mechanism</article-title>. <source>Mech. Sci.</source> <volume>14</volume> (<issue>1</issue>), <fpage>193</fpage>&#x2013;<lpage>207</lpage>. <pub-id pub-id-type="doi">10.5194/ms-14-193-2023</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kara</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Ayd&#x131;n</surname>
<given-names>&#x130;.</given-names>
</name>
<name>
<surname>Kisioglu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Optimization of processing parameters of a developed new driller system for orthopedic surgery applications using taguchi method</article-title>. <source>Int. J. Adv. Manuf. Technol.</source> <volume>76</volume>, <fpage>1437</fpage>&#x2013;<lpage>1448</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-014-6327-0</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Duan</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Meng</surname>
<given-names>Q.</given-names>
</name>
</person-group> (<year>2023a</year>). <article-title>BP neural network modeling and solving acceleration of analog ICs</article-title>. <source>Circuits, Syst. Signal Process.</source> <volume>42</volume> (<issue>12</issue>), <fpage>7023</fpage>&#x2013;<lpage>7044</lpage>. <pub-id pub-id-type="doi">10.1007/s00034-023-02443-x</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Yim</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2023b</year>). <article-title>Motion planning for variable topology trusses: reconfiguration and locomotion</article-title>. <source>IEEE Trans. Robotics</source> <volume>39</volume> (<issue>3</issue>), <fpage>2020</fpage>&#x2013;<lpage>2039</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2022.3228400</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pei</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Jiao</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>D.</given-names>
</name>
<etal/>
</person-group> (<year>2023</year>). <article-title>A two-step simulated annealing algorithm for spectral data feature extraction</article-title>. <source>Sensors</source> <volume>23</volume> (<issue>2</issue>), <fpage>893</fpage>&#x2013;<lpage>907</lpage>. <pub-id pub-id-type="doi">10.3390/s23020893</pub-id>
<pub-id pub-id-type="pmid">36679691</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rehman</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nuha</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Shaikhi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Akbar</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Mohandes</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Improving performance of recurrent neural networks using simulated annealing for vertical wind speed estimation</article-title>. <source>Energy Eng.</source> <volume>120</volume> (<issue>4</issue>), <fpage>776</fpage>&#x2013;<lpage>789</lpage>. <pub-id pub-id-type="doi">10.32604/ee.2023.026185</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Suvorov</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Vasilyev</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Melnikov</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Kuznetsov</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Bahrami</surname>
<given-names>M. R.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Weight reduction of a ship crane truss structure made of composites</article-title>. <source>Appl. Sci.</source> <volume>13</volume> (<issue>15</issue>), <fpage>8916</fpage>&#x2013;<lpage>8929</lpage>. <pub-id pub-id-type="doi">10.3390/app13158916</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tsoulos</surname>
<given-names>I. G.</given-names>
</name>
<name>
<surname>Charilogis</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Tsalikakis</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Train neural networks with a hybrid method that incorporates a novel simulated annealing procedure</article-title>. <source>AppliedMath</source> <volume>4</volume> (<issue>3</issue>), <fpage>1143</fpage>&#x2013;<lpage>1161</lpage>. <pub-id pub-id-type="doi">10.3390/appliedmath4030061</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yald&#x131;z</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>&#xdc;nsa&#xe7;ar</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Kara</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Cutting parameter and tool path style effects on cutting force and tool deflection in machining of convex and concave inclined surfaces</article-title>. <source>Int. J. Adv. Manuf. Technol.</source> <volume>69</volume> (<issue>5-8</issue>), <fpage>1063</fpage>&#x2013;<lpage>1078</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-013-5075-x</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yald&#x131;z</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>&#xdc;nsa&#xe7;ar</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>G&#xf6;k</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Determination of experimental, analytical, and numerical values of tool deflection at ball end milling of inclined surfaces</article-title>. <source>Proc. Institution Mech. Eng. Part E J. Process Mech. Eng.</source> <volume>230</volume> (<issue>2</issue>), <fpage>111</fpage>&#x2013;<lpage>119</lpage>. <pub-id pub-id-type="doi">10.1177/0954408914540633</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yan</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Simulated annealing algorithm optimized GRU neural network for urban rainfall-inundation prediction</article-title>. <source>J. Hydroinformatics</source> <volume>25</volume> (<issue>4</issue>), <fpage>1358</fpage>&#x2013;<lpage>1379</lpage>. <pub-id pub-id-type="doi">10.2166/hydro.2023.006</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yin</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yi</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Han</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Assistant investigation of energy dissipation in non-obstructive particle damper based on a neural network using simulated annealing backpropagation</article-title>. <source>J. Vib. Control</source> <volume>29</volume> (<issue>23-24</issue>), <fpage>5387</fpage>&#x2013;<lpage>5397</lpage>. <pub-id pub-id-type="doi">10.1177/10775463221135207</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Shao</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Research on the optimization of the PID control method for an EOD robotic manipulator using the PSO algorithm for BP neural networks</article-title>. <source>Actuators</source> <volume>13</volume> (<issue>10</issue>), <fpage>386</fpage>&#x2013;<lpage>405</lpage>. <pub-id pub-id-type="doi">10.3390/act13100386</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>