WO2024048286A1 - 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 - Google Patents
多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 Download PDFInfo
- Publication number
- WO2024048286A1 WO2024048286A1 PCT/JP2023/029630 JP2023029630W WO2024048286A1 WO 2024048286 A1 WO2024048286 A1 WO 2024048286A1 JP 2023029630 W JP2023029630 W JP 2023029630W WO 2024048286 A1 WO2024048286 A1 WO 2024048286A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- joint
- link
- axis
- drive mechanism
- joint mechanism
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 304
- 238000004519 manufacturing process Methods 0.000 title claims description 6
- 230000008569 process Effects 0.000 claims abstract description 264
- 238000004364 calculation method Methods 0.000 claims abstract description 71
- 238000004148 unit process Methods 0.000 claims abstract description 25
- 230000007246 mechanism Effects 0.000 claims description 572
- 239000011159 matrix material Substances 0.000 claims description 79
- 238000012545 processing Methods 0.000 claims description 41
- 238000006073 displacement reaction Methods 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 10
- 230000008602 contraction Effects 0.000 claims description 6
- 230000036544 posture Effects 0.000 description 77
- 238000010586 diagram Methods 0.000 description 33
- 238000004088 simulation Methods 0.000 description 31
- 230000004048 modification Effects 0.000 description 18
- 238000012986 modification Methods 0.000 description 18
- 239000012636 effector Substances 0.000 description 13
- 230000008859 change Effects 0.000 description 8
- 230000000052 comparative effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 101100218355 Talaromyces purpureogenus axe-2 gene Proteins 0.000 description 5
- 101100218353 Talaromyces purpureogenus axeA gene Proteins 0.000 description 5
- 101100276977 Caenorhabditis elegans dapk-1 gene Proteins 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 210000000707 wrist Anatomy 0.000 description 2
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 210000000245 forearm Anatomy 0.000 description 1
- 210000002478 hand joint Anatomy 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J13/00—Controls for manipulators
Definitions
- the present invention relates to a method for controlling an articulated robot, a robot system, a program, and a method for manufacturing an article.
- Patent Document 1 discloses a control method for an articulated robot with seven degrees of freedom.
- a movable range is defined for some or all of the plurality of joints. For this reason, for example, in inverse kinematics calculations that calculate the amount of displacement of each joint from the robot's position and posture, if any of the multiple joints exceeds the range of motion, the calculation result will be an error, and the correct solution (each joint It is not possible to find a solution for operating within the movable range. Therefore, if the result of the inverse kinematics calculation is an error, the robot cannot be made to perform the desired motion. Therefore, it is desired to reduce the frequency of errors in the results of inverse kinematics calculations.
- a method for controlling an articulated robot is a method for controlling an articulated robot having a plurality of joints of seven or more, the method comprising controlling the amount of displacement of the plurality of joints for operating the articulated robot.
- a calculation process of performing an inverse kinematic calculation to update a plurality of joint values of the plurality of joints based on the displacement amount, and a state based on the corresponding joint value among the plurality of joints are determined in advance.
- a fixing process performed on a joint in a specific state and when the fixing process is executed, in the calculation process, the specific The joint values of the joints that are not in the specific state are displaced without substantially displacing the joint values of the joints in the state.
- a robot system includes an articulated robot having a plurality of joints of seven or more, and a control device that controls the operation of the articulated robot, and the control device is configured to control the a calculation process of executing an inverse kinematics calculation to calculate the amount of displacement of the plurality of joints that cause the robot to operate, and updating a plurality of joint values of the plurality of joints based on the amount of displacement; , a motion control unit that repeatedly executes a unit process including a fixing process performed on a joint whose state based on the corresponding joint value is a predetermined specific state, the motion control unit: When the fixing process is executed, in the calculation process, the joint value of the joint that is not in the specific state is displaced without substantially displacing the joint value of the joint in the specific state among the plurality of joint values.
- a method for manufacturing an article according to a preferred embodiment of the present invention involves assembling or removing parts using the above-mentioned robot system.
- a program according to a preferred aspect of the present invention is a program for controlling the operation of a multi-joint robot having seven or more joints, the program controlling the amount of displacement of the plurality of joints that causes the processor to operate the multi-joint robot.
- a calculation process that executes an inverse kinematics calculation to calculate the joint values of the plurality of joints based on the displacement amount, and a calculation process that calculates the state based on the corresponding joint value among the plurality of joints in advance. and a fixing process performed on a joint in a predetermined specific state. In the process, among the joint values of the plurality of joints, the joint values of the joints that are not in the specific state are displaced without substantially displacing the joint values of the joints that are in the specific state.
- FIG. 1 is an explanatory diagram for explaining an overview of a robot system according to an embodiment.
- 2 is a diagram showing an example of the hardware configuration of the robot controller shown in FIG. 1.
- FIG. 2 is a flowchart showing an example of the operation of the robot controller shown in FIG. 1.
- FIG. 12 is a flowchart illustrating an example of the operation of the robot controller when the position and posture of a hand of the robot are sequentially changed to the positions and postures of a plurality of targets.
- 5 is a flowchart showing an example of the joint value update process shown in FIG. 4.
- FIG. 12 is a flowchart illustrating another example of the operation of the robot controller when the position and posture of the hand of the robot are sequentially changed to the positions and postures of a plurality of targets.
- FIG. 12 is a flowchart illustrating another example of the operation of the robot controller when the position and posture of the hand of the robot are sequentially changed to the positions and postures of a plurality of targets.
- 8 is a flowchart showing an example of the joint value initial update process shown in FIG. 7.
- FIG. FIG. 2 is an explanatory diagram for explaining a model used in simulation.
- 10 is an explanatory diagram for explaining an example of initial joint values of the simulation model shown in FIG. 9.
- FIG. It is an explanatory diagram for explaining hand movement amount used for simulation.
- FIG. 2 is an explanatory diagram for explaining a Jacobian matrix used in a comparative control method.
- 13 is an explanatory diagram for explaining a pseudo inverse matrix of the Jacobian matrix shown in FIG. 12.
- FIG. 12 is a flowchart illustrating another example of the operation of the robot controller when the position and posture of the hand of the robot are sequentially changed to the positions and postures of a plurality of targets.
- 8 is a
- FIG. 14 is a diagram showing joint movement amounts calculated using the pseudo inverse matrix shown in FIG. 13.
- FIG. 15 is a diagram showing final joint values calculated based on the joint movement amounts shown in FIG. 14.
- FIG. FIG. 6 is an explanatory diagram for explaining a Jacobian matrix J when a joint mechanism in a specific state is fixed.
- 17 is an explanatory diagram for explaining a pseudo inverse matrix of the Jacobian matrix shown in FIG. 16.
- FIG. 18 is a diagram showing joint movement amounts calculated using the pseudo inverse matrix shown in FIG. 17.
- FIG. 19 is a diagram showing final joint values calculated based on the joint movement amounts shown in FIG. 18.
- FIG. 11 is an explanatory diagram for explaining the results of a simulation using initial joint values different from the initial joint values shown in FIG. 10.
- FIG. It is an explanatory view for explaining an example of the robot concerning the 1st modification.
- It is an explanatory view for explaining an example of a tip part concerning a 2nd modification.
- It is an explan
- FIG. 1 is an explanatory diagram for explaining an overview of a robot system 1 according to an embodiment.
- a reference coordinate system ⁇ 0 fixed in real space will be introduced as the base coordinate system of the robot 10.
- the reference coordinate system ⁇ 0 is a three-axis orthogonal coordinate system having an origin at the center of the bottom surface BDPbt of the robot 10, which will be described later, and having an X0 axis, a Y0 axis, and a Z0 axis that are perpendicular to each other.
- the reference coordinate system ⁇ 0 and the coordinate systems ⁇ 1 to ⁇ 8 shown in FIG. 9, which will be described later are right-handed coordinate systems.
- 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 an "articulated robot," and the robot controller 30 is an example of a "control device.”
- the robot 10 and the robot controller 30 are communicably connected to 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 may be a wired and wireless connection.
- the robot controller 30 is capable of communicating with an end effector 20 attached to the robot 10.
- any information processing device that can communicate with other devices can be adopted.
- the robot 10 is, for example, an articulated robot used for work in farms, factories, warehouses, and the like.
- the robot 10 is a 6-axis multi-joint robot having six joint mechanisms JEr (JEr1, JEr2, JEr3, JEr4, JEr5, and JEr6) corresponding to rotary joints, and two joint mechanisms corresponding to prismatic joints.
- This is an 8-axis articulated robot with additional joint mechanisms JEp (JEp1 and JEp2).
- the robot 10 includes six joint mechanisms JEr, two joint mechanisms JEp, a body part BDP, two links LK (LK1 and LK2), and a tip part TP1.
- 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. Furthermore, the joint mechanism JEp1 is provided on the link LK1, and the joint mechanism JEp2 is provided on the link LK2. In the following, the joint mechanisms JEr and JEp are also referred to as joint mechanisms JE without particular distinction.
- the robot 10 further includes a plurality of motors that drive the plurality of joint mechanisms JE. In FIG. 1, in order to make the diagram easier to read, descriptions of a plurality of motors that drive a plurality of joint mechanisms JE, reduction gears, encoders, etc. provided in each of the plurality of motors are omitted.
- the multiple joint mechanism JE is an example of "multiple joints.”
- the body part BDP is an example of a "base”. Further, link LK1 is an example of a “first link”, and link LK2 is an example of a "second link”. For example, links LK1 and LK2 connect body portion BDP and tip portion TP1.
- connection of members includes both a case where two members are directly connected and a case where two members are indirectly connected.
- Two members being directly connected includes a state in which the two members are in contact with each other, and a state in which the two members are in contact with each other.
- a state that can be considered the same as a state in which two members are in contact with each other is, for example, a state in which one of the two members is fixed to the other with an adhesive or the like.
- two members being indirectly connected means that another member is arranged between the two members.
- the joint mechanism JEr1 is an example of a "first drive mechanism," and the joint mechanism JEr2 is an example of a "second drive mechanism.”
- the joint mechanism JEr3 is an example of a "third drive mechanism,” and the joint mechanism JEr4 is an example of a "fourth drive mechanism.”
- the joint mechanism JEr5 is an example of a "fifth drive mechanism”
- the joint mechanism JEr6 is an example of a "sixth drive mechanism”.
- the joint mechanism JEp1 is an example of a "first movement mechanism”
- the joint mechanism JEp2 is an example of a "second movement mechanism”.
- the body part BDP includes, for example, a base part BDPba fixed to a predetermined location such as a floor, and a joint mechanism JEr1 connected to a joint mechanism JEr2.
- the joint mechanism JEr1 rotates a portion of the body part BDP about an axis Ax1 perpendicular to the bottom surface BDPbt of the body part BDP as a rotation axis.
- the joint mechanism JEr1 rotates an outer wall of the joint mechanism JEr1, including a portion connected to the joint mechanism JEr2, with respect to the base portion BDPba about the axis Ax1. That is, the joint mechanism JEr1 rotates the joint mechanism JEr2 with respect to the body portion BDP using the axis Ax1 as a rotation axis.
- the axis Ax1 is an example of a "first rotation axis.”
- a rotation direction Dr1 in FIG. 1 indicates a rotation direction of a portion of the body portion BDP when the portion of the body portion BDP rotates about the axis Ax1.
- the joint mechanism JEr2 connects the body part BDP and the link LK1, and rotates the link LK1 with respect to the body part BDP using an axis Ax2 parallel to the bottom surface BDPbt of the body part BDP as a rotation axis.
- the rotation direction Dr2 in FIG. 1 indicates the rotation direction of the link LK1 when the link LK1 rotates about the axis Ax2.
- the axis Ax2 is an example of a "second rotation axis.”
- the link LK1 is, for example, hollow and long. Further, the link LK1 has an opening Hlk1 extending in the direction De1 in which the link LK1 extends.
- the direction De1 is the "extending direction of the first link.”
- the opening Hlk1 is formed, for example, on a surface of the link LK1 that includes a portion that faces the link LK2.
- a part of the joint mechanism JEr3 and the joint mechanism JEp1 are provided inside the link LK1.
- a part of the joint mechanism JEr3 is located inside the link LK1, and another part of the joint mechanism JEr3 comes out from the opening Hlk1 to the outside of the link LK1.
- the part of the joint mechanism JEr3 that protrudes to the outside of the link LK1, or a part of the part that protrudes to the outside of the link LK1 passes through an opening Hlk2 of the link LK2, which will be described later, and is located inside the link LK2. do.
- link LK1 rotates with respect to the body part BDP with the axis Ax1 as the rotation axis by the joint mechanism JEr1, and rotates with respect to the body part BDP with the axis Ax2 as the rotation axis with the joint mechanism JEr2.
- the joint mechanism JEr3 connects the link LK1 and the link LK2, and rotates the link LK2 with respect to the link LK1 using an axis Ax3 perpendicular to the direction De1 in which the link LK1 extends as a rotation axis.
- the rotation direction Dr3 in FIG. 1 indicates the rotation direction of the link LK2 when the link LK2 rotates about the axis Ax3. Note that the axis Ax3 is an example of a "third rotation axis.”
- the joint mechanism JEp1 moves the joint mechanism JEr3 relative to the link LK1 along the direction De1. As the joint mechanism JEr3 moves along the direction De1, the link LK2 moves along the direction De1 relative to the link LK1.
- the movement range of the joint mechanism JEr3 by the joint mechanism JEp1 is a range in which the actual length (control length) of the link LK1 can be made from less than half the length of the link LK1 to more than half the length of the link LK1. preferable.
- the link LK2 is, for example, hollow and long. Further, the link LK2 has an opening Hlk2 extending in the direction De2 in which the link LK2 extends.
- the direction De2 is the "extending direction of the second link.”
- the opening Hlk2 is formed, for example, on a surface of the link LK2 that includes a portion that faces the link LK1.
- a part of the joint mechanism JEr3 and a joint mechanism JEp2 are provided inside the link LK2.
- a part of the joint mechanism JEr3 is located inside the link LK2, and another part of the joint mechanism JEr3 comes out from the opening Hlk2 to the outside of the link LK2.
- the joint mechanism JEp2 moves the link LK2 relative to the joint mechanism JEr3 along the direction De2 in which the link LK2 extends.
- the link LK2 moves along the direction De2 relative to the joint mechanism JEr3. That is, link LK2 moves relative to link LK1 along direction De2.
- the movement range of the joint mechanism JEr3 by the joint mechanism JEp2 is a range in which the actual length (control length) of the link LK2 can be made from less than half the length of the link LK2 to more than half the length of the link LK2. preferable.
- the link LK2 is moved relative to the link LK1 along the direction De1 by the joint mechanism JEp1, and the link LK2 is moved relative to the link LK1 along the direction De2 by the joint mechanism JEp2. do.
- the joint mechanism JEr4 connects the link LK2 and the tip TP1, and rotates the tip TP1 with respect to the link LK2 about an axis Ax4 perpendicular to the direction De2 as a rotation axis.
- the rotation direction Dr4 in FIG. 1 indicates the rotation direction of the tip portion TP1 when the tip portion TP1 rotates about the axis Ax4.
- the axis Ax4 is an example of a "fourth rotation axis.”
- an end effector 20 that grips an article is attached to the tip portion TP1.
- the end effector 20 is attached to the end surface TP1sf of the tip portion TP1.
- the distal end portion TP1 includes a first portion TP11 connected to the link LK2, a second portion TP12 connected to the first portion TP11, a joint mechanism JEr5, and a joint mechanism JEr6.
- the first portion TP11 is connected to the link LK2 via a joint mechanism JEr4, for example. Therefore, the first portion TP11 rotates with respect to the link LK2 using the axis Ax4 as the rotation axis.
- the joint mechanism JEr5 connects the first part TP11 and the second part TP12, and rotates the second part TP12 with respect to the first part TP11 about an axis Ax5 perpendicular to the axis Ax4 as a rotation axis.
- the rotation direction Dr5 in FIG. 1 indicates the rotation direction of the second portion TP12 when the second portion TP12 rotates about the axis Ax5.
- the axis Ax5 is an example of a "fifth rotation axis.”
- the joint mechanism JEr6 rotates at least a portion of the distal end portion TP1 about an axis Ax6 perpendicular to the axis Ax5 as a rotation axis.
- the joint mechanism JEr6 rotates the end surface TP1sf of the distal end portion TP1 about the axis Ax6 as the rotation axis. That is, the joint mechanism JEr6 rotates the portion (end surface TP1sf) of the distal end portion TP1 to which the end effector 20 is attached about the axis Ax6 as a rotation axis.
- the rotation direction Dr6 in FIG. 1 indicates the rotation direction of the end surface TP1sf when the end surface TP1sf rotates about the axis Ax6.
- the axis Ax6 is an example of a "sixth rotation axis.”
- the surface of the joint mechanism JEr6 corresponds to the end surface TP1sf. Note that in a configuration in which the joint mechanism JEr6 is included in the second portion TP12, the end surface of the second portion TP12 may be the end surface TP1sf.
- the work performed by the end effector 20 is not limited to gripping an article.
- appropriate parts for example, a robot hand, a robot finger, etc.
- an end effector 20 suitable for various types of work is attached to the tip portion TP1.
- rotation about an axis that makes an angle larger than a predetermined angle with a specific direction is distinguished from rotation about an axis that makes an angle less than a predetermined angle with a specific direction. Otherwise, it may be referred to as "swivel.”
- the predetermined angle may be, for example, 45°. Note that the predetermined angle is not limited to 45°.
- the direction Dv1 perpendicular to the bottom surface BDPbt of the body portion BDP corresponds to the specific direction.
- 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 less than or equal to a predetermined angle
- the axis Ax2 corresponds to an axis whose angle with the direction Dv1 is larger than the predetermined angle. do. Therefore, the rotation of the link LK1 about the axis Ax2 corresponds to turning.
- the direction Deb in which the body portion BDP extends may be a specific direction.
- the direction De1 in which the link LK1 extends corresponds to a specific direction
- the direction De2 in which the link LK2 extends corresponds to a specific direction.
- the axis Ax3 corresponds to an axis whose angle with the direction De1 in which the link LK1 extends is larger than a predetermined angle
- the axis Ax4 corresponds to an axis whose angle with the direction De2 in which the link LK2 extends is larger than a predetermined angle.
- the rotation of the link LK2 about the axis Ax3 and the rotation of the first portion TP11 about the axis Ax4 correspond to turning.
- the direction De11 corresponds to a specific direction
- the direction De12 corresponds to the specific direction.
- the direction De11 is a direction from the end of the first portion TP11 opposite to the predetermined end to which the joint mechanism JEr5 is connected to the predetermined end.
- the direction De11 may be regarded as the direction in which the first portion TP11 extends.
- the direction De12 is a direction from the end of the second portion TP12 opposite to the predetermined end to which the joint mechanism JEr6 is connected (the end including the end surface TP1sf) toward the predetermined end. be.
- the direction De12 may be regarded as the direction in which the second portion TP12 extends.
- the axis Ax5 corresponds to an axis whose angle with the direction De11 is equal to or less than a predetermined angle.
- the axis Ax6 corresponds to an axis whose angle with the direction De12 is equal to or less than a predetermined angle.
- the direction De11 is a direction perpendicular to the axis Ax4
- the direction De12 is a direction perpendicular to the axis Ax5.
- the axis Ax5 whose angle with the direction De11 is less than or equal to a predetermined angle corresponds to an axis whose angle with the axis Ax4 is greater than the predetermined angle
- the axis Ax6 whose angle with the direction De12 is less than or equal to the predetermined angle corresponds to an axis. This corresponds to an axis whose angle with Ax5 is larger than a predetermined angle.
- each of the plurality of parts of the robot 10 (body part BDP, link LK1, link LK2, tip part TP1, etc.) rotates each of the axes Ax1, Ax2, Ax3, Ax4, Ax5, and Ax6. It is rotatable as an axis.
- the robot 10 can perform actions similar to humans.
- the link LK1 between the joint mechanisms JEr2 and JEr3 corresponds to the upper arm
- the link LK2 between the joint mechanisms JEr3 and JEr4 corresponds to the forearm.
- the robot 10 can use the joint mechanism JEr1 to perform a motion that simulates the twisting of a human's waist
- the joint mechanism JEr2 can perform a motion that simulates the turning of the shoulder.
- the robot 10 can perform an action simulating turning an elbow using the joint mechanism JEr3, and can perform an action simulating turning a wrist using the joint mechanism JEr4.
- the robot 10 can perform a motion that simulates twisting the wrist using the joint mechanism JEr5, and can perform a motion that simulates twisting the fingertips using the joint mechanism JEr6.
- the joint mechanism JEp1 provided within the link LK1 allows the link LK2 to be moved relative to the link LK1 along the direction De1 in which the link LK1 extends.
- the joint mechanism JEp2 provided in the link LK2 allows the link LK2 to be moved relative to the link LK1 along the direction De2 in which the link LK2 extends. Therefore, in this embodiment, the tip portion TP1 of the robot 10 can be easily moved to the vicinity of the body portion BDP by the joint mechanisms JEp1 and JEp2.
- the joint mechanisms JEp1 and JEp2 can widen the reachable area of the tip portion TP1 (more specifically, the end surface TP1sf), so that the end effector 20 attached to the robot 10 can reach it.
- the area can be expanded.
- the configuration of the robot system 1 is not limited to the example shown in FIG. 1.
- the robot controller 30 may be built into the robot 10.
- FIG. 1 assumes that the robot 10 is fixed to a predetermined location such as the floor, the robot 10 itself may be movable without being fixed to a predetermined location.
- the base portion BDPba of the body portion BDP may be fixed to a predetermined location such as the floor via the joint mechanism JEr1.
- the body part BDP may be defined without including the joint mechanism JEr1.
- the joint mechanism JEr1 may rotate the base portion BDPba about the axis Ax1 as a rotation axis.
- the base portion BDPba may be connected to the joint mechanism JEr2.
- the robot controller 30 calculates joint values regarding the state (joint state) of each joint mechanism JE, for example, in order to set the position and posture of the robot 10 to the target position and posture.
- the state of the joint mechanism JE may be a state of joint movement.
- the state of the joint mechanism JE may be, for example, the position of the joint mechanism JE (position of the joint), the rotation angle of rotation by the joint mechanism JEr (direction of the joint), and the like.
- the joint value indicates, for example, the position of the joint mechanism JE (position of the joint), the rotation angle of rotation by the joint mechanism JEr (direction of the joint), and the like.
- the joint value regarding the state of the joint mechanism JE (joint state) is also simply referred to as the joint value of the joint mechanism JE (joint).
- the relationship between the speed of the hand (for example, the tip of the end effector 20) of the robot 10 (hereinafter also referred to as hand speed) and the joint speed is expressed by equation (1).
- the hand speed r( ⁇ ) is expressed by equation (2).
- the joint velocity ⁇ ( ⁇ ) is expressed by equation (3), and the Jacobian matrix J is expressed by equation (4).
- the Jacobian matrix J is, for example, represented by a matrix with 6 rows and m columns, and the element in the i-th column corresponds to the element J i related to the i-th joint.
- the element J i related to the i-th joint 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, for example, that the vector value is 0.
- the rotation axis of the joint mechanism JEr corresponds to the Z-axis
- the axis along the movement direction of the joint mechanism JEp or the expansion and contraction of the link LK corresponds to the axis of rotation of the joint mechanism JEr.
- the axis along the direction corresponds to the Z axis.
- the robot controller 30 calculates the joint speed ⁇ i ( ⁇ ) of each joint mechanism JE with respect to the target hand speed r ( ⁇ ) using equation (7), and adjusts each joint mechanism JE based on the calculation result. make it work. Specifically, for example, the robot controller 30 calculates the joint value of each joint mechanism JE based on the joint speed ⁇ i ( ⁇ ) of each joint mechanism JE calculated using equation (7). 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 such that the state of each joint mechanism JE is based on the joint value of each joint mechanism JE.
- the robot 10 can be jogged, for example.
- the jog operation is, for example, an operation in which the joints, hands, and the like of the robot 10 are moved little by little so that the position and posture of the robot 10 reach a target position and posture.
- the joint speed ⁇ i ( ⁇ ) and information indicating the state of the joint mechanism JE calculated based on the joint speed ⁇ i ( ⁇ ) correspond to joint values.
- the calculation of the joint velocity ⁇ ( ⁇ ) of the joint mechanism JE is an example of inverse kinematics calculation.
- the pseudo inverse matrix J This corresponds to carrying out.
- joint speeds ⁇ i ( ⁇ ) are calculated for all of the plurality of joint mechanisms JE. Therefore, in a control method in which the Jacobian matrix J is used without any modification (hereinafter referred to as a control method in a comparative example), one of the plurality of joint mechanisms JE is calculated based on the joint velocity ⁇ i ( ⁇ ).
- the state of the joint mechanism JE may be outside the movable range (movable area) of the joint mechanism JE. In this case, the desired jog operation cannot be performed.
- the number of joints to be operated is limited to a number smaller than the total number of joints (for example, six or seven, etc.). , the articulated robot cannot be operated.
- the number of joints to be operated is limited to a number smaller than the total number of joints.
- the vector value of element J i is fixed to 0.
- the Jacobian matrix J when the vector value of the element J i related to the i-th joint is set to 0 is expressed by Equation (8).
- the joint velocity ⁇ i ( ⁇ ) obtained from the above equation (7) becomes the joint velocity vector expressed by the equation (9).
- the joint velocity ⁇ i ( ⁇ ) of the i-th joint is 0.
- the vector value of the element J i related to the i-th joint is fixed to 0, so that the joint value of the i-th joint does not change. Therefore, the i-th joint among the m joints can be regarded as a fixed joint. That is, in this embodiment, by fixing the vector value of the element J i related to the i-th joint of the Jacobian matrix J to 0, the joint velocity ⁇ i ( ⁇ ) can be calculated.
- the robot 10 can be operated while limiting the number of joints to be operated to a number smaller than the total number of joints.
- the vector value is fixed to 0, but if the joint value of the i-th joint does not affect robot control and does not substantially displace, it does not necessarily have to be 0, and a small It may be a value (substantially 0).
- substantially 0 includes not only 0 but also minute values that can be considered as 0.
- not substantially displaced includes not only cases where there is no exact displacement, but also cases where it can be considered that there is no displacement (for example, a minute change that does not affect robot control).
- a specific state is determined in advance for a predetermined joint (i-th joint) among the plurality of joints.
- a specific state means that when a constraint regarding a joint value (for example, a range of motion) is set for a predetermined joint, the joint value is a value near the limit value of the constraint (for example, within the range of motion). This is the state where the value of the boundary area near the outside of the movable area is reached.
- the robot controller 30 sets the joint (i-th joint) whose state is a specific state based on the joint value as a fixed joint in which the value (vector value) of the element of the Jacobian matrix J is substantially fixed to 0.
- the limit state in which the constraints regarding the displacement of the joint are satisfied is also referred to as the limit state.
- the predetermined margin which will be described later, is set, for example, in order to make the robot controller 30 recognize that the state of the joint is approaching the limit state before the state of the joint (the state of the joint mechanism JE) reaches the limit state. This is the margin.
- restrictions regarding the displacement of the joints are, for example, restrictions regarding the movement of the joint mechanism JE.
- Examples of constraints regarding the movement of the joint mechanism JE include a movement range of the joint mechanism JEr3 by the joint mechanism JEp1, a movement range of the joint mechanism JEr3 by the joint mechanism JEp2, and the like.
- the movement range of the joint mechanism JEr3 is limited based on the length of the link LK1 and the like.
- the vicinity of one of the two ends of the link LK1 is the upper limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp1
- the vicinity of the other end of the two ends of the link LK1 is the upper limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp1.
- the vicinity is the lower limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp1.
- the state of the joint mechanism JEp1 is the limit state.
- the robot controller 30 specifies that the state of the joint mechanism JEp1 is a specific state (a state with a predetermined margin in the limit state).
- the movement range of the joint mechanism JEr3 is limited based on the length of the link LK2 and the like. Specifically, for example, the vicinity of one of the two ends of the link LK2 is the upper limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp2, and the vicinity of the other of the two ends of the link LK2 is the upper limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp2. The vicinity is the lower limit of the movement range of the joint mechanism JEr3 by the joint mechanism JEp2.
- the state of the joint mechanism JEp2 is the limit state.
- the robot controller 30 specifies that the state of the joint mechanism JEp2 is the specific state.
- the robot controller 30 selects a joint in the specific state among the plurality of elements of the Jacobian matrix J.
- the values of elements related to mechanism JE are fixed to 0.
- the value of the element related to the joint mechanism JE in a specific state is fixed to 0 among the multiple elements of the Jacobian matrix J.
- JE's joint values are set to fixed values.
- the robot controller 30 performs, for example, a state calculation process that calculates the joint value of each joint mechanism JE, and displaces the joint value of the joint mechanism JE in a specific state until the position and posture of the robot 10 reach the target position and posture.
- the state calculation process is an example of a "calculation process”
- the state fixation process is an example of a "fixation process.”
- the robot controller 30 performs inverse kinematics calculation to calculate the displacement amount of the joint mechanism JE when the robot 10 is operated in the state calculation process included in the unit process that is repeatedly executed. Calculate the joint values of mechanism JE.
- the robot controller 30 fixes the state of the specific state based on the joint value.
- the joint values of the joint mechanism JE are set to fixed values.
- the robot controller 30 selects the joint mechanism JE in the specific state from among the plurality of joint mechanisms JE. Inverse kinematics calculations are performed using a joint mechanism JE other than JE.
- the configuration of the robot 10 is not limited to the example shown in FIG. 1, and may be, for example, the configuration of a simulation model shown in FIG. 9, which will be described later.
- the simulation model shown in FIG. 9 has a configuration in which the link LK1 itself expands and contracts by the joint mechanism JEp1 of the robot 10 in FIG. 1, and the link LK2 itself expands and contracts by the joint mechanism JEp2.
- the restrictions regarding the movement of the joint mechanism JE are not limited to the movement range of the joint mechanism JEr3 by the joint mechanism JEp1 and the movement range of the joint mechanism JEr3 by the joint mechanism JEp2.
- the constraints regarding the movement of the joint mechanism JE may include constraints for avoiding singular points.
- the singular point is, for example, that the posture of the robot 10 becomes such that the robot 10 cannot be controlled. That is, the restrictions regarding the movement of the joint mechanisms JE may be restrictions on some of the joint mechanisms JE, or restrictions on all of the joint mechanisms JE among the multiple joint mechanisms JE. There may be. Note that some of the joint mechanisms JE among the plurality of joint mechanisms JE may be one joint mechanism JE, or may be a plurality of joint mechanisms JE.
- FIG. 2 is a diagram showing an example of the hardware configuration of the robot controller 30 shown in FIG. 1.
- 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 operating device 37 that accepts operations by an operator, a display device 38, and a driver. It has a circuit 39.
- the memory 35 includes, for example, a volatile memory such as a RAM (Random Access Memory) that functions as a work area of the processing device 32, and an EEPROM (Electrically Erasable Programmable Read-Only) that stores various information such as a control program PGr. Memory) etc. This includes one or both of non-volatile memory.
- the memory 35 may be removably attached to the robot controller 30.
- 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 be, for example, a storage device (for example, online storage) that is communicably connected to the robot controller 30 via a network or the like.
- the memory 35 shown in FIG. 2 stores a control program PGr.
- the control program PGr is an example of a "program.”
- the control program PGr includes, for example, an application program for the robot controller 30 to control the operation of the robot 10.
- the control program PGr may include, for example, an operating robot system program for the processing device 32 to control each part of the robot controller 30.
- the memory 35 includes a computer-readable non-transitory recording medium on which the control program PGr is recorded.
- the processing device 32 is a processor that controls the entire robot controller 30, and includes, for example, one or more CPUs (Central Processing Units).
- the processing device 32 functions as the operation control unit 33 by, for example, executing the control program PGr stored in the memory 35 and operating according to the control program PGr.
- the motion control unit 33 repeats the unit processing described in FIG. 1 until the position and orientation of the robot 10 reach the target position and orientation. Then, the motion control unit 33 drives the robot 10 via a driver circuit 39, which will be described later, based on the joint values of each joint mechanism JE.
- the control program PGr may be transmitted from another device via a network or the like.
- the processing device 32 when the processing device 32 is configured to include a plurality of CPUs, some or all of the functions of the processing device 32 may be performed by the plurality of CPUs working together according to a program such as the control program PGr. It may be realized by In addition to one or more CPUs, or in place of a part or all of one or more CPUs, the processing device 32 may include a GPU (Graphics Processing Unit), a DSP (Digital Signal Processor), or an FPGA ( It may be configured to include hardware such as Field, Programmable, Gate, Array. In this case, part or all of the functions of the processing device 32 may be realized by hardware such as a DSP.
- a DSP Digital Signal Processor
- the communication device 36 is hardware for communicating with an external device existing outside the robot controller 30.
- the communication device 36 has a function of communicating with an external device by short-range wireless communication.
- the communication device 36 may further have a function of communicating with an external device via a mobile communication network or a network.
- the operating device 37 is an input device (eg, keyboard, mouse, switch, button, sensor, etc.) that accepts input from the outside.
- the operating device 37 receives an operation from a worker and outputs operation information corresponding to the operation to the processing device 32.
- a touch panel that detects contact with the display surface of the display device 38 may be employed as the operating device 37.
- the display device 38 is an output device such as a display that outputs to the outside.
- the display device 38 displays images under the control of the processing device 32, for example.
- the operating device 37 and the display device 38 may have an integrated configuration (for example, a touch panel).
- the driver circuit 39 is hardware that outputs a signal for driving the robot 10 to the robot 10 under the control of the processing device 32 (more specifically, the operation control unit 33). For example, the driver circuit 39 outputs a signal based on the joint values of each joint mechanism JE to the robot 10 as a signal for driving the motors MOr1, MOr2, MOr3, MOr4, MOr5, MOr6, MOp1, MOp2, etc.
- the motors MOr1, MOr2, MOr3, MOr4, MOr5, and MOr6 are motors that drive the joint mechanisms JEr1, JEr2, JEr3, JEr4, JEr5, and JEr6, respectively.
- motors MOp1 and MOp2 are motors that drive joint mechanisms JEp1 and JEp2, respectively.
- motors MOr1, MOr2, MOr3, MOr4, MOr5, MOr6, MOp1, and MOp2 may be collectively referred to as motor MO.
- the robot controller 30 controls the operation of the robot 10 by controlling the plurality of motors MO.
- FIG. 3 is a flowchart showing an example of the operation of the robot controller 30 shown in FIG. 1.
- the joint values of each joint mechanism JE for example, the position of the joint mechanism JE and the rotation by the joint mechanism JEr
- the processing device 32 functioning as the operation control unit 33. That is, in the operation shown in FIG. 3 (a series of processes from step S100 to step S520), the processing device 32 functions as the operation control unit 33.
- step S100 the motion control unit 33 calculates the difference between the position and orientation of the hand of the robot 10 and the position and orientation of the target. For example, the motion 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 motion 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 and posture of the hand of the robot 10.
- step S120 the motion control unit 33 determines whether the difference between the position and orientation of the hand of the robot 10 and the position and orientation of the target is less than or equal to an allowable value. For example, if the difference between the position and orientation of the hand of the robot 10 and the position and orientation of the target is less than or equal to the tolerance value, the position and orientation of the hand of the robot 10 match the position and orientation of the target. It is set to a value that can be considered as
- step S120 If the result of the determination in step S120 is affirmative, the operation control unit 33 ends the operation shown in FIG. 3.
- the joint values (latest joint values) of each joint mechanism JE used to calculate the position and posture of the hand of the robot 10 in step S100 change the position and posture of the hand of the robot 10 to the target position and posture. It is calculated as the joint value of each joint mechanism JE for. Note that if the series of processes from step S100 to step S520 is repeated two or more times, the latest joint values used in the current process of step S100 are the joint values updated in the previous process of step S420. It is.
- step S120 determines whether the result of the determination in step S120 is negative. If the result of the determination in step S120 is negative, the operation control unit 33 advances the process to step S200.
- step S200 the motion control unit 33 calculates the Jacobian matrix J based on the current joint values of each joint mechanism JE. Then, the operation control unit 33 advances the process to step S300.
- step S300 the motion control unit 33 determines whether there is a joint mechanism JE in a specific state among the plurality of joint mechanisms JE. If the result of the determination in step S300 is affirmative, the operation control unit 33 advances the process to step S320. On the other hand, if the result of the determination in step S300 is negative, the operation control unit 33 advances the process to step S400.
- step S320 the motion control unit 33 sets the value of the element corresponding to the joint mechanism JE in the specific state to substantially 0 among the multiple elements of the Jacobian matrix J. As a result, for example, the value of the element in the column corresponding to the joint mechanism JE in the specific state of the Jacobian matrix J is substantially set to zero. Then, the operation control unit 33 advances the process to step S400.
- step S400 the motion control unit 33 uses the pseudo inverse matrix J + of the Jacobian matrix J to calculate the displacement amount of each joint mechanism JE (for example, the joint velocity ⁇ i ( ⁇ ) of each joint mechanism JE).
- the displacement amount of the joint mechanism JE in the specific state is the value of the element in the column corresponding to the joint mechanism JE in the specific state of the Jacobian matrix J. is substantially set to 0, so it is 0 or almost 0.
- the operation control unit 33 advances the process to step S420. Note that approximately 0 is, for example, a value that can be considered as 0.
- step S420 the motion 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 motion control unit 33 adds the displacement amount of each joint mechanism JE to the joint value of each joint mechanism JE used to calculate the position and posture of the hand of the robot 10 in step S100. Update the joint values of. Note that when there is a joint mechanism JE in a specific state among the plurality of joint mechanisms JE, since the displacement amount of the joint mechanism JE in the specific state is 0 or almost 0, the specific state after updating by the process of step S420 is The joint value of the joint mechanism JE becomes the same or almost the same value as the value before updating.
- the value that is almost the same as the value before update is, for example, a value that can be considered to be the same as the value before update. Therefore, in the joint mechanism JE in a specific state, the state is maintained without changing. Thereby, in this embodiment, it is possible to prevent the state of the joint mechanism JE from becoming a state that does not satisfy the constraints (for example, a state outside the range of movement).
- step S500 the operation control unit 33 increments the loop count. Note that the loop count is initialized to 0 before the operation shown in FIG. 3 is executed.
- step S520 the operation control unit 33 determines whether the loop count is less than or equal to the upper limit value.
- the upper limit value is the upper limit value of the number of repetitions of the series of processes from step S100 to step S520, and is set to terminate the operation shown in FIG. 3 when the operation shown in FIG. 3 does not converge.
- step S520 If the result of the determination in step S520 is negative, the operation control unit 33 ends the operation shown in FIG. 3. In this case, the joint value (latest joint value) of each joint mechanism JE updated in the process of step S420 is calculated as the joint value of each joint mechanism JE. However, if the operation shown in FIG. 3 ends because the loop count exceeds the upper limit, the joint values of each joint mechanism JE calculated by the operation shown in FIG. The joint values are not necessarily the same as the target position and posture. Therefore, the motion control unit 33 outputs error information indicating that the process of calculating the joint values of each joint mechanism JE to make the position and posture of the hand of the robot 10 the target position and posture has not converged. You may notify the following persons. For example, the operation control unit 33 may display the error information on the display device 38.
- step S520 determines whether the result of the determination in step S520 is affirmative. If the result of the determination in step S520 is affirmative, the operation control unit 33 returns the process to step S100. In this way, the series of processing from step S100 to step S520 is performed until the joint values of each joint mechanism JE are calculated to make the position and posture of the hand of the robot 10 the target position and posture, or the process continues in a loop. Repeats until the count exceeds the upper limit.
- the series of processes in steps S400 and S420 correspond to the state calculation process explained in FIG. 1, and the series of processes in steps S300 and S320 correspond to the state fixing process explained in FIG. Therefore, the series of processes from step S100 to step S520 corresponds to a unit process including the state calculation process and the state fixation process. That is, the series of processes from step S100 to step S520 is an example of a "unit process”, the series of processes of steps S400 and S420 is an example of a "calculation process”, and the series of processes of steps S300 and S320 is an example of a "calculation process”. is an example of "fixed processing".
- the state calculation process may include the process of step S200 in addition to the series of processes of steps S400 and S420. Therefore, the series of processes of steps S200, S400, and S420 may be regarded as a "calculation process.”
- the operation of the robot controller 30 is not limited to the example shown in FIG. 3.
- the processes in steps S500 and S520 may be omitted.
- the operation control unit 33 After executing the process of step S420, the operation control unit 33 returns the process to step S100. Further, if the processing in steps S500 and S520 is omitted, the operation shown in FIG. 3 may be terminated by interrupt processing or the like. Furthermore, the processing in steps S300 and S320 may be included in the processing in step S200.
- FIG. 4 is a flowchart illustrating an example of the operation of the robot controller 30 when the position and posture of the hand of the robot 10 are sequentially changed to a plurality of target positions PP and postures PS.
- n is a natural number of 2 or more.
- the positions PP and postures PS of n targets may be referred to as n target states.
- step S140 is executed as a process corresponding to the series of processes from step S200 to step S420 shown in FIG. Details of the joint value update process in step S140 will be explained in FIG. 5, which will be described later.
- the joint value update process in step S140 is similar to that shown in FIG. 3, except that the process in step S310 shown in FIG. This is the same as the series of processes shown from step S200 to step S420. That is, the joint value of each joint mechanism JE is updated by the joint value update process in step S140.
- the state (initial state) of the robot 10 before the operation shown in FIG. it is assumed that the initial value of the variable k (k is a natural number from 1 to n) is 1.
- the position PP and posture PS of the k-th target may be referred to as position PPk and posture PSk, respectively.
- position PP1 and posture PS1 are the position PP and posture PS of the first target
- position PPn and posture PSn are the position PP and posture PS of the n-th target (final target).
- n target positions PP and postures PS are defined in the robot controller 30 as the trajectory of the robot 10 from its initial state to its final target state.
- the robot controller 30 sequentially updates the target position PPk and posture PSk of the hand of the robot 10 by sequentially changing the variable k from 1 to n.
- step S100 and S120 are similar to the series of processes in steps S100 and S120 shown in FIG. However, if the result of the determination in step S120 is affirmative, the operation control unit 33 advances the process to step S700. If the result of the determination in step S120 is negative, the motion control unit 33 executes the joint value update process in step S140, and then advances the process to step S500.
- step S500 and S520 are similar to the series of processes in steps S500 and S520 shown in FIG. Note that in the operation shown in FIG. 4, if the result of the determination in step S520 is negative, the operation control unit 33 determines an error and stops the operation of the robot 10 in step S600. In this case, the operation shown in FIG. 4 ends. On the other hand, if the result of the determination in step S520 is affirmative, the operation control unit 33 returns the process to step S100, similar to the operation shown in FIG.
- step S700 is executed.
- step S700 the motion control unit 33 controls each joint mechanism JE according to the joint value of each joint mechanism JE updated by the joint value update process in step S140.
- the position and posture of the hand of the robot 10 change to the target position PPk and posture PSk.
- the motion control unit 33 in step S700 converts the joint values of each joint mechanism JE updated by the joint value update process in step S140 into the joint values of the target position PPk and posture PSk. It is stored in the memory 35 as .
- the joint value update process in step S140 is not executed even once. , the result of the determination in step S120 is affirmative.
- the above-mentioned "joint value of each joint mechanism JE updated by the joint value update process of step S140" is replaced with "joint value of each joint mechanism JE in the initial state of the robot 10".
- the motion control unit 33 updates the joint values of each joint mechanism JE of the robot 10 in step S700. The joint values of each joint mechanism JE are maintained in the initial state.
- step S700 After executing the process in step S700, the operation control unit 33 advances the process to step S720.
- step S720 the operation control unit 33 determines whether the variable k is smaller than n. If the result of the determination 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 motion control unit 33 ends the motion shown in FIG. do. On the other hand, if the result of the determination in step S720 is affirmative, the operation control unit 33 resets the loop count to 0 in step S740, and then advances the process to step S760.
- step S100 A series of processes (unit processes) from step S100 to step S520 are repeated until the time is reached.
- step S140 the joint value update process in step S140 will be described with reference to FIG. 5.
- FIG. 5 is a flowchart showing an example of the joint value update process shown in FIG. 4.
- the processing device 32 functioning as the motion control unit 33 executes a series of processes from step S200 to step S420 shown in FIG. 5 as the joint value update process of step S140 shown in FIG. Therefore, the process of step S200 is executed when the result of the determination in step S120 shown in FIG. 4 is negative. Further, after the process of step S420 is executed, the process of step S500 shown in FIG. 4 is executed.
- joint value update processing means joint value update processing in the k-th target state.
- steps S200 and S300 are similar to the series of processes in steps S200 and S300 shown in FIG. However, in the operation shown in FIG. 5, if the result of the determination in step S300 is affirmative, the operation control unit 33 advances the process to step S310. Further, if the result of the determination in step S300 is negative, the operation control unit 33 advances the process to step S400, similar to the operation shown in FIG.
- step S310 the motion control unit 33 returns the joint values of each joint mechanism JE to the values before updating. That is, the motion control unit 33 cancels the update of the joint value of each joint mechanism JE by the process of step S420 of the previous joint value update process. Specifically, the motion control unit 33 controls the joint value of each joint mechanism JE (that is, the joint value of each joint mechanism JE updated to the "first joint value” by the process of step S420 of the previous joint value update process). ) is returned to the joint value (“second joint value”) before being updated in step S420 of the previous joint value update process.
- the motion control unit 33 updates the joint values of each joint mechanism JE by the process in step S420 of the joint value update process that was last executed in the (k-1)th target state. Return to previous joint values.
- step S320 is similar to the process in step S320 shown in FIG.
- the Jacobian matrix J used in the process of step S320 is the Jacobian matrix J calculated in step S200 before the process of step S310 is executed.
- the Jacobian matrix J used in the process of step S320 is the Jacobian matrix J calculated based on the joint values of each joint mechanism JE after the process of step S310 is executed (for example, the Jacobian matrix J of the previous joint value update process). It may be the Jacobian matrix J) calculated in step S200.
- the joint mechanism JE in a specific state that is the target of the process in step S320 (state fixing process) is processed in step S300 before the process in step S310 (cancellation of update of joint values of each joint mechanism JE) is executed. be identified. That is, the joint mechanism JE in the specific state that is the target of the process in step S320 is identified based on the joint value ("first joint value") before the update of the joint value of each joint mechanism JE is canceled. .
- step S320 After executing the process in step S320, the operation control unit 33 advances the process to step S400.
- the series of processes in steps S400 and S420 (state calculation process) is similar to the series of processes in steps S400 and S420 (state calculation process) shown in FIG. Note that in the joint value update process shown in FIG. 5, the process of step S310 is executed when a joint mechanism JE in a specific state is included in a plurality of joint mechanisms JE.
- the joint values of JE are updated by the process of step S420.
- each joint mechanism JE in a specific state is included in a plurality of joint mechanisms JE
- each joint mechanism JE is updated in step S420 of the previous joint value update process.
- the joint value update is canceled in step S320 of the current joint value update process. That is, updating the joint values of each of the plurality of joint mechanisms JE to the joint values of each of the plurality of joint mechanisms JE calculated in the series of processes (state calculation process) of steps S400 and S420 of the previous joint value update process. is canceled.
- the joint mechanism JE in the specific state that is the target of the process in step S320 (state fixing process) is specified based on the joint values before the update of the joint values is canceled. If a joint mechanism JE in a specific state is included in the plurality of joint mechanisms JE, after the series of processes of steps S310 and S320 (cancellation and state fixing process) are executed, the series of processes of steps S400 and S420 are executed. is executed.
- the joint values of the plurality of joint mechanisms JE that are not in a specific state are always updated by the process of step S420. That is, in the operations shown in FIGS. 4 and 5, it is possible to prevent the series of processes (unit processes) from step S100 to step S520 from being repeated while the joint mechanism JE is fixed in a specific state.
- the operation of the robot controller 30 when sequentially changing the position and posture of the hand of the robot 10 to a plurality of target positions PP and postures PS is not limited to the examples shown in FIGS. 4 and 5.
- the process of step S740 may be executed after the process of step S760, or may be executed in parallel with the process of step S760.
- the operation of the robot controller 30 when sequentially changing the position and posture of the hand of the robot 10 to a plurality of target positions PP and postures PS may be the operation shown in FIG. 6 or FIG. 7.
- FIG. 6 is a flowchart showing another example of the operation of the robot controller 30 when the position and posture of the hand of the robot 10 are sequentially changed to a plurality of target positions PP and postures PS.
- the joint value update process in step S140A is executed instead of the joint value update process in step S140 shown in FIG. 4, and a series of processes in steps S780 and S782 are added to the operation shown in FIG.
- the operation is similar to that shown in FIG. 4, except that
- step S140A is a series of processes from step S200 to step S420 shown in FIG. That is, the series of processes from step S100 to step S520 shown in FIG. 6 is similar to the series of processes from step S100 to step S520 shown in FIG. Therefore, in the series of processes from step S100 to step S520 shown in FIG. 6, the process of step S310 shown in FIG. 5 (cancellation of update of joint values of each joint mechanism JE) is not executed. In the operation shown in FIG. 6, the process of step S310 shown in FIG. 5 is not executed in the joint value update process of step S140A, but instead a series of processes of steps S780 and S782 are executed after step S760. In the following, a series of processes in steps S780 and S782 will be mainly described.
- step S760 After executing the process in step S760, the operation control unit 33 advances the process to step S780.
- step S780 the motion control unit 33 determines whether there is a joint mechanism JE in a specific state among the plurality of joint mechanisms JE.
- the plurality of joint mechanisms JE referred to in the process of step S780 are the plurality of joint mechanisms JE of the robot 10 whose hand position and posture changed to the target position PPk and posture PSk in step S700.
- step S780 If the result of the determination in step S780 is negative, the operation control unit 33 returns the process to step S8. That is, if there is no joint mechanism JE in a specific state among the plurality of joint mechanisms JE of the robot 10 whose hand position and posture have changed to the target position PPk and posture PSk in step S700, The process returns to step S8. On the other hand, if the result of the determination in step S780 is affirmative, the operation control unit 33 advances the process to step S782.
- step S782 the motion control unit 33 changes the joint value of the joint mechanism JE in the specific state to a joint value that corresponds to a state that is within the movable range of the joint mechanism JE in the specific state and is not in the specific state. Then, the operation control unit 33 returns the process to step S8.
- step S782 in each of the n target states (position PP and posture PS), the initial value of the joint value of each joint mechanism JE becomes the joint value corresponding to the non-specific state.
- the changed value of the joint value changed by the process of step S782 is within the range of movement of the joint mechanism JE in the specific state and within the range of joint values corresponding to a state other than the specific state. It is preferable that the value has a minimum difference from the value.
- the joint mechanism JE in the specific state is among the plurality of joint mechanisms JE in the initial state before the series of processes (unit processes) from step S100 to step S520 is repeatedly executed. If included, the joint value of the joint mechanism JE in the specific state is changed to a joint value corresponding to a state other than the specific state before the first unit process of the unit processes that are repeatedly executed is executed.
- the initial value of the joint value of each joint mechanism JE is suppressed from becoming the joint value corresponding to the specific state. be able to.
- the joint mechanism JE that has changed to the specific state in the k-th target state can be prevented from being fixed to the specific state in the (k+1)th and subsequent target states.
- step S740 may be executed after the process of step S760, or may be executed in parallel with the process of step S760.
- FIG. 7 is a flowchart showing another example of the operation of the robot controller 30 when the position and posture of the hand of the robot 10 are sequentially changed to a plurality of target positions PP and postures PS.
- the joint value update process in step S140A is executed instead of the joint value update process in step S140 shown in FIG.
- the operation is similar to that shown in FIG. 4, except that .
- a series of processes from step S10 to step S50 will be mainly described.
- step S10, the process of step S12, and the process of step S50 are the same as the process of step S100, the process of step S120, and the process of step S500, respectively.
- the joint value initial update process in step S14 is similar to the joint value update process in step S140A, except that the series of processes in steps S300 and S320 are omitted. Note that the joint value initial update process in step S14 will be explained in FIG. 8, which will be described later.
- step S8 After executing the process in step S8, the operation control unit 33 advances the process to step S10.
- step S10 the motion 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, similar to the process in step S100. Then, in step S12, similarly to the process in step S120, the motion control unit 33 determines whether the difference between the position and posture of the hand of the robot 10 and the target position PPk and posture PSk is below a tolerance value. do.
- step S12 If the result of the determination in step S12 is affirmative, the operation control unit 33 advances the process to step S700. On the other hand, if the result of the determination in step S12 is negative, the operation control unit 33 advances the process to step S14.
- step S14 the motion control unit 33 executes a joint value initial update process similar to the series of processes in steps S200, S400, and S420.
- the joint values of each joint mechanism JE are updated for the first time.
- step S14 After executing the joint value initial update process in step S14, the motion control unit 33 increments the loop count in step S50, and advances the process to step S100.
- FIG. 8 is a flowchart showing an example of the joint value initial update process shown in FIG. 7.
- the processing device 32 functioning as the motion control unit 33 executes a series of processes from step S20 to step S42 shown in FIG. 8 as the joint value initial update process of step S14 shown in FIG. Therefore, the process of step S20 is executed when the result of the determination in step S12 shown in FIG. 4 is negative. Further, after the process of step S42 is executed, the process of step S50 shown in FIG. 7 is executed.
- step S20 the motion control unit 33 calculates the Jacobian matrix J based on the current joint values of each joint mechanism JE, similar to the process in step S200. Then, the operation control unit 33 advances the process to step S40.
- step S40 the motion control unit 33 calculates the displacement amount of each joint mechanism JE using the pseudo inverse matrix J + of the Jacobian matrix J, similarly to the process in step S400. Then, the operation control unit 33 advances the process to step S42.
- step S42 the motion control unit 33 updates the joint value of each joint mechanism JE based on the displacement amount of each joint mechanism JE, similar to the process in step S420. Then, the operation control unit 33 advances the process to step S50 shown in FIG.
- the joint value initial update process shown in FIG. 8 the series of processes (state fixing process) of steps S300 and S320 shown in FIG. 3 is not executed. Therefore, in the joint value initial update process shown in FIG. 8, the joint values of each joint mechanism JE are updated regardless of whether the state of the joint mechanism JE is in the specific state or not. Therefore, in the joint value initial update process shown in FIG. 8, for example, the joint value of the joint mechanism JE whose state is the specific state after the process of step S700 executed in the (k-1)th target state is Joint values may be updated to correspond to a state other than a specific state. In this case, it is possible to prevent the first unit process of the repeatedly executed unit process (a series of processes from step S100 to step S520) from starting from the joint value corresponding to the specific state.
- the joint values of the joint mechanism JE in a specific state may be updated in a direction that moves the joint mechanism JE in the specific state out of the range of motion.
- the joint value initial update process is executed every time the target position PPk and posture PSk are updated, if the joint values are repeatedly updated in the direction of moving the joint mechanism JE in a specific state out of the range of motion. There is.
- the repeatedly executed joint value first update process there is a possibility that the joint value of the joint mechanism JE in the specific state is updated to a joint value that causes the joint mechanism JE in the specific state to be outside the range of motion.
- the range of the specific state is larger than the range corresponding to the amount of change in the joint values that changes in one update. More preferably, the range of the specific state is the total amount of change in the joint values when updating of the joint values in the direction of moving the joint mechanism JE in the specific state out of the range of motion is repeated multiple times (for example, n times). The range is larger than the range corresponding to .
- a process similar to the series of steps S780 and S782 shown in FIG. May be executed.
- FIG. 9 is an explanatory diagram for explaining the model used in the simulation.
- the model used in the simulation is also referred to as a simulation model.
- a robot 10 having joint mechanisms JEe (JEe1 and JEe2) instead of the joint mechanism JEp (JEp1 and JEp2) shown in FIG. 1 is modeled.
- the robot 10 shown in FIG. 1 has the same control values as the robot 10 shown in FIG. 9.
- the joint mechanism JEr3 moves along the extending direction of the link LK1A as the link LK1A itself expands and contracts.
- the joint mechanism JEe1 is a translational joint that expands and contracts the link LK1A including the support portion LK1a, the movable portion LK1b, and the movable portion LK1c along the axis Axe1, and is an example of a "first expansion and contraction mechanism.”
- the joint mechanism JEe2 is a translational joint that expands and contracts the link LK2A including the support portion LK2a, the movable portion LK2b, and the movable portion LK2c along the axis Axe2, and is an example of a “second expansion and contraction mechanism”.
- Axis Axe1 is an axis along the extending direction of link LK1A
- axis Axe2 is an axis along the extending direction of link LK2A.
- Link LK1A is an example of a "first link,” and link LK2A is an example of a "second link.” Further, the support portion LK1a is an example of a “first support portion” and is connected to the body portion BDP via the joint mechanism JEr2.
- the movable portion LK1c is an example of a “first movable portion” and is connected to the support portion LK2a of the link LK2A via the joint mechanism JEr3.
- the support portion LK2a is an example of a “second support portion”.
- the movable portion LK2c is an example of a “second movable portion” and is connected to the distal end portion TP1 via the joint mechanism JEr4.
- the movable portion LK1b is connected to the movable portion LK1c so as to move integrally with the movable portion LK1c, and is connected to the support portion LK1a so as to be movable relative to the support portion LK1a.
- the joint mechanism JEe1 moves the movable portion LK1b along the axis Axe1 with respect to the support portion LK1a, thereby moving the movable portion LK1c along the axis Axe1 with respect to the support portion LK1a.
- the link LK1A expands and contracts along the axis Axe1.
- the movable portion LK2b is connected to the movable portion LK2c so as to move integrally with the movable portion LK2c, and is connected to the support portion LK2a so as to be movable relative to the support portion LK2a.
- the joint mechanism JEe2 moves the movable portion LK2b along the axis Axe2 with respect to the support portion LK2a, thereby moving the movable portion LK2c along the axis Axe2 with respect to the support portion LK2a.
- the link LK2A expands and contracts along the axis Axe2.
- the simulation model shown in FIG. 9 introduces a plurality of coordinate systems ⁇ that correspond one-to-one to a plurality of joint mechanisms JE.
- Each of the plurality of coordinate systems ⁇ is assigned one of the numbers 1 to 8 in order of the proximity of the corresponding joint mechanism JE to the body part BDP.
- the joint mechanism JEr1 is the first joint
- the joint mechanism JEr2 is the second joint
- the joint mechanism JEe1 is the third joint.
- the joint mechanism JEr3 is the fourth joint
- the joint mechanism JEe2 is the fifth joint
- the joint mechanism JEr4 is the sixth joint.
- the joint mechanism JEr5 is the seventh joint
- the joint mechanism JEr6 is the eighth joint.
- the coordinate system ⁇ i corresponding to the i-th joint mechanism JE is a three-axis orthogonal coordinate system having Xi, Yi, and Zi axes that are orthogonal to each other.
- i is a natural number greater than or equal to 1 and less than or equal to 8.
- the coordinate system ⁇ 8 corresponding to the eighth joint mechanism JEr6 corresponds to the tip coordinate system of the robot 10. Note that in FIG. 9, the Y-axis from the coordinate system ⁇ 1 to the coordinate system ⁇ 7 is omitted to make the diagram easier to read.
- the Zi axis of the coordinate system ⁇ i corresponds to the axis of rotation by the i-th joint mechanism JE when the i-th joint mechanism JE is a revolute joint, and when the i-th joint mechanism JE is a prismatic joint. In this case, it corresponds to the axis along the expansion/contraction direction of the link LK that expands and contracts by the i-th joint mechanism JE.
- the Xi axis of the coordinate system ⁇ i is basically determined to be a common perpendicular line to the Zi axis and the Zi+1 axis.
- the i-th joint mechanism JE is associated with the i-th column element J i of the Jacobian matrix J, for example.
- the element J1 in the first column of the Jacobian matrix J corresponds to the joint mechanism JEr1
- the element J2 in the second column of the Jacobian matrix J corresponds to the joint mechanism JEr2
- the element J2 in the third column of the Jacobian matrix J corresponds to the joint mechanism JEr1.
- Element J3 corresponds to joint mechanism JEe1.
- the element J4 in the fourth column of the Jacobian matrix J corresponds to the joint mechanism JEr3
- the element J5 in the fifth column of the Jacobian matrix J corresponds to the joint mechanism JEe2
- the element J4 in the sixth column of the Jacobian matrix J corresponds to the joint mechanism JEe2.
- Element J6 corresponds to joint mechanism JEr4.
- the element J7 in the seventh column of the Jacobian matrix J corresponds to the joint mechanism JEr5
- the element J8 in the eighth column of the Jacobian matrix J corresponds to the joint mechanism JEr6.
- the link length L1 corresponding to the distance between the origins of the reference coordinate system ⁇ 0 and the coordinate system ⁇ 1 is set to 0.2409 [m]
- the link length L1 corresponding to the distance between the origins of the coordinate system ⁇ 5 and ⁇ 6 is set to 0.2409 [m].
- L6 is set to 0.1 [m] (-0.1 [m] as a parameter in the simulation).
- the link length L7 corresponding to the distance between the origins of the coordinate systems ⁇ 6 and ⁇ 7 is set to 0.1 [m]
- the link length L8 corresponding to the distance between the origins of the coordinate systems ⁇ 7 and ⁇ 8 is set to 0.05 [m].
- m] is set.
- the movable range (stretching range) of link LK1A by joint mechanism JEe1 is set from 0.25 [m] to 0.5 [m]
- the movable range (stretching range) of link LK2A by joint mechanism JEe2 is set to 0.25 [m] to 0.5 [m]. It is set from .3 [m] to 0.5 [m].
- each joint mechanism JE of the robot 10 is the initial joint value ⁇ int shown in FIG. 10, and the hand of the robot 10 moves in the positive direction of the X0 axis.
- FIG. 10 is an explanatory diagram for explaining an example of the initial joint value ⁇ int of the simulation model shown in FIG. 9.
- the initial joint value ⁇ int of the joint mechanism JEe1 is set to 0.5 [m], which is the upper limit of the movable range of the link LK1A
- the initial joint value ⁇ int of the joint mechanism JEe2 is The upper limit of the movable range of link LK2A is set to 0.5 [m]. That is, both joint mechanisms JEe1 and JEe2 are in their limit states. Therefore, in this embodiment, as shown in FIG. 16, which will be described later, among the plural elements of the Jacobian matrix J, the values of the elements J3 and J4 corresponding to the joint mechanisms JEe1 and JEe2, respectively, are set to 0. Ru.
- the control method of the comparison example compared with this embodiment (the control method in which the state fixing process is not executed), as shown in FIG.
- the values of the corresponding elements J 3 and J 4 are not particularly fixed.
- FIG. 11 is an explanatory diagram for explaining the hand movement amount ⁇ r used in the simulation.
- the hand of the robot 10 is moved by 0.00272 [m] in the positive direction of the X0 axis by jogging. Therefore, as shown in FIG. 11, the amount of movement in the positive direction of the X0 axis (0.00272 [m]) corresponds to the amount of hand movement ⁇ r.
- the hand of the robot 10 moves by 0.00272 [m] in the positive direction of the X0 axis from the limit state in which the links LK1A and LK2A are extended to the upper limit by the joint mechanisms JEe1 and JEe2.
- FIG. 12 is an explanatory diagram for explaining the Jacobian matrix J used in the control method of the comparison example. Further, FIG. 13 is an explanatory diagram for explaining the pseudo inverse matrix J + of the Jacobian matrix J shown in FIG. 12.
- the Jacobian matrix J is calculated based on the simulation model described in FIG. 9 and the initial joint value ⁇ int shown in FIG. Since the method for calculating the Jacobian matrix J is already known, the explanation will be omitted. In the comparative control method, the Jacobian matrix J is calculated on the premise that all eight joint mechanisms JE (eight axes Ax) are operated. Therefore, as shown in FIG. 12, the values of the elements J 3 and J 4 corresponding to the joint mechanisms JEe1 and JEe2 in the limit state, respectively, are not fixed to 0.
- a pseudo inverse matrix J + shown in FIG. 13 is calculated from the Jacobian matrix J shown in FIG. 12.
- the method for calculating the pseudo-inverse matrix J + is well known, so the explanation will be omitted.
- the pseudo-inverse matrix J + shown in FIG. 13 is used as the pseudo-inverse matrix J + of the above equation (7), and the joint movement amount ⁇ is calculated.
- FIG. 14 is a diagram showing the joint movement amount ⁇ calculated using the pseudo inverse matrix J + shown in FIG. 13.
- the value indicating the displacement of the joint mechanisms JEe1 and JEe2 in the limit state is calculated as the joint movement amount ⁇ , as shown by the star in FIG. Ru.
- the joint movement amount ⁇ shown in FIG. 14 is used to calculate the final joint value ⁇ end, which is the joint value after the hand has moved, the states of the joint mechanisms JEe1 and JEe2 are outside the range of motion, as shown in FIG. becomes the state of
- FIG. 15 is a diagram showing the final joint value ⁇ end calculated based on the joint movement amount ⁇ shown in FIG. 14.
- the final joint value ⁇ end is calculated by adding the joint movement amount ⁇ shown in FIG. 14 to the initial joint value ⁇ int shown in FIG.
- the final joint value ⁇ end shown in FIG. 15 is a value obtained by rounding off the sum of the joint movement amount ⁇ and the initial joint value ⁇ int to the seventh decimal place.
- the final joint value ⁇ end of the joint mechanism JEe1 exceeds 0.5 [m], which is the upper limit of the movable range of the link LK1A, and the final joint value of the joint mechanism JEe2 ⁇ end becomes a value exceeding 0.5 [m], which is the upper limit of the movable range of link LK2A. That is, in the control method of the comparative example, a correct solution of the inverse kinematics calculation (a solution for operating each joint mechanism JE within the movable range) cannot be obtained, and the calculation result becomes an error. In this case, the robot 10 cannot be made to perform the desired operation.
- FIG. 16 is an explanatory diagram for explaining the Jacobian matrix J when the joint mechanism JE in a specific state is fixed. Further, FIG. 17 is an explanatory diagram for explaining the pseudo inverse matrix J + of the Jacobian matrix J shown in FIG. 16.
- the states of the joint mechanisms JEe1 and JEe2 are in the limit state, as explained with reference to FIG. That is, the states of the joint mechanisms JEe1 and JEe2 are also specific states in which a predetermined margin is given to the limit state. Therefore, in this embodiment, as shown in FIG. 16, among the multiple elements of the Jacobian matrix J, the values of the elements J3 and J4 corresponding to the joint mechanisms JEe1 and JEe2 in the specific state, respectively, are set to 0. be done. Note that the Jacobian matrix J shown in FIG. 16 is the same as the Jacobian matrix J shown in FIG. 12 except that the values of elements J 3 and J 4 are set to 0.
- the joint mechanisms JEe1 and JEe2 corresponding to elements J3 and J4 are regarded as fixed joints whose states do not change. can perform inverse kinematics calculations.
- the pseudo inverse matrix J + shown in FIG. 17 is calculated from the Jacobian matrix J shown in FIG. 16. Then, the pseudo-inverse matrix J + shown in FIG. 17 is used as the pseudo-inverse matrix J + of the above equation (7), and the joint movement amount ⁇ is calculated.
- FIG. 18 is a diagram showing the joint movement amount ⁇ calculated using the pseudo inverse matrix J + shown in FIG. 17.
- the joint movement amount ⁇ of JEe2 becomes a value that can be considered as 0.
- the joint movement amount ⁇ of the joint mechanisms JEe1 and JEe2 in the limit state has a value that can be considered as zero. Therefore, the states of the joint mechanisms JEe1 and JEe2 based on the final joint value ⁇ end calculated using the joint movement amount ⁇ shown in FIG. 18 are within the movable range, as shown in FIG.
- FIG. 19 is a diagram showing the final joint value ⁇ end calculated based on the joint movement amount ⁇ shown in FIG. 18.
- the final joint value ⁇ end is calculated by adding the joint movement amount ⁇ shown in FIG. 18 to the initial joint value ⁇ int shown in FIG. Note that, like the final joint value ⁇ end shown in FIG. 15, the final joint value ⁇ end shown in FIG. 19 is a value obtained by rounding off the sum of the joint movement amount ⁇ and the initial joint value ⁇ int to the seventh decimal place.
- the final joint value ⁇ end of the joint mechanism JEe1 is the same value as the initial joint value ⁇ int of the joint mechanism JEe1 (0.5 [m], which is the upper limit of the movable range of the link LK1A). be.
- the final joint value ⁇ end of the joint mechanism JEe2 is the same value as the initial joint value ⁇ int of the joint mechanism JEe2 (0.5 [m], which is the upper limit of the movable range of the link LK2A).
- FIG. 20 is an explanatory diagram for explaining the results of a simulation using an initial joint value ⁇ int different from the initial joint value ⁇ int shown in FIG.
- the initial joint value ⁇ int of the joint mechanism JEe1 is set to 0.25 [m], which is the lower limit of the movable range of the link LK1A
- the initial joint value ⁇ int of the joint mechanism JEe2 is
- the lower limit of the movable range of link LK2A is set to 0.3 [m]. That is, both joint mechanisms JEe1 and JEe2 are in their limit states.
- the hand of the robot 10 is moved by 0.00272 [m] in the negative direction of the The amount of movement of the other axes is assumed to be 0 [m]).
- the hand of the robot 10 moves by 0.00272 [m] in the negative direction of the X0 axis from the limit state in which the links LK1A and LK2A are contracted to the lower limit by the joint mechanisms JEe1 and JEe2.
- the simulation results (all axes drive) of the control method of the comparison example (the control method in which the state fixing process is not executed) and the simulation results (of the control method in which the state fixing process is executed) of the present embodiment are shown. 2-axis fixed) is shown.
- the joint mechanisms JEe1 and JEe2 are in a state outside their movable range.
- the final joint value ⁇ end of the joint mechanism JEe1 is a value smaller than 0.25 [m], which is the lower limit of the movable range of the link LK1A
- the final joint value ⁇ end of the joint mechanism JEe2 is the lower limit of the movable range of the link LK2A. This value is smaller than the lower limit of 0.3 [m].
- the pseudo inverse matrix J Used to calculate the states of the joint mechanisms JEe1 and JEe2 are maintained within the movable range, as shown in "2-axis fixation" in FIG.
- the final joint value ⁇ end of the joint mechanism JEe1 is 0.25 [m], which is the lower limit of the movable range of link LK1A
- the final joint value ⁇ end of joint mechanism JEe2 is 0, which is the lower limit of the movable range of link LK2A. .3 [m].
- each joint mechanism JE in the limit state is regarded as a fixed joint and inverse kinematics calculation is performed on the remaining six axes, so the joint mechanism JE in the limit state is not displaced. Therefore, in this embodiment, each joint mechanism JE can continue jogging within its movable range.
- the number of joint mechanisms JE in the limit state is not limited to two.
- the number of joint mechanisms JE in the limit state may be one, or more than three and less than m (m is the total number of joint mechanisms JE).
- the joint mechanism JE in a specific state with a predetermined margin in the limit state may be regarded as a fixed joint.
- the first case is when the robot 10 is jogged. In the jog operation, a target position is instructed to the robot 10, so the angle (movement amount) of each joint to move to the instructed target position is calculated by inverse kinematics calculation.
- the second is when the trajectory of the robot 10 is generated.
- the robot 10 is to repeatedly perform operations, it is necessary to memorize the trajectory in advance.
- the angle of each joint at multiple points on the trajectory is calculated by inverse kinematics calculation. Note that if the number of points on the trajectory is small, the trajectory between the points may be calculated and complemented when the robot 10 is actually operated.
- the third case is when the robot 10 is equipped with a vision camera or the like, and the trajectory of the robot 10 is generated (or the trajectory is corrected) based on vision information or the like. In this case as well, a new target position is instructed as in the first jog operation.
- the robot system 1 includes the robot 10, which is an articulated robot having seven or more joint mechanisms JE, and the robot controller 30, which controls the operation of the robot 10.
- the control method for the robot 10 includes executing an inverse kinematics calculation to calculate the amount of displacement of a plurality of joint mechanisms JE that operate the robot 10, and updating a plurality of joint values of the plurality of joint mechanisms JE based on the amount of displacement.
- the calculation process is performed so that the state based on the corresponding joint value among the plurality of joint mechanisms JE is set to a predetermined specific state (for example, a limit state in which constraints regarding the displacement of the joint mechanism JE are satisfied with a predetermined margin).
- a predetermined specific state for example, a limit state in which constraints regarding the displacement of the joint mechanism JE are satisfied with a predetermined margin.
- the joint values of the joint mechanism JE that are not in the specific state are displaced without substantially displacing the joint values of the joint mechanism JE that is in the specific state.
- the specific state is a state in which the joint value is the value of the boundary area between the outside of the movement area and the inside of the movement area within the movement area of a predetermined joint mechanism JE among the plurality of joint mechanisms JE. There may be.
- the robot controller 30 has an operation control section 33 that repeatedly executes the above-described unit processing.
- the control program PGr causes the processing device 32 included in the robot controller 30 to function as the operation control section 33 described above.
- the joint mechanism JE in a specific state is regarded as a fixed joint whose state does not change, and the inverse kinematics calculation is performed using the remaining joint mechanisms JE. Therefore, in this embodiment, inverse kinematics calculation can be performed without displacing the joint mechanism JE in a specific state. As a result, in this embodiment, a correct solution of the inverse kinematics calculation (a solution that causes each joint mechanism JE to operate within its movable range) can be obtained. That is, in this embodiment, it is possible to reduce the frequency of errors in the results of inverse kinematics calculations (for example, errors in which a solution for operating each joint mechanism JE within the movable range cannot be obtained). As a result, in this embodiment, the robot 10 can be continuously operated within the movable range of each joint mechanism JE.
- the robot controller 30 may cancel updating of the joint values of the plurality of joint mechanisms JE when the plurality of joint mechanisms JE include a joint mechanism JE in a specific state.
- the joint mechanism JE in a specific state is included in the multiple joint mechanisms JE, the multiple joints of the multiple joint mechanisms JE that were updated to the multiple first joint values in the previous unit process
- the value is returned to the plurality of second joint values before updating, the joint in a specific state that is the target of the state fixing process is identified based on the plurality of first joint values, and the state is calculated after the state fixing process is executed. Execute processing.
- this embodiment it is possible to always update the joint values calculated in the state calculation process to the joint values of a plurality of joint mechanisms JE that are not in a specific state. As a result, in this embodiment, it is possible to prevent unit processing from being repeated while the joint mechanism JE is fixed in a specific state.
- the robot controller 30 controls the unit process to be repeatedly executed.
- the joint value of the joint mechanism JE in the specific state may be changed to a joint value corresponding to a state other than the specific state.
- the robot controller 30 executes inverse kinematics calculation using the Jacobian matrix J in the state calculation process, and in the state fixing process, among the plurality of elements of the Jacobian matrix J, the robot controller 30
- the joint value of the joint mechanism JE in a specific state is set to a fixed value.
- the joint value of the joint mechanism JE in the specific state is changed. can be easily set to a fixed value.
- inverse kinematics calculations are continuously performed to calculate each joint without changing the number of rows and columns of the Jacobian matrix J or dividing it into multiple matrices. joint values can be calculated.
- the plurality of joint mechanisms JE include at least one translational joint (for example, a joint mechanism JEp or JEe).
- a joint mechanism JEp or JEe the prismatic joint in a specific state close to the upper or lower limit of the range of motion is regarded as a fixed joint, and the inverse kinematics calculation is performed using the remaining joint mechanism JE. It is possible to reduce the frequency of errors in academic calculation results. Therefore, in this embodiment, a wide variety of multi-joint robots, such as multi-joint robots including translational joints, can be continuously operated.
- the robot 10 has an axis in which the angle formed by the body part BDP, the link LK1, the link LK2, the tip part TP1, and the direction Dv1 perpendicular to the bottom surface BDPbt of the body part BDP is a predetermined angle or less.
- a joint mechanism JEr1 that rotates at least a portion of the body part BDP with Ax1 as a first rotation axis connects the body part BDP and the link LK1, and has a predetermined angle with a direction Dv1 perpendicular to the bottom surface BDPbt of the body part BDP.
- a joint mechanism JEr2 that rotates the link LK1 using an axis Ax2 that is larger than the angle as a second rotation axis, and an axis Ax3 that connects the links LK1 and LK2 and whose angle with the direction De1 in which the link LK1 extends is larger than a predetermined angle.
- a joint mechanism JEr3 that rotates the link LK2 with respect to the link LK1 using the third rotation axis as a third rotation axis, and an axis that connects the link LK2 and the tip portion TP1 and makes an angle larger than a predetermined angle with the direction De2 in which the link LK2 extends.
- a joint mechanism JEr4 rotates the distal end TP1 with respect to the link LK2 with Ax4 as a fourth rotation axis, and a joint mechanism JEr3 is rotated relative to the link LK1 along the extending direction (direction De1) of the link LK1. It has a joint mechanism JEp1 that moves the link LK2, and a joint mechanism JEp2 that moves the link LK2 relative to the joint mechanism JEr3 along the extending direction (direction De2) of the link LK2.
- the tip portion TP1 connects a first portion TP11 connected to the link LK2, a second portion TP12 connected to the first portion TP11, the first portion TP11 and the second portion TP12, and connects to the fourth rotation shaft.
- a joint mechanism JEr5 that rotates the second part TP12 with respect to the first part TP11 using the axis Ax5, which has an angle larger than a predetermined angle, as a fifth rotation axis, and an axis whose angle with the fifth rotation axis is larger than a predetermined angle. It includes a joint mechanism JEr6 that rotates at least a portion of the distal end portion TP1 about Ax6 as a sixth rotation axis.
- the plurality of joint mechanisms JE are joint mechanism JEr1, joint mechanism JEr2, joint mechanism JEr3, joint mechanism JEr4, joint mechanism JEr5, joint mechanism JEr6, joint mechanism JEp1, and joint mechanism JEp2.
- the robot 10 which is a multi-joint robot including six rotary joints and two translational joints, can be continuously operated.
- the two translational joints often function as redundant joints, and the joint values frequently become specific states. Therefore, in the case of a robot with translational joints, the robot can be controlled very efficiently by performing a fixing process on the translational joints, as in the simulation explained using FIGS. 9 to 20. be able to.
- the robot system 1 may be used in an article manufacturing method that includes assembling or removing parts.
- the joint mechanism JEr4 connects the link LK2 and the tip end TP1, but the present invention is not limited to such an embodiment.
- the joint mechanism JEr4 may be included in the link LK2.
- FIG. 21 is an explanatory diagram for explaining an example of the robot 10 according to the first modification. Elements similar to those described in FIGS. 1 to 9 are designated by the same reference numerals, and detailed description thereof will be omitted.
- the robot 10 according to this modification is, for example, an 8-axis multi-joint robot having joint mechanisms JEe (JEe1 and JEe2) instead of the joint mechanisms JEp (JEp1 and JEp2) shown in FIG.
- the robot 10 includes joint mechanisms JEr1A, JEr2, JEr3A, JEr4A, JEr5A, JEr6, JEe1, and JEe2, a body portion BDPa, links LK1A and LK2A, and a tip portion TP1A.
- the joint mechanism JEe1 is provided on the link LK1A
- the joint mechanisms JEe2 and JEr4A are provided on the link LK2A.
- the body part BDPa is an example of a "base”.
- the joint mechanism JEr1A is an example of a "first drive mechanism”
- the joint mechanism JEr3A is an example of a “third drive mechanism”
- the joint mechanism JEr5A is an example of a "fifth drive mechanism.”
- the body part BDPa is fixed to a predetermined location such as the floor via the joint mechanism JEr1A.
- the joint mechanism JEr1A rotates the body part BDPa about an axis Ax1 perpendicular to the bottom surface BDPbt of the body part BDPa as a rotation axis.
- the joint mechanism JEr2 connects the body part BDPa and the support part LK1a of the link LK1A, and rotates the link LK1A with respect to the body part BDPa using an axis Ax2 parallel to the bottom surface BDPbt of the body part BDPa as a rotation axis.
- the link LK1A is configured to be expandable and contractible, for example, along the direction De1 in which the link LK1A extends.
- the link LK1A includes a support portion LK1a connected to the body portion BDPa, movable portions LK1b and LK1c, and a joint mechanism JEe1.
- the link LK2A is configured to be expandable and contractible, for example, along the direction De2 in which the link LK2A extends.
- the link LK2A includes a support portion LK2a connected to the movable portion LK1c of the link LK1A, movable portions LK2b and LK2c, a joint mechanism JEe2, and a joint mechanism JEr4A.
- the link LK (LK1A and LK2A) and the joint mechanism JEe (JEe1 and JEe2) have been explained in FIG. 9, so a detailed explanation will be omitted.
- the support portion LK1a is hollow.
- the link LK1A contracts, at least a portion of the movable portion LK1b is stored inside the support portion LK1a.
- the support portion LK2a is hollow. Then, when the link LK2A contracts, at least a portion of the movable portion LK2b is stored inside the support portion LK2a.
- the joint mechanism JEr3A connects the movable portion LK1c of the link LK1A and the supporting portion LK2a of the link LK2A, and rotates the link LK2A with respect to the link LK1A about an axis Ax3 perpendicular to the direction De1 in which the link LK1A extends as a rotation axis. .
- the joint mechanism JEr4A rotates the movable portion LK2c with respect to the support portion LK2a using an axis Ax4A parallel to the direction De2 in which the link LK2A extends as a rotation axis.
- the joint mechanism JEr4A is an example of a "fourth drive mechanism," and the axis Ax4A is an example of a "fourth rotation axis.”
- the joint mechanism JEr5A connects the movable portion LK2c of the link LK2A and the distal end TP1A, and rotates the distal end TP1A with respect to the link LK2A using an axis Ax5 perpendicular to the direction De2 in which the link LK2A extends as a rotation axis.
- the distal end portion TP1A includes a second portion TP12A connected to the movable portion LK2c of the link LK2 via a joint mechanism JEr5A, and a joint mechanism JEr6.
- the joint mechanism JEr6 is similar to the joint mechanism JEr6 shown in FIG.
- the configuration of the robot 10 according to this modification is not limited to the example shown in FIG. 21.
- the joint mechanism JEr4A moves with respect to the support part LK2a along the direction De2 together with the movable part LK2c of the link LK2A, but it may be fixed to the support part LK2a.
- the joint mechanism JEr4A may rotate the movable portion LK2b with respect to the support portion LK2a using the axis Ax4A as the rotation axis, and the joint mechanism JEe2 may move the movable portion LK2c with respect to the movable portion LK2b.
- the movable part LK2b is hollow.
- link LK2A contracts, at least a portion of movable portion LK2c is stored inside movable portion LK2b.
- one of the joint mechanisms JEe1 and JEe2 may be omitted.
- the robot 10 includes a body part BDPa, a link LK1A including a support part LK1a and a movable part LK1c, a link LK2A including a support part LK2a and a movable part LK2c, a tip part TP1A, and a body part BDPa.
- a joint mechanism JEr1A that rotates at least a portion of the body part BDPa about an axis Ax1 having a predetermined angle or less with respect to a direction Dv1 perpendicular to the bottom surface BDPbt of the joint mechanism JEr1A, which connects the body part BDPa and the support part LK1a.
- a joint mechanism JEr2 that rotates the link LK1A with respect to the body part BDPa using an axis Ax2 whose angle with the direction Dv1 perpendicular to the bottom surface BDPbt of the body part BDPa is larger than a predetermined angle as a second rotation axis, and a movable part LK1c.
- a joint mechanism JEr3A that connects the supporting portion LK2a and rotates the link LK2A with respect to the link LK1A using an axis Ax3 that is larger than a predetermined angle with the direction De1 in which the link LK1A extends as a third rotation axis;
- a joint mechanism JEr4A that rotates the movable portion LK2c with respect to the support portion LK2a using an axis Ax4A having a predetermined angle or less with respect to the extending direction De2 as a fourth rotation axis, and a joint mechanism JEr4A that rotates the movable portion LK2c with respect to the support portion LK2a, and the movable portion LK2c and the tip portion TP1A.
- a joint mechanism JEr5A that rotates the distal end portion TP1A with respect to the link LK2A with the axis Ax5 connected to the link LK2A and whose angle with the extending direction (direction De2) of the link LK2A is larger than a predetermined angle as a fifth rotation axis, and a fifth rotation axis.
- a joint mechanism JEr6 rotates at least a portion of the distal end portion TP1A relative to the link LK2A using an axis Ax6 whose angle is larger than a predetermined angle as a sixth rotation axis;
- the joint mechanism JEe1 expands and contracts the link LK1A by moving it along the extending direction (direction De1), and the movable part LK2c is moved along the extending direction (direction De2) of the link LK2A relative to the supporting part LK2a. Accordingly, it includes a joint mechanism JEe2 that extends and contracts the link LK2A.
- the plurality of joint mechanisms JE are joint mechanism JEr1A, joint mechanism JEr2, joint mechanism JEr3A, joint mechanism JEr4A, joint mechanism JEr5A, joint mechanism JEr6, joint mechanism JEe1, and joint mechanism JEe2. Also in this modification, the same effects as in the above-described embodiment can be obtained.
- the joint mechanism JEr4 rotates the distal end portion TP1 with respect to the link LK2 using the axis Ax4 perpendicular to the direction De2 in which the link LK2 extends as the rotation axis. It is not limited to this embodiment.
- the joint mechanism JEr4 may rotate the distal end portion TP1 with respect to the link LK2 using an axis whose angle with the direction De2 in which the link LK2 extends is a predetermined angle or less as the rotation axis.
- FIG. 22 is an explanatory diagram for explaining an example of the tip portion TP1B according to the second modification. Elements similar to those described in FIGS. 1 to 21 are designated by the same reference numerals, and detailed description thereof will be omitted.
- the robot 10 according to this modification example is shown in FIG. 1 except that it has a link LK2B, a joint mechanism JEr4B, and a tip end TP1B instead of the link LK2, joint mechanism JEr4, and tip end TP1 shown in FIG.
- Link LK2B is similar to link LK2 except that joint mechanism JEr4B is connected instead of joint mechanism JEr4.
- the link LK2B is an example of a "second link” and the joint mechanism JEr4B is an example of a "fourth drive mechanism.”
- the joint mechanism JEr4B connects the link LK2B and the distal end TP1B, and rotates the distal end TP1B with respect to the link LK2B about an axis Ax4A parallel to the direction De2 as a rotation axis.
- the rotation direction Dr4 in FIG. 11 indicates the rotation direction of the tip portion TP1B when rotating around the axis Ax4A.
- the axis Ax4A is an example of a "fourth rotation axis" and corresponds to an axis whose angle with the direction De2 in which the link LK2B extends is less than or equal to a predetermined angle.
- the distal end portion TP1B includes a first portion TP11A connected to the link LK2B, a second portion TP12A connected to the first portion TP11A, a joint mechanism JEr5A, and a joint mechanism JEr6.
- the first portion TP11A is connected to the link LK2B via a joint mechanism JEr4B, for example. Therefore, the first portion TP11A rotates with respect to the link LK2B using the axis Ax4A as the rotation axis.
- the joint mechanism JEr5A connects the first part TP11A and the second part TP12A, and rotates the second part TP12A with respect to the first part TP11A about an axis Ax5 perpendicular to the axis Ax4A as a rotation axis.
- the rotation direction Dr5 in FIG. 1 indicates the rotation direction of the second portion TP12A when rotating around the axis Ax5.
- the joint mechanism JEr6 is similar to the joint mechanism JEr6 shown in FIG.
- the joint mechanism JEr6 rotates at least a portion of the tip portion TP1B (for example, the end surface TP1sf) about an axis Ax6 perpendicular to the axis Ax5 as a rotation axis.
- the surface of the joint mechanism JEr6 corresponds to the end surface TP1sf.
- the end surface of the second portion TP12A may be the end surface TP1sf.
- the joint mechanism JEr4B rotates the distal end portion TP1B with respect to the link LK2B using the axis Ax4A, which forms an angle of less than a predetermined angle with the direction De2, as the fourth rotation axis.
- the distal end portion TP1B includes a first portion TP11A connected to the link LK2B, a second portion TP12A connected to the first portion TP11A, a joint mechanism JEr5A, and a joint mechanism JEr6.
- the joint mechanism JEr5A connects the first part TP11A and the second part TP12A, and sets the axis Ax5 whose angle with the fourth rotation axis is larger than a predetermined angle as the fifth rotation axis, and connects the second part TP12A to the first part TP11A. Rotate against.
- the joint mechanism JEr6 rotates at least a portion of the distal end portion TP1B using the axis Ax6, which forms an angle larger than a predetermined angle with the fifth rotation axis, as the sixth rotation axis. Also in this modification, the same effects as in the above-described embodiment can be obtained.
- a multi-joint robot including six rotary joints and two translational joints is exemplified as the robot 10, but the present invention is not limited to such an embodiment.
- the robot 10 may be an articulated robot with seven axes, or may be an articulated robot with nine or more axes.
- the same effects as the embodiment and the modified example described above can be obtained also in this modified example.
- the robot system 1 including the robot 10 described in the embodiments and modifications described above may be used in an article manufacturing method that includes assembling parts or removing parts.
- FIG. 23 is an explanatory diagram for explaining an example of turning.
- the extending direction Dei in FIG. 23 indicates the direction in which the link LKi extends
- the extending direction Dej indicates the direction in which the link LKj extends.
- the joint mechanism JEri in FIG. 23 connects the link LKi and the link LKj, and rotates the link LKj with respect to the link LKi using the axis Axi as a rotation axis.
- the angle ⁇ between the extending direction Dei and the axis Axi can be understood as the angle of the axis Axi with respect to the extending direction Dei (for example, 4 angles for two straight lines that intersect with each other, or 4 angles for parallel lines) (for two straight lines, 0° and 180°), the angle is between 0° and 90°.
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 90°, which is larger than the predetermined angle (45°). Therefore, in the first pattern, the rotation of the link LKj about the axis Axi is a turn. Further, in the first pattern, the extending direction Dej of the link LKj is perpendicular to the axis Axi. In the first pattern, when the link LKj rotates (swivels) about the axis Axi, the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi changes.
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 0°, which is less than or equal to a predetermined angle (45°). Therefore, in the second pattern, the rotation of the link LKj about the axis Axi is rotation other than turning. Further, in the second pattern, the extending direction Dej of the link LKj is parallel to the extending direction Dei of the link LKi and the axis Axi. That is, the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is 0°.
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 0°, which is less than or equal to a predetermined angle (45°). Therefore, in the third pattern, the rotation of the link LKj about the axis Axi is rotation other than turning. Further, in the third pattern, the extending direction Dej of the link LKj is perpendicular to the extending direction Dei of the link LKi and the axis Axi. That is, the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is 90°.
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 10°, which is less than or equal to a predetermined angle (45°). Therefore, in the fourth pattern, the rotation of the link LKj about the axis Axi is rotation other than turning. Further, in the fourth pattern, the extending direction Dej of the link LKj is parallel to the axis Axi, and the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is 10°.
- the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is maintained at 10 degrees and is always constant. .
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 70°, which is larger than the predetermined angle (45°). Therefore, in the fifth pattern, the rotation of the link LKj with the axis Axi as the rotation axis is a turn. Furthermore, in the fifth pattern, the extending direction Dej of the link LKj is perpendicular to the axis Axi. In the fifth pattern, when the link LKj rotates (turns) about the axis Axi, the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi changes.
- the angle ⁇ between the extending direction Dei of the link LKi and the axis Axi is 10°, which is less than or equal to a predetermined angle (45°). Therefore, in the sixth pattern, the rotation of the link LKj about the axis Axi is rotation other than turning. Furthermore, in the sixth pattern, the extending direction Dej of the link LKj is perpendicular to the axis Axi. In the sixth pattern, when the link LKj rotates about the axis Axi, the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi changes.
- the angle ⁇ between the extending 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 with the axis Axi as the rotation axis is a turn. Further, in the seventh pattern, the extending direction Dej of the link LKj is parallel to the axis Axi, and the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is 70°.
- the rotation about the axis Axi which is larger than the predetermined angle with the extending direction Dei of the link LKi, is a rotation.
- the definition of "turning" is not limited to the above example. For example, if the above-mentioned definition in which turning is rotation about the axis Axi whose angle with the extending direction Dei of the link LKi is larger than a predetermined angle is used as the first definition, then instead of the first definition, the following A second definition or a third definition may be adopted.
- the rotation corresponds to turning. Therefore, in the second definition, if the angle of the extending direction Dej of the link LKj with respect to the extending direction Dei of the link LKi is always constant even when rotated, the rotation corresponds to a rotation other than turning.
- the first pattern, fifth pattern, and sixth pattern shown in FIG. 23 correspond to turning
- the second pattern, third pattern, fourth pattern, and seventh pattern correspond to turning. Corresponds to rotation.
- the rotation corresponds to turning. Therefore, in the third definition, if the angle between the extending direction Dej of the rotating link LKj and the rotation axis (axis Axi) of the link LKj is larger than a predetermined angle, the rotation corresponds to turning. Therefore, in the third definition, if the angle between the extending direction Dej of the link LKj and the rotation axis (axis Axi) of the link LKj is less than or equal to a predetermined angle, the rotation corresponds to a rotation other than turning.
- the first pattern, third pattern, fifth pattern, and sixth pattern shown in FIG. 23 correspond to turning
- the second pattern, fourth pattern, and seventh pattern correspond to turning. Corresponds to rotation.
- two joint mechanisms JEr's A relative rotational relationship may also be defined. Specifically, if the angle between the two rotation axes is less than a predetermined angle (typically, when they are parallel), the two rotations are considered to be the same type of rotation, and the angle between the two rotation axes is If the angle is larger than a predetermined angle (typically, they are orthogonal), the two rotations may be different types of rotations.
- the same type of rotation is one in which both rotations are turning, or both rotations are rotations other than turning, and different types of rotation are rotations in which one of the two rotations is turning and the other is rotation other than turning. It is.
- the rotation serving as the starting point of the relative relationship may be determined based on, for example, any one of the above-mentioned first definition, second definition, and third definition.
- the first pattern shown in FIG. 23 corresponds to turning in any of the first, second, and third definitions
- the second pattern corresponds to turning in any of the first, second, and third definitions. This also applies to rotations other than turning. Therefore, it is preferable that the first pattern or the second pattern be the rotation that becomes the starting point of the relative relationship.
- a definition that is a combination of two or more of the above-mentioned first definition, second definition, and third definition may be used.
- the rotation that corresponds to turning in all of the two or more definitions that are combined may be regarded as turning, or the rotation that corresponds to turning in at least one of the two or more definitions that are combined may be regarded as turning.
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Manipulator (AREA)
Abstract
多関節ロボットの制御方法は、7個以上の複数の関節を有する多関節ロボットの制御方法であり、多関節ロボットを動作させる複数の関節の変位量を計算する逆運動学計算を実行し、複数の関節の複数の関節値を変位量に基づいて更新する算出処理と、複数の関節のうち、関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、を含む単位処理を繰り返し実行し、固定処理が実行された場合、算出処理において、複数の関節の関節値のうち、特定状態の関節の関節値を実質的に変位させることなく、特定状態でない関節の関節値を変位させる。
Description
本発明は、多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法に関する。
人と同様の動作を行うロボットとして、6自由度の多関節ロボットが知られている。また、近年では、6自由度に冗長自由度を加えた7自由度以上の多関節ロボットの研究が行われている。例えば、特許文献1には、7自由度の多関節ロボットの制御方式が開示されている。
ところで、一般的な多関節ロボットでは、複数の関節のうちの一部又は全部に可動範囲が定められる。このため、例えば、ロボットの位置及び姿勢から各関節の変位量を求める逆運動学計算では、複数の関節のいずれかが可動範囲を超えた場合、計算結果がエラーとなり、正しい解(各関節を可動範囲内で動作させる解)を求めることができない。従って、逆運動学計算の結果がエラーとなる場合、ロボットに所望の動作を実行させることができない。このため、逆運動学計算の結果がエラーとなる頻度を低減することが望まれている。
本発明の好適な態様に係る多関節ロボットの制御方法は、7個以上の複数の関節を有する多関節ロボットの制御方法であって、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、を含む単位処理を繰り返し実行し、前記固定処理が実行された場合、前記算出処理において、前記複数の関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる。
本発明の好適な態様に係るロボットシステムは、7個以上の複数の関節を有する多関節ロボットと、前記多関節ロボットの動作を制御する制御装置と、を備え、前記制御装置は、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、を含む単位処理を繰り返し実行する動作制御部を有し、前記動作制御部は、前記固定処理が実行された場合、前記算出処理において、前記複数の関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる。
本発明の好適な態様に係る物品の製造方法は、上述のロボットシステムにより、部品を組み付ける、又は、部品を取り除く。
本発明の好適な態様に係るプログラムは、7個以上の複数の関節を有する多関節ロボットの動作を制御するプログラムであって、プロセッサを、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、を含む単位処理を繰り返し実行する動作制御部として機能させ、前記動作制御部は、前記固定処理が実行された場合、前記算出処理において、前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる。
本発明によれば、逆運動学計算の結果がエラーとなる頻度を低減することができる。
以下、本発明を実施するための形態について図面を参照して説明する。なお、各図において、各部の寸法及び縮尺は、実際のものと適宜に異ならせてある。また、以下に述べる実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの形態に限られるものではない。
[1.実施形態]
先ず、図1を参照しながら、実施形態に係るロボットシステム1の概要の一例について説明する。
先ず、図1を参照しながら、実施形態に係るロボットシステム1の概要の一例について説明する。
図1は、実施形態に係るロボットシステム1の概要を説明するための説明図である。
なお、以下では、説明の便宜上、ロボット10のベース座標系として、現実空間に固定された基準座標系Σ0を導入する。例えば、基準座標系Σ0は、後述するロボット10の底面BDPbtの中心に原点を有し、互いに直交するX0軸、Y0軸、及び、Z0軸を有する3軸の直交座標系である。本実施形態では、基準座標系Σ0及び後述する図9に示す座標系Σ1からΣ8が右手座標系である場合を想定する。
ロボットシステム1は、例えば、ロボット10と、ロボット10に着脱可能に取り付けられるエンドエフェクタ20と、ロボット10及びエンドエフェクタ20の動作を制御するロボットコントローラ30とを有する。ロボット10は、「多関節ロボット」の例であり、ロボットコントローラ30は、「制御装置」の例である。
ロボット10及びロボットコントローラ30は、例えば、有線を用いた接続により、互いに通信可能に接続されている。なお、ロボット10とロボットコントローラ30との接続は、無線を用いた接続であってもよいし、有線及び無線の両方を用いた接続であってもよい。また、ロボットコントローラ30は、ロボット10に取り付けられたエンドエフェクタ20と通信可能である。ロボットコントローラ30としては、他の装置と通信可能な任意の情報処理装置を採用することができる。
ロボット10は、例えば、農場、工場及び倉庫等での作業に用いられる多関節ロボットである。具体的には、ロボット10は、回転関節に対応する6個の関節機構JEr(JEr1、JEr2、JEr3、JEr4、JEr5及びJEr6)を有する6軸多関節ロボットに、直動関節に対応する2個の関節機構JEp(JEp1及びJEp2)を追加した8軸多関節ロボットである。例えば、ロボット10は、6個の関節機構JErと、2個の関節機構JEpと、ボディ部BDPと、2個のリンクLK(LK1及びLK2)と、先端部TP1とを有する。なお、図1に示す例では、関節機構JEr1は、ボディ部BDPに含まれ、関節機構JEr5及びJEr6は、先端部TP1に含まれる。また、関節機構JEp1は、リンクLK1に設けられ、関節機構JEp2は、リンクLK2に設けられる。以下では、関節機構JEr及びJEpは、特に区別せずに、関節機構JEとも称される。例えば、ロボット10は、複数の関節機構JEを駆動する複数のモータをさらに有する。図1では、図を見やすくするために、複数の関節機構JEを駆動する複数のモータ、複数のモータの各々に設けられる減速機及びエンコーダ等の記載を省略している。複数の関節機構JEは、「複数の関節」の例である。
ボディ部BDPは、「基部」の例である。また、リンクLK1は、「第1リンク」の例であり、リンクLK2は、「第2リンク」の例である。例えば、リンクLK1及びLK2は、ボディ部BDPと先端部TP1とを接続する。
ここで、例えば、部材の接続は、2個の部材が直接的に接続される場合と、2個の部材が間接的に接続される場合との両方を含む。2個の部材が直接的に接続されるとは、2個の部材が互いに接触する状態、及び、2個の部材が互いに接触する状態と同視できる状態を含む。2個の部材が互いに接触する状態と同視できる状態とは、例えば、2個の部材の一方が他方に接着剤等により固定される状態である。また、2個の部材が間接的に接続されるとは、2個の部材の間に他の部材が配置されることを意味する。
関節機構JEr1は、「第1駆動機構」の例であり、関節機構JEr2は、「第2駆動機構」の例である。関節機構JEr3は、「第3駆動機構」の例であり、関節機構JEr4は、「第4駆動機構」の例である。また、関節機構JEr5は、「第5駆動機構」の例であり、関節機構JEr6は、「第6駆動機構」の例である。また、関節機構JEp1は、「第1移動機構」の例であり、関節機構JEp2は、「第2移動機構」の例である。
ボディ部BDPは、例えば、床等の所定の場所に固定される土台部BDPbaと、関節機構JEr2に接続される関節機構JEr1とを含む。関節機構JEr1は、ボディ部BDPの底面BDPbtに垂直な軸Ax1を回転軸として、ボディ部BDPの一部分を回転させる。例えば、関節機構JEr1は、関節機構JEr1のうち、関節機構JEr2と接続される部分を含む外壁を、軸Ax1を回転軸として土台部BDPbaに対して回転させる。すなわち、関節機構JEr1は、軸Ax1を回転軸として、関節機構JEr2をボディ部BDPに対して回転させる。なお、軸Ax1は、「第1回転軸」の例である。
ここで、「垂直」は、厳密な垂直だけではなく、実質的な垂直(例えば、誤差範囲内の垂直)も含む。同様に、後述する「平行」は、厳密な平行だけではなく、実質的な平行(例えば、誤差範囲内の平行)も含む。図1の回転方向Dr1は、ボディ部BDPの一部分が軸Ax1を回転軸として回転する場合のボディ部BDPの一部分の回転方向を示す。
関節機構JEr2は、ボディ部BDPとリンクLK1とを接続し、ボディ部BDPの底面BDPbtに平行な軸Ax2を回転軸としてリンクLK1をボディ部BDPに対して回転させる。図1の回転方向Dr2は、リンクLK1が軸Ax2を回転軸として回転する場合のリンクLK1の回転方向を示す。なお、軸Ax2は、「第2回転軸」の例である。
リンクLK1は、例えば、中空であり、長尺に形成される。また、リンクLK1は、リンクLK1が延在する方向De1に延在する開口Hlk1を有する。方向De1は、「第1リンクの延在方向」である。
開口Hlk1は、例えば、リンクLK1のうち、リンクLK2に対向する部分を含む面に形成される。リンクLK1の内部には、関節機構JEr3の一部及び関節機構JEp1が設けられる。例えば、関節機構JEr3の一部は、リンクLK1の内部に位置し、関節機構JEr3の他の部分は、開口Hlk1からリンクLK1の外部に出ている。なお、関節機構JEr3のうち、リンクLK1の外部に出ている部分、又は、リンクLK1の外部に出ている部分の一部は、後述するリンクLK2の開口Hlk2を通り、リンクLK2の内部に位置する。
なお、リンクLK1は、関節機構JEr1により、軸Ax1を回転軸としてボディ部BDPに対して回転し、関節機構JEr2により、軸Ax2を回転軸としてボディ部BDPに対して回転する。
関節機構JEr3は、リンクLK1とリンクLK2とを接続し、リンクLK1が延在する方向De1に垂直な軸Ax3を回転軸としてリンクLK2をリンクLK1に対して回転させる。図1の回転方向Dr3は、リンクLK2が軸Ax3を回転軸として回転する場合のリンクLK2の回転方向を示す。なお、軸Ax3は、「第3回転軸」の例である。
関節機構JEp1は、方向De1に沿って、関節機構JEr3をリンクLK1に対して相対的に移動させる。関節機構JEr3が方向De1に沿って移動することにより、リンクLK2は、方向De1に沿って、リンクLK1に対して相対的に移動する。関節機構JEp1による関節機構JEr3の移動範囲は、リンクLK1の実質的な長さ(制御上の長さ)を、リンクLK1の半分以下の長さから半分以上の長さとすることが可能な範囲が好ましい。
リンクLK2は、例えば、中空であり、長尺に形成される。また、リンクLK2は、リンクLK2が延在する方向De2に延在する開口Hlk2を有する。方向De2は、「第2リンクの延在方向」である。
開口Hlk2は、例えば、リンクLK2のうち、リンクLK1に対向する部分を含む面に形成される。リンクLK2の内部には、関節機構JEr3の一部及び関節機構JEp2が設けられる。例えば、関節機構JEr3の一部は、リンクLK2の内部に位置し、関節機構JEr3の他の部分は、開口Hlk2からリンクLK2の外部に出ている。
関節機構JEp2は、リンクLK2が延在する方向De2に沿って、リンクLK2を関節機構JEr3に対して相対的に移動させる。これにより、リンクLK2は、方向De2に沿って、関節機構JEr3に対して相対的に移動する。すなわち、リンクLK2は、方向De2に沿って、リンクLK1に対して相対的に移動する。関節機構JEp2による関節機構JEr3の移動範囲は、リンクLK2の実質的な長さ(制御上の長さ)を、リンクLK2の半分以下の長さから半分以上の長さとすることが可能な範囲が好ましい。
このように、リンクLK2は、関節機構JEp1により、方向De1に沿って、リンクLK1に対して相対的に移動し、関節機構JEp2により、方向De2に沿って、リンクLK1に対して相対的に移動する。
関節機構JEr4は、リンクLK2と先端部TP1とを接続し、方向De2に垂直な軸Ax4を回転軸として、先端部TP1をリンクLK2に対して回転させる。図1の回転方向Dr4は、先端部TP1が軸Ax4を回転軸として回転する場合の先端部TP1の回転方向を示す。なお、軸Ax4は、「第4回転軸」の例である。
先端部TP1には、例えば、物品を把持するエンドエフェクタ20が取り付けられる。例えば、先端部TP1の端面TP1sfにエンドエフェクタ20が取り付けられる。先端部TP1は、リンクLK2に接続される第1部分TP11と、第1部分TP11に接続される第2部分TP12と、関節機構JEr5と、関節機構JEr6とを含む。第1部分TP11は、例えば、関節機構JEr4を介してリンクLK2に接続される。従って、第1部分TP11は、軸Ax4を回転軸としてリンクLK2に対して回転する。
関節機構JEr5は、第1部分TP11と第2部分TP12とを接続し、軸Ax4に垂直な軸Ax5を回転軸として、第2部分TP12を第1部分TP11に対して回転させる。図1の回転方向Dr5は、第2部分TP12が軸Ax5を回転軸として回転する場合の第2部分TP12の回転方向を示す。なお、軸Ax5は、「第5回転軸」の例である。
関節機構JEr6は、軸Ax5に垂直な軸Ax6を回転軸として、先端部TP1の少なくとも一部分を回転させる。図1に示す例では、関節機構JEr6は、軸Ax6を回転軸として、先端部TP1の端面TP1sfを回転させる。すなわち、関節機構JEr6は、軸Ax6を回転軸として、先端部TP1のうち、エンドエフェクタ20が取り付けられる部分(端面TP1sf)を回転させる。図1の回転方向Dr6は、端面TP1sfが軸Ax6を回転軸として回転する場合の端面TP1sfの回転方向を示す。なお、軸Ax6は、「第6回転軸」の例である。
図1に示す例では、関節機構JEr6の表面が端面TP1sfに該当する。なお、関節機構JEr6が第2部分TP12に含まれる構成等では、第2部分TP12の端面が端面TP1sfであってもよい。
また、エンドエフェクタ20により行われる作業は、物品の把持に限定されない。エンドエフェクタ20としては、ロボット10の作業目的に応じて適切な部品(例えば、ロボットハンド及びロボットフィンガー等)を適用することができる。すなわち、各種作業に適したエンドエフェクタ20が先端部TP1に取り付けられる。
ここで、本実施形態では、特定の方向とのなす角度が所定角度より大きい軸を回転軸とした回転を、特定の方向とのなす角度が所定角度以下の軸を回転軸とした回転と区別して、「旋回」と称する場合がある。所定角度は、例えば、45°であってもよい。なお、所定角度は、45°に限定されない。
例えば、軸Ax1及びAx2の各々を回転軸とする回転では、ボディ部BDPの底面BDPbtに垂直な方向Dv1が特定の方向に該当する。この場合、軸Ax1は、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸に該当し、軸Ax2は、方向Dv1とのなす角度が所定角度より大きい軸に該当する。従って、軸Ax2を回転軸とするリンクLK1の回転は、旋回に該当する。なお、本実施形態では、ボディ部BDPが底面BDPbtに垂直な方向Dv1に沿って延在しているため、ボディ部BDPが延在する方向Debを特定の方向としてもよい。
また、軸Ax3を回転軸とする回転では、リンクLK1が延在する方向De1が特定の方向に該当し、軸Ax4を回転軸とする回転では、リンクLK2が延在する方向De2が特定の方向に該当する。この場合、軸Ax3は、リンクLK1が延在する方向De1とのなす角度が所定角度より大きい軸に該当し、軸Ax4は、リンクLK2が延在する方向De2とのなす角度が所定角度より大きい軸に該当する。従って、軸Ax3を回転軸とするリンクLK2の回転、及び、軸Ax4を回転軸とする第1部分TP11の回転は、旋回に該当する。
また、軸Ax5を回転軸とする回転では、方向De11が特定の方向に該当し、軸Ax6を回転軸とする回転では、方向De12が特定の方向に該当する。方向De11は、第1部分TP11の端部のうち、関節機構JEr5が接続される所定の端部の反対側の端部から所定の端部に向かう方向である。なお、方向De11は、第1部分TP11が延在する方向と捉えられてもよい。また、方向De12は、第2部分TP12の端部のうち、関節機構JEr6が接続される所定の端部(端面TP1sfを含む端部)の反対側の端部から所定の端部に向かう方向である。なお、方向De12は、第2部分TP12が延在する方向と捉えられてもよい。
方向De11が特定の方向である場合、軸Ax5は、方向De11とのなす角度が所定角度以下の軸に該当する。また、方向De12が特定の方向である場合、軸Ax6は、方向De12とのなす角度が所定角度以下の軸に該当する。なお、本実施形態では、方向De11が軸Ax4に垂直な方向であり、方向De12が軸Ax5に垂直な方向である場合を想定する。この場合、方向De11とのなす角度が所定角度以下の軸Ax5は、軸Ax4とのなす角度が所定角度より大きい軸に該当し、方向De12とのなす角度が所定角度以下の軸Ax6は、軸Ax5とのなす角度が所定角度より大きい軸に該当する。
このように、本実施形態では、ロボット10の複数の部分(ボディ部BDP、リンクLK1、リンクLK2及び先端部TP1等)の各々が軸Ax1、Ax2、Ax3、Ax4、Ax5及びAx6の各々を回転軸として回転可能である。これにより、本実施形態では、ロボット10は、人と同様の動作を実行できる。
例えば、関節機構JEr2と関節機構JEr3との間のリンクLK1が上腕に相当し、関節機構JEr3と関節機構JEr4との間のリンクLK2が前腕に相当する。そして、ロボット10は、関節機構JEr1により、人の腰のねじりを模した動作を行うことができ、関節機構JEr2により、肩の旋回を模した動作を行うことができる。また、ロボット10は、関節機構JEr3により、肘の旋回を模した動作を行うことができ、関節機構JEr4により、手首の旋回を模した動作を行うことができる。また、ロボット10は、関節機構JEr5により、手首のねじりを模した動作を行うことができ、関節機構JEr6により、指先のねじりを模した動作を行うことができる。
さらに、本実施形態では、リンクLK1内に設けられた関節機構JEp1により、リンクLK1が延在する方向De1に沿って、リンクLK2をリンクLK1に対して相対的に移動させることができる。また、本実施形態では、リンクLK2内に設けられた関節機構JEp2により、リンクLK2が延在する方向De2に沿って、リンクLK2をリンクLK1に対して相対的に移動させることができる。従って、本実施形態では、関節機構JEp1及びJEp2により、ロボット10の先端部TP1をボディ部BDPの周辺に容易に移動させることができる。また、本実施形態では、関節機構JEp1及びJEp2により、先端部TP1(より詳細には、端面TP1sf)が到達可能な領域を広くすることができるため、ロボット10に取り付けられるエンドエフェクタ20が到達可能な領域を広くすることができる。
なお、ロボットシステム1の構成は、図1に示す例に限定されない。例えば、ロボットコントローラ30は、ロボット10に内蔵されてもよい。また、図1では、ロボット10が床等の所定の場所に固定される場合を想定したが、ロボット10は、所定の場所に固定されずに、ロボット10自体が移動可能であってもよい。また、ボディ部BDPの土台部BDPbaは、床等の所定の場所に関節機構JEr1を介して固定されてもよい。この場合、ボディ部BDPは、関節機構JEr1を含まずに定義されてもよい。土台部BDPbaが所定の場所に関節機構JEr1を介して固定される構成では、関節機構JEr1は、軸Ax1を回転軸として、土台部BDPbaを回転させてもよい。また、土台部BDPbaが所定の場所に関節機構JEr1を介して固定される構成では、土台部BDPbaが関節機構JEr2と接続されてもよい。
次に、ロボットコントローラ30の動作を簡単に説明する。なお、ロボットコントローラ30の構成は、後述する図2において説明され、ロボットコントローラ30の動作フローは、後述する図3において説明される。
ロボットコントローラ30は、例えば、ロボット10の位置及び姿勢を目標の位置及び姿勢にするために、各関節機構JEの状態(関節の状態)に関する関節値を算出する。関節機構JEの状態は、関節の運動の状態であってもよい。具体的には、関節機構JEの状態は、例えば、関節機構JEの位置(関節の位置)、及び、関節機構JErによる回転の回転角度(関節の方向)等であってもよい。この場合、関節値は、例えば、関節機構JEの位置(関節の位置)、及び、関節機構JErによる回転の回転角度(関節の方向)等を示す。以下では、関節機構JEの状態(関節の状態)に関する関節値は、単に、関節機構JE(関節)の関節値とも称される。
例えば、ロボット10の手先(例えば、エンドエフェクタ20の先端)の速度(以下、手先速度とも称する)と関節速度との関係は、式(1)で表される。
なお、手先速度r(・)は、式(2)で表される。また、m個(mは2以上の自然数)の関節を有する多関節ロボットでは、関節速度θ(・)は、式(3)で表され、ヤコビ行列Jは、式(4)で表される。
ヤコビ行列Jは、例えば、6行m列の行列で表され、第i列の要素が第i関節に係る要素Jiに該当する。第i関節に係る要素Jiは、第i関節が回転関節の場合、式(5)で表され、第i関節が直動関節の場合、式(6)で表される。なお、式(6)の0は、例えば、ベクトル値が0であることを示す。
なお、第i関節が回転関節の場合、関節機構JErの回転軸がZ軸に対応し、第i関節が直動関節の場合、関節機構JEpの移動方向に沿う軸、又は、リンクLKの伸縮方向に沿う軸がZ軸に対応する。
また、ロボット10の手先速度と関節速度との関係は、ヤコビ行列Jの擬似逆行列J+を用いて、式(7)で表される。
例えば、ロボットコントローラ30は、目標の手先速度r(・)に対する各関節機構JEの関節速度θi(・)を、式(7)を用いて計算し、計算結果に基づいて各関節機構JEを動作させる。具体的には、例えば、ロボットコントローラ30は、式(7)を用いて算出した各関節機構JEの関節速度θi(・)に基づいて、各関節機構JEの関節値を算出する。そして、ロボットコントローラ30は、各関節機構JEの関節値に基づいて、各関節機構JEを動作させる。例えば、ロボットコントローラ30は、各関節機構JEの状態が各関節機構JEの関節値に基づく状態になるように、各関節機構JEを動作させる。
これにより、本実施形態では、例えば、ロボット10をジョグ動作させることができる。なお、ジョグ動作は、例えば、ロボット10の関節及び手先等を少しずつ動かして、ロボット10の位置及び姿勢を目標の位置及び姿勢に到達させる動作である。関節速度θi(・)、及び、関節速度θi(・)に基づいて算出される関節機構JEの状態等を示す情報は、関節値に対応する。関節機構JEの関節速度θ(・)の計算は、逆運動学計算の例である。また、ヤコビ行列Jから擬似逆行列J+が算出されるため、式(7)を用いて、関節機構JEの関節速度θ(・)を計算することは、ヤコビ行列を用いて逆運動学計算を実行することに該当する。
ここで、ジョグ動作が行われる場合、複数の関節機構JEの全てについて、関節速度θi(・)が計算される。このため、工夫をせずにヤコビ行列Jが用いられる制御方法(以下、対比例の制御方法)では、複数の関節機構JEのいずれかが、関節速度θi(・)に基づいて算出される関節機構JEの状態が関節機構JEの可動範囲(可動領域)外の状態となる場合がある。この場合、所望のジョグ動作を実行することができない。また、対比例の制御方法では、例えば、8個以上の関節を有する多関節ロボットにおいて、動作させる関節の数を関節の全数よりも少ない数(例えば、6個又は7個等)に制限して、多関節ロボットを動作させることができない。
このため、本実施形態では、動作させる関節の数を関節の全数よりも少ない数に制限して、ロボット10を動作させる場合、ヤコビ行列Jの複数の要素のうち、特定の第i関節に係る要素Jiのベクトル値を0に固定する。第i関節に係る要素Jiのベクトル値を0にした場合のヤコビ行列Jは、式(8)となる。この場合、上述の式(7)から得られる関節速度θi(・)は、式(9)で表される関節速度ベクトルとなる。
式(9)に示されるように、第i関節の関節速度θi(・)は、0となる。このように、本実施形態では、ヤコビ行列Jの複数の要素のうち、第i関節に係る要素Jiのベクトル値を0に固定することより、第i関節の関節値は変位することがないため、m個の関節のうちの第i関節を固定関節と見なすことができる。すなわち、本実施形態では、ヤコビ行列Jの第i関節に係る要素Jiのベクトル値を0に固定することより、第i関節以外の(m-1)個の関節について、関節速度θi(・)を計算することができる。この結果、本実施形態では、動作させる関節の数を関節の全数よりも少ない数に制限して、ロボット10を動作させることができる。なお、本実施形態ではベクトル値を0に固定しているが、第i関節の関節値が、ロボット制御に影響せず実質的に変位しないのであれば、必ずしも0である必要はなく、微小な値(実質的に0)であっても構わない。ここで、「実質的に0」とは、0のほか、0と見なせる微小な値も包含する。また、「実質的に変位しない」とは、厳密に変位しない場合のほか、変位していないと見なせる場合(例えば、ロボット制御に影響しない程度の微小な変化)も包含する。
例えば、本実施形態では、複数の関節のうちの所定の関節(第i関節)において、あらかじめ特定状態が定められていたとする。本発明における特定状態とは、所定の関節において関節値に関する制約(例えば可動領域など)が設定されている場合、関節値が、制約の限界値の近傍の値(例えば可動領域の領域内で、可動領域の領域外との近傍の境界領域の値)となった状態である。
ロボットコントローラ30は、関節値に基づく状態が特定状態である関節(第i関節)を、ヤコビ行列Jの要素の値(ベクトル値)が実質的に0に固定される固定関節とする。以下では、関節の変位に関する制約が満たされる限界の状態は、限界状態とも称される。後述する所定の余裕は、例えば、関節の状態(関節機構JEの状態)が限界状態に到達する前に、関節の状態が限界状態に近づいたことをロボットコントローラ30に認識させるために設定されたマージンである。
なお、関節の変位に関する制約は、例えば、関節機構JEの可動に関する制約である。関節機構JEの可動に関する制約としては、例えば、関節機構JEp1による関節機構JEr3の移動範囲、及び、関節機構JEp2による関節機構JEr3の移動範囲等が挙げられる。
例えば、関節機構JEp1により、関節機構JEr3がリンクLK1に対して相対的に移動する場合、関節機構JEr3の移動範囲は、リンクLK1の長さ等に基づいて制限される。具体的には、例えば、リンクLK1の2個の端部の一方の端部付近が関節機構JEp1による関節機構JEr3の移動範囲の上限であり、リンクLK1の2個の端部の他方の端部付近が関節機構JEp1による関節機構JEr3の移動範囲の下限である。従って、関節機構JEr3が関節機構JEp1による関節機構JEr3の移動範囲の上限又は下限に位置する場合、関節機構JEp1の状態は、限界状態である。例えば、ロボットコントローラ30は、関節機構JEr3がリンクLK1の端部の近傍に位置する場合、関節機構JEp1の状態が特定状態(限界状態に所定の余裕を持たせた状態)であると特定する。
同様に、関節機構JEp2により、関節機構JEr3がリンクLK2に対して相対的に移動する場合、関節機構JEr3の移動範囲は、リンクLK2の長さ等に基づいて制限される。具体的には、例えば、リンクLK2の2個の端部の一方の端部付近が関節機構JEp2による関節機構JEr3の移動範囲の上限であり、リンクLK2の2個の端部の他方の端部付近が関節機構JEp2による関節機構JEr3の移動範囲の下限である。従って、関節機構JEr3が関節機構JEp2による関節機構JEr3の移動範囲の上限又は下限に位置する場合、関節機構JEp2の状態は、限界状態である。例えば、ロボットコントローラ30は、関節機構JEr3がリンクLK2の端部の近傍に位置する場合、関節機構JEp2の状態が特定状態であると特定する。
そして、例えば、ロボットコントローラ30は、複数の関節機構JEの中に、関節値に基づく状態が特定状態である関節機構JEが存在する場合、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値を0に固定する。ヤコビ行列を用いて逆運動学計算が実行される場合、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値が0に固定されることにより、特定状態の関節機構JEの関節値が固定値に設定される。
ロボットコントローラ30は、例えば、ロボット10の位置及び姿勢が目標の位置及び姿勢になるまで、各関節機構JEの関節値を算出する状態算出処理、及び、特定状態の関節機構JEの関節値を変位させないようにする状態固定処理を含む単位処理を繰り返す。状態算出処理は、「算出処理」の例であり、状態固定処理は、「固定処理」の例である。
このように、ロボットコントローラ30は、繰り返し実行する単位処理に含まれる状態算出処理において、ロボット10を動作させる場合の関節機構JEの変位量を計算する逆運動学計算を実行することにより、各関節機構JEの関節値を算出する。また、ロボットコントローラ30は、繰り返し実行する単位処理に含まれる状態固定処理において、複数の関節機構JEの中に、関節値に基づく状態が特定状態である関節機構JEが存在する場合、特定状態の関節機構JEの関節値を固定値に設定する。なお、上述したように、ロボットコントローラ30は、状態算出処理において、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、複数の関節機構JEのうち、特定状態の関節機構JE以外の関節機構JEを用いて、逆運動学計算を実行する。
これにより、本実施形態では、逆運動学計算の結果がエラーとなる頻度を低減することができる。この結果、本実施形態では、複数の関節機構JEの各々において、関節値に基づく関節機構JEの状態が関節機構JEの可動範囲外の状態となることを抑止することができる。
なお、ロボット10の構成は、図1に示す例に限定されず、例えば、後述する図9に示すシミュレーションモデルの構成であっても構わない。図9に示すシミュレーションモデルは、図1におけるロボット10の関節機構JEp1によりリンクLK1自体が伸縮し、関節機構JEp2によりリンクLK2自体が伸縮する構成となっている。また、関節機構JEの可動に関する制約は、関節機構JEp1による関節機構JEr3の移動範囲、及び、関節機構JEp2による関節機構JEr3の移動範囲に限定されない。例えば、関節機構JEの可動に関する制約には、特異点を回避するための制約が含まれてもよい。なお、特異点は、例えば、ロボット10の姿勢が、ロボット10を制御できなくなる姿勢になることである。すなわち、関節機構JEの可動に関する制約は、複数の関節機構JEのうちの一部の関節機構JEに対する制約であってもよいし、複数の関節機構JEのうちの全部の関節機構JEに対する制約であってもよい。なお、複数の関節機構JEのうちの一部の関節機構JEは、1個の関節機構JEであってもよいし、複数の関節機構JEであてもよい。
次に、図2を参照しながら、ロボットコントローラ30のハードウェア構成について説明する。
図2は、図1に示したロボットコントローラ30のハードウェア構成の一例を示す図である。
ロボットコントローラ30は、ロボットコントローラ30の各部を制御する処理装置32と、各種情報を記憶するメモリ35と、通信装置36と、作業者等による操作を受け付ける操作装置37と、表示装置38と、ドライバ回路39とを有する。
メモリ35は、例えば、処理装置32の作業領域として機能するRAM(Random Access Memory)等の揮発性メモリと、制御プログラムPGr等の各種情報を記憶するEEPROM(Electrically Erasable Programmable Read-Only Memory)等の不揮発性メモリとの、一方又は両方を含む。なお、メモリ35は、ロボットコントローラ30に着脱可能であってもよい。具体的には、メモリ35は、ロボットコントローラ30に着脱されるメモリカード等の記憶媒体であってもよい。また、メモリ35は、例えば、ロボットコントローラ30とネットワーク等を介して通信可能に接続された記憶装置(例えば、オンラインストレージ)であってもよい。
図2に示すメモリ35は、制御プログラムPGrを記憶している。制御プログラムPGrは、「プログラム」の例である。本実施形態では、制御プログラムPGrは、例えば、ロボットコントローラ30がロボット10の動作を制御するためのアプリケーションプログラムを含む。但し、制御プログラムPGrは、例えば、処理装置32がロボットコントローラ30の各部を制御するためのオペレーティングロボットシステムプログラムを含んでもよい。このように、本実施形態では、制御プログラムPGrを記録したコンピュータ読取可能な非一過性(non-transitory)の記録媒体をメモリ35が含む場合を想定する。
処理装置32は、ロボットコントローラ30の全体を制御するプロセッサであり、例えば、1又は複数のCPU(Central Processing Unit)を含んで構成される。処理装置32は、例えば、メモリ35に記憶された制御プログラムPGrを実行し、制御プログラムPGrに従って動作することで、動作制御部33として機能する。例えば、動作制御部33は、ロボット10の位置及び姿勢が目標の位置及び姿勢になるまで、図1において説明した単位処理を繰り返す。そして、動作制御部33は、各関節機構JEの関節値等に基づいて、ロボット10を、後述するドライバ回路39を介して駆動する。なお、制御プログラムPGrは、ネットワーク等を介して他の装置から送信されてもよい。
また、例えば、処理装置32が複数のCPUを含んで構成される場合、処理装置32の機能の一部又は全部は、これら複数のCPUが制御プログラムPGr等のプログラムに従って協働して動作することで実現されてもよい。また、処理装置32は、1又は複数のCPUに加え、又は、1又は複数のCPUのうち一部又は全部に代えて、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、又は、FPGA(Field Programmable Gate Array)等のハードウェアを含んで構成されるものであってもよい。この場合、処理装置32の機能の一部又は全部は、DSP等のハードウェアにより実現されてもよい。
通信装置36は、ロボットコントローラ30の外部に存在する外部装置と通信を行うためのハードウェアである。例えば、通信装置36は、近距離無線通信によって外部装置と通信する機能を有する。なお、通信装置36は、移動体通信網又はネットワークを介して外部装置と通信する機能をさらに有してもよい。
操作装置37は、外部からの入力を受け付ける入力デバイス(例えば、キーボード、マウス、スイッチ、ボタン及びセンサ等)である。例えば、操作装置37は、作業者の操作を受け付け、操作に応じた操作情報を処理装置32に出力する。なお、例えば、表示装置38の表示面に対する接触を検出するタッチパネルが、操作装置37として採用されてもよい。
表示装置38は、外部への出力を実施するディスプレイ等の出力デバイスである。表示装置38は、例えば、処理装置32による制御のもとで、画像を表示する。なお、操作装置37及び表示装置38は、一体となった構成(例えば、タッチパネル)であってもよい。
ドライバ回路39は、処理装置32(より詳細には、動作制御部33)による制御のもとで、ロボット10を駆動するための信号をロボット10に出力するハードウェアである。例えば、ドライバ回路39は、各関節機構JEの関節値等に基づく信号を、モータMOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1及びMOp2等を駆動する信号として、ロボット10に出力する。なお、モータMOr1、MOr2、MOr3、MOr4、MOr5及びMOr6は、関節機構JEr1、JEr2、JEr3、JEr4、JEr5及びJEr6をそれぞれ駆動するモータである。また、モータMOp1及びMOp2は、関節機構JEp1及びJEp2をそれぞれ駆動するモータである。以下では、モータMOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1及びMOp2をモータMOと総称する場合がある。
このように、ロボットコントローラ30は、複数のモータMOを制御することにより、ロボット10の動作を制御する。
次に、図3を参照しながら、ロボットコントローラ30の動作の概要について説明する。
図3は、図1に示したロボットコントローラ30の動作の一例を示すフローチャートである。なお、図3に示す動作では、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値(例えば、関節機構JEの位置、及び、関節機構JErによる回転の回転角度等を示す情報)を算出する処理が行われる。例えば、図3に示す動作は、動作制御部33として機能する処理装置32により、実行される。すなわち、図3に示す動作(ステップS100からステップS520までの一連の処理)では、処理装置32は、動作制御部33として機能する。
先ず、ステップS100において、動作制御部33は、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分を算出する。例えば、動作制御部33は、各関節機構JEの現在の関節値に基づいて、ロボット10の手先の位置及び姿勢を算出する。そして、動作制御部33は、各関節機構JEの現在の関節値に基づいて算出されたロボット10の手先の位置及び姿勢とロボット10の手先の目標の位置及び姿勢との差分を算出する。
次に、ステップS120において、動作制御部33は、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分が許容値以下であるか否かを判定する。許容値は、例えば、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分が許容値以下であれば、ロボット10の手先の位置及び姿勢が目標の位置及び姿勢と一致していると見なせる値に設定される。
ステップS120における判定の結果が肯定の場合、動作制御部33は、図3に示す動作を終了する。この場合、ステップS100においてロボット10の手先の位置及び姿勢の算出に用いられた各関節機構JEの関節値(最新の関節値)が、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値として算出される。なお、ステップS100からステップS520までの一連の処理が2回以上繰り返されている場合、今回のステップS100の処理に用いられた最新の関節値は、前回のステップS420の処理において更新された関節値である。
一方、ステップS120における判定の結果が否定の場合、動作制御部33は、処理をステップS200に進める。
ステップS200において、動作制御部33は、各関節機構JEの現在の関節値に基づいて、ヤコビ行列Jを算出する。そして、動作制御部33は、処理をステップS300に進める。
ステップS300において、動作制御部33は、複数の関節機構JEの中に、特定状態の関節機構JEが存在するか否かを判定する。ステップS300における判定の結果が肯定の場合、動作制御部33は、処理をステップS320に進める。一方、ステップS300における判定の結果が否定の場合、動作制御部33は、処理をステップS400に進める。
ステップS320において、動作制御部33は、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに対応する要素の値を実質的に0に設定する。これにより、例えば、ヤコビ行列Jの特定状態の関節機構JEに対応する列の要素の値が実質的に0に設定される。そして、動作制御部33は、処理をステップS400に進める。
ステップS400において、動作制御部33は、ヤコビ行列Jの擬似逆行列J+を用いて、各関節機構JEの変位量(例えば、各関節機構JEの関節速度θi(・))を算出する。なお、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、特定状態の関節機構JEの変位量は、ヤコビ行列Jの特定状態の関節機構JEに対応する列の要素の値が実質的に0に設定されているため、0又はほぼ0となる。動作制御部33は、ステップS400の処理を実行した後、処理をステップS420に進める。なお、ほぼ0は、例えば、0と見なせる値である。
ステップS420において、動作制御部33は、各関節機構JEの変位量に基づいて、各関節機構JEの関節値を更新する。例えば、動作制御部33は、ステップS100においてロボット10の手先の位置及び姿勢の算出に用いられた各関節機構JEの関節値に各関節機構JEの変位量を加算することにより、各関節機構JEの関節値を更新する。なお、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、特定状態の関節機構JEの変位量が0又はほぼ0であるため、ステップS420の処理による更新後の特定状態の関節機構JEの関節値は、更新前の値と同じ又はほぼ同じ値となる。なお、更新前の値とほぼ同じ値は、例えば、更新前の値と同じと見なせる値である。従って、特定状態の関節機構JEでは、状態は変化せずに維持される。これにより、本実施形態では、関節機構JEの状態が制約を満たさない状態(例えば、可動範囲外の状態)になることを抑制することができる。
次に、ステップS500において、動作制御部33は、ループカウントをインクリメントする。なお、ループカウントは、図3に示す動作が実行される前に、0に初期化されている。
次に、ステップS520において、動作制御部33は、ループカウントが上限値以下か否かを判定する。上限値は、ステップS100からステップS520までの一連の処理の繰り返し回数の上限値であり、図3に示す動作が収束しない場合に図3に示す動作を終了させるために設定される。
ステップS520における判定の結果が否定の場合、動作制御部33は、図3に示す動作を終了する。この場合、ステップS420の処理において更新された各関節機構JEの関節値(最新の関節値)が、各関節機構JEの関節値として算出される。但し、ループカウントが上限値を超えたことにより、図3に示す動作が終了した場合、図3に示す動作により算出された各関節機構JEの関節値は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にする関節値になるとは限らない。このため、動作制御部33は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値を算出する処理が収束しなかったことを示すエラー情報を作業者等に通知してもよい。例えば、動作制御部33は、エラー情報を表示装置38に表示させてもよい。
一方、ステップS520における判定の結果が肯定の場合、動作制御部33は、処理をステップS100に戻す。このように、ステップS100からステップS520までの一連の処理は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値が算出されるまで、又は、ループカウントが上限値を超えるまで、繰り返される。
ここで、例えば、ステップS400及びS420の一連の処理は、図1において説明した状態算出処理に該当し、ステップS300及びS320の一連の処理は、図1において説明した状態固定処理に該当する。従って、ステップS100からステップS520までの一連の処理は、状態算出処理及び状態固定処理を含む単位処理に該当する。すなわち、ステップS100からステップS520までの一連の処理は、「単位処理」の例であり、ステップS400及びS420の一連の処理は、「算出処理」の例であり、ステップS300及びS320の一連の処理は、「固定処理」の例である。なお、状態算出処理は、ステップS400及びS420の一連の処理に加えて、ステップS200の処理を含んでもよい。従って、ステップS200、S400及びS420の一連の処理が「算出処理」として捉えられてもよい。
なお、ロボットコントローラ30の動作は、図3に示した例に限定されない。例えば、ステップS500及びS520の処理は、省かれてもよい。この場合、動作制御部33は、ステップS420の処理を実行した後、処理をステップS100に戻す。また、ステップS500及びS520の処理が省かれる場合、割り込み処理等により、図3に示した動作を終了させてもよい。また、ステップS300及びS320の処理は、ステップS200の処理に含まれてもよい。
次に、図4及び図5を参照しながら、ロボット10の状態を複数の目標状態を経由して最終的な目標状態に変化させる場合のロボットコントローラ30の動作の概要について説明する。
図4は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の一例を示すフローチャートである。図4に示す動作では、複数の目標の位置PP及び姿勢PSがn個(nは2以上の自然数)である場合を想定する。以下では、n個の目標の位置PP及び姿勢PSをn個の目標状態と称する場合がある。
なお、図4に示す動作では、ステップS8の処理、ステップS600の処理、及び、ステップS700からステップS760までの一連の処理が、図3に示した動作に追加されている。また、図4に示す動作では、図3に示したステップS200からステップS420までの一連の処理に対応する処理として、ステップS140の関節値更新処理が実行される。ステップS140の関節値更新処理の詳細については、後述する図5において説明される。例えば、ステップS140の関節値更新処理は、特定状態の関節機構JEが複数の関節機構JEの中に存在する場合に図5に示すステップS310の処理が実行されることを除いて、図3に示したステップS200からステップS420までの一連の処理と同様である。すなわち、ステップS140の関節値更新処理により、各関節機構JEの関節値が更新される。
本実施形態では、図4に示す動作が開始される前のロボット10の状態(初期状態)が、特定状態の関節機構JEが複数の関節機構JEの中に存在しない状態である場合を想定する。また、図4に示す動作では、変数k(kは1以上n以下の自然数)の初期値が1である場合を想定する。また、以下では、k番目の目標の位置PP及び姿勢PSを位置PPk及び姿勢PSkとそれぞれ称する場合がある。例えば、位置PP1及び姿勢PS1は、1番目の目標の位置PP及び姿勢PSであり、位置PPn及び姿勢PSnは、n番目の目標(最終的な目標)の位置PP及び姿勢PSである。
図4に示す動作では、ロボット10の初期状態から最終的な目標状態までのロボット10の軌道として、n個の目標の位置PP及び姿勢PSがロボットコントローラ30に定義されている。例えば、ロボットコントローラ30は、変数kを1からnまで順に変化させることにより、ロボット10の手先の目標の位置PPk及び姿勢PSkを順に更新する。
先ず、ステップS8において、動作制御部33は、ロボット10の手先のk番目の目標の位置PPk及び姿勢PSkを設定する。例えば、図4に示す動作が開始された場合、動作制御部33は、ステップS8において、1番目(k=1)の目標の位置PP1及び姿勢PS1を設定する。動作制御部33は、ステップS8の処理を実行した後、処理をステップS100に進める。
ステップS100及びS120の一連の処理は、図3に示したステップS100及びS120の一連の処理と同様である。但し、ステップS120における判定の結果が肯定の場合、動作制御部33は、処理をステップS700に進める。また、ステップS120における判定の結果が否定の場合、動作制御部33は、ステップS140の関節値更新処理を実行した後、処理をステップS500に進める。
ステップS500及びS520の一連の処理は、図3に示したステップS500及びS520の一連の処理と同様である。なお、図4に示す動作では、ステップS520における判定の結果が否定の場合、動作制御部33は、ステップS600において、ロボット10の動作をエラーとして停止する。この場合、図4に示す動作が終了する。一方、ステップS520における判定の結果が肯定の場合、動作制御部33は、図3に示した動作と同様に、処理をステップS100に戻す。
また、上述したように、ステップS120における判定の結果が肯定の場合、ステップS700の処理が実行される。
ステップS700において、動作制御部33は、各関節機構JEを、ステップS140の関節値更新処理により更新された各関節機構JEの関節値に従って制御する。これにより、ロボット10の手先の位置及び姿勢は、目標の位置PPk及び姿勢PSkに変化する。なお、ロボット10に動作を教示する場合、動作制御部33は、ステップS700において、ステップS140の関節値更新処理により更新された各関節機構JEの関節値を目標の位置PPk及び姿勢PSkの関節値としてメモリ35に記憶する。
ここで、例えば、ロボット10の初期状態における手先の位置及び姿勢と目標の位置PP1及び姿勢PS1との差分が許容値以下である場合、ステップS140の関節値更新処理が1回も実行されずに、ステップS120における判定の結果が肯定となる。この場合、上述の「ステップS140の関節値更新処理により更新された各関節機構JEの関節値」は、「ロボット10の初期状態における各関節機構JEの関節値」に読み替えられる。例えば、ステップS140の関節値更新処理が1回も実行されずにステップS120における判定の結果が肯定となる場合、動作制御部33は、ステップS700において、各関節機構JEの関節値をロボット10の初期状態における各関節機構JEの関節値に維持する。
動作制御部33は、ステップS700の処理を実行した後、処理をステップS720に進める。
ステップS720において、動作制御部33は、変数kがnより小さいか否かを判定する。ステップS720における判定の結果が否定の場合、すなわち、ロボット10の手先の位置及び姿勢が最終的な目標の位置PPn及び姿勢PSnに変化した場合、動作制御部33は、図3に示す動作を終了する。一方、ステップS720における判定の結果が肯定の場合、動作制御部33は、ステップS740においてループカウントを0にリセットした後、処理をステップS760に進める。
ステップS760において、動作制御部33は、変数kをインクリメントする(k=k+1)。そして、動作制御部33は、処理をステップS8に戻す。これにより、ステップS8において、ロボット10の手先の次の目標の位置PPk及び姿勢PSkが設定される。
このように、図4に示す動作では、n個の目標状態(位置PP及び姿勢PS)の各々において、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分が許容値以下になるまで、ステップS100からステップS520までの一連の処理(単位処理)が繰り返される。
次に、図5を参照しながら、ステップS140の関節値更新処理について説明する。
図5は、図4に示した関節値更新処理の一例を示すフローチャートである。例えば、動作制御部33として機能する処理装置32は、図4に示したステップS140の関節値更新処理として、図5に示すステップS200からステップS420までの一連の処理を実行する。従って、ステップS200の処理は、図4に示したステップS120における判定の結果が否定の場合に実行される。また、ステップS420の処理が実行された後、図4に示したステップS500の処理が実行される。
また、以下では、目標の位置PP及び姿勢PSがk番目の目標の位置PPk及び姿勢PSkである場合に実行される処理を、k番目の目標状態において実行される処理及びk番目の目標状態における処理等のように、「k番目の目標状態」を用いて称する場合がある。また、図5の説明では、特に断りがない場合、関節値更新処理は、k番目の目標状態における関節値更新処理を意味する。
ステップS200及びS300の一連の処理は、図3に示したステップS200及びS300の一連の処理と同様である。但し、図5に示す動作では、ステップS300における判定の結果が肯定の場合、動作制御部33は、処理をステップS310に進める。また、ステップS300における判定の結果が否定の場合、動作制御部33は、図3に示した動作と同様に、処理をステップS400に進める。
ステップS310において、動作制御部33は、各関節機構JEの関節値を更新前の値に戻す。すなわち、動作制御部33は、前回の関節値更新処理のステップS420の処理による各関節機構JEの関節値の更新をキャンセルする。具体的には、動作制御部33は、各関節機構JEの関節値(すなわち、前回の関節値更新処理のステップS420の処理により「第1関節値」に更新された各関節機構JEの関節値)を、前回の関節値更新処理のステップS420の処理により更新される前の関節値(「第2関節値」)に戻す。
ここで、目標の位置PPk及び姿勢PSkが更新された後の最初の関節値更新処理において、ステップS300における判定の結果が肯定となる場合、前回の関節値更新処理は、(k-1)番目の目標状態において最後に実行された関節値更新処理である。この場合、動作制御部33は、ステップS310において、各関節機構JEの関節値を、(k-1)番目の目標状態において最後に実行された関節値更新処理のステップS420の処理により更新される前の関節値に戻す。
動作制御部33は、ステップS310の処理を実行した後、処理をステップS320に進める。ステップS320の処理は、図3に示したステップS320の処理と同様である。なお、図5に示す例では、ステップS320の処理に用いられるヤコビ行列Jは、ステップS310の処理が実行される前にステップS200において算出されたヤコビ行列Jである。但し、ステップS320の処理に用いられるヤコビ行列Jは、ステップS310の処理が実行された後の各関節機構JEの関節値に基づいて算出されたヤコビ行列J(例えば、前回の関節値更新処理のステップS200において算出されたヤコビ行列J)であってもよい。
なお、ステップS320の処理(状態固定処理)の対象となる特定状態の関節機構JEは、ステップS310の処理(各関節機構JEの関節値の更新のキャンセル)が実行される前に、ステップS300において特定される。すなわち、ステップS320の処理の対象となる特定状態の関節機構JEは、各関節機構JEの関節値の更新がキャンセルされる前の関節値(「第1関節値」)に基づいて、特定される。
動作制御部33は、ステップS320の処理を実行した後、処理をステップS400に進める。ステップS400及びS420の一連の処理(状態算出処理)は、図3に示したステップS400及びS420の一連の処理(状態算出処理)と同様である。なお、図5に示す関節値更新処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合にステップS310の処理が実行されるため、常に、特定状態でない複数の関節機構JEの関節値に対して、ステップS420の処理による更新が実行される。
このように、図5に示す関節値更新処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、前回の関節値更新処理のステップS420の処理による各関節機構JEの関節値の更新が、今回の関節値更新処理のステップS320においてキャンセルされる。すなわち、前回の関節値更新処理のステップS400及びS420の一連の処理(状態算出処理)において算出された複数の関節機構JEの各々の関節値への複数の関節機構JEの各々の関節値の更新がキャンセルされる。なお、ステップS320の処理(状態固定処理)の対象となる特定状態の関節機構JEは、上述したように、関節値の更新がキャンセルされる前の関節値に基づいて特定される。そして、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、ステップS310及びS320の一連の処理(キャンセル及び状態固定処理)が実行された後に、ステップS400及びS420の一連の処理が実行される。
従って、図5に示す関節値更新処理では、上述したように、常に、特定状態でない複数の関節機構JEの関節値に対して、ステップS420の処理による更新が実行される。すなわち、図4及び図5に示す動作では、関節機構JEが特定状態に固定された状態で、ステップS100からステップS520までの一連の処理(単位処理)が繰り返されることを抑制することができる。
なお、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作は、図4及び図5に示す例に限定されない。例えば、ステップS740の処理は、ステップS760の処理より後に実行されてもよいし、ステップS760の処理と並列に実行されてもよい。あるいは、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作は、図6又は図7に示す動作であってもよい。
図6は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の別の例を示すフローチャートである。図6に示す動作は、図4に示したステップS140の関節値更新処理の代わりにステップS140Aの関節値更新処理が実行され、ステップS780及びS782の一連の処理が図4に示した動作に追加されていることを除いて、図4に示した動作と同様である。
なお、ステップS140Aの関節値更新処理は、図3に示したステップS200からステップS420までの一連の処理である。すなわち、図6に示すステップS100からステップS520までの一連の処理は、図3に示したステップS100からステップS520までの一連の処理と同様である。従って、図6に示すステップS100からステップS520までの一連の処理では、図5に示したステップS310の処理(各関節機構JEの関節値の更新のキャンセル)は、実行されない。図6に示す動作では、図5に示したステップS310の処理がステップS140Aの関節値更新処理において実行されない代わりに、ステップS780及びS782の一連の処理がステップS760の後に実行される。以下では、ステップS780及びS782の一連の処理を中心に説明する。
動作制御部33は、ステップS760の処理を実行した後、処理をステップS780に進める。
ステップS780において、動作制御部33は、複数の関節機構JEの中に、特定状態の関節機構JEが存在するか否かを判定する。なお、ステップS780の処理で参照される複数の関節機構JEは、ステップS700において手先の位置及び姿勢が目標の位置PPk及び姿勢PSkに変化したロボット10の複数の関節機構JEである。
ステップS780における判定の結果が否定の場合、動作制御部33は、処理をステップS8に戻す。すなわち、動作制御部33は、ステップS700において手先の位置及び姿勢が目標の位置PPk及び姿勢PSkに変化したロボット10の複数の関節機構JEの中に、特定状態の関節機構JEが存在しない場合、処理をステップS8に戻す。一方、ステップS780における判定の結果が肯定の場合、動作制御部33は、処理をステップS782に進める。
ステップS782において、動作制御部33は、特定状態の関節機構JEの関節値を、特定状態の関節機構JEの可動範囲内で、かつ、特定状態でない状態に対応する関節値に変更する。そして、動作制御部33は、処理をステップS8に戻す。ステップS782の処理により、n個の目標状態(位置PP及び姿勢PS)の各々において、各関節機構JEの関節値の初期値は、特定状態でない状態に対応する関節値となる。
なお、ステップS782の処理により変更される関節値の変更後の値は、特定状態の関節機構JEの可動範囲内で、かつ、特定状態でない状態に対応する関節値の範囲のうち、変更前の値との差が最小となる値であることが好ましい。
このように、図6に示す動作では、ステップS100からステップS520までの一連の処理(単位処理)が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、繰り返し実行される単位処理のうちの1回目の単位処理が実行される前に、特定状態の関節機構JEの関節値を、特定状態でない状態に対応する関節値に変更される。これにより、図6に示す動作では、n個の目標状態(位置PP及び姿勢PS)の各々において、各関節機構JEの関節値の初期値が特定状態に対応する関節値になることを抑制することができる。この結果、図6に示す動作では、k番目の目標状態において特定状態に変化した関節機構JEが(k+1)番目以降の目標状態において特定状態に固定されることを抑制することができる。
なお、図6に示す動作においても、例えば、ステップS740の処理は、ステップS760の処理より後に実行されてもよいし、ステップS760の処理と並列に実行されてもよい。
次に、図7を参照しながら、ロボット10の状態を複数の目標状態を経由して最終的な目標状態に変化させる場合のロボットコントローラ30の動作の別の例について説明する。
図7は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の別の例を示すフローチャートである。図7に示す動作は、図4に示したステップS140の関節値更新処理の代わりにステップS140Aの関節値更新処理が実行され、ステップS10からステップS50までの一連の処理が図4に示した動作に追加されていることを除いて、図4に示した動作と同様である。以下では、ステップS10からステップS50までの一連の処理を中心に説明する。
ステップS10の処理、ステップS12の処理、及び、ステップS50の処理は、ステップS100の処理、ステップS120の処理、及び、ステップS500の処理とそれぞれ同様である。また、ステップS14の関節値初回更新処理は、ステップS140Aの関節値更新処理からステップS300及びS320の一連の処理が省かれた処理と同様である。なお、ステップS14の関節値初回更新処理については、後述する図8において説明される。
動作制御部33は、ステップS8の処理を実行した後、処理をステップS10に進める。
ステップS10において、動作制御部33は、ステップS100の処理と同様に、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分を算出する。そして、ステップS12において、動作制御部33は、ステップS120の処理と同様に、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分が許容値以下であるか否かを判定する。
ステップS12における判定の結果が肯定の場合、動作制御部33は、処理をステップS700に進める。一方、ステップS12における判定の結果が否定の場合、動作制御部33は、処理をステップS14に進める。
ステップS14において、動作制御部33は、ステップS200、S400及びS420の一連の処理と同様な関節値初回更新処理を実行する。ステップS14の関節値初回更新処理により、各関節機構JEの関節値の初回の更新が実行される。
動作制御部33は、ステップS14の関節値初回更新処理を実行した後、ステップS50においてループカウントをインクリメントし、処理をステップS100に進める。
次に、図8を参照しながら、ステップS14の関節値初回更新処理について説明する。
図8は、図7に示した関節値初回更新処理の一例を示すフローチャートである。例えば、動作制御部33として機能する処理装置32は、図7に示したステップS14の関節値初回更新処理として、図8に示すステップS20からステップS42までの一連の処理を実行する。従って、ステップS20の処理は、図4に示したステップS12における判定の結果が否定の場合に実行される。また、ステップS42の処理が実行された後、図7に示したステップS50の処理が実行される。
ステップS20において、動作制御部33は、ステップS200の処理と同様に、各関節機構JEの現在の関節値に基づいて、ヤコビ行列Jを算出する。そして、動作制御部33は、処理をステップS40に進める。
ステップS40において、動作制御部33は、ステップS400の処理と同様に、ヤコビ行列Jの擬似逆行列J+を用いて、各関節機構JEの変位量を算出する。そして、動作制御部33は、処理をステップS42に進める。
ステップS42において、動作制御部33は、ステップS420の処理と同様に、各関節機構JEの変位量に基づいて、各関節機構JEの関節値を更新する。そして、動作制御部33は、処理を図7に示したステップS50に進める。
このように、図8に示す関節値初回更新処理では、図3に示したステップS300及びS320の一連の処理(状態固定処理)が実行されない。従って、図8に示す関節値初回更新処理では、関節機構JEの状態が特定状態でありか否かに拘わらず、各関節機構JEの関節値が更新される。このため、図8に示す関節値初回更新処理では、例えば、(k-1)番目の目標状態において実行されたステップS700の処理の後の状態が特定状態である関節機構JEの関節値が、特定状態でない状態に対応する関節値に更新される場合がある。この場合、繰り返し実行される単位処理(ステップS100からステップS520までの一連の処理)の1回目の単位処理が特定状態に対応する関節値から開始されることを抑制することができる。
但し、図8に示す関節値初回更新処理では、特定状態の関節機構JEの関節値が、特定状態の関節機構JEを可動範囲外にする方向に更新される場合がある。例えば、関節値初回更新処理は、目標の位置PPk及び姿勢PSkが更新される度に実行されるため、特定状態の関節機構JEを可動範囲外にする方向への関節値の更新が繰り返される場合がある。この場合、繰り返し実行される関節値初回更新処理において、特定状態の関節機構JEの関節値が、特定状態の関節機構JEを可動範囲外にする関節値に更新されるおそれがある。
このため、特定状態の範囲は、1回の更新で変化する関節値の変化量に対応する範囲よりも大きい範囲であることが好ましい。より好ましくは、特定状態の範囲は、特定状態の関節機構JEを可動範囲外にする方向への関節値の更新が複数回(例えば、n回)繰り返された場合の関節値の合計の変化量に対応する範囲よりも大きい範囲である。あるいは、図7に示す動作において、図6に示したステップS780及びS782の一連の処理と同様の処理が、ステップS14の処理が実行された後で、ステップS100の処理が実行される前までに実行されてもよい。
次に、図9から図20を参照しながら、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするシミュレーションの結果の一例について説明する。
図9は、シミュレーションに用いられたモデルを説明するための説明図である。以下では、シミュレーションに用いられたモデルは、シミュレーションモデルとも称される。
以下に説明するシミュレーションでは、シミュレーション結果を分かり易くするために、図1に示した関節機構JEp(JEp1及びJEp2)の代わりに関節機構JEe(JEe1及びJEe2)を有するロボット10がモデル化されている。なお、複数の関節機構JEをそれぞれ駆動する複数のモータMOの制御に着目した場合、図1に示したロボット10も図9に示すロボット10と同様な制御値になる。例えば、図9に示すロボット10では、リンクLK1A自体が伸縮することにより、関節機構JEr3がリンクLK1Aの延在方向に沿って移動する。また、リンクLK2A自体が伸縮することにより、リンクLK2Aの2つの端部のうち、関節機構JEr4が接続された端部が、リンクLK2Aの延在方向に沿って、関節機構JEr3に対して相対的に移動する。先ず、関節機構JEe1及びJEe2について説明する。
関節機構JEe1は、支持部分LK1a、可動部分LK1b及び可動部分LK1cを含むリンクLK1Aを軸Axe1に沿って伸縮させる直動関節であり、「第1伸縮機構」の例である。関節機構JEe2は、支持部分LK2a、可動部分LK2b及び可動部分LK2cを含むリンクLK2Aを軸Axe2に沿って伸縮させる直動関節であり、「第2伸縮機構」の例である。軸Axe1は、リンクLK1Aの延在方向に沿う軸であり、軸Axe2は、リンクLK2Aの延在方向に沿う軸である。
リンクLK1Aは、「第1リンク」の例であり、リンクLK2Aは、「第2リンク」の例である。また、支持部分LK1aは、「第1支持部分」の例であり、関節機構JEr2を介してボディ部BDPに接続される。可動部分LK1cは、「第1可動部分」の例であり、関節機構JEr3を介してリンクLK2Aの支持部分LK2aに接続される。支持部分LK2aは、「第2支持部分」の例である。可動部分LK2cは、「第2可動部分」の例であり、関節機構JEr4を介して先端部TP1に接続される。
例えば、可動部分LK1bは、可動部分LK1cと一体的に移動するように可動部分LK1cに接続され、支持部分LK1aに対して移動可能に支持部分LK1aに接続される。そして、関節機構JEe1は、支持部分LK1aに対して可動部分LK1bを軸Axe1に沿って移動させることにより、支持部分LK1aに対して可動部分LK1cを軸Axe1に沿って移動させる。これにより、リンクLK1Aは、軸Axe1に沿って伸縮する。
また、例えば、可動部分LK2bは、可動部分LK2cと一体的に移動するように可動部分LK2cに接続され、支持部分LK2aに対して移動可能に支持部分LK2aに接続される。そして、関節機構JEe2は、支持部分LK2aに対して可動部分LK2bを軸Axe2に沿って移動させることにより、支持部分LK2aに対して可動部分LK2cを軸Axe2に沿って移動させる。これにより、リンクLK2Aは、軸Axe2に沿って伸縮する。
図9に示すシミュレーションモデルでは、複数の関節機構JEと1対1に対応する複数の座標系Σが導入されている。複数の座標系Σの各々には、対応する関節機構JEがボディ部BDPに近い順に、数字の1から8のいずれかが付されている。例えば、関節機構JEr1が1番目の関節であり、関節機構JEr2が2番目の関節であり、関節機構JEe1が3番目の関節である。また、関節機構JEr3が4番目の関節であり、関節機構JEe2が5番目の関節であり、関節機構JEr4が6番目の関節である。そして、関節機構JEr5が7番目の関節であり、関節機構JEr6が8番目の関節である。
i番目の関節機構JE(第i関節)に対応する座標系Σiは、互いに直交するXi軸、Yi軸、及び、Zi軸を有する3軸の直交座標系である。図9に示す例では、iは1以上8以下の自然数である。8番目の関節機構JEr6に対応する座標系Σ8は、ロボット10の先端座標系に対応する。なお、図9では、図を見やすくするために、座標系Σ1から座標系Σ7までのY軸の記載が省略されている。
例えば、座標系ΣiのZi軸は、i番目の関節機構JEが回転関節である場合、i番目の関節機構JEによる回転の回転軸に対応し、i番目の関節機構JEが直動関節である場合、i番目の関節機構JEにより伸縮するリンクLKの伸縮方向に沿う軸に対応する。また、例えば、座標系ΣiのXi軸は、基本的に、Zi軸とZi+1軸との共通垂線となるように定められる。
また、i番目の関節機構JEは、例えば、ヤコビ行列Jのi列目の要素Jiに対応付けられる。例えば、ヤコビ行列Jの1列目の要素J1は、関節機構JEr1に対応し、ヤコビ行列Jの2列目の要素J2は、関節機構JEr2に対応し、ヤコビ行列Jの3列目の要素J3は、関節機構JEe1に対応する。また、ヤコビ行列Jの4列目の要素J4は、関節機構JEr3に対応し、ヤコビ行列Jの5列目の要素J5は、関節機構JEe2に対応し、ヤコビ行列Jの6列目の要素J6は、関節機構JEr4に対応する。そして、ヤコビ行列Jの7列目の要素J7は、関節機構JEr5に対応し、ヤコビ行列Jの8列目の要素J8は、関節機構JEr6に対応する。
また、シミュレーションでは、基準座標系Σ0及び座標系Σ1の原点間の距離に対応するリンク長L1は0.2409[m]に設定され、座標系Σ5及びΣ6の原点間の距離に対応するリンク長L6は0.1[m](シミュレーションにおけるパラメータとしては-0.1[m])に設定されている。また、座標系Σ6及びΣ7の原点間の距離に対応するリンク長L7は0.1[m]に設定され、座標系Σ7及びΣ8の原点間の距離に対応するリンク長L8は0.05[m]に設定されている。また、関節機構JEe1によるリンクLK1Aの可動範囲(伸縮範囲)は、0.25[m]から0.5[m]に設定され、関節機構JEe2によるリンクLK2Aの可動範囲(伸縮範囲)は、0.3[m]から0.5[m]に設定されている。
また、シミュレーションでは、ロボット10の各関節機構JEの初期の関節値が図10に示す初期関節値θintであり、ロボット10の手先がX0軸の正方向に移動する場合を想定する。
図10は、図9に示したシミュレーションモデルの初期関節値θintの一例を説明するための説明図である。
図10の星印で示されるように、関節機構JEe1の初期関節値θintは、リンクLK1Aの可動範囲の上限である0.5[m]に設定され、関節機構JEe2の初期関節値θintは、リンクLK2Aの可動範囲の上限である0.5[m]に設定されている。すなわち、関節機構JEe1及びJEe2は、両方とも限界状態である。このため、本実施形態では、後述の図16に示すように、ヤコビ行列Jの複数の要素のうち、関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値は、0に設定される。なお、本実施形態と対比される対比例の制御方法(状態固定処理が実行されない制御方法)では、図12に示すように、ヤコビ行列Jの複数の要素のうちの関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値は、特に固定されない。
図11は、シミュレーションに用いられた手先移動量Δrを説明するための説明図である。本シミュレーションでは、ジョグ動作によりロボット10の手先をX0軸の正方向に0.00272[m]だけ移動させる場合を想定する。従って、図11に示すように、X0軸の正方向への移動量(0.00272[m])が手先移動量Δrに該当する。
すなわち、本シミュレーションでは、関節機構JEe1及びJEe2によりリンクLK1A及びLK2Aが上限まで伸びた限界状態から、ロボット10の手先がX0軸の正方向に0.00272[m]だけ移動する。本シミュレーションでは、上述の式(7)の関係“θi(・)=J+r(・)”を用いて、手先移動量Δrに対する関節移動量Δθが算出される。そして、関節移動量Δθを初期関節値θintに加算することにより、手先が移動した後の関節値が最終関節値θendとして算出される。
先ず、図12から図15を参照しながら、対比例の制御方法(状態固定処理が実行されない制御方法)によるシミュレーションについて説明する。
図12は、対比例の制御方法に用いられるヤコビ行列Jを説明するための説明図である。また、図13は、図12に示したヤコビ行列Jの擬似逆行列J+を説明するための説明図である。
ヤコビ行列Jは、図9において説明したシミュレーションモデル及び図10に示した初期関節値θintに基づいて算出される。ヤコビ行列Jの算出方法については、既知であるため、説明を省略する。対比例の制御方法では、8個の関節機構JEの全て(8個の軸Ax)を動作させることを前提にして、ヤコビ行列Jが算出される。このため、図12に示すように、限界状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値は、0に固定されていない。
図12に示すヤコビ行列Jから図13に示す擬似逆行列J+が算出される。擬似逆行列J+の算出方法については、既知であるため、説明を省略する。図13に示す擬似逆行列J+が上述の式(7)の擬似逆行列J+として用いられ、関節移動量Δθが算出される。
図14は、図13に示した擬似逆行列J+を用いて算出された関節移動量Δθを示す図である。対比例の制御方法では、状態固定処理が実行されないため、図14の星印で示されるように、限界状態の関節機構JEe1及びJEe2が変位することを示す値が、関節移動量Δθとして算出される。手先が移動した後の関節値である最終関節値θendの算出に図14に示す関節移動量Δθが用いられた場合、関節機構JEe1及びJEe2の状態は、図15に示すように、可動範囲外の状態になる。
図15は、図14に示した関節移動量Δθに基づいて算出された最終関節値θendを示す図である。最終関節値θendは、図14に示した関節移動量Δθを図10に示した初期関節値θintに加算することにより算出される。なお、図15に示す最終関節値θendは、関節移動量Δθと初期関節値θintとの加算結果を小数点第7位で四捨五入した値である。
図15の星印で示されるように、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の上限である0.5[m]を超えた値になり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の上限である0.5[m]を超えた値になる。すなわち、対比例の制御方法では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)が得られず、計算結果がエラーとなる。この場合、ロボット10に所望の動作を実行させることができない。
次に、図16から図19を参照しながら、状態固定処理が実行される本実施形態によるシミュレーションについて説明する。
図16は、特定状態の関節機構JEが固定された場合のヤコビ行列Jを説明するための説明図である。また、図17は、図16に示したヤコビ行列Jの擬似逆行列J+を説明するための説明図である。
関節機構JEe1及びJEe2の状態は、図10において説明したように、限界状態である。すなわち、関節機構JEe1及びJEe2の状態は、限界状態に所定の余裕を持たせた特定状態でもある。このため、本実施形態では、図16に示すように、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値は、0に設定される。なお、図16に示すヤコビ行列Jは、要素J3及びJ4の値が0に設定されることを除いて、図12に示したヤコビ行列Jと同じである。
このように、本実施形態では、要素J3及びJ4の値が0に設定されるため、要素J3及びJ4にそれぞれ対応する関節機構JEe1及びJEe2を、状態が変位しない固定関節と見なして、逆運動学計算を実行することができる。
例えば、図16に示すヤコビ行列Jから図17に示す擬似逆行列J+が算出される。そして、図17に示す擬似逆行列J+が上述の式(7)の擬似逆行列J+として用いられ、関節移動量Δθが算出される。
図18は、図17に示した擬似逆行列J+を用いて算出された関節移動量Δθを示す図である。本実施形態では、ヤコビ行列Jの要素J3及びJ4の値が0に設定されているため、図17の星印で示されるように、要素J3及びJ4にそれぞれ対応する関節機構JEe1及びJEe2の関節移動量Δθは、0と見なせる値になる。このように、本実施形態では、限界状態の関節機構JEe1及びJEe2の関節移動量Δθは、0と見なせる値になる。従って、図18に示す関節移動量Δθを用いて算出された最終関節値θendに基づく関節機構JEe1及びJEe2の状態は、図19に示すように、可動範囲内の状態になる。
図19は、図18に示した関節移動量Δθに基づいて算出された最終関節値θendを示す図である。最終関節値θendは、図18に示した関節移動量Δθを図10に示した初期関節値θintに加算することにより算出される。なお、図19に示す最終関節値θendは、図15に示した最終関節値θendと同様に、関節移動量Δθと初期関節値θintとの加算結果を小数点第7位で四捨五入した値である。
図19の星印で示されるように、関節機構JEe1の最終関節値θendは、関節機構JEe1の初期関節値θintと同じ値(リンクLK1Aの可動範囲の上限である0.5[m])である。同様に、関節機構JEe2の最終関節値θendは、関節機構JEe2の初期関節値θintと同じ値(リンクLK2Aの可動範囲の上限である0.5[m])である。このように、本実施形態では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)を得ることができる。
図20は、図10に示した初期関節値θintと異なる初期関節値θintを用いたシミュレーションの結果を説明するための説明図である。
図20の星印で示されるように、関節機構JEe1の初期関節値θintは、リンクLK1Aの可動範囲の下限である0.25[m]に設定され、関節機構JEe2の初期関節値θintは、リンクLK2Aの可動範囲の下限である0.3[m]に設定されている。すなわち、関節機構JEe1及びJEe2は、両方とも限界状態である。本シミュレーションでは、ジョグ動作によりロボット10の手先をX0軸の負方向に0.00272[m]だけ移動させる場合(手先移動量ΔrのX0軸の移動量が-0.00272[m]、X0軸以外の軸の移動量は0[m])を想定する。
すなわち、本シミュレーションでは、関節機構JEe1及びJEe2によりリンクLK1A及びLK2Aが下限まで縮んだ限界状態から、ロボット10の手先がX0軸の負方向に0.00272[m]だけ移動する。
図20では、対比例の制御方法(状態固定処理が実行されない制御方法)のシミュレーション結果(全軸駆動)と、本実施形態の制御方法(状態固定処理が実行される制御方法)のシミュレーション結果(2軸固定)が示されている。
対比例の制御方法では、全軸駆動を前提に算出されたヤコビ行列Jの擬似逆行列J+が関節移動量Δθの算出に用いられるため、最終関節値θendは、図20の“全軸駆動”に示すように、関節機構JEe1及びJEe2の状態が可動範囲外の状態になる。例えば、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の下限である0.25[m]よりも小さい値になり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の下限である0.3[m]よりも小さい値になる。
これに対し、本実施形態の制御方法では、限界状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値が0に設定されたヤコビ行列Jの擬似逆行列J+が関節移動量Δθの算出に用いられる。このため、本実施形態の制御方法では、図20の“2軸固定”に示すように、関節機構JEe1及びJEe2の状態は、可動範囲内の状態に維持される。例えば、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の下限である0.25[m]であり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の下限である0.3[m]である。
このように、限界状態の関節機構JEが存在する場合のジョグ動作を考えた場合、全軸(8軸)での逆運動学計算では、限界状態の関節機構JEが可動範囲外の状態になる。これに対し、本実施形態では、限界状態の関節機構JEを固定関節と見なして、残りの6軸で逆運動学計算が行われるため、限界状態の関節機構JEは、変位しない。従って、本実施形態では、各関節機構JEを可動範囲内でジョグ動作を継続させることができる。
なお、図9から図20において説明したシミュレーションでは、限界状態の関節機構JEが2個である場合を想定したが、限界状態の関節機構JEの数は、2個に限定されない。例えば、限界状態の関節機構JEの数は、1個でもよいし、3個以上m個未満(mは、関節機構JEの全数)でもよい。また、限界状態に所定の余裕を持たせた特定状態の関節機構JEが固定関節と見なされてもよい。
ここで、逆運動学計算を実際に行う場面の例を以下に示す。1つ目は、ロボット10をジョグ動作させる場合である。ジョグ動作では、ロボット10に、目標位置が指示されるため、指示された目標位置に移動するための各関節の角度(移動量)が逆運動学計算により算出される。2つ目は、ロボット10の軌道生成時である。ロボット10に繰り返し動作を実行させる場合、事前に軌道を覚えこませておく必要がある。事前に軌道生成する場合に、軌道上の複数の点における各関節の角度が逆運動学計算により算出される。なお、軌道上の点の数が少ない場合には、ロボット10を実際に動作させる際に、点と点の間の軌道を算出して補完することもある。3つ目は、ロボット10にビジョンカメラ等が搭載されており、ビジョン情報等に基づいて、ロボット10の軌道を生成(又は軌道修正)する場合である。この場合も、1つ目のジョグ動作と同様に新たな目標位置が指示される。
以上、本実施形態では、ロボットシステム1は、7個以上の複数の関節機構JEを有する多関節ロボットであるロボット10と、ロボット10の動作を制御するロボットコントローラ30と、を有する。
ロボット10の制御方法は、ロボット10を動作させる複数の関節機構JEの変位量を計算する逆運動学計算を実行し、複数の関節機構JEの複数の関節値を変位量に基づいて更新する状態算出処理と、複数の関節機構JEのうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態(例えば、関節機構JEの変位に関する制約が満たされる限界の状態に所定の余裕を持たせた状態)である関節機構JEに対して実行される状態固定処理と、を含む単位処理を繰り返し実行し、状態固定処理が実行された場合、状態算出処理において、複数の関節機構JEの複数の関節値のうち、特定状態の関節機構JEの関節値を実質的に変位させることなく、特定状態でない関節機構JEの関節値を変位させる。なお、特定状態は、関節値が、複数の関節機構JEのうちのあらかじめ定められた関節機構JEの可動領域の領域内で可動領域の領域外と領域内との境界領域の値となる状態であってもよい。
ロボットコントローラ30は、上述の単位処理を繰り返し実行する動作制御部33を有する。例えば、制御プログラムPGrは、ロボットコントローラ30に含まれる処理装置32を上述の動作制御部33として機能させる。
このように、本実施形態では、特定状態の関節機構JEを状態が変位しない固定関節と見なして、残りの関節機構JEを用いて逆運動学計算を実行する。このため、本実施形態では、特定状態の関節機構JEを変位させずに、逆運動学計算を実行することができる。この結果、本実施形態では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)を得ることができる。すなわち、本実施形態では、逆運動学計算の結果がエラー(例えば、各関節機構JEを可動範囲内で動作させる解が得られないエラー)となる頻度を低減することができる。この結果、本実施形態では、各関節機構JEを可動範囲内でロボット10を継続して動作させることができる。
また、本実施形態では、ロボットコントローラ30は、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、複数の関節機構JEの関節値の更新をキャンセルしてもよい。この場合、単位処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、前回の単位処理において複数の第1関節値に更新された複数の関節機構JEの複数の関節値を、更新前の複数の第2関節値に戻し、複数の第1関節値に基づいて、状態固定処理の対象となる特定状態の関節を特定し、状態固定処理が実行された後に状態算出処理を実行する。これにより、本実施形態では、状態算出処理において算出された関節値への更新を、常に、特定状態でない複数の関節機構JEの関節値に対して実行することができる。この結果、本実施形態では、関節機構JEが特定状態に固定された状態で、単位処理が繰り返されることを抑制することができる。
また、本実施形態では、ロボットコントローラ30は、単位処理が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、繰り返し実行される単位処理のうちの1回目の単位処理が実行される前に、特定状態の関節機構JEの関節値を、特定状態でない状態に対応する関節値に変更してもよい。これにより、本実施形態では、繰り返し実行される単位処理のうちの1回目の単位処理において、各関節機構JEの関節値の初期値が特定状態に対応する関節値になることを抑制することができる。この結果、本実施形態では、単位処理が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合においても、当該関節機構JEの状態が特定状態に固定されることを抑制することができる。
また、本実施形態では、ロボットコントローラ30は、状態算出処理において、ヤコビ行列Jを用いて逆運動学計算を実行し、状態固定処理において、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値を実質的に0に設定することにより、特定状態の関節機構JEの関節値を固定値に設定する。このように、本実施形態では、ヤコビ行列Jの複数の要素のうちの特定状態の関節機構JEに係る要素の値を実質的に0に設定することにより、特定状態の関節機構JEの関節値を固定値に容易に設定することができる。すなわち、特定状態の関節が有った場合でも、ヤコビ行列Jの行数及び列数を変更することなく、また複数の行列に分割することなく、逆運動学計算を継続して実行し各関節の関節値を算出することができる。
また、本実施形態では、複数の関節機構JEが、少なくとも1個の直動関節(例えば、関節機構JEp又はJEe等)を含む。この場合においても、本実施形態では、可動範囲の上限又は下限に近い特定状態の直動関節を固定関節と見なして、残りの関節機構JEを用いて逆運動学計算を実行するため、逆運動学計算の結果がエラーとなる頻度を低減することができる。従って、本実施形態では、直動関節を含む多関節ロボット等の多種多様な多関節ロボットを継続して動作させることができる。
また、本実施形態では、ロボット10は、ボディ部BDPと、リンクLK1と、リンクLK2と、先端部TP1と、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸Ax1を第1回転軸として、ボディ部BDPの少なくとも一部分を回転させる関節機構JEr1と、ボディ部BDPとリンクLK1とを接続し、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度より大きい軸Ax2を第2回転軸としてリンクLK1を回転させる関節機構JEr2と、リンクLK1とリンクLK2とを接続し、リンクLK1が延在する方向De1とのなす角度が所定角度より大きい軸Ax3を第3回転軸としてリンクLK2をリンクLK1に対して回転させる関節機構JEr3と、リンクLK2と先端部TP1とを接続し、リンクLK2が延在する方向De2とのなす角度が所定角度より大きい軸Ax4を第4回転軸として、先端部TP1をリンクLK2に対して回転させる関節機構JEr4と、リンクLK1の延在方向(方向De1)に沿って、関節機構JEr3をリンクLK1に対して相対的に移動させる関節機構JEp1と、リンクLK2の延在方向(方向De2)に沿って、リンクLK2を関節機構JEr3に対して相対的に移動させる関節機構JEp2と、有する。先端部TP1は、リンクLK2に接続される第1部分TP11と、第1部分TP11に接続される第2部分TP12と、第1部分TP11と第2部分TP12とを接続し、第4回転軸とのなす角度が所定角度より大きい軸Ax5を第5回転軸として、第2部分TP12を第1部分TP11に対して回転させる関節機構JEr5と、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1の少なくとも一部分を回転させる関節機構JEr6と、を含む。複数の関節機構JEは、関節機構JEr1、関節機構JEr2、関節機構JEr3、関節機構JEr4、関節機構JEr5、関節機構JEr6、関節機構JEp1及び関節機構JEp2である。
このように、本実施形態では、6個の回転関節及び2個の直動関節を含む多関節ロボットであるロボット10を継続して動作させることができる。このようなロボットの場合、2個の直動関節は冗長関節として機能することが多く、関節値が頻繁に特定状態となってしまう。従って直動関節を有するロボットの場合は、図9から図20を用いて説明したシミュレーションのように、本直動関節に固定処理を実行することにより、非常に効率的にロボットの制御を実行することができる。
また、本実施形態では、部品を組み付ける、又は、部品を取り除くことを含む物品の製造方法にロボットシステム1が用いられてもよい。この場合、部品を組み付ける、又は、部品を取り除く作業が、逆運動学計算の結果がエラーとなることにより停止することを、抑止することができる。すなわち、本実施形態では、部品を組み付ける、又は、部品を取り除く作業を効率よく実行することができる。
[2.変形例]
本発明は、以上に例示した実施形態に限定されない。具体的な変形の態様を以下に例示する。以下の例示から任意に選択された2以上の態様を併合してもよい。
本発明は、以上に例示した実施形態に限定されない。具体的な変形の態様を以下に例示する。以下の例示から任意に選択された2以上の態様を併合してもよい。
[第1変形例]
上述した実施形態では、関節機構JEr4が、リンクLK2と先端部TP1とを接続する場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2に含まれてもよい。
上述した実施形態では、関節機構JEr4が、リンクLK2と先端部TP1とを接続する場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2に含まれてもよい。
図21は、第1変形例に係るロボット10の一例を説明するための説明図である。図1から図9において説明した要素と同様の要素については、同様の符号を付し、詳細な説明を省略する。
本変形例に係るロボット10は、例えば、図1に示した関節機構JEp(JEp1及びJEp2)の代わりに関節機構JEe(JEe1及びJEe2)を有する8軸多関節ロボットである。例えば、ロボット10は、関節機構JEr1A、JEr2、JEr3A、JEr4A、JEr5A、JEr6、JEe1及びJEe2と、ボディ部BDPaと、リンクLK1A及びLK2Aと、先端部TP1Aとを有する。なお、関節機構JEe1は、リンクLK1Aに設けられ、関節機構JEe2及びJEr4Aは、リンクLK2Aに設けられる。
ボディ部BDPaは、「基部」の例である。関節機構JEr1Aは、「第1駆動機構」の例であり、関節機構JEr3Aは、「第3駆動機構」の例であり、関節機構JEr5Aは、「第5駆動機構」の例である。
ボディ部BDPaは、関節機構JEr1Aを介して床等の所定の場所に固定される。関節機構JEr1Aは、ボディ部BDPaの底面BDPbtに垂直な軸Ax1を回転軸として、ボディ部BDPaを回転させる。
関節機構JEr2は、ボディ部BDPaとリンクLK1Aの支持部分LK1aとを接続し、ボディ部BDPaの底面BDPbtに平行な軸Ax2を回転軸としてリンクLK1Aをボディ部BDPaに対して回転させる。
リンクLK1Aは、例えば、リンクLK1Aが延在する方向De1に沿って伸縮可能に構成される。例えば、リンクLK1Aは、ボディ部BDPaに接続される支持部分LK1aと、可動部分LK1b及びLK1cと、関節機構JEe1とを含む。また、リンクLK2Aは、例えば、リンクLK2Aが延在する方向De2に沿って伸縮可能に構成される。例えば、リンクLK2Aは、リンクLK1Aの可動部分LK1cに接続される支持部分LK2aと、可動部分LK2b及びLK2cと、関節機構JEe2と、関節機構JEr4Aとを含む。
リンクLK(LK1A及びLK2A)と関節機構JEe(JEe1及びJEe2)とについては、図9において説明しているため、詳細な説明を省略する。例えば、支持部分LK1aは、中空である。そして、リンクLK1Aが収縮した場合、可動部分LK1bの少なくとも一部が支持部分LK1aの内部に格納される。また、例えば、支持部分LK2aは、中空である。そして、リンクLK2Aが収縮した場合、可動部分LK2bの少なくとも一部が支持部分LK2aの内部に格納される。
関節機構JEr3Aは、リンクLK1Aの可動部分LK1cとリンクLK2Aの支持部分LK2aとを接続し、リンクLK1Aが延在する方向De1に垂直な軸Ax3を回転軸としてリンクLK2AをリンクLK1Aに対して回転させる。
関節機構JEr4Aは、リンクLK2Aが延在する方向De2と平行な軸Ax4Aを回転軸として、可動部分LK2cを支持部分LK2aに対して回転させる。関節機構JEr4Aは、「第4駆動機構」の例であり、軸Ax4Aは、「第4回転軸」の例である。
関節機構JEr5Aは、リンクLK2Aの可動部分LK2cと先端部TP1Aとを接続し、リンクLK2Aが延在する方向De2に垂直な軸Ax5を回転軸として先端部TP1AをリンクLK2Aに対して回転させる。
先端部TP1Aは、関節機構JEr5Aを介してリンクLK2の可動部分LK2cに接続される第2部分TP12Aと、関節機構JEr6とを含む。関節機構JEr6は、図1に示した関節機構JEr6と同様である。
なお、本変形例に係るロボット10の構成は、図21に示す例に限定されない。例えば、図21に示す例では、関節機構JEr4Aは、方向De2に沿って、リンクLK2Aの可動部分LK2cと一体的に支持部分LK2aに対して移動するが、支持部分LK2aに固定されていてもよい。この場合、関節機構JEr4Aは、軸Ax4Aを回転軸として可動部分LK2bを支持部分LK2aに対して回転させ、関節機構JEe2は、可動部分LK2cを可動部分LK2bに対して移動させてもよい。可動部分LK2cが可動部分LK2bに対して移動する構成では、例えば、可動部分LK2bは、中空である。そして、リンクLK2Aが収縮した場合、可動部分LK2cの少なくとも一部が可動部分LK2bの内部に格納される。また、関節機構JEe1及びJEe2の一方は、省かれてもよい。
以上、本変形例では、ロボット10は、ボディ部BDPaと、支持部分LK1a及び可動部分LK1cを含むリンクLK1Aと、支持部分LK2a及び可動部分LK2cを含むリンクLK2Aと、先端部TP1Aと、ボディ部BDPaの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸Ax1を第1回転軸として、ボディ部BDPaの少なくとも一部分を回転させる関節機構JEr1Aと、ボディ部BDPaと支持部分LK1aとを接続し、ボディ部BDPaの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度より大きい軸Ax2を第2回転軸としてリンクLK1Aをボディ部BDPaに対して回転させる関節機構JEr2と、可動部分LK1cと支持部分LK2aとを接続し、リンクLK1Aが延在する方向De1とのなす角度が所定角度より大きい軸Ax3を第3回転軸としてリンクLK2AをリンクLK1Aに対して回転させる関節機構JEr3Aと、リンクLK2Aが延在する方向De2とのなす角度が所定角度以下の軸Ax4Aを第4回転軸として、可動部分LK2cを支持部分LK2aに対して回転させる関節機構JEr4Aと、可動部分LK2cと先端部TP1Aとを接続し、リンクLK2Aの延在方向(方向De2)とのなす角度が所定角度より大きい軸Ax5を第5回転軸として先端部TP1AをリンクLK2Aに対して回転させる関節機構JEr5Aと、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1Aの少なくとも一部分をリンクLK2Aに対して回転させる関節機構JEr6と、支持部分LK1aに対して可動部分LK1cをリンクLK1Aの延在方向(方向De1)に沿って移動させることにより、リンクLK1Aを伸縮させる関節機構JEe1と、支持部分LK2aに対して可動部分LK2cをリンクLK2Aの延在方向(方向De2)に沿って移動させることにより、リンクLK2Aを伸縮させる関節機構JEe2と、を含む。複数の関節機構JEは、関節機構JEr1A、関節機構JEr2、関節機構JEr3A、関節機構JEr4A、関節機構JEr5A、関節機構JEr6、関節機構JEe1及び関節機構JEe2である。本変形例においても、上述した実施形態と同様の効果を得ることができる。
[第2変形例]
上述した実施形態では、関節機構JEr4が、リンクLK2が延在する方向De2に垂直な軸Ax4を回転軸として、先端部TP1をリンクLK2に対して回転させる場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2が延在する方向De2とのなす角度が所定角度以下の軸を回転軸として、先端部TP1をリンクLK2に対して回転させてもよい。
上述した実施形態では、関節機構JEr4が、リンクLK2が延在する方向De2に垂直な軸Ax4を回転軸として、先端部TP1をリンクLK2に対して回転させる場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2が延在する方向De2とのなす角度が所定角度以下の軸を回転軸として、先端部TP1をリンクLK2に対して回転させてもよい。
図22は、第2変形例に係る先端部TP1Bの一例を説明するための説明図である。図1から図21において説明した要素と同様の要素については、同様の符号を付し、詳細な説明を省略する。
例えば、本変形例に係るロボット10は、図1に示したリンクLK2、関節機構JEr4及び先端部TP1の代わりにリンクLK2B、関節機構JEr4B及び先端部TP1Bを有することを除いて、図1に示したロボット10と同様である。リンクLK2Bは、関節機構JEr4の代わりに関節機構JEr4Bが接続されることを除いて、リンクLK2と同様である。なお、リンクLK2Bは、「第2リンク」の例であり、関節機構JEr4Bは、「第4駆動機構」の例である。
関節機構JEr4Bは、リンクLK2Bと先端部TP1Bとを接続し、方向De2に平行な軸Ax4Aを回転軸として、先端部TP1BをリンクLK2Bに対して回転させる。図11の回転方向Dr4は、軸Ax4Aを回転軸として回転する場合の先端部TP1Bの回転方向を示す。なお、軸Ax4Aは、「第4回転軸」の例であり、リンクLK2Bが延在する方向De2とのなす角度が所定角度以下の軸に該当する。
先端部TP1Bにおいても、図1に示した先端部TP1と同様に、エンドエフェクタ20が端面TP1sfに取り付けられる。先端部TP1Bは、リンクLK2Bに接続される第1部分TP11Aと、第1部分TP11Aに接続される第2部分TP12Aと、関節機構JEr5Aと、関節機構JEr6とを含む。第1部分TP11Aは、例えば、関節機構JEr4Bを介してリンクLK2Bに接続される。従って、第1部分TP11Aは、軸Ax4Aを回転軸としてリンクLK2Bに対して回転する。
関節機構JEr5Aは、第1部分TP11Aと第2部分TP12Aとを接続し、軸Ax4Aに垂直な軸Ax5を回転軸として、第2部分TP12Aを第1部分TP11Aに対して回転させる。図1の回転方向Dr5は、軸Ax5を回転軸として回転する場合の第2部分TP12Aの回転方向を示す。
関節機構JEr6は、図1に示した関節機構JEr6と同様である。例えば、関節機構JEr6は、軸Ax5に垂直な軸Ax6を回転軸として、先端部TP1Bの少なくとも一部分(例えば、端面TP1sf)を回転させる。図11に示す例では、図1に示した関節機構JEr6と同様に、関節機構JEr6の表面が端面TP1sfに該当する。なお、関節機構JEr6が第2部分TP12Aに含まれる構成等では、第2部分TP12Aの端面が端面TP1sfであってもよい。
以上、本変形例では、関節機構JEr4Bは、方向De2とのなす角度が所定角度以下の軸Ax4Aを第4回転軸として、先端部TP1BをリンクLK2Bに対して回転させる。先端部TP1Bは、リンクLK2Bに接続される第1部分TP11Aと、第1部分TP11Aに接続される第2部分TP12Aと、関節機構JEr5Aと、関節機構JEr6とを含む。関節機構JEr5Aは、第1部分TP11Aと第2部分TP12Aとを接続し、第4回転軸とのなす角度が所定角度より大きい軸Ax5を第5回転軸として、第2部分TP12Aを第1部分TP11Aに対して回転させる。関節機構JEr6は、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1Bの少なくとも一部分を回転させる。本変形例においても、上述した実施形態と同様の効果を得ることができる。
[第3変形例]
上述した実施形態及び変形例では、6個の回転関節及び2個の直動関節を含む多関節ロボットをロボット10として例示したが、本発明はこのような態様に限定されるものではない。例えば、ロボット10は、7軸の多関節ロボットであってもよいし、9軸以上の多関節ロボットであってもよい。以上、本変形例においても、上述した実施形態及び変形例と同様の効果を得ることができる。
上述した実施形態及び変形例では、6個の回転関節及び2個の直動関節を含む多関節ロボットをロボット10として例示したが、本発明はこのような態様に限定されるものではない。例えば、ロボット10は、7軸の多関節ロボットであってもよいし、9軸以上の多関節ロボットであってもよい。以上、本変形例においても、上述した実施形態及び変形例と同様の効果を得ることができる。
[3.応用例]
上述した実施形態及び変形例において説明したロボット10を含むロボットシステム1は、部品を組み付ける、又は、部品を取り除くことを含む物品の製造方法に用いられてもよい。
上述した実施形態及び変形例において説明したロボット10を含むロボットシステム1は、部品を組み付ける、又は、部品を取り除くことを含む物品の製造方法に用いられてもよい。
[4.その他]
上述した実施形態において簡単に説明した「旋回」と他の回転との区別について、いくつかの例を挙げて説明する。
上述した実施形態において簡単に説明した「旋回」と他の回転との区別について、いくつかの例を挙げて説明する。
図23は、旋回の一例を説明するための説明図である。図23では、長手方向を把握可能な2個のリンクLKi及びLKjの接続を例にして、旋回と他の回転との区別について説明する。図23の延在方向Deiは、リンクLKiが延在する方向を示し、延在方向Dejは、リンクLKjが延在する方向を示す。また、図23の関節機構JEriは、リンクLKiとリンクLKjとを接続し、軸Axiを回転軸として、リンクLKjをリンクLKiに対して回転させる。
図23に示す例では、リンクLKiの延在方向Dei(特定の方向)と軸Axiとのなす角度βが所定角度より大きい場合、当該軸Axiを回転軸とした回転は、「旋回」に該当する。すなわち、リンクLKiの延在方向Deiと軸Axiとのなす角度βが所定角度以下の場合、当該軸Axiを回転軸とした回転は、旋回以外の回転(旋回と区別される他の回転)に該当する。図23に示す「回転」は、旋回以外の回転を示す。また、所定角度は特に限定されないが、図23では、所定角度が45°である場合を想定する。延在方向Deiと軸Axiとのなす角度βは、延在方向Deiに対する軸Axiの角度として把握される複数の角度(例えば、互いに交差する2個の直線では4個の角度、又は、平行な2個の直線では0°及び180°)のうち、0°以上90°以下の角度である。
第1パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、90°であり、所定角度(45°)よりも大きい。従って、第1パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第1パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第1パターンでは、リンクLKjが軸Axiを回転軸として回転(旋回)した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第2パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、0°であり、所定角度(45°)以下である。従って、第2パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第2パターンでは、リンクLKjの延在方向Dejは、リンクLKiの延在方向Dei及び軸Axiに平行である。すなわち、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、0°である。なお、第2パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、0°に維持され、常に一定である。
第3パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、0°であり、所定角度(45°)以下である。従って、第3パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第3パターンでは、リンクLKjの延在方向Dejは、リンクLKiの延在方向Dei及び軸Axiに垂直である。すなわち、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、90°である。なお、第3パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、90°に維持され、常に一定である。
第4パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、10°であり、所定角度(45°)以下である。従って、第4パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第4パターンでは、リンクLKjの延在方向Dejは、軸Axiに平行であり、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、10°である。なお、第4パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、10°に維持され、常に一定である。
第5パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、70°であり、所定角度(45°)よりも大きい。従って、第5パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第5パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第5パターンでは、リンクLKjが軸Axiを回転軸として回転(旋回)した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第6パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、10°であり、所定角度(45°)以下である。従って、第6パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第6パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第6パターンでは、リンクLKjが軸Axiを回転軸として回転した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第7パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、70°であり、所定角度(45°)よりも大きい。従って、第7パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第7パターンでは、リンクLKjの延在方向Dejは、軸Axiに平行であり、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、70°である。なお、第7パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、70°に維持され、常に一定である。
このように、上述した実施形態及び変形例では、リンクLKiに対するリンクLKjの回転のうち、リンクLKiの延在方向Deiとのなす角度が所定角度より大きい軸Axiを回転軸とした回転が、旋回とも称される。但し、「旋回」の定義は、上述の例に限定されない。例えば、リンクLKiの延在方向Deiとのなす角度が所定角度より大きい軸Axiを回転軸とした回転を旋回とする上述の定義を第1定義とした場合、第1定義の代わりに、下記の第2定義又は第3定義が採用されてもよい。
第2定義では、リンクLKiに対するリンクLKjの回転により、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度が変化する場合、当該回転が旋回に該当する。従って、第2定義では、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度が、回転しても常に一定の場合、当該回転は、旋回以外の回転に該当する。例えば、第2定義では、図23に示した第1パターン、第5パターン及び第6パターンは、旋回に該当し、第2パターン、第3パターン、第4パターン及び第7パターンは、旋回以外の回転に該当する。
第3定義では、回転するリンクLKjの延在方向DejとリンクLKjの回転軸(軸Axi)とのなす角度が所定角度より大きい場合、当該回転が旋回に該当する。従って、第3定義では、リンクLKjの延在方向DejとリンクLKjの回転軸(軸Axi)とのなす角度が所定角度以下の場合、当該回転は、旋回以外の回転に該当する。例えば、第3定義では、図23に示した第1パターン、第3パターン、第5パターン及び第6パターンは、旋回に該当し、第2パターン、第4パターン及び第7パターンは、旋回以外の回転に該当する。
また、上述の第1定義、第2定義及び第3定義とは別に、互いに隣接する2個の関節機構JErのそれぞれの回転軸の関係に着目して、2個の関節機構JErによる2個の回転の相対関係を定義してもよい。具体的には、2個の回転軸のなす角度が所定角度以下である場合(典型的には、平行の場合)、2個の回転を同種の回転とし、2個の回転軸のなす角度が所定角度よりも大きい場合(典型的には、直交する場合)、2個の回転を異種の回転としてもよい。なお、同種の回転とは、2個の回転とも旋回、又は、2個の回転とも旋回以外の回転であり、異種の回転とは、2個の回転の一方が旋回で他方が旋回以外の回転である。2個の回転の相対関係の定義が用いられる場合、相対関係の起点となる回転は、例えば、上述の第1定義、第2定義及び第3定義のいずれかに基づいて決められてもよい。図23に示した第1パターンは、第1定義、第2定義及び第3定義のいずれにおいても、旋回に該当し、第2パターンは、第1定義、第2定義及び第3定義のいずれにおいても、旋回以外の回転に該当する。従って、第1パターン又は第2パターンを、相対関係の起点となる回転とすることが好ましい。
また、上述の第1定義、第2定義及び第3定義の2以上の定義を組み合わせた定義が用いられてもよい。この場合、例えば、組み合わせる2以上の定義の全てで旋回に該当する回転のみを旋回としてもよいし、組み合わせる2以上の定義の少なくとも1つで旋回に該当する回転を旋回としてもよい。
1…ロボットシステム、10…ロボット、20…エンドエフェクタ、30…ロボットコントローラ、32…処理装置、33…動作制御部、35…メモリ、36…通信装置、37…操作装置、38…表示装置、39…ドライバ回路、Ax1、Ax2、Ax3、Ax4、Ax4A、Ax5、Ax6、Axi…軸、BDP、BDPa…ボディ部、BDPbt…底面、BDPba…土台部、JEe1、JEe2、JEp1、JEp2、JEr1、JEr2、JEr3、JEr3A、JEr4、JEr4A、JEr5、JEr5A、JEr6、JEri…関節機構、LK1、LK1A、LK2、LK2A、LKi、LKj…リンク、LK1a、LK2a…支持部分、LK1b、LK1c、LK2b、LK2c…可動部分、MOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1、MOp2…モータ。
Claims (12)
- 7個以上の複数の関節を有する多関節ロボットの制御方法であって、
前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、
前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、
を含む単位処理を繰り返し実行し、
前記固定処理が実行された場合、前記算出処理において、前記複数の関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる、
ことを特徴とする多関節ロボットの制御方法。 - 前記特定状態は、前記複数の関節のうちのあらかじめ定められた関節に定められ、前記関節値が前記関節の可動領域の領域内で前記可動領域の領域外と領域内との境界領域の値となる状態である、
ことを特徴とする請求項1に記載の多関節ロボットの制御方法。 - 前記単位処理では、前記複数の関節の中に前記特定状態の関節が含まれる場合、
前回の前記単位処理において複数の第1関節値に更新された前記複数の関節値を、更新前の複数の第2関節値に戻し、
前記複数の第1関節値に基づいて、前記固定処理の対象となる前記特定状態の関節を特定し、
前記固定処理が実行された後に前記算出処理を実行する、
ことを特徴とする請求項1に記載の多関節ロボットの制御方法。 - さらに、
前記単位処理が繰り返し実行される前の初期状態の前記複数の関節の中に前記特定状態の関節が含まれる場合、繰り返し実行される前記単位処理のうちの1回目の前記単位処理が実行される前に、前記特定状態の関節の前記関節値を、前記特定状態でない状態に対応する前記関節値に変更する、
ことを特徴とする請求項1に記載の多関節ロボットの制御方法。 - 前記算出処理において、ヤコビ行列を用いて前記逆運動学計算を実行し、
前記固定処理において、前記ヤコビ行列の複数の要素のうち、前記特定状態の関節に係る要素の値を実質的に0に設定することにより、前記特定状態の関節の前記関節値を変位させない、
ことを特徴とする請求項1から4のいずれか1項に記載の多関節ロボットの制御方法。 - 前記複数の関節が、少なくとも1個の直動関節を含む、
ことを特徴とする請求項1に記載の多関節ロボットの制御方法。 - 7個以上の複数の関節を有する多関節ロボットと、
前記多関節ロボットの動作を制御する制御装置と、
を備え、
前記制御装置は、
前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、
前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、
を含む単位処理を繰り返し実行する動作制御部を有し、
前記動作制御部は、
前記固定処理が実行された場合、前記算出処理において、前記複数の関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる、
ことを特徴とするロボットシステム。 - 前記多関節ロボットは、
基部と、
第1リンクと、
第2リンクと、
先端部と、
前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
前記基部と前記第1リンクとを接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを回転させる第2駆動機構と、
前記第1リンクと前記第2リンクとを接続し、前記第1リンクの延在方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
前記第2リンクと前記先端部とを接続し、前記第2リンクの延在方向とのなす角度が前記所定角度より大きい軸を第4回転軸として、前記先端部を前記第2リンクに対して回転させる第4駆動機構と、
前記第1リンクの延在方向に沿って、前記第3駆動機構を前記第1リンクに対して相対的に移動させる第1移動機構と、
前記第2リンクの延在方向に沿って、前記第2リンクを前記第3駆動機構に対して相対的に移動させる第2移動機構と、
を備え、
前記先端部は、
前記第2リンクに接続される第1部分と、
前記第1部分に接続される第2部分と、
前記第1部分と前記第2部分とを接続し、前記第4回転軸とのなす角度が前記所定角度より大きい軸を第5回転軸として、前記第2部分を前記第1部分に対して回転させる第5駆動機構と、
前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を回転させる第6駆動機構と、
を含み、
前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1移動機構及び前記第2移動機構である、
ことを特徴とする請求項7に記載のロボットシステム。 - 前記多関節ロボットは、
基部と、
第1支持部分及び第1可動部分を含む第1リンクと、
第2支持部分及び第2可動部分を含む第2リンクと、
先端部と、
前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
前記基部と前記第1支持部分とを接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを前記基部に対して回転させる第2駆動機構と、
前記第1可動部分と前記第2支持部分とを接続し、前記第1リンクの延在方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
前記第2リンクの延在方向とのなす角度が前記所定角度以下の軸を第4回転軸として、前記第2可動部分を前記第2支持部分に対して回転させる第4駆動機構と、
前記第2可動部分と前記先端部とを接続し、前記第2リンクの延在方向とのなす角度が前記所定角度より大きい軸を第5回転軸として前記先端部を前記第2リンクに対して回転させる第5駆動機構と、
前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を前記第2リンクに対して回転させる第6駆動機構と、
前記第1支持部分に対して前記第1可動部分を前記第1リンクの延在方向に沿って移動させることにより、前記第1リンクを伸縮させる第1伸縮機構と、
前記第2支持部分に対して前記第2可動部分を前記第2リンクの延在方向に沿って移動させることにより、前記第2リンクを伸縮させる第2伸縮機構と、
を含み、
前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1伸縮機構及び前記第2伸縮機構である、
ことを特徴とする請求項7に記載のロボットシステム。 - 前記多関節ロボットは、
基部と、
第1リンクと、
第2リンクと、
先端部と、
前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
前記基部と前記第1リンクとを接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを回転させる第2駆動機構と、
前記第1リンクと前記第2リンクとを接続し、前記第1リンクの延在方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
前記第2リンクと前記先端部とを接続し、前記第2リンクが延在する方向とのなす角度が前記所定角度以下の軸を第4回転軸として、前記先端部を前記第2リンクに対して回転させる第4駆動機構と、
前記第1リンクの延在方向に沿って、前記第3駆動機構を前記第1リンクに対して相対的に移動させる第1移動機構と、
前記第2リンクの延在方向に沿って、前記第2リンクを前記第3駆動機構に対して相対的に移動させる第2移動機構と、
を備え、
前記先端部は、
前記第2リンクに接続される第1部分と、
前記第1部分に接続される第2部分と、
前記第1部分と前記第2部分とを接続し、前記第4回転軸とのなす角度が前記所定角度より大きい軸を第5回転軸として、前記第2部分を前記第1部分に対して回転させる第5駆動機構と、
前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を回転させる第6駆動機構と、
を含み、
前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1移動機構及び前記第2移動機構である、
ことを特徴とする請求項7に記載のロボットシステム。 - 請求項7に記載のロボットシステムにより、部品を組み付ける、又は、部品を取り除く、
ことを特徴とする物品の製造方法。 - 7個以上の複数の関節を有する多関節ロボットの動作を制御するプログラムであって、
プロセッサを、
前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行し、前記複数の関節の複数の関節値を前記変位量に基づいて更新する算出処理と、
前記複数の関節のうち、対応する関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行される固定処理と、
を含む単位処理を繰り返し実行する動作制御部として機能させ、
前記動作制御部は、
前記固定処理が実行された場合、前記算出処理において、前記複数の関節値のうち、前記特定状態の関節の前記関節値を実質的に変位させることなく、前記特定状態でない関節の関節値を変位させる、
ことを特徴とするプログラム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022136884 | 2022-08-30 | ||
JP2022-136884 | 2022-08-30 | ||
JP2023086110A JP2024035061A (ja) | 2022-08-30 | 2023-05-25 | 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 |
JP2023-086110 | 2023-05-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024048286A1 true WO2024048286A1 (ja) | 2024-03-07 |
Family
ID=90099396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2023/029630 WO2024048286A1 (ja) | 2022-08-30 | 2023-08-16 | 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024048286A1 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015174185A (ja) * | 2014-03-14 | 2015-10-05 | 三菱重工業株式会社 | ロボットのシミュレーション装置及び方法、制御装置、及びロボットシステム |
JP2022059740A (ja) * | 2020-10-02 | 2022-04-14 | 東京都公立大学法人 | ロボットおよびロボット制御プログラム |
-
2023
- 2023-08-16 WO PCT/JP2023/029630 patent/WO2024048286A1/ja unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015174185A (ja) * | 2014-03-14 | 2015-10-05 | 三菱重工業株式会社 | ロボットのシミュレーション装置及び方法、制御装置、及びロボットシステム |
JP2022059740A (ja) * | 2020-10-02 | 2022-04-14 | 東京都公立大学法人 | ロボットおよびロボット制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5547626B2 (ja) | 7軸多関節ロボットの制御装置および教示方法 | |
JP5180989B2 (ja) | 人型ロボットの自動制御のための方法及び装置 | |
KR101498835B1 (ko) | 7축 다관절 로봇의 제어방법, 제어 프로그램 및 로봇 제어장치 | |
JP6228097B2 (ja) | 移動ロボット | |
KR101778030B1 (ko) | 로봇 및 그 제어방법 | |
JP6498597B2 (ja) | 移動ロボットの制御装置 | |
US20100138038A1 (en) | Robot and method of controlling the same | |
JP2019042879A (ja) | 目標zmp軌道の生成装置 | |
JP7339806B2 (ja) | 制御システム、ロボットシステム及び制御方法 | |
CN110545965B (zh) | 多关节机器人以及多关节机器人系统 | |
JP2007136590A (ja) | 冗長関節部を有する冗長ロボットの制御装置および制御方法 | |
WO2016084932A1 (ja) | ロボット装置及びロボット制御装置 | |
WO2024048286A1 (ja) | 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 | |
KR20160003774A (ko) | 다관절 링크 기구의 역운동학 해법, 및 이 역운동학 해법을 이용한 교시 데이터 작성 장치 | |
JP2024035061A (ja) | 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 | |
WO2024070568A1 (ja) | 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 | |
JP2009050949A (ja) | ロボットアームの軌道教示方法および軌道教示装置 | |
Habich et al. | Intuitive Telemanipulation of Hyper-Redundant Snake Robots within Locomotion and Reorientation using Task-Priority Inverse Kinematics | |
Staicu | Kinematics of a translation-rotation hybrid parallel robot | |
JP6252278B2 (ja) | ロボットの制御方法、ロボットの制御装置 | |
JP6252273B2 (ja) | ロボットの制御方法、ロボットの制御装置 | |
Hsu et al. | Fabrication and Image Servo Tracking Study of a Continuum Robot Prototype | |
JP2011131362A (ja) | 7軸多関節ロボットの制御方法及び制御プログラム | |
JP2023173622A (ja) | 多関節ロボット、多関節ロボットの制御方法、ロボットシステム、及び、物品の製造方法 | |
JP2024035977A (ja) | 多関節ロボットのオフラインティーチング方法、プログラム、多関節ロボット、および、情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23860051 Country of ref document: EP Kind code of ref document: A1 |