Parallel robot kinematics parameter identification method based on improved black-wing plinary algorithm
By combining the least squares method and the improved Blackwing Kite algorithm, the LS-MBKA algorithm was constructed, which solved the problem of insufficient accuracy and stability of parameter identification in the kinematic calibration of parallel robots, and achieved high accuracy and stability improvement of robot kinematic parameters.
Patent Information
- Application Number
- CN202510306603.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-03-14
- Publication Date
- 2025-08-08
AI Technical Summary
Existing kinematic calibration methods for parallel robots have shortcomings in terms of parameter identification accuracy and stability. In particular, the least squares method is sensitive to outliers and has difficulty in setting initial values, while the Blackwing Kite algorithm is weak in local optimization capabilities, resulting in low identification accuracy.
By combining the least squares method and the improved Black-winged Kite algorithm, and through the alternating complementary method and the sine-cosine strategy, the LS-MBKA algorithm is constructed to identify the kinematic parameters of parallel robots, thereby improving global optimization and local search capabilities and reducing errors.
It improves the accuracy and stability of robot kinematic calibration, with a position error improvement of 78.54%, and solves the problems of low parameter identification accuracy and poor stability in existing methods.
Smart Images

Figure CN120439276A_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a parallel robot kinematic parameter identification technology, in particular to a parallel robot kinematic parameter identification method based on an improved black kite algorithm, and belongs to the field of robotics and automation. Background Art
[0002] Existing parallel robot kinematic calibration methods have many problems, especially in terms of parameter identification accuracy and stability. As a common parameter identification technology, the traditional least squares method is widely used because of its computational simplicity and high efficiency, but it has significant limitations when dealing with complex kinematic problems. In particular, when faced with outliers that may exist in the experiment (such as noise interference, measurement errors, etc.), the least squares method is easily affected by these data points, resulting in deviations in the identification results and the inability to obtain ideal calibration accuracy. In addition, the least squares method is very sensitive to the setting of initial values. Inaccurate or unreasonable initial values often affect the accuracy of the final solution and may even fall into a local optimal solution, resulting in a significant decrease in the accuracy of the final parameter identification.
[0003] In recent years, the Black Kite algorithm, a heuristic global optimization algorithm, has achieved remarkable application results in various fields due to its powerful global optimization capabilities and good stability. In particular, in complex kinematic model identification problems, the Black Kite algorithm, with its extensive search space, can effectively avoid being trapped in local optimal solutions, thereby obtaining a more accurate global optimal solution. However, despite its excellent performance in global optimization, the Black Kite algorithm still has certain shortcomings in local optimization capabilities. In particular, when dealing with kinematic problems with complex parameter spaces and high nonlinearity, it may suffer from slow convergence and insufficient accuracy. Summary of the Invention
[0004] (1) Technical problems solved
[0005] In response to the shortcomings of the existing technology, the present invention provides a kinematic parameter identification method for a parallel robot based on an improved Black Kite algorithm. By introducing the advantages of the Black Kite algorithm and the least squares method, and combining the ability of the Black Kite algorithm in global optimization with the high efficiency of the least squares method in local optimization, the problem that the least squares method is sensitive to outliers and difficult to set initial values is solved, and the deficiency of the Black Kite algorithm's weak local optimization ability is also compensated.
[0006] (2) Technical solution
[0007] To achieve the above objectives, the present invention is implemented through the following technical solutions:
[0008] A kinematic parameter identification method for a parallel robot based on an improved black kite algorithm comprises the following steps:
[0009] S1: Establish a positive kinematic error expression model. Taking the Delta robot model R-D4-800A as the research object, the positive kinematic error model is first established based on its kinematic model. Specifically, the robot structural parameters (such as the geometric position of each joint, the length of the connecting rod, etc.) are used to derive the positive kinematic equations and calculate the expected position of the robot end effector. At the same time, the actual measured end position is compared with the calculated end position to construct a kinematic error model. The error model is described in the following form:
[0010]
[0011] Where E is the total error, x i measured is the actual measured value, x i calculated is the value calculated by the kinematic model, n is the number of measurement points, and the error model optimizes the kinematic parameters of the robot by minimizing the error.
[0012] S2: Construct an improved Black Kite least squares hybrid algorithm (LS-MBKA). This algorithm combines the least squares method with the improved Black Kite algorithm. It first uses the least squares method to perform preliminary parameter estimation, and then uses the improved Black Kite algorithm to globally optimize these preliminary parameters. The improved Black Kite algorithm uses the alternating complementary method and the positive and negative vector strategy to enhance global optimization and local search capabilities.
[0013] S3: Use the LS-MBKA algorithm to identify the parameters of the parallel robot and obtain the kinematic error parameters. Specifically, the least squares method is used to provide preliminary parameter estimates, followed by a modified Black Kite algorithm for global optimization. By combining these two algorithms, more accurate kinematic parameters can be obtained, reducing kinematic errors.
[0014] S4: Perform error compensation based on the identification results to improve the robot's motion accuracy. Use the identified kinematic parameters to compensate for the robot's errors and optimize the kinematic model in the control system, thereby improving the accuracy of the robot's end effector and minimizing its position errors in the x, y, and z directions.
[0015] The improved black kite algorithm in step S2 adopts the alternating complementary method and the positive covector strategy:
[0016] Alternating complementary method: By generating multiple complementary solutions in the initialization phase and optimizing the population position distribution, the algorithm can avoid falling into local optimal solutions and enhance the global search capability.
[0017] Sinusoid strategy: Utilizes the characteristics of the sinusoid function to dynamically adjust the optimization direction during the search process, improve the local optimization capability of the Black Kite algorithm, and ensure a balance between global and local search.
[0018] Preferably, the S4 comprehensive evaluation analysis includes a combination weighting method of game theory and a VIKOR method analysis.
[0019] Preferably, the step of error compensation in step S4 includes:
[0020] S4.1: According to the identification results of the error parameters, adjust the relevant parameters in the robot control system (such as joint angles, joint speeds, etc.) to optimize the trajectory.
[0021] S4.2: In the real-time control process, a closed-loop feedback mechanism is used to obtain the actual position data of the robot through sensors and compare it with the ideal trajectory to further adjust the motion parameters in the robot control system to achieve high-precision control.
[0022] Preferably, the alternating complementary method in the improved black kite algorithm includes:
[0023] Step 1: Initialize the population and ensure that the population can cover multiple areas of the search space by alternately generating multiple complementary positions.
[0024] Step 2: Use the Black Kite algorithm to optimize these complementary positions to ensure that the search for the global optimal solution is not limited by local solutions.
[0025] Step 3: In each iteration, by updating the complementary positions, the diversity of the population is further enhanced and the exploratory nature of the search process is improved.
[0026] Preferably: the inverse vector strategy includes:
[0027] Step 1: In the local optimization stage, the optimization direction is adjusted using the positive cosine function, and the search step size is dynamically adjusted according to the current solution state to avoid the occurrence of local optimal solutions.
[0028] Step 2: Combined with the characteristics of the search space, the inverse vector strategy guides the algorithm to make reasonable parameter adjustments, making the search process more accurate and efficient.
[0029] Preferably, the initial value trial step of the least squares method includes:
[0030] Step 1: Use experimental data to preliminarily fit the robot kinematic model and generate a preliminary parameter solution.
[0031] Step 2: Combine the initial values from the least squares method with the Black Kite algorithm to optimize the parameters. The quality of the initial values is evaluated using the least squares method, and further optimized using the Black Kite algorithm to improve recognition accuracy.
[0032] Preferably: the optimization process of the black kite algorithm includes:
[0033] Step 1: Use the improved Black Kite algorithm to perform a global search of the robot's kinematic parameters to avoid falling into a local optimal solution.
[0034] Step 2: Use local optimization capabilities to improve the accuracy of the solution, enhance the algorithm's attention to details during the search process, and ultimately converge to the global optimal solution.
[0035] Preferably, the specific method of robot error compensation includes:
[0036] Step 1: Identify the key parameters that affect the robot's accuracy by analyzing the error sources.
[0037] Step 2: Based on the optimized kinematic parameters, adjust the system parameters to ensure that the robot can minimize position errors when performing movements.
[0038] (3) Beneficial effects
[0039] Using the R-D4-800A Delta robot as a research object, this paper not only constructs a positive kinematic error model for the robot but also combines the least squares method with an improved Black Kite algorithm to address the low parameter identification accuracy and poor stability issues of existing methods. By introducing the alternating complementary method and the positive covector strategy, this method effectively improves the balance between global search and local optimization, enhancing the accuracy and stability of the robot's kinematic calibration. BRIEF DESCRIPTION OF THE DRAWINGS
[0040] The above description is only an overview of the technical solution of the present invention. In order to more clearly understand the technical means of the present invention and implement it according to the contents of the specification, the following is a detailed description of the preferred embodiments of the present invention with reference to the accompanying drawings.
[0041] Figure 1 This is the structure diagram of the R-D4-800A Delta robot in the present invention;
[0042] Figure 2 This is a simplified diagram of the branch chain structure of the R-D4-800A Delta robot in the present invention;
[0043] Figure 3 The geometric composition of the R-D4-800A Delta robot in this invention;
[0044] Figure 4A comparison chart of the homogenization capabilities of the alternating complementary method and Tent's chaotic mapping in the present invention;
[0045] Figure 5 Flowchart of the LS-MBKA algorithm in the present invention;
[0046] Figure 6 This is a diagram of the experimental parameter identification results in the present invention;
[0047] Figure 7 This is the position error diagram after calibration of the LS-MBKA algorithm in the present invention. DETAILED DESCRIPTION
[0048] This embodiment of the application provides a parallel robot kinematic parameter identification method based on an improved Black Kite algorithm, addressing the low accuracy and poor stability of existing parameter identification methods. By introducing the alternating complementary method and the positive and negative vector strategy, this method effectively improves the balance between global search and local optimization, enhancing the accuracy and stability of robot kinematic calibration.
[0049] Refer to the attached Figure 1 To the attached Figure 3 As shown in the figure, the inverse kinematics model of the R-D4-800A Delta robot can reflect the mathematical relationship between the robot's end position and the drive input. The inverse kinematics model of the Delta robot is established by the simplified structure diagram of the i-th (i=1,2,3) branch chain. Figure 2 As shown. With the center of the static platform O as the origin, the static platform coordinate system {O} is established. The x-axis direction points to the motor rotation center, the z-axis direction is perpendicular to the static platform and upward, and the y-axis direction is determined by the right-hand rule. Similarly, with the center of the moving platform as the origin, the moving platform reference system {O1} is established. In which, it is assumed that the branch parallelogram branch has no deformation and is simplified to B i C i rod.
[0050] By the attached Figure 2 The closed-loop vector relationship can be obtained:
[0051] r+c i -a i -L i L i =l i l i
[0052] in, a i =(Rcosγ i ,Rsinγ i ,0) T , c i =(rcosγ i ,rsinγ i ,0)T , r=(x,y,z) T .
[0053] Taking the square of the modulus at both ends and simplifying gives:
[0054]
[0055] make
[0056] Solving the equation:
[0057]
[0058] The forward kinematics model of the parallel robot can reflect the mathematical relationship between the robot drive input and the robot end posture. In order to establish the forward kinematics model of the geometric solution, the branch parallelogram branch needs to be simplified as in Section 1.2. i C i The rod is then translated by a distance r to obtain the regular tetrahedron O1D1D2D3. Point E is the foot of the perpendicular from point O1 to the bottom surface, and F is the foot of the perpendicular from point E to the edge D1D2. The processing process is as shown in the attached figure. Figure 3 shown.
[0059] From the attached figure, we get A i The coordinates are:
[0060] A i =[Rcosγ i ,Rsinγ i ,0] T
[0061] The coordinates of Di are:
[0062] D i =[(RrL i sinθ i )cosγ i ,(RrL i sinθ i )sinγ i ,-L i cosθ i ] T
[0063] End position vector:
[0064]
[0065] Where:
[0066]
[0067]
[0068] in N=(|D1D2|+|D2D3|+|D3D1|) / 2,
[0069]
[0070]
[0071] in,
[0072]
[0073] Furthermore, an error model is established based on the forward kinematics model, and the ideal parameters of the forward kinematics model robot are defined as:
[0074]
[0075] The forward kinematics model can only set the error parameter ΔR i , Δr i , Δγ i , ΔL i 、 Δθ i , so the error parameter is:
[0076]
[0077] Therefore, the error parameters are substituted into the forward kinematics model, and the error model is established as:
[0078] ΔP=F1(m+Δe,θ+Δθ)-F1(m,θ)where ΔP=[Δx,Δy,Δz] T , F1 represents the forward kinematic model.
[0079] Furthermore, parameter identification is the premise and foundation for error compensation in the kinematic calibration of parallel robots and has a significant impact on the calibration results. The least squares method is widely used for parameter identification tasks due to its simplicity and efficiency. However, it also suffers from poor adaptability and susceptibility to outliers and initial value settings. The Black Kite algorithm, with its strong adaptability and global optimization capabilities, can meet the requirements of parameter identification. However, the Black Kite algorithm also suffers from low convergence accuracy, which requires improvement. Therefore, a hybrid algorithm combining an improved Black Kite algorithm and the least squares method is proposed to enhance the overall performance of the parameter identification algorithm.
[0080] Furthermore, the Black Kite Algorithm is a nature-inspired swarm intelligence optimization algorithm. Its core concept is to iteratively search for optimal results by simulating the attack and migration behaviors of black kites. The algorithm draws on the behavioral patterns of black kites during hunting, such as group collaboration, flexible maneuverability, and migration. To capture the black kite's ability to adapt to changing environments, these behavioral patterns are incorporated into the algorithm's optimization strategy, improving search efficiency and adaptability.
[0081] Furthermore, the least squares method is a method widely used in data analysis. Its basic idea is to find the best fitting curve or straight line by establishing a model and minimizing the sum of squares of the errors between the model and the actual observed data.
[0082] In order to improve the convergence accuracy of the BKA algorithm, the present invention proposes the alternating complementary method and the positive covector strategy in terms of initialization and local optimization capabilities, and then proposes an improved Black Kite Algorithm (MBKA) to ensure the final parameter identification effect.
[0083] 1) Alternating complementary method to improve initialization
[0084] In response to the problems of lack of population diversity and uneven population distribution in the random initialization of the Black Kite algorithm, the present invention proposes a new optimization algorithm initialization method - the alternating complementary method, which aims to optimize the uniformity and breadth of the population position distribution, thereby improving the convergence accuracy and stability of the algorithm. Its main principle is that during the initialization process, the nth (n is an even number) individual position is randomly generated in the search space, and then the next individual position is generated at a position complementary to the nth individual, so as to achieve the effect of uniform population distribution through alternating complementarity. Compared with the existing commonly used chaotic mapping method, the alternating complementary method does not require parameter setting, and the effect is stable, avoiding the difficulty of selecting an appropriate chaotic mapping method. The mathematical expression of the alternating complementary method is as follows:
[0085]
[0086] Where r1 is a random row vector of dimension dim, whose elements range from 0 to 1, and % represents the remainder operation.
[0087] Refer to the attached Figure 4 To evaluate the effectiveness of the alternating complementary method for data homogenization, we compared it with the Tent chaotic map, a widely used optimization algorithm. We applied both strategies to generate 1000 data points between 0 and 1 and plotted the corresponding distribution graphs and frequency histograms. The comparative analysis results showed that the alternating complementary method produced a more uniform distribution of data points without adjusting any parameters. Therefore, the equal-division strategy exhibited superior performance in data homogenization and could improve the diversity of the algorithm's initialization population.
[0088] 2) Improving local optimization capabilities using the positive and negative vector strategy
[0089] This paper proposes a sine-cosine strategy to improve the low convergence accuracy of the BKA algorithm from the perspective of local optimization capabilities. By utilizing the functional properties of sine and cosine functions, the local search space is randomly and alternately developed, thus achieving more effective local optimization.
[0090]
[0091] Where, is the position of the i-th individual in the t-th iteration, r5 is a random number that obeys the normal distribution, r6 and r7 are random numbers between 0 and 1, and X best,t is the optimal individual position for the tth iteration.
[0092] The MBAK algorithm operates as follows:
[0093] Step 1: Set the population size N and the maximum number of iterations T max The numerical value of
[0094] Step 2: Use the formula to initialize the group position and calculate the fitness value;
[0095] Step 3: Sort the population fitness values and find the current optimal position;
[0096] Step 4: Use the formula to update the group position and use the greedy mechanism to filter the updated position;
[0097] Step 5: Update the current optimal individual position;
[0098] Step 6: Determine whether the iteration termination condition is met. If not, continue to repeat steps 3-5; if so, stop the iteration and output the current optimal solution.
[0099] Further, see the attached Figure 5 To enhance the stability and accuracy of current parameter identification algorithms, this paper proposes an improved Black Kite Least Squares Hybrid Algorithm (LS-MBKA) that combines the nonlinear least squares method with the improved Black Kite algorithm. The main idea is to evaluate the least squares solution and directly output it if it meets the requirements. Otherwise, the improved Black Kite algorithm is used to further optimize the solution. The main steps of the LS-MBKA algorithm are as follows:
[0100] (1) Set three different initial values for the nonlinear least squares method and generate three solutions, which are X α , X β , X γ .
[0101] X α =L(X01 )
[0102] X β =L(X 02 )
[0103] X γ =L(X 03 )
[0104] Where L represents the nonlinear least squares method, X 01 , X 02 , X 03 There are three different initial values.
[0105] (2) Determine the accuracy of the fitness function of the three solutions with different initial values of the least squares method. If the accuracy of one of the solutions is less than the threshold ε, then directly use the solution as the output of the hybrid algorithm and stop the algorithm.
[0106] f Xl =f( Xl ),( l =α,β,γ)
[0107] Xbest=Xl,if fXl<ε
[0108] where f Xl , (l=α,β,γ) is X α 、X β 、X γ The fitness value, f represents the fitness function, ε=10 -8 .
[0109] (3) If step (2) does not meet the algorithm stopping condition, the intelligent algorithm is introduced to execute the initialization of the population.
[0110] (4) Calculate the individual fitness value and find the value including X α 、X β 、X γ The three individuals with the lowest fitness, including μ , X ν , X ω .
[0111] (5) Update group position
[0112] (6) Make the following adjustments to update the group position:
[0113]
[0114]
[0115]
[0116]
[0117] (7) Update group position.
[0118] (8) Determine whether the iteration stop condition is met. If not, execute steps (3-7). If the iteration stop condition is met, output the current optimal solution and stop the algorithm.
[0119] As mentioned above, the LS-MBKA algorithm will obtain a solution that is no worse than the least squares method. First, consider the first indicator as a class and record it as X (2) , the remaining indicators are regarded as another category and recorded as X (1) .
[0120] Further, see the attached Figure 6 and attached Figure 7 To verify the practical performance of the proposed parallel robot calibration method, an R-D4-800A Delta robot was used for experiments. A tracker target ball was fixed to the center of the moving platform. A laser tracker tracked the target ball on the moving platform to measure and record the position of the robot's moving platform actuators. During the experiment, the robot's moving platform was controlled by a teach pendant to reach 30 points within the Delta robot's working range. The laser tracker then measured and recorded the actual positions of these points.
[0121] After measuring all points, the LS algorithm, BKA algorithm and the LS-MBKA algorithm proposed in this invention were used to identify the parameters of the error model. The population size of BKA and LS-MBKA was set to 50, and the number of iterations was set to 100. The identification results are shown in the attached figure. Figure 6 As shown. The identified error parameters are corrected in the controller, and the position information of each point after calibration is measured again using the above method. The average position error of the point before calibration is (0.410 0, 0.308 0, 0.222 8), and the average position error after calibration by the LS algorithm is (0.060 9, 0.083 7, 0.096 3), and the position accuracy is improved by 74.39%. The average position error after calibration by the BKA algorithm is (0.094 6, 0.106 3, 0.138 3), and the position accuracy is improved by 69.90%. The average position error after calibration by the LS-MBKA algorithm is (0.058 2, 0.067 5, 0.076 1), and the position accuracy is improved by 78.54%. By comparing the experimental results, it can be found that the LS-MBKA algorithm has a better calibration effect.
[0122] Finally, it should be noted that the above embodiments are merely examples for the purpose of illustrating the present invention and are not intended to limit the embodiments. Those skilled in the art will readily appreciate that other variations or modifications based on the above description are possible. It is not necessary and impossible to provide an exhaustive list of all embodiments. However, obvious variations or modifications arising therefrom remain within the scope of protection of the present invention.
Claims
1. A kinematic parameter identification method for a parallel robot based on an improved black kite algorithm, characterized in that: The kinematic parameter identification method of a parallel robot based on an improved black kite algorithm comprises the following steps: S1. Establish a positive kinematic error expression model and define the kinematic error function of the parallel robot. The error function is used to describe the difference between the robot's kinematic model and actual observations. S2. Construct an improved Black Kite least squares hybrid algorithm (LS-MBKA), which combines the least squares method with the improved Black Kite algorithm and uses the improved Black Kite algorithm to optimize the initial value estimate in the least squares method; S3. Use the LS-MBKA algorithm to perform parameter identification on the parallel robot to obtain the robot's kinematic error parameters. The specific steps include preliminary parameter estimation using the least squares method, and then global optimization of the error using the Black Kite algorithm to ultimately obtain more accurate kinematic parameters. S4. Error compensation is performed based on the identification results to improve the robot's motion accuracy, especially to optimize the robot's position accuracy. Error compensation is achieved by adjusting the motion parameters in the robot control system.
2. The kinematic parameter identification method of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: The improved black kite algorithm in step S2 adopts the alternating complementary method and the sincovector strategy, and the sincovector strategy enhances local and global optimization capabilities.
3. The kinematic parameter identification method of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: The alternating complementary method generates complementary positions during the initialization process, optimizes the population position distribution, and improves the convergence accuracy of the algorithm. Specifically, it creates diverse initial solutions in the search space and combines the population update strategy to enable the algorithm to avoid falling into local optimality, thereby enhancing the global search capability.
4. The method for identifying kinematic parameters of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: The sine and cosine strategy utilizes the characteristics of the sine and cosine function to dynamically adjust the optimization direction during the search process, thereby improving the local optimization capability of the Black Kite algorithm and enhancing the global optimization capability of the algorithm. By adjusting the sine and cosine function, the directional information is better utilized during the search process, thereby improving the optimization efficiency.
5. The kinematic parameter identification method of a parallel robot based on an improved black kite algorithm according to claim 1, characterized in that: The algorithm evaluates the solution quality of the least squares method by testing the initial values of the least squares method, and combines it with the adaptability of the Black Kite algorithm to improve the recognition accuracy. Specifically, in the initial stage, multiple initial values are generated by sampling method, and the least squares method is fitted to obtain a preliminary solution. The accuracy is then further improved through the global optimization of the Black Kite algorithm.
6. The method for identifying kinematic parameters of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: In simulation experiments, the improved Black Kite least squares hybrid algorithm can significantly improve the positioning accuracy of the parallel robot in the x, y, and z directions. In the experiment, the position errors of the robot in the x, y, and z directions were reduced from 0.3375mm, 1.0602mm, and 1.4161mm to 0.0804mm, 0.0597mm, and 0.0404mm, respectively, indicating that this method has high calibration accuracy.
7. The method for identifying kinematic parameters of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: The positive kinematic error expression model is described using the following formula: Where E is the total error, x i measured is the actual measured value, x i calculated is the value calculated by the kinematic model, n is the number of measurement points, and the error model optimizes the kinematic parameters of the robot by minimizing the error.
8. The kinematic parameter identification method of a parallel robot based on an improved black kite algorithm according to claim 1, characterized in that: In the improved black kite algorithm, the objective function is the sum of squares of the robot position errors, that is: Among them, θ is the kinematic parameter of the robot, f(θ) is the robot position calculated based on the kinematic model, Represents the sum of all measurement points. This objective function achieves accurate identification of the robot's kinematic parameters by minimizing the position error.
9. The method for identifying kinematic parameters of a parallel robot based on an improved black kite algorithm according to claim 1, wherein: The parameter identification process is completed iteratively through the following steps: S1, initialize the parameter set and use the improved Black Kite algorithm to generate the initial solution; S2, fitting initial parameters using the least squares method; S3, update the parameters according to the Black Kite algorithm and evaluate the results through the error function; S4. Adjust the parameters according to the evaluation results and iterate the optimization until the set accuracy requirements are met.