Patent Publication Number: US-11654551-B2

Title: Redundant robotic arm control method, redundant robotic arm controller, and computer readable storage medium

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present disclosure claims priority to Chinese Patent Application No. 201911403020.2, filed Dec. 30, 2019, which is hereby incorporated by reference herein as if set forth in its entirety. 
     BACKGROUND 
     1. Technical Field 
     The present disclosure relates to automatic control technology, and particularly to a redundant robotic arm control method, a redundant robotic arm controller, and computer readable storage medium. 
     2. Description of Related Art 
     Robotic arm is to a complex system with high precision, multiple inputs and outputs, high nonlinearity, and strong coupling. Because of its unique operational flexibility, it has been widely used in industrial assembly, industrial safety, explosion-proof, and the like. Since the robotic arm is a complex system, it has uncertainties such as parameter perturbation, external interference, and un-modeled dynamics. Therefore, the modeling model of the robotic arm also has uncertainty. For different tasks, it is necessary to plan the motion trajectory of the joint space of the robotic arm, so as to cascade to form the end pose. For the robotic arm, it may encounter obstacles during motions, which will cause external forces to act on the robotic arm. 
     At present, when controlling the robotic arm in response to the external forces acting on the end of the robotic arm, it usually calculates the speed deviation of the end directly based on the force acting on the end of the robotic arm, and then adjusts the joints of the robotic arm according to the speed deviation of the end. When an external force acts on the robotic arm link, the control amount of the robotic arm will not change, and the robotic arm will collide with obstacles and produce a large impact force. If an adjustment method which is performed when an external force is acting on the end of the robotic arm is adopted, the robotic arm will drive the end of the robotic arm to move while the link has an external force acting thereon, which will cause the actual position of the end of the robotic arm to deviate from the trajectory of executing the main task. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       To describe the technical schemes in the embodiments of the present disclosure or in the prior art more clearly, the following briefly introduces the drawings required for describing the embodiments or the prior art. It should be understood that, the drawings in the following description merely show some embodiments. For those skilled in the art, other drawings can be obtained according to the drawings without creative efforts. 
         FIG.  1    is a schematic block diagram of a redundant robotic arm according to an embodiment of the present disclosure. 
         FIG.  2    is a flow chart of a first embodiment of a redundant robotic arm control method according to the present disclosure. 
         FIG.  3    is a flow chart of a second embodiment of a redundant robotic arm control method based on the redundant robotic arm control method of  FIG.  2   . 
         FIG.  4    is a flow chart of a third embodiment of a redundant robotic arm control method based on the redundant robotic arm control method of  FIG.  2   . 
         FIG.  5    is a schematic block diagram of a redundant robotic arm controller according to an embodiment of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     In order to make the objects, technical schemes and advantages of the present disclosure more clear, the technical solutions in the embodiments of the present disclosure will be clearly and completely described below with reference to the drawings. Apparently, the described embodiments are part of the embodiments of the present disclosure, not all of the embodiments. The components in the embodiments that are described and shown in the drawings may generally be arranged and designed in various configurations. 
     Therefore, the following detailed description for the embodiments provided in the drawings is not intended to limit the scope of the present disclosure, but merely represents the embodiments of the present disclosure. All other embodiments obtained by those skilled in the art without creative efforts are within the scope of the present disclosure. 
     It should be noted that, similar reference numerals and letters indicate similar items in the following figures. Therefore, once an item is defined in one figure, it will not be further defined and explained in subsequent figures. 
     In the description of the present disclosure, it should also be noted that, the terms “disposed”, “installed”, “connected to each other”, and “connected” are to be understood broadly, unless otherwise expressly stated and limited. For example, they can represent a fixed connection, a detachable connection, or integral connection; can be mechanical connection or electrical connection; can be a direct connection, a connection with each other through an intermediate medium, or an internal communication between two elements. For those skilled in the art, the specific meaning of the above-mentioned terms in the present disclosure can be understood based on specific circumstances. 
     A robotic arm is a structure formed by connecting a plurality of links. In the robotic arm, there is a joint connected between every two links. The end of the robotic arm located at an end of the robotic arm that is not connected to a link of other structures is called an “end”. During the motion of the robotic arm, in order to avoid damage to the robotic arm itself or exterior objects due to the obstructed task (i.e., the first task) when the robotic arm touches an obstacle, it usually adjust the motion state of the robotic arm when an external force acting on the robotic arm is detected, so that the robotic arm executes a new task (i.e., the second task), for example, moving the end of the robotic arm away from the obstacle in a specific trajectory after encountering the obstacle. 
     In the prior art, when an external force acting on the end of the robotic arm is detected, it will directly adjust the speed of the end to make the end to execute a new task. However, in this manner, once an external force is acting on the link of the robotic arm, it will affect the new task of the robotic arm so that the new task may be executed abnormally. 
     In order to solve the above-mentioned technical problems, the present disclosure provides a robotic arm control method for controlling a redundant robotic arm. The method will be described in detail below in conjunction with embodiments. 
       FIG.  1    is a schematic block diagram of a redundant robotic arm according to an embodiment of the present disclosure. A redundant robotic arm  100  is provided. As shown in  FIG.  1   , the robotic arm  100  includes link(s), joints(s) coupled to the link(s), a robotic arm controller  110  electrically connected to (servo(s) of) the joints(s), a storage  120  electrically connected to the robotic arm controller  110 , and a processor  130 . The storage  120  and the processor  130  are directly or indirectly electrically connected to each other for data interaction. For example, these components can be electrically connected to each other through one or more communication buses or signal lines. The robotic arm controller  110  is electrically connected includes at least one software functional module that can be stored in the storage  120  in the form of software or firmware or solidified in the operating system (OS) of the robotic arm  100 . The processor  130  is for executing executable modules stored in the storage  120 , for example, software functional modules included in the robotic arm controller  110 , computer programs, and the like. 
     In the robotic arm, the motions of different joints have different influences on the motion of the end of the robotic arm. For a known robotic arm, a state equation of the influence of the rotational angle of each joint in the robotic arm on the position of the end is calculated first. An existing calculation method such as forward kinematics can be used. The Jacobian matrix J of the state equation (referred to as the first matrix hereinafter) can be obtained by calculating the partial derivative of the state equation. In which, the Jacobian matrix J is a matrix with M rows and N columns, and M is equal to the motion dimension of the end, N is equal to the number of the joints, the element at the i-th row and j-th column (0&lt;i&lt;M, 0&lt;j&lt;N) of the Jacobian matrix represents the degree of influence of the j-th joints on the motion of each end in the i-th motion dimension. 
     At the end of the robotic arm, a first sensor can be disposed to collect an external force acting on the end, and a second sensor can be disposed on each joint of the robotic arm to collect a torque acting on the joint that is generated by an external force acting on a link of the robotic arm connecting to the joint. In which, the first sensor is a force sensor, and the second sensor is a torque sensor. When the dimension (i.e., motion dimension) of the end of the robotic arm is 6, the first sensor may be a 6-dimensional force/torque sensor. 
     In this embodiment, the value collected by the first sensor is represented by F ext , where F ext  is a M×1 matrix, where its i-th element represents the component of the external force acting on the end in the i-th motion dimension. The torque collected by the second sensor is T ext , where T ext  is an N×1 matrix, where its j-th element represents the torque on the j-th joint. After the first sensor and the second sensor are configured, the value of the external force can be collected through the first sensor, and the value of the external torque of the corresponding joint can be collected through the second sensor. Then the above-mentioned Jacobian matrix and the values collected by the first sensor and the second sensor can be used jointly to determine the force acting on the entire robotic arm. The details are as follows: 
     if both the first sensor and the second sensor have values and τ ext =J T F ext ≠0, it means that a force is acting on the end, where J T  is the transpose of the Jacobian matrix J; 
     if only the torque sensor of the joint has a value, that is, τ ext ≠0, F ext =0, it means that a force is acting on the link; 
     if both have values and are of different magnitudes, that is, τ ext ≠0, F ext ≠0, τ ext ≠J T  F ext , it means that forces are acting on both the end and the link; and 
     if both are zero, that is, τ ext =0, F ext =0, there is no force acting on the robotic arm. 
       FIG.  2    is a flow chart of a first embodiment of a redundant robotic arm control method according to the present disclosure. In this embodiment, a control method for a controller electrically connected to a redundant robotic arm or for the redundant robotic arm itself is provided. The method is a computer-implemented method executable for a processor. In one embodiment, the method may be implemented through the redundant robotic arm of  FIG.  1    or a redundant robotic arm controller shown in  FIG.  5   . As shown in  FIG.  2   , the method includes the following steps. 
     S 110 : obtaining an external force acting on an end of the robotic arm and an external torque acting on each joint. 
     S 120 : calculating a first joint speed of each joint. 
     In this embodiment, the first joint speed of each joint is calculated based on a degree of influence (e.g., position, speed, or other motion influence) of the joint on the end in each motion dimension and the external force acting on the end, where the first joint speed is a speed component of the external force acting on the end corresponding to the joint. As an example, the above-mentioned degree of influence can be a Jacobian matrix, and the speed of the end can be calculated based on the external force acting on the end, then the first joint speed of the joint can be calculated based on the Jacobian. 
     S 130 : determining a zero space speed of each joint corresponding to a current position of the end. 
     In this embodiment, the zero space speed of each joint corresponding to a current position of the end is determined based on a link torque of an external force acting on a link with respect to the joint, where the zero space speed is a speed of the joint when the end remains unchanged in position while the external force is acting on the link. 
     S 140 : calculating a total joint speed based on the first joint speed and the zero space speed. 
     S 150 : controlling the robotic arm to the move according to the total joint speed. 
     In this embodiment, a speed component of each joint to control the robotic arm in response to the external force is calculated through the external force acting on the end of the robotic arm, and simultaneously the external force acting on the link is mapped to a zero space of the end according to the zero space of the end so as to calculate the zero space speed of the joint in the zero space, and then the zero space speed and the first joint speed are superimposed to take as the control amount of the joint, so as to realize the control of each joint. Since the force acting on the link is mapped in the zero space of the end, when a force is acting on the link of the robotic arm, the link and the joint of the robotic arm will move in the zero space, so as to avoid the end of the robotic arm from being affected, and realize the compliant force of the robotic arm. 
       FIG.  3    is a flow chart of a second embodiment of a redundant robotic arm control method based on the redundant robotic arm control method of  FIG.  2   . As shown in  FIG.  3   , in this embodiment, the above-mentioned step of calculating the first joint speed of each joint based on the degree of influence of the joint on the end in each motion dimension and the external force acting on the end may include sub-steps S 121 -S 124 . 
     S 121 : obtaining Cartesian parameters of the end of the robotic arm, where the Cartesian parameters include an inertia parameter, a damping parameter, and a stiffness parameter of each dimension of the end. 
     In which, the larger the inertia parameter, the higher the stability of the robotic arm when subjected to external forces, the larger the damping parameter, the faster the energy dissipation of the robotic arm during collision, and the larger the stiffness parameter, the higher the accuracy of the position of the end. Therefore, the Cartesian parameters at the end of the robotic arm can be determined according to the performance required by the robotic arm. 
     S 122 : calculating a speed deviation of the end based on the Cartesian parameters and the external force acting on the end, where the speed deviation is a deviation between a current speed of the end and an expected speed of a blocked task. 
     The blocked task is the first task, and the expected speed is the current speed in the normal execution of the blocked task. 
     S 123 : calculating a target speed of the end based on the speed deviation of the end. 
     The target speed is the speed of the new task (i.e., the second task) executed by the target after encountering an obstacle. 
     S 124 : calculating the first joint speed of each joint based on the target speed of the end. 
     In the forgoing embodiment, the first joint speed of each joint is calculated based on the external force acting on the end. 
     According to the classic impedance control theory proposed by Hogan, in the case that the actual displacement of the robotic arm is x and the expected displacement of the robotic arm when executing a task is x d , the relationship of an acceleration deviation {umlaut over ({tilde over (x)})} of the end, the speed deviation {dot over ({tilde over (x)})} of the end, a displacement deviation {tilde over (x)} of the end with respect to the external force acting on the end F ext  is:
 
 F   ext   =M   e   {umlaut over ({tilde over (x)})}+B   e   {dot over ({tilde over (x)})}+K   e   {tilde over (x)}.  
 
     The speed deviation of the end is calculated based on the Cartesian parameters and the external force acting on the end through an equation of: 
     
       
         
           
             
               
                 x 
                 ~ 
               
               . 
             
             = 
             
               
                 s 
                 
                   
                     
                       M 
                       e 
                     
                     ⁢ 
                     
                       s 
                       2 
                     
                   
                   + 
                   
                     
                       B 
                       e 
                     
                     ⁢ 
                     s 
                   
                   + 
                   
                     K 
                     e 
                   
                 
               
               ⁢ 
               
                 
                   F 
                   ext 
                 
                 . 
               
             
           
         
       
     
     In which, x is a matrix composed of the displacement components of the end in each dimension, and its element at the i-th row represents the displacement component of the end in the i-th dimension; {dot over (x)} is a matrix composed of the velocity components of the end in each dimension, and its element at the i-th row represents the velocity component of the end in the i-th dimension; {dot over (x)} d  is a matrix composed of the expected velocity component of the end in each dimension, and its element at the i-th row is the expected velocity component of the end in the i-th dimension; {umlaut over (x)} is a matrix composed of the acceleration components of the end in each dimension, and its element at the i-th row represents the acceleration component of the end in the i-th dimension; and {umlaut over (x)} d  is a matrix composed of the components of the expected acceleration of the end in each dimension, and its element at the i-th row is the expected acceleration component of the end in the i-th dimension. 
     {tilde over (x)}=x−x d  is a matrix composed of the displacement deviation components of the end in each dimension, and its element at the i-th row represents the displacement deviation component of the end in the i-th dimension. {dot over ({tilde over (x)})}={dot over (x)}−{dot over (x)} d  is a matrix composed of the velocity deviation component of the end in each dimension, and its element at the i-th row represents the velocity deviation component of the end in the i-th dimension. {umlaut over ({tilde over (x)})}={umlaut over (x)}−{umlaut over (x)} d  is a matrix composed of the acceleration deviation component of the end in each dimension, and its element at the i-th row represents the acceleration deviation component of the end in the i-th dimension. F ext  is a matrix of the components of the external force acting on the end in each motion dimension. M e  is a matrix composed of the inertia parameter of the end in each dimension, where the number of rows and columns of M e  is equal to the motion dimension of the end, and its element at the i-th row and m-th column represents the inertia parameter component of the i-th dimension influenced by the m-th motion dimension, where 0&lt;m&lt;M. B e  is a matrix composed of the damping parameter of the end in each dimension, where the number of rows and columns of B e  is equal to the motion dimension of the end, and its element at the i-th row and m-th column represents the damping parameter component of the i-th dimension influenced by the m-th motion dimension. K e  is a matrix composed of the stiffness parameter of the end in each dimension, where the number of rows and columns of K e  is equal to the motion dimension of the end, and its element at the i-th row and m-th column represents the stiffness parameter component of the i-th dimension influenced by the m-th motion dimension; s is a Laplace transform. 
     After the speed deviation of the end is calculated, the target speed of the end when the second task is executed can be calculated based on the speed deviation of the end through an equation of:
 
 {dot over (x)}   cmd   ={dot over (x)}   d   +{dot over ({tilde over (x)})}.  
 
     Then, the first joint speed of each joint can be calculated based on the target speed of the end 
     In this embodiment, the calculation can be performed based on the first matrix. In the case that the robotic arm is a redundant robotic arm, the first matrix is an irreversible matrix. Therefore, the pseudo-inverse of the first matrix can be used, where JJ + =I, and I is an identity matrix. The {dot over (q)} cmd  can be calculated through an equation of:
 
 {dot over (q)}   cmd   =J   +   {dot over (x)}   cmd .
 
       FIG.  4    is a flow chart of a third embodiment of a redundant robotic arm control method based on the redundant robotic arm control method of  FIG.  2   . As shown in  FIG.  4   , in this embodiment, the above-mentioned step of determining the zero space speed of each joint corresponding to the current position of the end based on the link torque of the external force acting on the link with respect to the joint may include sub-steps S 131 -S 135 . 
     S 131 : calculating a first torque acting on each joint that is generated by the external force acting on the link. 
     S 132 : calculating a speed deviation of each joint based on the first torque of the joint, where the speed deviation is a difference between an actual speed of the joint and an expected speed of the joint. 
     S 133 : calculating a speed control weight of each joint based on a weight coefficient of the joint and the speed deviation of the joint. 
     S 134 : calculating a zero space basis vector of the robotic arm. 
     In this embodiment, the zero space basis vector of the robotic arm is calculated based on a first matrix composed of the degree of influence of the joint on the end in each motion dimension and the external force acting on the end, where each element of the zero space basis vector represents the speed of a joint. 
     S 135 : calculating the zero space speed based on the speed control weight and the zero space basis vector. 
     In the forgoing embodiment, the effect of the external force acting on the link with respect to the joint is transformed into a zero space. 
     In this embodiment, the first torque acting on each joint by the external force acting on the link is calculated through equations of:
 
τ ext =τ link   +J   T   F   ext ; and
 
τ link =τ ext   −J   T   F   ext ;
 
     where, τ link  is a matrix composed of a torque acting on the joint that is generated by the external force acting on the link, τ ext  is a total amount of external torques acting on the joint, J T  is the transpose of a matrix composed of the external force acting on the end and the degree of influence of the joint on the end in each motion dimension, that is, the transpose of the first matrix, F ext  is a matrix of a component of the external force acting on the end in each motion dimension. 
     In this embodiment, the expected speed, the expected acceleration, and the expected displacement are the current corresponding speed, acceleration, and displacement of the end, respectively, when the first task is executed normally. 
     In this embodiment, q is a N×1 matrix composed of the current angular displacement of each joint, and its j-th element represents the current angular displacement of the j-th joint. q d  is a N×1 matrix composed of a current expected angular displacement of each joint corresponding to the first task, its j-th element represents the expected angular displacement of the j-th joint. The angular velocity deviation of each joint is calculated based on each link torque through equations of: 
     
       
         
           
             
               
                 τ 
                 link 
               
               = 
               
                 
                   
                     M 
                     J 
                   
                   ⁢ 
                   
                     
                       q 
                       ~ 
                     
                     ¨ 
                   
                 
                 + 
                 
                   
                     B 
                     J 
                   
                   ⁢ 
                   
                     
                       q 
                       ~ 
                     
                     . 
                   
                 
                 + 
                 
                   
                     K 
                     J 
                   
                   ⁢ 
                   
                     q 
                     ~ 
                   
                 
               
             
             ; 
             and 
           
         
       
       
         
           
             
               
                 
                   q 
                   ~ 
                 
                 . 
               
               = 
               
                 
                   s 
                   
                     
                       
                         M 
                         J 
                       
                       ⁢ 
                       
                         s 
                         2 
                       
                     
                     → 
                     
                       
                         B 
                         J 
                       
                       ⁢ 
                       s 
                     
                     → 
                     
                       K 
                       J 
                     
                   
                 
                 ⁢ 
                 
                   τ 
                   link 
                 
               
             
             ; 
           
         
       
     
     where, {tilde over (q)}=q−q d  is a matrix composed of the angular displacement deviation of the joint, and its j-th element represents the angular displacement deviation of the j-th joint; {dot over ({tilde over (q)})}={dot over (q)}−{dot over (q)} d  is a matrix composed of the angular velocity deviation of the joint, and its j-th element represents the angular velocity deviation of the j-th joint; {umlaut over ({tilde over (q)})}={umlaut over (q)}−{umlaut over (q)} d  is a matrix composed of the angular acceleration deviation of the joint, and its j-th element represents the angular acceleration deviation of the j-th joint; M J  is a matrix composed of the inertia parameter of each joint, the number of its rows and columns is equal to the number of joints, and its element at the j-th row and n-th column represents the inertia parameter component of the j-th joint influenced by the n-th joint; B J  is a matrix composed of the damping parameter of each joint, the number of its rows and columns is equal to the number of joints, and its element at the j-th row and n-th column represents the damping parameter component of the j-th joint influenced by the n-th joint; K J  is a matrix composed of the stiffness parameter of each joint, the number of its rows and columns is equal to the number of joints, and its element at the j-th row and n-th column represents the stiffness parameter component of the j-th joint influenced by the n-th joint; and s is a Laplace transform, and 0&lt;n&lt;N. 
     The expected angular displacement is the current angular displacement of the joint when the first task is executed normally. 
     In this embodiment, since the first matrix has been obtained, the null space basis vectors Z of the first matrix can be calculated, and each element of these null space basis vectors represents the second joint speed of the corresponding joint without affecting the end displacement. The zero space speed of the joint can be calculated through an equation of:
 
 {dot over (q)}   null   =Zλ.  
 
     Based on the combination of these basis vectors, the joint can be controlled in the null space of the task executed by the end. That is, an optimized objective function can be constructed according to actual needs to obtain the optimal zero space speed in actual control requirements. For example, the minimum gravitational potential energy of the entire robot or the minimum distance to a certain point can be used as the optimized objective function. 
     The optimized objective function with the control requirement that the selected zero space speed control weight λ minimizes the difference between the zero space speed {dot over (q)} null  and the joint angular velocity deviation {umlaut over ({tilde over (q)})} calculated using the joint impedance is constructed as: 
     
       
         
           
             
               g 
               ⁡ 
               ( 
               
                 q 
                 . 
               
               ) 
             
             = 
             
               
                 1 
                 2 
               
               ⁢ 
               
                 
                   ( 
                   
                     
                       
                         q 
                         . 
                       
                       null 
                     
                     - 
                     
                       
                         q 
                         ~ 
                       
                       . 
                     
                   
                   ) 
                 
                 T 
               
               ⁢ 
               
                 
                   W 
                   ⁡ 
                   ( 
                   
                     
                       
                         q 
                         . 
                       
                       null 
                     
                     - 
                     
                       
                         q 
                         ~ 
                       
                       . 
                     
                   
                   ) 
                 
                 . 
               
             
           
         
       
     
     By calculating the derivative of the optimized objective function that has been constructed, and then substituting {dot over (q)} null =Zλ into the derived equation, it can obtain an equation of: 
     
       
         
           
             
               
                 
                   ( 
                   
                     
                       ∂ 
                       
                         g 
                         ⁡ 
                         ( 
                         
                           q 
                           . 
                         
                         ) 
                       
                     
                     
                       ∂ 
                       
                         q 
                         . 
                       
                     
                   
                   ) 
                 
                 T 
               
               = 
               
                 
                   W 
                   ⁡ 
                   ( 
                   
                     
                       
                         q 
                         . 
                       
                       null 
                     
                     - 
                     
                       
                         q 
                         ~ 
                       
                       . 
                     
                   
                   ) 
                 
                 = 
                 
                   
                     
                       WZ 
                       ⁢ 
                       λ 
                     
                     - 
                     
                       
                         q 
                         ~ 
                       
                       . 
                     
                   
                   = 
                   0 
                 
               
             
             ; 
           
         
       
     
     where, g({dot over (q)}) is the optimized objective function value, λ is a H×1 matrix, H is the dimension of zero space basis vectors, and W is a positive definite weight matrix where its each diagonal element is the weight of a joint. 
     In this way, the expression of λ can be calculated as:
 
λ=( Z   T   W   T   WZ ) −1   Z   T   W   T   W{dot over ({tilde over (q)})};  
 
     and then the zero space speed is obtained as:
 
 {dot over (q)}   null   =Zλ=Z ( Z   T   W   T   WZ ) −1   Z   T   W   T   W{dot over ({tilde over (q)})};  
 
     after the zero space speed is obtained, the total joint speed can be calculated. 
     The total joint speed is calculated through equations of:
 
 {dot over (q)}   N   ={dot over (q)}   cmd   +{dot over (q)}   null   ={dot over (q)}   cmd   +Z λ; and
 
 {dot over (q)}   N   ={dot over (q)}   cmd   +Z ( Z   T   W   T   WZ ) −1   Z   T   W   T   W{dot over ({tilde over (q)})}.  
 
       FIG.  5    is a schematic block diagram of a redundant robotic arm controller according to an embodiment of the present disclosure. In this embodiment, a redundant robotic arm controller  110  for controlling a redundant robotic arm is provided. In which, the redundant robotic arm may be a standalone redundant robotic arm having a controller for executing the above-mentioned redundant robotic arm control methods (see  FIGS.  2 - 4   ). In other embodiments, the redundant robotic arm and the controller  110  may be installed on a robot. As shown in  FIG.  5   , the robotic arm controller  110  is electrically connected to the robotic arm and includes an obtaining module  111 , a first calculation module  112 , a second calculation module  113 , a third calculation module  114 , and a control module  115 . The robotic arm controller  110  includes a software functional module that can be stored in a storage in the form of software or firmware or in the storage  120 . 
     The obtaining module  111  is configured to obtain an external force acting on an end of the robotic arm and an external torque acting on each joint. 
     In this embodiment, the obtaining module  111  is configured to execute step S 110 . For a specific description of the obtaining module  111 , refer to the description of step S 110 . 
     The first calculation module  112  is configured to calculate a first joint speed of each joint based on a degree of influence of the joint on the end in each motion dimension and the external force acting on the end, where the first joint speed is a speed component of the external force acting on the end corresponding to the joint. 
     In this embodiment, the first calculation module  112  is configured to execute step S 120 . For a specific description of the first calculation module  112 , refer to the description of step S 120 . 
     The second calculation module  113  is configured to determine a zero space speed of each joint corresponding to a current position of the end based on a link torque of an external force acting on a link with respect to the joint, where the zero space speed is a speed of the joint when the end remains unchanged in position while the external force is acting on the link. 
     In this embodiment, the second calculation module  113  is configured to execute step S 130 . For a specific description of the second calculation module  113 , refer to the description of step S 130 . 
     The third calculation module  114  is configured to calculate a total joint speed based on the first joint speed and the zero space speed. 
     In this embodiment, the third calculation module  114  is configured to execute step S 140 . For a specific description of the third calculation module  114 , refer to the description of step S 140 . 
     The control module  115  configured to control the robotic arm to the move according to the total joint speed. 
     In this embodiment, the control module  115  is configured to execute step S 150 . For a specific description of the control module  115 , refer to the description of step S 150 . 
     The present disclosure further provides a non-transitory computer readable storage medium. The storage medium stores one or more programs, and a processor can implement the method described in any one of the above-mentioned embodiments when executing the one or more programs. 
     The forgoing is only the various embodiment of the present disclosure, while the scope of the present disclosure is not limited thereto. For those skilled in the art, modifications or replacements that can be easily conceived within the technical scope of the present disclosure should be included within the scope of the present disclosure. Therefore, the scope of the present disclosure should be determined in accordance with the scope of the claims.