Method and control system
By using previous joint angles as initial values in iterative calculations, the method addresses the inefficiency of conventional iterative methods, reducing the time required to converge on solutions for joint angular velocity commands in robot control systems.
Patent Information
- Application Number
- JP2024086926
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-29
- Publication Date
- 2025-12-11
AI Technical Summary
The iterative method for generating joint angular velocity commands in robot control systems can take a long time to converge, leading to inefficiencies in obtaining solutions.
A method and system that utilize an initial joint angle from a previous time step as a starting point for iterative calculations to determine joint angles at a subsequent time, reducing the number of iterations required to achieve convergence.
This approach significantly shortens the time needed to obtain joint angular velocity commands by leveraging previous joint angle data, thereby enhancing the efficiency of robot control processes.
Smart Images

Figure 2025179950000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a method and a control system. [Background technology]
[0002] In the technique described in Patent Document 1, an iterative method using a Jacobian matrix is executed to generate joint angular velocity commands for moving each joint of a robot. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] International Publication No. 2013 / 183190 Summary of the Invention [Problem to be solved by the invention]
[0004] In the technique of Patent Document 1, the iterative method repeatedly performs calculations until a solution converges, which can take a long time to obtain a joint angular velocity command. [Means for solving the problem]
[0005] The present disclosure can be realized in the following forms.
[0006] According to one aspect of the present disclosure, there is provided a method for controlling the operation of a multi-joint robot, the method including: a first step of outputting, for at least one joint, a first joint angle that is a joint angle at a first time; and a second step of outputting, for the at least one joint, a second joint angle that is the joint angle at a second time after the first time, by an iterative method using an initial value set using the first joint angle output in the first step. According to another aspect of the present disclosure, there is provided a control system for controlling an articulated robot, the control system executing a process of outputting a first joint angle, which is a joint angle at a first time, for at least one joint of the articulated robot, and a process of outputting a second joint angle, which is the joint angle at a second time after the first time, for the at least one joint, by an iterative method using an initial value set using the first joint angle output in the first step. [Brief explanation of the drawings]
[0007] [Figure 1] 1 is a schematic diagram showing the overall configuration of a robot system according to an embodiment of the present invention. [Figure 2] FIG. 2 is a block diagram showing the main parts of the robot and the robot controller. [Figure 3] FIG. 2 is a block diagram showing the functional configuration of a control unit. [Figure 4] 10 is a flowchart showing a series of processes for obtaining a solution by a processing unit. [Figure 5] FIG. 5 is an explanatory diagram of the process in step S120 of FIG. 4. DETAILED DESCRIPTION OF THE INVENTION
[0008] A. Implementation: Fig. 1 is a schematic diagram showing the overall configuration of a robot system 10 according to this embodiment. The robot system 10 includes a robot 100, an end effector EE, and a robot controller 500. Fig. 2 is a block diagram showing the main parts of the robot 100 and the robot controller 500.
[0009] The robot 100 is a vertical articulated robot. The robot 100 has six joints. For example, the robot 100 performs assembly work, which is part of the manufacturing process on a production line. The robot 100 is driven by a robot controller 500. The robot 100 includes a base 105, an arm 120, six drive mechanisms 130, and a force sensor 140. Note that the six drive mechanisms 130 are not shown in FIG. 1.
[0010] 1, a robot coordinate system RC is set. The robot coordinate system RC is a three-dimensional Cartesian coordinate system with a predetermined position of the robot 100 as its origin. For example, an arbitrary position on the base 105 is set as the origin. The angular position of rotation around the X axis is defined as RX, the angular position of rotation around the Y axis as RY, and the angular position of rotation around the Z axis as RZ.
[0011] The control point of the arm 20 is set, for example, at a predetermined position at the tip of the arm 20. The control point is sometimes called a TCP (Tool Center Point). The position of the control point in the robot coordinate system RC can be expressed by the position in the X-axis direction, the position in the Y-axis direction, and the position in the Z-axis direction. The attitude of the control point in the robot coordinate system RC can be expressed by the angular position RX, the angular position RY, and the angular position RZ.
[0012] The base 105 supports the arm 120. The arm 120 includes six arm elements and joints J1 to J6 that connect the arm elements.
[0013] As shown in FIG. 2, each of the joints J1 to J6 is provided with a drive mechanism 130. The drive mechanism 130 includes a motor 131, a reducer 132, and an angle sensor 133. The motor 131 receives current from the robot controller 500 and generates a rotational output for driving the corresponding joint. The reducer 132 decelerates the rotational input provided by the motor 131. The angle sensor 133 detects the rotation angle (shaft position) of the output shaft of the motor 131 as the rotation angle of the joint. The angle sensor 133 detects the rotation angle of the output shaft at a predetermined time interval and outputs the detected rotation angle together with the detection time to the robot controller 500. The predetermined time interval is, for example, 100 milliseconds. The angle sensor 133 is, for example, an encoder, a potentiometer, or a resolver.
[0014] The drive mechanisms 130 corresponding to the joints J1 to J6 respectively drive the corresponding joints under the control of the robot controller 500, thereby disposing the end effector EE at a specified position and orientation in the robot coordinate system RC.
[0015] As shown in FIG. 1, the force sensor 140 is attached to the arm end 120e, which is the tip of the arm 120. The force sensor 140 detects the magnitude of forces parallel to the X-axis, Y-axis, and Z-axis acting on the end effector EE, as well as the magnitude of torque around each axis, in a sensor coordinate system different from the robot coordinate system RC. The force sensor 140 outputs the detected values to the robot controller 500. The sensor coordinate system is a three-dimensional Cartesian coordinate system with an arbitrary position of the force sensor 140 as the origin.
[0016] An end effector EE is attached to the arm end 120e via a force sensor 140. The end effector EE is a device for gripping a workpiece (not shown). Note that if the work performed by the robot 100 does not require a force sensor, the robot 100 does not need to be equipped with the force sensor 140.
[0017] As shown in FIG. 2, the robot controller 500 includes a drive unit 510, a power supply unit 520, and a control unit 530. The drive unit 510 has six motor drivers 515 corresponding to the joints J1 to J6, respectively. The drive unit 510 drives the corresponding motor drivers 515 under the control of the control unit 530. The motor drivers 515 drive motors 131 that rotate the corresponding joints. The drive units 510 are arranged inside the arm element to which the corresponding joints are provided or inside an adjacent arm element. In FIG. 1, the drive units 510 arranged inside the arm elements are not shown.
[0018] The power supply unit 520 reduces the voltage of power supplied from an external AC power supply and converts the reduced power into DC power. The power supply unit 520 then supplies the converted DC power to the drive unit 510 and the control unit 530. The power supply unit 520 and the control unit 530 are disposed inside the base 105. In FIG. 1, the robot controller 500 disposed inside the base 105 shows the power supply unit 520 and the control unit 530. In the embodiment, an example in which the robot 100 and the robot controller 500 are integrated will be described, but the robot controller 500 may also be disposed outside the robot 100. The present disclosure is also applicable to a configuration in which the robot 100 and the robot controller 500 are separate entities.
[0019] 2, the control unit 530 controls the driving unit 510 to operate the robot 100. The control unit 530 is a computer including a memory 531 and a CPU (Central Processing Unit) 532 as a processor. Various programs and data are stored in the memory 531. The CPU 532 executes the programs stored in the memory 531 to realize various functions of the control unit 530.
[0020] The control unit 530 controls the position of the control point of the robot 100 by changing the position and posture of the robot 100 via the drive unit 510. As a result, the end effector EE is placed at a specified position in three-dimensional space in a specified posture. The control point is a reference point in the robot coordinate system RC for controlling the robot 100. The control unit 530 controls the arm 120 and the end effector EE in accordance with an operation command received from the control device 700. The control device 700 is, for example, a programmable logic controller. The control device 700 transmits the operation command to the robot controller 500 at a predetermined time interval. The predetermined time interval is, for example, 100 milliseconds.
[0021] 3 is a block diagram showing the functional configuration of the control unit 530. The control unit 530 functions as a target position acquisition unit 541, a model storage unit 542, a calculation processing unit 543, and a drive control unit 544. The functions of the target position acquisition unit 541, the calculation processing unit 543, and the drive control unit 544 are realized by the CPU 532. The function of the model storage unit 542 is realized by the memory 531.
[0022] The target position acquisition unit 541 acquires the target position of the control point of the robot 100 based on the operation command supplied from the control device 700. The operation command supplied from the control device 700 includes at least position information indicating the destination position of the control point. The operation command may include speed information indicating the speed or acceleration in addition to the position information. The target position acquisition unit 541 calculates the target position of the control point in the robot coordinate system RC from the position information included in the operation command. The target position represents the position and orientation of the target control point. The position and orientation of the target control point are expressed as r = (x, y, z, u, v, w). (x, y, z) represent the coordinate values of the control point in the robot coordinate system RC. The components of (u, v, w) represent the angular position in rotation around the X-axis, the Z-axis, and the Y-axis, respectively, as the orientation of the control point. The target position acquisition unit 541 outputs the calculated target position of the control point to the calculation processing unit 543.
[0023] The model storage unit 542 stores information about the model of the robot 100. The information about the model is information that models the relationship between the links (arm elements) and joints (articulations) of the robot 100. The information about the model of the robot 100 takes into consideration the mechanism of the actual robot 100. The information about the model of the robot 100 is used in the calculation of true forward kinematics, which will be described later.
[0024] The calculation processing unit 543 performs processing to determine the joint angles of the joints J1 to J6 using the target positions acquired by the target position acquisition unit 541. The determined joint angles of the joints J1 to J6 represent the angular positions of the output shafts of the motors 131 corresponding to the joints J1 to J6. The calculation processing unit 543 outputs the determined joint angles of the joints J1 to J6 to the drive control unit 544.
[0025] When the joint angles of the joints J1 to J6 are output from the arithmetic processing unit 543, the drive control unit 544 drives the joints J1 to J6 by controlling the drive unit 510. Specifically, the drive control unit 544 performs feedback control to set the joint angles of the joints J1 to J6 to the joint angles calculated by the arithmetic processing unit 543.
[0026] The forward kinematics and inverse kinematics of a robot will be explained below. Hereinafter, the forward kinematics of a robot will be simply called forward kinematics, and the inverse kinematics of a robot will be simply called inverse kinematics.
[0027] Forward kinematics for a robot refers to a method for determining the position and orientation of a control point by providing the angles of each joint of the robot. The position and orientation of the control point are obtained by solving a forward kinematics problem. In this embodiment, the position and orientation of the control point are obtained as a solution to forward kinematics. As described above, the position and orientation of a control point are expressed using six parameters (x, y, z, u, v, w). A set of position and orientation parameters (x, y, z, u, v, w) is obtained by solving a forward kinematics problem by providing angle parameters (θ1, θ2, θ3, θ4, θ5, θ6) for each joint of the robot. Hereinafter, solving a forward kinematics problem may be referred to as "using forward kinematics."
[0028] Inverse kinematics of a robot refers to a method for determining the angle of each joint of a robot given the positions and orientations of the control points. The angles of each joint of the robot can be obtained by solving the inverse kinematics problem. In this embodiment, the angles of each joint of the robot are obtained as a solution to the inverse kinematics. By giving parameters (x, y, z, u, v, w) that represent the positions and orientations of the control points and solving the inverse kinematics problem, the parameters (θ1, θ2, θ3, θ4, θ5, θ6) that represent the angles of each joint can be obtained. Hereinafter, solving the inverse kinematics problem may be referred to as using inverse kinematics.
[0029] Generally, processing forward kinematics is easy, but processing inverse kinematics is extremely difficult to achieve. A solution for forward kinematics is basically uniquely obtained by sequentially calculating the movement of the origin of a coordinate system and the rotation of the coordinate system. On the other hand, to obtain a solution for inverse kinematics, it is necessary to solve a nonlinear simultaneous equation. Depending on the robot's link mechanism, a solution for inverse kinematics may or may not be obtainable through analytical calculation. If a solution cannot be obtained through analytical calculation, a solution must be obtained through calculation using an iterative method. An iterative method is a technique that uses repeated calculations. For industrial robots, link mechanisms that allow a solution to be obtained through analytical calculation are generally used.
[0030] However, due to factors such as deflection of the arm caused by the weight of the link (arm element), dimensional errors in the parts that make up the arm element, and the assembly accuracy of the parts, the relationship between the angle of each joint and the position and orientation of the control point may differ from what was assumed at the time of design. In this case, even if a link mechanism that allows a solution to be obtained through analytical calculation is adopted, a correct solution cannot be obtained. Therefore, if you want to further improve the accuracy of robot movement, calculations using an iterative method are required.
[0031] When using the iterative method, a solution can be found, for example, by the following procedure. Hereinafter, the kinematics in design will be referred to as nominal kinematics, and the kinematics that takes into account the actual robot mechanism will be referred to as true kinematics. The inverse kinematics in design will be referred to as nominal inverse kinematics, and the inverse kinematics that takes into account the actual robot mechanism will be referred to as true inverse kinematics.
[0032] (1) The target position r_target of the control point is accepted as input. (2) Set the initial values of the joint angles of the joints J1 to J6. From the target position r_target, the initial values of the joint angles are calculated analytically using nominal inverse kinematics. (3) Using information about the model of the robot 100, a temporary position r_temp is calculated from the joint angles θ1 to θ6 of the joints J1 to J6 by true forward kinematics. The initial values calculated in (2) are used as the joint angles θ1 to θ6 the first time. From the second time onwards, the joint angles calculated in (6) described below are used as the joint angles θ1 to θ6. (4) The errors Δθ1 to Δθ6 are estimated from the difference between the target position r_target and the tentative position r_temp. (5) It is determined whether each of the errors Δθ1 to Δθ6 is equal to or greater than a threshold value. (6) If the error is equal to or greater than the threshold, the joint angles θ1 to θ6 are updated by adding the errors δθ1 to δθ6 to the joint angles θ1 to θ6. Then, the process from (3) onwards is executed again. (7) If the errors Δθ1 to Δθ6 are less than the threshold value, it is determined that the processing termination condition is met, and the joint angles θ1 to θ6 are output as solutions.
[0033] When a single target position r_target is given, it is expected that the above steps (3) to (7) will be repeated two or more times before a solution is obtained, which may result in a long time until a solution is obtained.
[0034] In this embodiment, if a target position r_target is given from a motion command received at time t_n and the joint angles θ1 to θ6 have been determined at time t_n-1, which is before time t_n, then when setting the initial values of each joint angle in (2), the process of calculating the initial values of each joint angle from the target position r_target using nominal inverse kinematics is not performed. As will be described later, when setting the initial values of each joint angle in (2), the initial values of each joint angle are calculated using a target position based on a motion command received at time t_n-1, which is before time t_n. In the cycle in which the control device 700 transmits motion commands, time t_n-1 and time t_n are consecutive. In other words, the control device 700 transmits motion commands for each preset time interval. Time t_n-1 represents the division of one time interval, and time t_n represents the division of another time interval that is consecutive to the one time interval. Time t_n-1 is also referred to as the "first time" and time t_n is also referred to as the "second time."
[0035] Fig. 4 is a flowchart showing a series of processes for finding a solution by the arithmetic processing unit 543. The process shown in Fig. 4 is started every time a target position is output from the target position acquisition unit 541. In other words, the process shown in Fig. 4 is started every time the robot controller 500 receives an operation command from the control device 700.
[0036] In step S101, the calculation processing unit 543 acquires the target position r_target as input from the target position acquisition unit 541. The target position r_target is acquired based on the operation command received at time t_n. Here, the target position r_target acquired based on the operation command at time t_n is acquired. The target position r_target is expressed as r_target=(x1, y1, z1, u1, v1, w1).
[0037] In step S102, the arithmetic processing unit 543 determines whether or not a process for determining the joint angles of the joints J1 to J6 based on the most recently received motion command is being executed. For example, if the memory 531 stores the joint angles of the most recently received motion command together with the reception time of the most recently received motion command, the arithmetic processing unit 543 determines that a process for determining the joint angles of the joints J1 to J6 using the most recently received motion command is being executed. If a process for determining the joint angles of the joints J1 to J6 using the most recently received motion command is not being executed (step S102; NO), the process of step S103 is executed. If a process for determining the joint angles of the joints J1 to J6 using the most recently received motion command is being executed (step S102; YES), the process of step S120 is executed.
[0038] In step S103, the calculation processing unit 543 calculates the initial values of the joint angles of the joints J1 to J6 from the target position r_target using nominal inverse kinematics. The joint angles of the joints J1 to J6 calculated using nominal inverse kinematics are designated as joint angles θideal1 to θideal6. The calculation processing unit 543 stores the joint angles θideal1 to θideal6 in the memory 531 together with the time at which the movement command was received. If the movement command that is the basis of the target position r_target is received at time t_n, then time t_n is the time at which the movement command was received.
[0039] In step S105, the calculation processing unit 543 calculates a tentative position r_temp using the joint angles θ1 to θ6 of the joints J1 to J6 using true forward kinematics. When step S105 is executed for the first time, the initial values of the joint angles of the joints J1 to J6 (joint angles θideal1 to θideal6) calculated in step S103 are used as the joint angles θ1 to θ6 of the joints J1 to J6. The tentative position r_temp is expressed as r_temp=(x2, y2, z2, u2, v2, w2).
[0040] In step S107, the calculation processing unit 543 estimates the errors Δθ1 to Δθ6 of the joint angles θ1 to θ6 of the joints J1 to J6 from the difference between the target position r_target and the temporary position r_temp.
[0041] Here, the processing content of step S107 will be described. First, since the target position r_target and the tentative position r_temp represent the position and posture, and the errors δθ1 to δθ6 of the joint angles θ1 to θ6 represent the joint angles, the joint angles corresponding to the target position r_target and the tentative position r_temp are derived. For example, the joint angles corresponding to the target position r_target and the tentative position r_temp can be derived using nominal inverse kinematics. Next, the difference values between the joint angles corresponding to the target position r_target and the joint angles corresponding to the tentative position r_temp can be estimated as the errors δθ1 to δθ6.
[0042] Alternatively, instead of the above method, a method may be adopted in which a Jacobian is calculated based on the joint angles θ1 to θ6 to approximate the relationship between the small changes in joint angles δθ1 to δθ6 and the small changes in position and posture δr (=[δx, δy, δz, δu, δv, δw]), and the errors δθ1 to δθ6 of the joint angles θ1 to θ6 are estimated by multiplying the difference between the target position r_target and the tentative position r_temp by the inverse matrix of the Jacobian.
[0043] These methods corresponding to the processing content of step S107 described above include estimation errors as calculation results, so it is preferable to perform processing to improve accuracy by an iterative method.
[0044] In step S109, the calculation processing unit 543 determines whether or not the optimum solution has been converged on, based on the errors Δθ1 to Δθ6. Specifically, the calculation processing unit 543 determines that the optimum solution has been converged on when all of the errors Δθ1 to Δθ6 are less than a predetermined threshold Th. Convergence on the optimum solution means that the angles of each joint have been determined. If the optimum solution has not been converged on (step S109; NO), the process of step S113 is executed again. If the optimum solution has been converged on (step S109; YES), the process of step S111 is executed.
[0045] In step S113, the calculation processing unit 543 updates the joint angles θ1 to θ6 of the joints J1 to J6. Specifically, the calculation processing unit 543 obtains new joint angles θ1 to θ6 by adding the errors Δθ1 to Δθ6 to the current joint angles θ1 to θ6, respectively. Then, the processing from step S105 onwards is executed again.
[0046] In step S111, the calculation processing unit 543 outputs the solution to the drive control unit 544. The solution represents the joint angles of the joints J1 to J6 at time t_n. The joint angles of the joints J1 to J6 at time t_n represented by the solution are also referred to as "second joint angles." Furthermore, the calculation processing unit 543 stores each joint angle together with the time at which the movement command was received in the memory 531. Thereafter, the processing shown in FIG. 4 ends.
[0047] Also, in step S102, if it is determined that the calculation processing unit 543 is executing a process of determining the joint angles of each of the joints J1 to J6 using the operation command received immediately before (step S102; YES), step S120 is executed.
[0048] In step S120, the calculation processing unit 543 calculates the initial values of the joint angles of the joints J1 to J6 using the joint angles determined based on the motion command at time t_n-1, which is before time t_n.
[0049] First, the calculation processing unit 543 reads out from the memory 531 the joint angles θideal1 to θideal6 of the joints J1 to J6 that are based on the target position r_target determined using the movement command received at time t_n-1. Hereinafter, the joint angles that are the initial values of the joint angles of the joints J1 to J6 based on the movement command received at time t_n-1 will be referred to as joint angles θideal1(t_n-1) to θideal6(t_n-1). Furthermore, the calculation processing unit 543 reads out from the memory 531 the joint angles θ1 to θ6 of the joints J1 to J6 that are finally determined based on the movement command received at time t_n-1. Hereinafter, the joint angles of the joints J1 to J6 that are finally determined based on the movement command received at time t_n-1 will be referred to as joint angles θtarget1(t_n-1) to θtarget6(t_n-1). The process of calculating and outputting joint angles θtarget1(t_n-1) to θtarget6(t_n-1) is also called the "first process." Joint angles θtarget1(t_n-1) to θtarget6(t_n-1) are also called the "first joint angles." Joint angles θideal1(t_n-1) to θideal6(t_n-1) are also called the "first virtual joint angles."
[0050] Fig. 5 is an explanatory diagram of the processing in step S120. In Fig. 5, a function that takes a target position as an input and outputs a joint angle using nominal inverse kinematics is shown as f_ideal_inv(r(t)). Also, a function that takes a target position as an input and outputs a joint angle using true inverse kinematics is shown as f_real_inv(r(t)).
[0051] The calculation processing unit 543 calculates Δθ(t_n-1), which is the difference between the joint angle θtarget1(t_n-1) and the joint angle θideal1(t_n-1), for the joint J1. The calculation processing unit 543 calculates the joint angle of the joint J1 using nominal inverse kinematics (design inverse kinematics) from the target position r_target based on the movement command received at time t_n. The calculated joint angle is represented as the joint angle θideal(t_n). The joint angle θideal(t_n) is also referred to as the "second temporary joint angle." The calculation processing unit 543 calculates the initial value θ0(t_n) of the joint angle of the joint J1 by adding Δθ(t_n-1) to the joint angle θideal(t_n). The calculated initial value θ0(t_n) is used in the processing of step S105 shown in FIG. 4. The process of outputting the joint angle (second joint angle) at time t_n by an iterative method using the initial value θ0(t_n) set using the joint angles θtarget1(t_n-1) to θtarget6(t_n-1) (first joint angles) output in the process of determining and outputting joint angles θtarget1(t_n-1) to θtarget6(t_n-1) (first joint angles) is also referred to as the "second process." θtarget1(t_n) shown in FIG. 5 represents the joint angle of joint J1 that is finally determined by converging to the optimal solution. The calculation processing unit 543 similarly determines initial values for joints J2 to J6. In this way, in step S120, the initial values of each of joints J1 to J6 are determined.
[0052] According to this embodiment, the joint angles determined using the motion command received at time t_n-1, which is earlier than time t_n, are used as initial values in the iterative method for outputting the joint angles at time t_n, so it is believed that the amount of calculation required until a solution converges can be reduced compared to a method in which initial values are set based on motion commands, thereby shortening the time required to obtain joint angular velocity commands.
[0053] Furthermore, time t_n-1 and time t_n are consecutive. Therefore, it is considered that the position and posture of the robot 100 indicated by the motion command specified at time t_n-1 are close to the position and posture of the robot 100 indicated by the motion command specified at time t_n. Therefore, it is considered that the amount of calculation required to converge to an optimal solution can be reduced by using the above-described method. Therefore, it is possible to shorten the time required to obtain joint angular velocity commands.
[0054] B. Other Embodiments: B1. Alternative Embodiment 1: In the above embodiment, an example has been described in which the initial value of a joint angle is calculated using a joint angle determined based on the most recently received motion command (see step S120 in FIG. 2).
[0055] For example, the initial values of the joint angles may be obtained using the joint angles determined based on the movement command at time t_n-1 and the joint angles determined based on the movement command at time t_n-2. Time t_n-2 is a time before time t_n-1 and time t_n. In the cycle in which the control device 700 transmits movement commands, time t_n-2 and time t_n-1 are consecutive. Time t_n-2 is also referred to as the "third time." The joint angles of the joints J1 to J6 finally determined based on the movement command received at time t_n-1 are represented as joint angles θtarget1(t_n-1) to θtarget6(t_n-1). The joint angles of the joints J1 to J6 finally determined based on the movement command received at time t_n-2 are represented as joint angles θtarget1(t_n-2) to θtarget6(t_n-2). The joint angles θtarget1(t_n-2) to θtarget6(t_n-2) are also called the "third joint angles."
[0056] For example, the calculation processing unit 543 calculates Δθ(t_n-1), which is the difference between the joint angle θtarget1(t_n-1) and the joint angle θideal1(t_n-1), for the joint J1. Furthermore, the calculation processing unit 543 calculates Δθ(t_n-2), which is the difference between the joint angle θtarget1(t_n-2) and the joint angle θideal1(t_n-2), for the joint J1. The calculation processing unit 543 calculates the average of Δθ(t_n-1) and Δθ(t_n-2) as Δθavg. The calculation processing unit 543 calculates the joint angle of the joint J1 using nominal inverse kinematics from the target position r_target based on the movement command received at time t_n. The calculated joint angle is represented as the joint angle θideal(t_n). The calculation processing unit 543 calculates the initial value of the joint angle of the joint J1 by adding Δθavg to the joint angle θideal(t_n). The same applies to the joints J2 to J6.
[0057] Furthermore, for example, the calculation processing unit 543 may obtain a weighted average of Δθ(t_n-2) and Δθ(t_n-1) as Δθavg. In this case, a coefficient may be used that increases the weight of Δθ(t_n-1) for time t_n-1, which is closer to time t_n. The same applies to the joints J2 to J6.
[0058] B2. Alternative Embodiment 2: When the positions and postures indicated by the motion command received at time t_n-1 and the motion command received at time t_n are similar, a method capable of reducing the amount of calculations may be used (see step S120 in FIG. 4), as described in the embodiment. On the other hand, when the position and posture of the robot 100 indicated by the motion command specified at time t_n-1 are not close to the position of the robot 100 indicated by the motion command specified at time t_n, the initial values may be calculated using nominal inverse kinematics (see step S103 in FIG. 4). This is thought to reduce the amount of calculations and to suppress a decrease in the estimation accuracy of the joint angles to be determined.
[0059] If the difference in distance between the position indicated by the motion command received at time t_n and the position indicated by the motion command received at time t_n-1 is equal to or smaller than a predetermined threshold, the joint angle determined using the motion command received at time t_n-1, which is before time t_n, may be used as the initial value used in the iterative method for outputting the joint angle at time t_n. Specifically, it is determined whether the difference between the Euclidean distance calculated from the coordinate values (x, y, z) of the control point indicated by the motion command received at time t_n-1 and the coordinate values (x, y, z) of the control point indicated by the motion command received at time t_n is equal to or smaller than a predetermined threshold.
[0060] Furthermore, when the posture indicated by the motion command received at time t_n and the posture indicated by the motion command received at time t_n-1 are similar, the joint angle determined using the motion command received at time t_n-1, which is prior to time t_n, may be used as the initial value used in the iterative method for outputting the joint angle at time t_n. Specifically, a difference in rotation is calculated from a quaternion representing the posture (u, v, w) of the control point indicated by the motion command received at time t_n-1 and a quaternion representing the posture (u, v, w) of the control point indicated by the motion command received at time t_n, and it is determined whether the calculated difference is equal to or smaller than a predetermined threshold.
[0061] If either the position or the orientation, or both the position and the orientation, are similar, the joint angles determined using the motion command received at time t_n-1, which is earlier than time t_n, are used as the initial values used in the iterative method for outputting the joint angles at time t_n, thereby reducing the amount of calculation and shortening the time required to obtain the joint angular velocity commands.
[0062] In the embodiment, an example has been described in which the robot 100 is a six-axis robot, but the number of joints of the robot 100 is not limited to six. The robot 100 may also be a horizontal articulated robot.
[0063] Alternatively, the initial values may be determined by referring to a log of joint angles when the robot 100 has previously operated near the target position.
[0064] In the embodiment, an example has been described in which the robot controller 500 receives an operation command from the control device 700, but the configuration is not limited to this. For example, the robot controller 500 may be configured to hold teaching data taught by a user and to determine the target position of the control point in the robot coordinate system RC based on the teaching data. In this case, the robot controller 500 may be connected to a teaching device for carrying out the teaching.
[0065] The present disclosure is not limited to the above-described embodiments and can be realized in various configurations without departing from the spirit thereof. For example, the technical features in the embodiments corresponding to the technical features in each aspect described in the Summary of the Invention section can be appropriately replaced or combined to solve some or all of the above-described problems or achieve some or all of the above-described effects. Furthermore, if a technical feature is not described as essential in this specification, it can be appropriately deleted.
[0066] C. Other forms: (1) According to one aspect of the present disclosure, there is provided a method for controlling the operation of a multi-joint robot, the method including: a first step of outputting, for at least one joint, a first joint angle that is a joint angle at a first time; and a second step of outputting, for the at least one joint, a second joint angle that is the joint angle at a second time after the first time, by an iterative method using an initial value set using the first joint angle output in the first step. According to the above aspect, the first joint angle at the first time point before the second time point is used as the initial value used in the iterative method for outputting the second joint angle at the second time point, so it is considered that the amount of calculation required until the solution converges can be reduced in the iterative method compared to a method in which repeated calculations are performed until the solution converges, and therefore the time required to obtain the joint angular velocity command can be shortened. (2) In the method of the above aspect, in the second step, the initial value may be set by adding a difference between a first temporary joint angle obtained by solving design inverse kinematics for the at least one joint as the joint angle at the first time and the first joint angle output in the first step to a second temporary joint angle obtained by solving design inverse kinematics for the at least one joint as the joint angle at the second time. (3) In the method of the above aspect, the robot may be controlled for a plurality of consecutive time intervals, the first time representing a division of one of the time intervals, and the second time representing a division of another of the time intervals that is consecutive to the one of the time intervals. The robot's position and posture specified by successive motion commands are likely to be close to each other. This makes it possible to reduce the amount of calculation required to converge to an optimal solution while suppressing a decrease in the accuracy of the joint angle estimation. (4) In the method of the above aspect, the second step may be executed when a difference in distance between the target position at the second time and the target position at the first time is equal to or less than a predetermined threshold value. (5) In the method of the above aspect, the method may further include a third step of outputting a third joint angle for at least one of the joints, the third joint angle being the joint angle at a third time before the first time, and in the second step, the initial value may be set using the first joint angle and the third joint angle to output the second joint angle. (6) According to another aspect of the present disclosure, there is provided a control system for controlling an articulated robot, the control system executing a first process for outputting a first joint angle, which is a joint angle at a first time, for at least one joint of the articulated robot, and a second process for outputting a second joint angle, which is the joint angle at a second time after the first time, for the at least one joint, by an iterative method using an initial value set using the first joint angle output in the first process. According to the above aspect, the first joint angle at the first time point before the second time point is used as the initial value used in the iterative method for outputting the second joint angle at the second time point, so it is considered that the amount of calculation required until the solution converges can be reduced in the iterative method compared to a method in which repeated calculations are performed until the solution converges, and therefore the time required to obtain the joint angular velocity command can be shortened. [Explanation of symbols]
[0067] θ1 to θ6... joint angles, δθ1 to δθ6... errors, 10... robot system, 20... arm, 100... robot, 105... base, 120... arm, 120e... arm end, 130... drive mechanism, 131... motor, 132... reducer, 133... angle sensor, 140... force sensor, 500... robot controller, 510... drive unit, 515... motor driver, 520... power supply unit, 530... control unit, 531... memory, 532... C PU, 541...target position acquisition unit, 542...model storage unit, 543...arithmetic processing unit, 544...drive control unit, 700...control device, EE...end effector, J1 to J6...joints, RC...robot coordinate system, RX, RY, RZ...angular position, θtarget1 to θtarget6...joint angles, θideal1 to θideal6...joint angles, r_target...target position, r_temp...temporary position, t_n...time, t_n-1...time, t_n-2...time
Claims
1. A method for controlling the movement of an articulated robot, comprising: a first step of outputting a first joint angle, which is a joint angle at a first time, for at least one joint; a second step of outputting a second joint angle, which is the joint angle at a second time point after the first time point, for the at least one joint by an iterative method using an initial value set using the first joint angle output in the first step; Including, method.
2. 10. The method of claim 1, In the second step, the initial value is set by adding a difference between a first temporary joint angle obtained by solving inverse kinematics on design for the at least one joint as the joint angle at the first time and the first joint angle output in the first step to a second temporary joint angle obtained by solving inverse kinematics on design for the at least one joint as the joint angle at the second time. method.
3. 3. The method of claim 2, the robot is controlled for each of a plurality of consecutive time intervals; the first time represents a boundary of one of the time periods; the second time represents a boundary between the other time intervals that are consecutive to one of the time intervals; method.
4. 3. The method of claim 2, the second step is executed when a difference in distance between the target position at the second time and the target position at the first time is equal to or smaller than a predetermined threshold value. method.
5. 5. The method of claim 4, a third step of outputting a third joint angle, which is the joint angle at a third time before the first time, for the at least one joint; In the second step, the initial value is set using the first joint angle and the third joint angle to output the second joint angle. method.
6. A control system for controlling an articulated robot, comprising: a first process for outputting a first joint angle, which is a joint angle at a first time, for at least one joint of the articulated robot; a second process for outputting a second joint angle by an iterative method using an initial value set using the first joint angle output in the first process, in order to output a second joint angle, which is the joint angle at a second time point that is later than the first time point, for the at least one joint; To execute Control system.
Citation Information
Patent Citations
Robot system, robot control device, and robot system control method
WO2013183190A1