Multi-joint robot control method, teaching method for the same and robot system
By fixing joints at singularities during inverse kinematics calculations, the computational load and control time for articulated robots are reduced, ensuring efficient operation.
Patent Information
- Application Number
- JP2023110565
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-07-05
- Publication Date
- 2025-01-20
AI Technical Summary
Conventional control methods for articulated robots with seven or more degrees of freedom require significant computational load and time due to the need to recalculate the Jacobian matrix at singular points, leading to increased control time.
Perform inverse kinematics calculations by fixing at least one joint involved in a singularity as a fixed joint, allowing the calculation of joint values without displacing these joints, thereby reducing the computational burden.
This approach reduces the computational load and control time by minimizing the number of joints that need to be recalculated, maintaining efficient robot operation while avoiding singularities.
Smart Images

Figure 2025008408000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to a control method for an articulated robot, a teaching method for an articulated robot, and a robot system. [Background technology]
[0002] Articulated robots with six degrees of freedom are known as robots that perform the same movements as humans. In recent years, articulated robots with seven or more degrees of freedom, which are created by adding redundant degrees of freedom to the six degrees of freedom, have been researched. Articulated robots are controlled to avoid singular points. Patent Document 1 discloses a control method for a six-axis articulated robot in which, when an infinite number of singular points are detected in the values of two predetermined joint axes, the joint axis at the base of the two predetermined joint axes is fixed at the speed immediately before the singular point is detected, and the position and orientation are controlled by the other joints. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Publication No. 62-189504 Summary of the Invention [Problem to be solved by the invention]
[0004] However, in the above-mentioned conventional control method, for example, when performing an inverse kinematic calculation to obtain the displacement amount of each joint from the position and posture of the robot, every time a singular point is detected, it is necessary to create a Jacobian matrix again to calculate the displacement amount of other joints than the specific joint. Therefore, in the conventional control method, the amount of calculation required to calculate the value of each joint increases. In this way, in the conventional control method, the load when controlling the robot increases, and the control time when controlling the robot increases. [Means for solving the problem]
[0005] A control method for a multi-joint robot according to a preferred embodiment of the present invention is a control method for a multi-joint robot having seven or more joints, which calculates joint values of the multiple joints to bring the tip of the multi-joint robot to a desired position and posture by executing a calculation process including an inverse kinematics calculation to calculate the displacement amount of the multiple joints, and operates the multi-joint robot.When it is detected that the posture of the multi-joint robot during operation is near a singularity, a fixing process is executed to set at least one of the multiple joints involved in the singularity as a fixed joint, and then the inverse kinematics calculation is executed, so that in the calculation process, the joint values of the multiple joints are calculated without substantially displacing the joint values of the fixed joints, and the operation of the multi-joint robot is controlled based on the joint values of the multiple joints calculated in the calculation process.
[0006] A preferred embodiment of the present invention provides a method for teaching a multi-joint robot having seven or more joints, which teaches the multi-joint robot a plurality of teaching points by performing a calculation process including an inverse kinematics calculation to calculate the displacement amounts of the plurality of joints with respect to the position and posture of the tip of the multi-joint robot specified at each of a plurality of teaching points, and calculating joint values of the plurality of joints. In this method, when it is detected that the posture of the multi-joint robot during teaching is in the vicinity of a singular point, a fixing process is performed to set at least one of the plurality of joints involved in the singular point as a fixed joint, and then the inverse kinematics calculation is performed, thereby calculating the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joints, and teaching the multi-joint robot a teaching point based on the joint values of the plurality of joints calculated in the calculation process.
[0007] A robot system according to a preferred embodiment of the present invention comprises a multi-joint robot having seven or more joints, and a control device that controls the operation of the multi-joint robot, wherein the control device executes a calculation process including an inverse kinematics calculation that calculates the displacement amounts of the multiple joints that operate the multi-joint robot, thereby calculating joint values of the multiple joints for bringing the tip of the multi-joint robot into a desired position and posture, and when it is detected that the posture during operation of the multi-joint robot is near a singularity, executes a fixing process that sets at least one of the multiple joints involved in the singularity to a fixed joint, and then executes the inverse kinematics calculation, thereby calculating the joint values of the multiple joints in the calculation process without substantially displacing the joint values of the fixed joints, and controls the operation of the multi-joint robot based on the joint values of the multiple joints calculated in the calculation process. Effect of the Invention
[0008] According to the present invention, it is possible to suppress an increase in control time when controlling a robot. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 is an explanatory diagram for explaining an overview of a robot system according to an embodiment. [Diagram 2] FIG. 2 is an explanatory diagram for explaining an example of a joint mechanism. [Diagram 3] 2 is a diagram illustrating an example of a hardware configuration of a robot controller illustrated in FIG. 1. [Figure 4] FIG. 11 is an explanatory diagram for explaining an example of a singular point of a robot. [Diagram 5] 2 is a flowchart showing an example of the operation of the robot controller shown in FIG. 1. [Figure 6] 6 is a flowchart showing an example of a joint value initial update process shown in FIG. 5. [Figure 7] 6 is a flowchart showing an example of a joint value update process shown in FIG. 5. [Figure 8]13 is a flowchart showing another example of the operation of the robot controller. [Figure 9] 9 is a flowchart showing an example of a joint value update process shown in FIG. 8. [Figure 10] FIG. 11 is an explanatory diagram for explaining a trajectory to be taught to a robot. [Figure 11] 11 is an explanatory diagram for explaining an example of the operation of the robot system when teaching the robot an operation for making the tip portion pass through a target trajectory. FIG. [Figure 12] 13 is an explanatory diagram for explaining another example of the operation of the robot system when teaching the robot an operation for making the tip portion pass through a target trajectory. FIG. [Figure 13] 13 is an explanatory diagram for explaining another example of the operation of the robot system when teaching the robot an operation for making the tip portion pass through a target trajectory. FIG. [Figure 14] FIG. 11 is an explanatory view for explaining an example of a tip portion according to a first modified example. [Figure 15] FIG. 11 is an explanatory diagram for explaining an example of turning. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Hereinafter, the embodiments of the present invention will be described with reference to the drawings. In each drawing, the dimensions and scale of each part are appropriately different from the actual ones. In addition, the embodiments described below are preferred examples of the present invention, and therefore various technically preferable limitations are applied, but the scope of the present invention is not limited to these embodiments unless otherwise specified in the following description to the effect that the present invention is limited.
[0011] [1. Embodiment] First, an example of an overview of a robot system 1 according to an embodiment will be described with reference to FIG.
[0012] FIG. 1 is an explanatory diagram for explaining an overview of a robot system 1 according to an embodiment.
[0013] For ease of explanation, a reference coordinate system Σ0 fixed in real space is introduced as a base coordinate system of the robot 10. For example, the reference coordinate system Σ0 is a three-axis Cartesian coordinate system having an origin at the center of a bottom surface BDPbt of the robot 10 described later, and having an X0 axis, a Y0 axis, and a 0Z axis that are mutually orthogonal. In this embodiment, it is assumed that the reference coordinate system Σ0 and coordinate systems Σ1 to Σ8 shown in FIG. 4 described later are right-handed coordinate systems.
[0014] The robot system 1 includes, for example, a robot 10, an end effector 20 that is detachably attached to the robot 10, and a robot controller 30 that controls the operations of the robot 10 and the end effector 20. The robot 10 is an example of a "multi-joint robot," and the robot controller 30 is an example of a "control device."
[0015] The robot 10 and the robot controller 30 are connected to each other so as to be able to communicate with each other, for example, by a wired connection. The connection between the robot 10 and the robot controller 30 may be a wireless connection, or a connection using both a wired and wireless connection. The robot controller 30 is capable of communicating with the end effector 20 attached to the robot 10. The robot controller 30 may be any information processing device capable of communicating with other devices. The configuration of the robot controller 30 will be described later with reference to FIG. 3.
[0016] The robot 10 is an articulated robot used for work in, for example, farms, factories, warehouses, etc. Specifically, the robot 10 is an eight-axis articulated robot in which two joint mechanisms JEp (JEp1 and JEp2) corresponding to linear joints are added to a six-axis articulated robot having six joint mechanisms JEr (JEr1, JEr2, JEr3, JEr4, JEr5, and JEr6) corresponding to rotary joints. For example, the robot 10 has six joint mechanisms JEr, two joint mechanisms JEp, a body part BDP, two links LK (LK1 and LK2), and a tip part TP1. In the example shown in FIG. 1, the joint mechanism JEr1 is included in the body part BDP, and the joint mechanisms JEr5 and JEr6 are included in the tip part TP1. The joint mechanism JEp1 is provided in the link LK1, and the joint mechanism JEp2 is provided in the link LK2. Hereinafter, the joint mechanisms JEr and JEp are also referred to as the joint mechanism JE without any particular distinction. For example, the robot 10 further includes a plurality of motors MO (see FIG. 2) that drive the plurality of joint mechanisms JE. In FIG. 1, in order to make the drawing easier to see, the motors MO that drive the plurality of joint mechanisms JE, the reducers and encoders provided in each of the plurality of motors MO, and the like are omitted. The plurality of joint mechanisms JE are an example of a "plurality of joints."
[0017] The body part BDP includes, for example, a base part BDPba fixed to a predetermined place such as a floor, and a joint mechanism JEr1 connected to the joint mechanism JEr2. Here, for example, the connection of the members includes both the case where two members are directly connected and the case where two members are indirectly connected. The direct connection of two members includes a state where the two members are in contact with each other, and a state that can be regarded as the same as the state where the two members are in contact with each other. The state that can be regarded as the same as the state where the two members are in contact with each other is, for example, a state where one of the two members is fixed to the other by an adhesive or the like. Moreover, the indirect connection of two members means that another member is disposed between the two members.
[0018] The joint mechanism JEr1 rotates a part of the body part BDP around an axis Ax1 perpendicular to the bottom surface BDPbt of the body part BDP. For example, the joint mechanism JEr1 rotates an outer wall of the joint mechanism JEr1, including a part connected to the joint mechanism JEr2, relative to the base part BDPba around the axis Ax1 as a rotation axis. That is, the joint mechanism JEr1 rotates the joint mechanism JEr2 relative to the body part BDP around the axis Ax1 as a rotation axis. The rotation direction Dr1 in FIG. 1 indicates the rotation direction of a part of the body part BDP when the part of the body part BDP rotates around the axis Ax1 as a rotation axis.
[0019] Here, "perpendicular" includes not only strict perpendicular but also substantial perpendicular (e.g., perpendicular within a margin of error). Similarly, "parallel" described below includes not only strict parallel but also substantial parallel (e.g., parallel within a margin of error).
[0020] The joint mechanism JEr2 connects the body part BDP and the link LK1, and rotates the link LK1 relative to the body part BDP about an axis Ax2 parallel to the bottom surface BDPbt of the body part BDP. The rotation direction Dr2 in FIG. 1 indicates the rotation direction of the link LK1 when the link LK1 rotates about the axis Ax2.
[0021] The link LK1 is, for example, hollow and elongated, and has an opening Hlk1 extending in a direction De1 along which the link LK1 extends.
[0022] The opening Hlk1 is formed, for example, in a surface of the link LK1 that includes a portion facing the link LK2. A part of the joint mechanism JEr3 and the joint mechanism JEp1 are provided inside the link LK1. For example, a part of the joint mechanism JEr3 is located inside the link LK1, and the other part of the joint mechanism JEr3 protrudes from the opening Hlk1 to the outside of the link LK1. Note that the part of the joint mechanism JEr3 protruding outside the link LK1 or a part of the part protruding outside the link LK1 passes through an opening Hlk2 of the link LK2 described later and is located inside the link LK2.
[0023] The link LK1 rotates relative to the body part BDP about an axis Ax1 as a rotation axis by the joint mechanism JEr1, and rotates relative to the body part BDP about an axis Ax2 as a rotation axis by the joint mechanism JEr2.
[0024] The joint mechanism JEr3 connects the link LK1 and the link LK2, and rotates the link LK2 relative to the link LK1 about an axis Ax3 perpendicular to the direction De1 in which the link LK1 extends. The rotation direction Dr3 in FIG. 1 indicates the rotation direction of the link LK2 when the link LK2 rotates about the axis Ax3.
[0025] The joint mechanism JEp1 moves the joint mechanism JEr3 relative to the link LK1 along the direction De1. When the joint mechanism JEr3 moves along the direction De1, the link LK2 moves relative to the link LK1 along the direction De1. In the example shown in FIG. 1, when the joint mechanism JEp1 moves the joint mechanism JEr3 along the direction De1, the opening Hlk1 of the link LK1 corresponds to the movement area ARmv1 in which the joint mechanism JEr3 can move.
[0026] The link LK2 is, for example, hollow and elongated. The link LK2 has an opening Hlk2 extending in the direction De2 along which the link LK2 extends.
[0027] The opening Hlk2 is formed, for example, in a surface of the link LK2 that includes a portion facing the link LK1. A part of the joint mechanism JEr3 and the joint mechanism JEp2 are provided inside the link LK2. For example, a part of the joint mechanism JEr3 is located inside the link LK2, and the other part of the joint mechanism JEr3 protrudes from the opening Hlk2 to the outside of the link LK2.
[0028] The joint mechanism JEp2 moves the link LK2 relative to the joint mechanism JEr3 along the direction De2 in which the link LK2 extends. As a result, the link LK2 moves relative to the joint mechanism JEr3 along the direction De2. That is, the link LK2 moves relative to the link LK1 along the direction De2.
[0029] In this way, the link LK2 moves relative to the link LK1 along the direction De1 by the joint mechanism JEp1, and moves relative to the link LK1 along the direction De2 by the joint mechanism JEp2.
[0030] Here, the movement of the link LK2 relative to the joint mechanism JEr3 can be said to be the movement of the joint mechanism JEr3 relative to the link LK2. Therefore, the joint mechanism JEp2 can be regarded as a joint mechanism JE that moves the joint mechanism JEr3 relative to the link LK2 along the direction De2. In the example shown in FIG. 1, when the joint mechanism JEp2 moves the joint mechanism JEr3 along the direction De2, the opening Hlk2 of the link LK2 corresponds to the movable movement area ARmv2 of the joint mechanism JEr3.
[0031] The joint mechanism JEr4 connects the link LK2 and the tip part TP1, and rotates the tip part TP1 relative to the link LK2 around an axis Ax4 perpendicular to the direction De2. The rotation direction Dr4 in FIG. 1 indicates the rotation direction of the tip part TP1 when the tip part TP1 rotates around the axis Ax4.
[0032] For example, an end effector 20 that grips an article is attached to the tip part TP1. For example, the end effector 20 is attached to an end face TP1sf of the tip part TP1. The tip part TP1 includes a first part TP11 connected to the link LK2, a second part TP12 connected to the first part TP11, a joint mechanism JEr5, and a joint mechanism JEr6. The first part TP11 is connected to the link LK2 via, for example, a joint mechanism JEr4. Therefore, the first part TP11 rotates relative to the link LK2 around the axis Ax4 as a rotation axis.
[0033] The joint mechanism JEr5 connects the first part TP11 and the second part TP12, and rotates the second part TP12 relative to the first part TP11 around an axis Ax5 perpendicular to the axis Ax4. A rotation direction Dr5 in FIG. 1 indicates the rotation direction of the second part TP12 when the second part TP12 rotates around the axis Ax5.
[0034] The joint mechanism JEr6 rotates at least a part of the tip part TP1 around an axis Ax6 perpendicular to the axis Ax5. In the example shown in Fig. 1, the joint mechanism JEr6 rotates the end face TP1sf of the tip part TP1 around the axis Ax6. That is, the joint mechanism JEr6 rotates a part (end face TP1sf) of the tip part TP1 to which the end effector 20 is attached around the axis Ax6. The rotation direction Dr6 in Fig. 1 indicates the rotation direction of the end face TP1sf when the end face TP1sf rotates around the axis Ax6.
[0035] 1, the surface of the joint mechanism JEr6 corresponds to the end surface TP1sf. In a configuration in which the joint mechanism JEr6 is included in the second part TP12, the end surface of the second part TP12 may be the end surface TP1sf.
[0036] Furthermore, the work performed by the end effector 20 is not limited to gripping an object. As the end effector 20, an appropriate part (e.g., a robot hand, a robot finger, etc.) can be applied depending on the work purpose of the robot 10. That is, an end effector 20 suitable for various works is attached to the tip portion TP1.
[0037] In this embodiment, a rotation about an axis whose angle with a specific direction is greater than a predetermined angle is sometimes referred to as a "turn" to distinguish it from a rotation about an axis whose angle with a specific direction is equal to or smaller than the predetermined angle. The predetermined angle may be, for example, 45°. Note that the predetermined angle is not limited to 45°.
[0038] For example, in the rotation about each of the axes Ax1 and Ax2 as the rotation axis, the direction Dv1 perpendicular to the bottom surface BDPbt of the body part BDP corresponds to the specific direction. In this case, the axis Ax1 corresponds to an axis whose angle with the direction Dv1 perpendicular to the bottom surface BDPbt of the body part BDP is equal to or smaller than a predetermined angle, and the axis Ax2 corresponds to an axis whose angle with the direction Dv1 is greater than a predetermined angle. Therefore, the rotation of the link LK1 about the axis Ax2 as the rotation axis corresponds to a turn. Note that in this embodiment, since the body part BDP extends along the direction Dv1 perpendicular to the bottom surface BDPbt, the direction Deb in which the body part BDP extends may be the specific direction.
[0039] In addition, in the rotation about the axis Ax3, the direction De1 in which the link LK1 extends corresponds to a specific direction, and in the rotation about the axis Ax4, the direction De2 in which the link LK2 extends corresponds to a specific direction. In this case, the axis Ax3 corresponds to an axis that forms an angle with the direction De1 in which the link LK1 extends that is larger than a predetermined angle, and the axis Ax4 corresponds to an axis that forms an angle with the direction De2 in which the link LK2 extends that is larger than a predetermined angle. Therefore, the rotation of the link LK2 about the axis Ax3 and the rotation of the first part TP11 about the axis Ax4 correspond to turning.
[0040] In addition, in the rotation about the axis Ax5, the direction De11 corresponds to a specific direction, and in the rotation about the axis Ax6, the direction De12 corresponds to a specific direction. The direction De11 is a direction from an end of the first part TP11 opposite to a specific end to which the joint mechanism JEr5 is connected toward the specific end. The direction De11 may be regarded as a direction in which the first part TP11 extends. The direction De12 is a direction from an end of the second part TP12 opposite to a specific end (end including the end face TP1sf) to which the joint mechanism JEr6 is connected toward the specific end. The direction De12 may be regarded as a direction in which the second part TP12 extends.
[0041] When the direction De11 is a specific direction, the axis Ax5 corresponds to an axis whose angle with the direction De11 is equal to or smaller than a predetermined angle. When the direction De12 is a specific direction, the axis Ax6 corresponds to an axis whose angle with the direction De12 is equal to or smaller than a predetermined angle. In this embodiment, it is assumed that the direction De11 is perpendicular to the axis Ax4, and the direction De12 is perpendicular to the axis Ax5. In this case, the axis Ax5 whose angle with the direction De11 is equal to or smaller than a predetermined angle corresponds to an axis whose angle with the axis Ax4 is larger than a predetermined angle, and the axis Ax6 whose angle with the direction De12 is equal to or smaller than a predetermined angle corresponds to an axis whose angle with the axis Ax5 is larger than a predetermined angle.
[0042] In this manner, in this embodiment, each of the multiple parts of the robot 10 (such as the body part BDP, the link LK1, the link LK2, and the tip part TP1) can rotate about each of the axes Ax1, Ax2, Ax3, Ax4, Ax5, and Ax6 as a rotation axis, thereby enabling the robot 10 to perform the same movements as a human being.
[0043] For example, the link LK1 between the joint mechanism JEr2 and the joint mechanism JEr3 corresponds to the upper arm, and the link LK2 between the joint mechanism JEr3 and the joint mechanism JEr4 corresponds to the forearm. The robot 10 can perform an action simulating the twisting of a human waist by the joint mechanism JEr1, and can perform an action simulating the rotation of a shoulder by the joint mechanism JEr2. The robot 10 can perform an action simulating the rotation of an elbow by the joint mechanism JEr3, and can perform an action simulating the rotation of a wrist by the joint mechanism JEr4. The robot 10 can perform an action simulating the twisting of a wrist by the joint mechanism JEr5, and can perform an action simulating the twisting of a fingertip by the joint mechanism JEr6.
[0044] Furthermore, in this embodiment, the joint mechanism JEp1 provided in the link LK1 can move the link LK2 relative to the link LK1 along the direction De1 in which the link LK1 extends. Also, in this embodiment, the joint mechanism JEp2 provided in the link LK2 can move the link LK2 relative to the link LK1 along the direction De2 in which the link LK2 extends. Therefore, in this embodiment, the joint mechanisms JEp1 and JEp2 can easily move the tip part TP1 of the robot 10 to the periphery of the body part BDP. Also, in this embodiment, the joint mechanisms JEp1 and JEp2 can widen the area that the tip part TP1 (more specifically, the end face TP1sf) can reach, and therefore the area that the end effector 20 attached to the robot 10 can reach can be widened.
[0045] The configuration of the robot system 1 is not limited to the example shown in FIG. 1. For example, the robot controller 30 may be built into the robot 10. Although FIG. 1 assumes a case where the robot 10 is fixed to a predetermined location such as a floor, the robot 10 itself may be movable without being fixed to a predetermined location. The base part BDPba of the body part BDP may be fixed to a predetermined location such as a floor via a joint mechanism JEr1. In this case, the body part BDP may be defined without including the joint mechanism JEr1. In a configuration in which the base part BDPba is fixed to a predetermined location via the joint mechanism JEr1, the joint mechanism JEr1 may rotate the base part BDPba around the axis Ax1 as a rotation axis. In a configuration in which the base part BDPba is fixed to a predetermined location via the joint mechanism JEr1, the base part BDPba may be connected to the joint mechanism JEr2.
[0046] Next, an example of the joint mechanisms JEp1 and JEp2 will be described with reference to FIG.
[0047] Fig. 2 is an explanatory diagram for explaining an example of the joint mechanism JE. In Fig. 2, the joint mechanisms JEp1 and JEp2 and the joint mechanism JEr3 will be mainly described. In this embodiment, it is assumed that the motor MOr3 that drives the joint mechanism JEr3 moves integrally with the joint mechanism JEr3. For example, the motor MOr3 may be fixed to the joint mechanism JEr3. First, the joint mechanism JEp1 will be described.
[0048] The joint mechanism JEp1 and the motor MOp1 that drives the joint mechanism JEp1 are disposed inside the link LK1. For example, the motor MOp1 is attached inside the link LK1 at the end LK1ed1, which is closer to the body part BDP, of the two ends LK1ed (LK1ed1 and LK1ed2) of the link LK1. Note that the end LK1ed2 is the end LK1ed farthest from the body part BDP, of the two ends LK1ed of the link LK1.
[0049] The joint mechanism JEp1 includes, for example, a screw portion JEp11 extending along a direction De1, a nut JEp12, a connecting portion JEp13, and a rail JEp14.
[0050] One end of the threaded portion JEp11 is attached to the motor MOp1. For example, the threaded portion JEp11 is attached to the motor MOp1 so that the central axis of the threaded portion JEp11 (the central axis along the direction De1) coincides with the rotation axis of the motor MOp1, and is inserted into a nut JEp12. Then, the threaded portion JEp11 rotates around the central axis along the direction De1 as the rotation axis of the motor MOp1.
[0051] The connection part JEp13 includes, for example, a slider part JEp13a connected to the rail JEp14 so as to be movable along the direction De1, and a support part JEp13b supporting the nut JEp12 and the motor MOr3. For example, the nut JEp12 is fixed to the support part JEp13b so as not to rotate together with the screw part JEp11. In addition, the motor MOr3 is fixed to the support part JEp13b so as not to rotate itself.
[0052] It is not necessary to strictly distinguish between the slider portion JEp13a and the support portion JEp13b. For example, the motor MOr3 may be fixed to the slider portion JEp13a. The nut JEp12 may be fixed to the motor MOr3 without the support portion JEp13b. That is, the nut JEp12 only needs to be connected to the connection portion JEp13 or the like so that the relative position of the nut JEp12 with respect to the joint mechanism JEr3 does not change. In this way, the nut JEp12 is connected to the joint mechanism JEr3 via the connection portion JEp13 or the like.
[0053] The rail JEp14 includes two rod-shaped members JEp14a and JEp14b extending along the direction De1 and arranged parallel to each other. The shapes of the rod-shaped members JEp14a and JEp14b and the slider part JEp13a are not particularly limited as long as the rod-shaped members JEp14a and JEp14b can movably support the slider part JEp13a. In other words, the shape of the rail JEp14 is not particularly limited as long as the rod-shaped members JEp14a and JEp14b can movably support the connection part JEp13. For example, the rail JEp14 is disposed between the opening Hlk1 and the screw part JEp11 in the direction along the axis Ax2, and is attached to the inside of the link LK1. Note that the rail JEp14 does not have to be disposed between the opening Hlk1 and the screw part JEp11 in the direction along the axis Ax2, as long as the joint mechanism JEr3 can move along the direction De1 with a part of the joint mechanism JEr3 protruding from the opening Hlk1.
[0054] The nut JEp12 is fixed to the connection part JEp13 so as not to rotate together with the threaded part JEp11, and therefore moves relative to the threaded part JEp11 along the direction De1 as the threaded part JEp11 rotates. As described above, the nut JEp12 is fixed to the connection part JEp13, etc. so that the relative position to the joint mechanism JEr3 does not change. That is, the joint mechanism JEr3 moves along the direction De1 together with the nut JEp12. For example, the joint mechanism JEr3 moves relative to the link LK1 as the nut JEp12 moves. In this way, the joint mechanism JEp1 movably supports the joint mechanism JEr3. It is preferable that the movement area ARmv1 (movement range) of the joint mechanism JEr3 is movable from a region closer to the end LK1ed1 than the end LK1ed2 of the link LK1 to a region closer to the end LK1ed2 than the end LK1ed1. This allows the substantial length of the link LK1 (the length under control) to be set to half or less of the length of the link LK1 or more than half of the length of the link LK1. The substantial length of the link LK1 is, for example, the length along the direction De1 from the end LK1ed1 (for example, the intersection of the link LK1 and the axis Ax2) to the joint mechanism JEr3 (more precisely, the axis Ax3).
[0055] Here, the moving direction of the nut JEp12, i.e., the moving direction of the joint mechanism JEr3, is switched between the direction De1 and the opposite direction to the direction De1 by switching the rotation direction of the motor MOp1. For example, when the motor MOp1 rotates in a first rotation direction, the nut JEp12 moves in the direction De1, and when the motor MOp1 rotates in a second rotation direction that is the opposite rotation to the first rotation direction, the nut JEp12 moves in the opposite direction to the direction De1. Next, the joint mechanism JEp2 will be described.
[0056] The joint mechanism JEp2 and the motor MOp2 that drives the joint mechanism JEp2 are disposed inside the link LK2. For example, the motor MOp2 is attached inside the link LK2 at the end LK2ed1, which is the farthest from the tip TP1, of the two ends LK2ed (LK2ed1 and LK2ed2) of the link LK2. Note that the end LK2ed2 is the end LK2ed closest to the tip TP1, of the two ends LK2ed of the link LK2.
[0057] The joint mechanism JEp2 includes, for example, a screw portion JEp21 extending along the direction De2, a nut JEp22, a connecting portion JEp23, and a rail JEp24.
[0058] One end of the threaded portion JEp21 is attached to the motor MOp2. For example, the threaded portion JEp21 is attached to the motor MOp2 so that the central axis of the threaded portion JEp21 (the central axis along the direction De2) coincides with the rotation axis of the motor MOp2, and is inserted into the nut JEp22. Then, the threaded portion JEp21 rotates around the central axis along the direction De2 as the rotation axis of the motor MOp2.
[0059] The connection part JEp23 includes, for example, a slider part JEp23a connected to the rail JEp24 so as to be relatively movable along the direction De2, and a support part JEp23b supporting the nut JEp22 and the joint mechanism JEr3. For example, the nut JEp22 is fixed to the support part JEp23b so as not to rotate together with the screw part JEp21. In addition, the support part JEp23b is connected to the joint mechanism JEr3 so as to rotate about an axis Ax3 (not shown in FIG. 2) as the rotation axis in accordance with the rotation of the motor MOr3. That is, the joint mechanism JEr3 rotates the support part JEp23b about the axis Ax3 as the rotation axis in accordance with the rotation of the motor MOr3.
[0060] It is not necessary to strictly distinguish between the slider portion JEp23a and the support portion JEp23b. For example, the joint mechanism JEr3 may be connected to the slider portion JEp23a. The nut JEp22 may be fixed to the slider portion JEp23a. That is, the nut JEp22 only needs to be connected to the connection portion JEp23 or the like so that the relative position of the nut JEp22 with respect to the joint mechanism JEr3 does not change. In this way, the nut JEp22 is connected to the joint mechanism JEr3 via the connection portion JEp23 or the like.
[0061] The rail JEp24 includes two rod-shaped members JEp24a and JEp24b that extend along the direction De2 and are arranged parallel to each other. The shapes of the rod-shaped members JEp24a and JEp24b and the slider portion JEp23a are not particularly limited as long as the rod-shaped members JEp24a and JEp24b can movably support the slider portion JEp23a. In other words, the shape of the rail JEp24 is not particularly limited as long as the rod-shaped members JEp24a and JEp24b can movably support the connection portion JEp23. For example, the rail JEp24 is disposed between the opening Hlk2 and the screw portion JEp21 in the direction along the axis Ax2, and is attached to the inside of the link LK2. Note that the rail JEp24 does not have to be disposed between the opening Hlk2 and the screw portion JEp21 in the direction along the axis Ax2, as long as the joint mechanism JEr3 can move along the direction De2 with a part of the joint mechanism JEr3 protruding from the opening Hlk2.
[0062] The nut JEp22 is fixed to the connection part JEp23 so as not to rotate together with the threaded part JEp21, and therefore moves relative to the threaded part JEp21 along the direction De2 as the threaded part JEp21 rotates. As described above, the nut JEp22 is fixed to the connection part JEp23 and the like so that the relative position to the joint mechanism JEr3 does not change. In addition, when the threaded part JEp11 is not rotating, that is, when the motor MOp1 is not rotating, the joint mechanism JEr3 is supported by the joint mechanism JEp1 so that the relative position of the joint mechanism JEr3 to the link LK1 does not change. Therefore, the link LK2 moves relative to the joint mechanism JEr3 along the direction De2 as the nut JEp22 moves relative to the threaded part JEp21. In this way, the joint mechanism JEp2 movably supports the link LK2. It is preferable that the movement area ARmv2 (movement range) of the joint mechanism JEr3 is movable from an area closer to the end LK2ed1 than the end LK2ed2 of the link LK2 to an area closer to the end LK2ed2 than the end LK2ed1. This makes it possible to set the substantial length (length under control) of the link LK2 to a length equal to or less than half the length of the link LK2 to a length equal to or more than half the length of the link LK2. The substantial length of the link LK2 is, for example, the length along the direction De2 from the joint mechanism JEr3 (more precisely, the axis Ax3) to the end LK2ed2 (for example, the intersection of the link LK2 and the axis Ax4).
[0063] When the screw portion JEp21 is not rotating, i.e., when the motor MOp2 is not rotating, the joint mechanism JEr3 is supported by the joint mechanism JEp2 so that the position relative to the link LK2 does not change. The joint mechanism JEr3 can rotate the link LK2 with respect to the link LK1 regardless of the position relative to the link LK1. The joint mechanism JEr3 can rotate the link LK2 with respect to the link LK1 regardless of the position relative to the link LK2.
[0064] Here, the moving direction of the nut JEp22 relative to the threaded portion JEp21, i.e., the moving direction of the link LK2, is switched between the direction De2 and the direction opposite to the direction De2 by switching the rotation direction of the motor MOp2. For example, when the motor MOp2 rotates in a first rotation direction, the link LK2 moves in the direction opposite to the direction De2, and when the motor MOp2 rotates in a second rotation direction that is opposite to the first rotation direction, the link LK2 moves in the direction De2.
[0065] The configuration of the joint mechanism JEp is not limited to the example shown in Fig. 2. For example, a ball screw having multiple balls between a screw part JEp11 and a nut JEp12 may be used as an element of the joint mechanism JEp1. Similarly, a ball screw having multiple balls between a screw part JEp21 and a nut JEp22 may be used as an element of the joint mechanism JEp2.
[0066] Also, for example, a part of the motor MOr3 may be located inside the link LK1, another part of the motor MOr3 may be located outside the link LK1 from the opening Hlk1, and the entire joint mechanism JEr3 may be located inside the link LK2. Also, for example, the joint mechanism JEr3 may have a storage section that stores the motor MOr3. That is, the motor MOr3 may be provided inside the joint mechanism JEr3. Alternatively, the motor MOr3 may be regarded as one element of the joint mechanism JEr3. Similarly, the motor MOp1 may be regarded as one element of the joint mechanism JEp1, and the motor MOp2 may be regarded as one element of the joint mechanism JEp2.
[0067] Next, the joint mechanisms JEr1, JEr2, JEr4, JEr5 and JEr6 will be briefly described.
[0068] The joint mechanism JEr1 has, for example, a rotating part JEr11 and a housing JEr12 that houses the rotating part JEr11. The rotating part JEr11 rotates around the axis Ax1 as a rotation axis with the rotation of the motor MOr1 that drives the joint mechanism JEr1. For example, the rotating part JEr11 is attached to the motor MOr1 so as to be rotatable around the base part BDPba around the axis Ax1 as a rotation axis. In addition, the housing JEr12 rotates around the axis Ax1 as a rotation axis with the rotating part JEr11 as a rotation axis with the base part BDPba. For example, the housing JEr12 is connected to the base part BDPba so as to be rotatable around the axis Ax1 as a rotation axis with the base part BDPba. Furthermore, the housing JEr12 is connected to the joint mechanism JEr2. As a result, the joint mechanism JEr2 rotates around the axis Ax1 as a rotation axis with the rotation of the rotating part JEr11 as a rotation axis with the base part BDPba.
[0069] The motor MOr1 may be regarded as one element of the joint mechanism JEr1. The housing JEr12 may be fixed to the base BDPba, and the joint mechanism JEr2 may be attached to the rotating part JEr11 so as to be rotatable with respect to the housing JEr12 about the axis Ax1 as the rotation axis. In this case, the housing JEr12 may be regarded as one element of the base BDPba.
[0070] The joint mechanism JEr2 has, for example, a rotating part JEr21 and a housing JEr22 that houses a motor MOr2 that drives the joint mechanism JEr2. The rotating part JEr21 rotates around an axis Ax2 as a rotation axis with the rotation of the motor MOr2. For example, the rotating part JEr21 is attached to the motor MOr2 so as to be rotatable with respect to the housing JEr22 around the axis Ax2 as a rotation axis. Furthermore, the rotating part JEr21 is connected to a link LK1. Furthermore, the link LK1 is connected to the housing JEr22 so as to be rotatable with respect to the housing JEr22. As a result, the link LK1 rotates with respect to the housing JEr22 around the axis Ax2 as a rotation axis with the rotation of the rotating part JEr21. Furthermore, the motor MOr2 is attached inside the housing JEr22.
[0071] The motor MOr2 may be regarded as one element of the joint mechanism JEr2. In the example shown in Fig. 2, a part of the rotating part JEr21 is located inside the link LK1, and another part of the rotating part JEr21 is located inside the housing JEr22, but the entire rotating part JEr21 may be located inside the link LK1 or inside the housing JEr22.
[0072] The joint mechanism JEr4 has, for example, a rotating part JEr41 and a housing JEr42 that houses the rotating part JEr41. The rotating part JEr41 rotates around an axis Ax4 as a rotation axis in accordance with the rotation of a motor MOr4 that drives the joint mechanism JEr4. For example, the rotating part JEr41 is attached to the motor MOr4 so as to be rotatable with respect to the link LK2 around the axis Ax4 as a rotation axis. The motor MOr4 is attached inside the link LK2.
[0073] Furthermore, the housing JEr42 rotates with the rotating part JEr41 relative to the link LK2 around the axis Ax4 as a rotation axis. For example, the housing JEr42 is connected to the link LK2 so as to be rotatable with respect to the link LK2 around the axis Ax4 as a rotation axis. Furthermore, the housing JEr42 is connected to the first part TP11. As a result, the first part TP11 rotates with the housing JEr42 around the axis Ax4 as a rotation axis in accordance with the rotation of the rotating part JEr41.
[0074] The motor MOr4 may be regarded as one element of the joint mechanism JEr4. In the example shown in Fig. 2, the entire rotating part JEr41 is located inside the housing JEr42, but the entire rotating part JEr41 may be located inside the link LK2. Alternatively, a part of the rotating part JEr41 may be located inside the housing JEr42, and the other part of the rotating part JEr41 may be located inside the link LK2.
[0075] The joint mechanism JEr5 has, for example, a rotating part JEr51 and a housing JEr52 that houses a part of the rotating part JEr51. The rotating part JEr51 rotates around an axis Ax5 as a rotation axis in accordance with the rotation of a motor MOr5 that drives the joint mechanism JEr5. For example, the rotating part JEr51 is attached to the motor MOr5 so as to be rotatable with respect to the first part TP11 around the axis Ax5 as a rotation axis. The motor MOr5 is attached inside the housing JEr42 of the joint mechanism JEr4.
[0076] Furthermore, the housing JEr52 rotates with respect to the first part TP11 together with the rotating part JEr51, with the axis Ax5 as the rotation axis. For example, the housing JEr52 is connected to the first part TP11 so as to be rotatable with respect to the first part TP11 around the axis Ax5 as the rotation axis. Furthermore, the housing JEr52 is connected to the second part TP12. As a result, the second part TP12 rotates with the housing JEr52 together with the axis Ax5 as the rotation axis in accordance with the rotation of the rotating part JEr51.
[0077] The motor MOr5 may be regarded as one element of the joint mechanism JEr5. In the example shown in Fig. 2, a part of the rotating part JEr51 is located inside the housing JEr52, and another part of the rotating part JEr51 is located inside the first part TP11, but the entire rotating part JEr51 may be located inside the housing JEr52 or inside the first part TP11.
[0078] The joint mechanism JEr6 has, for example, a rotating part JEr61 and a housing JEr62 that houses a part of the rotating part JEr61. The rotating part JEr61 rotates around the axis Ax6 as a rotation axis with the rotation of the motor MOr6 that drives the joint mechanism JEr6. For example, the rotating part JEr61 is attached to the motor MOr6 so as to be rotatable with respect to the second part TP12 around the axis Ax6 as a rotation axis. In addition, the housing JEr62 rotates with respect to the second part TP12 around the axis Ax6 as a rotation axis together with the rotating part JEr61. For example, the housing JEr62 is connected to the second part TP12 so as to be rotatable with respect to the second part TP12 around the axis Ax6 as a rotation axis. In addition, the housing JEr62 includes an end face TP1sf. For example, the end face TP1sf rotates with respect to the second part TP12 around the axis Ax6 as a rotation axis with the rotation of the rotating part JEr61.
[0079] The motor MOr6 may be regarded as one element of the joint mechanism JEr6. The housing JEr62 may be fixed to the second part TP12, and the end effector 20 may be attached to the surface of the rotating part JEr61 so as to be rotatable relative to the housing JEr62. In this case, the surface of the rotating part JEr61 corresponds to the end surface TP1sf. When the housing JEr62 is fixed to the second part TP12, the housing JEr62 may be regarded as one element of the second part TP12.
[0080] Furthermore, the multiple joint mechanisms JEr are not limited to the example shown in Fig. 2. For example, each of the multiple joint mechanisms JEr may have the same configuration as a mechanism corresponding to each joint of a known articulated robot.
[0081] 2 is a state (posture) of the robot 10 in which the directions De1 and De2 are parallel to the axis Ax1, and the end LK2ed1 of the link LK2 is closer to the end LK1ed1 than the end LK1ed2 of the link LK1. In this embodiment, by setting the links LK1 and LK2 to the state shown in FIG. 2, for example, the state of the robot 10 can be made compact, and the robot 10 can be easily carried. Therefore, in this embodiment, it is possible to facilitate installation work when installing the robot 10 in a factory, or work to change the installation of the robot 10 due to equipment changes in the factory, etc.
[0082] In addition, in FIG. 2, an example is shown in which the joint mechanism JEr3 is located in the intermediate region ARmd1 excluding both ends of the movement region ARmv1, and is located in the intermediate region ARmd2 excluding both ends of the movement region ARmv2, but the position of the joint mechanism JEr3 is not particularly limited. For example, in the posture shown in FIG. 2, the position of the joint mechanism JEr3 may be closer to the end LK1ed1 than the end LK1ed2 of the link LK1, and closer to the end LK1ed1 than the end LK1ed2 of the link LK2. Alternatively, in the posture shown in FIG. 2, the position of the joint mechanism JEr3 may be closer to the end LK1ed2 than the end LK1ed1 of the link LK1, and closer to the end LK1ed2 than the end LK1ed1 of the link LK2.
[0083] Next, the hardware configuration of the robot controller 30 will be described with reference to FIG.
[0084] FIG. 3 is a diagram illustrating an example of a hardware configuration of the robot controller 30 illustrated in FIG.
[0085] The robot controller 30 includes a processing device 32 that controls each part of the robot controller 30, a memory 35 that stores various information, a communication device 36, an operation device 37 that accepts operations by an operator or the like, a display device 38, and a driver circuit 39. The robot controller 30 may be realized as a single device, or may be realized as a plurality of devices configured separately from each other. For example, one or both of the operation device 37 and the display device 38 may be devices separate from the processing device 32.
[0086] The memory 35 includes, for example, one or both of a volatile memory such as a random access memory (RAM) that functions as a working area for the processing device 32 and a non-volatile memory such as an electrically erasable programmable read-only memory (EEPROM) that stores various information such as the control program PGr. The memory 35 may be detachable from the robot controller 30. Specifically, the memory 35 may be a storage medium such as a memory card that is detachable from the robot controller 30. The memory 35 may also be, for example, a storage device (e.g., online storage) that is communicatively connected to the robot controller 30 via a network or the like.
[0087] 2 stores a control program PGr. In this embodiment, the control program PGr includes, for example, an application program that causes the robot controller 30 to control the operation of the robot 10. However, the control program PGr may also include, for example, an operating robot system program that causes the processing device 32 to control each part of the robot controller 30.
[0088] The processing device 32 is a processor that controls the entire robot controller 30, and is configured to include, for example, one or more CPUs (Central Processing Units). The processing device 32 executes, for example, a control program PGr stored in the memory 35, and operates in accordance with the control program PGr, thereby functioning as an operation control unit 33, which will be described later. The control program PGr may be transmitted from another device via a network or the like.
[0089] Furthermore, for example, when the processing device 32 is configured to include multiple CPUs, some or all of the functions of the processing device 32 may be realized by the multiple CPUs operating in cooperation with each other according to a program such as the control program PGr. Furthermore, the processing device 32 may be configured to include hardware such as a GPU (Graphics Processing Unit), a DSP (Digital Signal Processor), or an FPGA (Field Programmable Gate Array) in addition to one or more CPUs, or instead of some or all of the one or more CPUs. In this case, some or all of the functions of the processing device 32 may be realized by hardware such as a DSP.
[0090] The operation control unit 33 repeats the process of calculating the joint value related to the state (state of the joint) of each joint mechanism JE until the position and posture of the robot 10 become the target position and posture. Then, the operation control unit 33 drives the robot 10 via a driver circuit 39 described later based on the joint value related to the state of each joint mechanism JE. The state of the joint mechanism JE may be the state of the movement of the joint. Specifically, the state of the joint mechanism JE may be, for example, the position of the joint mechanism JE (position of the joint) and the rotation angle of the rotation by the joint mechanism JEr (direction of the joint). In this case, the joint value indicates, for example, the position of the joint mechanism JE (position of the joint) and the rotation angle of the rotation by the joint mechanism JEr (direction of the joint). Hereinafter, the joint value related to the state (state of the joint) of the joint mechanism JE is also simply referred to as the joint value of the joint mechanism JE (joint).
[0091] The communication device 36 is hardware for communicating with an external device that exists outside the robot controller 30. For example, the communication device 36 has a function of communicating with the external device by short-range wireless communication. The communication device 36 may further have a function of communicating with the external device via a mobile communication network or a network.
[0092] The operation device 37 is an input device (e.g., a keyboard, a mouse, a switch, a button, a sensor, etc.) that accepts input from the outside. For example, the operation device 37 accepts an operation by an operator and outputs operation information corresponding to the operation to the processing device 32. Note that, for example, a touch panel that detects contact with the display surface of the display device 38 may be adopted as the operation device 37.
[0093] The display device 38 is an output device such as a display that outputs to the outside. For example, the display device 38 displays an image under the control of the processing device 32. Note that the operation device 37 and the display device 38 may be integrated into one (for example, a touch panel).
[0094] The driver circuit 39 is hardware that outputs signals for driving the robot 10 to the robot 10 under the control of the processing device 32 (more specifically, the motion control unit 33). For example, the driver circuit 39 outputs signals based on the joint values, etc. of each joint mechanism JE to the robot 10 as signals for driving motors MOr1, MOr2, MOr3, MOr4, MOr5, MOr6, MOp1, MOp2, etc.
[0095] In this manner, the robot controller 30 controls the movement of the robot 10 by controlling a plurality of motors MO (MOr1, MOr2, MOr3, MOr4, MOr5, MOr6, MOp1, and MOp2).
[0096] The configuration of the robot controller 30 is not limited to the example shown in Fig. 3. For example, the communication device 36 may be omitted from the robot controller 30.
[0097] Next, an overview of a method for calculating the joint values of each joint mechanism JE used when controlling the operation of the robot 10 (a method for calculating the joint values by the operation control unit 33) will be described. For example, forward kinematics that calculates the position and posture of the robot 10 from the displacement of the joint (e.g., rotation and linear motion, etc.) and inverse kinematics that calculates the displacement of the joint from the position and posture of the robot 10 are used to control the operation of the robot 10. For example, the relationship between the speed of the hand (e.g., the tip of the end effector 20) of the robot 10 (hereinafter also referred to as the hand speed) and the joint speed is expressed by Equation (1). For example, Equation (1) is used for calculation of forward kinematics.
[0098]
number
[0099] The hand velocity r(·) is expressed by equation (2). In addition, in a multi-joint robot having m joints (m is a natural number equal to or greater than 2), the joint velocity θ(·) is expressed by equation (3), and the Jacobian matrix J is expressed by equation (4).
[0100]
number
[0101]
number
[0102]
number
[0103] The Jacobian matrix J is represented by, for example, a matrix with 6 rows and m columns, and the element in the i-th column is the element J relating to the i-th joint. i The element J related to the i-th joint corresponds to i is expressed by equation (5) when the i-th joint is a rotational joint, and is expressed by equation (6) when the i-th joint is a prismatic joint. Note that 0 in equation (6) indicates that the vector value is 0, for example.
[0104]
number
[0105] Although not shown in Fig. 1, a three-axis Cartesian coordinate system with a predetermined position of each joint as the origin is associated with each joint (each joint mechanism JE) and is used to express the state of the joint. For example, if the i-th joint is a rotary joint, the rotation axis of the joint mechanism JEr corresponds to the Z axis, and if the i-th joint is a linear joint, the axis along the movement direction of the joint mechanism JEp or the axis along the extension / contraction direction of the link LK corresponds to the Z axis.
[0106] In this embodiment, it is assumed that the i-th joint mechanism JE, counting from the body part BDP in the order of the rotary joint and the linear joint, corresponds to the i-th joint. For example, the joint mechanism JEr1 corresponds to the first joint, and the joint mechanism JEr2 corresponds to the second joint. The joint mechanism JEr3 corresponds to the third joint, and the joint mechanism JEr4 corresponds to the fourth joint. The joint mechanism JEr5 corresponds to the fifth joint, and the joint mechanism JEr6 corresponds to the sixth joint. The joint mechanism JEp1 corresponds to the seventh joint, and the joint mechanism JEp2 corresponds to the eighth joint. The numbering method is not limited to the above example.
[0107] The relationship between the hand speed and the joint speed of the robot 10 is expressed as the pseudo-inverse matrix J of the Jacobian matrix J. + For example, equation (7) is used to calculate inverse kinematics.
[0108]
number
[0109] For example, the robot controller 30 calculates the joint velocity θ of each joint mechanism JE with respect to the target hand velocity r(·). i (·) using equation (7), and operates each joint mechanism JE based on the calculation result. Specifically, for example, the robot controller 30 calculates the joint velocity θ iBased on (·), the joint value of each joint mechanism JE is calculated. Then, the robot controller 30 operates each joint mechanism JE based on the joint value of each joint mechanism JE. For example, the robot controller 30 operates each joint mechanism JE so that the state of each joint mechanism JE becomes a state based on the joint value of each joint mechanism JE.
[0110] In this embodiment, for example, the robot 10 can be made to perform a jog motion. The jog motion is, for example, a motion in which the joints and the hands of the robot 10 are moved little by little to make the position and posture of the robot 10 reach the target position and posture. i (·), and joint velocity θ i The information indicating the state of the joint mechanism JE calculated based on (·) corresponds to the joint value. The calculation of the joint velocity θ(·) of the joint mechanism JE is an example of an inverse kinematics calculation. In addition, the pseudo-inverse matrix J + Therefore, calculating the joint velocity θ(·) of the joint mechanism JE using equation (7) corresponds to performing inverse kinematics calculation using the Jacobian matrix.
[0111] When a jog motion is performed, the joint velocity θ i (·) is calculated. In a control method using the inverse kinematics calculation, the robot 10 is controlled to avoid a singular point. A singular point (hereinafter also referred to as a singular posture) is, for example, a posture of the robot 10 that makes it impossible to control the robot 10. In this embodiment, when it is detected that the posture of the robot 10 is close to a singular point, at least one specific joint involved in the singular point is set as a fixed joint in order to avoid the singular point. Note that the vicinity of a singular point is, for example, a posture whose difference from the singular posture is within a predetermined range. The predetermined range is, for example, a margin set to allow the robot controller 30 to recognize that the posture of the robot 10 has approached the singular posture before the posture of the robot 10 changes to the singular posture.
[0112] In this embodiment, for example, when a specific i-th joint is set as a fixed joint, the element J relating to the specific i-th joint among the multiple elements of the Jacobian matrix J is i The vector value of is fixed to 0. The element J related to the i-th joint i The Jacobian matrix J when the vector value of is set to 0 is expressed as equation (8). In this case, the joint velocity θ obtained from the above equation (7) i (·) is the joint velocity vector expressed by equation (9).
[0113]
number
[0114] As shown in equation (9), the joint velocity θ of the i-th joint i (·) is 0. In this manner, in this embodiment, among the multiple elements of the Jacobian matrix J, the element J related to the i-th joint i By fixing the vector value of i to 0, the joint value of the i-th joint does not change, so that the i-th joint among the m joints can be regarded as a fixed joint. That is, in this embodiment, the element J relating to the i-th joint of the Jacobian matrix J i By fixing the vector value of to 0, the joint velocity θ i (·) can be calculated. As a result, in this embodiment, the number of joints to be operated can be limited to a number less than the total number of joints, and the robot 10 can be operated. Note that, although the vector value is fixed to 0 in this embodiment, if the joint value of the i-th joint does not affect the robot control and does not substantially displace, it does not necessarily have to be 0, and may be a small value (substantially 0). Here, "substantially 0" includes not only 0, but also a small value that can be regarded as 0. Also, "not substantially displaced" includes not only the case where there is no displacement strictly, but also the case where it can be regarded as not displaced (for example, a small change that does not affect the robot control).
[0115] In addition, in the above example, it is assumed that there is one fixed joint that is not moved, the ith joint, but the number of fixed joints that are not moved is not limited to one.
[0116] Next, an example of a singular point of the robot 10 will be described with reference to FIG.
[0117] FIG. 4 is an explanatory diagram for explaining an example of a singular point of the robot 10. FIG. 4(a) shows a schematic diagram of the robot 10, and FIG. 4(b) shows a conceptual diagram of the robot 10. The conceptual diagram of the robot 10 shown in FIG. 4(b) corresponds to the case where the robot 10 shown in FIG. 4(a) is viewed from the negative direction of the Y0 axis (the opposite direction to the direction indicated by the arrow on the Y0 axis). In FIG. 4(b), the X-axis and Y-axis from the coordinate system Σ1 to the coordinate system Σ8 are omitted in order to make the diagram easier to see.
[0118] In the robot 10, which is an articulated robot, a plurality of singular points (singular postures) exist, but each of the plurality of singular points of the robot 10 is uniquely determined by the structure of the joint mechanism of the robot 10. In this embodiment, for example, the vicinity of each singular point of the robot 10 is set in advance, and the joint values (e.g., rotation angles, etc.) of each joint mechanism JE corresponding to the vicinity of the singular point (more specifically, the boundary of the vicinity of the singular point) are stored in the memory 35. Also, information indicating a combination of the joint mechanisms JE involved in each singular point is stored in the memory 35. Note that there may be two or three joint mechanisms JE involved in each singular point.
[0119] In this embodiment, a singular point relating to the combination of the joint mechanisms JEr2, JEr3, and JEr4 will be described. As described in FIG. 1, the joint mechanism JEr2 is a rotary joint that rotates the link LK1 around the axis Ax2 as a rotation axis, and the joint mechanism JEr3 is a rotary joint that rotates the link LK2 around the axis Ax3 as a rotation axis. The joint mechanism JEr4 is a rotary joint that rotates the first part TP11 around the axis Ax4 as a rotation axis. In the following, for example, it is assumed that, as viewed from the positive direction of the Zi axis (the direction indicated by the arrow of the Zi axis), a clockwise rotation (or rotation) means a positive rotation (or rotation), and a counterclockwise rotation (or rotation) means a negative rotation (or rotation).
[0120] In the posture of the robot 10 shown in Fig. 4, the links LK1 and LK2 are parallel to each other as shown in Fig. 4(a). When the links LK1 and LK2 are parallel to each other, the joint mechanisms JEr2, JEr3, and JEr4 are aligned on a straight line as shown in Fig. 4(b). When the joint mechanisms JEr2, JEr3, and JEr4 are aligned on a straight line in the posture of the robot 10, that is, when the links LK1 and LK2 are parallel to each other, a singular point (singular posture) is reached.
[0121] In this embodiment, it is assumed that the rotation angles (θ2, θ3, and θ4) of the joint mechanisms JEr2, JEr3, and JEr4 are 0° when the posture of the robot 10 is the posture shown in FIG. 4. In this case, when the rotation angle θ3 of the joint mechanism JEr3 becomes 0°, the joint mechanisms JEr2, JEr3, and JEr4 are aligned in a straight line. That is, the posture of the robot 10 becomes a singular posture when the rotation angle θ3 of the joint mechanism JEr3 is 0°. For this reason, in this embodiment, it is assumed that the posture when the rotation angle θ3 of the joint mechanism JEr3 is -10° or more and +10° or less is preset as a posture (near a singular point) whose difference from the singular posture is within a predetermined range. That is, the range of the rotation angle θ3 of the joint mechanism JEr3 that defines the vicinity of the singular point is preset to a range of -10° or more and +10° or less. Therefore, the robot controller 30 (more specifically, the motion control unit 33) determines that the posture of the robot 10 is near a singular point when the rotation angle θ3 of the joint mechanism JEr3 is equal to or greater than −10° and equal to or less than +10°.
[0122] The range of the rotation angle θ3 of the joint mechanism JEr3 (-10°≦θ3≦+10°) that defines the vicinity of the singular point is set arbitrarily depending on the movable speed of the robot 10 and risks such as an assumed load assumed as the weight of an object carried by the robot 10. Furthermore, to detect the vicinity of the singular point, the joint velocity θ3(·) of the joint mechanism JEr3 may be used instead of the rotation angle θ3 of the joint mechanism JEr3. For example, the robot controller 30 may determine that the posture of the robot 10 is in the vicinity of a singular point when the joint velocity θ3(·) of the joint mechanism JEr3 is equal to or greater than a predetermined value.
[0123] Next, an overview of the operation of the robot controller 30 will be described with reference to FIGS.
[0124] Fig. 5 is a flowchart showing an example of the operation of the robot controller 30 shown in Fig. 1. In the operation shown in Fig. 5, a process is performed to calculate the joint values of each joint mechanism JE (e.g., information indicating the position of the joint mechanism JE and the rotation angle of the rotation by the joint mechanism JEr) for making the position and posture of the hand of the robot 10 a target position PP and posture PS. For example, the operation shown in Fig. 5 is executed by the processing device 32 functioning as the operation control unit 33. That is, in the operation shown in Fig. 5 (a series of processes from step S100 to step S760), the processing device 32 functions as the operation control unit 33.
[0125] In the operation shown in FIG. 5, it is assumed that there are n positions PP and postures PS of multiple targets (n is a natural number of 1 or more). For example, the positions PP and postures PS of n targets are defined as the trajectory of the robot 10 from the initial state of the robot 10 to the final target state. Hereinafter, the positions PP and postures PS of n targets may be referred to as n target states. In addition, in the operation shown in FIG. 5, it is assumed that the initial value of the variable k (k is a natural number of 1 to n) is 1. Hereinafter, the position PP and posture PS of the kth target may be referred to as the position PPk and posture PSk, respectively. For example, the position PP1 and posture PS1 are the position PP and posture PS of the first target, and the position PPn and posture PSn are the position PP and posture PS of the nth target (final target). The robot controller 30 sequentially updates the positions PPk and postures PSk of the targets at the hand of the robot 10, for example, by sequentially changing the variable k from 1 to n.
[0126] FIG. 5 mainly describes the operation of the robot controller 30 when n target positions PP and postures PS are set in sequence in order to teach the trajectory of the robot 10 from the initial state of the robot 10 to the final target state.
[0127] First, in step S100, the movement control unit 33 sets a position PPk and a posture PSk of a k-th target of the hand of the robot 10. For example, when the movement shown in Fig. 5 is started, in step S100, the movement control unit 33 sets a position PP1 and a posture PS1 of a first (k=1) target.
[0128] Next, in step S120, the movement control unit 33 calculates the difference between the position and posture of the hand of the robot 10 and the target position PPk and posture PSk. For example, the movement control unit 33 calculates the position and posture of the hand of the robot 10 based on the current joint values of each joint mechanism JE. Then, the movement control unit 33 calculates the difference between the position and posture of the hand of the robot 10 calculated based on the current joint values of each joint mechanism JE and the target position PPk and posture PSk of the hand of the robot 10.
[0129] Next, in step S130, the operation control unit 33 judges whether or not the difference between the position and posture of the hand of the robot 10 and the target position PPk and posture PSk is equal to or less than a tolerance. For example, the tolerance is set to a value that allows the position and posture of the hand of the robot 10 to be regarded as being consistent with the target position PPk and posture PSk if the difference between the position and posture of the hand of the robot 10 and the target position PPk and posture PSk is equal to or less than the tolerance.
[0130] If the result of the determination in step S130 is positive, the operation control unit 33 advances the process to step S700. In this case, the joint values (latest joint values) of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S120 are calculated as the joint values of each joint mechanism JE for setting the position and posture of the hand of the robot 10 to the target position PPk and posture PSk. On the other hand, if the result of the determination in step S130 is negative, the operation control unit 33 advances the process to step S140.
[0131] In step S140, the motion control unit 33 executes a joint value initial update process for updating the joint values of each joint mechanism JE. In the joint value initial update process, for example, the motion control unit 33 updates the pseudo inverse matrix J of the Jacobian matrix J.+ The joint values of each joint mechanism JE are updated based on the displacement amount of each joint mechanism JE calculated using the above formula: Note that details of the joint value initial update process in step S140 will be described later with reference to FIG.
[0132] After executing the joint value initial update process in step S140, the movement control unit 33 advances the process to step S150. Then, in step S150, the movement control unit 33 increments the loop count, and then advances the process to step S200. Note that the loop count is initialized to 0 before the movement shown in FIG. 5 is executed.
[0133] The series of processes in steps S200 and S300 are similar to the series of processes in steps S120 and S130 described above. However, if the result of the determination in step S300 is negative, the operation control unit 33 advances the process to step S400.
[0134] In step S400, the operation control unit 33 executes a joint value update process for updating the joint values of each joint mechanism JE. The joint value update process is similar to the joint value initial update process in step S140, except that when it is detected that the posture of the robot 10 is in the vicinity of a singular point, a fixing process is executed for setting at least one joint mechanism JE involved in the singular point as a fixed joint. Details of the joint value update process in step S400 will be described later in FIG. 7. Hereinafter, at least one joint mechanism JE involved in the singular point when the posture of the robot 10 is in the vicinity of the singular point may be referred to as a specific joint mechanism JE.
[0135] After executing the joint value update process in step S400, the movement control unit 33 advances the process to step S500. Then, in step S500, the movement control unit 33 increments the loop count, and then advances the process to step S520.
[0136] In step S520, the operation control unit 33 determines whether the loop count is equal to or less than an upper limit value. The upper limit value is an upper limit value for the number of times the series of processes from step S200 to step S520 is repeated, and is set in order to terminate the operation shown in FIG. 5 if the series of processes from step S200 to step S520 does not converge.
[0137] If the result of the determination in step S520 is negative, the operation control unit 33 stops the operation of the robot 10 as an error in step S600. In this case, the joint values of each joint mechanism JE calculated by the operation shown in FIG. 6 (the latest joint values of each joint mechanism JE updated in the joint value update process in step S400) are not necessarily joint values that make the position and posture of the hand of the robot 10 the target position PP and posture PS. For this reason, the operation control unit 33 may notify an operator or the like of error information indicating that the process of calculating the joint values of each joint mechanism JE for making the position and posture of the hand of the robot 10 the target position PP and posture PS has not converged. For example, the operation control unit 33 may cause the display device 38 to display the error information.
[0138] On the other hand, if the result of the determination in step S520 is positive, the operation control unit 33 returns the process to step S200. In this manner, the series of processes from step S200 to step S520 is repeated until the joint values of each joint mechanism JE for bringing the position and posture of the hand of the robot 10 into the target position PP and posture PS are calculated, or until the loop count exceeds the upper limit.
[0139] Furthermore, if the result of the determination in the above-mentioned step S300 is positive, the process of step S700 is executed. In this case, the joint values (latest joint values) of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S200 are calculated as the joint values of each joint mechanism JE for making the position and posture of the hand of the robot 10 the target position PP and posture PS. Note that, if a series of processes from step S200 to step S520 are repeated two or more times, the latest joint values used in the process of this step S200 are the joint values updated in the previous joint value update process of step S400.
[0140] In step S700, the operation control unit 33 controls each joint mechanism JE according to the latest joint value of each joint mechanism JE. Note that, for example, in step S700 executed when the result of the determination in step S130 is positive, the latest joint value of each joint mechanism JE is the joint value of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S120. Also, in step S700 executed when the result of the determination in step S300 is positive, the latest joint value of each joint mechanism JE is the joint value of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S200.
[0141] By executing the process of step S700, the position and posture of the hand of the robot 10 change to the target position PPk and posture PSk. When teaching the robot 10 a movement, the movement control unit 33 stores the latest joint values of each joint mechanism JE in the memory 35 as the joint values of the target position PPk and posture PSk in step S700. For example, when teaching the robot 10 a movement, the movement control unit 33 generates joint state information indicating the latest joint values of the multiple joint mechanisms JE and stores the generated joint state information in the memory 35.
[0142] Here, for example, if the difference between the position and orientation of the hand in the initial state of the robot 10 and the target position PP1 and orientation PS1 is equal to or less than a permissible value, the joint value initial update process in step S140 is not executed and the result of the determination in step S130 becomes positive. In this case, in step S700, the operation control unit 33 maintains the joint values of each joint mechanism JE at the joint values of each joint mechanism JE in the initial state of the robot 10.
[0143] After executing the process of step S700, the operation control unit 33 advances the process to step S720.
[0144] In step S720, the operation control unit 33 judges whether the variable k is smaller than n. If the result of the judgment in step S720 is negative, that is, if the position and posture of the hand of the robot 10 have changed to the final target position PPn and posture PSn, the operation control unit 33 ends the operation shown in Fig. 5. On the other hand, if the result of the judgment in step S720 is positive, the operation control unit 33 resets the loop count to 0 in step S740, and then returns the process to step S100. As a result, in step S100, the next target position PPk and posture PSk of the hand of the robot 10 are set.
[0145] 5, a series of processes from step S200 to step S520 is repeated in each of n target states (position PP and posture PS) until the difference between the position and posture of the hand of robot 10 and the target position PPk and posture PSk becomes equal to or smaller than the allowable value. Note that when the difference between the position and posture of the hand of robot 10 and the target position PPk and posture PSk becomes equal to or smaller than the allowable value, the robot 10 becomes in a state that is allowable as a target state.
[0146] Next, the initial joint value update process in step S140 will be described with reference to FIG.
[0147] Fig. 6 is a flowchart showing an example of the joint value initial update process shown in Fig. 5. For example, the processing device 32 functioning as the motion control unit 33 executes a series of processes from step S142 to step S146 shown in Fig. 6 as the joint value initial update process of step S140 shown in Fig. 5. Therefore, the process of step S142 is executed when the result of the determination in step S130 shown in Fig. 5 is negative. Furthermore, after the process of step S146 is executed, the process of step S150 shown in Fig. 5 is executed.
[0148] First, in step S142, the motion control unit 33 calculates the Jacobian matrix J based on the current joint values of each joint mechanism JE.
[0149] Then, in step S144, the operation control unit 33 calculates the pseudo-inverse matrix J of the Jacobian matrix J. + Using the above, the displacement of each joint mechanism JE (for example, the joint velocity θ i Calculate (·)
[0150] Next, in step S146, the operation control unit 33 updates the joint value of each joint mechanism JE based on the displacement amount of each joint mechanism JE. For example, the operation control unit 33 updates the joint value of each joint mechanism JE by adding the displacement amount of each joint mechanism JE to the joint value of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S120 of Fig. 5. Then, the operation control unit 33 advances the process to step S150 shown in Fig. 5.
[0151] In this way, in the joint value initial update process, the joint value of each joint mechanism JE is updated regardless of whether the posture of the robot 10 is near a singular point or not. Therefore, in the joint value initial update process, the joint value of each joint mechanism JE is updated regardless of whether the posture of the robot 10 is near a singular point or not. For this reason, for example, in the joint value initial update process in the kth target state, if the posture of the robot 10 after the process of step S700 executed in the (k-1)th target state is near a singular point, the joint value of the specific joint mechanism JE involved in the singular point is also updated. Therefore, for example, if the posture of the robot 10 before the joint value initial update process is executed is near a singular point, the joint value of the specific joint mechanism JE involved in the singular point may be updated by the joint value initial update process to a joint value that makes the posture of the robot 10 not near a singular point. In this case, it is possible to prevent the first processing of the series of processing from step S200 to step S520 that is repeatedly executed from starting from the joint values that bring the posture of the robot 10 close to the singular point.
[0152] 6, the joint value of a specific joint mechanism JE may be updated in a direction that brings the posture of the robot 10 closer to a singular posture. Therefore, the joint value of a specific joint mechanism JE may be updated to a joint value that brings the posture of the robot 10 into a singular posture by the joint value initial update process that is executed every time the target position PPk and posture PSk are updated.
[0153] For this reason, for example, the range of the joint value of the joint mechanism JE that defines the vicinity of the singular point (for example, the range of the rotation angle θ3) is preferably larger than the range corresponding to the amount of change in the joint value that changes in one update. More preferably, the range of the joint value of the joint mechanism JE that defines the vicinity of the singular point is larger than the range corresponding to the total amount of change in the joint value when the update of the joint value in the direction that brings the posture of the robot 10 closer to the singular posture is repeated multiple times (for example, n times).
[0154] Next, the joint value update process in step S400 shown in FIG. 5 will be described with reference to FIG.
[0155] Fig. 7 is a flowchart showing an example of the joint value update process shown in Fig. 5. For example, the processing device 32 functioning as the motion control unit 33 executes a series of processes from step S420 to step S490 shown in Fig. 7 as the joint value update process of step S400 shown in Fig. 5. Therefore, the process of step S420 is executed when the result of the determination in step S200 shown in Fig. 5 is negative. After the process of step S490 is executed, the process of step S500 shown in Fig. 5 is executed.
[0156] In the description of Fig. 7, unless otherwise specified, the joint value update process means the joint value update process in the kth target state. The process of step S420 is the same as the process of step S142 shown in Fig. 6, the process of step S480 is the same as the process of step S144 shown in Fig. 6, and the process of step S490 is the same as the process of step S146 shown in Fig. 6.
[0157] First, in step S420, the motion control unit 33 calculates the Jacobian matrix J based on the current joint values of each joint mechanism JE.
[0158] Then, in step S440, the movement control unit 33 determines whether or not the posture of the robot 10 is near a singular point. For example, when the rotation angle θ3 of the joint mechanism JEr3 is between -10° and +10°, the movement control unit 33 determines that the posture of the robot 10 is near a singular point. If the result of the determination in step S440 is positive, the movement control unit 33 advances the process to step S460. On the other hand, if the result of the determination in step S440 is negative, the movement control unit 33 advances the process to step S480.
[0159] In step S460, the operation control unit 33 sets the value of an element corresponding to a specific joint mechanism JE among the multiple elements of the Jacobian matrix J to substantially 0. The specific joint mechanism JE is, for example, at least one joint mechanism JE among the multiple joint mechanisms JE involved in the singularity, and is determined in advance for each singularity. For example, the operation control unit 33 specifies at least one joint mechanism JE among the multiple joint mechanisms JE involved in the singularity when it is determined in step S440 that the posture of the robot 10 is in the vicinity of the singularity, as the specific joint mechanism JE involved in the singularity. Then, as described above, the operation control unit 33 sets the value of an element corresponding to a specific joint mechanism JE among the multiple elements of the Jacobian matrix J to substantially 0. As a result, for example, the value of an element in a column corresponding to a specific joint mechanism JE of the Jacobian matrix J is set to substantially 0. Then, the operation control unit 33 advances the process to step S480.
[0160] In step S480, the operation control unit 33 calculates the pseudo-inverse matrix J of the Jacobian matrix J. + Using the above, the displacement of each joint mechanism JE (for example, the joint velocity θ i (·) is calculated. Note that, when the posture of the robot 10 is in the vicinity of a singular point, the displacement amount of the specific joint mechanism JE is 0 or almost 0 because the element value of the column corresponding to the specific joint mechanism JE of the Jacobian matrix J is set substantially to 0. Note that almost 0 is, for example, a value that can be regarded as 0. After executing the process of step S480, the operation control unit 33 advances the process to step S490.
[0161] In step S490, the operation control unit 33 updates the joint value of each joint mechanism JE based on the displacement amount of each joint mechanism JE. For example, the operation control unit 33 updates the joint value of each joint mechanism JE by adding the displacement amount of each joint mechanism JE to the joint value of each joint mechanism JE used in calculating the position and posture of the hand of the robot 10 in step S200 of FIG. 5. Note that, when the posture of the robot 10 is in the vicinity of a singular point, the displacement amount of the specific joint mechanism JE is 0 or almost 0, so that the joint value of the specific joint mechanism JE after the update by the processing of step S490 becomes the same or almost the same value as the value before the update. Note that the value almost the same as the value before the update is, for example, a value that can be regarded as the same as the value before the update. Therefore, the state of the specific joint mechanism JE is maintained without change. As a result, in this embodiment, it is possible to prevent the posture of the robot 10 from becoming a singular posture.
[0162] Furthermore, in this embodiment, the joint value of a specific joint mechanism JE can be easily set to a fixed value by setting the value of an element related to a specific joint mechanism JE, among the multiple elements of the Jacobian matrix J, to substantially 0. That is, in this embodiment, even if a joint mechanism JE whose joint value is fixed exists among the multiple joint mechanisms JE, the joint value of each joint mechanism JE can be calculated by performing inverse kinematic calculations without changing the number of rows and columns of the Jacobian matrix J or without dividing the Jacobian matrix J into multiple matrices.
[0163] As a result, in this embodiment, the increase in the amount of calculations required to calculate the joint values of each joint mechanism JE can be suppressed compared to a control method in which a Jacobian matrix is newly created to calculate the displacement amount of other joint mechanisms JE other than a specific joint mechanism JE each time a singularity is detected. That is, in this embodiment, it is possible to suppress an increase in the load when controlling the robot 10. As a result, in this embodiment, it is possible to suppress an increase in the control time when controlling the robot 10.
[0164] Here, for example, the series of processes in steps S480 and S490 is an example of a "calculation process", and the series of processes in steps S440 and S460 is an example of a "fixed process". Note that the "calculation process" may include the process of step S420 in addition to the series of processes in steps S480 and S490. Alternatively, the series of processes from step S420 to step S490 may be regarded as the "calculation process". In this case, the "calculation process" includes the "fixed process".
[0165] Note that the operation of the robot controller 30 when changing the position and posture of the hand of the robot 10 to a plurality of target positions PP and postures PS in sequence is not limited to the examples shown in Figures 5 to 7. For example, the process of step S740 in Figure 5 may be executed after the process of step S760, or may be executed in parallel with the process of step S760.
[0166] Also, the series of processes from step S120 to step S150 may be omitted. In this case, for example, the operation control unit 33 may determine whether or not a specific joint mechanism JE exists among the multiple joint mechanisms JE after executing the process of step S720 and before executing the process of step S100. Then, when a specific joint mechanism JE exists among the multiple joint mechanisms JE, the operation control unit 33 may change the joint value of the specific joint mechanism JE to a joint value that sets the posture of the robot 10 to a posture other than the vicinity of the singular point.
[0167] Alternatively, the operation of the robot controller 30 when changing the position and posture of the hand of the robot 10 to a plurality of target positions PP and postures PS in sequence may be the operation shown in FIG.
[0168] Fig. 8 is a flowchart showing another example of the operation of the robot controller 30. The operation shown in Fig. 8 is similar to the operation shown in Fig. 5, except that a series of processes from step S120 to step S150 in Fig. 5 is omitted from the operation shown in Fig. 5, and a joint value update process in step S400A is executed instead of the joint value update process in step S400 in Fig. 5.
[0169] For example, in step S100, the movement control unit 33 sets the k-th target position PPk and posture PSk of the hand of the robot 10, and then proceeds to step S200. Also, for example, if the result of the determination in step S300 is negative, the movement control unit 33 proceeds to step S400A.
[0170] Next, the joint value update process in step S400A will be described with reference to FIG.
[0171] Fig. 9 is a flowchart showing an example of the joint value update process shown in Fig. 8. For example, the processing device 32 functioning as the motion control unit 33 executes a series of processes from step S420 to step S490 shown in Fig. 9 as the joint value update process of step S400A shown in Fig. 8. Therefore, the process of step S420 is executed when the result of the determination in step S300 shown in Fig. 8 is negative. Furthermore, after the process of step S490 is executed, the process of step S500 shown in Fig. 8 is executed.
[0172] Also in the description of FIG. 9, unless otherwise specified, the joint value update process refers to the joint value update process in the kth target state.
[0173] The operation shown in Fig. 9 is the same as the operation shown in Fig. 7, except that the process of step S450 is executed when the result of the determination in step S440 is positive. For example, the series of processes in steps S420 and S440 are the same as the series of processes in steps S420 and S440 shown in Fig. 7. However, in the operation shown in Fig. 9, when the result of the determination in step S440 is positive, the operation control unit 33 advances the process to step S450. Also, when the result of the determination in step S440 is negative, the operation control unit 33 advances the process to step S480, similar to the operation shown in Fig. 7.
[0174] In step S450, the motion control unit 33 returns the joint values of each joint mechanism JE to values before the update. That is, the motion control unit 33 cancels the update of the joint values of each joint mechanism JE by the process of step S490 of the previous joint value update process. Specifically, the motion control unit 33 returns the joint values of each joint mechanism JE (that is, the joint values of each joint mechanism JE updated by the process of step S490 of the previous joint value update process) to the joint values before they were updated by the process of step S490 of the previous joint value update process.
[0175] Here, in the first joint value update process after the target position PPk and orientation PSk are updated, if the result of the determination in step S440 is positive, the previous joint value update process is the joint value update process last executed in the (k-1)th target state. In this case, in step S450, the operation control unit 33 returns the joint values of each joint mechanism JE to the joint values before being updated by the process in step S490 of the joint value update process last executed in the (k-1)th target state.
[0176] After executing the process of step S450, the operation control unit 33 advances the process to step S460. The process of step S460 is the same as the process of step S460 shown in FIG. 7. In the example shown in FIG. 9, the Jacobian matrix J used in the process of step S460 is the Jacobian matrix J calculated in step S420 before the process of step S450 is executed. However, the Jacobian matrix J used in the process of step S460 may be the Jacobian matrix J calculated based on the joint values of each joint mechanism JE after the process of step S450 is executed (for example, the Jacobian matrix J calculated in step S420 of the previous joint value update process).
[0177] The specific joint mechanism JE to be the target of the process of step S460 (setting of the fixed joint) is identified based on the joint value before the process of step S450 (cancellation of the update of the joint value of each joint mechanism JE) is executed. For example, the operation control unit 33 that detects in step S440 that the posture of the robot 10 is near a singular point may further execute a process of identifying the specific joint mechanism JE (the joint mechanism JE to be set as the fixed joint) in step S440.
[0178] After executing the process of step S460, the operation control unit 33 advances the process to step S480. The series of processes (calculation processes) of steps S480 and S490 are similar to the series of processes (calculation processes) of steps S480 and S490 shown in Fig. 7. In addition, in the joint value update process shown in Fig. 9, the process of step S450 is executed when it is detected that the posture of the robot 10 is near a singular point, so that it is possible to prevent the posture of the robot 10 from being fixed near a singular point.
[0179] 9, when it is detected that the posture of the robot 10 is near a singular point, the update of the joint value of each joint mechanism JE by the process of step S490 of the previous joint value update process is canceled in step S460 of the current joint value update process. That is, the update of each joint value of the multiple joint mechanisms JE to each joint value of the multiple joint mechanisms JE calculated in the series of processes (calculation processes) of steps S480 and S490 of the previous joint value update process is canceled. Note that, as described above, the specific joint mechanism JE to be subjected to the process of step S460 (setting of fixed joint) is specified based on the joint value before the update of the joint value is canceled. Then, when it is detected that the posture of the robot 10 is near a singular point, the series of processes of steps S480 and S490 are executed after the series of processes of steps S450 and S460 (cancellation and setting of fixed joint) are executed.
[0180] Therefore, in the operation shown in FIGS. 8 and 9, it is possible to prevent the series of processes from step S200 to step S520 from being repeated in a state in which the posture of the robot 10 is fixed near a certain singular point.
[0181] 5 or 8, for example, each joint mechanism JE operates according to the taught joint value (for example, the joint value indicated by the joint state information stored in the memory 35 in step S700). However, even in the robot 10 taught a desired operation, when the robot 10 operates by complementing the n target states (positions PP and postures PS) used in teaching the robot 10, the robot controller 30 executes an operation similar to the operation shown in FIG. 5 or 8.
[0182] Next, with reference to Figures 10 to 13, the operation of the robot system 1 will be described using as an example the case of teaching the robot 10 to move the tip end TP1 along a trajectory similar to the trajectory RT when the tip end TP1 rotates around the axis Ax3 as the axis of rotation.
[0183] Fig. 10 is an explanatory diagram for explaining a trajectory taught to the robot 10. Note that Fig. 10 shows an operation ignoring singular points in order to make it easier to understand the explanation of the trajectory RT of the tip part TP1 taught to the robot 10.
[0184] The trajectory RT of the tip part TP1 taught to the robot 10 is the trajectory of the tip part TP1 when the link LK2 is rotated around the axis Ax3 as the rotation axis in a state where the rotation angle θ2 of the joint mechanism JEr2 is fixed at 0° (a state where the direction De1 is parallel to the axis Ax1). For example, the trajectory RT shown in FIG. 10 is the trajectory of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is changed from −30° to +30° in a state where the rotation angle θ2 of the joint mechanism JEr2 is fixed at 0°. In the example shown in FIG. 10, each state of the joint mechanisms JEr4 and JEr5 is also maintained in a predetermined state. In addition, the position of the joint mechanism JEr3 with respect to the link LK1 is fixed at a position where it can be further moved in the direction De1, that is, at a position where the substantial length of the link LK1 is shorter than the maximum length of the link LK1.
[0185] In the following, for ease of explanation, explanation of the orientation PSk among the target position PPk and orientation PSk of the tip part TP1 will be omitted.
[0186] As shown in Fig. 10, when the rotation angle θ2 of the joint mechanism JEr2 is fixed at 0°, the joint mechanisms JEr2, JEr3, and JEr4 are aligned in a straight line at the position PP3, and the posture of the robot 10 becomes a singular point. For this reason, when the rotation angle θ2 of the joint mechanism JEr2 is fixed at 0°, the robot 10 cannot be operated so that the trajectory of the tip part TP1 becomes the trajectory RT shown in Fig. 10 by normal inverse motion calculation. In this embodiment, as shown in Figs. 11, 12, and 13, the robot 10 is taught an operation to make the tip part TP1 pass through the trajectory RT shown in Fig. 10 while avoiding the singular point. Hereinafter, the trajectory RT shown in Fig. 10 may be referred to as a target trajectory RT.
[0187] Fig. 11 is an explanatory diagram for explaining an example of the operation of the robot system 1 when teaching the robot 10 an operation for making the tip part TP1 pass through a target trajectory RT. Note that Fig. 11 assumes a case where the robot controller 30 executes the operation shown in Fig. 5. In the following, it is assumed that a series of processes from step S200 to step S520 are repeated multiple times, and the joint values of each joint mechanism JE for making the position of the tip part TP1 the target position PPk are calculated before the loop count exceeds an upper limit value.
[0188] First, the robot controller 30 sets the position PP1 of the first target in step S100 of FIG. 5. The posture of the robot 10 at the position PP1 of the first target is the same as the posture of the robot 10 at the position PP1 shown in FIG. 10. For example, at the position PP1, the rotation angle θ3 of the joint mechanism JEr3 is −30°, which is outside the range (−10°≦θ3≦+10°) of the rotation angle θ3 of the joint mechanism JEr3 that defines the vicinity of the singular point. Note that in FIG. 11, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process when the position of the tip part TP1 is set to the position PP1 is always less than −10°. Therefore, in the joint value update process that is repeatedly executed, the result of the determination in step S440 of FIG. 7 is always negative (the posture of the robot 10 is not in the vicinity of the singular point). For this reason, in the joint value update process that is repeatedly executed, the process of step S460 of FIG. 7 is not executed. That is, in the operation of the robot 10 to position the tip part TP1 to the position PP1, none of the multiple joint mechanisms JE is set as a fixed joint.
[0189] When the joint values of the joint mechanisms JE for positioning the tip part TP1 at position PP1 are calculated (when the result of the determination in step S300 in FIG. 5 is positive), the robot controller 30 controls each joint mechanism JE in accordance with the calculated joint values of each joint mechanism JE (step S700 in FIG. 5). Then, the robot controller 30 executes a series of processes in steps S720, S740, S760, and S100 in FIG. 5 to update the target position PP to the second target position PP2, and continues the operation shown in FIG. 5.
[0190] The posture of the robot 10 at the second target position PP2 is the same as the posture of the robot 10 at the position PP2 shown in Fig. 10. For example, at the position PP2, the rotation angle θ3 of the joint mechanism JEr3 is -10°, which is within the range of the rotation angle θ3 of the joint mechanism JEr3 that defines the vicinity of the singular point (-10°≦θ3≦+10°). Note that Fig. 11 assumes a case in which the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process becomes -10° before the joint values of each joint mechanism JE for positioning the tip part TP1 to the position PP2 are calculated.
[0191] Therefore, for example, in the joint value update process executed after the joint value update process in which the rotation angle θ3 of the joint mechanism JEr3 is updated to -10°, the result of the determination in step S440 in FIG. 7 is always positive (the posture of the robot 10 is in the vicinity of the singular point). For this reason, in the joint value update process executed after the joint value update process in which the rotation angle θ3 of the joint mechanism JEr3 is updated to -10°, the process of step S460 in FIG. 7 is always executed. For example, in step S460 in FIG. 7, the robot controller 30 specifies the joint mechanism JEr3 as a specific joint mechanism JE (joint mechanism JE set to a fixed joint). Then, in order to avoid the singular point, the robot controller 30 sets the value of the element corresponding to the joint mechanism JEr3 among the multiple elements of the Jacobian matrix J to substantially 0. As a result, for example, the value of the element of the column corresponding to the joint mechanism JEr3 of the Jacobian matrix J is set to substantially 0. As a result, the joint mechanism JEr3 is set to a fixed joint. Then, in step S480 of FIG. 7, the robot controller 30 calculates a pseudo-inverse matrix J of the Jacobian matrix J in which the element value corresponding to the joint mechanism JEr3 is set to substantially 0. + After calculating the displacement amount of each joint mechanism JE, the robot controller 30 updates the joint value of each joint mechanism JE based on the displacement amount of each joint mechanism JE in step S490 of FIG.
[0192] In addition, in the joint value update process executed after the joint value update process in which the rotation angle θ3 of the joint mechanism JEr3 is updated to -10°, the joint mechanism JEr3 is set as a fixed joint, and therefore the displacement amount of the joint mechanism JEr3 is 0 or approximately 0. Therefore, the joint value of the joint mechanism JEr3 after the update by the process of step S490 is the same or approximately the same as the value before the update. That is, the rotation angle θ3 of the joint mechanism JEr3 is not changed and is maintained at -10°. In this way, after the joint mechanism JEr3 is set as a fixed joint, the rotation angle θ3 of the joint mechanism JEr3 is maintained at -10° even if the joint value update process is repeatedly executed multiple times.
[0193] Furthermore, when the joint values of each joint mechanism JE for positioning the tip part TP1 at position PP2 are calculated, the robot controller 30 controls each joint mechanism JE in accordance with the calculated joint values of each joint mechanism JE (step S700 in FIG. 5). Then, the robot controller 30 executes a series of processes in steps S720, S740, S760, and S100 in FIG. 5 to update the target position PP to the third target position PP3, and continues the operation shown in FIG. 5.
[0194] The posture of the robot 10 at the third target position PP3 is different from the posture of the robot 10 at the position PP3 shown in Fig. 10 because the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately -10°. In Fig. 11, a case is assumed in which the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value initial update process in step S140 in Fig. 5 is a value slightly closer to 0° than -10°. The dashed arrow in Fig. 11 indicates that the rotation angle θ3 of the joint mechanism JEr3 has been updated to a value slightly closer to 0° than -10° by the joint value initial update process in step S140 in Fig. 5.
[0195] Therefore, in the joint value update process that is repeatedly executed, the result of the determination in step S440 in Fig. 7 is always positive (the posture of the robot 10 is in the vicinity of the singular point). For this reason, in the joint value update process that is repeatedly executed, the process of step S460 in Fig. 7 is always executed. That is, the operation of the robot 10 to position the tip part TP1 to position PP3 is executed in a state where the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately -10°.
[0196] For example, the robot controller 30 drives the joint mechanisms JEr2, JEp1, and JEp2 to move the tip part TP1 to a position PP3 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is 0° on the trajectory RT shown in FIG. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates in the positive direction (clockwise) by a predetermined amount around the axis Ax2 as the rotation axis. Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 is greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in FIG. 10. In the example shown in FIG. 11, the robot controller 30 drives the joint mechanism JEp1 so that the substantial length of the link LK1 becomes longer, and drives the joint mechanism JEp2 so that the substantial length of the link LK2 becomes shorter. It should be noted that the change in the effective length of each of the links LK1 and LK2 is not limited to the above example.
[0197] In this way, in this embodiment, the position of the tip part TP1 can be set to position PP3 while maintaining the rotation angle θ3 of the joint mechanism JEr3 at approximately -10°, so that the tip part TP1 can be moved to position PP3 while avoiding singular points.
[0198] After moving the tip part TP1 to position PP3, the robot controller 30 executes a series of processes of steps S720, S740, S760 and S100 in FIG. 5 to update the target position PP to the fourth target position PP4, and continues the operation shown in FIG. 5.
[0199] Also for the fourth target position PP4, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value initial update process in step S140 of Fig. 5 is a value slightly closer to 0° than -10°. For this reason, the operation of the robot 10 to move the position of the tip part TP1 to position PP4 is executed in a state where the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately -10°, similar to the third target position PP3.
[0200] For example, the robot controller 30 drives the joint mechanisms JEr2, JEp1, and JEp2 to move the tip part TP1 to a position PP4 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is +10° on the trajectory RT shown in FIG. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates in the positive direction (clockwise) by a predetermined amount around the axis Ax2 as the rotation axis. Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 is greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in FIG. 10. In the example shown in FIG. 11, the robot controller 30 drives the joint mechanism JEp1 so that the substantial length of the link LK1 becomes longer, and drives the joint mechanism JEp2 so that the substantial length of the link LK2 becomes shorter. It should be noted that the change in the effective length of each of the links LK1 and LK2 is not limited to the above example.
[0201] In this manner, in this embodiment, the position of the tip end TP1 can be set to the position PP4 while the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately −10°.
[0202] After moving the tip part TP1 to position PP4, the robot controller 30 executes a series of processes of steps S720, S740, S760 and S100 in FIG. 5 to update the target position PP to the fifth target position PP5 and continue the operation shown in FIG. 5.
[0203] Also at the fifth target position PP5, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value initial update process in step S140 of Fig. 5 is a value slightly closer to 0° than -10°. Therefore, the operation of the robot 10 to move the position of the tip part TP1 to position PP5 is executed in a state where the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately -10°, similar to the third target position PP3.
[0204] For example, the robot controller 30 drives the joint mechanisms JEr2, JEp1, and JEp2 to move the tip part TP1 to a position PP5 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is +30° on the trajectory RT shown in FIG. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates in the positive direction (clockwise) by a predetermined amount around the axis Ax2 as the rotation axis. Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 is greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in FIG. 10. In the example shown in FIG. 11, the robot controller 30 drives the joint mechanism JEp1 so that the substantial length of the link LK1 is shortened. Note that the change in the substantial length of each of the links LK1 and LK2 is not limited to the above example.
[0205] In this manner, in this embodiment, the position of the tip end TP1 can be set to the position PP5 while the rotation angle θ3 of the joint mechanism JEr3 is maintained at approximately −10°.
[0206] The robot controller 30 ends the operation shown in FIG. 5 because the teaching of the operation of moving the tip part TP1 to the five (n) target positions PP in order has been completed.
[0207] In this manner, in this embodiment, the robot 10 can be operated so that the tip part TP1 passes through the trajectory RT shown in FIG. 10 while avoiding singular points.
[0208] Next, with reference to FIG. 12, another example of the operation of the robot system 1 when teaching the robot 10 an operation for making the tip part TP1 pass through a target trajectory RT will be described.
[0209] Fig. 12 is an explanatory diagram for explaining another example of the operation of the robot system 1 when teaching the robot 10 an operation for making the tip end TP1 pass through a target trajectory RT. Note that Fig. 12 also assumes a case where the robot controller 30 executes the operation shown in Fig. 5. An explanation of operations similar to those explained in Fig. 11 will be omitted. In the operation shown in Fig. 12, the operations after the fourth target position PP4 are different from the operation shown in Fig. 11.
[0210] 12, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated in the joint value initial update process in step S140 in FIG. 5 is also a value farther from 0° than −10° (less than −10°) at the fourth target position PP4.
[0211] Therefore, in the joint value update process executed next to the joint value initial update process, the result of the determination in step S440 in Fig. 7 is negative (the posture of the robot 10 is not near a singular point). For this reason, in the joint value update process executed next to the joint value initial update process, the process of step S460 in Fig. 7 is not executed. That is, in the example shown in Fig. 12, the setting of the fixed joint is released by the joint value initial update process.
[0212] Also, in FIG. 12, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process when the position of the tip part TP1 is set to the position PP4 is always less than −10°. Therefore, in the joint value update process that is repeatedly executed, the result of the determination in step S440 in FIG. 7 is always negative (the posture of the robot 10 is not in the vicinity of the singular point). For this reason, in the joint value update process that is repeatedly executed, the process of step S460 in FIG. 7 is not executed. That is, the operation of the robot 10 to set the position of the tip part TP1 to the position PP4 is executed without setting any of the multiple joint mechanisms JE as a fixed joint. Thus, in the example shown in FIG. 12, in the operation of the robot 10 to set the position of the tip part TP1 to the position PP4, the posture of the robot 10 leaves the vicinity of the singular point.
[0213] For example, the robot controller 30 drives the joint mechanisms JEr2, JEr3, JEp1, and JEp2 to move the tip part TP1 to a position PP4 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is +10° on the trajectory RT shown in Fig. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates in the positive direction (clockwise) by a predetermined amount around the axis Ax2 as the rotation axis. In addition, the robot controller 30 drives the joint mechanism JEr3 so that the link LK2 rotates in the negative direction (counterclockwise) by a predetermined amount around the axis Ax3 as the rotation axis. Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 is greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in Fig. 10. 12, the robot controller 30 drives the joint mechanism JEp1 so as to lengthen the substantial length of the link LK1, and drives the joint mechanism JEp2 so as to shorten the substantial length of the link LK2. Note that the change in the substantial length of each of the links LK1 and LK2 is not limited to the above example.
[0214] In this manner, in this embodiment, the position of the tip end TP1 can be set to the position PP4 by releasing the fixation of the rotation angle θ3 of the joint mechanism JEr3.
[0215] After moving the tip part TP1 to position PP4, the robot controller 30 executes a series of processes of steps S720, S740, S760 and S100 in FIG. 5 to update the target position PP to the fifth target position PP5 and continue the operation shown in FIG. 5.
[0216] It is assumed that at both the fifth target position PP5 and the fifth target position PP5, the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value initial update process is less than -10°, and the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process is always less than -10°.
[0217] 7 is always negative (the posture of the robot 10 is not near the singular point). Therefore, the operation of the robot 10 to set the position of the tip part TP1 to position PP4 is executed without setting any of the multiple joint mechanisms JE as fixed joints, similar to the fourth target position PP4.
[0218] For example, the robot controller 30 drives the joint mechanisms JEr2, JEr3, JEp1, and JEp2 to move the tip part TP1 to a position PP5 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is +30° on the trajectory RT shown in Fig. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates a predetermined amount in the positive direction (clockwise) about the axis Ax2 as the rotation axis. Also, the robot controller 30 drives the joint mechanism JEr3 so that the link LK2 rotates a predetermined amount in the negative direction (counterclockwise) about the axis Ax3 as the rotation axis.
[0219] Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 becomes greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in Fig. 10. In the example shown in Fig. 12, the robot controller 30 drives the joint mechanism JEp1 so as to shorten the substantial length of the link LK1, and drives the joint mechanism JEp2 so as to lengthen the substantial length of the link LK2. Note that the change in the substantial length of each of the links LK1 and LK2 is not limited to the above example.
[0220] Since the robot controller 30 has finished teaching the operation of moving the tip part TP1 to the five (n) target positions PP in order, it ends the operation shown in Fig. 5. In the operation shown in Fig. 12, the robot 10 also operates so that the tip part TP1 passes through the trajectory RT shown in Fig. 10 while avoiding singular points.
[0221] 12, the posture of the robot 10, which has changed to the vicinity of the singular point in the operation of changing the position of the tip part TP1 to position PP2, leaves the vicinity of the singular point in the operation of changing the position of the tip part TP1 to position PP4. However, it is also conceivable that the posture of the robot 10 leaves the vicinity of the singular point in the operation of changing the position of the tip part TP1 to position PP3 or the operation of changing the position of the tip part TP1 to position PP5.
[0222] Next, with reference to FIG. 13, another example of the operation of the robot system 1 when teaching the robot 10 an operation for making the tip part TP1 pass through a target trajectory RT will be described.
[0223] Fig. 13 is an explanatory diagram for explaining another example of the operation of the robot system 1 when teaching the robot 10 an operation for making the tip part TP1 pass through a target trajectory RT. Note that Fig. 13 assumes a case where the robot controller 30 executes the operation shown in Fig. 8. The explanation of the same operation as that explained in Fig. 11 will be omitted.
[0224] First, the robot controller 30 sets the position PP1 of the first target in step S100 of FIG. 8. The posture of the robot 10 at the position PP1 of the first target is the same as the posture of the robot 10 at the position PP1 shown in FIG. 10. For example, at the position PP1, the rotation angle θ3 of the joint mechanism JEr3 is −30°, which is outside the range (−10°≦θ3≦+10°) of the rotation angle θ3 of the joint mechanism JEr3 that defines the vicinity of the singular point. Note that in FIG. 13, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process when the position of the tip part TP1 is set to the position PP1 is always less than −10°. Therefore, in the joint value update process that is repeatedly executed, the result of the determination in step S440 of FIG. 9 is always negative (the posture of the robot 10 is not in the vicinity of the singular point). For this reason, in the joint value update process that is repeatedly executed, the series of processes in steps S450 and S460 of FIG. 9 are not executed. That is, in the operation of the robot 10 to position the tip part TP1 to the position PP1, none of the multiple joint mechanisms JE is set as a fixed joint.
[0225] When the joint values of each joint mechanism JE for positioning the tip part TP1 at position PP1 are calculated (when the result of the determination in step S300 in FIG. 8 is positive), the robot controller 30 controls each joint mechanism JE in accordance with the calculated joint values of each joint mechanism JE (step S700 in FIG. 8). Then, the robot controller 30 executes a series of processes in steps S720, S740, S760, and S100 in FIG. 8 to update the target position PP to the second target position PP2, and continues the operation shown in FIG. 8.
[0226] The posture of the robot 10 at the second target position PP2 is different from the posture of the robot 10 at the position PP2 shown in Fig. 10. Note that Fig. 13 assumes a case in which the rotation angle θ3 of the joint mechanism JEr3, which is updated by the joint value update process, becomes -10° once before the joint values of each joint mechanism JE for positioning the tip part TP1 to position PP2 are calculated.
[0227] Therefore, for example, in the joint value update process executed next to the joint value update process in which the rotation angle θ3 of the joint mechanism JEr3 is updated to -10°, the result of the determination in step S440 in Fig. 9 is positive (the posture of the robot 10 is in the vicinity of the singular point). For this reason, in the joint value update process executed next to the joint value update process in which the rotation angle θ3 of the joint mechanism JEr3 is updated to -10°, a series of processes in steps S450 and S460 in Fig. 9 are executed.
[0228] For example, in step S450 of Fig. 9, the robot controller 30 cancels the update of the joint value of each joint mechanism JE performed in step S490 of the previous joint value update process. As a result, the current joint value of each joint mechanism JE (the joint value used in step S490) becomes the joint value before being updated in step S490 of the previous joint value update process. As a result, for example, the rotation angle θ3 of the joint mechanism JEr3 becomes the value (less than -10°) before being updated to -10°.
[0229] 9, the robot controller 30 specifies the joint mechanism JEr3 as a specific joint mechanism JE (joint mechanism JE set as a fixed joint). Then, in order to avoid a singular point, the robot controller 30 sets the value of an element corresponding to the joint mechanism JEr3 among the multiple elements of the Jacobian matrix J to substantially 0. As a result, for example, the value of an element in the column corresponding to the joint mechanism JEr3 of the Jacobian matrix J is set to substantially 0. As a result, the joint mechanism JEr3 is set as a fixed joint.
[0230] Then, in step S480 of FIG. 9, the robot controller 30 calculates a pseudo-inverse matrix J of the Jacobian matrix J in which the element value corresponding to the joint mechanism JEr3 is set to substantially 0. +Using the above, the robot controller 30 calculates the displacement amount of each joint mechanism JE. After calculating the displacement amount of each joint mechanism JE, in step S490 of FIG. 9, the robot controller 30 updates the joint value of each joint mechanism JE based on the displacement amount of each joint mechanism JE. In the above example, since the joint mechanism JEr3 is set as a fixed joint, the rotation angle θ3 of the joint mechanism JEr3 is maintained at a value less than −10°. Therefore, the posture of the robot 10 is prevented from becoming close to a singular point.
[0231] 13, the operation of the robot 10 to set the position of the tip part TP1 to position PP2 is executed while avoiding the posture of the robot 10 being fixed in the vicinity of a singular point. For example, the robot controller 30 drives the joint mechanism JEr3 to move the tip part TP1 to position PP2 of the tip part TP1 in the trajectory RT shown in FIG. 10 when the rotation angle θ3 of the joint mechanism JEr3 is −10°. Specifically, for example, the robot controller 30 drives the joint mechanism JEr3 so that the link LK2 rotates in the positive direction (clockwise) by a predetermined amount about the axis Ax3 as the rotation axis. In this case, the rotation angle θ3 of the joint mechanism JEr3 becomes a value less than −10° (for example, −11°), and the posture of the robot 10 is not in the vicinity of a singular point. In addition, the robot controller 30 may move the tip part TP1, for example, by driving joint mechanisms JEp1 and JEp2 in addition to the joint mechanism JEr3, so that the position of the tip part TP1 is closer to position PP2 than when the joint mechanisms JEp1 and JEp2 are not driven.
[0232] In this way, in the example shown in FIG. 13, the tip end TP1 can be moved to the position PP2 while preventing the posture of the robot 10 from being fixed near the singular point.
[0233] After moving the tip part TP1 to position PP2, the robot controller 30 executes a series of processes of steps S720, S740, S760 and S100 in FIG. 8 to update the target position PP to the third target position PP3 and continue the operation shown in FIG. 8.
[0234] At the third target position PP3, it is assumed that the rotation angle θ3 of the joint mechanism JEr3 updated by the joint value update process that is repeatedly executed is always less than −10°. Therefore, in the joint value update process that is repeatedly executed, the result of the determination in step S440 in Fig. 9 is always negative (the posture of the robot 10 is not near the singular point). For this reason, the operation of the robot 10 to move the position of the tip part TP1 to position PP3 is executed without setting any of the multiple joint mechanisms JE as a fixed joint.
[0235] For example, the robot controller 30 drives the joint mechanisms JEr2, JEr3, JEp1, and JEp2 to move the tip part TP1 to a position PP3 of the tip part TP1 when the rotation angle θ3 of the joint mechanism JEr3 is 0° on the trajectory RT shown in Fig. 10. Specifically, for example, the robot controller 30 drives the joint mechanism JEr2 so that the link LK1 rotates a predetermined amount in the positive direction (clockwise) about the axis Ax2 as the rotation axis. Also, the robot controller 30 drives the joint mechanism JEr3 so that the link LK2 rotates a predetermined amount in the negative direction (counterclockwise) about the axis Ax3 as the rotation axis.
[0236] Furthermore, the robot controller 30 drives the joint mechanisms JEp1 and JEp2 so that the sum of the substantial length of the link LK1 and the substantial length of the link LK2 becomes greater than the sum of the substantial length of the link LK1 and the substantial length of the link LK2 shown in Fig. 10. In the example shown in Fig. 13, the robot controller 30 drives the joint mechanism JEp1 so that the substantial length of the link LK1 becomes longer, and drives the joint mechanism JEp2 so that the substantial length of the link LK2 becomes shorter. Note that the change in the substantial length of each of the links LK1 and LK2 is not limited to the above example.
[0237] The robot controller 30 continues the operation shown in Fig. 8 until the instruction of the operation of moving the tip part TP1 to five (n) target positions PP in order is completed. In the operation shown in Fig. 13, the robot 10 operates so that the tip part TP1 passes through the trajectory RT shown in Fig. 10 while avoiding the posture of the robot 10 being fixed near a singular point.
[0238] As described above, in this embodiment, the robot system 1 includes a robot 10 having seven or more joint mechanisms JE, and a robot controller 30 that controls the operation of the robot 10. The robot controller 30 calculates the joint values of the joint mechanisms JE for setting the tip TP1 of the robot 10 to a target position PP and posture PS by executing a calculation process including an inverse kinematics calculation that calculates the displacement amount of the joint mechanisms JE, and operates the robot 10. When it is detected that the posture of the robot 10 during operation is in the vicinity of a singular point, the robot controller 30 executes a fixing process that sets at least one specific joint mechanism JE involved in the singular point among the joint mechanisms JE as a fixed joint, and then executes an inverse kinematics calculation, thereby calculating the joint values of the joint mechanisms JE without substantially displacing the joint values of the fixed joints in the calculation process, and controls the operation of the robot 10 based on the joint values of the joint mechanisms JE calculated in the calculation process.
[0239] In addition, in the teaching method for the robot 10, the robot controller 30 executes a calculation process including an inverse kinematics calculation for calculating the displacement amounts of the multiple joint mechanisms JE for the position PP and posture PS of the tip part TP1 of the robot 10 specified at each of the multiple teaching points, and calculates the joint values of the multiple joint mechanisms JE, thereby teaching the robot 10 the multiple teaching points. When it is detected that the posture of the robot 10 being taught is near a singular point, the robot controller 30 executes a fixing process for setting at least one specific joint mechanism JE involved in the singular point among the multiple joint mechanisms JE as a fixed joint, and then executes an inverse kinematics calculation, thereby calculating the joint values of the multiple joint mechanisms JE without substantially displacing the joint values of the fixed joints in the calculation process, and teaches the robot 10 the teaching points based on the joint values of the multiple joint mechanisms JE calculated in the calculation process.
[0240] In this manner, in the present embodiment, when it is detected that the posture of the robot 10 is near a singular point, the joint values of the multiple joint mechanisms JE are calculated without substantially displacing the joint values of at least one specific joint mechanism JE involved in the singular point. As a result, in the present embodiment, it is possible to prevent the posture of the robot 10 from approaching the singular point from the vicinity of the singular point. As a result, in the present embodiment, it is possible to control the operation of the robot 10 while preventing the posture of the robot 10 from becoming a singular point.
[0241] In addition, in this embodiment, when it is detected that the posture of the robot 10 is near a singular point, a fixing process is performed to set at least one specific joint mechanism JE involved in the singular point as a fixed joint among the multiple joint mechanisms JE, and then the inverse kinematic calculation is performed. That is, in this embodiment, even when it is detected that the posture of the robot 10 is near a singular point, the inverse kinematic calculation can be performed to calculate the joint value of each joint mechanism JE without changing the number of rows and columns of a matrix (for example, a Jacobian matrix J) used in the inverse kinematic calculation or without dividing the matrix into multiple matrices. As a result, in this embodiment, it is possible to suppress an increase in the amount of calculation when calculating the joint value of each joint mechanism JE, compared to a control method in which a Jacobian matrix J with a changed number of rows and columns is newly created every time a singular point is detected. That is, in this embodiment, it is possible to suppress an increase in the load when controlling the robot 10. As a result, in this embodiment, it is possible to suppress an increase in the control time when controlling the robot 10.
[0242] Furthermore, in this embodiment, the robot controller 30 repeatedly executes the calculation process until the tip portion TP1 of the robot 10 is in a state that is acceptable as the target position PP and posture PS, and when it is detected that the posture of the robot 10 is near a singular point, it executes a process of canceling the update of each of the joint values of the multiple joint mechanisms JE to the joint values of each of the multiple joint mechanisms JE calculated in the previous calculation process, and a fixing process, and then executes an inverse kinematic calculation, thereby calculating the joint values of the multiple joint mechanisms JE in the calculation process without substantially displacing the joint values of the fixed joints (specific joint mechanisms JE).
[0243] In this manner, in the present embodiment, when it is detected that the posture of the robot 10 is near a singular point, the update of the joint values of each joint mechanism JE in the previous calculation process is canceled. As a result, in the present embodiment, it is possible to prevent the joint values that bring the posture of the robot 10 near a singular point from being used in the next calculation process. As a result, in the present embodiment, it is possible to prevent the calculation process from being repeated in a state in which the posture of the robot 10 is fixed near a singular point. Therefore, in the present embodiment, it is possible to control the operation of the robot 10 while preventing the posture of the robot 10 from being fixed near a singular point.
[0244] In addition, in the present embodiment, the robot controller 30 performs inverse kinematic calculations using the Jacobian matrix J in the calculation process, and in the fixing process, the values of the elements relating to the fixed joints (specific joint mechanisms JE) among the multiple elements of the Jacobian matrix J are set to substantially 0, thereby not displacing the joint values of the fixed joints.
[0245] In this manner, in the present embodiment, by setting the value of the element related to a specific joint mechanism JE among the multiple elements of the Jacobian matrix J to substantially 0, the joint value of the specific joint mechanism JE can be easily set to a fixed value. That is, in the present embodiment, even if a specific joint mechanism JE whose joint value is fixed exists among the multiple joint mechanisms JE, the inverse kinematic calculation can be performed to calculate the joint value of each joint mechanism JE without changing the number of rows and columns of the Jacobian matrix J or without dividing the Jacobian matrix J into multiple matrices. As a result, in the present embodiment, it is possible to suppress an increase in the amount of calculation when calculating the joint value of each joint mechanism JE, compared to a control method in which a Jacobian matrix for calculating the displacement amount of other joint mechanisms JE other than the specific joint mechanism JE is newly created every time a singularity is detected. That is, in the present embodiment, it is possible to suppress an increase in the load when controlling the robot 10. As a result, in the present embodiment, it is possible to suppress an increase in the control time when controlling the robot 10.
[0246] [2. Modifications] The present invention is not limited to the above-described embodiments. Specific modified embodiments are exemplified below. Two or more embodiments selected from the following examples may be combined.
[0247] [First Modification] In the above embodiment, the joint mechanism JEr4 rotates the tip part TP1 relative to the link LK2 around the axis Ax4 perpendicular to the direction De2 in which the link LK2 extends, but the present invention is not limited to this. For example, the joint mechanism JEr4 may rotate the tip part TP1 relative to the link LK2 around an axis that forms an angle with the direction De2 in which the link LK2 extends that is equal to or smaller than a predetermined angle.
[0248] Fig. 14 is an explanatory diagram for explaining an example of a tip portion TP1A according to the first modified example. Elements similar to those explained in Fig. 1 to Fig. 13 are given the same reference numerals, and detailed explanations will be omitted.
[0249] For example, the robot 10 according to this modification is similar to the robot 10 shown in Fig. 1, except that the robot 10 has a link LK2A, a joint mechanism JEr4A, and a tip part TP1A instead of the link LK2, joint mechanism JEr4, and tip part TP1 shown in Fig. 1. The link LK2A is similar to the link LK2, except that the joint mechanism JEr4A is connected instead of the joint mechanism JEr4.
[0250] The joint mechanism JEr4A connects the link LK2A and the tip TP1A, and rotates the tip TP1A relative to the link LK2A around an axis Ax4A parallel to the direction De2. The rotation direction Dr4 in Fig. 14 shows the rotation direction of the tip TP1A when rotating around the axis Ax4A. The axis Ax4A corresponds to an axis whose angle with the direction De2 in which the link LK2A extends is equal to or smaller than a predetermined angle.
[0251] In the tip part TP1A, the end effector 20 is attached to the end surface TP1sf in the same manner as in the tip part TP1 shown in FIG. 1. The tip part TP1A includes a first part TP11A connected to the link LK2A, a second part TP12A connected to the first part TP11A, a joint mechanism JEr5A, and a joint mechanism JEr6. The first part TP11A is connected to the link LK2A via, for example, a joint mechanism JEr4A. Therefore, the first part TP11A rotates with respect to the link LK2A about the axis Ax4A as the rotation axis.
[0252] The joint mechanism JEr5A connects the first part TP11A and the second part TP12A, and rotates the second part TP12A relative to the first part TP11A around an axis Ax5 perpendicular to the axis Ax4A. The rotation direction Dr5 in FIG. 1 indicates the rotation direction of the second part TP12A when rotating around the axis Ax5.
[0253] The joint mechanism JEr6 is similar to the joint mechanism JEr6 shown in Fig. 1. For example, the joint mechanism JEr6 rotates at least a part (for example, end face TP1sf) of the tip part TP1A around an axis Ax6 perpendicular to the axis Ax5 as a rotation axis. In the example shown in Fig. 14, the surface of the joint mechanism JEr6 corresponds to the end face TP1sf, similar to the joint mechanism JEr6 shown in Fig. 1. Note that in a configuration in which the joint mechanism JEr6 is included in the second part TP12A, the end face of the second part TP12A may be the end face TP1sf.
[0254] As described above, in this modified example, the joint mechanism JEr4A rotates the tip part TP1A relative to the link LK2A around the axis Ax4A, which forms an angle with the direction De2 equal to or smaller than a predetermined angle. The tip part TP1A includes a first part TP11 connected to the link LK2A, a second part TP12 connected to the first part TP11, a joint mechanism JEr5, and a joint mechanism JEr6. The joint mechanism JEr5 connects the first part TP11 and the second part TP12, and rotates the second part TP12 relative to the first part TP11 around the axis Ax5, which forms an angle with the axis Ax4A greater than a predetermined angle, as the rotation axis. The joint mechanism JEr6 rotates a part of the tip part TP1 to which the end effector 20 is attached (for example, the end face TP1sf) around the axis Ax6, which forms an angle with the axis Ax5 greater than a predetermined angle, as the rotation axis.
[0255] In this modified example as well, the same effects as those of the above-described embodiment can be obtained.
[0256] [Second modified example] In the above-described embodiment and modified example, the motor MOr3 that drives the joint mechanism JEr3 moves integrally with the joint mechanism JEr3, but the present invention is not limited to such an embodiment. For example, the motor MOr3 may be fixed to a predetermined location of the link LK1 so as to be able to drive the joint mechanism JEr3 even if the relative position of the joint mechanism JEr3 with respect to the link LK1 changes. In this modified example, the same effects as those of the above-described embodiment and modified example can be obtained.
[0257] [Third Modification] In the above-described embodiment and modified example, the robot 10 is exemplified as a vertical six-axis articulated robot to which two joint mechanisms JEp1 and JEp2 are added, but the present invention is not limited to such an embodiment. For example, the robot 10 may be a seven-axis or more articulated robot to which two joint mechanisms JEp1 and JEp2 are added. Specifically, one or more links LK different from the links LK1 and LK2 may be disposed between the body part BDP and the joint mechanism JEr2. Alternatively, one or more links LK different from the links LK1 and LK2 may be disposed between the joint mechanism JEr4 and the tip part TP1. That is, the robot 10 may have three or more links LK connecting the body part BDP and the tip part TP1. In this case, the three or more links LK of the robot 10 correspond to a plurality of links LK including the links LK1 and LK2.
[0258] Alternatively, the robot 10 may be configured by adding one or both of the two joint mechanisms JEp1 and JEp2 to a four or more axis articulated robot.
[0259] As described above, in this modified example as well, the same effects as those of the above-described embodiment and modified example can be obtained.
[0260] [Fourth Variation] In the above-described embodiment, when a joint value that makes the posture of the robot 10 a singular point is calculated by the joint value initial update process in step S140 or the joint value update process in step S400 in Fig. 5, it is not necessary to execute update of the joint value. In this modified example, the same effects as those of the above-described embodiment and modified example can be obtained.
[0261] [3. Application Examples] The robot system 1 including the robot 10 described in the above-mentioned embodiment and modified examples may be used in a manufacturing method of an article including assembling or removing a part.
[0262] [4.Other] The distinction between the "turning" briefly explained in the above embodiment and other rotations will be described with some examples.
[0263] FIG. 15 is an explanatory diagram for explaining an example of turning. In FIG. 15, the connection of two links LKi and LKj whose longitudinal directions can be grasped is taken as an example to explain the distinction between turning and other rotations. The extension direction Dei in FIG. 15 indicates the direction in which the link LKi extends, and the extension direction Dej indicates the direction in which the link LKj extends. In addition, the joint mechanism JEri in FIG. 15 connects the link LKi and the link LKj, and rotates the link LKj relative to the link LKi around the axis Axi as the rotation axis.
[0264] In the example shown in FIG. 15, when the angle β between the extension direction Dei (specific direction) of the link LKi and the axis Axi is greater than a predetermined angle, the rotation about the axis Axi corresponds to a "turn". In other words, when the angle β between the extension direction Dei of the link LKi and the axis Axi is equal to or less than a predetermined angle, the rotation about the axis Axi corresponds to a rotation other than a turn (a rotation other than a turn that is distinguished from a turn). The "rotation" shown in FIG. 15 indicates a rotation other than a turn. In addition, the predetermined angle is not particularly limited, but in FIG. 15, the predetermined angle is assumed to be 45°. The angle β between the extension direction Dei and the axis Axi is an angle between 0° and 90° among a plurality of angles that are understood as the angle of the axis Axi with respect to the extension direction Dei (for example, four angles for two straight lines that intersect with each other, or 0° and 180° for two parallel straight lines).
[0265] In the first pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 90°, which is greater than a predetermined angle (45°). Therefore, in the first pattern, the rotation of the link LKj around the axis Axi is a turn. Also, in the first pattern, the extension direction Dej of the link LKj is perpendicular to the axis Axi. Note that in the first pattern, when the link LKj rotates (turns) around the axis Axi as the rotation axis, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi changes.
[0266] In the second pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 0°, which is less than a predetermined angle (45°). Therefore, in the second pattern, the rotation of the link LKj around the axis Axi is a rotation other than a turning. Also, in the second pattern, the extension direction Dej of the link LKj is parallel to the extension direction Dei of the link LKi and the axis Axi. That is, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is 0°. Note that in the second pattern, even if the link LKj rotates around the axis Axi as the rotation axis, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is maintained at 0° and is always constant.
[0267] In the third pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 0°, which is less than a predetermined angle (45°). Therefore, in the third pattern, the rotation of the link LKj around the axis Axi is a rotation other than a turning. Also, in the third pattern, the extension direction Dej of the link LKj is perpendicular to the extension direction Dei of the link LKi and the axis Axi. That is, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is 90°. Note that in the third pattern, even if the link LKj rotates around the axis Axi as the rotation axis, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is maintained at 90° and is always constant.
[0268] In the fourth pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 10°, which is less than the predetermined angle (45°). Therefore, in the fourth pattern, the rotation of the link LKj around the axis Axi is a rotation other than a turning. Also, in the fourth pattern, the extension direction Dej of the link LKj is parallel to the axis Axi, and the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is 10°. Note that in the fourth pattern, even if the link LKj rotates around the axis Axi, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is maintained at 10° and is always constant.
[0269] In the fifth pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 70°, which is greater than the predetermined angle (45°). Therefore, in the fifth pattern, the rotation of the link LKj around the axis Axi is a turn. Also, in the fifth pattern, the extension direction Dej of the link LKj is perpendicular to the axis Axi. Note that in the fifth pattern, when the link LKj rotates (turns) around the axis Axi, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi changes.
[0270] In the sixth pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 10°, which is less than the predetermined angle (45°). Therefore, in the sixth pattern, the rotation of the link LKj around the axis Axi is a rotation other than a turn. Also, in the sixth pattern, the extension direction Dej of the link LKj is perpendicular to the axis Axi. Note that in the sixth pattern, when the link LKj rotates around the axis Axi, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi changes.
[0271] In the seventh pattern, the angle β between the extension direction Dei of the link LKi and the axis Axi is 70°, which is larger than the predetermined angle (45°). Therefore, in the seventh pattern, the rotation of the link LKj around the axis Axi is a turn. Also, in the seventh pattern, the extension direction Dej of the link LKj is parallel to the axis Axi, and the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is 70°. Note that in the seventh pattern, even if the link LKj rotates around the axis Axi, the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is maintained at 70° and is always constant.
[0272] In this way, in the above-described embodiment and modified example, among the rotations of the link LKj with respect to the link LKi, the rotation about the axis Axi, which forms an angle with the extension direction Dei of the link LKi larger than a predetermined angle, is also referred to as a turn. However, the definition of "turn" is not limited to the above example. For example, if the above definition that defines a turn as a rotation about the axis Axi, which forms an angle with the extension direction Dei of the link LKi larger than a predetermined angle, as the first definition, the following second or third definition may be adopted instead of the first definition.
[0273] In the second definition, when the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi changes due to the rotation of the link LKj with respect to the link LKi, the rotation corresponds to a turn. Therefore, in the second definition, when the angle of the extension direction Dej of the link LKj with respect to the extension direction Dei of the link LKi is always constant even if the link LKj rotates, the rotation corresponds to a rotation other than a turn. For example, in the second definition, the first, fifth, and sixth patterns shown in FIG. 15 correspond to turns, and the second, third, fourth, and seventh patterns correspond to rotation other than a turn.
[0274] In the third definition, when the angle between the extension direction Dej of the rotating link LKj and the rotation axis (axis Axi) of the link LKj is greater than a predetermined angle, the rotation corresponds to a turn. Therefore, in the third definition, when the angle between the extension direction Dej of the link LKj and the rotation axis (axis Axi) of the link LKj is equal to or smaller than a predetermined angle, the rotation corresponds to a rotation other than a turn. For example, in the third definition, the first, third, fifth and sixth patterns shown in FIG. 15 correspond to turns, and the second, fourth and seventh patterns correspond to rotation other than a turn.
[0275] In addition to the above-mentioned first, second and third definitions, the relative relationship between two rotations by two joint mechanisms JEr may be defined by focusing on the relationship between the rotation axes of the two joint mechanisms JEr adjacent to each other. Specifically, when the angle between the two rotation axes is equal to or less than a predetermined angle (typically parallel), the two rotations may be regarded as the same type of rotation, and when the angle between the two rotation axes is greater than a predetermined angle (typically perpendicular), the two rotations may be regarded as different types of rotation. The same type of rotation means that both rotations are rotations or both rotations are other than rotations, and the different type of rotation means that one of the two rotations is rotation and the other is other than rotation. When the definition of the relative relationship between two rotations is used, the rotation that is the starting point of the relative relationship may be determined based on, for example, any of the above-mentioned first, second and third definitions. The first pattern shown in Fig. 15 corresponds to a rotation in any of the first, second, and third definitions, and the second pattern corresponds to a rotation other than a rotation in any of the first, second, and third definitions. Therefore, it is preferable to set the first pattern or the second pattern as the rotation that is the starting point of the relative relationship.
[0276] Also, a definition that combines two or more of the above-mentioned first, second, and third definitions may be used. In this case, for example, only a rotation that corresponds to a rotation in all of the two or more definitions to be combined may be considered as a rotation, or a rotation that corresponds to a rotation in at least one of the two or more definitions to be combined may be considered as a rotation. [Explanation of symbols]
[0277] 1...robot system, 10...robot, 20...end effector, 30...robot controller, 32...processing device, 33...motion control unit, 35...memory, 36...communication device, 37...operation device, 38...display device, 39...driver circuit, Ax1, Ax2, Ax3, Ax4, Ax4A, Ax5, Ax6, Axi...axis, BDP...body part, BDPbt...bottom surface, BDPba...base part, JEr1, JEr2, JEr3, JEr4, JEr4A, JEr5, JEr6, JEri, JEp1, JEp2...joint mechanism, JEp11, JEp21...screw part, JEp12, JEp 22...nut, JEp13, JEp23...connection part, JEp13a, JEp23a...slider part, JEp13b, JEp23b...support part, JEp14, JEp24...rail, JEp14a, JEp14b, JEp24a, JEp24b...rod-shaped member, JEr11, JEr21, JEr41, JEr51, JEr61...rotating part, JEr12, JEr22, JEr42, JEr52, JEr62...housing, LK1, LK2, LK2A, LKi, LKj...link, MOr1, MOr2, MOr3, MOr4, MOr5, MOr6, MOp1, MOp2...motor.
Claims
1. A method for controlling an articulated robot having seven or more joints, the method comprising: executing a calculation process including an inverse kinematics calculation for calculating displacement amounts of the joints; and calculating joint values of the joints for bringing a tip end of the articulated robot into a target position and posture, the method comprising the steps of: when it is detected that the posture of the articulated robot during operation is near a singular point, a fixing process is performed to set at least one joint involved in the singular point as a fixed joint among the plurality of joints, and then the inverse kinematic calculation is performed, thereby calculating the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joint; controlling an operation of the articulated robot based on the joint values of the plurality of joints calculated in the calculation process; A method for controlling an articulated robot.
2. Repeating the calculation process until the tip of the articulated robot is in an acceptable state as the target position and posture; when it is detected that the posture of the articulated robot is in the vicinity of the singular point, a process of canceling the update of the joint values of each of the plurality of joints to the joint values of each of the plurality of joints calculated in the previous calculation process and a fixing process are performed, and then the inverse kinematic calculation is performed to calculate the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joints.
2. The method for controlling an articulated robot according to claim 1.
3. In the calculation process, the inverse kinematics calculation is performed using a Jacobian matrix; In the fixing process, a value of an element related to the fixed joint among a plurality of elements of the Jacobian matrix is set to substantially 0, thereby not displacing the joint value of the fixed joint.
3. The method for controlling an articulated robot according to claim 1 or 2.
4. A method for teaching an articulated robot having seven or more joints, comprising: executing a calculation process including an inverse kinematic calculation for calculating displacement amounts of the joints with respect to a position and posture of a tip end of the articulated robot specified at each of a plurality of teaching points; and calculating joint values of the joints, thereby teaching the plurality of teaching points, when it is detected that the posture of the articulated robot during teaching is in the vicinity of a singular point, a fixing process is performed in which at least one joint involved in the singular point among the plurality of joints is set as a fixed joint, and then the inverse kinematic calculation is performed, thereby calculating the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joint; teaching a teaching point to the articulated robot based on the joint values of the plurality of joints calculated in the calculation process; A teaching method for an articulated robot comprising:
5. Repeating the calculation process until the tip of the articulated robot is in an acceptable state as a target position and posture; when it is detected that the posture of the articulated robot is in the vicinity of the singular point, a process of canceling the update of the joint values of each of the plurality of joints to the joint values of each of the plurality of joints calculated in the previous calculation process and a fixing process are performed, and then the inverse kinematic calculation is performed to calculate the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joints.
5. The teaching method for an articulated robot according to claim 4.
6. In the calculation process, the inverse kinematics calculation is performed using a Jacobian matrix; In the fixing process, a value of an element related to the fixed joint among a plurality of elements of the Jacobian matrix is set to substantially 0, thereby not displacing the joint value of the fixed joint.
6. The teaching method for an articulated robot according to claim 4 or 5.
7. A multi-joint robot having seven or more joints; A control device for controlling the operation of the articulated robot; Equipped with The control device includes: Calculating joint values of the plurality of joints for bringing a tip end of the multi-joint robot into a target position and posture by executing a calculation process including an inverse kinematic calculation for calculating displacement amounts of the plurality of joints that operate the multi-joint robot; when it is detected that the posture of the articulated robot during operation is near a singular point, a fixing process is performed to set at least one joint involved in the singular point as a fixed joint among the plurality of joints, and then the inverse kinematic calculation is performed, thereby calculating the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joint; controlling an operation of the articulated robot based on the joint values of the plurality of joints calculated in the calculation process; A robot system comprising:
8. The control device includes: Repeating the calculation process until the tip of the articulated robot is in an acceptable state as the target position and posture; when it is detected that the posture of the articulated robot is in the vicinity of the singular point, a process of canceling the update of the joint values of each of the plurality of joints to the joint values of each of the plurality of joints calculated in the previous calculation process and a fixing process are performed, and then the inverse kinematic calculation is performed to calculate the joint values of the plurality of joints in the calculation process without substantially displacing the joint values of the fixed joints.
8. The robot system according to claim 7.
9. The control device includes: In the calculation process, the inverse kinematics calculation is performed using a Jacobian matrix; In the fixing process, a value of an element related to the fixed joint among a plurality of elements of the Jacobian matrix is set to substantially 0, thereby not displacing the joint value of the fixed joint.
9. The robot system according to claim 7 or 8.
Citation Information
Patent Citations
Control method for robot
JP1987189504A