Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MULTI-ANGLE END EFFECTOR
Document Type and Number:
WIPO Patent Application WO/2021/108271
Kind Code:
A1
Abstract:
Embodiments of the present disclosure are directed towards robotic systems and methods. The robot may include an end effector, a tool flange of the robot, and a joint. The end effector may include a contacting part configured to contact a workpiece. The joint may be positioned between, and connected to, the tool flange and the end effector. The joint may include a variable angle between the tool flange and the end effector.

Inventors:
TRUEBENBACH ERIC LENHART (US)
CAMPBELL PHILIP LUKE (US)
Application Number:
PCT/US2020/061610
Publication Date:
June 03, 2021
Filing Date:
November 20, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TERADYNE INC (US)
International Classes:
B25J15/04; B25J9/12; B25J9/14; B25J9/16; B25J15/06; B25J15/08
Foreign References:
US20060048364A12006-03-09
US20140107841A12014-04-17
US20180243904A12018-08-30
US20100152899A12010-06-17
KR20090118152A2009-11-18
Attorney, Agent or Firm:
WHITTENBERGER, Mark H. et al. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A robot comprising: an end effector including a contacting part configured to contact a workpiece; a tool flange of the robot; and a joint positioned between, and connected to, the tool flange and the end effector, the joint being configured to create a variable angle between the tool flange and the end effector.

2. The robot of claim 1, wherein the variable angle is controlled between at least two fixed angles.

3. The robot of claim 2, wherein the variable angle is controlled by a pneumatic cylinder.

4. The robot of claim 1, wherein the variable angle is controlled between multiple angles.

5. The robot of claim 4, wherein the variable angle is controlled over a range of 180 degrees of motion.

6. The robot of claim 4, wherein the variable angle is controlled by a motor.

7. The robot of claim 4, wherein the end effector is a mechanical or suction end effector.

8. The robot of claim 1, wherein the contacting part extends beyond a portion of the robot, for the variable angle.

9. The robot of claim 1, wherein the contacting part includes at least one of a suction cup, a gripper finger, and a magnet configured to attach the end effector to the workpiece.

10. The robot of claim 1, wherein a path is automatically calculated based upon, at least in part, the variable angle.

11. The robot of claim 10, wherein the path is calculated to avoid collisions and calculated to allow the end effector to contact a pick surface of the workpiece.

12. The robot of claim 10, wherein the path is automatically calculated based upon, at least in part, a second variable angle.

13. The robot of claim 12, wherein the path is optimized based upon, at least in part, the first variable angle and the second variable angle.

14. The robot of claim 10, wherein the path is calculated based upon, at least in part, a pick pose of the workpiece or the place pose of the workpiece, wherein the pick pose corresponds to a first angle of the variable angle and the place pose corresponds to a second angle of the variable angle.

15. A method of picking one or more workpieces presented in a variable pose, the method comprising: identifying at least one workpiece at a first location; positioning an end effector of the robot near the at least one workpiece, the end effector includes a contacting part configured to contact the at least one workpiece; adjusting a joint positioned between, and connected to, a tool flange of the robot and the end effector, the joint being configured to create a variable angle between the tool flange and the end effector; controlling the robot to retain the at least one workpiece in the end effector; controlling the robot to move the at least one workpiece retained in the end effector to a second location; and placing, via the robot and the end effector, the at least one workpiece in a known pose at the second location.

16. The method of claim 15, wherein controlling the robot and the end effector includes automatically calculating a path between the first location and the second location.

17. The method of claim 16, wherein automatically calculating the path between the first location and the second location is a based upon, at least in part, the variable angle.

18. The method of claim 15, wherein the variable angle is controlled between at least two fixed angles.

19. The method of claim 18, further comprising: setting the variable angle to a first angle; and adjusting the variable angle to a second angle while the at least one workpiece is retained in the end effector.

20. The method of claim 19, wherein setting and adjusting the variable angle occurs via a pneumatic cylinder.

21. The method of claim 15, wherein the variable angle is controlled with multiple angles.

22. The method of claim 21, wherein the variable angle is controlled over a range of 180 degrees of motion.

23. The method of claim 21, wherein the variable angle is controlled via a motor.

24. The method of claim 15, wherein the contacting part extends beyond a portion of the robot, for the variable angle.

25. The method of claim 15, wherein the contacting part includes at least one of a suction cup, a gripper finger, and a magnet configured to attach the end effector to the at least one workpiece.

26. The method of claim 16, wherein the path is automatically calculated based upon, at least in part, the variable angle.

27. The method of claim 26, wherein the path is calculated to avoid collisions and calculated to allow the end effector to contact a pick surface of the workpiece.

28. The method of claim 26, wherein the path is automatically calculated based upon, at least in part, a second variable angle.

29. The method of claim 26, wherein automatically calculating the path is based upon, at least in part, a pick pose of the workpiece or the place pose of the workpiece, wherein the pick pose corresponds to a first angle of the variable angle and the place pose corresponds to a second angle of the variable angle.

30. The method of claim 28, wherein the path is optimized based upon, at least in part, the first variable angle and the second variable angle.

Description:
MULTI-ANGLE END EFFECTOR

RELATED APPLICATION

[0001] This application claims the benefit of U.S. Provisional Application No.

62/940,420, filed on November 26, 2019, the entire contents of which are herein incorporated by reference.

FIELD OF THE INVENTION

[0002] The invention generally relates to robotics, and more specifically, to robot end effectors.

BACKGROUND

[0003] Tasking a robot is difficult, and this difficulty is exacerbated by tasking robots in an unnatural, over constrained way. Natural tasking is a comprehensive approach to specifying robotic tasks easily without over- or under-constraint.

[0004] A gymnast, for example, does not model the exact position of hand placements on bars, but rather models the bars as having one degree of freedom in placement. Similarly, tasks like welding and painting have an extra degree of freedom in how the electrode or nozzle is rotated about its primary axes, and the operator tasking a robot benefits by working with these natural constraints. Similarly, a workpiece to be grasped by an industrial robot may have symmetry that allows grasping in multiple ways. Natural tasking specifies the constraint on the robot in its minimal and least restrictive, way. [0005] In industrial robotics, robot motions are nearly always human-designed and repetitive. This permits a single optimized motion and a single optimized design for the end effector as well. In applications where the robot motion is different on every cycle, such as in 3- dimensional bin picking, an end effector design that is optimized for one part of the cycle performs poorly for the other parts of the cycle, making the task impractical or not economical.

SUMMARY

[0006] In one or more embodiments of the present disclosure, a robot is provided. The robot may include an end effector, a tool flange of the robot, and a joint. The end effector may include a contacting part configured to contact a workpiece. The joint may be positioned between, and connected to, the tool flange and the end effector. The joint may be configured to create a variable angle between the tool flange and the end effector.

[0007] One or more of the following features may be included. The variable angle may be controllable between at least two fixed angles. The variable angle may be controlled by a pneumatic cylinder. The variable angle may be controlled between multiple angles. The variable angle may be controlled over a range of 180 degrees of motion. The variable angle may be controlled by a motor. The end effector may be a mechanical or suction end effector. The contacting part may extend beyond a portion of the robot, for at least some of the variable angles. The contacting part may include at least one of a suction cup, a gripper finger, and a magnet configured to attach the end effector to the workpiece. The robot may include a path, where the path may be automatically calculated based on at least a pose of the workpiece and based on the end effector. The path may be calculated to at least avoid collisions and calculated to at least allow the end effector to contact a pick surface of the workpiece. The path may be calculated based upon a range of the variable angle. The path and an angle of the variable angle may be calculated to maximize the number of workpieces capable of being picked in a three-dimensional volume. The path may be calculated based upon a pick pose of the workpiece and calculated based upon the place pose of the workpiece. The pick pose may correspond to a first angle of the variable angle. The place pose may correspond to a second angle of the variable angle.

[0008] In another embodiment of the present disclosure, a method of picking one or more workpieces presented in a variable pose is provided. The method may include identifying at least one workpiece at a first location and positioning an end effector of the robot near the at least one workpiece. The end effector may include a contacting part configured to contact the at least one workpiece. The method may include adjusting a joint positioned between, and connected to, a tool flange of the robot and the end effector. The joint may be configured to create a variable angle between the tool flange and the end effector. The method may include controlling the robot to retain the at least one workpiece in the end effector and controlling the robot to move the at least one workpiece retained in the end effector to a second location. The method may include placing, via the robot and the end effector, the at least one workpiece in a known pose at the second location.

[0009] One or more of the following features may be included. Controlling the robot and the end effector may include automatically calculating a path between the first location and the second location. Calculating the path between the first location and the second location may be a based at least partially upon the variable angle. The variable angle may be controllable between at least two fixed angles. The method may also include setting the variable angle to a first angle and adjusting the variable angle to a second angle while the at least one workpiece is retained in the end effector. Setting and adjusting the variable angle may occur via a pneumatic cylinder.

The variable angle may be controllable with multiple angles. The variable angle may be controlled over a range of 180 degrees of motion. The variable angle may be controlled via a motor. The contacting part may extend beyond a portion of the robot, for at least some of the variable angles. The contacting part may include at least one of a suction cup, a gripper finger, and a magnet configured to attach the end effector to the at least one workpiece. Automatically calculating the path may be based on at least a pose of the at least one workpiece and based on the end effector. Automatically calculating the path may be based on at least avoiding collisions and based on at least the end effector contacting a pick surface of the workpiece. Automatically calculating the path may maximize the number of workpieces capable of being picked in a three- dimensional volume. Automatically calculating the path may be based on at least a pick pose of the workpiece and may be based on at least the place pose of the workpiece. The pick pose may correspond to a first angle of the variable angle, the place pose corresponds a second angle of the variable angle. The placement range of the end effector may be changed by changing the variable angle.

[0010] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] For a better understanding of the nature and objects of the present disclosure, reference is made to the following detailed description taken in conjunction with the following drawings, in which:

[0012] FIG. l is a block diagram of a natural tasking robotic system, according to an embodiment of the present disclosure; [0013] FIG. 2 is a graphical user interface showing multiple degrees of freedom of a natural tasking robotic system, according to an embodiment of the present disclosure;

[0014] FIG. 3 is a block diagram of a natural tasking robotic system, according to an embodiment of the present disclosure;

[0015] FIG. 4 is a block diagram of a velocity control approach for use in a natural tasking robotic system, according to an embodiment of the present disclosure;

[0016] FIG. 5 is a flowchart of a natural tasking robotic method, according to an embodiment of the present disclosure;

[0017] FIG. 6 is a system diagram of a natural tasking robotic system according to an embodiment of the present disclosure;

[0018] FIG. 7 shows examples of robot poses that may be used to pick up a workpiece or workpiece according to embodiments of the present disclosure;

[0019] FIG. 8 shows an example of a workpiece placement target according to embodiments of the present disclosure;

[0020] FIG. 9 shows an example of a workpiece placement target having obstacles located around the target according to embodiments of the present disclosure;

[0021] FIG. 10 shows an example of a rectangular workpiece and rectangular workpiece placement target according to embodiments of the present disclosure;

[0022] FIG. 11 shows an example depicting how a workpiece may be gripped in multiple positions according to embodiments of the present disclosure;

[0023] FIG. 12 shows an example of a rectangular workpiece and rectangular workpiece placement target according to embodiments of the present disclosure; [0024] FIG. 13 shows an example of a rectangular workpiece and rectangular workpiece placement target according to embodiments of the present disclosure;

[0025] FIG. 14 shows an example of a roughly cylindrical workpiece according to embodiments of the present disclosure;

[0026] FIG. 15 shows an example of a workpiece having continuous symmetry around all three axes according to embodiments of the present disclosure;

[0027] FIG. 16 shows an example of a workpiece having continuous symmetry around the z axis according to embodiments of the present disclosure;

[0028] FIG. 17 shows an example of an asymmetrical workpiece having a symmetrical pick feature according to embodiments of the present disclosure;

[0029] FIG. 18 shows an example of an asymmetrical workpiece having a symmetrical place feature according to embodiments of the present disclosure;

[0030] FIG. 19 shows an example of a place target with a symmetrical place feature according to embodiments of the present disclosure;

[0031] FIG. 20 shows an example of an asymmetrical place target according to embodiments of the present disclosure;

[0032] FIG. 21 shows an example of an asymmetrical end effector according to embodiments of the present disclosure;

[0033] FIG. 22 shows an example of an asymmetrical workpiece with asymmetrical pick features according to embodiments of the present disclosure;

[0034] FIG. 23 shows an example of a workpiece having no pick or place features with symmetry around the x, y, or z axis according to embodiments of the present disclosure; [0035] FIG. 24 shows an example of an asymmetrical workpiece according to embodiments of the present disclosure;

[0036] FIG. 25 shows an example of an end effector according to embodiments of the present disclosure;

[0037] FIG. 26 shows an example of a workpiece according to embodiments of the present disclosure;

[0038] FIG. 27 shows an example of an end effector according to embodiments of the present disclosure;

[0039] FIG. 28 shows an example of an end effector according to embodiments of the present disclosure;

[0040] FIG. 29 shows an example of a place target according to embodiments of the present disclosure;

[0041] FIG. 30 shows an example of a place target according to embodiments of the present disclosure;

[0042] FIG. 31 shows an example of a workpiece according to embodiments of the present disclosure;

[0043] FIG. 32 shows an example of a workpiece according to embodiments of the present disclosure;

[0044] FIG. 33 shows a table depicting examples of motion constraints according to embodiments of the present disclosure;

[0045] FIG. 34 shows a table depicting examples of motion constraints according to embodiments of the present disclosure; [0046] FIG. 35 shows an example of a workpiece being placed at a place target according to embodiments of the present disclosure;

[0047] FIG. 36 shows an example of a workpiece being placed at a place target according to embodiments of the present disclosure;

[0048] FIG. 37 shows an example of a workpiece being placed at a place target according to embodiments of the present disclosure;

[0049] FIG. 38 shows an example of a workpiece being placed at a place target according to embodiments of the present disclosure;

[0050] FIG. 39 is a graphical user interface of a robotic system, according to an embodiment of the present disclosure;

[0051] FIG. 40 is a graphical user interface of a robotic system, according to an embodiment of the present disclosure;

[0052] FIG. 41 is a graphical user interface of a robotic system, according to an embodiment of the present disclosure;

[0053] FIG. 42 is a graphical user interface of a robotic system, according to an embodiment of the present disclosure;

[0054] FIG. 43 is a graphical user interface of a robotic system, according to an embodiment of the present disclosure;

[0055] FIG. 44 is an example workpiece consistent with an embodiment of the present disclosure;

[0056] FIG. 45 is a diagram of example end effectors consistent with an embodiment of the present disclosure; [0057] FIG. 46 is an example diagram showing a workpiece in the corner of a bin consistent with an embodiment of the present disclosure;

[0058] FIG. 47 is an example diagram of top and side picks with a 0° end effector consistent with an embodiment of the present disclosure;

[0059] FIG. 48 is an example diagram of top and side picks with a 90° end effector consistent with an embodiment of the present disclosure;

[0060] FIG. 49 is an example diagram of top and side picks with a 45° end effector consistent with an embodiment of the present disclosure;

[0061] FIG. 50 is an example diagram for placement for the left two picks from FIG. 49 consistent with an embodiment of the present disclosure;

[0062] FIG. 51 is an example comparison of three different ranges for locating a placement target consistent with an embodiment of the present disclosure;

[0063] FIG. 52 is an example diagram of workpiece poses and end effector as in FIG. 47, using side picks consistent with an embodiment of the present disclosure;

[0064] FIG. 53 is an example diagram of workpiece poses and end effector as in FIG. 48, using side picks consistent with an embodiment of the present disclosure;

[0065] FIG. 54 is an example diagram of workpiece poses and end effector as in FIG. 49, using side picks consistent with an embodiment of the present disclosure;

[0066] FIG. 55 is an example comparison of three different placement ranges for side picks consistent with an embodiment of the present disclosure;

[0067] FIG. 56 is an example two-position end-effector consistent with an embodiment of the present disclosure; [0068] FIG. 57A is a first view of an example multi-position end effector consistent with an embodiment of the present disclosure;

[0069] FIG. 57B is a second view of the example multi-position end effector in FIG. 57A consistent with an embodiment of the present disclosure;

[0070] FIG. 58 is an example diagram of an end effector picking at a 45° angle and placing at a 0° angle consistent with an embodiment of the present disclosure;

[0071] FIG. 59 is an example diagram of an end effector critical dimension consistent with an embodiment of the present disclosure; and

[0072] FIG. 60 is a flowchart of an implementation of the picking one or more workpieces presented in a variable pose consistent with an embodiment of the present disclosure.

DETAILED DESCRIPTION

[0073] Embodiments of the subject application may include concepts from U.S. Patent

No. 6,757,587, U.S. Patent No. 7,680,300, U.S. Patent No. 8,301,421, U.S. Patent No. 8,408,918, U.S. Patent No. 8,428,781, U.S. Patent No. 9,357,708, U.S. Publication No. 2015/0199458, U.S. Publication No. 2016/0321381, U.S. Publication No. 2018/0060459, U.S. Application No. 16/025,544197 (Filed 07/02/2018; Title: SYSTEM AND METHOD FOR NATURAL TASKING OF ONE OR MORE ROBOTS), and U.S. Application No. 16/453,197 (Filed 06/26/2019; Title: SYSTEM AND METHOD FOR ROBOTIC BIN PICKING) the entire contents of each are incorporated herein by reference in their entirety.

[0074] Until recently, what was known as 3D bin picking has only automated the locating of the workpieces to be picked. The task of finding a general-purpose algorithm to plot a robot path to the workpiece, and from the workpiece to the place target, has been left to the programmer. Given that a bin may contain dozens or hundreds of workpieces, each in a different location and pose, and those poses will vary in each different bin, there is no practical way to pre-specify each path. Allowing the workpiece to be contacted in different ways or on different workpiece surfaces adds flexibility, and increases the likelihood of finding a valid pick / place combination, but further multiples the number of variations. As a result, bin picking was an intensive programming effort that still yielded poor results.

[0075] The term “path” may be considered to be a series of robot poses that are traversed to approach the workpiece in the bin, pick up the workpiece, transport the workpiece to a placement target, place the workpiece, and return the robot to a neutral position.

[0076] The problem created by allowing the calculation of myriad possible paths is that the bin picking system is preferably unconstrained enough to make finding a path both probable and simple. There is no need for calculating myriad possible paths for manually created paths, since, in that case, the programmer may observe the robot operation and adjust the system. Automated path calculation systems need to remove constraints in advance. In the ideal case, the end effector may be designed to allow any workpiece in any pose, anywhere in the bin to be picked; the end effector may also be designed to place a workpiece in a particular pose at the placement target, regardless of how the workpiece was picked up; and the bin, robot, and placement target may be placed relative to each other such that the greatest number of robot poses are possible during both picking and placing.

[0077] Referring now to FIG. 1, an embodiment of a robotic system 100 is provided.

System 100 may include a plurality of components, portions of which may be designed for a particular application and/or task. The first component of the system may include a software system 102 for adding new processes to a database 104. Once built, database 104 may be reused by operators in the field or remotely. Operators may select an element from the database 104 using a graphical user interface 106 for execution by the control software 108 as is shown in FIG. 1. Procedures for the particular application and/or task (e.g. welding, robotic assembly, etc.) may be added to database 104 by experts offline. This database 104 may be used with a graphical user interface 106 and tasking software online to develop each procedure for each task. The software modules may include, but are not limited to, training, tasking, and performance of the particular task, etc. All of this may be used to control the manner of operation of robotic hardware 110. Robotic hardware 110 may respond to the controls received from control software 108, however, it should be noted that the robotic hardware itself may be limited by its own maximum number of degrees of freedom as is discussed in further detail herein below. [0078] In a robotic system, the phrase “degrees of freedom” may refer to specific, defined modes in which a mechanical device or system can move. The number of degrees of freedom may be equal to the total number of independent displacements or aspects of motion.

For example, a six degrees of freedom (“6DOF”) scenario may refer to the freedom of movement of a rigid body in three-dimensional space. Specifically, the body may be free to change position as forward/backward (surge), up/down (heave), left/right (sway) translation in three perpendicular axes, combined with changes in orientation through rotation about three perpendicular axes, often termed yaw (normal axis), pitch (transverse axis), and roll (longitudinal axis). In contrast, placing a point in space may correspond three degrees of freedom, specifying a distance between two points on different links is one degree of freedom, etc.

[0079] In some embodiments, the phrase “robotic system”, as used herein, may include a system of one, two, and/or any number of robots. In this way, an entire robotic system DOF may refer to the sum of the DOFs on each of the individual robots. This may include one DOF for each single-axis joint, and six DOF for a free-moving base. For example, for a robotic system that includes two robots, one having 6DOF and the other having 5DOF, the available entire robotic system degrees of freedom may be 11DOF.

[0080] Embodiments included herein may be configured to explore an extra number of degrees of freedom of one or many robots to perform a robotic task naturally. In this example, an entire robotic system may include a maximum number of degrees of freedom associated therewith DOF (“N”) and may also include a minimum number of DOF (“M”) subtracted therefrom.

[0081] For example, and referring now to FIG. 2, a 3D rendering from a graphical user interface 200 depicting a welding tool having five degrees of freedom contrasted with a welding tool having six degrees of freedom, full 3D rotation and orientation, is provided. The difference between the two is the five degrees of freedom may be found by relaxing rotation about one axis. This particular model was tuned to optimize a scan and weld process. This involved configuring the bounding volumes around the scanner tool, as well as aligning the system and base primary frames to make the tool paths and point clouds appear in the correct locations. The tool offsets were also configured based on how the tool paths were created from the point clouds. The paths were created along the bottom of the seams, so an offset from the tip was configured so there were no collisions. As shown in FIG. 2, the arm may be constrained using two different constraint sets, with each one using a different tool offset, one for scanning the workpiece and one for welding. The term “workpiece”, as used herein, may refer to an object to be moved by a robot. The degrees of freedom set for scanning uses a six degree of freedom frame, and the welding set uses a five degree of freedom frame that allows the tip of the torch to freely rotate around the tip. This allows scanning for the workpiece first, then relaxing of the degrees of freedom for the weld paths, which are more difficult for the robot to achieve given its workspace envelope.

[0082] In some embodiments, and referring now to FIG. 3, an embodiment depicting a flowchart having a number of operations consistent with a natural tasking robotic process is provided. Natural tasking process 300 may include defining 302 robots, end effectors, workpieces, and a robotic environment. Process 300 may further include defining 304 one or more constraints based upon, tasks, end effector geometry, workpiece geometry, etc. Process 300 may also include defining 306 one or more task motions using the constraints. Process 300 may be configured to define a minimal number of constraints naturally through analysis of geometry (e.g., end effector geometry), such as by finding axes of symmetry relative to a task.

In this way, the naturalness of the constraint as well as an ability to exploit extra degrees of freedom in robot motion allow for natural control over the robot. Natural control, may be based upon, at least in part, both natural constraints as well as natural optimization of those constraints, as will be discussed in further detail below. In operation, once naturally optimized, the task may be executed 308 using a Jacobian-based velocity control approach as is discussed below.

[0083] In some embodiments, and referring now to FIG. 4, a block diagram 400 consistent with embodiments of the robotic system of the present disclosure is provided. Control of the end effectors of the robotic arms in a system may be accomplished using multiple components (e.g., using Energid’s Actin® software). These components may include, but are not limited to, outer position controller 402 and inner velocity controller 404. This combined control system 400 allows the program to “fly” the end effector throughout task space by specifying a desired placement, and joint velocities and positions may be calculated automatically. This frees the operator to focus on the task, rather than low-level control of the robot.

[0084] In some embodiments, the core velocity framework may be based on the manipulator Jacobian equation:

V = J{q)q (1)

[0085] Here V is an /«-length vector representation of the motion of the end effector

(usually some combination of linear and angular velocity referenced to points rigidly attached to parts of the manipulator); q is the «-length vector of joint positions (with q being its time derivative); and J is the mxn manipulator Jacobian, a function of q. (For spatial arms with a single end effector, V is often the frame velocity with three linear and three angular components. As used herein, it takes on a larger meaning that includes the concatenation of point, frame, or other motion of multiple end-effectors.) The Jacobian /(q) is the matrix that makes () true for all possible values of q . Note V can represent a concatenation of values for multiple end effectors, enabling coordinated motion of multiple points on the manipulator.

[0086] The velocity control question is the following: given a desired end effector motion

V, what are the joint rates q that best achieve this motion? To answer this, the framework is based, in part, on the approach below, which uses a scalar a , a matrix function W(q) , and a scalar function / (q) to solve for q given V through the following formula:

(2)

[0087] Where V/is the ) set of vectors that spans the null space of J . That is, JN j = 0, and N j has rank ( n*m ). Both V/ and NJ are generally functions of q. By changing the values of a, W, and many new and most established velocity- control techniques can be implemented.

[0088] Embodiments of the present disclosure, however, go beyond the formulation above to create a more general framework. Instead of insisting on the use of the gradient of a function, a general column vector F(q) is used. Not all vector functions are gradients. This minor, but important, modification yields the following formula:

[0089] This achieves the desired V while minimizing:

1

— q T Wq + aF T q (4)

[0090] The parameters a, W and F can be defined using XML to give many different types of velocity control.

[0091] In some embodiments, position control system 402 may build upon the velocity control system 404 to give robust position control to the end effectors. A position control module may be supplied as an interface to the position control system 402 to enable the addition of new position control algorithms. Position control system 402 may provide basic position control for the end effectors by building upon velocity control system 404. Given the joint velocities from velocity control system 404, position control system 402 may use Euler integration to calculate the joint positions. Once the joint positions are calculated, the end effector positions are known. The control system may check for joint limit exceedance and collisions as it is iterated forward in time. It may also zero the joint rate commands if a singularity is detected. [0092] In some embodiments, the control methodologies discussed above may be used, at least in part, to allow for the controller to relate the entire robotic system DOF (e.g., the available DOF of the system, “N”) to the required minimum number of degrees of freedom identified based on the workpiece constraints alone (“M”). In other words, the robotic system and method described herein may only need workpiece data in order to execute a natural robot task. In some cases, the DOF may be based upon other factors as well, including but not limited to, other factors or constraints, however this information may not be necessary. Embodiments of the robotic system and methods provided herein may be available to provide better control and/or increased performance of the robotic system, more feasible and/or optimized solutions for a robotic task, etc.

[0093] The phrase “maximum number of degrees of freedom” may refer to a maximum number of specific, defined modes in which a mechanical device, robot(s), and/or system may move. The phrase “minimum number of degrees of freedom” may refer to a minimum number of specific, defined modes in which a mechanical device, robot(s), and/or system move to execute a task naturally. The phrase “natural robot task” may refer to a task that may be performed using a reduced and/or simplified amount of motion. In some cases specifying a natural robot task may be contrasted with a math intensive way of specifying a task that may require a user to specify in robotic system’s coordinate/frame The natural robot task may be specified/demonstrated to the robotic system using one or more robots or end effectors and the minimum number of degrees of freedom may be determined based upon, at least in part, the natural robot task. The minimum number of degrees of freedom may be determined through analysis of end effector, robot, and/or workpiece geometry. It may be specified using a demonstration, teach to learn robotic techniques, using a GUI, etc. [0094] In some embodiments, the naturalness of the task may refer to the degree of alignment between 1) the commanded robot task and 2) the actual desired thing to be done. Some examples are provided below:

Desired task (1): Place a cup on a desk.

Unnatural: Place a cup with handle pointing to the right at x=30, y=50 cm from the corner.

Natural: Place the cup anywhere within the bounds of the table with the handle pointed in any direction.

Desired task(2): Point a camera on the robot at 3D point x=l, y=2, z=2 in space.

Unnatural: Place the camera at x=0, y=.2, z=.3 and pointed it at x=l, y=2, z=2.

Unnatural: Point the camera at {1,2,2} from any location with up in the image aligned with up in the real world.

Natural: With no constraint on camera position, point the camera at {1,2,2} with any orientation.

Desired task (3): Spray paint a workpiece using a nozzle 1 m away and pointed directly at the center of the workpiece.

Unnatural: Spray from 1 m away with the nozzle pointed at the workpiece and specially oriented about its axis. Natural: Spray from 1 m away with no special orientation of the nozzle other than pointing it at the workpiece.

[0095] It should be noted that although these unnatural constraints may seem odd in how they over restrict robot motion, they are actually how these kind of tasks are typically performed. Embodiments of the robotic system included herein allow using and solving for the natural representation.

[0096] In some embodiments, the phrase “natural workpiece constraint” may relate to geometrical features, and/or any other aspect associated with a particular workpiece. The phrase “natural environmental constraint” may relate to geometrical features, obstacles, and/or any other aspect associated with an environment that may be associated with a natural robot task.

[0097] In some embodiments, workpiece constraints, environmental constraints, and manipulator constraints may form a continuum in this approach, and multiple natural constraints can be combined to define a comprehensive tasking movement. Some of these may include, but are not limited to, directional constraints, orientation constraints, assignment to a curve or surface, distance constraints, joint positions, linear and nonlinear functional combinations of joint positions, center of mass, and linear and angular momentum. These constraints may vary as a function of robot configuration. End effector offsets, static workpieces or obstacles, and dynamic workpieces or obstacles may be used to define and configure the constraints. In some embodiments, the identification of the minimum number of degrees of freedom may be based on the workpiece constraints geometry and/or its features, some of which may include, but are not limited to, holes, shapes, sizes, etc.

[0098] In some embodiments, one or more constraints may be combined and/or specified by the user using a visual editor to create complex combinations of constraints that change over time to best achieve a real-world task. It should be noted that some or all of these constraints may be changed during execution of a robot task or operation, even time step by time step, and may be combined with optimizations such as collision and joint-limit avoidance. In this way, the number and type of constraints may be updated, dynamically, in real-time. For example, in some embodiments, some or all of the constraints may be automatically determined and/or identified using a scanner that may be configured to scan the robotic environment to identify, allow for the necessary processing, and subsequent determinations. Various sensors and devices may be used to obtain this data, some of which may include, but are not limited to, data from lidar, stereo cameras, color cameras, multispectral cameras, etc. Additionally and/or alternatively, some or all of the constraints may be updated remotely over a communication channel (e.g., radio, laser, or network communication, etc.). The constraints are set using a 2D graphical user interface or a 3D interface (e.g., augmented reality, etc.). The constraints may be of the "less than or equal to" variety, not just "equal to". Accordingly, the robotic system included herein may allow a user to constrain a point to be above the floor not just on it, for example.

[0099] Accordingly, embodiments of the robotic system described herein may include one or more robots having a maximum number of degrees of freedom “N”. In some embodiments, the system may allow a user to specify (e.g., teaching the robotic system by example, performing a robot “watch” and learn using one or more sensors, using a GUI such as a teach pendant to perform a demo, etc.) a task naturally by indicating only what needs to be done, such as insert a peg in a hole (using five degrees of freedom in constraint), follow a line with the tip of a welding tool (using three degrees of freedom in constraint), or point a camera at a location in space (using two degrees of freedom in constraint), etc. Specifying a task naturally may include specifying the task using a demonstration, for example, teaching or learning the robot how to perform the task. Additionally and/or alternatively, the user may not specify how the robotic system may perform the task and the system may determine how to perform the task automatically or using minimal inputs.

[00100] In some embodiments, the robotic system described herein may be configured to determine the minimum number of degrees of freedom “M” that may be required to perform the natural robot task, while M<=N. The robotic system may be configured to determine, via exploring the extra (N-M) extra degree of freedom, the most natural or efficient manner in which to perform the task. This may involve optimizing secondary criteria using the extra degrees of freedom. For example, a controller (e.g. Actin) may help to enable exploring the extra degrees of freedom (N-M) as discussed above. The extra number of degrees of freedom may be used to determine more convenient, faster, energy efficient, and/or feasible, "ways" to perform the task. The way or manner of performing may be based upon, at least in part, the determination of collision free paths, coordination of robots (if more than one), etc. In some embodiments, executing or performing the natural robot task may be at least partly employed using various software methodologies (e.g., using Energid’s Actin® software). Determining the way or manner of performing the task naturally may also include using one or more simulators that may be configured to perform a simulation. The results of such a simulation may be used to determine how to perform the task.

[00101] In some embodiments, exploring the extra degrees of freedom (N-M) may include completely relaxing some DOF (e.g., the “Z” dimension). Additionally and/or alternatively, embodiments included herein may be configured to relax a DOF partially, for example, allow Z to free spin within +- 15 degrees. As used herein, the phrase “free spin” may refer to allowing for unconstrained robot motion in at least one axis (e.g., end effector axis, etc.). The same concept may be applied to any DOF to provide flexibility when specifying a natural task. Accordingly, this may allow the robot system to find a solution in a more efficient manner. [00102] In some embodiments, the robotic system described herein may be configured to specify one or more robot poses. Commonly, robots may be programmed as a series of poses, i.e. particular orientations of the robot’s joints and rigid elements. The robot may then cycle through these poses under the command of a robot controller to accomplish some task. For example, picking up a workpiece with its end effector and transporting it to a new location, moving a paint sprayer through a series of positions, etc.

[00103] In some cases, sensory input to the robot may be limited to error signals, pause signals, or speed signals. These signals only stop, pause, or slow the movement of the robot through its series of poses, but do not affect the poses themselves. In more advanced cases, sensory input to the robot may be used to affect the poses themselves. For example, a 2D camera may be used to identify the position of a workpiece on a flat surface in a known position. From this, a robot pose to pick up the workpiece may be calculated. Generally, only a single robot pose may be calculated for any given sensory input. This minimizes calculation time, but does not take in to account the most efficient path for the robot to achieve the pose, whether the robot pose at workpiece pick-up also yields a correct path for the robot to put the workpiece down again, or the most efficient path between those points.

[00104] Allowing robot pose calculation and motion control based on multiple possible robot poses is desirable for more efficient motion, and discovery of more realizable pose combinations. Unfortunately, specifying the possible robot poses requires understanding robot kinematics, and applying them to every specific case in the robot picking and placing task. It has heretofore been impractical or impossible for an unskilled user to specify these variables. Accordingly, embodiments included below may be used to specify these variables indirectly, simply by describing a few characteristics of the workpiece, end effector, and workpiece placement target.

[00105] In some embodiments, and referring now to FIG. 5, an embodiment depicting a flowchart having a number of operations consistent with a robotic process 500 is provided. The process 500 may include providing (502) a robot configured to receive an initial constrained approach for performing a robot task. The process may further include allowing (504) a user to interact with the robot using a graphical user interface in communication with the robot, the graphical user interface configured to allow a user to interact with the robot to determine an allowable range of robot poses associated with the robot task, wherein the allowable range of robot poses includes fewer constraints than the initial constrained approach, and wherein the allowable range of poses is based upon, at least in part, one or more degrees of symmetry associated with at least one of a workpiece associated with the robot task or an end effector associated with the robot. The method may also include communicating (506), via a processor, the allowable range of robot poses to the robot.

[00106] Referring now to FIG. 6, an embodiment of a robotic system 600 is provided. In this example, a camera 602 (e.g. 2D, 3D, etc.) may be used to identify the position of a workpiece on a flat surface in a known position. In some embodiments, vision software 604 may be used to calculate the coordinates of the workpiece in a 3D space and pass this to the robot controller 606. Controller 606 may then calculate a pose for robot 608 to assume to enable the robot’s end effector 610 to pick up the workpiece. A teach pendant 612 having a graphical user interface associated therewith may provide the user with the ability to control robotic system 600 as is discussed in further detail hereinbelow. [00107] In operation, the user may demonstrate to the robotic system how to perform a particular task. This demonstration may be received using any suitable approach, including, but not limited to, via a graphical user interface, the user physically guiding the robot, using a simulation, using a pre-generated program, using a program generated in real-time, etc. The demonstration may provide an initial constrained approach that shows the robotic system exactly how to perform the particular task. In previous systems, once the initial constrained approach has been leamed/input the system may use the same pick pose, place pose, path, etc. to perform the task.

[00108] In some embodiments, the robotic process described herein may allow for a relaxation of the initial constrained approach by determining an allowable range of poses that may reduce the number of constraints from the initial constrained approach. Accordingly, embodiments of robotic process may identify and subsequently allow for a range of poses for picking and/or placing a workpiece any of which being acceptable for accomplishing the task. In some embodiments, the least constraining option may be provided and/or selected (e.g. automatically).

[00109] In some embodiments, the allowable range of poses may be based upon, at least in part, a workpiece geometry, an end effector geometry, a combination of both geometries, a portion of either geometry, a portion of both geometries, etc. It should be noted that these geometries may be received using any suitable approach, including, but not limited to, scanning, user input via graphical user interface, accessing one or more pre-determined or real-time generated programs, etc.

[00110] In some embodiments, one or more degrees of freedom associated with the robot may be partially or completely relaxed. The process may then determine and/or plan the appropriate path and/or poses for the robot to implement the task. This may include, but is not limited to, determining redundant degrees of freedom, considering environment obstacles, system performance optimization (e.g., energy efficiency), specific metric optimization, etc. [00111] Referring now to FIG. 7, an embodiment of a robotic system 700 is provided. In this example, it can be seen that there are many possible robot poses that the robot could assume to pick up the workpiece. Since the workpiece may be rotationally symmetrical with respect to an axis Zo normal to the flat surface, any robot pose that positions the robot’s end effector so that its ZE axis aligns with the workpiece’s Zo axis may enable the robot to pick up the workpiece with end effector 710. In this example, the robot may pick up the workpiece by positioning the fingers of its end effector 710 inside of the ring of the workpiece, and expanding the fingers so as to create an internal grip of the workpiece, though numerous other options are also available. [00112] Referring now to FIG. 8, an embodiment of a robotic system 800 is provided. In this example, robot end effector 810 has an approximately 45° bend. The end effector’s ZE axis has been redefined to align to the end of the fingers, so it is rotated 45° relative to the end effector in FIG. 7. Also, the workpiece on the flat surface is not rotationally symmetrical with respect to an axis Zo normal to the flat surface. However, the workpiece does have a circular cutout with the same dimensions as the inside of the workpiece in FIG. 7, suitable for an internal grip just like in FIG. 7. It should be noted that any robot pose that positions the robot’s end effector 810 so its’ ZE axis aligns with the workpiece’s Zo axis may enable the robot to pick up the workpiece with its end effector 810. FIG. 8 also shows a workpiece placement target 814. The workpiece placement target 814 requires a specific pose for the workpiece upon placement. If the robot has sufficient reach, and the environment around the workpiece placement target 814 is unconstrained, the robot may be able to place the workpiece in the target regardless of the pose the robot assumed to pick up the workpiece. The examples shown in FIGS. 7-8 afford many options for planning the robot path to the workpiece, and from the workpiece to the workpiece placement target. The increased number of options allow for computation of the most efficient path, or the most likely degree of picking success.

[00113] Referring now to FIG. 9, an embodiment of a robotic system 900 is provided.

This example shows the same conditions as in FIG. 8, but with obstacles around the workpiece placement target. In this example, only robot poses that position end effector 910 within a 180° arc may allow placement of the workpiece in the target. To enable the robot to always place the workpiece in the target, the robot pose when picking up the workpiece should be limited to the same 180° arc. There are still multiple options for computing the robot poses and paths between them, but the number of options is more limited.

[00114] Referring now to FIG. 10, an embodiment of a robotic system 1000 is provided. This example shows a rectangular workpiece and a rectangular workpiece placement target 1014. In this example, the robot may pick up the workpiece by gripping it from the outside with end effector 1010 positioned as shown in the left portion of FIG. 10, or positioned 180° rotated relative to its ZE axis as shown in the right portion of FIG. 10. In addition, the workpiece may be gripped in multiple positions along the long axis of the workpiece, shown in FIG. 11. All of these gripping positions allow placement in the workpiece placement target 1014. Due to limitations in the static friction between the end effector fingers and the workpiece, and due to position of the center of mass of the workpiece, only a subset of all possible gripping positions along the long axis will have acceptable performance.

[00115] Referring now to FIG. 12, an embodiment of a robotic system 1200 is provided. This example shows a rectangular workpiece, a rectangular workpiece placement target, and a vacuum suction cup end effector 1210. Any contact of the suction cup within the area A shown on the workpiece will result in a successful pick-up of the workpiece. As shown in FIG. 13, end effector 1310 may have any rotation around is axis ZE, with the suction cup positioned anywhere in the area A. In addition, the flexible nature of the suction cup may provide acceptable performance if the position of the suction cup on contact is anywhere within 10° of normal relative to the workpiece axis Zo.

[00116] Referring now to FIG. 14, an embodiment of a robotic system 1400 is provided. This example shows a roughly cylindrical workpiece with a hexagonal cross section on one end, and a circular cross section on the other end. The workpiece placement target is a 3-jaw machine chuck. In this example, end effector 1410 is a mechanical gripper designed for gripping workpieces from the outside. To place the workpiece correctly in the chuck, a flat side of the workpiece’s hexagonal half must align with one of the chuck’s jaws. Since the mechanical gripper is contacting the round side of the workpiece, and the gripping feature of the workpiece is rotationally symmetrical with respect to the axis Zo, any robot pose that positions the robot’s end effector so it’s ZE axis aligns with the workpiece’s Zo axis will enable the robot to pick up the workpiece with its end effector. However, regardless of how the workpiece was picked up, in this particular example, there are only six workpiece poses that will result in correct placement of the workpiece in the machine chuck, one every 60° of rotation of the workpiece around its Zo axis.

[00117] The embodiments described above illustrate that picking and placing performance may be enhanced by allowing for more options in the position of the robot end effector relative to the workpiece and workpiece placement target, but at the cost of a difficult process to understand and specify the limitations within these options. This complexity is increased if, unlike in the examples, workpiece picking is 3 -dimensional, such as when workpieces are randomly distributed in a bin.

[00118] Embodiments described herein include a process for synthesizing the motion limitations based upon a set of characteristics of the components of the system. The characteristics may be specified in a graphical user interface used as part of programming the robot or the application as is discussed in further detail hereinbelow.

[00119] As used herein, the phrase “pick feature” may refer to some section of the workpiece that may be used as the point of contact or mating contact for a robot end effector. A “place feature” may refer to some section of the workpiece or of the place target that may be used as the point of contact or mating contact between the workpiece and the place target for the workpiece. The phrase “workpiece feature” may refer to either a pick feature or a place feature or both. The phrase “coordinate frame”, as used herein, generally refers to three orthogonal axes that may correspond to each robot, workpiece feature, robot end effector, and workpiece placement target. The term “symmetry” of a workpiece feature, robot end effector, and workpiece placement target, as used herein, may be described in terms of whether that feature, robot end effector, or workpiece placement target has identical performance for its intended picking or placing operation, when rotated around one or more of the three axes of its coordinate frame. When the workpiece feature, robot end effector, or workpiece placement target may be rotated any degree around one of its axes, with identical, or substantially identical, performance for picking or placing, it has “continuous symmetry” around that axis. When the workpiece feature, robot end effector, or workpiece placement target may be rotated any whole number of increments around one of its axes, but more than one and less than infinite increments, with identical performance for picking or placing at each increment, it has “discrete symmetry” around that axis. When the workpiece feature, robot end effector, or workpiece placement target may be rotated only one complete revolution (i.e. an identity operation) around one of its axes, to have identical performance for picking or placing, it has “asymmetry” around that axis.

[00120] Accordingly, unconstraining robot axes and exploiting symmetries in the workpiece, end effector, and/or place target, may lead to smoother paths, more possible picks, and better bin emptying (e.g., in a situation where the workpiece may be randomly placed in a bin). Embodiments included herein may institute a default of constrained motion. If a user demonstrates or programs a pick or a place, the system may duplicate that exact alignment of workpiece, end effector, and place target on every pick & place. All unconstrained motions may be displayed using a graphical user interface (e.g., in advanced tabs) such as those discussed below. Accordingly, this may simplify the creation of a user’s first program and therefore match his/her intuitive understanding of how most systems work, which is suitable for debugging a program using hand-arranged workpieces.

[00121] In some embodiments, unconstraining motion may be performed incrementally. For example, unconstraining the end effector rotation during a pick has an incremental benefit. Moreover, unconstraining the workpiece pose during placement has an independent, but additive benefit.

[00122] In some embodiments, unconstraining robot axes may not be specified directly as it may require an advanced understanding of kinematics and robots in general. Instead, embodiments included herein may provide a wizard or a means of entering characteristics that may query the user about characteristics of the workpiece, the end effector, and/or the place target. The system may use this information to calculate and apply motion constraints. This may simplify user training and free the user from having to consider, for example, the combinations of end effector and workpiece characteristics that affect unconstraining the robot. The salient workpiece, end effector, and place target characteristics are symmetry.

[00123] As discussed above, embodiments of the present disclosure may allow for the analysis of various types of symmetry before, during, and/or after aspects of the process. In some embodiments, the only symmetry information that may be needed to unconstrain robot axes are those of the pick feature on the workpiece, the place feature on the workpiece, the end effector, and/or the place target. In some embodiments, the system may only need to know about rotational symmetry. Rotational symmetry is always relative to some axis of rotation. In some embodiments, all rotational symmetry may be around one of the three axes of the associated frame, e.g., the x, y, or z axis.

[00124] Referring now to FIGS. 15-16, embodiments depicting examples of workpiece symmetry are provided. In some embodiments, in the case of a workpiece, symmetry rotations may be relative to the coordinate frame associated with the workpiece (e.g., embedded in a CAD file, mesh file, etc.). FIG. 15 shows a workpiece with continuous symmetry around all three axes, in this example, a sphere. FIG. 16 shows a workpiece with continuous symmetry around the z axis.

[00125] In some embodiments, for unconstraining the robot axes for pick and place, the symmetry of the pick feature and the place feature may be considered separately from each other, and from the overall workpiece symmetry.

[00126] Referring now to FIG. 17, an embodiment depicting an asymmetrical workpiece with a symmetrical pick feature is provided. Independent of the workpiece itself, it should be noted that the pick or place feature of a workpiece may have its own, separate symmetry. For example, the workpiece shown in FIG. 17 is asymmetrical, i.e., it has no rotational symmetry around any of the axes. Moreover, for this particular workpiece there is no axis in any frame for which the workpiece would be rotationally symmetric. In this example, the workpiece has one possible pick feature shown as an internal grip on the left side. Even though the workpiece is asymmetrical, this pick feature has rotational symmetry around the (z) axis.

[00127] Referring now to FIG. 18, an embodiment depicting an asymmetrical workpiece with a symmetrical place feature is provided. The workpiece in FIG. 18 is asymmetrical, i.e., it has no rotational symmetry around any possible axis. In this example, it has one asymmetrical pick feature, namely an outside grip along the tapered sides of the handle. However, it should be noted that this example does include a symmetrical place feature, namely, a placement of the cylindrical spindle, in to a chuck. The place feature has rotational symmetry around the (z) axis. [00128] Referring now to FIG. 19, an embodiment depicting a place target with a symmetrical place feature is provided. The place target may have its own symmetry. For example, a chuck may have rotational symmetry around its axis of rotation. Or a fixture may have symmetry around an axis normal to its surface. To take advantage of this symmetry, embodiments included herein may be configured to establish a coordinate frame with the place target. Some options may include, but are not limited to, giving the place target its own coordinate frame (e.g. defining a feature for the place target, treating the place target like the end effector having a CAD-based coordinate frame of its own, etc.), using the coordinate frame of the workpiece pose when teaching the place, etc. For example, assuming that the user correctly aligns the workpiece and the target when teaching the place, the two coordinate frames may each be the same at the point of placement. In some embodiments, it should be noted that there may be more than one place target associated with a particular robot task or series of tasks. [00129] Referring now to FIGS. 20-22, embodiments depicting asymmetrical examples are provided. In some embodiments, an asymmetry may be the programming default. When there is asymmetry, there are no two pick or place features that are identical, and no two end effector positions (while holding the workpiece) that are identical. FIG. 20 shows an asymmetrical place target, FIG. 21 shows an asymmetrical end effector, and FIG. 22 shows an asymmetrical workpiece with asymmetrical workpiece features. It should be noted that the workpiece in FIG. 22 does have some possible symmetrical pick and place features, for example, the round screw holes and the cylindrical pegs exhibit symmetry. If none of these are used as pick or place features, the workpiece picking and placing may be considered asymmetrical. It may also be possible to treat a symmetrical workpiece as asymmetrical. In some embodiments, this may be the programming default. In this case, the system may select one of the infinite poses the symmetrical workpiece could have, and the control software may attempt to determine a path to the pick features allowed for that pose, even if other identical pick features are available. This may limit picking and path planning performance. In some embodiments, a workpiece with symmetry around an axis other than the x, y, or z axis of the associated frame may be treated as asymmetrical. This may indicate that the frame needs to be assigned properly to realize symmetries. FIG. 23 shows an example of a workpiece that has no pick or place features with symmetry around the x, y, or z axis and is therefore asymmetrical. For clarity, it should be noted that none of the axes shown in FIG. 23 pass through the center of any cross- section of the workpiece along the longest dimension of the workpiece.

[00130] Referring now to FIGS. 24-25, embodiments depicting continuous symmetry examples are provided. As discussed above, continuous symmetry may indicate that a pick or place feature may be rotated any increment over a range of 360° around its x, y, or z axis with no change in its appearance. It should be noted that this may be the case for the pick or place feature, not the workpiece or fixture as a whole. FIG. 24 shows an asymmetrical workpiece with two possible pick features at each end, each of which may be continuously symmetrical around the (x) axis passing through the center of each pick feature. For an end effector, this may indicate that the end effector may be rotated by any increment over a range of 360° around an axis, with no change in its ability to pick or place the workpiece. In some embodiments, the convention is to assign this as the z axis for the end effector, however the x or y axis may also be used. FIG. 25 shows an end effector with continuous symmetry around an axis perpendicular to the center of the contact point.

[00131] Referring now to FIGS. 26-29, embodiments depicting discrete symmetry examples are provided. Discrete symmetry indicates that a pick or place feature, or an end effector, may be rotated 360° in at least two discrete increments around its x, y, or z axis with no change in the function of the feature for purposes of picking or placing the workpiece. It should be noted that this example is illustrates the pick or place feature, not the workpiece or fixture as a whole. In FIG. 26, for example, a pick taught as an outside grip may have discrete symmetry while a pick taught as an inside grip may have continuous symmetry. In some embodiments, the increment may be specified as a number of increments, as degrees, or using any suitable approach. For example, a pick feature having three discrete increments of symmetry can also be described as having 360° / 3 = 120° discrete symmetry. FIG. 27 shows an example end effector with 180° discrete symmetry. FIG. 28 shows an example end effector with 120° discrete symmetry. FIG. 29 shows a place target (CNC chuck) with 120° discrete symmetry. FIG. 30 shows a place target (CNC vise) with 180° discrete symmetry. [00132] Referring now to FIG. 31, an embodiment depicting workpiece symmetry around x, y, and z axes is provided. In order to align end effectors, workpieces, and place targets with discrete symmetry, the starting point or zero angle of the discrete symmetry may need to be determined. For example, if the coordinate frame of the place target may be inferred from the taught workpiece pose, the zero angle may be inferred from the relative positions of the workpiece and the place target. Alternatively, if a coordinate frame were to be explicitly assigned to the place target, the user may need to specify one of the other two axes as the zero angle. In some embodiments, the system may allow for a symmetry definition around more than one axis. FIG. 31 shows a workpiece with six possible pick features. Namely, two internal grips with continuous symmetry around the z axis, two internal grips with continuous symmetry around the y axis, and two external suction picks with 90° discrete symmetry around the x axis (both sides of the workpiece). In the case of discrete symmetry around the x axis, the system may require specification of which axis sets the zero angle of pick symmetry around the x axis.

In this particular example, it could be either the y or the z axis.

[00133] Referring now to FIG. 32, an embodiment showing an example with non- orthogonal axes is provided. Some workpieces have pick and place features that may be symmetrical around multiple axes, however the axes are not orthogonal to each other. For example, the workpiece in FIG. 32 includes a first internal grip, continuously symmetrical pick feature on the top, and a second internal grip, continuously symmetrical place feature on the bottom (not visible). It also has a third pick feature, relative to a third axis, and a fourth pick feature, relative to a fourth axis. Since the system may generally only allow specification of symmetry around the x, y, or z axis in the workpiece frame, the third and fourth pick features may be considered asymmetrical. The system may still allow the user to specify pick features at this point, but they may have only one possible end effector position, owing to the lack of symmetry around one of the x, y, or z axis. Disallowing nonorthogonal axes of symmetry actually creates very few problems as it is fairly uncommon. If the end effector has symmetry, that is sufficient to allow unconstrained picks, without the need for workpiece pick feature symmetry (see FIG. 33). It is rather unlikely to have workpiece pick feature symmetry with an asymmetrical end effector, but even if this occurs, the workaround of programming multiple picks for the un-aligned axes is still possible.

[00134] In some embodiments, the system may be configured to calculate motion constraints from symmetry information. The unconstrained motion may be easily calculated by examining the following combinations: the workpiece pick feature and the end effector and the workpiece place feature and the place target place feature. This all assumes an unconstrained environment as there may be further rules when the environment is constrained. The preferred rule is to operate according to the lowest constraint. For example, if an end effector has continuous symmetry around its z axis, and the pick feature is asymmetrical, the system may take advantage of the less constrained feature, the continuous symmetry of the end effector around its z axis, and allow the picking of the workpiece using any valid end effector pose that varies only in the rotation around the end effector z axis. Allowing this freedom of end effector pose essentially allows unconstrained robot motion in one of the end effector axes, here in end effector z. Alternatively, if an end effector has 180° discrete symmetry around its z axis, and the pick feature has continuous symmetry around the workpiece x axis, this system may take advantage of the less constrained feature, the continuous symmetry of the pick feature around the workpiece x axis, and allow the picking of the workpiece using any valid end effector pose that varies only in the end effector rotation around the workpiece x axis. Allowing this freedom of end effector pose may be known as free spin in workpiece x. If the workpiece place feature has 120° discrete symmetry around the associated workpiece axis, and the place target place feature has 60° discrete symmetry around the associated place target axis, the system may take advantage of the less constrained feature, the 60° discrete place target symmetry (the smaller of the two angles), and allow placing the workpiece using any valid end effector pose in 60° increments of rotation around the place target reference axis. Allowing this freedom of end effector pose may be known as discrete spin around the place target reference axis x. In this example, the workpiece coordinate frame and the place target coordinate frame may need to be aligned to the same zero angle. Some possible rules examples are provided in FIGS. 33-34. [00135] Referring now to FIGS. 35-40, embodiments of the present disclosure providing examples of workpieces are provided. FIG. 35 shows an example workpiece made from hex stock, placed in to chuck, z aligned. For picking the workpiece, since the workpiece pick feature is less constrained than the end effector, use free spin in workpiece z. For placing the workpiece, the lesser of the two discrete symmetries is 60° for the workpiece, such that the place may be in any 60° increment. Note, the workpiece and place target zero reference axes are aligned. FIG.

36 shows the same workpiece but with the end effector and workpiece z axes unaligned. This is similar to the example above, however, the pick position may be taught differently, with a grip from the side. For picking the workpiece, since the workpiece pick feature is less constrained than the end effector, use free spin in workpiece z. For placing the workpiece, the lesser of the two discrete symmetries is 60° for the workpiece, such that the place can be in any 60° increment. It should be noted that the workpiece and place target zero reference axes are aligned. In this example, the end effector’s z axis and the workpiece’s z axis are no longer aligned. As such, the system may always explicitly specify the free spin is around workpiece z, and does not assume alignment with end effector center point (TCP) z. It is possible to artificially align the workpiece and end effector z, but this may then limit the pick to one TCP. Alternatively, the user may specify and select from multiple TCPs. Embodiments included hereinbelow provide a number of GUIs and displays that may be configured to relieve the user of this burden (and of creating a more complex UI), which may allow for the calculation of its own temporary TCP based on the taught pick.

[00136] Referring now to FIG. 37, an embodiment showing a point-to-point gripping end effector is provided. For picking the workpiece, rather than re-orienting the workpiece frame, the user has selected the y axis as the zero angle reference instead of x. Accordingly, the y axis lines up with the points rather than the flats of the hex stock. The lesser of the two discrete symmetries is 60° for the workpiece, so the pick may free spin in any 60° increment. In this example, the end effector’s zero angle reference X axis may be rotated minus two (or plus four) 60° increments relative to the workpiece pick feature’s zero angle reference Y. For placing the workpiece, since the workpiece place feature is less constrained than the place target, the place may use free spin in workpiece z. FIG. 38 shows an example of a workpiece with external asymmetry that must be placed in a specific asymmetrical location. For picking the workpiece, this is similar to above examples except the workpiece pick feature has discrete symmetry around the y axis and the zero angle may be set by the z axis. In this example, the gripper may be flat-to-flat. The lesser of the two discrete symmetries is 60° for the workpiece, so the pick can free spin in in any 60° increment. For placing the workpiece, since both the place feature on the workpiece (which includes the handle) and the place target are asymmetrical, there is only one valid place pose for the workpiece. [00137] In some embodiments, all pick planning and motion constraints may be programmed as dialogues on the graphical user interface (e.g., Advanced tabs) for picking, placing, and the end effector. In some embodiments, the user may elect to specify anywhere from zero to all four of the symmetries. Every additional piece of information may improve performance, even when the others are left at the default (e.g., asymmetrical). In fact, when one of the two halves of the pick and place pairs (pick feature and end effector, or place feature and place target, place feature, respectively) have continuous symmetry, the other half of the pair’s symmetry is irrelevant.

[00138] Referring now to FIG. 39, an embodiment showing an example graphical user interface 3900 consistent with the present disclosure is provided. GUI 3900 may allow for generating and displaying a place rule. In operation, upon user selection of the teach tab in GUI 3900 a place wizard may be generated.

[00139] Referring now to FIG. 40, an embodiment showing an example graphical user interface 4000 consistent with the present disclosure is provided. GUI 4000 may allow for display of an installation tab for the workpiece. Defining workpiece pick and/or place symmetries allows for fewer pick rules and free spin workpiece Z on place. For example, the user may specify the type of symmetry that exists for each workpiece axis (e.g. none, continuous, orN sides, etc.).

[00140] Referring now to FIG. 41, an embodiment showing an example graphical user interface 4100 consistent with the present disclosure is provided. GUI 4100 may display a pick rule rotation tab that may be configured to allow the user to visualize pick optimizations derived from end effector and workpiece symmetries by combining the end effector and the workpiece in the same view. As shown in the FIG. 41, any symmetries defined in the installation tab may be displayed and if a symmetry is not defined it may be de-emphasized (e.g. grayed out, etc.). In some embodiments, the user may override the use of any symmetry for a specific place rule. [00141] Referring now to FIG. 42, an embodiment showing an example graphical user interface 4200 consistent with the present disclosure is provided. GUI 4200 may be configured to display an installation tabs changes end effector. In operation, the play option may be configured to demonstrate selected rotation in the viewer by animating the spinning of the end effector or the workpiece. Selecting any field (other than the viewer itself) or exiting the page may take the viewer out of the play mode. In some embodiments, the dropdown menu may allow the user to select the type of end effector symmetry (e.g., each position is unique, all positions are equivalent, there are 2/3/4 equivalent positions, etc.). The “play” option displayed in FIG. 42, and in other embodiments, when selected, may demonstrate selected rotation in the viewer by animating spinning of the end effector or the workpiece. Selecting any field (other than the viewer itself) or exiting the page may take the viewer out of the play mode. FIG. 42 only shows specification of end effector symmetry. It is understood that a similar set of controls may be used to specify symmetry around other axes.

[00142] Referring now to FIG. 43, an embodiment showing an example graphical user interface 4300 consistent with the present disclosure is provided. GUI 4300 may display a place rule rotation tab that may be configured to allow a user to visualize one or more place optimizations derived from workpiece symmetry in one of the workpiece axes.

[00143] In some embodiments, the graphical user interfaces of the present disclosure may allow for workpiece and end effector symmetries to be defined using various user-editable options such as the installation tab described above. Accordingly, there is no need to edit symmetries in pick/place rules pages. Ease of use may be achieved through the visualization of symmetries in the viewer and in some embodiments the viewer display end effector rotation. In some embodiments it may not be necessary to explicitly define zero reference axis for rotational symmetry as a zero reference may be defined implicitly by pick and place rules.

[00144] In some embodiments, and as discussed above, the present disclosure may provide a method for specifying the allowable range of poses of a robot and/or robot end effector for the purpose of picking up a workpiece. The method may include graphically displaying the robot and/or robot end effector, the workpiece, and/or the axes of the workpiece coordinate frame. The method may also include querying a user whether the end effector has substantially equivalent performance for picking up the workpiece when the end effector is rotated around one or more axes of its coordinate frame.

[00145] In some embodiments, when the end effector is rotated around one or more axes of its coordinate frame, it may be determined that the end effector has substantially equivalent performance for picking up the workpiece. In this situation, the user may be allowed to specify each rotation as continuous, or in a number of discrete steps. In some cases, the specified rotation may be displayed as a series of images. For example, at a graphical display such as those described above (e.g., on a robot teach pendant, or any other suitable device).

[00146] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a workpiece feature for the purpose of being contacted by a robot and/or robot end effector. The method may include graphically displaying the workpiece, the axes of its coordinate frame, and/or the robot or the robot end effector, where the robot and/or robot end effector may be displayed in a pose for contacting the workpiece. The method may further include querying a user as to whether the end effector has substantially equivalent performance for contacting the workpiece when the workpiece is rotated around one or more axes in its coordinate frame.

[00147] In some embodiments, when the workpiece is rotated around one or more axes of its coordinate frame, the robot and/or robot end effector may have substantially equivalent performance for contacting the workpiece. Accordingly, the user may specify each rotation as continuous, or in a number of discrete steps.

[00148] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a workpiece for the purpose of placing it at a workpiece placement target. The method may include graphically displaying the workpiece, the axes of its coordinate frame, and/or the workpiece placement target. In some embodiments, the workpiece may be displayed in a pose for placing the workpiece at the workpiece placement target. The method may include querying a user as to whether the workpiece may be placed correctly when the workpiece is rotated around one or more axes in its coordinate frame.

[00149] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a robot and/or robot end effector for the purpose of placing a workpiece at a workpiece placement target, where the allowable range of poses being relative to the workpiece placement target. The method may include graphically displaying the robot and/or robot end effector, the workpiece, the axes of the workpiece coordinate frame, and/or the workpiece placement target. In some embodiments the robot and/or robot end effector may be displayed in a pose for placing a workpiece at the workpiece placement target. The method may include querying a user as to whether it may be possible to place the workpiece at the workpiece placement target correctly when the workpiece is rotated around one or more axes in its coordinate frame. [00150] In some embodiments, when the workpiece is rotated around one or more axes in its coordinate frame, the workpiece may have at least one correct placement at the placement target. In this situation, the user may specify each rotation as continuous, or in a number of discrete steps. If the workpiece is rotated around one or more axes in its coordinate frame, and the workpiece has at least one correct placement at the placement target, the user may specify each rotation as a smaller angle than a complete rotation. In some cases, the range of possible rotations may be displayed as a series of images (e.g., at a graphical display associated with a robot teach pendant).

[00151] In some embodiments, the present disclosure may provide a method for calculating the greatest range of possible poses of a workpiece feature and of a robot and/or robot end effector, each relative to the other, for contacting the workpiece feature with the robot end effector. The method may include determining a first set of the allowable range of poses for the workpiece feature, where each of the allowable poses results in substantially equivalent performance for contacting the workpiece feature with a robot and/or robot end effector. The method may include determining a second set of the allowable range of poses for the robot and/or robot end effector, where each of the allowable poses results in substantially equivalent performance for contacting the workpiece feature with a robot and/or robot end effector. The method may also include selecting either the first set or the second set. This may be determined based upon which set allows the greatest range of poses with substantially equivalent performance for contacting the workpiece feature with the robot and/or robot end effector. [00152] In some embodiments, the present disclosure may provide a method for calculating the greatest range of poses of a workpiece and of a workpiece placement target, each relative to the other, for placing the workpiece at a workpiece placement target. The method may include determining a first set of the allowable range of poses for the workpiece, where each of the allowable poses may result in substantially equivalent performance for placing the workpiece at the workpiece placement target. The method may further include determining a second set of the allowable range of poses for the workpiece placement target, where each of the allowable poses may result in substantially equivalent performance for placing the workpiece at the workpiece placement target. The method may also include selecting either the first set or the second set, determined by which set may allow for the greatest range of poses with substantially equivalent performance for placing the workpiece at a workpiece placement target.

[00153] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a robot end effector relative to a workpiece, for the purpose of contacting the workpiece to transport the workpiece with the robot end effector. The method may include graphically displaying the workpiece, the robot and/or the robot end effector, and/or the axes of the workpiece coordinate frame, where the robot end effector may be displayed in a pose for contacting the workpiece. The user may be allowed to specify the magnitude of an end effector translation along each axis of the workpiece coordinate frame for which the contact between the robot end effector and the workpiece has acceptable performance for the purpose of contacting the workpiece to transport the workpiece with the robot end effector. In some cases, the specified translation along each axis may be displayed as a series of images (e.g., at a graphical display associated with a robot teach pendant).

[00154] In some embodiments, the present disclosure may provide a method for specifying an allowable range of poses of a robot end effector relative to a workpiece, for the purpose of contacting a workpiece to transport the workpiece with the robot end effector. The method may include graphically displaying the workpiece, the robot end effector, and the axes of the robot end effector coordinate frame, where the robot and/or robot end effector may be displayed in a pose for contacting the workpiece. In some cases the user may be allowed to specify the magnitude of an end effector rotation around the origin of the robot end effector coordinate frame, relative to one or more axes of the robot end effector coordinate frame, for which the contact between the robot end effector and the workpiece has acceptable performance for the purpose of contacting the workpiece to transport the workpiece with the robot end effector. In some cases, one of the axes of the robot end effector coordinate frame may be normal to a contact point at the surface of the workpiece. In some cases, the specified rotation relative to each axis may be displayed as a series of images (e.g., at a graphical display associated with a robot teach pendant).

[00155] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a robot end effector for the purpose of picking up a workpiece. The method may include determining the degree of symmetry of the pick feature on the workpiece. The degree of symmetry may be continuous, discrete, and/or asymmetrical, for rotation of the workpiece around each of the axes of the workpiece’s coordinate frame. If the determined symmetry is discrete, the method may include determining the increment of the discrete rotation around the corresponding axis. The method may also include determining the degree of symmetry of the robot end effector, where the degree of symmetry may be continuous, discrete, and/or asymmetrical, for rotation of the robot end effector around each of the axes of the robot end effector’s coordinate frame. If the determined symmetry is discrete, the method may include determining the increment of the discrete rotation around the corresponding axis. The method may also include determining a first valid pose for the workpiece relative to the robot end effector for the purpose of picking up the workpiece. For an axis of workpiece’s coordinate frame that is coincident with an axis of the robot end effector’s coordinate frame when the workpiece is in the first valid pose, the method may include determining a range of valid robot end effector poses by allowing rotation of the end effector according to the degree of symmetry determined for either the workpiece around the an axis of the workpiece’s coordinate frame or for the robot end effector around the an axis of the robot end effector’s coordinate frame.

[00156] In some embodiments, the present disclosure may provide a method for specifying the allowable range of poses of a workpiece for the purpose of placing the workpiece at a placement target. The method may include determining the degree of symmetry of the place feature on the workpiece, where the degree of symmetry may be continuous, discrete, or asymmetrical, for rotation of the workpiece around each of the axes of the workpiece’s coordinate frame, and where, if the determined symmetry is discrete, determining the increment of the discrete rotation around the corresponding axis. The method may also include determining the degree of symmetry of the placement target, where the degree of symmetry may be continuous, discrete, or asymmetrical, for rotation of the placement target around each of the axes of the place target’s coordinate frame, and where, if the determined symmetry is discrete, determining the increment of the discrete rotation around the corresponding axis. The method may further include determining a first valid pose for the workpiece relative to the placement target for the purpose of placing the workpiece. For an axis of workpiece’s coordinate frame that may be coincident with an axis of the placement target’s coordinate frame when the workpiece is in the first valid pose, the method may include determining a range of valid workpiece poses by allowing rotation of the workpiece according to the degree of symmetry determined for either the workpiece around the an axis of the workpiece’s coordinate frame or for the placement target around the an axis of the placement target’s coordinate frame.

[00157] In some embodiments, the present disclosure may provide a system for picking up and placing workpieces. The system may include one or more of a robot, a robot end effector, a sensor, a robot controller, and/or a robot teach pendant in communication with the robot controller. In some embodiments, the sensor may be configured to detect the poses of one or more workpieces relative to the robot, and the robot controller may be configured to select a workpiece as detected by the sensor. The robot controller may be further configured to select from a range of possible end effector picking poses for the purpose of picking up the workpiece. The robot controller may be further configured to select from a range of possible end effector placing poses for the purpose of placing the workpiece at a workpiece placement target. The robot controller may be further configured to prompt a user for information concerning the symmetry of the end effector in order to generate the range of possible end effector picking poses. The user may be prompted for information concerning the symmetry of the end effector using a graphical user interface (e.g., on the robot teach pendant). The robot controller may be further configured to prompt a user for information concerning the symmetry of the workpiece pick features in order to generate the range of possible end effector picking poses. The user may be prompted for information concerning the symmetry of the end effector on the robot teach pendant. The robot controller may be further configured to select from a range of possible end effector placement poses for the purpose of placing the workpiece at a workpiece placement target.

[00158] In some embodiments, the robot controller may be further configured to prompt a user for information concerning the symmetry of the workpiece place features in order to generate the range of possible end effector placement poses. The user may be prompted for information concerning the symmetry of the end effector on the robot teach pendant. The robot controller may be further configured to prompt a user for information concerning the symmetry of the workpiece place target in order to generate the range of possible end effector placement poses. The user may be prompted for information concerning the symmetry of the end effector on the robot teach pendant. The robot controller may be further configured to calculate a path from a selected end effector picking pose to a selected end effector placing pose. The path between the selected end effector picking pose and the selected end effector placing pose may be optimized for the highest probability of a successful workpiece pick and a successful workpiece placement.

[00159] Referring now to FIG. 44, an example workpiece consistent with an embodiment of the present disclosure is provided. This workpiece has three surfaces that may be suitable for contact with a suction end effector: a top 4402, left side 4404, and right side 4406. The bottom side 4408 may not be able to be used for picking, since the workpiece is placed with the bottom on the placement target, which may cause a collision between the robot end effector and the placement target if attempted. The tube side 4410 may not be able to be used for bin picking, since an end effector that can pick up the part by contacting the top, left side, or right side of the workpiece may not be suitable for contacting the tube side of the workpiece. The example workpiece has no rotational symmetry.

[00160] Referring to FIG. 45, example end effectors consistent with an embodiment of the present disclosure are provided. Each end effector may have a suction cup 4502 connected through a pipe 4504 that may allow a connection 4506 to a source of vacuum. Each end effector may also have a connection 4508 to a robot tool flange. The end effectors may differ only in the bend angle of the pipe 4504. Variants of 0°, 45°, and 90° are shown.

[00161] Some examples may illustrate the nature of the problem, where fixed end effector designs overly constrain the bin picking system. For example, a workpiece may be placed at the placement target with bottom side 4408 down and tube side 4410 forward. The workpiece may be picked in such a way as to allow this placement.

[00162] Referring now to FIG. 46, an example diagram showing a workpiece in the corner of a bin consistent with an embodiment of the present disclosure is provided. FIG. 46 shows a bin 4602 and a workpiece 4604, in two different orientations, in the comer of the bin.

[00163] Referring now to FIG. 47, an example diagram of top and side picks with a 0° end effector consistent with an embodiment of the present disclosure is provided. FIG. 47 shows that the 0° end effector may not be well suited for picking the workpiece in the corner of the bin. In both cases, portions of the robot may collide with the bin walls. No collision-free path to or from the pick position may be possible, rendering the workpiece unable to be picked in the two workpiece poses shown.

[00164] Referring now to FIG. 48, an example diagram of top and side picks with a 90° end effector consistent with an embodiment of the present disclosure is provided. FIG. 48 shows that the 90° end effector may be better suited for picking the workpiece in the comer of the bin.

A path may exist for the robot to enter and exit the bin for both of the workpiece poses in the left corner of the bin. However, due to limitations in this particular robot’s joint configuration, no robot pose may be possible to pick the workpiece when it is in the right corner of the bin.

[00165] Referring now to FIG. 49, an example diagram of top and side picks with a 45° end effector consistent with an embodiment of the present disclosure is provided. FIG. 49 shows that there may be a possible path for the robot with the 45° end effector to enter and exit the bin and pick the workpiece in both orientations in both comers.

[00166] One might conclude that the 0° end effector is the least flexible configuration, the 90° end effector as moderately flexible, and the 45° end effector as the most flexible. But these examples only consider picking the workpiece, and only consider picking on the top surface. [00167] Referring now to FIG. 50, an example diagram for placement for the left two picks from FIG. 49 consistent with an embodiment of the present disclosure is provided.

Consider the left two examples of FIG. 49. The two picks have a 180 degree difference in the position of the end effector tube bend relative to the top of the workpiece. Placing the workpiece in the same final pose may require two different robot poses. Simply rotating the end effector (by rotating the final robot joint) may not be sufficient.

[00168] The requirement for a consistent final workpiece pose with this end effector configuration may either constrain the pick, or constrain the placement. If the robot placement pose may need to be consistent, the pick pose relative to the workpiece pose may also need to be consistent. For example, if the leftmost robot pose in FIG. 50 is the only permissible robot placement pose, then this may disqualify three of the four possible picks in FIG. 49, rendering those parts unable to be picked. If the robot is permitted to pick the workpiece in any orientation, and therefore may assume many different robot poses in order to achieve a consistent workpiece placement pose, this may constrain the location of the placement target. The number of poses an articulated robot can assume may be affected by the range over which the workpiece placement may be performed.

[00169] Referring now to FIG. 51, an example comparison of three different ranges for locating a placement target consistent with an embodiment of the present disclosure is provided. Figure 51 shows a comparison of the possible ranges for locating a placement target, for the three exemplary end effectors, along one left-right dimension, for a consistent workpiece placement pose but a variable robot pick pose.

[00170] The 0° end effector has the widest range, 0.73 meters in this case, which is nearly the entire range from the smallest to the fullest reach of the robot. This is because the workpiece pose can be rotated 360° simply by rotating the last robot joint. The workpiece could have been picked with any position of the final robot joint, and placed in any other position.

[00171] The 45° end effector has a more constrained range, 0.42 meters in this case. To compensate for the 45° bend in the end effector tube, the robot joints must be arranged in such a way that the reach is limited, in order to obtain a consistent workpiece placement pose.

[00172] The 90° end effector has the most constrained range, 0.24 meters in this case. Compensating for the 90° bend in the end effector tube requires the robot to reach beyond the workpiece in both cases, in order to obtain a consistent workpiece placement pose.

[00173] This exemplary range limitation is more complex than the simplified example. It may differ with the robot size, number, arrangement, and travel limits of the robot joints. It also may vary with the position of the placement target above or below the robot base plane, becoming increasingly constrained as the placement target plane and the robot base plane differ. [00174] In many applications, the placement target position relative to the robot may not be able to be optimized for the greatest number of robot placement poses. The operating environment may have obstacles, or the placement target may be inside of a fixed machine. The constraint on placement target position limits the number of paths that can be realized, and thus limits how many parts can be picked. [00175] As previously noted, the pick performance was best with the 45° end effector, worse with the 90° end effector, and worst with the 0° end effector. But the placement performance was best with the 0° end effector, worse with the 45° end effector, and worst with the 90° end effector. The best end effector configuration may be different for picking and placing.

[00176] This simplified example only considers a single pick surface. But when only one pick surface is used, many workpieces in random poses in a bin may be unable to be picked, since that surface may not have an unobstructed approach. A practical implementation of bin picking may require multiple possible pick surfaces.

[00177] FIGS. 47 through 51 only show a single (top) surface being picked. If both the workpiece sides are added to the possible pick surfaces, this increases the possible number of robot poses; both on picking and placing.

[00178] Referring now to FIG. 52, and example diagram of workpiece poses and end effector as in FIG. 47, using side picks consistent with an embodiment of the present disclosure is provided.

[00179] Referring now to FIG. 53, and example diagram of workpiece poses and end effector as in FIG. 48, using side picks consistent with an embodiment of the present disclosure is provided.

[00180] Referring now to FIG. 54, and example diagram of workpiece poses and end effector as in FIG. 49, using side picks consistent with an embodiment of the present disclosure is provided.

[00181] FIGS. 52, 53, and 54 show the same workpiece poses and end effectors as in FIGS. 47, 48, and 49, respectfully, but allow for the workpiece to be picked from the right or the left side. The 0° end effector may have the same performance for top and side picks, and the workpieces remain unable to be picked. The 90° end effector may have better performance for side picks, which may have made more collision-free robot poses available. The 45° end effector performance may be similar for both top and side picks. Note that while pick performance may be unchanged for many of the examples shown, pick performance is nearly always improved by adding more pick surfaces. For example, where a pick surface is inaccessible because of workpiece pose or obstructions.

[00182] Referring now to FIG. 55, an example comparison of three different placement ranges for side picks consistent with an embodiment of the present disclosure is provided. Compare these to FIG. 51 : the 0° end effector’ s placement range for side picks is 0.11 meters, much smaller than the top pick range of 0.73 meters. The 45° end effector’s placement range is 0.34 meters, smaller than the top pick range of 0.42 meters. But the 90° end effector’s placement range is 0.59 meters, more than twice as large as the top pick range of 0.24 meters.

[00183] Allowing side picks may have the increased the number of possible robot pick poses, but may introduce enough new limitations in the place target placement that the benefit of the additional pick surfaces may not be realizable in a practical implementation. These examples only show a limited number of workpiece pick and place poses. Many more poses may be possible or desirable. For simplicity, these examples show only one dimension of the placement ranges. The placement range may be a three-dimensional volume within the robot’s operating range. The principles also hold for horizontal placement into a machine chuck and the like. [00184] The desired improvement over the end effectors shown in the examples may allow for the greatest number of robot poses for both picking and placing. As shown in the examples, optimizations for picking and placing are often at odds, with implementations performing well in the former performing poorly in the latter, or vice versa; or there being a compromise that doesn’t perform very well in either.

[00185] The present disclosure is an end effector with a variable angle relative to the robot flange. This angle may be controllable, so that it can be different for workpiece picks and places. In the simplest case, the end effector may have only two angles, for example 0° and 45°. The end effector can have a “hard stop” at each of these angles, making the control both simple and accurate. In a more flexible case, the end effector can have 0°, 45°, and 90° positions. Even better flexibility may be found with an end effector that can have 0°, 45°, 90°, and -90° positions.

[00186] By allowing different end effector angles for picking and placing, the end effector can be varied from, for example, 45° for the largest number of possible robot pick poses, and then changed to 0° or 90°, depending on the nature of the placement, for the largest number of possible robot place poses.

[00187] It may be preferable to use the inherent positioning capabilities of the robot as much as possible. For example, most articulated robots can rotate a joint that is normal to the tool flange 360° or more. By making the end effector angle relative to the axis normal to the plane of final joint rotation (the plane of the robot tool flange), the normal joint may be used to position the end effector so as to cover the greatest operating range, as shown in the examples. [00188] Referring now to FIG. 56, an example two-position end-effector consistent with an embodiment of the present disclosure is provided. This end effector may have a joint such as, for example but not limit to, a swivel joint 5602 that may allow the suction cup 5604, which is the part of the end effector that may contact the workpiece, to alter its angle relative to the axis normal to the plane of final joint rotation (the plane of the robot tool flange). The vacuum connection 5606 to the suction cup (not shown) may be made to the movable part of the end effector at the swiveling joint. An embodiment of this connection is visible in FIG. 58. In FIG. 56, pneumatic cylinder 5608 may be connected to a compressed air connection 5610 and may be filled with compressed air or evacuated of compressed air to switch the end effector, in this example, to a 0° or a 45° position. Other positions, such as 0° and 90°, or 90° and 45°, are also possible. The two positions may have “hard stops,” i.e. the movement of the swivel joint can be limited by fixed features, rather than by the limits of the travel of the pneumatic cylinder. This may provide greater precision in each of the two end effector positions. This embodiment may have connection 5612 to a robot tool flange.

[00189] Referring now to FIGS. 57A and 57B, two different views of an example multi position end effector consistent with an embodiment of the present disclosure are provided. The end effector may have connection 5702 to a robot flange, stepper motor 5704, globoid worm 5706, and globoid worm gear 5708. The end effector may have a joint such as, for example, a swivel joint 5710 that may allow the suction cup 5712, which is the part of the end effector that may contact the workpiece, to alter its angle relative to the axis normal to the plane of the robot tool flange. In the example shown, the angle may be altered over a range ±90° relative to the axis normal to the robot tool flange. As seen in FIG. 57B, the end effector may have connection 5714 to a vacuum pump.

[00190] In this example, the angle of the end effector may be controlled by a stepper motor 5704 connected to a globoid worm 5706, which in turn transfers the rotation of the stepper motor to the swivel joint 5710 via a globoid worm gear 5708. The connection 5814 between the vacuum source and the suction cup may be via a short pipe and a fitting for a flexible hose. [00191] Referring now to FIG. 58, an example diagram of an end effector picking at a 45 angle and placing at a 0° angle consistent with an embodiment of the present disclosure is provided. FIG. 59 shows that the exemplary multi-position end effector can pick a workpiece at a 45° angle, just like the fixed end effector shown in FIG. 4. But by changing the end effector angle to 0° for placement, instead of having the limited 45 degree placement range of 0.42 meters shown in FIG. 51, the placement range is increased to the 0 degree placement range of 0.73 meters, almost 75% more. The two-position end effector from FIG. 56, which can also switch between 0° and 45°, can also achieve the same performance improvement.

[00192] The angle changes of the end effector may be controlled by software in multiple ways. In the simplest case, the control to change end effector angle can be part of the normal end effector controls that form part of a pick and place sequence. For example, when picking a workpiece, the vacuum may have to be turned on at a pre-pick position. Switching the end effector angle could be a similar control, executed at the same pre-pick position. The end effector angle can also be switched at a post-pick position, a pre-place position, a post-place position, or some intermediate waypoint. In these cases, the picks and places are taught or programmed with the end effector in the desired angle for that operation, and the rest of the program executes normally, with the addition of an angle switch between picking and placing, and/or before picking.

[00193] Alternatively, the end effector angle can be controlled as part of the inverse kinematics calculations that control the variable robot path. The available end effector angles can also form part of the path planning algorithm, to aid in determining the optimum path. [00194] Referring now to FIG. 59, an example diagram of an end effector critical dimension consistent with an embodiment of the present disclosure is provided. The dimensions of the end effector may be optimized depending on the end application. Factors for determining the ideal dimensions may include the robot reach, the depth of the bin, the location and obstacles around the placement target, the size of the contact point or points with the workpiece, and the size of the workpiece. FIG. 59 shows an end effector optimized for many applications. In this example, dimension A may be set to be sufficient for the contact point with the workpiece to extend beyond the last robot joint. This optimization may permit the end effector, when swiveled to the 90° shown, to pick a very small or thin workpiece in the comer of a bin, while avoiding collisions between the robot joint and the bin wall or floor. Also, in this example, dimension B may be minimized as much as possible, while still keeping dimension A at its minimum length. Minimizing dimension B permits the end effector, in certain configurations, to pick workpieces near a bin wall from the side, such as is shown in the leftmost parts of FIG. 48 and FIG. 49.

[00195] While the examples given here use a suction end effector, the principles are equally applicable to a mechanical end effector with two or more fingers; end effectors using magnetic, electrostatic, adhesive, or van der Waals forces; or any other means of attaching an end effector to a workpiece. In some embodiments, mechanical end effectors may include a single finger and a fixed member. The part may be contacted by being held between the single finger and the fixed member.

[00196] The end effectors shown in the examples shown make contact with the workpiece with a single suction cup. The invention may also be beneficial to applications using multiple suction cups, multiple gripper fingers, multiple magnets (e.g. electromagnets, etc.), or any other means of attaching an end effector to a workpiece. [00197] While the examples shown only discuss two pick surfaces, an asymmetrical workpiece, an end effector with rotational symmetry, and an asymmetrical placement target, the benefit of the current invention may also be realized with one pick surface, many pick surfaces, and workpieces and placement targets with additional types of symmetry. Similarly, the current invention may be beneficial to end effectors with limited or no symmetry.

[00198] The examples show only a single dimension of the placement target range. The range may actually be a three-dimensional volume. The invention may increase the flexibility of robot path planning over the entire three-dimensional volume.

[00199] The invention may also apply to 2D picking applications, where workpieces are arranged on a flat surface. For example, it may allow 2D objects to be placed in more different poses than when they were picked.

[00200] The robot may be articulated as in the example, or any other type of robot (spherical, cylindrical, SCARA, Cartesian, multi jointed).

[00201] The placement target may be a static fixture, surface, machine, container, or other workpiece, or may itself be variable, such as a conveyor, mobile robot, or another type of robot. [00202] The placement target may be physical in nature, or may be a location in space.

[00203] Referring now to FIG. 60, flowchart of an implementation 6000 of the picking one or more workpieces presented in a variable pose is provided. The method may include identifying 6010 at least one workpiece at a first location and positioning 6020 an end effector of the robot near the at least one workpiece. The end effector may include a contacting part configured to contact the at least one workpiece. The method may further include adjusting 6030 a joint positioned between, and connected to, a tool flange of the robot and the end effector, the joint being configured to create a variable angle between the tool flange and the end effector. The method may include controlling 6040 the robot to retain the at least one workpiece in the end effector and/or controlling 6050 the robot to move the at least one workpiece retained in the end effector to a second location. The method may further include placing 6060, via the robot and the end effector, the at least one workpiece in a known pose at the second location. It should be noted that the operations associated with the methods included herein may be performed in any order relative to each other, including simultaneously, partially simultaneously, etc.

[00204] As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a circuit,” “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

[00205] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

[00206] A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave.

[00207] Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

[00208] Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

[00209] Aspects of the present disclosure are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions.

These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

[00210] These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.

[00211] The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

[00212] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may, but not always, represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[00213] The terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting of the disclosure. As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and/or "comprising," when used in this specification, specify the presence of stated features, integers, steps (not necessarily in a particular order), operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps (not necessarily in a particular order), operations, elements, components, and/or groups thereof. [00214] The corresponding structures, materials, acts, and equivalents of all means or step plus function elements that may be in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications, variations, substitutions, and any combinations thereof will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The implementation(s) were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure for various implementation(s) with various modifications and/or any combinations of implementation(s) as are suited to the particular use contemplated. [00215] A number of implementations of the present disclosure have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the present disclosure.

[00216] For example, in some implementations, the robot may be any mechanical system configured to pick up at least one object and move it from one place to another.

[00217] In some implementations, the graphical user interface may be implemented in places other than a robot teach pendant, including but not limited to a computer display, a mobile device, or a tablet computer. Moreover, while in some implementations “a processor” may be used, it should be noted that this may include, but is not limited to, a processor associated with or separate from a robot controller, for example, a single processor separate from or included within the controller, a plurality of processors separate from or included within the controller, etc. In some cases, one processor located in one device may perform certain operations and another processor located in a physically separate area may perform other operations. Additionally and/or alternatively, some or all of the operations may be performed by a processor or group of processors located in a single device, such as those associated with the robotic systems included herein.

[00218] Having thus described the disclosure of the present application in detail and by reference to implementation(s) thereof, it will be apparent that modifications, variations, and any combinations of implementation(s) (including any modifications, variations, substitutions, and combinations thereof) are possible without departing from the scope of the disclosure defined in the appended claims.