Velocity Control-Based Robot System
Velocity control-based robotic systems address the challenges of controlling robotic systems in dynamic environments by directly managing speed and acceleration, enhancing precision and adaptability, and reducing the risk of damage and increasing efficiency.
Patent Information
- Application Number
- JP2024207837
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-09-23
- Filing Date
- 2024-11-29
- Publication Date
- 2026-01-08
- Estimated Expiration
- 2041-09-22
AI Technical Summary
Existing robotic systems face challenges in controlling velocity and acceleration, leading to potential damage and difficulty in applying precise forces, especially when interacting with dynamic environments and non-moving objects, and existing position-controlled robots increase complexity and reduce throughput.
Implementing velocity control-based robotic systems that directly manage the speed and acceleration of robotic movements, using models and sensor data to adapt to changing environments and ensure precise force application.
Enables precise and adaptive robotic operations in dynamic environments, reducing the risk of damage and increasing efficiency by allowing rapid responses to changing conditions while maintaining control over applied forces.
Smart Images

Figure 0007796197000001 
Figure 0007796197000002 
Figure 0007796197000003
Abstract
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, and entitled "VELOCITY CONTROL-BASED ROBOTIC SYSTEM," which is incorporated herein 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 (e.g., joints connecting arm segments and / or attaching a base segment to a base) that make up the robot to change the position of the end effector.
[0003] Typically, robots apply higher torques 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 further apart over longer trajectories and to accelerate more quickly at the start and end of the trajectory. In typical approaches, 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 can, in some contexts, lead to damage to an item grasped with the robot, for example, to be placed at a target location.
[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 on an object that is resting on a table. One approach may 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, and the robot then applies a force proportional to the distance between its current position and the intended destination. However, controlling forces using such techniques is difficult, and errors can occur due to inaccurate information about the current position of the robot's end effector and / or the object. [Brief explanation of the drawings]
[0006] Various embodiments of the present 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] [Figure 2] FIG. 1 illustrates an embodiment of a robotic singulation system using velocity control.
[0010] [Figure 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 an embodiment of a velocity control-based robotic system.
[0013] [Figure 5B] FIG. 1 illustrates an example of velocity control in an embodiment of a velocity control-based robotic system.
[0014] [Figure 5C] FIG. 1 illustrates an example of velocity control in an 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 one embodiment of a process for controlling a robotic system using an imputed force field.
[0018] [Figure 8A] FIG. 1 illustrates an example of velocity control in an embodiment of a velocity control-based robotic system.
[0019] [Figure 8B] FIG. 1 illustrates an example of velocity control in an embodiment of a velocity control-based robotic system.
[0020] [Figure 8C] FIG. 10 is a diagram showing, for comparison purposes, an example of changing the target and / or destination using position control in controlling a robot system.
[0021] [Figure 8D] FIG. 10 illustrates an example of using velocity control as disclosed herein to change targets and / or destinations in a robotic system.
[0022] [Figure 9A] 10 is a flow chart illustrating one embodiment of a process for turning to a new target and / or destination using velocity 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 INVENTION
[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 technology. In general, the order of steps in a disclosed process may be varied 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] The following is a detailed description of one or more embodiments of the present invention with reference to figures that illustrate the principles of the invention. While the present invention has been described in connection with such embodiments, it is not limited to any particular embodiment. 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 that are 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 robotic arm or other robot. In various embodiments, the robotic 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 systems disclosed herein include a robotic 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 fewer) joints that make up the robotic 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 equally, since only a simple transformation layer is required. In response to velocity control commands, the robot applies torque to each joint at a level associated with each velocity control command received from the robotic 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 that 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 movement. For example, in various embodiments, the model is used to determine, for each joint, a velocity command, torque command, or other command or set of commands to provide to the robot to achieve a desired end effector velocity, acceleration, etc.
[0029] In various embodiments, a robot control system simulates the movement of a robot in a workspace / environment in which the robot is operating (or will operate). The system uses the simulation and (actual and / or simulated) sensor readings (e.g., images or other information) from the workspace to determine one or more of the 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 robot's end effector to the source / destination locations, which in some embodiments may be moving. Velocity control is used to determine a vector for capturing a moving item or location and is continuously updated to drive the end effector toward and / or match the velocity of the item / location, such as to grasp the moving item and / or place the grasped item at a moving destination location. 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 conveyor 108. In various embodiments, box assembly machine 110 may be controlled by and / or in communication with other elements of kitting system 100 to, for example, coordinate / synchronize box size selection and the timing of box assembly (e.g., boxes 112, 114) and placement on conveyor 108.
[0031] 1A , robotic arm 116 is mounted on carriage 118, which is configured to run along rails or other linear guides 120 positioned alongside and substantially parallel to conveyor 108, across from 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 carriage 118 and attached robotic arm 116 along rails or guides 120 to facilitate automated retrieval of items from kitting machines 102, 104, and 106 and placement of items in boxes 112, 114 as the boxes move along conveyor 108.
[0032] In the depicted example, the operation of one or more of kitting machines 102, 104, and 106, conveyor 108, box assembly machine 110, and robotic arm 116 and / or carriage 118 is coordinated under the control of control computer 122. In the depicted example, control computer 122 wirelessly communicates with controllers (not shown in FIG. 1 ), each configured to control the operation of a corresponding element 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). While wireless connections are shown in FIG. 1 , wired connections or a combination of wired and wireless connections may be used in various embodiments.
[0033] In various embodiments, control computer 122 is configured, for example, by software executing on control computer 122, to receive data related to invoices, orders, parts lists, pick-up lists, or other lists of items to be retrieved and packed together, determine a strategy / plan for accomplishing the retrieval 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 coordination to fulfill the request.
[0034] For example, in some embodiments, control computer 122 is configured to receive a list of items to be packed. Control computer 122 determines which items are associated with which of kitting machines 102, 104, and 106 and develops a plan for retrieving and packing the items. Control computer 122 controls box assembly machine 110 to assemble and place boxes (e.g., 112, 114) on conveyor 108, and controls conveyor 108 to advance the boxes to a position where one or more items will be placed. Control computer 122 controls carriage 118 and / or robotic arm 116 as needed to position robotic arm 116 to retrieve one or more first items from an associated one of kitting machines 102, 104, and 106. Control computer 122 may control kitting machines 102, 104, and 106 to ensure that the required quantities of required items are present in the pickup zones at the ends of kitting machines 102, 104, and 106 that are closest to conveyor 108 and robotic arm 116. Control computer 122 controls robotic arm 116 to retrieve the items from the corresponding pickup zones, place the items in boxes (e.g., 112, 114), and then move to perform coordinated retrieval and packing of any additional items needed to be included in that particular kit. Once all items have been retrieved and packed, control computer 122 controls conveyor 108 to advance the boxes (e.g., 112, 114) to the next stage of fulfillment (a station not shown in FIG. 1 , e.g., where boxes are sealed, labeled, and sent for shipping).
[0035] 1A , in the illustrated example, system 100 includes a video camera 124 configured to capture video images of the components comprising system 100. Camera 124 may be one of multiple sensors used by control computer 122 to control the components comprising system 100. For example, in the illustrated example, video generated by camera 124 and transmitted to control computer 122 may be used by control computer 122 to control the speed and / or direction of conveyor belts comprising kitting machines 102, 104, and 106 to ensure a sufficient, but not excessive, number of items are available in the pickup zone and / or to position or reposition items for pickup by robotic arm 116. Additionally, camera 124 and / or other cameras may be used to facilitate robotic arm 116 picking up items and / or placing items into bins (e.g., 112, 114). In various embodiments, multiple cameras may be deployed in multiple locations, such as within the environment and on each element comprising 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, control computer 122 is programmed to determine a plan for fulfilling kitting requests based at least in part on models of robotic arm 116 and other elements comprising system 100 (e.g., kitting machines 102, 104, and 106, conveyor 108, box assembly machine 110, and robotic arm 116 and / or carriage 118). Each model, in various embodiments, reflects the capabilities and limitations of each element. For example, while kitting machines 102, 104, and 106 are in fixed positions in this example, each has a conveyor belt that may be capable of moving back and forth and / or at different speeds. Additionally, control computer 122 may use information stored in association with initialization and / or configuration, such as which items are in which positions on which kitting machines, and where each kitting machine and / or its associated pickup zone is located, to determine a plan for fulfilling requests. 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 carrying out the request.
[0037] In various embodiments, the control computer 122 is configured to develop and / or update or reformulate a plan for fulfilling the request using a strategy for performing the (next) task or subtask that has been programmed into and / or learned by the control computer 122, and then execute or attempt to execute the plan. Examples include, but are not limited to, a strategy for using the robotic arm 116 to pick up a given item based on the item's attributes (e.g., rigidity, fragility, shape, orientation, etc.). In some embodiments, the control computer 122 is programmed to attempt to perform 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 strategy fails, to determine and utilize an alternative strategy, if available (e.g., a strategy of using the robotic arm 116 to gently nudge the item and then retrying, a strategy of slightly moving a conveyor or other device of the kitting machines (e.g., 102, 104, and 106) forward and / or backward and retrying, etc.).
[0038] 1, control computer 122 is connected to an on-demand teleoperator 126 operated by a human operator 128. While teleoperator 126 is shown as being operated by a human operator 128 in FIG. 1, in some embodiments, teleoperator 126 may be operated by a non-human operator (e.g., a highly skilled robot). In various embodiments, control computer 122 is configured to invoke on-demand teleoperation based, at least in part, on a determination by control computer 122 that no strategy is available to continue / complete the kitting operation and / or its component tasks in a fully automated manner. For example, when an item is dropped in a location that cannot be retrieved by robotic arm 116, or when a predetermined maximum number of attempts have been made to pick up the item without success. 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 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 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 various 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, for example, 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 plurality 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 the suction force to grasp the item, lift the item from 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, via 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 being loaded into and / or unloaded from container 136. In various embodiments, control computer 148 identifies the item and / or its attributes using item model data in a library stored in and / or accessible to control computer 148, for example, based on image and / or other sensor data. 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 location (e.g., bin 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 determined to be where the item will be placed as part of the planning / re-planning process for stacking the item in / onto bin 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 the strategy for grasping, moving, and placing an item becomes indeterminable and / or fails such that control computer 148 has no strategy for completing the pick and place of the item in fully automated mode, control computer 148 instructs human user 154 to intervene, e.g., by operating robotic arm 132 and / or end effector 138 using 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 singulation / guiding, such as retrieving items from a chute or other supply or intake source and placing each item one-by-one into a corresponding position on a conveyor or other output or destination structure.
[0047] In the example shown in FIG. 2 , system 200 includes a robotic arm 202 with a suction-based end effector 204. In the illustrated example, end effector 204 is a suction-based end effector; however, in various embodiments, one or more other types of end effectors, including, but not limited to, pinch-based end effectors or other types of actuated grippers, may be used in the singulation systems disclosed herein. In various embodiments, the end effector may be actuated by one or more of suction, pneumatic, air, hydraulic, or other actuation. Robotic arms 202 and 204 are configured to be used to pick up packages or other items arriving via chute or bin 206 and place each item in a corresponding position on partitioned conveyor 208. In this example, items are fed into chute 206 from 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 robotic arm 202, end effector 204, and conveyor 208 are coordinately operated by control computer 212. In various embodiments, control computer 212 includes a vision system 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 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 section of partitioned conveyor 208) available for machine identification and sorting.
[0049] 2 , in the depicted example, system 200 further includes an on-demand teleoperated device 218 available to a human worker 220 to remotely operate one or more of robotic arm 202, end effector 204, and conveyor 208. In some embodiments, control computer 212 is configured to attempt to grasp and place items in a fully automated mode. However, if, after attempting to operate in a fully automated mode, control computer 212 determines that no further strategies are available for grasping one or more items, in various embodiments, control computer 212 sends an alert to obtain assistance from a human operator, for example, by human operator 220 using 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 a robot may be constantly changing. For example, a conveyor belt may stop or start unexpectedly or may operate at an unexpected speed. A person 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 people present in the environment. An object being moved or otherwise manipulated by a robot may be in a jumbled pile or flow of objects, and the object may change position and / or orientation due to the pick-and-place of other objects, the operation of an automated feeding system, etc.
[0052] In various embodiments, the robotic systems disclosed herein continuously process information captured in real time using various sensors, such as encoders, cameras, gates / latches, force sensors, and fieldbus signals. The robotic systems dynamically and adaptively control 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 item being manipulated by the robot, or 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, and 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 (e.g., 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 comprising 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 goals to be executed (such as a set of shipping invoices, manifests, or other lists of items and quantities to be assembled into each container or kit), 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 and / or other information indicative of the 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 initial setup 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 comprise one or more schedulers that schedule specific robotic elements (e.g., robotic arms) to perform a series of specific tasks (e.g., the task of picking up items A, B, and C and moving them to destination bin R, or the task of picking up items from chute A and placing each item one-by-one into a partitioned section of partitioned conveyor C, etc.) and / or subtasks (e.g., the subtask of picking up 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 operations 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 based at least in part 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 having grasped item A 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 which the end effector 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 derivative 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 a velocity that constitutes the trajectory that the control module 308 has determined the end effector should move along. In various embodiments, the control module 308 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 (such as unexpected changes in the state or condition of the item being or to be moved by the robot and / or other items in the space, the position, state, and movement of other robots in the space, the position of human workers present in the space, and the actual observed movement of the robot and / or elements that make up the robot being controlled by the control module 308).
[0059] In various embodiments, the control module 308 sends commands to the robot's on-board control subsystem 316 to execute the determined trajectory. The robot's on-board control subsystem 316 then sends commands for each particular joint or other actuation element of the robot to the corresponding joint's (or other) motor controller (e.g., one or more of motor controllers 318, 320, and 322). In response to commands from the robot's on-board control subsystem 316, the motor controllers (e.g., 318, 320, and 322) supply current levels associated with desired torques to their associated controlled motors for predetermined / commanded periods of time (e.g., for the commanded period of time or until commanded to stop). In some embodiments, the robot's 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 coordinately rotating the joints to move the robot's end effector and / or other actuation elements 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 inputs received from the planner 304, control signals generated by the control module 308, the robot model 312, and sensor data from the sensors 314. For example, 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 into the simulation attributes of an item in space (e.g., an item being grasped by the robot). 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, sensor data generated by sensors 314 is provided to planner 304. In some embodiments, planner 304 is configured to continuously monitor sensor data 304 to determine whether to update the plan generated by 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 the time predicted, an updated plan may be generated that takes that information into account.
[0062] In various embodiments, the robotic systems disclosed herein perform adaptive / intelligent trajectory generation, which utilizes the ability to control not only the position of the robot and / or its components, but also its 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. Without velocity and acceleration tracking as disclosed herein, a real robot (not a simulated robot) would not keep up with the desired path / position (e.g., determined by a simulation). If the desired position is no longer changing, the real robot, in some embodiments, can ultimately reach the desired position very accurately using position control (only). However, if the desired position is changing, the real robot cannot effectively follow a path dynamically using position control alone, and therefore, in various embodiments, velocity and / or acceleration control is utilized. In various embodiments, velocity and acceleration tracking allows the robot to instantly know when and how to accelerate without waiting for large position errors, allowing for 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 (e.g., end effectors), the position, pose, velocity, and acceleration (if applicable) of items in the workspace (e.g., items to be grasped and moved by the robot), the position, velocity, and acceleration (if applicable) of each destination receptacle (e.g., a container or compartment on a conveyor belt), and the position, velocity, and acceleration (if applicable) of structures or potential hazardous conditions (e.g., human workers) present in the workspace.
[0064] At step 406, a difference is determined comparing the observed velocity of the end effector (or other element) with 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. is 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 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 the robot, generated, and sent to the robot to eliminate the difference between the observed velocity and the predicted velocity 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 movement using velocity control The robot may decide to change direction of movement instantly 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 can quickly adapt to move towards a new load to pick or to intercept and pick a moving load. In position control, rapidly changing the target from in front of the robot to behind the robot can cause sudden movements, dropping objects, adversely affecting the robot hardware, and potentially introducing errors. Higher order derivative control is used in various embodiments to decelerate and steer the robot smoothly (but as quickly 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 is not possible to command the robot to do this without utilizing the velocity / acceleration control disclosed herein.
[0067] A time-optimal algorithm is implemented using the rate control disclosed herein in various embodiments 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, weight of the object, orientation in which it is 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 does not guarantee or have the ability to "control" these accelerations. Therefore, if position control alone is used, the control system must be overly conservative to fit tightly 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 humans, robots adjust their position, grip, and force by looking at the environment and 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 control commands to the robot to ensure successful execution. Typically, these adjustments are "delta" based, i.e., adjustments are made to close the gap between the desired visual state (e.g., simulated speed) and the current visual state (e.g., 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 belt tracking, picking and placing moving objects, and applications that may require reaction from disruptions due to human interaction, collision avoidance, etc. In various embodiments, the systems disclosed herein may use rate control to implement state-based (or other time-varying) trajectories. 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, and the robot usually cannot move that fast and is subject to the constraints highlighted above (e.g., grasp quality). The robotic control system disclosed herein generates motion (e.g., of a robot) that achieves a desired state, such as by using velocity control to direct the robot's movement along a very specific trajectory of position, velocity, and acceleration, which more fully embodies the definition of "motion" than just a change 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 The robot must, for example, track and follow a moving belt slot, keeping 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 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 the robot using position control (only), it is necessary to use position error instead of force. Higher order derivative force control - position / acceleration allows for tighter looping to force, increasing force control range and latency, as disclosed herein Because force is directly related to motor current, i.e., position is a poor way to modulate current, robot control systems typically do 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 at determining how much force a joint applies. ■ 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. However, using the velocity control disclosed herein allows the control system to more directly affect the forces applied by the robot, regardless of position accuracy. While 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), 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 implemented with velocity control allows the robot to adapt more quickly to the environment and / or the manipulation of objects present in the environment. If something pushes back or if it is touching a surface, velocity control reacts much faster than position control. As shown in Figure 1B, for example, palletizing boxes ■ 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 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 were stationary, the system could 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 the object 504 is not successfully placed into the container 508 as a result.
[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 for capturing the container 508 and then moving parallel to the container 508, thereby enabling 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 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 into which an object is to be placed or from which 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, causing the target to move to a new location, point B' 526, by which time the end effector, represented by point A 522, can be moved into position. As shown in the vector diagram on the right side of FIG. 5B, in various embodiments, velocity control as disclosed herein is used to determine a velocity vector 530 for capturing the target at position B' 526, resulting in 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, control system 600 includes a control module 602 configured to perform velocity-based control, at least in part, by determining a trajectory that includes a velocity-based component and providing, via interface 604, control signals associated with torques calculated to execute the determined trajectory. The torque-based control signals 604 in this example may be converted by a first type of connector 606 to generate position control signals for controlling a conventional position-controlled robot 608 to execute the determined trajectory as closely as possible and / or in any manner possible. Similarly, the torque-based control signals 604 may be converted by a second type of connector 610 to generate velocity control signals for controlling a velocity-controlled robot 612 to more directly execute the determined trajectory. Finally, in this example, the torque-based control signals 604 may be provided to and directly executed by a torque-controlled robot 614.
[0076] In some embodiments where 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 flowchart 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 (e.g., 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 to velocity, acceleration, jerk, etc. in step 704 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 has 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 assessing 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 limits (e.g., to velocity or other higher order derivatives of position) may be determined based on the classification. At step 706, the limits 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 limits 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] 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 the risk of a robotic element (e.g., an end effector) colliding with a structure that comprises 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 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 becomes stronger the closer the controlled element is to the object, etc. with which contact / collision is to be avoided. 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, as described above. For example, a trajectory may be determined that ensures that the imputed force does not exceed a predetermined 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) (in this example, toward a first container 808) at a first velocity 806. For example, upon occurrence of an observed or commanded change, the system may determine to instead place the object 804 into a second container 810, which is in the opposite direction of movement compared to velocity 806.
[0082] 8B is a diagram illustrating an example of velocity control in one embodiment of a velocity-control-based robotic system, where 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 between position control and velocity control when using them to dynamically respond to conditions (e.g., a change in destination location) as implemented in various embodiments. In a typical position-control-based robotic system, a destination change that results in desired movement to a destination in the opposite or otherwise substantially different direction typically leads to a rapid (near-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, near-instantaneous change of direction can 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 with 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 illustrates an example of using position control to change targets and / or destinations in controlling a robotic system. In the illustrated example, graph 840 shows velocity versus time for a position-controlled robot changing targets / destinations as in the example shown in Figures 8A and 8B. As shown, the end effector moves at a velocity v1 (e.g., vector 806 shown in Figure 8A) and, at time t1 (represented by dashed line 846), almost instantly changes to a velocity v2 844 that is opposite to and greater than velocity v1.
[0085] FIG. 8D illustrates an example of changing a target and / or destination 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 changing a target / destination as in the example shown in FIGS. 8A and 8B. As in the example shown in FIG. 8C, the end effector is initially moving at velocity v1 862 before receiving an instruction to change to a new target / destination at time t1. The velocity control as disclosed herein allows a 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 a change of direction to be executed without abrupt movements or potentially excessive acceleration or velocity, since a command more directly related to 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 (e.g., 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 to a vector (velocity) for reaching / capturing the new target / destination, taking into account velocity, acceleration, etc. 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] 9B is a flow chart illustrating one embodiment of a process utilizing velocity control to cooperatively perform a task using 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 on the opposite side, then lifts and moves the container synchronously to place it in a destination location).
[0088] At step 924, a strategy for grasping the object using the robots (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) is determined and executed. At step 926, speed control is used to move the robots synchronously, each at the same speed at all times, to maintain engagement with the item (e.g., a container) as they move together to their 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 either the object or the robots, or both. In a position-controlled system, even small errors in position can lead to forces being applied in the incorrect direction.
[0090] Multi-robot collaboration is performed using velocity control in various embodiments as follows: The improved force control achieved with the velocity control disclosed herein allows robots to collaborate more effectively at higher throughputs ●Dual robots enable the ability to quickly respond to environmental / hardware abnormalities For example, when one or more robots suddenly decelerate due to a hardware malfunction or an obstructing obstacle, one or more other robots can react instantly by controlling their speed, immediately slowing down, responding to reaction forces, or otherwise adapting 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 the impact on the object is minimal, 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. The predicted / simulated velocity V generated by simulation 1006 is used to generate a velocity error / velocity difference 1010 (e.g., difference 544 in FIG. 5C ). シミュレート is the observed / actual velocity V determined based on data from sensor 1008 観測In a first stage and / or based on a first clock or sampling frequency, the control stack uses a velocity error / difference 1010 and a velocity control layer of the control stack 1002 to determine and provide control signals 1004 to attempt to minimize or eliminate the error / difference 1010. In a second stage (e.g., when the target or destination is approached) and / or based on a second clock or sampling frequency that is lower than the first frequency, the control stack 1002 uses 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 in a position control layer above the velocity control layer in the control stack 1002 and generating and providing further control signals to implement the adjusted and / or final trajectory.
[0092] The techniques disclosed herein may be used, in various embodiments, to more precisely, efficiently, and flexibly / adaptively control one or more robots, enabling safer and more efficient use of robots in highly dynamic environments.
[0093] Although the above-described 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. [Application Example 1] A robot system, 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, based at least in part on the sensor data, a trajectory along which the robot component should be moved that is at least in part based on velocity; A system configured to send a command to the robot via the communication interface to execute a trajectory based on the velocity. [Application Example 2] The system according to Application Example 1, wherein the sensor data includes image sensor data. [Application Example 3] The system according to Application Example 1, wherein the communication interface includes a wireless interface. [Application Example 4] A system according to Application Example 1, wherein the processor is further configured to simulate the movement of the robot at the position. [Application Example 5] A system according to Application Example 4, wherein the processor is configured to determine the trajectory based at least in part on velocity by comparing, at least in part, observed velocities of the elements constituting the robot with corresponding velocities of the elements simulated according to the simulated motion of the robot. [Application Example 6] The system according to Application Example 1, wherein the elements constituting the robot include an end effector. [Application Example 7] A system as described in Application Example 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 constituting the robot, and to impose the set of constraints when determining the at least partially velocity-based trajectory. [Application Example 8] A system as described in Application Example 1, wherein the command includes a torque-based command associated with a calculated torque to be applied to a joint associated with the command to achieve the trajectory based at least in part on velocity. [Application Example 9] A system as described in Application Example 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. [Application Example 10] A system according to Application Example 9, wherein the items or structures include one or more of a chassis or other structure constituting the robot, a rail or other structure configured to carry one or more of the robot and the chassis, a second robot present at the location, and a fixed structure present at the location. [Application Example 11] A system as described in Application Example 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 to perform the second task. [Application Example 12] A system as described in Application Example 11, wherein the processor is configured to include within the second velocity-based trajectory a velocity-based transition from movement of the element in a first direction including the velocity-based first trajectory to a trajectory toward a second direction associated with the second task. [Application Example 13] A system according to Application Example 1, wherein the robot includes a first robot, and the processor is configured to grasp an object using the first robot and a second robot, and to use velocity control to move the first robot and the second robot synchronously to move the object to a destination position. [Application Example 14] The system described in Application Example 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 at least in part based on the sensor data to determine and perform an adjustment to the trajectory based at least in part on velocity. [Application Example 15] A method for controlling a robot system, comprising: receiving sensor data from one or more sensors deployed within the 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: [Application Example 16] The method described in Application Example 15, further comprising using a processor to simulate the movement of the robot at the position. [Application Example 17] A method as described in Application Example 16, wherein the trajectory based at least in part on velocity is determined at least in part by comparing observed velocities of the elements constituting the robot with corresponding velocities of the elements simulated according to the simulated motion of the robot. [Application Example 18] A method as described in Application Example 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 grasped by the element constituting the robot, and using a processor to impose the set of constraints when determining the at least partially velocity-based trajectory. [Application Example 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 the robot component should be moved that is based at least in part on 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: [Application Example 20] A computer program product according to Application Example 19, further comprising computer instructions for simulating the movement of the robot at the position.
Claims
1. 1. A robotic 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, based at least in part on the sensor data, a trajectory along which to move the robotic element, the trajectory being at least partially based on velocity, by determining a vector for capturing the moving item at a capture location based on an initial position of the moving item and a velocity associated with the moving item, the moving item corresponding to a first destination of an object being grasped by the robot; sending a command to the robot via the communication interface to execute the trajectory based at least in part on the velocity; changing a destination of the object being gripped by the robot from the first destination to a second destination according to a condition; a system configured to control the robot using velocity control to determine and execute a new velocity-based trajectory toward the second destination.
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 a location.
5. 5. The system of claim 4, wherein the processor is configured to determine the at least partially velocity-based trajectory at least in part by comparing observed velocities of the elements comprising the robot with corresponding velocities simulated for the elements according to the simulated movement of the robot.
6. The system of claim 1 , wherein the elements that make up 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 comprise 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. 10. 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 a location.
10. 10. The system of claim 9, wherein the items or structures include one or more of a chassis that constitutes the robot, a rail configured to mount one or more of the robot and the chassis, a second robot present at the location, and a fixed structure present at the location.
11. 10. 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 using the first robot and a second robot, and to synchronously move the first robot and the second robot using velocity control to move the object to a destination position.
14. 10. 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 the at least partially velocity-based trajectory adjustment.
15. 1. A method for controlling a robotic system, comprising: receiving sensor data from one or more sensors deployed within the physical space in which the robot is located; using a processor to determine, based at least in part on the sensor data, a trajectory to be followed by the robot based at least in part on velocity, by determining a vector for capturing the moving item at a capture location based on an initial position of the moving item and a velocity associated with the moving item, the moving item corresponding to a first destination of an object being grasped by the robot; sending a command to the robot via a communications interface to execute the trajectory based at least in part on the velocity; changing a destination of the object being gripped by the robot from the first destination to a second destination according to a condition; controlling the robot using velocity control to determine and execute a new velocity-based trajectory toward the second destination; A method comprising:
16. 16. The method of claim 15, further comprising simulating, with the processor, movement of the robot at a 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 comprising the robot with corresponding velocities of the elements simulated according to the simulated movement of the robot.
18. 18. 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 the 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 an element of the robot that is at least partially based on velocity, the computer instructions including determining a vector for capturing the moving item at a capture location based on an initial position of the moving item and a velocity associated with the moving item, the moving item corresponding to a first destination of an object being grasped by the robot; computer instructions for sending, via a communications interface, commands to the robot to execute the trajectory based at least in part on the velocity; computer instructions for changing a destination of an object being gripped by the robot from the first destination to a second destination in response to a condition; computer instructions for controlling the robot using velocity control to determine and execute a new velocity-based trajectory toward the second destination; 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 a 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