Velocity control-based robotic system

JP2025029018AActive Publication Date: 2025-03-05DEXTERITY INC
View PDF 12 Cites 0 Cited by

Patent Information

Application Number
JP2024207837
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-09-23
Filing Date
2024-11-29
Publication Date
2025-03-05
Estimated Expiration
2041-09-22

Smart Images

  • Figure 2025029018000001_ABST
    Figure 2025029018000001_ABST
Patent Text Reader

Abstract

To disclose a velocity control-based robot system.SOLUTION: In various embodiments, sensor data is received from one or more sensors deployed in a physical space in which a robot is located. A processor is used to determine based at least in part on the sensor data an at least partly velocity-based trajectory along which to move an element comprising the robot. A command to implement the velocity-based trajectory is sent to the robot.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO OTHER APPLICATIONS

[0001] This application claims priority to U.S. Provisional Patent Application No. 63 / 082,346, filed September 23, 2020, entitled “VELOCITY CONTROL-BASED ROBOTIC SYSTEM,” which is hereby incorporated by reference for all purposes. [Background technology]

[0002] Typically, robotic arms and other robotic elements are controlled using position control: a control computer determines a target or destination location (e.g., in three-dimensional space) to which an end effector of a robotic arm or other robotic element (also called a "robot") is desired to be moved from a current / starting position. The computer and / or software configuring the robot determines how to rotate one or more joints that make up the robot (e.g., joints connecting arm segments and / or attaching a base segment to a base) to change the position of the end effector.

[0003] Typically, a robot applies higher torque to the motors driving the joints so that the joints move further away from the end position to which they are driven. As a result, the robot tends to move more quickly between points that are farther apart over longer trajectories and to accelerate more quickly at the beginning and end of the trajectory. In a typical approach, the robot control computer or other control system does not have direct control over the velocity and / or acceleration. The movement and higher velocity and / or higher acceleration may in some contexts lead to damage to an item grasped with the robot, for example, to be placed at a target position.

[0004] Existing techniques for finer-grained (even indirect) control of velocity, acceleration, and other higher-order derivatives of position in position-controlled robots involve splitting the trajectory into a series of shorter trajectories, however such an approach increases complexity and reduces throughput compared to a more continuous, single / long trajectory approach.

[0005] Furthermore, it is difficult to utilize a position-controlled robot to apply a desired amount of force (or an amount that does not exceed a desired maximum or limit) to a non-moving object, such as pushing down an object that is resting on a table. One approach might be to assign a target location along an axis along which it is desired to apply force (such as in or under a table or other surface) that is in a position where it is known that the object cannot be moved, so that the robot applies a force proportional to the distance between the current position and the intended destination. However, controlling forces using such techniques is difficult and errors can occur due to imprecise information about the current position of the robot's end effector and / or the object. [Brief description of the drawings]

[0006] Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.

[0007] [Figure 1A] FIG. 1 illustrates an embodiment of a robotic kitting system using velocity control.

[0008] [Figure 1B] FIG. 1 illustrates one embodiment of a robotic system for palletizing and / or depalletizing a variety of items using velocity-based control.

[0009] [Diagram 2] FIG. 1 illustrates one embodiment of a robotic singulation system with velocity control.

[0010] [Diagram 3] FIG. 1 is a block diagram illustrating one embodiment of a velocity control based robotic system.

[0011] [Figure 4] 1 is a flow chart illustrating one embodiment of a process for controlling a robotic system.

[0012] [Figure 5A] FIG. 1 illustrates an example of velocity control in one embodiment of a velocity control-based robotic system.

[0013] [Figure 5B] FIG. 1 illustrates an example of velocity control in one embodiment of a velocity control-based robotic system.

[0014] [Figure 5C] FIG. 1 illustrates an example of velocity control in one embodiment of a velocity control-based robotic system.

[0015] [Figure 6] FIG. 1 is a block diagram illustrating one embodiment of a velocity control based robotic system.

[0016] [Figure 7A] 1 is a flow chart illustrating one embodiment of a process for determining and imposing limits for controlling a robotic system.

[0017] [Figure 7B] 1 is a flow chart illustrating an embodiment of a process for controlling a robotic system using an attribution force field.

[0018] [Figure 8A] FIG. 1 illustrates an example of velocity control in one embodiment of a velocity control-based robotic system.

[0019] [Figure 8B] FIG. 1 illustrates an example of velocity control in one embodiment of a velocity control-based robotic system.

[0020] [Figure 8C] FIG. 13 is a diagram showing, for comparison purposes, an example of changing a target and / or a movement destination using position control in controlling a robot system.

[0021] [Figure 8D] FIG. 13 illustrates an example of changing targets and / or destinations in a robotic system using the velocity control disclosed herein.

[0022] [Figure 9A] 13 is a flow chart illustrating one embodiment of a process for redirecting to a new target and / or destination using speed control.

[0023] [Figure 9B] 1 is a flow chart illustrating one embodiment of a process for utilizing velocity control to cooperatively perform a task using two or more robots.

[0024] [Figure 10] FIG. 1 is a block diagram illustrating one embodiment of a velocity control based robotic system. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0025] The present invention may be embodied in various forms, including as a process, an apparatus, a system, a composition of matter, a computer program product embodied on a computer-readable storage medium, and / or a processor configured to execute instructions stored in and / or provided by a memory coupled to the processor. These embodiments or any other form the present invention may take may be referred to herein as techniques. In general, the order of steps of a disclosed process may be altered within the scope of the present invention. Unless otherwise noted, components such as a processor or memory described as configured to perform a task may be implemented as general components temporarily configured to perform the task at a given time, or as specific components manufactured to perform the task. As used herein, the term "processor" refers to one or more devices, circuits, and / or processing cores configured to process data, such as computer program instructions.

[0026] A detailed description of one or more embodiments of the present invention will now be given with reference to the drawings illustrating the principles of the present invention. The present invention will be described in connection with such embodiments, but is not limited to any of them. The scope of the present invention is limited only by the claims, and the present invention includes many alternatives, modifications, and equivalents. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. These details are for the purpose of example, and the present invention may be practiced according to the claims without some or all of these specific details. For simplicity, technical matters well known in the art related to the present invention have not been described in detail so as not to unnecessarily obscure the present invention.

[0027] A robotic system is disclosed that uses velocity control to manipulate a robot arm or other robot. In various embodiments, the robot control system disclosed herein controls the robot by determining and issuing commands to control the speed at which the robot moves. In some embodiments, the system disclosed herein includes a robot arm or other robot that allows the control system to more directly control the speed and / or acceleration of the robot's movement, such as by controlling the speed at which the six (or more or less) joints that make up the robot arm are actuated. In some cases, the robot may be controlled by end effector velocity or other forms of velocity control. Regardless of whether a joint, end effector, or other mechanism of the robot is controlled, the result is the same and the claims herein apply in the same manner, since only a simple transformation layer is required. In response to the velocity control command, the robot applies a torque to each joint at a level associated with the respective velocity control command received from the robot control system. For example, the robot may calculate the difference / error between the commanded velocity (e.g., for a particular joint) and the current velocity, and apply the calculated torque to reduce the difference / error. In some embodiments, the control system generates and issues commands to more directly control the torque (or current (e.g., amperes)) applied to each joint of the robot. As used herein, the term "torque" may be considered interchangeable with "current (e.g., amperes)" and references to "torque" mean "torque or current (e.g., amperes)."

[0028] In various embodiments, the robotic control systems disclosed herein use a model of the robot (e.g., a model representing the robot's elements (e.g., arm segments), geometry, functions, etc.) to determine velocity control commands or other control commands for controlling the robot's movements. For example, the model, in various embodiments, is used to determine, for each joint, a velocity command, torque command, or other command or set of commands to be provided to the robot to achieve a desired velocity, acceleration, etc. of the end effector.

[0029] In various embodiments, a robot control system simulates the motion of the robot in a workspace / environment in which the robot is (or will be) operating. The system uses the simulation and (actual and / or simulated) sensor readings (such as images or other information) from the workspace to determine one or more of the following: current position, future position, current velocity, predicted velocity, etc. of the end effector and / or item, an item to be grasped from a stream of items, or a source and / or destination location in a dynamic workspace, such as a location on a moving conveyor where an item grasped by the robot will be placed or from which the item will be grasped. Velocity control is used to move the end effector of the robot to the source / destination location, which in some embodiments may be moving. The velocity control is used to determine a vector for capturing a moving item or location and is continuously updated to drive the end effector towards and / or match the velocity of the item / location to grasp the moving item and / or place the grasped item at a moving destination location, etc. In some embodiments, the error (difference) between the desired or predicted velocity of the robot (e.g., end effector) according to a simulation and the measured or observed velocity determined based on sensor data is used to rapidly determine and issue commands in real time to adjust the velocity of the robot to match the simulation.

[0030] 1A illustrates one embodiment of a robotic kitting system using speed control. In the illustrated example, kitting system 100 includes a set of kitting machines 102, 104, and 106 arranged in a row alongside a box conveyor 108. A box assembly machine 110 assembles boxes 112, 114 and places the boxes on the conveyor 108. In various embodiments, box assembly machine 110 may be controlled by and / or in communication with other elements of kitting system 100, for example, to coordinate / synchronize box size selection and timing of assembly of boxes (e.g., boxes 112, 114) and placement on conveyor 108.

[0031] 1A , a robotic arm 116 is mounted on a carriage 118 that is configured to run along a rail or other linear guide 120 that is positioned substantially parallel alongside the conveyor 108, across from the kitting machines 102, 104, and 106. In various embodiments, a motor, belt, chain, or other motive power source is applied via a controller (not shown in FIG. 1 ) to move the carriage 118 and attached robotic arm 116 along the rail or guide 120 to facilitate automated picking of items from the kitting machines 102, 104, and 106 and placement of the items in the boxes 112, 114 as the boxes are moved along the conveyor 108.

[0032] In the depicted example, the operation of one or more of the kitting machines 102, 104, and 106, the conveyor 108, the box assembly machine 110, and the robotic arm 116 and / or carriage 118 are coordinated under the control of a control computer 122. In the depicted example, the control computer 122 communicates wirelessly with controllers (not shown in FIG. 1 ), each configured to control the operation of a corresponding element of the system 100 (e.g., the kitting machines 102, 104, and 106, the conveyor 108, the box assembly machine 110, and the robotic arm 116 and / or carriage 118). Although wireless connections are shown in FIG. 1 , in various embodiments, wired connections or a combination of wired and wireless connections may be used.

[0033] In various embodiments, control computer 122 is configured, for example, by software executing on control computer 122, to receive data related to an invoice, order, parts list, pick-up list, or other list of items to be obtained and packed together, determine a strategy / plan for accomplishing the obtaining and packing of the required items, and operate the elements of system 100 (e.g., kitting machines 102, 104, and 106, conveyor 108, box assembly machine 110, and robotic arm 116 and / or carriage 118) in a coordinated manner to fulfill the request.

[0034] For example, in some embodiments, the control computer 122 is configured to receive a list of items to be packed. The control computer 122 determines which items are associated with which of the kitting machines 102, 104, and 106 and develops a plan for retrieving and packing the items. The control computer 122 controls the box assembly machine 110 to assemble and place boxes (e.g., 112, 114) on the conveyor 108, and controls the conveyor 108 to advance the boxes to a position to receive one or more items. The control computer 122 controls the carriage 118 and / or the robotic arm 116 as needed to position the robotic arm 116 to retrieve one or more first items from an associated one of the kitting machines 102, 104, and 106. The control computer 122 may control the kitting machines 102, 104, and 106 to ensure that the required items in the required quantities are present at the pick-up zones at the ends of the kitting machines 102, 104, and 106 that are closest to the conveyor 108 and robotic arm 116. The control computer 122 controls the robotic arm 116 to pick up the items from the corresponding pick-up zones, place the items in a box (e.g., 112, 114), and then move to perform coordinated picking and packing of any additional items that need to be included in that particular kit. Once all items have been picked up and packed, the control computer 122 controls the conveyor 108 to advance the box (e.g., 112, 114) to the next stage of fulfillment (e.g., a station not shown in FIG. 1 where the box is sealed, labeled, and sent for shipping).

[0035] 1A, in the illustrated example, the system 100 includes a video camera 124 configured to capture video images of the components of the system 100. The camera 124 may be one of a number of sensors used by the control computer 122 to control the components of the system 100. For example, in the illustrated example, the video generated by the camera 124 and transmitted to the control computer 122 may be used by the control computer 122 to control the speed and / or direction of the conveyor belts that make up the kitting machines 102, 104, and 106 to ensure that a sufficient, but not excessive, number of items are available at the pickup zone and / or to position or reposition items for pick-up by the robotic arm 116. Additionally, the camera 124 and / or other cameras may be used to facilitate the robotic arm 116 picking up items and / or placing items in bins (e.g., 112, 114). In various embodiments, multiple cameras may be deployed in multiple locations, such as within the environment and on each of the elements that make up system 100, to facilitate automated (and, if necessary, human-assisted) kitting operations. In various embodiments, sensors other than cameras may be deployed, including, but not limited to, contact or limit switches, pressure sensors, weight sensors, etc.

[0036] In various embodiments, the control computer 122 is programmed to determine a plan for fulfilling the kitting request based at least in part on models of the robotic arm 116 and other elements (e.g., the kitting machines 102, 104, and 106, the conveyor 108, the box assembly machine 110, and the robotic arm 116 and / or carriage 118) that make up the system 100. Each model reflects the capabilities and limitations of each element in various embodiments. For example, the kitting machines 102, 104, and 106 are in fixed positions in this example, but each has a conveyor belt that may be capable of being moved back and forth and / or at different speeds. Additionally, the control computer 122 may use information stored in association with the initialization and / or configuration, such as, for example, which items are at which positions on which kitting machines, where each kitting machine and / or its associated pickup zone is located, to determine a plan for fulfilling the request. Additionally, the control computer 122 may use data determined at least in part based on sensor data (such as video captured by the camera 124) to develop a plan for fulfilling the request.

[0037] In various embodiments, the control computer 122 is configured to formulate and / or update or reformulate a plan for accomplishing the request using a strategy for performing the (next) task or subtask that is programmed into and / or learned by the control computer 122, and execute or attempt to execute the plan. Examples include, but are not limited to, a strategy of using the robotic arm 116 to pick up a given item based on the item's attributes (rigidity, fragility, shape, orientation, etc.). In some embodiments, the control computer 122 is programmed to attempt to execute a task (e.g., picking up an item with the robotic arm 116) using a first strategy (e.g., a preferred or best strategy), and if that fails, determine and utilize an alternative strategy, if available (e.g., a strategy of using the robotic arm 116 to nudge the item and then retry, a strategy of slightly moving the conveyors or other devices of the kitting machines (e.g., 102, 104, and 106) forward and / or backward and retry, etc.).

[0038] In the example shown in FIG. 1, the control computer 122 is connected to an on-demand teleoperator 126 operated by a human operator 128. Although in FIG. 1 the teleoperator 126 is operated by the human operator 128, in some embodiments the teleoperator 126 may be operated by a non-human operator (such as a highly skilled robot). In various embodiments, the control computer 122 is configured to invoke the on-demand teleoperation based at least in part on a determination by the control computer 122 that no strategy is available to continue / complete the kitting operation and / or its constituent tasks in a fully automated operation, such as when an item is dropped in a location that the robotic arm 116 cannot retrieve, when a predefined maximum number of attempts have been made to pick up the item without success, etc. Based on such a determination, the control computer 122 sends an alert or other communication to the on-demand remote control 126 prompting a human operator 128 to use the remote control 126 to operate one or more elements of the system 100 (e.g., one or more of the kitting machines 102, 104, and 106, the conveyor 108, the box assembly machine 110, and the robotic arm 116 and / or the carriage 118) to at least perform the task or subtask that the system 100 was unable to complete under fully automated control by the control computer 122.

[0039] In various embodiments, the control computer 122 controls the robotic arm 116 and / or the carriage 118 using velocity-based control as disclosed herein and described more fully below.

[0040] 1B illustrates one embodiment of a robotic system for palletizing and / or depalletizing a variety of items using velocity-based control. In the illustrated example, system 130 includes a robotic arm 132. In this example, robotic arm 132 is fixed, but in various alternative embodiments, robotic arm 132 may be fully or partially movable, e.g., mounted on rails, fully movable on a motor-driven chassis, etc. As shown, robotic arm 132 is used to pick random and / or heterogeneous items from a conveyor belt (or other source) 134 and stack them on a pallet or other container 136.

[0041] In the illustrated example, the robotic arm 132 is equipped with a suction-type end effector 138. The end effector 138 has a number of suction cups 140. The robotic arm 132 is used to position the suction cups 140 of the end effector 138 over the item to be picked up, as shown, and a vacuum source provides a suction force to grasp the item, lift the item off its conveyor 134, and place the item in a destination location on the bin 136.

[0042] In various embodiments, one or more of a 3D camera or other camera 142 mounted on the end effector 138 and cameras 144, 146 mounted in the space in which the robotic system 130 is deployed are used to identify items on the conveyor 134 and / or to determine a plan for grasping, picking / placing, and stacking the items on the receptacle 136. In various embodiments, additional sensors not shown (e.g., weight or force sensors embodied in and / or adjacent to the conveyor 134 and / or the robotic arm 132, force sensors in the xy plane and / or z-direction (vertical) of the suction cup 140, etc.) may be used, for example, by the system 130 to identify items on the conveyor 134 and / or other source and / or staging areas where items may be placed and / or relocated, determine their attributes, grasp, pick up, move through a determined trajectory, and / or place at a destination location on or in the receptacle 136.

[0043] 1B , in the depicted example, system 130 includes a control computer 148 configured to communicate with elements such as robotic arm 132, conveyor 134, effector 138, and sensors (such as cameras 142, 144, and 146 and / or weight, force, and / or other sensors not shown in FIG. 1B), in this example via wireless communication (although in various embodiments, one or both of wired and wireless communication). In various embodiments, control computer 148 is configured to use input from the sensors (such as cameras 142, 144, and 146 and / or weight, force, and / or other sensors not shown in FIG. 1B) to observe, identify, and determine one or more attributes of items to be loaded and / or unloaded from container 136. In various embodiments, the control computer 148 identifies the item and / or its attributes using item model data in a library stored in the control computer 148 and / or accessible to the control computer 148, for example, based on image and / or other sensor data. The control computer 148 uses the model corresponding to the item to determine and execute a plan for stacking the item, along with other items, in / on a destination (such as the container 136). In various embodiments, the item attributes and / or model are utilized to determine a strategy for grasping, moving, and placing the item at a destination location (e.g., a location where the item has been determined to be placed as part of the planning / replanning process for stacking the items in / on the container 136).

[0044] In the illustrated example, control computer 148 is connected to an "on-demand" teleoperator 152. In some embodiments, if control computer 148 is unable to continue in fully automated mode, e.g., if a strategy for grasping, moving, and placing an item cannot be determined and / or fails such that control computer 148 has no strategy for completing pick and place of the item in fully automated mode, control computer 148 instructs a human user 154 to intervene, e.g., by manipulating robotic arm 132 and / or end effector 138 with teleoperator 152 to grasp, move, and place the item.

[0045] In various embodiments, the control computer 148 controls the robotic arm 132 using velocity-based control as disclosed herein and described more fully below.

[0046] 2 is a diagram illustrating one embodiment of a robotic singulation system with velocity control. In various embodiments, the robotic systems disclosed herein may include one or more robotic arms to perform the singulation / guiding, for example, retrieving items from a chute or other supply or intake source and placing each item, one at a time, in a corresponding position on a conveyor or other output or destination structure.

[0047] In the example shown in FIG. 2, the system 200 includes a robotic arm 202 with a suction-based end effector 204. In the illustrated example, the end effector 204 is a suction-based end effector, but in various embodiments, one or more other types of end effectors may be used in the singulation systems disclosed herein, including, but not limited to, pinch-based end effectors or other types of actuated grippers. In various embodiments, the end effector may be actuated by one or more of suction, pneumatic, pneumatic, hydraulic, or other actuation. The robotic arms 202 and 204 are configured to be used to pick up parcels or other items arriving via a chute or bin 206 and place each item in a corresponding position on a partitioned conveyor 208. In this example, items are fed into the chute 206 from an intake end 210. For example, one or more human and / or robotic workers may supply items to the intake end 210 of the chute 206 either directly or via a conveyor or other electromechanical structure configured to supply items to the chute 206.

[0048] In the illustrated example, one or more of the robotic arm 202, end effector 204, and conveyor 208 are coordinately operated by a control computer 212. In various embodiments, the control computer 212 includes a vision system that is used to determine individual items and their orientation based on image data provided by image sensors (such as 3D cameras 214 and 216 in this example). The vision system generates output that is used by the robotic system to determine a strategy for grasping individual items and placing each item in a corresponding defined location (such as a partitioned portion of the partitioned conveyor 208) available for machine identification and sorting.

[0049] 2, in the illustrated example, the system 200 further comprises an on-demand teleoperated device 218 available to a human worker 220 to remotely operate one or more of the robotic arm 202, the end effector 204, and the conveyor 208. In some embodiments, the control computer 212 is configured to attempt to grasp and place an item in a fully automated mode. However, if after attempting to operate in a fully automated mode, the control computer 212 determines that no (further) strategies are available to grasp the one or more items, in various embodiments, the control computer 212 sends an alert to obtain assistance from a human operator, e.g., by a human operator 220 using the teleoperated device 218.

[0050] In various embodiments, the control computer 212 controls the robotic arm 202 using velocity-based control as disclosed herein and described more fully below.

[0051] As illustrated by the examples shown in FIGS. 1A, 1B, and 2, in many applications the world and environment around the robot may be constantly changing. For example, a conveyor belt may stop or start unexpectedly or may operate at an unexpected speed. A human in the environment may move items or disrupt the flow in an unexpected manner, or one or more robots or other devices in the environment may have to stop or slow down to ensure the safety of humans present in the environment. An object moved or otherwise manipulated by the robot may be in a cluttered pile or flow of objects, and the object may change position and / or orientation due to pick-and-placement of other objects, operation of an automated feeding system, etc.

[0052] In various embodiments, the robotic systems disclosed herein continuously process information captured using various sensors, such as encoders, cameras, gates / latches, force sensors, and fieldbus signals, in real time. The robotic system dynamically and adaptively controls the robot to follow changing constraints, new targets, continuous signal servos, other user inputs, and the like. Every movement is different and generated on the fly in real time. In various embodiments, the velocity-based control disclosed herein is used to rapidly respond to changing conditions and requirements without increasing the risk of damage to the robot, the items being manipulated by the robot, and other robots or structures in the environment in which the robot is deployed.

[0053] In various embodiments, the robotic control systems disclosed herein rapidly adapt to changing conditions, at least in part, by constantly simulating the robot and generating in real time the exact movements (e.g., robot joint positions, velocities, accelerations) that the system would like the real robot to engage in.

[0054] Figure 3 is a block diagram illustrating one embodiment of a velocity control-based robotic system. In various embodiments, the robotic control system 300 of Figure 3 is implemented, at least in part, by a control computer (such as computer 122 of Figure 1A, computer 148 of Figure 1B, and / or computer 212 of Figure 2). In the illustrated example, user input is received via a user interface 302 (e.g., a user interface module or code executing on a processor that constitutes a computer (e.g., computer 122, 148, 212) configured to present and receive user input via a graphical, text-based, configuration file-based, or other interface). In various embodiments, user interface 302 is configured to receive instructions for one or more high level objectives to be executed (such as a set of shipping invoices, manifests, or other listings of items and quantities to be assembled into respective containers or kits), as shown in the example of Figure 1A, instructions to stack a particular set of items and / or items received via a conveyance or other source or structure onto a pallet or other container, as shown in Figure 1B, and / or instructions to place items from an indicated source onto a partitioned conveyor or other destination, as shown in Figure 2. In various embodiments, inventory information and / or other information indicative of type, quantity, location, and / or other attributes of inventory or other sources of items operated by the system may be received via user interface 302.

[0055] 3, high-level goals and other input information received via user interface 302 are provided to planner 304. In various embodiments, planner 304 comprises one or more software components configured to generate a high-level plan for achieving the high-level goals based at least in part on the high-level goals received via user interface 302 and inventory information and / or other configuration and initialization information stored in inventory database 306 (or a file or other data store).

[0056] Planner 304, in this example, provides a high-level plan to control module 308 and simulation engine 310. In various embodiments, planner 304 and / or control module 308 include one or more schedulers that schedule specific robotic elements (e.g., robotic arms) to perform a series of specific tasks (e.g., picking up items A, B, and C and moving them to destination bin R, or picking up items from chute A and placing each item one-by-one in a partitioned portion of partitioned conveyor C, etc.) and / or subtasks (e.g., the subtask of picking item A) to enable the system to move toward achieving the high-level goal in fully automated operation.

[0057] In various embodiments, the control module 308 is configured to perform robotic manipulations using velocity-based control as disclosed herein. For example, to perform a task of grasping item A and moving it to destination D, in various embodiments, the control module 308 determines a trajectory that is at least partially based on velocity (e.g., to move an end effector (suction or pincer / finger type gripper) to a position to grasp item A and / or to move the end effector with item A grasped to destination D). In various embodiments, the trajectory includes a series of one or more velocity vectors (e.g., magnitude / velocity and direction in three-dimensional space) along which and / or following the end effector as it is moved. The trajectory may indicate a desired velocity (magnitude and direction) for each of a set of one or more steps or segments, and / or may indicate a desired and / or maximum acceleration and / or other higher order derivatives of position (e.g., jerk, etc.) for each segment and / or each transition between segments.

[0058] In various embodiments, the control module 308 uses a model 312 of the robot being controlled to determine a set of control commands to be sent to the robot to move the end effector (or other elements of the robot) at speeds that define the trajectory that the control module 308 has determined the end effector should be moved along. The control module 308, in various embodiments, uses images or other information generated and provided by sensors 314 to determine and execute the trajectory and rapidly respond to changes in the environment in which the robot is working (unanticipated changes in the state or condition of the items being or to be moved by the robot and / or other items in the space, the position, state, and motion of other robots in the space, the position of human workers present in the space, and the actual observed motion of the robot and / or elements that comprise the robot being controlled by the control module 308, etc.).

[0059] In various embodiments, the control module 308 sends commands to the robot on-board control subsystem 316 to execute the determined trajectory. The robot on-board control subsystem 316 then sends commands for each particular joint or other actuated element of the robot to a corresponding joint (or other) motor controller (e.g., one or more of motor controllers 318, 320, and 322). The motor controllers (e.g., 318, 320, and 322), in response to commands from the robot on-board control subsystem 316, provide levels of current associated with a desired torque to the associated controlled motors for a predetermined / commanded period of time (e.g., for a commanded period of time or until commanded to stop). In some embodiments, the robot on-board control subsystem 316 sends a set of commands or other control signals to each motor controller 318, 320, and 322 to apply a series of torques in sequence, each for a corresponding period of time, thereby rotating the joints in a coordinated manner to move the robot's end effector and / or other actuated element in space according to the determined trajectory.

[0060] In various embodiments, the simulation engine 310 continuously simulates the robot's motion using one or more of the inputs received from the planner 304, the control signals generated by the control module 308, the robot model 312, and the sensor data from the sensors 314. For example, the torque-related commands from the control module 308 and the robot model 312 may be used to simulate the resulting robot motion. Data from the sensors 314 may be used to evaluate and incorporate attributes of an item in space (such as an item being grasped by the robot) into the simulation. In various embodiments, the control module 308 compares observed velocities (e.g., of the robot's end effector or other elements) with corresponding predicted / simulated velocities generated by the simulation engine 310. If the observed velocities deviate from the predicted (simulated) velocities, corrections are determined and the control module 308 sends associated commands to the robot's on-board control subsystem 316 to implement the corrections.

[0061] In various embodiments, the sensor data generated by the sensors 314 is provided to the planner 304. In some embodiments, the planner 304 is configured to continuously monitor the sensor data 304 to determine whether to update the plan generated by the planner 304 based on conditions observed based on the sensor data. For example, if an item is dropped or does not arrive at the workspace as / at a time predicted, an updated plan may be generated that takes that information into account.

[0062] In various embodiments, the robotic system disclosed herein performs adaptive / intelligent trajectory generation, which utilizes the ability to control not only the position of the robot and / or the elements that make up the robot, but also higher order derivatives (velocity and acceleration). When attempting to accurately follow a real-time motion plan, the system uses velocity and / or acceleration control to follow the simulated robot very accurately, allowing the system to react more quickly to a changing environment. If velocity and acceleration tracking is not utilized as disclosed herein, the real robot (not a simulated robot) will not catch up to the desired path / position (e.g., determined by a simulation). If the desired position is no longer changing, the real robot can, in some embodiments, use position control (only) to eventually reach the desired position very accurately. However, if the desired position is changing, the real robot cannot effectively follow the path dynamically using position control alone, and therefore, in various embodiments, velocity and / or acceleration control is utilized. In various embodiments, tracking velocity and acceleration allows the robot to instantly know when and how to accelerate without waiting for large position errors, thus enabling accurate tracking of these higher order derivatives (i.e., velocity, acceleration, etc.).

[0063] Figure 4 is a flow chart illustrating one embodiment of a process for controlling a robotic system. In various embodiments, process 400 of Figure 4 is performed by a control computer (such as computer 122 of Figure 1A, computer 148 of Figure 1B, and / or computer 212 of Figure 2). In the illustrated example, sensor data is received in step 402 and used in step 404 to update the current / observed state (e.g., position, pose, velocity, and acceleration (if applicable)) of the robot and its associated components (such as end effectors), the position, pose, velocity, and acceleration (if applicable) of items in the workspace (such as items to be grasped and moved by the robot), the position, velocity, and acceleration (if applicable) of each of the destination receptacles (such as containers or compartments on a conveyor belt), and the position, velocity, and acceleration (if applicable) of structures or potential hazardous conditions present in the workspace (such as human workers).

[0064] At step 406, a difference is determined comparing the observed velocity of the end effector (or other element) to a corresponding predicted velocity according to a simulation (e.g., by simulation engine 310 in the example shown in FIG. 3). In various embodiments, the observed position, acceleration, jerk, etc. may be compared to the corresponding predicted value determined by the simulation. In various embodiments, the observed velocity, etc. are determined based on imagery and / or other sensor data received at step 402.

[0065] At step 408, a trajectory and / or trajectory adjustments are calculated that are determined based at least in part on the difference determined at step 406. At step 410, a set of one or more commands are determined, provided to, generated, and sent to the robot to eliminate the difference between the observed speed and the predicted speed indicated by the simulation. The process continues until completed (e.g., until all tasks are completed) (step 412).

[0066] In various embodiments, the rate control implemented and utilized in various embodiments provides one or more of the following: Rapid and adaptive changes in motion using speed control The robot may decide to instantly change direction of movement due to the movement of an object, etc. For example, a load sliding down a chute or moving along a conveyor. Using speed control, the robot quickly adapts to catch and pick a moving load or move towards a new load to be picked. In position control, rapidly changing the target from in front of the robot to behind the robot can result in sudden movements, objects falling off, adversely affecting the robot hardware, and introducing possible errors. Higher order derivative control is used in various embodiments to decelerate and steer the robot smoothly (but as fast as possible given object / robot constraints to reduce cycle time) The control system disclosed herein knows exactly how to slow down, turn and accelerate, but it would be impossible to command the robot to do this without utilizing the velocity / acceleration control disclosed herein.

[0067] A time-optimal algorithm is implemented, in various embodiments, using the rate control disclosed herein to achieve one or more of the following: The controlled deceleration and acceleration achieved using the velocity control disclosed herein is used in various embodiments to determine and implement a time-optimal approach to completing a set of high-level tasks to best achieve an overall goal. For example, when holding an object, in various embodiments, the systems disclosed herein calculate in real time the maximum acceleration / deceleration that can be applied to the object to prevent damage, loss of grip, etc. These limits may be changing direction and magnitude due to continuous readings from vacuum pressure sensors, the weight of the object, the orientation in which it is being held, vision, etc. In various embodiments, the robot and / or control system uses velocity control to precisely limit the motion and forces applied to the object. ○Position control alone has no guarantee or ability to "control" these accelerations. Therefore, if position control alone is used, the control system must be overly conservative to stay strictly within these limits, to the detriment of the robot's cycle time and speed.

[0068] Machine learning guided visual servoing (e.g., automated robotic control based on image sensors and vision systems) is implemented in various embodiments using the velocity control disclosed herein to perform one or more of the following: Much like a human, a robot can look at its environment and adjust its position, grip, and force by detecting deviations from the current and desired states (tightness for packing an object, where the hand should be on the object for grasping, etc.). Rather than directly telling the robot what to do once from a single vision snapshot, in various embodiments, the systems disclosed herein continuously adjust the control commands to the robot to ensure the success of the operation. Typically, these adjustments are "delta" based, i.e., adjustments are made to close the gap between the desired visual state (e.g., the simulated speed) and the current visual state (e.g., the observed speed). ○ Position control alone is insufficient because the system does not know how far to go in the 0th derivative (position), so velocity control is used in various embodiments to close these deltas; it only needs to move in a particular direction (1st derivative) until the error is 0

[0069] State-based trajectories are implemented in various embodiments using the velocity control disclosed herein, for example, as follows. In various embodiments, the robotic systems disclosed herein utilize velocity control to overcome challenges associated with performing tasks with robots in highly dynamic environments, such as applications that may require tracking belts, picking and placing moving objects, and reacting from disruptions due to human interaction, collision avoidance, etc. In various embodiments, the systems disclosed herein may implement state-based (or other time-varying) trajectories using rate control. State-based trajectories are movements that are guided by the state of the environment and the robot (the robot's current position, the position and velocity of the conveyor belt, etc.) rather than time. In various embodiments, the robotic systems disclosed herein operate continuously to achieve a particular state as a function of the current state. However, achieving this state is typically not as easy as setting the desired position to that state; the robot usually cannot move that fast and is subject to the constraints highlighted above (grasp quality, etc.). The robotic control system disclosed herein generates motion (e.g., of a robot) that achieves a desired state, such as by directing the robot's movement along a very specific trajectory of position, velocity, and acceleration using velocity control, which more fully embodies the definition of "motion" beyond just changes in position. In various embodiments, the above-mentioned trajectories (not just position, but e.g., trajectories in terms of velocity and / or acceleration) are followed using control of velocity (and / or other higher order derivatives) to achieve desired states and motions (e.g., motions / trajectories determined by simulation) For example, tracking a belt - the belt is moving at a certain speed and the belt slot is at a (continuously varying) position A robot, for example, needs to track and follow a moving belt slot, keep the gripper directly over the slot, and pick or place an object. Velocity control allows the robotic system disclosed herein to accurately track both the position and velocity of the belt without any position lag

[0070] Intelligent force control is implemented in various embodiments using velocity control as disclosed herein, for example, as follows. ●To control the force on a robot using position control (only), it is necessary to use position error instead of force. Force control with higher derivatives - position / acceleration allows for tighter loops on the forces, as disclosed herein, increasing the force control span and latency Because force is directly related to motor current; that is, position is a bad way to modulate current; typically, a robot control system does not know in advance how much position error is required to exert a particular force. The more higher order derivatives the system controls, the more capable it is of determining how much force the joints apply. ■1) Velocity control makes it easier for the real robot to follow the simulated robot and the forces the simulated robot wants to apply. 2) Because velocity is position invariant, any error in position control will affect force control performed using position control alone, whereas the velocity control disclosed herein allows the control system to more directly affect the forces applied by the robot regardless of position accuracy. Using position control to indirectly control forces can result in forces being applied along vectors other than the desired vector as a result of errors in the position of the robot (e.g., end effector) relative to the item and / or the environment (e.g., the table, floor, or other surface on which the item rests), whereas velocity control allows for the desired vector of motion, and therefore the direction in which the force is applied, to be directly specified / controlled regardless of position. Force control performed with velocity control allows the robot to adapt more quickly to the environment and / or to the manipulation of objects present in the environment. If something pushes back or touches a surface, velocity control reacts much faster than position control. For example, palletizing boxes as shown in Figure 1B ■ Stacking different types of boxes or other items on a pallet, for example for shipping Using speed control, the system disclosed herein can respond quickly to boxes being placed on it without crushing them, allowing the system to move faster and react more quickly.

[0071] 5A illustrates an example of velocity control in one embodiment of a velocity control based robotic system. In the example environment and system 500, for example, an end effector 502 gripping an object 504, attached to the distal / working end of a robotic arm (not shown in FIG. 5A), is tasked with placing the object 504 in a container 508. If the container 508 is stationary, the system can place the object 504 in the container 508 using position control by moving the end effector 502 and object 504 to a resting position above the container 508 (e.g., point 506 in the illustrated example) and releasing the object 504. However, as shown, in this example, the container 508 is moving to the right (as shown) at a velocity represented by vector 510. Position control can be used to move the end effector 502 and object 504 to a predicted target position above the predicted future position of the container 508, but that approach can lead to error or damage, for example, if the predicted position shifts by a sufficient amount that results in the object 504 not being properly placed in the container 508.

[0072] In various embodiments, the robotic systems disclosed herein use velocity control to more quickly and accurately place the object 504 into the moving container 508. For example, in some embodiments, the robotic control system disclosed herein observes and determines the velocity 510 of the container 508, and uses the velocity control disclosed herein to calculate and execute a trajectory to capture the container 508 and then move parallel to the container 508, allowing the object 504 to be successfully placed into the container 508 while both the object 504 and the container 508 continue to move at velocity 510.

[0073] FIG. 5B illustrates an example of velocity control in one embodiment of a velocity control based robotic system. In the example 520 shown in FIG. 5B, an end effector (not shown) at point A 522 is desired to be moved to point B 524 relative to a target (not shown) (such as a container where an object is to be placed or a container where an object is to be retrieved). As shown, the object / container associated with points B 524 and B' 526 is moving to the right (as shown) at a velocity represented by vector 528, so the target moves to a new location, point B' 526, by which time the end effector represented by point A 522 can be moved into place. As shown in the vector diagram on the right side of FIG. 5B, in various embodiments, the velocity control disclosed herein is used to determine a velocity vector 530 for capturing the target at position B' 526, resulting in a relative motion represented by vector 532. In various embodiments, that trajectory or a subsequent trajectory may then include a velocity that matches the target velocity 528, which allows the end effector to be moved parallel to the target until the object can be released or grasped, as applicable.

[0074] 5C is a diagram illustrating an example of velocity control in one embodiment of a velocity control-based robotic system. In the illustrated example, an observed velocity 542 (e.g., calculated based on sensor data) is compared to a corresponding simulated velocity 540 to determine a difference 544. In various embodiments, the velocity control system disclosed herein determines and provides a velocity control signal calculated to eliminate (reduce to zero) the difference 544 between the simulated velocity 540 and the observed velocity 542.

[0075] FIG. 6 is a block diagram illustrating one embodiment of a velocity-control based robotic system. In the illustrated example, the control system 600 comprises a control module 602 configured to perform velocity-based control, at least in part, by determining a trajectory including a velocity-based component and providing, via an interface 604, a control signal associated with a torque calculated to execute the determined trajectory. The torque-based control signal 604 in this example may be transformed by a first type of connector 606 to generate a position control signal for controlling a conventional position-controlled robot 608 to execute the determined trajectory as far as possible and / or in a manner possible. Similarly, the torque-based control signal 604 may be transformed by a second type of connector 610 to generate a velocity control signal for controlling a velocity-controlled robot 612 to more directly execute the determined trajectory. Finally, in this example, the torque-based control signal 604 may be provided to and executed directly by a torque-controlled robot 614.

[0076] In some embodiments in which a torque-controlled robot (such as torque-controlled robot 614) is controlled, the system does not need to perform a simulation as described above to determine a simulated or predicted velocity (e.g., of the end effector) because torque-control commands for the robot are directly mapped to torque commands to the torque-controlled robot 614 and the resulting velocity is more reliably determined based solely on the robot model (e.g., model 312 in FIG. 3 ).

[0077] In various embodiments, a robot control type (e.g., position, velocity, torque) agnostic architecture (such as system 600 of FIG. 6) allows a single control module 602 to be utilized, with or without connectors as needed, to control different types of robots (e.g., 608, 612, and 614).

[0078] FIG. 7A is a flow chart illustrating one embodiment of a process for determining and imposing limits for controlling a robotic system. In various embodiments, process 700 of FIG. 7A is performed by a control computer (such as computer 122 of FIG. 1A, computer 148 of FIG. 1B, and / or computer 212 of FIG. 2). In the illustrated example, sensor data received in step 702 is used to determine applicable limits in step 704 on velocity, acceleration, jerk, etc. to avoid damage. For example, image, weight, or other sensor data received in step 702 may be used to determine how heavy, fragile, or stiff an object being or to be grasped by the robot is, or other attributes that may affect how tightly the robot is or can grasp the object. The grip may be actively monitored, such as by monitoring pressure or airflow associated with a suction gripper, or by monitoring or evaluating shear forces, to detect actual or potential / imminent slippage of an item from the robot's grasp. The sensor data may be used to classify objects, for example, by type or class (based on volume, weight, etc.), and applicable limitations (e.g., to velocity or other higher derivatives of position) may be determined based on the classification. At step 706, the limitations determined at step 704 are implemented and imposed. For example, a trajectory determined to implement the velocity-based control disclosed herein may be determined by the control system taking into account the limitations determined at step 704. For example, a trajectory may be determined that ensures that the end effector always stays below the velocity limit determined at step 704. Processing continues as described above (steps 702, 704, 706) until completed (step 708) (e.g., until no more objects are being moved by the system).

[0079] FIG. 7B is a flow chart illustrating one embodiment of a process for controlling a robotic system using an imputed force field. In various embodiments, process 720 of FIG. 7B is performed by a control computer (such as computer 122 of FIG. 1A, computer 148 of FIG. 1B, and / or computer 212 of FIG. 2). In various embodiments, process 720 may be used to avoid or minimize risk of a robotic element (e.g., an end effector) colliding with a structure that constitutes or is associated with the robot (such as carriage 118 or rail 120 in the example shown in FIG. 1A), or with another structure or hazard (such as human worker 128 or box assembly machine 110 in the example shown in FIG. 1A).

[0080] In the illustrated example, at step 722, the system detects that the controlled robotic element (e.g., end effector) is in close proximity to a structure, object, device, and / or human with which contact / collision is to be avoided. At step 724, an imputed force of repulsion is calculated. In various embodiments, the calculated imputed force of repulsion is stronger the closer / closer the controlled element is to the object with which contact is to be avoided, etc. At step 726, a velocity and / or trajectory is determined that takes into account the imputed force determined at step 724. In various embodiments, the velocity-based robotic control system disclosed herein determines and executes a trajectory that takes into account the imputed force of repulsion as described above. For example, a trajectory may be determined that ensures that the imputed force of repulsion does not exceed a predefined threshold based on simulation.

[0081] 8A is a diagram illustrating an example of velocity control in one embodiment of a velocity control based robotic system. In the illustrated system and environment 800, an end effector 802 holding an object 804 is moving to the right (as shown) at a first velocity 806 (in this example, toward a first container 808). For example, upon occurrence of an observed or commanded change, the system may determine to instead place the object 804 in a second container 810 in the opposite direction of movement compared to the velocity 806.

[0082] 8B is a diagram illustrating an example of velocity control in one embodiment of a velocity-control based robotic system, in which the end effector is modified to move in a direction associated with vector 812 to move object 804 to second container 810 instead of first container 808.

[0083] 8A and 8B provide an example illustrating the difference in position control and velocity control when dynamically responding to conditions (e.g., a change in destination location) using position control and velocity control as implemented in various embodiments. In a typical position control-based robotic system, a destination change that results in a desired movement to a destination in the opposite or otherwise substantially different direction typically leads to a rapid (almost instantaneous) deceleration of the end effector followed by a rapid acceleration in the opposite direction. Furthermore, a position-controlled robot may accelerate more aggressively and / or faster the end effector is farther away from the new target / destination. A rapid, nearly instantaneous change of direction may damage an object being grasped by the robot and / or result in the robot losing its grip on the object. In contrast, velocity control as implemented in various embodiments is used to execute a trajectory that includes a more controlled transition to move in a new direction (e.g., the direction and velocity represented by vector 812 in the illustrated example).

[0084] For comparison purposes, Figure 8C shows an example of using position control to change target and / or destination in controlling a robotic system. In the illustrated example, a graph 840 shows velocity versus time for a position controlled robot changing target / destination as in the example shown in Figures 8A and 8B. As shown, the end effector moves with a velocity v1 (e.g., vector 806 shown in Figure 8A) and almost instantly at time t1 (represented by dashed line 846) changes to a velocity v2 844 that is opposite to and greater than velocity v1.

[0085] FIG. 8D illustrates an example of changing targets and / or destinations in a robotic system using velocity control as disclosed herein. In the illustrated example, a graph 860 shows velocity versus time for a velocity-controlled robot as disclosed herein that changes targets / destinations as in the example shown in FIG. 8A and FIG. 8B. As in the example shown in FIG. 8C, the end effector is initially moving at a velocity v1 862 before receiving an instruction at time t1 to change to a new target / destination. The velocity control as disclosed herein allows the trajectory to be determined and executed by velocity control to transition to a new velocity v2 864 between times t1 866 and t2 868. The time between t1 and t2 is exaggerated in FIG. 8D to illustrate that velocity control allows the change of direction to be executed without sudden movements and potentially excessive acceleration or speed, since a command that is more directly related to the end effector velocity is provided.

[0086] FIG. 9A is a flow chart illustrating one embodiment of a process for redirecting to a new target and / or destination using velocity control. In various embodiments, process 900 of FIG. 9 is performed by a control computer (such as computer 122 of FIG. 1A, computer 148 of FIG. 1B, and / or computer 212 of FIG. 2). In the illustrated example, at step 902, an instruction to change target / destination is received. At step 904, a trajectory to reach the new target / destination is calculated, including a transition that considers velocity, acceleration, etc. to a vector (velocity) to reach / capture the new target / destination. For example, the trajectory may include a first phase of gradual deceleration followed by a controlled acceleration in a direction toward the new target / destination. At step 906, the determined trajectory is executed.

[0087] FIG 9B is a flow chart illustrating one embodiment of a process that utilizes velocity control to coordinately perform a task with two or more robots. In various embodiments, process 920 of FIG 9B is performed by a control computer (such as computer 122 of FIG 1A, computer 148 of FIG 1B, and / or computer 212 of FIG 2). In the illustrated example, at step 922, the system determines to grasp an object with two or more robots. For example, a tray, pallet, or other container containing items may be determined to be grasped and moved using two robots (e.g., each robot pushes the opposite side / end, then lifts and moves the container synchronously to place the container at a destination location).

[0088] At step 924, a strategy for grasping the object with the robots is determined and executed (e.g., a strategy in which each robot applies a calculated or otherwise determined normal force to the side or structure it is assigned to engage), and at step 926, velocity control is used to synchronously move the robots each at the same velocity at all times in order to maintain all of the robots' engagement with the item (e.g., a container) as they move the item together to its destination.

[0089] In various embodiments, velocity control facilitates coordinated / synchronized movement of items using multiple robots, in part because velocity is independent of position. For example, two robots can be controlled to push in opposite directions without knowing the exact position of the object or one or both of the robots. In a position control system, even small errors in position can lead to forces being applied in the incorrect direction.

[0090] Multi-robot collaboration is, in various embodiments, performed using velocity control as follows. The improved force control achieved with the velocity control disclosed herein allows robots to collaborate more effectively with higher throughput ● Dual robots provide the ability to quickly respond to environmental / hardware abnormalities For example, when one or more robots suddenly decelerate due to a hardware failure or an obstructing obstacle, one or more other robots can instantly react by controlling their speed to immediately slow down, respond to reaction forces, or adapt in other ways, without waiting for position errors to grow. An object grasped by multiple robots (e.g., by each applying force from the opposite side) is not crushed and causes less impact to the object, thus preserving product quality.

[0091] 10 is a block diagram illustrating one embodiment of a velocity control based robotic system. In the illustrated example, a control module or subsystem 1000 includes a control stack 1002 configured to generate velocity based control signals / commands 1004, as described above. A predicted / simulated velocity V generated by simulation 1006 is used to generate a velocity error / difference 1010 (e.g., difference 544 in FIG. 5C ). シミュレート is the observed / actual velocity V determined based on data from the sensor 1008 観測In a first stage and / or based on a first clock or sampling frequency, the control stack uses the velocity error / speed difference 1010 and a velocity control layer of the control stack 1002 to determine and provide control signals 1004 to try to minimize or eliminate the error / difference 1010. In a second stage (e.g., when the target or destination is close) and / or based on a second clock or sampling frequency that is lower than the first frequency, the control stack 1002 uses the position information 1012 received from the sensor 1008 and / or determined based on imagery or other data received from the sensor 1008 to adjust and / or determine a final trajectory to reach the target or destination, such as by making a comparison, generating and providing further control signals to execute the adjusted and / or final trajectory, in a position control layer above the velocity control layer in the control stack 1002.

[0092] The techniques disclosed herein may be used, in various embodiments, to more precisely, efficiently, and flexibly / adaptively control one or more robots, allowing for safer and more efficient use of robots, even in highly dynamic environments.

[0093] Although the above embodiments have been described in some detail for ease of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and are not intended to be limiting.

Claims

1. 1. A robot system comprising: A communication interface; a processor connected to the communication interface; Equipped with The processor, receiving sensor data via the communication interface from one or more sensors deployed within a physical space in which the robot is located; determining a trajectory along which the robot component should move based at least in part on velocity based at least in part on the sensor data; The system is configured to send a command to the robot via the communication interface to execute a trajectory based on the velocity.

2. The system of claim 1 , wherein the sensor data comprises image sensor data.

3. The system of claim 1 , wherein the communication interface comprises a wireless interface.

4. The system of claim 1 , wherein the processor is further configured to simulate movement of the robot at the location.

5. 5. The system of claim 4, wherein the processor is configured to determine the at least partially velocity based trajectory by comparing observed velocities of the elements that make up the robot with corresponding velocities of the elements simulated according to the simulated movement of the robot.

6. The system of claim 1 , wherein the elements constituting the robot include an end effector.

7. 2. The system of claim 1, wherein the processor is further configured to determine a set of constraints including one or more of a velocity constraint and an acceleration constraint based at least in part on attributes of an object currently grasped by the element of the robot, and to impose the set of constraints when determining the at least partially velocity-based trajectory.

8. 2. The system of claim 1, wherein the commands include torque-based commands associated with calculated torques to be applied to joints associated with the commands to achieve the at least partially velocity-based trajectory.

9. 2. The system of claim 1, wherein the processor is further configured to determine the at least partially velocity-based trajectory based at least in part on an imputed repulsive force associated with an item or structure at the location.

10. 10. The system of claim 9, wherein the items or structures include one or more of a chassis or other structure that constitutes the robot, a rail or other structure on which one or more of the robot and the chassis are configured to ride, a second robot present at the location, and a fixed structure present at the location.

11. 2. The system of claim 1, wherein the processor is configured to receive an instruction to transition from a first task associated with a first velocity-based trajectory to a second task, and to determine and execute a second velocity-based trajectory for performing the second task.

12. 12. The system of claim 11, wherein the processor is configured to include within the velocity-based second trajectory a velocity-based transition from movement of the element in a first direction that includes the velocity-based first trajectory to a trajectory toward a second direction associated with the second task.

13. 2. The system of claim 1, wherein the robot includes a first robot, and the processor is configured to grasp an object with the first robot and a second robot, and synchronously move the first robot and the second robot using velocity control to move the object to a destination location.

14. 2. The system of claim 1, wherein the processor is configured to determine and utilize a position error or difference between a predicted position of the element and an observed position determined based at least in part on the sensor data to determine and implement adjustments to the trajectory that are based at least in part on velocity.

15. 1. A method for controlling a robotic system, comprising: receiving sensor data from one or more sensors deployed within a physical space in which the robot is located; using a processor to determine, based at least in part on the sensor data, a trajectory along which the robot component should be moved that is based at least in part on velocity; sending a command to the robot via a communication interface to execute a trajectory based on the velocity; A method comprising:

16. 16. The method of claim 15, further comprising simulating, with a processor, movement of the robot at the location.

17. 17. The method of claim 16, wherein the at least partially velocity based trajectory is determined at least in part by comparing observed velocities of the elements that make up the robot with corresponding velocities of the elements simulated according to the simulated movement of the robot.

18. 20. The method of claim 17, further comprising determining a set of constraints including one or more of a velocity constraint and an acceleration constraint based at least in part on attributes of an object currently being grasped by the robot element, and using a processor to impose the set of constraints when determining the at least partially velocity based trajectory.

19. A computer program product embodied in a non-transitory computer-readable medium, computer instructions for receiving sensor data from one or more sensors deployed within a physical space in which the robot is located; computer instructions for determining, based at least in part on the sensor data, a trajectory along which to move the robotic element, the trajectory being based at least in part on a velocity; computer instructions for sending a command to the robot via a communications interface to execute a trajectory based on the velocity; A computer program product comprising:

20. 20. The computer program product of claim 19, further comprising computer instructions for simulating movement of the robot at the location.

Citation Information

Patent Citations

  • Control device for manipulator

    JP1993329789A

  • Robot device and its control method

    JP2002018754A

  • Carrier robot and carrying program

    JP2007260838A

  • Path planning device, path planning method, and computer program

    JP2010155328A

  • Robot device

    JP2017039170A