DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Response to Arguments
35 U.S.C. 112(f) Claim interpretation is maintained upon further review as no amendment has been made. Applicant's arguments filed on 11/07/2025 have been fully considered but they are not persuasive or moot in view of new ground of rejection which was necessitated based on the amendments to the claims. The new ground of rejection for independent claims is based on Gaschler in view of Eberst.
Claim Interpretation
The following is a quotation of:
(f) Element in Claim for a Combination. – An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof.
The following is a quotation of pre-AIA 35 U.S.C. 112, sixth paragraph:
An element in a claim for a combination may be expressed as a means or step for performing a specified function without the recital of structure, material, or acts in support thereof, and such claim shall be construed to cover the corresponding structure, material, or acts described in the specification and equivalents thereof.
The claims in this application are given their broadest reasonable interpretation using the plain meaning of the claim language in light of the specification as it would be understood by one of ordinary skill in the art. The broadest reasonable interpretation of a claim element (also commonly referred to as a claim limitation) is limited by the description in the specification when 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is invoked.
As explained in MPEP § 2181, subsection I, claim limitations that meet the following three-prong test will be interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph:
(A) the claim limitation uses the term “means” or “step” or a term used as a substitute for “means” that is a generic placeholder (also called a nonce term or a non-structural term having no specific structural meaning) for performing the claimed function;
(B) the term “means” or “step” or the generic placeholder is modified by functional language, typically, but not always linked by the transition word “for” (e.g., “means for”) or another linking word or phrase, such as “configured to” or “so that”; and
(C) the term “means” or “step” or the generic placeholder is not modified by sufficient structure, material, or acts for performing the claimed function.
Use of the word “means” (or “step”) in a claim with functional language creates a rebuttable presumption that the claim limitation is to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites sufficient structure, material, or acts to entirely perform the recited function.
Absence of the word “means” (or “step”) in a claim creates a rebuttable presumption that the claim limitation is not to be treated in accordance with 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph. The presumption that the claim limitation is not interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, is rebutted when the claim limitation recites function without reciting sufficient structure, material or acts to entirely perform the recited function.
Claim limitations in this application that use the word “means” (or “step”) are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action. Conversely, claim limitations in this application that do not use the word “means” (or “step”) are not being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, except as otherwise indicated in an Office action.
This application includes one or more claim limitations that do not use the word “means,” but are nonetheless being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, because the claim limitation(s) uses a generic placeholder that is coupled with functional language without reciting sufficient structure to perform the recited function and the generic placeholder is not preceded by a structural modifier. Such claim limitation(s) is/are: first planner module in claims 1, 3, 4, 5, 9, 11, 12, 13, 17, and 19, second planner module in claims 1, 2, 3, 4, 6, 9, 10, 11, 12, 14, 17, 18, 19, and 20, offline planner module in claims 3, 11, and 19, online planner module in claims 3, 11, and 19, plan executor module in claims 5, 6, 13, 14, and 20, robot controller module in claims 5 and 13.
Because this/these claim limitation(s) is/are being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, it/they is/are being interpreted to cover the corresponding structure described in the specification as performing the claimed function, and equivalents thereof.
A review of the original specification, filed 09/28/2022, Page 18, lines 28-30 cited “…The robot controller module can be located on a robot, or off the robot but physically or wirelessly coupled to the robot. In some implementations, the robot controller module can be integrated into an on-board circuit of the robot.” Therefore, the examiner interpreted the phrase robot controller module as the hardware which is integrated into an on-board circuit.
If applicant does not intend to have this/these limitation(s) interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph, applicant may: (1) amend the claim limitation(s) to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph (e.g., by reciting sufficient structure to perform the claimed function); or (2) present a sufficient showing that the claim limitation(s) recite(s) sufficient structure to perform the claimed function so as to avoid it/them being interpreted under 35 U.S.C. 112(f) or pre-AIA 35 U.S.C. 112, sixth paragraph.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
8. Claim(s) 1-3, 5-11, and 13-20 are rejected under 35 U.S.C. 103 as being unpatentable over Gaschler (US 2021/0200219 A1) in view of Eberst et al. (WO2013037693A2) (Hereinafter Eberst).
9. Regarding Claim 1, Gaschler teaches a method for generating a motion plan for a robot in an environment (See at least Para [0005] “This specification describes how a system can adapt robot motion plans during online operation of a robot. The system can receive an initial plan that was generated offline. The initial plan can include the robot maneuvering through an area, or footprint, of a workcell. The initial plan can include moving the robot from a starting point to an end point to perform a task.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition…”), the method comprising:
receiving data representing a motion specification for performing a task by a robot in an environment, wherein the motion specification specifies a goal and one or more constraints associated with the goal for accomplishing the task (See at least Para [0013] “FIGS. 3A and 3B illustrate generating robot motion paths within a footprint.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”, Para [0115] “At a next-highest level, the software stack can include joint position controllers. A joint position controller can receive goal parameters and dynamically compute commands required to achieve the goal parameters. For example, a joint position controller can receive a position goal and can compute a set point for achieve the goal.”, Fig 1, Para [0017] “FIG. 1 is a diagram that illustrates an example system 100. The system 100 is an example of a system that can implement the online robotic control techniques described in this specification.”);
determining, using a first planner module, an initial motion plan for the robot based on the motion specification, wherein the initial motion plan specifies a trajectory that satisfies the one or more constraints of the motion specification (See at least Fig 1 section 140, Fig 2 section 210, Para [0038] FIG. 2 is a flowchart of an example process 200 for online path planning within a footprint. Briefly, the process 200 includes receiving an initial plan defining an initial path and a footprint space (210)…”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”);
initiating execution of the initial motion plan by the robot (See at least Para [0036] “The online motion planner 150 can also analyze and select alternative robot motion plans that may be more efficient than the initial plan. The system can receive an initial plan that was generated offline. The initial plan can include moving the robot from a starting point to an end point.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition…”);
monitoring, using one or more sensors, sensor data for detecting a first change in the environment (See at least Para [0041] “The process 200 includes determining that the initial plan requires modification (230). Specifically, the process 200 includes determining, from the sensor input, that the initial plan requires modification to complete the particular task. For example, based on the sensor input, the online execution system 110 may determine that one or more objectives is positioned in a location that is different from an expected objective location specified in the initial plan. In another example, based on the sensor input, the online execution system 110 may determine that an obstacle lies on the initial path defined by the initial plan.”) that corresponds with a first kinematic state of the robot provided by the initial motion plan (See at least Para [0009] “…The process can enable a robot to travel from the starting point to the end point within a time duration based on the kinematic parameters of the individual robot…”);
generating, using a second planner module, a first updated motion plan for the robot based on the first change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0042] “The process 200 includes evaluating alternative paths (240). Evaluating alternative paths includes evaluating a plurality of alternative paths, each alternative path having a respective plurality of alternative waypoints. Evaluating alternative paths includes rejecting one or more alternative paths having any alternative waypoints that are outside the footprint space defined by the initial plan. In some examples, evaluating the plurality of alternative paths is performed online. Evaluating the plurality of alternative paths can include generating a plurality of alternative paths. Generating the plurality of alternative paths can include performing respective modifications to one or more waypoints of the initial plan. For example, using the initial path as a starting point, the process 200 can include sampling alternative waypoints and examining whether the alternative waypoints are outside the footprint space defined by the initial plan. The process 200 can reject any paths that include waypoints that are outside the footprint space.”); …
executing the first updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”).
However, Gaschler does not explicitly spell out …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies
Eberst teaches …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated (See at least Page 12 Para 2 “the state (position and speed) of each axis is updated for each path point i until the time of the next path point i+1”), wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated (See at least Page 8 Para 4 “"Bad" results (with a strong need for optimization in the next stage) are accepted before the plan for a state is actually discarded, whereas in the case of the workpiece movement to be taken into account the slat can be set to be significantly higher (even if only one state remains at the end). The difference arises because (1) in the case of parameter variations to be taken into account, a plan will usually never be unmodified "OK" for all states, (2) in the next stage a plurality of plans (e.g. for each defined group of one) can also be generated…”, Page 12 Para 2 “From the tool paths, the desired position and desired speed for a desired point in time be ¬ are calculated via the inverse kinematics for all planned path points for each robot axis…”);
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies (See at least Page 9 Para 3 “…the initial plan can be adjusted in a ¬ different manner. For example, the sequence of rows, as well as the associated starting time of the lanes, and the starting time (or the starting time, respectively. The robot base and workpiece) of the execution of the plan can be changed, the speed of the tool along the paths can be adjusted ¬ the position of the paths on the workpiece surface can be changed (within predetermined limits)…”, Page 11 Para 3 “A new or modified output plan must then be designed and/or the movement of the robot base adjusted,…”, Page 28 Para 2 “… adapting the tool paths to limited acceleration and velocity of the individual axes by modifying the path points”, Page 21 Para 8 “…With this advantageous realization ¬ errors in the planning of the robot motion ¬ yaw (in particular errors in the model of the robot dynamics and the control) are compensated and the robot velocity ¬ automatically adjusts to the conveying velocity ¬ velocity, up to a full stop or even a backward movement.”, Page 11 Para 2 “Starting times are defined as follows: By varying the rows ¬ sequence and starting points in time of the tool paths (=machine axes ¬ nen), optionally also their execution direction, arrangements (states) are sought in which the movement curve of the workpiece (diagonally running straight line in FIG. 3 ) intersects the vertical ¬lines of the individual path points (represent the offset, which is believed to be ¬ ) of all paths. The maximum and mi ¬ maximum offset, in which the movement curve of the workpiece just still intersects the perpendicular lines (theoretically possible offset values for the respective path point) of all path points of a path, also defines a time window (or transformation window) for the respective path.”, Page 13 Para 5 “…In the described advantageous realization of the division of the
program into two with dense discretized paths, the next position values can also be recomputed/interpolated…”); and …
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective
filing date of the claimed invention to combine the teachings of Gaschler with the teachings of Eberst and include the feature of blending the first updated motion plan with the initial motion plan in accordance with a current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, determining discrepancies between the initial motion plan and the first updated motion plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated, and adjusting next joint positions and velocities of a next kinematic state of the robot provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies, thereby reduce task completion duration, increase efficiency, reduce error rates, etc. based on dynamically adjusting upcoming robotic actions according to real-world conditions or dynamic changes and improve the result with an optimization (See at least Para 2 “…By the group ¬ made in the preceding rapid test, it is often possible to improve the result with an optimization (i.e. with an optimized plan)…”).
Regarding Claim 2, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, further comprising:
monitoring, using the one or more sensors, sensor data for detecting a second change in the environment (See at least Para [0032] “…When the robot 170 is online, the sensor 171 of the robot 170 may detect the actual location of the objective. The sensor 171 can send sensor input to the robot interface subsystem 160, which can send the online observation 145 of the actual objective location to the online execution system 110.”, Para [0034], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”);
generating, using the second planner module, a second updated motion plan for the robot based on the second change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0067] “…generating alternative paths including modifications to one or more waypoints (420)…”, Para [0069], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”); and
executing the second updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”, Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”).
Regarding Claim 3, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, wherein the first planner module is an offline planner module or an online planner, and the second planner module is an online planner module (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks.”, Para [0029] “…The system can receive an initial plan that was generated offline…”, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”).
Regarding Claim 5, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, wherein initiating execution of the initial motion plan by the robot comprises:
transmitting data representing the initial motion plan from the first planner module to a plan executor module (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks. In this specification, a schedule is data that assigns each task to at least one robot…”);
generating data representing a set of robotic commands by the plan executor module (See at
least Para [0050] “FIG. 3A shows an example initial path 304a of the initial plan. The initial plan can be generated offline. For example, the initial plan can be generated by the offline planner 120. The initial plan defines a space of the footprint 302 and the initial path 304a. The initial path 304a is part of an initial plan for performing a particular task. To complete the task, the robot needs to travel from the waypoint 312a to an objective 330. The offline planner 120 can generate the initial path 304a to guide the robot to the objective 330 at an expected location corresponding with waypoint 318a…”);
transmitting data representing the set of robotic commands from the plan executor module to a
robot controller module (See at least Para [0050] “FIG. 3A shows an example initial path 304a of the initial plan. The initial plan can be generated offline. For example, the initial plan can be generated by the offline planner 120. The initial plan defines a space of the footprint 302 and the initial path 304a. The initial path 304a is part of an initial plan for performing a particular task. To complete the task, the robot needs to travel from the waypoint 312a to an objective 330. The offline planner 120 can generate the initial path 304a to guide the robot to the objective 330 at an expected location corresponding with waypoint 318a…”); and
executing the set of robotic commands by the robot controller module such that the robot is caused to operate according to the initial motion plan (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks. In this specification, a schedule is data that assigns each task to at least one robot. A schedule also specifies, for each robot, a sequence of actions to be performed by the robot. A schedule also includes dependency information, which specifies which actions must not commence until another action is finished. A schedule can specify start times for actions, end times for actions, or both.”).
Regarding Claim 6, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, wherein blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises:
transmitting data representing the first updated motion plan from the second planner module to a plan executor module (See at least Fig 1, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”);
blending, by the plan executor module, the first updated motion plan with the initial motion plan (See at least Para [0095] “... The online motion planner 150 may plan instead with blending parameters of the waypoints. Blending parameters control the smoothing interpolation across subsequent path segments.”, Para [0096] “To plan with blending parameters, the path simulator 130 can query the robot interface subsystem 160 to simulate and estimate a duration of several segments of a motion path, and a precise shape of the motion path, for a choice of blending parameters. Blending across subsequent motion path segments can introduce a deviation from the motion path, but can reduce the time duration required to traverse the motion path.”); and
generating data, by the plan executor module, representing a set of robotic commands that, when executed, cause the robot to operate according to the first updated motion plan in accordance with the current kinematic state of the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”).
Regarding Claim 7, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, wherein the motion specification further includes a sequence of motion segment specifications, each motion segment specification defining a sub-goal for achieving the goal and respective constraints associated with the sub-goal (See at least Para [0117] “These functionalities afforded by the software stack thus provide wide flexibility for control directives to be easily expressed as goal states in a way that meshes naturally with the higher-level planning techniques described above. In other words, when the planning process uses a process definition graph to generate concrete actions to be taken, the actions need not be specified in low-level commands for individual robotic components. Rather, they can be expressed as high-level goals that are accepted by the software stack that get translated through the various levels until finally becoming low-level commands…”, Para [0097] “Optionally, the path simulator 130 may evaluate marginal duration changes of all motion path segments with respect to blending and velocity parameters. The path simulator 130 can then report to the online motion planner 150 a number of candidate blending and velocity parameter changes, and respective estimated time duration reductions.”).
Regarding Claim 8, modified Gaschler teaches all the elements of claim 1. Gaschler further teaches the method of claim 1, wherein the motion specification can specify one or more of a conjunction constraint, a disjunction constraint, a geometric constraint, or a dynamic constraint (See at least Para [0048] “In some examples, the footprint 302 can be defined by spatial representations. For example, the footprint 302 can be defined by a shape of a specified size, centered at specified coordinates. In some examples, the footprint can be defined by a swept volume with an offset distance in each direction. In some examples, a footprint can be a combination of geometric meshes or swept volumes of a geometric meshes swept along a path…”).
Regarding Claim 9, Gaschler teaches a system comprising one or more computers and one or more storage devices storing instructions that when executed by one or more computers cause the one or more computers to perform respective operations (See at least Para [0018] “The system 100 includes a number of functional components, including an online execution system 110 and a robot interface subsystem 160. Each of these components can be implemented as computer programs installed on one or more computers in one or more locations that are coupled to each other through any appropriate communications network, e.g., an intranet or the Internet, or combination of networks.”, Para [0118], [0119], [0120], [0121]), the operations comprising:
receiving data representing a motion specification for performing a task by a robot in an environment, wherein the motion specification specifies a goal and one or more constraints associated with the goal for accomplishing the task (See at least Para [0013] “FIGS. 3A and 3B illustrate generating robot motion paths within a footprint.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”, Para [0115] “At a next-highest level, the software stack can include joint position controllers. A joint position controller can receive goal parameters and dynamically compute commands required to achieve the goal parameters. For example, a joint position controller can receive a position goal and can compute a set point for achieve the goal.”, Fig 1, Para [0017] “FIG. 1 is a diagram that illustrates an example system 100. The system 100 is an example of a system that can implement the online robotic control techniques described in this specification.”);
determining, using a first planner module, an initial motion plan for the robot based on the motion specification, wherein the initial motion plan specifies a trajectory that satisfies the one or more constraints of the motion specification (See at least Fig 1 section 140, Fig 2 section 210, Para [0038] FIG. 2 is a flowchart of an example process 200 for online path planning within a footprint. Briefly, the process 200 includes receiving an initial plan defining an initial path and a footprint space (210)…”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”);
initiating execution of the initial motion plan by the robot (See at least Para [0036] “The online motion planner 150 can also analyze and select alternative robot motion plans that may be more efficient than the initial plan. The system can receive an initial plan that was generated offline. The initial plan can include moving the robot from a starting point to an end point.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition…”);
monitoring, using one or more sensors, sensor data for detecting a first change in the environment (See at least Para [0041] “The process 200 includes determining that the initial plan requires modification (230). Specifically, the process 200 includes determining, from the sensor input, that the initial plan requires modification to complete the particular task. For example, based on the sensor input, the online execution system 110 may determine that one or more objectives is positioned in a location that is different from an expected objective location specified in the initial plan. In another example, based on the sensor input, the online execution system 110 may determine that an obstacle lies on the initial path defined by the initial plan.”), that corresponds with a first
kinematic state of the robot provided by the initial motion plan (See at least Para [0009] “…The process can enable a robot to travel from the starting point to the end point within a time duration based on the kinematic parameters of the individual robot…”);
generating, using a second planner module, a first updated motion plan for the robot based on the first change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0042] “The process 200 includes evaluating alternative paths (240). Evaluating alternative paths includes evaluating a plurality of alternative paths, each alternative path having a respective plurality of alternative waypoints. Evaluating alternative paths includes rejecting one or more alternative paths having any alternative waypoints that are outside the footprint space defined by the initial plan. In some examples, evaluating the plurality of alternative paths is performed online. Evaluating the plurality of alternative paths can include generating a plurality of alternative paths. Generating the plurality of alternative paths can include performing respective modifications to one or more waypoints of the initial plan. For example, using the initial path as a starting point, the process 200 can include sampling alternative waypoints and examining whether the alternative waypoints are outside the footprint space defined by the initial plan. The process 200 can reject any paths that include waypoints that are outside the footprint space.”); …
executing the first updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”).
However, Gaschler does not explicitly spell out …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies…
Eberst teaches …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated (See at least Page 12 Para 2 “the state (position and speed) of each axis is updated for each path point i until the time of the next path point i+1”), wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated (See at least Page 8 Para 4 “"Bad" results (with a strong need for optimization in the next stage) are accepted before the plan for a state is actually discarded, whereas in the case of the workpiece movement to be taken into account the slat can be set to be significantly higher (even if only one state remains at the end). The difference arises because (1) in the case of parameter variations to be taken into account, a plan will usually never be unmodified "OK" for all states, (2) in the next stage a plurality of plans (e.g. for each defined group of one) can also be generated…”, Page 12 Para 2 “From the tool paths, the desired position and desired speed for a desired point in time be ¬ are calculated via the inverse kinematics for all planned path points for each robot axis…”);
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies (See at least Page 9 Para 3 “…the initial plan can be adjusted in a ¬ different manner. For example, the sequence of rows, as well as the associated starting time of the lanes, and the starting time (or the starting time, respectively. The robot base and workpiece) of the execution of the plan can be changed, the speed of the tool along the paths can be adjusted ¬ the position of the paths on the workpiece surface can be changed (within predetermined limits)…”, Page 11 Para 3 “A new or modified output plan must then be designed and/or the movement of the robot base adjusted,…”, Page 28 Para 2 “… adapting the tool paths to limited acceleration and velocity of the individual axes by modifying the path points”, Page 21 Para 8 “…With this advantageous realization ¬ errors in the planning of the robot motion ¬ yaw (in particular errors in the model of the robot dynamics and the control) are compensated and the robot velocity ¬ automatically adjusts to the conveying velocity ¬ velocity, up to a full stop or even a backward movement.”, Page 11 Para 2 “Starting times are defined as follows: By varying the rows ¬ sequence and starting points in time of the tool paths (=machine axes ¬ nen), optionally also their execution direction, arrangements (states) are sought in which the movement curve of the workpiece (diagonally running straight line in FIG. 3 ) intersects the vertical ¬lines of the individual path points (represent the offset, which is believed to be ¬ ) of all paths. The maximum and mi ¬ maximum offset, in which the movement curve of the workpiece just still intersects the perpendicular lines (theoretically possible offset values for the respective path point) of all path points of a path, also defines a time window (or transformation window) for the respective path.”, Page 13 Para 5 “…In the described advantageous realization of the division of the
program into two with dense discretized paths, the next position values can also be recomputed/interpolated…”); and …
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective
filing date of the claimed invention to combine the teachings of Gaschler with the teachings of Eberst and include the feature of blending the first updated motion plan with the initial motion plan in accordance with a current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, determining discrepancies between the initial motion plan and the first updated motion plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated, and adjusting next joint positions and velocities of a next kinematic state of the robot provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies, thereby reduce task completion duration, increase efficiency, reduce error rates, etc. based on dynamically adjusting upcoming robotic actions according to real-world conditions or dynamic changes and improve the result with an optimization (See at least Para 2 “…By the group ¬ made in the preceding rapid test, it is often possible to improve the result with an optimization (i.e. with an optimized plan)…”).
Regarding Claim 10, modified Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein the operations further comprise:
monitoring, using the one or more sensors, sensor data for detecting a second change in the environment (See at least Para [0032] “…When the robot 170 is online, the sensor 171 of the robot 170 may detect the actual location of the objective. The sensor 171 can send sensor input to the robot interface subsystem 160, which can send the online observation 145 of the actual objective location to the online execution system 110.”, Para [0034], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”);
generating, using the second planner module, a second updated motion plan for the robot based on the second change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0067] “…generating alternative paths including modifications to one or more waypoints (420)…”, Para [0069], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”); and
executing the second updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”, Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”).
Regarding Claim 11, modified Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein the first planner module is an offline planner module or an online planner, and the second planner module is an online planner module (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks.”, Para [0029] “…The system can receive an initial plan that was generated offline…”, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”).
Regarding Claim 13, modified Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein initiating execution of the initial motion plan by the robot comprises:
transmitting data representing the initial motion plan from the first planner module to a plan executor module (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks. In this specification, a schedule is data that assigns each task to at least one robot…”);
generating data representing a set of robotic commands by the plan executor module (See at least Para [0050] “FIG. 3A shows an example initial path 304a of the initial plan. The initial plan can be generated offline. For example, the initial plan can be generated by the offline planner 120. The initial plan defines a space of the footprint 302 and the initial path 304a. The initial path 304a is part of an initial plan for performing a particular task. To complete the task, the robot needs to travel from the waypoint 312a to an objective 330. The offline planner 120 can generate the initial path 304a to guide the robot to the objective 330 at an expected location corresponding with waypoint 318a…”);
transmitting data representing the set of robotic commands from the plan executor module to a robot controller module (See at least Para [0050] “FIG. 3A shows an example initial path 304a of the initial plan. The initial plan can be generated offline. For example, the initial plan can be generated by the offline planner 120. The initial plan defines a space of the footprint 302 and the initial path 304a. The initial path 304a is part of an initial plan for performing a particular task. To complete the task, the robot needs to travel from the waypoint 312a to an objective 330. The offline planner 120 can generate the initial path 304a to guide the robot to the objective 330 at an expected location corresponding with waypoint 318a…”); and
executing the set of robotic commands by the robot controller module such that the robot is caused to operate according to the initial motion plan (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks. In this specification, a schedule is data that assigns each task to at least one robot. A schedule also specifies, for each robot, a sequence of actions to be performed by the robot. A schedule also includes dependency information, which specifies which actions must not commence until another action is finished. A schedule can specify start times for actions, end times for actions, or both.”).
Regarding Claim 14, Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein … comprises:
transmitting data representing the first updated motion plan from the second planner module to a plan executor module (See at least Fig 1, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”);
blending, by the plan executor module, the first updated motion plan with the initial motion plan or a previous motion plan (See at least Para [0095] “... The online motion planner 150 may plan instead with blending parameters of the waypoints. Blending parameters control the smoothing interpolation across subsequent path segments.”, Para [0096] “To plan with blending parameters, the path simulator 130 can query the robot interface subsystem 160 to simulate and estimate a duration of several segments of a motion path, and a precise shape of the motion path, for a choice of blending parameters. Blending across subsequent motion path segments can introduce a deviation from the motion path, but can reduce the time duration required to traverse the motion path.”); and
generating data, by the plan executor module, representing a set of robotic commands that, when executed, cause the robot to operate according to the first updated motion plan in accordance with the current kinematic state of the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”).
However, Gaschler does not explicitly spell out … blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises: …
in accordance with the blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises
Eberst teaches … blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises: …
in accordance with the blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises (See at least Page 8 Para 4 “"Bad" results (with a strong need for optimization in the next stage) are accepted before the plan for a state is actually discarded, whereas in the case of the workpiece movement to be taken into account the slat can be set to be significantly higher (even if only one state remains at the end). The difference arises because (1) in the case of parameter variations to be taken into account, a plan will usually never be unmodified "OK" for all states, (2) in the next stage a plurality of plans (e.g. for each defined group of one) can also be generated…”, Page 12 Para 2 “From the tool paths, the desired position and desired speed for a desired point in time be ¬ are calculated via the inverse kinematics for all planned path points for each robot axis…”): …
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Gaschler with the teachings of Eberst and include the feature of the blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises, thereby reduce task completion duration, increase efficiency, reduce error rates, etc. based on dynamically adjusting upcoming robotic actions according to real-world conditions or dynamic changes (See at least Para 2 “…By the group ¬ made in the preceding rapid test, it is often possible to improve the result with an optimization (i.e. with an optimized plan)…”)
Regarding Claim 15, modified Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein the motion specification further includes a sequence of motion segment specifications, each motion segment specification defining a sub-goal for achieving the goal and respective constraints associated with the sub-goal (See at least Para [0117] “These functionalities afforded by the software stack thus provide wide flexibility for control directives to be easily expressed as goal states in a way that meshes naturally with the higher-level planning techniques described above. In other words, when the planning process uses a process definition graph to generate concrete actions to be taken, the actions need not be specified in low-level commands for individual robotic components. Rather, they can be expressed as high-level goals that are accepted by the software stack that get translated through the various levels until finally becoming low-level commands…”, Para [0097] “Optionally, the path simulator 130 may evaluate marginal duration changes of all motion path segments with respect to blending and velocity parameters. The path simulator 130 can then report to the online motion planner 150 a number of candidate blending and velocity parameter changes, and respective estimated time duration reductions.”).
Regarding Claim 16, modified Gaschler teaches all the elements of claim 9. Gaschler further teaches the system of claim 9, wherein the motion specification can specify one or more of a conjunction constraint, a disjunction constraint, a geometric constraint, or a dynamic constraint (See at least Para [0048] “In some examples, the footprint 302 can be defined by spatial representations. For example, the footprint 302 can be defined by a shape of a specified size, centered at specified coordinates. In some examples, the footprint can be defined by a swept volume with an offset distance in each direction. In some examples, a footprint can be a combination of geometric meshes or swept volumes of a geometric meshes swept along a path…”).
Regarding Claim 17, Gaschler teaches one or more non-transitory computer-readable storage media storing instructions that when executed by one or more computers cause the one or more computers to perform respective operations (See at least Para [0118] “Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non-transitory storage medium for execution by, or to control the operation of, data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.”, Para [0124], Para [0145], Para [0146]), the respective operations comprising:
receiving data representing a motion specification for performing a task by a robot in an environment, wherein the motion specification specifies a goal and one or more constraints associated with the goal for accomplishing the task (See at least Para [0013] “FIGS. 3A and 3B illustrate generating robot motion paths within a footprint.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”, Para [0115] “At a next-highest level, the software stack can include joint position controllers. A joint position controller can receive goal parameters and dynamically compute commands required to achieve the goal parameters. For example, a joint position controller can receive a position goal and can compute a set point for achieve the goal.”, Fig 1, Para [0017] “FIG. 1 is a diagram that illustrates an example system 100. The system 100 is an example of a system that can implement the online robotic control techniques described in this specification.”);
determining, using a first planner module, an initial motion plan for the robot based on the motion specification, wherein the initial motion plan specifies a trajectory that satisfies the one or more constraints of the motion specification (See at least Fig 1 section 140, Fig 2 section 210, Para [0038] FIG. 2 is a flowchart of an example process 200 for online path planning within a footprint. Briefly, the process 200 includes receiving an initial plan defining an initial path and a footprint space (210)…”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition. Motion plans can be fully constrained, meaning that all values for all controllable degrees of freedom for the robot are represented explicitly or implicitly…”);
initiating execution of the initial motion plan by the robot (See at least Para [0036] “The online motion planner 150 can also analyze and select alternative robot motion plans that may be more efficient than the initial plan. The system can receive an initial plan that was generated offline. The initial plan can include moving the robot from a starting point to an end point.”, Para [0101] “In this specification, a motion plan is a data structure that provides information for executing an action, which can be a task, a cluster of tasks, or a transition…”);
monitoring, using one or more sensors, sensor data for detecting a first change in the environment (See at least Para [0041] “The process 200 includes determining that the initial plan requires modification (230). Specifically, the process 200 includes determining, from the sensor input, that the initial plan requires modification to complete the particular task. For example, based on the sensor input, the online execution system 110 may determine that one or more objectives is positioned in a location that is different from an expected objective location specified in the initial plan. In another example, based on the sensor input, the online execution system 110 may determine that an obstacle lies on the initial path defined by the initial plan.”), that corresponds with a first kinematic state of the robot provided by the initial motion plan (See at least Para [0009] “…The process can enable a robot to travel from the starting point to the end point within a time duration based on the kinematic parameters of the individual robot…”);
generating, using a second planner module, a first updated motion plan for the robot based on the first change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0042] “The process 200 includes evaluating alternative paths (240). Evaluating alternative paths includes evaluating a plurality of alternative paths, each alternative path having a respective plurality of alternative waypoints. Evaluating alternative paths includes rejecting one or more alternative paths having any alternative waypoints that are outside the footprint space defined by the initial plan. In some examples, evaluating the plurality of alternative paths is performed online. Evaluating the plurality of alternative paths can include generating a plurality of alternative paths. Generating the plurality of alternative paths can include performing respective modifications to one or more waypoints of the initial plan. For example, using the initial path as a starting point, the process 200 can include sampling alternative waypoints and examining whether the alternative waypoints are outside the footprint space defined by the initial plan. The process 200 can reject any paths that include waypoints that are outside the footprint space.”); …
executing the first updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”).
However, Gaschler does not explicitly spell out …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies
Eberst teaches …
blending the first updated motion plan with the initial motion plan in accordance with a current
kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated (See at least Page 12 Para 2 “the state (position and speed) of each axis is updated for each path point i until the time of the next path point i+1”), wherein blending comprises:
determining discrepancies between the initial motion plan and the first updated motion
plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated (See at least Page 8 Para 4 “"Bad" results (with a strong need for optimization in the next stage) are accepted before the plan for a state is actually discarded, whereas in the case of the workpiece movement to be taken into account the slat can be set to be significantly higher (even if only one state remains at the end). The difference arises because (1) in the case of parameter variations to be taken into account, a plan will usually never be unmodified "OK" for all states, (2) in the next stage a plurality of plans (e.g. for each defined group of one) can also be generated…”, Page 12 Para 2 “From the tool paths, the desired position and desired speed for a desired point in time be ¬ are calculated via the inverse kinematics for all planned path points for each robot axis…”);
adjusting next joint positions and velocities of a next kinematic state of the robot
provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies (See at least Page 9 Para 3 “…the initial plan can be adjusted in a ¬ different manner. For example, the sequence of rows, as well as the associated starting time of the lanes, and the starting time (or the starting time, respectively. The robot base and workpiece) of the execution of the plan can be changed, the speed of the tool along the paths can be adjusted ¬ the position of the paths on the workpiece surface can be changed (within predetermined limits)…”, Page 11 Para 3 “A new or modified output plan must then be designed and/or the movement of the robot base adjusted,…”, Page 28 Para 2 “… adapting the tool paths to limited acceleration and velocity of the individual axes by modifying the path points”, Page 21 Para 8 “…With this advantageous realization ¬ errors in the planning of the robot motion ¬ yaw (in particular errors in the model of the robot dynamics and the control) are compensated and the robot velocity ¬ automatically adjusts to the conveying velocity ¬ velocity, up to a full stop or even a backward movement.”, Page 11 Para 2 “Starting times are defined as follows: By varying the rows ¬ sequence and starting points in time of the tool paths (=machine axes ¬ nen), optionally also their execution direction, arrangements (states) are sought in which the movement curve of the workpiece (diagonally running straight line in FIG. 3 ) intersects the vertical ¬lines of the individual path points (represent the offset, which is believed to be ¬ ) of all paths. The maximum and mi ¬ maximum offset, in which the movement curve of the workpiece just still intersects the perpendicular lines (theoretically possible offset values for the respective path point) of all path points of a path, also defines a time window (or transformation window) for the respective path.”, Page 13 Para 5 “…In the described advantageous realization of the division of the
program into two with dense discretized paths, the next position values can also be recomputed/interpolated…”); and …
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective
filing date of the claimed invention to combine the teachings of Gaschler with the teachings of Eberst and include the feature of blending the first updated motion plan with the initial motion plan in accordance with a current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated, determining discrepancies between the initial motion plan and the first updated motion plan in accordance with a state change of the robot from the first kinematic state to the current kinematic state that arose while the first updated motion plan was being generated, and adjusting next joint positions and velocities of a next kinematic state of the robot provided by the first updated motion plan to intersect current joint positions and velocities of the current kinematic state of the robot provided by the initial motion plan to reconcile the discrepancies, thereby reduce task completion duration, increase efficiency, reduce error rates, etc. based on dynamically adjusting upcoming robotic actions according to real-world conditions or dynamic changes and improve the result with an optimization (See at least Para 2 “…By the group ¬ made in the preceding rapid test, it is often possible to improve the result with an optimization (i.e. with an optimized plan)…”).
Regarding Claim 18, Gaschler teaches all the elements of claim 17. Gaschler further teaches the one or more non-transitory computer-readable storage media of claim 17, wherein the operations further comprise:
monitoring, using the one or more sensors, sensor data for detecting a second change in the environment (See at least Para [0032] “…When the robot 170 is online, the sensor 171 of the robot 170 may detect the actual location of the objective. The sensor 171 can send sensor input to the robot interface subsystem 160, which can send the online observation 145 of the actual objective location to the online execution system 110.”, Para [0034], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”);
generating, using the second planner module, a second updated motion plan for the robot based on the second change in the environment that satisfies the one or more constraints specified in the motion specification (See at least Para [0067] “…generating alternative paths including modifications to one or more waypoints (420)…”, Para [0069], Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”); and
executing the second updated motion plan by the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”, Para [0045] “FIGS. 3A and 3B illustrate generating alternative robot motion paths within a footprint…”, Para [0091] “…The path simulator 130 can repeat the computation with another set of waypoints, e.g., the waypoints 515b and 516b. The path simulator 130 can then compile the results to determine a total time duration for the alternative path 504b.”).
Regarding Claim 19, Gaschler teaches all the elements of claim 17. Gaschler further teaches the one or more non-transitory computer-readable storage media of claim 17, wherein the first planner module is an offline planner module or an online planner, and the second planner module is an online planner module (See at least Para [0023] “The system 100 can also optionally include an offline planner 120. The overall goal of the offline planner 120 is to generate, from a definition of one or more tasks to be performed, a schedule that will be executed by the robots 170a-n to accomplish the tasks.”, Para [0029] “…The system can receive an initial plan that was generated offline…”, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”).
Regarding Claim 20, Gaschler teaches all the elements of claim 17. Gaschler further teaches the one or more non-transitory computer-readable storage media of claim 17, wherein blending the first updated motion plan with the initial motion plan in accordance with the current kinematic state of the robot to reconcile discrepancies between the initial motion plan and the first updated motion plan that arose while the first updated motion plan was being generated further comprises:
transmitting data representing the first updated motion plan from the second planner module to a plan executor module (See at least Fig 1, Para [0028] “The online execution system 110 includes an online motion planner 150. The online motion planner 150 can adjust the robot motion plans while the robots are online. The online motion planner 150 can adjust the robot motion plans based on constraints and input from the footprint constrainer 140 and the path simulator 130.”);
blending, by the plan executor module, the first updated motion plan with the initial motion plan (See at least Para [0095] “... The online motion planner 150 may plan instead with blending parameters of the waypoints. Blending parameters control the smoothing interpolation across subsequent path segments.”, Para [0096] “To plan with blending parameters, the path simulator 130 can query the robot interface subsystem 160 to simulate and estimate a duration of several segments of a motion path, and a precise shape of the motion path, for a choice of blending parameters. Blending across subsequent motion path segments can introduce a deviation from the motion path, but can reduce the time duration required to traverse the motion path.”); and
generating data, by the plan executor module, representing a set of robotic commands that, when executed, cause the robot to operate according to the first updated motion plan in accordance with the current kinematic state of the robot (See at least Para [0019] “In general, the online execution system 110 provides commands 155 to be executed by the robot interface subsystem 160, which drives one or more robots, e.g., robots 170a-n, in a workcell 165. In order to compute the commands 155, the online execution system 110 consumes status messages 135 generated by the robots 170a-n and online observations 145 made by one or more sensors 171a-n making observations within the workcell 165…”, Para [0026] “Thus, in operation, the online execution system 110 obtains a workcell-specific schedule 125 and issues commands 155 to the robot interface subsystem 160 in order to actually drive the movements of the moveable components, e.g., the joints, of the robots 170a-n…”, Para [0027] “In execution, the robots 170a-n generally continually execute the commands specified explicitly or implicitly by the motion plans to perform the various tasks or transitions of the schedule. The robots can be real-time robots, which means that the robots are programmed to continually execute their commands according to a highly constrained timeline…”)…
Claim(s) 4 and 12 are rejected under 35 U.S.C. 103 as being unpatentable over Gaschler (US 2021/0200219 A1) in view of Eberst et al. (WO2013037693A2) (Hereinafter Eberst), and further in view of Nagarajan (US 9975244 B1).
Regarding Claim 4, modified Gaschler teaches all the elements of claim 1.
However, Gaschler does not explicitly spell out the method of claim 1, wherein the second
planner module is the same as the first planner module.
Nagarajan teaches the method of claim 1, wherein the second planner module is the same as
the first planner module (See at least Col 7 Lines 10-14 “In some other situations, the line segment 101B traversed by reference point 108 may be the same as that which would have been traversed had the initial trajectories not been taken over by the updated trajectories at point 109”).
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective filing date of the claimed in invention to modify the teachings of Gaschler with the teachings of Nagarajan and include the feature of both the first and the second planner module being same, thereby providing efficiency for motion/path planning with less error and less risk of damaging different robotic components (See at least Col 2 Lines 50-53 “This may lessen the risk of damage to various robotic components, may lessen the occurrence of error conditions that may cause a robot to stop traversal toward a target waypoint, etc.”).
Regarding Claim 12, modified Gaschler teaches all the elements of claim 9.
However, Gaschler does not explicitly spell out the system of claim 9, wherein the second
planner module is the same as the first planner module.
Nagarajan teaches the system of claim 9, wherein the second planner module is the same as the
first planner module (See at least Col 7 Lines 10-14 “In some other situations, the line segment 101B traversed by reference point 108 may be the same as that which would have been traversed had the initial trajectories not been taken over by the updated trajectories at point 109”).
Therefore, it would have been obvious to one of the ordinary skill in the art before the effective filing date of the claimed in invention to modify the teachings of Gaschler with the teachings of Nagarajan and include the feature of both the first and the second planner module being same, thereby providing efficiency for motion/path planning with less error and less risk of damaging different robotic components (See at least Col 2 Lines 50-53 “This may lessen the risk of damage to various robotic components, may lessen the occurrence of error conditions that may cause a robot to stop traversal toward a target waypoint, etc.”).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
Wang (CN113711155A) teaches a robot path planner comprises a command receiving module adapted to receive a motion blending command
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to SHAHEDA HOQUE whose telephone number is (571)270-5310. The examiner can normally be reached Monday-Friday 8:00 am- 5:00 pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Ramon Mercado can be reached on 571-270-5744. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/SHAHEDA HOQUE/Examiner, Art Unit 3658
/Ramon A. Mercado/Supervisory Patent Examiner, Art Unit 3658