Systems and methods for object orientation and manipulation via machine learning based control

The machine learning-based control system with actuators and impact forces addresses the inflexibility of existing robotic systems, enabling efficient and flexible object orientation, reducing manipulation time and human intervention.

JP2025531585AInactive Publication Date: 2025-09-19MITSUBISHI ELECTRIC CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025540596
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-02-07
Filing Date
2023-10-20
Publication Date
2025-09-19
Estimated Expiration
Not applicable · inactive patent

Smart Images

  • Figure 2025531585000001_ABST
    Figure 2025531585000001_ABST
Patent Text Reader

Abstract

The robot controller controls the orientation of the object to a desired orientation. The controller acquires pose data indicating the position and orientation of the object on the support surface and determines one or more control commands for actuating actuators according to the position and orientation of the object on the support surface. The actuators are actuated according to the one or more control commands to apply an impact force to the support surface that may change the orientation of the object to the desired orientation. The controller repeatedly executes these procedures until the object is oriented in the desired orientation.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to robotic systems, controllers, and methods for controlling the manipulation of objects, and more particularly, to systems and methods for object orientation and manipulation with machine learning-based control. [Background technology]

[0002] Various industrial activities, such as product assembly and packaging, involve the manipulation of objects using different types of robotic assemblies. Typically, one or more robots grasp and hold an object while performing an assembly task or while moving the object between two points on an assembly line. Additionally, in many non-contact subprocesses, it may be desirable to position the object on a surface or conveyor in a specific orientation, for example, to avoid collisions with other objects or entities. Because objects vary in shape, size, and rigidity, each object must be handled under specific conditions. Given these handling requirements, robots manipulating such objects must be able to approach the object from a limited number of sides, angles, and surfaces.

[0003] Also, specific to some processes, objects need to be oriented in one or more specific orientations to successfully execute such processes. For example, during automated product assembly operations, incoming parts or subassemblies of parts need to be properly oriented so that a robot can grasp the part in a suitable orientation. Available solutions are based on hard automation and are mostly single-part orientation systems. For example, a vibratory bowl feeder cannot be used for parts other than those for which the vibratory bowl feeder is designed. These conventional methods lack meaningful, fast, and flexible schemes and means for orienting objects in any desired pose. Making such systems flexible requires reconfiguring the hard automation, which is time-consuming, labor-intensive, and impractical. Therefore, there is a need for systems, methods, and controllers that can help orient objects, components, and parts in any desired manner. This need is urgent in industrial processes due to the wide variety of shapes of objects, components, and parts and the increasing trend toward mass customization in market demands. Therefore, there is a need to transition from hard automation and single-part orientation systems to more flexible and versatile part orientation systems. Summary of the Invention

[0004] The illustrative embodiments described herein relate to machine control, with particular emphasis on controlling the motion of robots. An objective of some embodiments is to provide a control policy for orienting randomly placed objects to any desired pose. Automated object orientation using available technology requires knowledge of the contact and impact dynamics of candidate objects. Some illustrative embodiments recognize that it is impossible to model the contact and impact dynamics of irregular parts using traditional physics methods. Some illustrative embodiments also recognize that each desired orientation is specific, and that a custom program is required for grasping and flipping or inverting the object to the desired orientation when the robot attempts to orient the object. Defining a custom program for each desired orientation is not possible because the robot can, at best, approach the object only along directions contained in the area above the platform supporting the object.

[0005] An objective of some illustrative embodiments is to provide a steering scheme that aids a robot in orienting an object to a desired orientation without significantly increasing takt time. It is also an objective of some illustrative embodiments to improve the design of a robotic assembly for orienting an object using a series of actuators controlled with commands that increase the likelihood of changing the object's current orientation to a desired orientation without considering the contact and impact dynamics of the object. Some illustrative embodiments use a series of actuators to flip an object to a different face / side by applying impulses to the surface on which the object is located.

[0006] Some exemplary embodiments also aim to provide a machine learning-based control scheme for controlling an object manipulator. Some exemplary embodiments provide a self-supervised learning-based approach to generate a control policy for orienting an object to a desired pose. The current state of the object, defined by its position and orientation, is input to a machine learning system driven by a learning function, which outputs a selection of actuators to be activated and impulse durations that have the best probability of bringing the object to the desired pose. The desired pose may be, for example, a pose that the robot can grasp. Some exemplary embodiments select the optimal control commands using a trained probabilistic model that generates likely outcomes directly as a function of the current state of the object and the control commands applied to the actuators.

[0007] Some illustrative embodiments recognize that one approach to learning a manipulation is to learn a complete state-space model of the system dynamics using various system identification methods. While this approach works very well for linear systems, some illustrative embodiments recognize that the complex nonlinearities of contact mechanics require the application of advanced methods for learning nonlinear, and possibly hybrid, discrete / continuous, dynamic models. Various universal function approximation methods, including neural networks, can be used to learn the system dynamics. Recent interest in model-based reinforcement learning has renewed research efforts to find better methods for learning world models. In this regard, contact nets have significantly improved the accuracy of predictive models over previous dynamic models based on standard neural networks. Some illustrative embodiments recognize that learning such models is highly complex and excessive for the control problem. In practice, it is not necessary to predict the entire future trajectory of the manipulated object; it is sufficient to predict only a stable stationary state.

[0008] In this regard, some illustrative embodiments are based on learning prediction models that predict only the rest state of the manipulated object as a result of a specific action (actuation of an actuator). Similar to probabilistic learning robots (SLAs), these prediction models are probabilistic to capture the inherent stochasticity of the complex contact dynamics involved. However, unlike SLAs, illustrative embodiments are based on models that use the full continuous state of the manipulated object, measured as accurately as technically and economically possible, to predict the rest state. The underlying control problem has significant aleatoric (intrinsic) uncertainty (primarily due to chaotic bifurcation dynamics and contact phenomena), but not necessarily significant epistemic (observational) uncertainty. There is no reason to artificially add such epistemic uncertainty by quantifying the state. Rather, a more effective approach is to measure the continuous state as accurately as possible and employ machine learning methods that can handle the full continuous state.

[0009] Some exemplary embodiments provide a closed-loop controller for executing a control policy for orienting a randomly positioned object to any desired pose. The closed-loop controller continuously processes input states indicative of the object's pose and predictive commands that cause changes in the object's orientation to reach a desired state indicative of the desired pose. In this regard, the closed-loop controller obtains input states from pose data detected by an appropriate system and predictive commands from a machine learning system to command a set of actuators to apply impact forces to the object to reach the desired state. Some exemplary embodiments can utilize the closed-loop controller to train the machine learning system from scratch or on the fly. In this manner, the exemplary embodiments provide a means for determining how to control a system to manipulate the object in an optimal manner to reach the desired state.

[0010] Some embodiments aim to provide a robot assembly for orienting a randomly placed object into any desired pose. Some exemplary embodiments provide a robot assembly including a robot for manipulating the object and a closed-loop controller for controlling the movement of the robot. The controller can also control a set of actuators to orient the object into the desired pose by providing a set of optimal control commands to the set of actuators. In this regard, the controller is connected to an imaging system that provides pose data of the object and a machine learning system that maps the pose data to a set of control commands and causes the set of actuators to apply impact forces to the object, thereby changing the orientation of the object into a desired or target orientation. The controller can instruct the robot to manipulate the object when the object is oriented in the desired orientation.

[0011] The desired orientation of the object may be predefined in a database or may be provided as an input to the system, for example, by a user / operator or another machine. Thus, exemplary embodiments of the present invention help improve the overall efficiency of a robotic manipulation operation by providing additional capabilities to orient parts in a desired manner. Such additional capabilities may be configured to be specific to each part being manipulated, without requiring a separate machine or assembly for each part. For these reasons, exemplary embodiments of the present invention can be seamlessly integrated into existing systems, such as production line assemblies and similar robots, without requiring reconfiguration.

[0012] To achieve the above objects and advantages, exemplary embodiments of the present disclosure provide a controller and method for robotic manipulation of a component or object, a robotic assembly for manipulating a component or object, and a method for controlling a robotic assembly.

[0013] Some illustrative embodiments provide a robotic assembly comprising: a support surface configured to support an object; and a set of actuators connected to the support surface. Each actuator in the set of actuators is configured to apply an impulse to the support surface having an energy defined by a corresponding control command in the set of control commands. The robotic assembly also comprises a memory configured to store a learning function trained using machine learning to map a position and orientation of the object on the support surface to one or more of the control commands. The robotic assembly also comprises a processor communicatively connected to other components of the robotic assembly.

[0014] The processor accepts multiple instances of attitude data of an object on the support surface. According to some exemplary embodiments, the multiple instances of attitude data of the object may be provided by an imaging system that detects the location and orientation of the object on the support surface at discrete time intervals. The processor obtains a first current position and a first current orientation of the object based on a first instance of the multiple instances of attitude data of the object. The object may have multiple stable orientations, and one or more of the multiple stable orientations may include a target orientation of the object to which the object is desired to be oriented. The processor then maps the first current position and the first current orientation of the object to at least one control command of the set of control commands by executing a learning function stored in memory.

[0015] Furthermore, the processor provides at least one control command to the set of actuators to apply a corresponding specific distribution of energy to the first current position of the object on the support surface, thereby increasing the likelihood of changing the first current orientation to a target orientation of the object. The processor then obtains a second current orientation of the object based on a second instance of the plurality of instances of the object's pose data, and additionally or alternatively, commands the robotic manipulator to manipulate the supported object based on a match between the second current orientation and the target orientation of the object.

[0016] According to some exemplary embodiments, a method for robotically manipulating an object supported on a support surface of a robot is provided. The method includes receiving multiple instances of pose data of an object on the support surface and obtaining a first current location and a first current orientation of the object based on a first instance of the multiple instances of pose data of the object. The method further includes mapping the first current location and the first current orientation of the object to at least one control command of a set of control commands by executing a learning function. The learning function is trained using machine learning to map the position and orientation of the object on the support surface to one or more of the set of control commands. The method further includes providing at least one control command to a set of actuators to apply a corresponding specific distribution of energy to the first current position of the object on the support surface, thereby increasing a likelihood of changing the first current orientation to a target orientation of the object. Each actuator of the set of actuators is configured to apply an impulse to the support surface having an energy defined by a corresponding control command of the set of control commands. The method further includes obtaining a second current orientation of the object based on a second instance of the plurality of instances of object pose data, and instructing a robotic manipulator to manipulate the supported object based on a match between the second orientation of the object and a target orientation.

[0017] Some illustrative embodiments provide a robot controller for controlling a robot assembly including a flexible bowl feeder supporting an object, a robot arm for manipulating the supported object, and a set of actuators. The robot controller is in communication with an impulse generator for controlling the set of actuators, an imaging system for generating multiple instances of pose data for the object, and the robot arm. The robot controller includes an interface configured to communicate with a database including learned associations between candidate orientations of the object and one or more control commands in the set of control commands that result in new orientations. The object may have multiple stable orientations, and one or more of the multiple stable orientations include a target orientation for the object. The interface is further configured to accept a target orientation for the object and to accept multiple instances of pose data for the supported object.

[0018] The robot controller also includes a memory configured to store executable instructions and a processor configured to execute the executable instructions to obtain a current position and a first current orientation of the supported object based on a first instance of the plurality of instances of attitude data of the supported object. The processor is further configured to obtain at least one control command of the set of control commands by querying a database using the first current orientation, and to provide the at least one control command to an impulse generator to cause the set of actuators to apply a corresponding specific distribution of energy to the current position of the supported object, thereby increasing a likelihood of changing the first current orientation to a target orientation of the object.

[0019] The processor is further configured to obtain a second current orientation of the object based on a second instance of the plurality of instances of attitude data of the supported object, and to command the robotic arm to manipulate the supported object based on a match between the second orientation of the object and the target orientation. The robotic controller may be implemented as one or more cloud services whereby the imaging system uploads the plurality of instances of attitude data of the supported object and the impulse generator downloads the at least one control command.

[0020] Some exemplary embodiments provide systems and methods for training a function, such as a classifier trained with one or a combination of a k-nearest neighbor (k-NN) algorithm, a support vector machine (SVM), a radial neighborhood (rN), a random forest, a relevance vector machine (RVM), reinforcement learning (RL), or backpropagation that minimizes a loss function. The training may include collecting target orientations of an object on a support surface and applying different distributions of energy to different locations on the support surface by controlling a set of actuators with multiple sets of random control commands. The training may also include detecting changes in the object's orientation for each of the different distributions of energy using an imaging system, and generating a set of control commands for the set of actuators by training training parameters of the function to increase the likelihood of the different distributions of energy at the object's current location and change the object's current orientation to the target orientation.

[0021] Among the many beneficial aspects realized are that embodiments of the present disclosure can continuously generate control commands to reorient an object without significantly increasing the latency of the robotic manipulator. This capability allows robots to be improved to perform manipulation tasks without requiring additional advanced techniques to manipulate the object. Such improved robots can reduce the amount of human intervention required in the process, reducing manipulation time and manipulation error.

[0022] Some features of the embodiments of the present disclosure described herein can be used in the automotive industry, aerospace industry, nonlinear control systems, and process engineering. Also, some features of the embodiments of the present disclosure can be used with material handling robots having multiple end effectors suitable for semiconductor wafer processing system applications. For example, the above-described motions can be used to pick up or place wafers or substrates from or to an offset station.

[0023] The present invention will now be described in detail with reference to the accompanying drawings, which are not necessarily to scale, emphasis instead being placed upon illustrating the principles of embodiments of the present disclosure. [Brief explanation of the drawings]

[0024] [Figure 1A] FIG. 1 illustrates an overview of an exemplary robotic assembly for object orientation and manipulation, according to some embodiments. [Figure 1B] 1 is a flowchart illustrating an exemplary method for orienting and manipulating an object using principles of some embodiments. [Figure 2A] FIG. 1 is a schematic diagram illustrating an exemplary training assembly for training a machine learning system to predict control commands corresponding to a current state of an object, according to some embodiments. [Figure 2B] 2B is a flowchart illustrating the sequential workflow of a training method for training the machine learning system of FIG. 2A according to one embodiment. [Figure 3] FIG. 2C illustrates an example of training data resulting from the training method of FIG. 2B, according to some embodiments. [Figure 4] FIG. 1 illustrates an example of machine learning in a learning mode, according to some exemplary embodiments. [Figure 5A]FIG. 1 illustrates an example overview of an electromechanical subsystem for orienting an object, according to some exemplary embodiments. [Figure 5B] FIG. 1 is an exploded view illustrating an electromechanical subsystem for orienting an object, according to some illustrative embodiments. [Figure 6] FIG. 1 illustrates an exemplary scenario of a robotic operation using a robotic assembly, according to some embodiments. [Figure 7] FIG. 1 is a block diagram illustrating some components of a robotic system for object orientation and manipulation in accordance with some illustrative embodiments. [Figure 8] FIG. 1 is a block diagram illustrating a robotic device for manipulating an object, in accordance with some illustrative embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0025] The following description provides exemplary embodiments only and is not intended to limit the scope, application, or configuration of the present disclosure. Rather, the following description of exemplary embodiments will provide those skilled in the art with an enabling description for implementing one or more exemplary embodiments. Various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the subject matter as set forth in the appended claims.

[0026] In the following description, specific details are given to provide a thorough understanding of the embodiments. However, those skilled in the art will understand that the embodiments can be practiced without these specific details. For example, systems, processes, and other elements in the disclosed subject matter may be shown as components in block diagrams so as not to obscure the embodiments in unnecessary detail. Also, well-known processes, structures, and techniques may be shown without unnecessary detail so as not to obscure the embodiments. Furthermore, like reference numbers and names in the various drawings refer to like elements.

[0027] Each embodiment may also be described as a process, which is depicted as a flowchart, flow diagram, data flow diagram, structure diagram, or block diagram. Although a flowchart may describe operations as a sequential process, many operations may be performed in parallel or simultaneously. The order of operations may also be changed. A process may be terminated when its operations are completed, but the process may include additional steps not discussed or shown. Furthermore, not all operations within a specifically described process need be included in all embodiments. A process may be a method, a function, a procedure, a subroutine, a subprogram, etc. When a process is a function, the termination of the function corresponds to the function returning to the calling function or the main function.

[0028] Robots are being deployed in a number of tasks, from everyday activities to complex industrial tasks. In many scenarios, robots must interact with objects to perform one or more tasks, including, but not limited to, grasping and moving the object. The objects that a robot may interact with become the robot's payload. Often, the robot's interaction with the corresponding load involves a manipulator performing robotic operations on the payload. An object's pose can define the object's position and orientation relative to a reference plane, such as the object's support surface. It is often desirable to present an object to a robot manipulator in one or more desired poses to control several of the robot's actions. This is particularly important in product assembly lines, warehouses, and pick-and-place operations, where operations on the object can be selectively performed on one or more surfaces of the object, or the object must be presented in a desired configuration to fit the scenario. Furthermore, in many robotic applications, it is not enough to simply guide the robot into a pose that allows it to grasp a part; the part must also be oriented so that the robot can grasp it without obstructing areas of the part that need access to further product assembly.

[0029] Robotic manipulators manipulate objects by guiding them along calculated trajectories. Trajectory calculations require accurate physical models of the payload and environment to generate the desired motions for the manipulator to accomplish a specified task. All of these tasks require the evaluation of the object in several desired configurations. Therefore, object orientation and subsequent manipulation are key building blocks in industrial operations.

[0030] Exemplary embodiments of the present disclosure aim to provide techniques and means for efficiently orienting any object toward a desired target. FIG. 1A shows an overview of an exemplary robot assembly 10 for orienting and, if necessary, manipulating an object, according to some embodiments. The robot assembly 10 includes a robot controller 11, an impulse controller 13, an imaging system including an imager 15A and an illumination source 15B, and an electromechanical subsystem 3. In some exemplary embodiments, the robot assembly 10 may additionally or alternatively include a robot manipulator 17. In some exemplary embodiments, the robot assembly 10 may include additional elements, such as a power subsystem and a communication network.

[0031] The robot controller 11 controls one or more other components of the robot assembly 10. In this regard, it is contemplated that the robot controller 11 may be communicatively connected to the other components of the robot assembly 10 via suitable means, such as wired or wireless media. Various operations performed by the robot controller 11 may be performed by one or more processors in communication with one or more memories. The memories may store program instructions executed by the processors and data utilized by the processors. In some exemplary embodiments, at least one of the memories may store a learning function that maps a state of the object 5 to a set of control commands to the actuators 9. Additionally or alternatively, the robot controller 11 may include or be connected to one or more databases containing learned associations between object states and control commands to the actuators 9. The robot controller 11 may further include interfaces for communicating data with other machines and devices, such as other components of the robot assembly 10.

[0032] The impulse controller 13 may be a stand-alone component of the robot assembly 10 or may be part of one or more other components of the robot assembly 10. For example, in some exemplary embodiments, the impulse controller 13 may be part of the robot controller 11, and in some other exemplary embodiments, the impulse controller 13 may be part of the electromechanical subsystem 3. Regardless of its association with other components of the robot assembly 11, the impulse controller 13 may be implemented using one or more processors and suitable circuitry to generate impulse signals to the set of actuators 9 of the electromechanical subsystem 3. For example, the impulse controller 13 may include a microprocessor and a series of high-power field-effect transistor (FET) pull-down pulse generators. The impulse controller 13 is controlled by control commands from the robot controller 11 to generate the impulse signals to the actuators 9. The control commands may indicate the portion of the set of actuators to be actuated and / or the duration and energy for which the actuators are to be actuated. Thus, the impulse controller 13 may send impulse signals to only a portion of the set of actuators 9 indicated by the control commands.

[0033] The electromechanical subsystem 3 comprises a support surface 7 for supporting one or more objects, such as the object 5, and a set of actuators 9 for applying an impact force to the support surface 7. In some exemplary embodiments, the object 5 may be a part, component, or any solid object that can be flipped, tilted, or moved by the application of an impact force without collapsing. For example, the object 5 may be a nut, a bolt, an electronic part, a package, a mechanical or electrical component, etc. The object 5 may have multiple stable orientations (i.e., orientations when the object is in static equilibrium). One or more of the multiple stable orientations may comprise a target orientation for the object 5.

[0034] A number of impulse forces applied by the actuators 9 cause one or more changes in the position and orientation of the object 5. In this regard, the actuators 9 may be activated by an impulse controller 13 providing appropriate electrical signals to the actuators 9. The impulse controller 13 operates under control of control commands from the robot controller 11. The control commands to the set of actuators 9 may be defined such that a particular set of control commands provided to the set of actuators 9 causes a corresponding particular distribution of energy to be applied to the support surface 7. The control commands may be digital commands that specify which actuators are powered or activated and the duration for which the actuators are activated. The control commands can cause different movements of the object 5 located at different positions on the support surface 7. That is, the same control command can cause a specific movement of the object 5 located at a first current position of the object 5, but can also cause a different movement of the object 5 located at a second current position that is different from the first current position of the object 5.

[0035] In some exemplary embodiments, a control command may be defined to be specific to an actuator among a set of actuators 9. For example, a control command may indicate "activate actuator #n for period t (t1≦t≦t2)." In some exemplary embodiments, a control command may be defined for multiple actuators. For example, a control command may indicate "activate actuator #n for period t n1 Activating actuator #n1 during period t n2 activating actuator #n2 during period t np Actuator #n inside p (t1≦t n1 ≦t2, t3≦t n2 ≦t4...t x ≦t np ≦t y ) can be indicated as "operating the

[0036] The imaging system defined by imaging device 15A and illumination source 15B may additionally or alternatively include an image processor (not shown) for processing images captured by imaging device 15A. In some exemplary embodiments, image processing may be performed by a processor external to the imaging system, such as the robot controller 11 itself. Imaging device 15A may be a digital camera or any other suitable imaging source for capturing still images and / or video of support surface 7 of electromechanical subsystem 3. Illumination source or illuminator 15B illuminates the field of view of imaging device 15A. In some exemplary embodiments, illumination source 15B may be a ring light, such as a light-emitting diode (LED) or an incandescent bulb, powered by a suitable illumination subsystem. In some exemplary embodiments, illumination source 15B may be a point-source illuminator or a beam-source illuminator. In some exemplary embodiments, illumination source 15B may be optional for the imaging system. The image processor may execute appropriate image processing algorithms, such as machine vision procedures, to process the images captured by imaging device 15A to detect the state or pose of object 5 on support surface 7. As used herein, the state or pose of an object corresponds to one or more of the position and orientation of the object on the support surface 7 .

[0037] The robot controller 11 orients the object 5 on the support surface 7 to a target orientation for the object 5 by executing a series of actions based on feedback. The robot controller 11 can be configured for any number and type of object and can sequentially orient each object to a desired orientation. In some other exemplary embodiments, the robot controller 11 can orient multiple objects in parallel or collaboratively, using some or all of the actuators 9 in conjunction with other components of the robot assembly 10. According to some exemplary embodiments, the robot controller 11 can terminate an operation when the object is oriented to a desired target orientation. According to some exemplary embodiments, the robot controller 11 can communicate a signal to another machine or device indicating that the object has been successfully oriented to a desired target orientation. For example, the robot controller 11 can output an output signal to the robot indicating that the object 5 has been oriented to a desired target state so that the robot can initiate further operations on the oriented object 5. In another exemplary embodiment, once the object 5 on the support surface 7 is successfully oriented to a desired target orientation, the robot controller 11 directly commands the robot manipulator 17 to manipulate the oriented object 5.

[0038] In some exemplary embodiments, a robotic manipulator 17 may be optional for the robot assembly 10. When commanded by the robot controller 11, the robotic manipulator 17 performs one or more manipulation tasks, such as grasping an object 5. The robotic manipulator 17 may be implemented using any suitable configuration depending on the manipulation task to be performed on the object 5. For example, in some exemplary embodiments, the robotic manipulator 17 may include a robotic arm having a gripper for grasping an oriented object 5.

[0039] The aforementioned robot assembly components work in conjunction to facilitate the orientation and manipulation of an unoriented object. Detailed operation of the robot assembly 10 will now be described with reference to FIG. 1B . FIG. 1B illustrates a flowchart of an exemplary method 100 for orienting and manipulating an object using the principles of some embodiments. In some exemplary embodiments, the method 100 may be triggered, for example, by a user pressing an activation switch. In some exemplary embodiments, the method 100 may be triggered by the detection of an object 5 on a support surface 7. In this regard, the robot assembly 10 of FIG. 1A may suitably include a sensor, e.g., a physical sensor such as an image sensor, an electromagnetic sensor, or a weight sensor, that detects the presence or arrival of the object 5 on the support surface 7.

[0040] For example, a target orientation of the object 5 on the support surface 7 is accepted from a user via an interface (102). In some exemplary embodiments, the target orientation may be accepted from another program or device or may be loaded from memory. In some exemplary embodiments, a target position of the object 5 on the support surface may also be accepted in step 102. The support surface 7 and the object 5 are imaged (104) using an imaging device 15A and an illumination source 15B. Image processing using any suitable algorithm, including but not limited to machine vision procedures, is performed on the captured images of the support surface 7 and the object 5 to determine the current position and orientation of the object 5 on the support surface 7 (106). Hereinafter, the object 5 on the support surface 7 is also referred to as the supported object 5.

[0041] The robot controller 11 checks (108) whether the current orientation is similar to the defined target orientation of the supported object 5. The similarity or match may be checked against a configurable threshold. For example, the overlap between the current orientation and the target orientation of the supported object may be expressed as a quantitative value such as an integer, fraction, or percentage. If the quantitative value is greater than or equal to the threshold, the robot controller 11 declares a match (outputting "Yes" in step 108); otherwise, it declares a mismatch (outputting "No" in step 108).

[0042] If the check result of step 108 is "Yes" (i.e., the current orientation of the object 5 matches the target orientation), control of step proceeds to step 110, where the robot controller commands the robot manipulator 17 to manipulate the supported object 5. However, if the check result of 108 is "No" (i.e., the current orientation of the object 5 does not match the target orientation), control of step proceeds to step 112, where the robot controller 11 executes a learning function stored in memory to map the current position and orientation of the supported object 5 to at least one control command for the set of actuators 9. The robot controller 11 retrieves the learning function from memory and provides the current position and orientation of the detected object 5 as input to the learning function.

[0043] In some exemplary embodiments, the learning function may interface with a training database that stores data indicating associations between object states and control commands for actuators. Extracts of the training database may be combined to select at least one control command. In some exemplary embodiments, the extracts may be sorted by one or more of actuator identifier (ID of each actuator) and impulse duration. Thus, the most common commands (e.g., commands that were the statistical "mode" for successful graspability) may be selected. In some exemplary embodiments, commands requiring the shortest actuator impulse duration (energy) may be selected. In some exemplary embodiments, commands may be selected using inverse distance weighting.

[0044] This selection process is greatly simplified by command quantization, so the total number of possible commands is relatively small. For example, for a system with seven actuators and three power levels with durations of 17, 21, and 25 milliseconds, the complete command vocabulary is 21 possibilities, which is relatively tractable for the machine learning procedure to operate on. The training database may be embodied locally as part of the robot assembly 10, or some or all of it may be hosted on a cloud service.

[0045] In some exemplary embodiments, the entire command selection function may be fully hosted on a cloud service, typically by uploading raw images from a camera, performing step 106 of detecting a current position and current orientation, step 108 of comparing positions, and step 112 of selecting at least one control command by executing a learning function, followed by downloading the selected control command for local execution. Such an embodiment provides the ability to utilize small, inexpensive local computing resources while effectively time-sharing expensive GPU-based machine learning algorithms, allowing for the use of custom learning functions and / or custom data. In another exemplary embodiment, performing step 106 of determining a current position and current orientation locally, uploading only the orientation and position to the cloud, and then downloading the selected actuation commands from the cloud allows for the efficient use of expensive machine learning hardware and / or the secure use of custom learning functions and / or custom databases.

[0046] The learning function predicts at least one control command for the actuators 9 corresponding to the input current position and current orientation of the object 5. The at least one control command is provided to the impulse controller 13 for actuating one or more of the actuators 9. In some exemplary embodiments, some learning functions may have a configuration in which they do not select a command according to the nominal command selection procedure of the above-described embodiments. In this case, a random command may be selected since the learning function procedure does not fetch a command.

[0047] At least one control command is used to activate (114) the set of actuators 9 to apply a particular distribution of energy corresponding to the first current position of the object 5 on the support surface 7, thereby increasing the likelihood of changing the first current orientation to a target orientation of the object 5. Each actuator in the set of actuators 9 may be expected to apply an impact force to the support surface 7 having an energy defined by the corresponding control command or set of control commands. Control then returns to step 104 to again image the support surface 7 and repeat steps 106 and 108 until the object 5 is oriented in the target orientation.

[0048] Thus, the robot assembly 10 using the method 100 can orient the object 5 to any desired target orientation. In some exemplary embodiments, it may be desired to orient the object 5 to a target orientation, and no manipulation of the object 5 may be required. In such a scenario, if the confirmation at step 108 is "Yes," the method 100 may be terminated, and in such a case, step 110 may not be performed.

[0049] The learning function may be a classifier trained using one or a combination of suitable learning algorithms, such as a k-nearest neighbor (k-NN) algorithm, a support vector machine (SVM) algorithm, a radial neighborhood (rN) algorithm, a random forest algorithm, a relevance vector machine (RVM) algorithm, a reinforcement learning (RL) algorithm, or backpropagation that minimizes a loss function. A training procedure may be implemented in advance to learn such a function and obtain associations between object states and control commands for actuators. In some exemplary embodiments, learning the function may be a continuous process.

[0050] 2A is a schematic diagram illustrating an example training assembly 20 for training a machine learning system that predicts control commands corresponding to a current state of an object, according to some exemplary embodiments. In some exemplary embodiments, the training assembly 20 may be embodied as the robot assembly 10 of FIG. 1A. In some exemplary embodiments, the training assembly 20 may be a separate system from the robot assembly 10 of FIG. 1A. In such a scenario, the training assembly 20 may be communicatively coupled to the robot assembly 10 and may be invoked to train a learning function using machine learning.

[0051] Training assembly 20 includes training controller 21, training subsystem 23, a training imaging system including imager 25A and image processor 25B, pulse controller 27, and training database 29. Training assembly 20 also includes an interface (not shown) for communicating data between components of training assembly 20 or to external devices. For example, this interface may be embodied as an input interface for accepting a target orientation of an object on a training support surface.

[0052] Structurally and functionally, training controller 21 may be similar to robot controller 11 of FIG. 1A, imaging device 25A may be similar to imaging device 15A of FIG. 1A, pulse controller 27 may be similar to impulse controller 13 of FIG. 1A, and training subsystem 23 may be similar to electromechanical subsystem 3 of FIG. 1A.

[0053] The training subsystem 23 includes a training support surface 23A for supporting an object to be oriented and multiple actuators 23B for applying impact forces to the training support surface 23A. The imaging device 25A captures images of the training support surface 23A and uses the image processing unit 25B to detect the position and orientation of an object placed on the training support surface 23A. The position and / or orientation of each object on the training support surface 23A may be defined relative to a plane 23C of the training support surface 23A. The pulse controller 27 includes a random pulse generator that can be controlled based on input from the training controller 21. The random pulse generator generates random pulses for the actuators 23B, and each random pulse activates one or more random actuators of the actuators 23B at regular or random times. The training database 29, together with the training controller 21, can define a machine learning system.

[0054] To obtain learned associations between object states and control commands for the actuators, the operation of the training assembly 20 is described with reference to Figure 2B. Figure 2B shows a flowchart illustrating the sequential workflow of a training method 200 for training the machine learning system of Figure 2A, according to one embodiment. While Figure 2B illustrates one training object on a training support surface 23A, such a training procedure may be extended to any type and number of training objects.

[0055] A training support surface 23A supporting a training object is imaged (202), and the position and orientation of the supported training object are detected (204). The position and orientation detected in step 204 may be referred to as the "previous position" and "previous orientation" of the training object. In step 206, the pulse controller 27 generates and provides random movement commands as random pulses to the set of actuators 23B. In this regard, as part of step 206, the pulse controller 27 randomly selects an actuator from the set of actuators 23B, randomly selects an impulse power, and transmits the random movement command to the actuator array 23B.

[0056] According to some exemplary embodiments, for some machine learning procedures (e.g., kNN and rN), it may be preferable for the pulse controller 23B to generate quantized random motion commands rather than continuous commands. For example, instead of randomly selecting impulse powers from a set of real numbers, it may be preferable to select impulse powers from a small set of integers.

[0057] Accordingly, actuator 23B is activated to apply one or more impact forces to training support surface 23A (208). As a result, the impact forces are applied to the object, moving it to a new orientation and / or position. The distribution of energy generated by the impact forces is position-independent, at least along an axis that lies within plane 23C. In some scenarios, the application of the impact forces may or may not change the position and / or orientation of the object on training support surface 23A. To verify this, training support surface 23A is again imaged (210), and the post-command position and orientation of the object on training support surface 23A are detected (212). The position and orientation of the object on training support surface 23A detected in step 212 can be considered the new position and new orientation of the object on training support surface 23A. The previous position and previous orientation detected in step 204, the random movement command used in step 208, and the new position and new orientation detected in step 212 are stored (214), for example, as an entry in database 29. For example, the previous position and previous orientation detected in step 204 may define the object's starting state and are stored in database 29 under "Start State." The random motion command used in step 208 is stored in database 29 under "Movement Command." The new position and new orientation detected in step 212 may define the object's new state and are stored in database 29 under "New State." In some exemplary embodiments, the post-command orientation of the object on training support surface 23A may be detected as "Undetermined" in step 212. In such a scenario, control of step 206 returns, a random control command is again generated, and in step 208, an actuator may be activated to apply an impact force to the object and change its orientation from "Undetermined" to a recognizable orientation.

[0058] Steps 202-214 may be repeated continuously and / or sequentially, and several entries may be recorded in database 29. In this manner, the association between the starting state (starting position and starting orientation), the new state (new position and new orientation), and the random motion command that caused the change from the starting state to the new state may, in some instances, be learned as a result of training method 200 in an unsupervised manner. In some exemplary embodiments, steps 202-214 may be performed taking into account the reference orientation of the object. For example, entries for iterations in which the new orientation of the object is the same as the reference orientation of the object may simply be recorded in the database along with the previous location of the object, the previous orientation of the object, and the random motion command used. In some exemplary embodiments, the training procedure may be configured according to the needs of the end goal. For example, if the end goal is robotic manipulation of an object, the training procedure may be performed with the robot's graspability of the object as the determining factor for registering entries in the database. In such a scenario, the robotic manipulator can determine the graspability of the object in the new orientation by attempting to grasp the object for each new orientation detected in step 212. An entry is then recorded in the database 29 including whether the object can be grasped in the new orientation.

[0059] Note that if the object's starting position is different in the two instances, the same random control command may cause the object to move differently in the two instances. For example, if the object is to the left of the center, the same impulse command applied to the center actuator may move the object further to the left, and if the object is to the right of the center actuator, the impulse command may move the object further to the right. In this case, the induced rotation of the object may also be reversed. For this reason, it is important to record an entry in the training database 29 under "Start State" that includes the object's starting orientation and starting position. Similarly, during the prediction phase, the imaging system delivers both the object's current position and current orientation.

[0060] FIG. 3 illustrates an example of another training database 29A resulting from the training method of FIG. 2B , according to some embodiments. In some exemplary embodiments, training database 29A may be a database used for kNN or rN machine learning procedures. Database 29A may relate to object orientations and manipulation tasks. Database 29A may store multiple entries (Entry 1 through Entry n). Each entry in database 29A includes the past or previous position of an object on training support surface 23A, the previous orientation of the object, the previous graspable state of the object, the identifier of the activated / activated actuator and the corresponding value of the applied pulse energy, the new position of the object on training support surface 23A, the new orientation of the object, and the new graspable state of the object. The (previous and new) positions may be represented in two dimensions, for example, in a Cartesian coordinate system (having x and y axes), while the (previous and new) orientations may be represented as angles defined around the object's axis relative to a plane. The (previous and new) graspable states may be indicated as either graspable or non-graspable. Entries in database 29A may be alphanumeric within a field. In some implementations, database 29A may be stored in memory, for example, in binary, to facilitate database searches. Another preferred implementation of database 29A may be a so-called "adaptive grid." In this case, the database may be divided into multiple sub-databases, often in the form of a grid or checkerboard, according to the binning of previous X values ​​and previous Y values. This division eliminates the need to search the entire database 29A to find the closest kNN or rN match. Instead, it is sufficient to search only the sub-database square containing the query location and the sub-database corresponding to the eight checkerboard squares adjacent to the query location.

[0061] In some preferred implementations, training database 29 or 29A may be further processed by machine learning methods such as support vector machines (SVMs), random forests (RFs), neural networks (NNs), principal component analysis (PCA), or other machine learning methods. However, because the impulse manipulation process is rapid and, in most preferred implementations, image processing procedures generate both position and orientation as well as robotic graspability information, the training process according to method 200 may be run several times a day, fully autonomously, without requiring human intervention other than to configure the system and provide example cases of "graspable" and "non-graspable." For example, the training process according to method 200 may be run at a rate of more than once per second, resulting in 60,000 training data samples in an overnight run.

[0062] Because of this large amount of available data and small human labor requirements, purely memory-based machine learning methods such as kNN (k-nearest-neighbor) and rN (rradius neighbor) can be effectively used with exemplary embodiments. Both kNN and rN have only a single adjustable parameter (the number of samples k and the neighborhood radius r, respectively), requiring relatively little, if any, human expertise. In some exemplary embodiments, a leave-one-out (LOO) method can be used to test a training database and learning algorithm against itself to see whether it generates known-outcome commands from object orientations and positions, given a database containing everything except known-outcome commands. One such preferred embodiment uses LOO to optimize the number of samples "k" (for kNN-based machine learning systems) or the sample radius "r" (for rN-based machine learning systems) by generating a receiver-operation characteristic curve. By selecting "k" or "r" as the value that maximizes the AUC (area under the curve) of the ROC curve (by limiting computation time and optimizing accuracy as necessary), the selection of "k" or "r" can be made essentially automatic, thereby further reducing human intervention.

[0063] By using AUC optimization of ROC, the entire machine learning process is fully self-supervised and requires no human intervention other than machine configuration and human specification of one or more orientations and positions of the target.

[0064] The training procedure of FIG. 2B may be performed in a continuously iterative manner, and learning may simply involve adding entries to database 29. FIG. 4 illustrates an example of machine learning in a learning mode, according to some exemplary embodiments. For example, the entries in database 402 may include entries up to the pth iteration. Additional iterations of steps 202-214 of the training procedure of FIG. 2B generate another set of entries as entry p+1 and add it to the end of the list, thereby obtaining updated database 404.

[0065] Another aspect of some exemplary embodiments of the present disclosure is a novel design of an electromechanical subsystem for orienting an object toward a desired target orientation, which will now be described with reference to FIGS. 5A and 5B. FIG. 5A illustrates an exemplary overview 500A of the electromechanical subsystem 3 of FIG. 1A for orienting an object, according to some exemplary embodiments. FIG. 5B illustrates an exploded view 500B of the electromechanical subsystem for orienting an object, according to some exemplary embodiments. The electromechanical subsystem 3 may be realized as a flexible bowl feeder or impulse manipulator assembly including a base plate 501, a set of vibration dampers 503, a set of long spacer tubes 505, an impulse actuator mounting plate 507, an impulse-generating actuator array 509, a set of short spacer tubes 511, a semi-flexible bowl base panel 513, a bowl base support plate 515, a set of retention springs 517, an object-holding frame 519, and retention bolts 521.

[0066] The base plate 501 may be a rigid, preferably heavy, plate to provide a stable mounting base for the impulse manipulator assembly. In at least some embodiments, a set of vibration dampers 503 is used to isolate the moving mass of the impulse manipulator assembly and minimize noise during operation. One vibration damper may be provided for each long spacer tube 505. The set of long spacer tubes 505 supports an impulse actuator mounting plate 507. While FIG. 5A shows only two for clarity, an impulse manipulator assembly may have three or more such long spacer tubes. The impulse actuator mounting plate 507 provides a rigid mounting location for the impulse-generating actuator array 509.

[0067] A set of short spacer tubes 511 are mounted above impulse actuator mounting plate 507. While FIG. 5A shows only two for clarity, impulse manipulator assembly may have three or more such short spacer tubes. Short spacer tubes 511 provide a working clearance between the end (in the non-actuated position) of actuator core 509A and semi-flexible bowl base panel 513. Bowl base support plate 515 is mounted directly on short spacer tubes 511 and supports semi-flexible bowl base panel 513 to prevent downward deflection of semi-flexible bowl base panel 513 due to the weight of an object on the panel. In this regard, bowl base support plate 515 may have one or more strategically placed holes to allow core 509A of each actuator 509 to rest directly against semi-flexible bowl base panel 513.

[0068] A set of retaining springs 517 are provided above the semi-flexible bowl base panel 513. While FIG. 5A shows only two for clarity, the impulse manipulator assembly may have three or more such retaining springs. These retaining springs 517 allow the semi-flexible bowl base panel 513 to easily move vertically during an impulse, but also keep the bowl base panel 513 flat when no impact force is being applied. Above the retaining springs 517, an object retaining frame 519 is provided to maintain the orientation of one or more objects across the entire area that can be struck by the actuator array 509. Either a threaded rod or a retaining bolt 521 can be provided to maintain the assembly in vertical alignment. Although FIG. 5A shows only two for clarity, the impulse manipulator assembly may have three or more such threaded rods or retaining bolts.

[0069] In some exemplary embodiments, actuator array 509 may include multiple solenoids that, when actuated, generate vertical motion of core 509A. This vertical motion propels core 509A through bowl base support plate 515 and into semi-flexible bowl base panel 513 with an impact force. The impact force thus applied depends on the impulse power supplied to the actuator / solenoid. The lower limit of the impulse power may be the minimum energy required to push the solenoid through the gap created by short spacer tube 511 and just touch semi-flexible bowl base panel 513. The upper limit of the impulse power duration is when semi-flexible bowl base panel 513 inertially lifts away from the solenoid and remains in its fully extended position even after it loses contact with the solenoid. The value of the upper limit of the impulse power duration may vary depending on the density, stiffness, and thickness of semi-flexible bowl base panel 513.

[0070] In some other exemplary embodiments, actuator array 509 may comprise other forms of actuators, and may generate the desired impulse through the use of hydraulic or pneumatic cylinders or strikers, piezoelectric transducers, rotary strikers, the impingement of a fluid such as pressurized water or compressed air against semi-flexible substrate 513, or the direct impingement of a fluid such as compressed air, water, or oil flowing through perforations, nozzles, or penetrable mesh areas in plate 503 or component holder 519. In some exemplary embodiments, more than one type of impulse transducer may be used in a single implementation. For example, an electromagnetic solenoid may generate an upward impulse while simultaneously firing a horizontal pulse of compressed air from a nozzle in the component holder to generate a horizontal shear force.

[0071] Additionally, in some exemplary embodiments, the impulse manipulator shown in FIGS. 5A and 5B may include an optional lock nut. When inserted onto the threaded rod or retaining bolt 521, this lock nut can maintain a higher stack pressure than can be maintained by the retaining spring 517 alone. In some exemplary embodiments, using only a lock nut instead of the long spacer tube 505 and short spacer tube 511 can also provide a greater range of motion for the system. In some exemplary embodiments, the retaining spring 517 can be replaced by a resilient spring, such as a rubber tube or rubber bellows. In some exemplary embodiments, the retaining spring 517 can be replaced by a compressible material, such as a leather washer, or another material that allows for small movements of the semi-flexible bowl base panel 513.

[0072] The unique structure of the electromechanical system 3 realized as an impulse manipulator assembly shown in Figures 5A and 5B provides greater flexibility in orienting an object by precisely applying impact forces to the semi-flexible bowl base panel 513. Providing reliable damping of the applied impact forces ensures that the object is not thrown from the frame and reduces noise during operation.

[0073] FIG. 6 illustrates an exemplary scenario 600 of robotic manipulation using a robot assembly, according to some embodiments. Specifically, FIG. 6 illustrates the application of the robot assembly 10 of FIG. 1A to an assembly line to assist in the manipulation of objects where it is desired to orient the objects in a target orientation before performing an operation or other task on or with the objects in the assembly line. As shown in FIG. 6, an object dispenser 601 can singulate objects 605 and deliver them to a conveyor 603A. The conveyor 603A transports the singulated objects 605A to an impulse manipulator subassembly, such as the electromechanical subsystem 3 shown in FIGS. 1A, 5A, and 5B. The electromechanical subsystem 3 orients one or more of the objects 5, for example, object 605B, in a corresponding target orientation. The electromechanical subsystem 3 can be controlled by a controller 611 to orient incoming objects, such as object 605B. The robotic manipulator 613 can sequentially perform appropriate manipulation tasks on the oriented objects. The manipulated object may then be transported, for example, by robotic manipulator 613 or another robot, onto conveyor 603B, which transports manipulated object 605C to the next stage in the assembly line.

[0074] Controller 611 controls the operation of robotic manipulator 613 and electromechanical subsystem 3. In some exemplary embodiments, controller 611 may be a centralized controller for controlling other operations in the assembly line, such as the operation of conveyors 603A, 603B, object dispenser 601, one or more imaging systems, etc. In some exemplary embodiments, each component in the assembly line may have an individual controller, and controller 611 may control only the operation of electromechanical subsystem 3.

[0075] The target orientation of each of the objects 605 may be predefined, dynamically defined, or provided by another program or device. The support surface 607 of the electromechanical subsystem 3, which receives the incoming object 605A, may be equipped with a suitable sensor (not shown), such as a weight sensor, to detect the presence or arrival of the object 605B on the support surface 607. In some exemplary embodiments, the presence or arrival of the object 605B on the support surface 607 may be detected by an imaging system (not shown) comprising an imaging device, an illumination source, and an image processor similar to the embodiment described with reference to FIG. 1A. Detection of the presence or arrival of the object 605B is communicated to a controller 611, which triggers an object orientation method, such as method 100 of FIG. 1B.

[0076] When the controller 611 detects the object 605B on the support surface 607, it obtains a target orientation corresponding to the object 605B. In some exemplary embodiments, the target orientation may be defined by a user or input via an input interface. In some exemplary embodiments, the target orientation may be dynamically determined on the fly. In this regard, the controller 611 may invoke an imaging system similar to that described with reference to FIG. 1A to capture an image of the object 605B on the support surface 607. In some exemplary embodiments, the controller 611 may execute an object identification program to determine the type of the object based on the captured image of the object 605B on the support surface 607. In some exemplary embodiments, the identification of the type of object using the captured image of the object 605B may be performed by a separate processing system, such as an image processor of the imaging system, and the controller 611 may receive data indicating the identified type from the imaging system. The controller 611 fetches the target orientation of the identified type of object from a memory or a database.

[0077] Additionally, the controller 611 obtains the current position of the object 605B on the support surface 607 and the current orientation of the object 605B on the support surface 607 in a manner similar to that described for step 106 of FIG. 1B. The controller 611 then executes steps 108-114 of FIG. 1B until the object 605B is oriented in the target orientation. Once the object 605B is successfully oriented in the target orientation, the controller 611 can instruct or command the robotic manipulator 613 to manipulate the object 605B. The manipulation operation may include sorting the oriented object 605B and transferring it onto a conveyor 603B for transport to another stage of the assembly line.

[0078] 7 shows a block diagram of several components of a robotic system 700 for orienting and manipulating an object, according to some illustrative embodiments. The robotic system 700 includes a robotic manipulator 701, a controller 703, one or more sensors 705, a user interface 707, an imaging system 709, a storage device 711, an actuator assembly 713, and a network 715.

[0079] The controller 703 includes one or more processors 703A, memory 703B, and an interface 703C. The one or more processors 703A execute instructions, programs, and code stored in memory 703B to perform the functions provided by the controller 703. In this regard, the one or more processors may be embodied, for example, by any one or more of numerous processing circuit implementations, such as an FPGA, an ASIC, a microprocessor, a CPU, and / or the like. In some embodiments, the processor may include one or more sub-processors, remote processors (e.g., "cloud" processors), and / or the like, and / or may communicate with one or more additional processors to perform such functions. For example, in at least one embodiment, one or more of the processors 703A may communicate with and / or operate in conjunction with another processor external to the controller 703.

[0080] Memory 703B may provide storage functionality, for example, for storing data processed by controller 703 and / or instructions for providing the functionality described herein. In some embodiments, processor 703A may communicate with memory 703B via a bus for passing information between components of controller 703. Memory 703B may be non-transitory, for example, and may include one or more volatile and / or non-volatile memories. For example, memory 703B may be an electronic storage device (e.g., a computer-readable storage medium) with gates configured to store data (e.g., bits) retrievable by a machine (e.g., a computing device such as processor 703A). Memory 703B may be configured to store information, data, content, applications, instructions, etc. to enable the controller to perform various functions in accordance with exemplary embodiments of the present invention. For example, the memory may be configured to buffer data processed by processor 703A. Additionally or alternatively, memory 703B may be configured to store instructions executed by processor 703A.

[0081] Controller 703 uses interface 703C to communicate with components and devices external to controller 703. In this regard, interface 703C may be any suitable input / output interface, communication interface, or the like.

[0082] The robot manipulator 701 includes a robot controller 701A having a structure similar to that of the controller 703, and a robot 701B. The robot 701B may be any electromechanical robot capable of manipulating objects, parts, and components. The robot system 700 further includes one or more sensors 705 for sensing and detecting one or more parameters, data, or information. For example, the sensors 705 may include an image sensor, a sound sensor, a temperature sensor, a gyro sensor, a position sensor, a weight sensor, an electromagnetic sensor, etc. The robot system 700 also includes a user interface 707 for receiving input, data, and feedback from a user, such as an operator of the robot system 700.

[0083] The robotic system 700 also includes an imaging system 709, which includes one or more imagers 709A and an image processor 709B. The imagers 709A include multiple image sensors, such as near-field image sensors configured to capture image data objects within a near field, and optics embodied by one or more lenses and / or other optical elements configured to allow light to pass through and interact with the image sensors. The image processor 709B may include one or more processors or microcontrollers hard-coded to execute image processing algorithms.

[0084] The robotic system 700 also includes a storage device 711, which includes a database 711A containing learned associations between object states and control commands, and another database 711B. The database 711A may be similar to the database 29 of FIG. 2A. The other database 711B may store other data requested or generated by one or more components of the robotic system 700. For example, the other database 711B may store images captured by the imaging system 709.

[0085] The robotic system 700 also includes an actuator assembly 713, which includes a pulse controller 713A and an actuator array 713B. The pulse controller 713A may be similar to the impulse controller 13 of FIG. 1A. The actuator array 713B may include a plurality of solenoids controlled by the pulse controller 713A. Each solenoid has a top core configured to move vertically relative to a base of the solenoid, and the top core is configured to apply an impact force to a surface adjacent to the top core. In some exemplary embodiments, the solenoids may be servo-controlled.

[0086] One or more components 701-713 of the robotic system 700 can communicate with each other via a network 715. The network 715 may be wired, wireless, or a combination of both.

[0087] FIG. 8 shows a block diagram of a robotic device 800 for manipulating an object, according to some illustrative embodiments. The robotic device may be embodied as an object manipulator, such as robotic manipulator 17 of FIG. 1A. According to some illustrative embodiments, the robotic device 800 includes a mechanical system 810, sensors 820, a control system 830, a network 840, and a power supply 850. The mechanical system 810 includes a robotic arm 811, a gripper 813, and a gripper base 815. The sensors 820 may include an environmental sensor 821, a position sensor 823, and a velocity sensor 825. The control system includes a data processing system 831. Typically, the control input for the robotic arm is the motor torque that must be applied to each joint to move the robot from an initial pose to a desired pose.

[0088] The robotic arm 811 is controlled using a robot control system 830, such as the robot controller 701A, that receives commands or tasks, which may be provided externally. An example of a command or task may be to touch or grasp an object using the gripper 813. The robot control system 830 sends control signals to the robotic arm 811. The control signals may be torques to be applied to each joint of the robotic arm 811 and torques to open and close the gripper 813. The state of the robotic device 800 may be acquired using sensors 820. These sensors may include encoders attached to the joints of the robotic arm 811, cameras that can observe the environment of the robotic device 800, and tactile sensors that may be attached to the fingers of the gripper 813. The robot control system 830 may execute policies to accomplish some task or command.

[0089] In some exemplary embodiments, the sensor 820 may include a camera as the environmental sensor 821. The camera may be an RGBD camera capable of providing both RGB color images and depth images. The internal information from the RGBD camera can be used to convert the depth into a 3D point cloud. In another embodiment, the camera may be a stereo camera consisting of two color cameras capable of computing depth and a 3D point cloud. In yet another embodiment, the camera may be a single RGB camera, and the 3D point cloud can be directly estimated using machine learning. In another embodiment, there may be multiple cameras. Finally, in another embodiment, the camera may be mounted anywhere on the robot arm 811, the gripper 813, or the gripper base 815.

[0090] In this manner, the exemplary embodiments provide a universal object orienting assembly that can orient any rigid body to a desired orientation and can be customized according to the needs and characteristics of the object. Such a universal orienting assembly does not require mechanical modifications to the bowl or frame. To adapt the exemplary impulse manipulator to different objects, only the manipulator's software needs to be updated, thereby providing a highly flexible system. Furthermore, software updates may be performed in a self-supervised manner as described above, without human intervention. Furthermore, the exemplary embodiments described herein provide a means for orienting objects at very short intervals, thereby leading to applications in a wide variety of industries and robotic tasks.

[0091] The embodiments of the present disclosure described above may be implemented in many ways. For example, the embodiments may be implemented in hardware, software, or a combination thereof. If implemented in software, the software code may be executed on any suitable processor or group of processors, whether located on a single computer or distributed across multiple computers. Such a processor may be implemented as an integrated circuit. A single integrated circuit element may include one or more processors. However, the processor may be implemented in any suitable circuit.

[0092] Additionally, the various methods or steps outlined herein may be coded as software executable on one or more processors employing any one of a variety of operating systems or platforms. Moreover, such software may be written using any of a number of suitable programming languages ​​and / or programming or scripting tools, and compiled as executable machine language code or intermediate code that runs on a framework or virtual machine. Typically, the functionality of the program modules may be combined or distributed in various embodiments as desired.

[0093] The embodiments of the present disclosure may be embodied as methods, which are provided by way of example. The actions performed as part of this method may be ordered in any suitable manner. Accordingly, embodiments may be constructed that perform actions in an order different from the sequential actions performed in the exemplary embodiments, and that may include performing some actions simultaneously. Also, the use of order terms in the claims, such as first, second, etc., to modify claim elements does not imply a priority, precedence, or order of one claim element relative to another claim element, or a chronological order in which the actions of the method are performed, but is merely used as a label to distinguish between claim elements and to distinguish one claim element with a particular name (by using order terms) from another element with the same name.

[0094] Although the invention has been described with reference to preferred embodiments, it should be understood that various other modifications and variations can be made within the spirit and scope of the invention. It is therefore intended in the appended claims to cover all such variations and modifications which fall within the true spirit and scope of the invention.

Claims

1. 1. A robot assembly comprising: a support surface configured to support an object; a set of actuators connected to the support surface, each actuator in the set of actuators configured to apply an impulse to the support surface having an energy defined by a corresponding control command in a set of control commands, the robot assembly comprising: a memory configured to store a learning function trained using machine learning to map a position and orientation of the object on the support surface to one or more of the set of control commands; a processor; The processor: receiving a plurality of instances of pose data of the object on the support surface; obtaining a first current position and a first current orientation of the object based on a first instance of the plurality of instances of the pose data of the object; mapping the first current position and the first current orientation of the object to at least one control command of the set of control commands by executing the learning function; providing the at least one control command to the set of actuators to apply a corresponding specific distribution of energy to the first current position of the object on the support surface, thereby increasing the likelihood of changing the first current orientation to a target orientation of the object; obtaining a second current orientation of the object based on a second instance of the plurality of instances of the pose data of the object; a robotic assembly configured to command a robotic manipulator to manipulate the supported object based on a match between the second orientation of the object and the target orientation.

2. the object on the support surface has a plurality of stable orientations; The robot assembly of claim 1 , wherein one or more of the plurality of stable orientations comprises the target orientation of the object.

3. 2. The robot assembly of claim 1, wherein the learning function is a classifier trained with one or a combination of a k-nearest neighbor (k-NN) algorithm, a support vector machine (SVM), a radial neighborhood (rN), a random forest, a relevance vector machine (RVM), reinforcement learning (RL), and backpropagation to minimize a loss function.

4. The robot assembly of claim 1 , wherein the learning function is a classifier trained with a radial neighborhood (rN) selector of k-nearest neighbors (k-NN) learning.

5. the processor is further configured to train the learning function during a training phase; The processor, during the training stage, collecting the target orientation of the object on the support surface; applying different distributions of energy to different locations on the support surface by providing multiple sets of random control commands to the set of actuators; detecting a change in orientation of the object for each of the different distributions of energy using the imaging system; 2. The robot assembly of claim 1, configured to generate the set of control commands for the set of actuators by training parameters of the learning function to increase the likelihood of the different distributions of energy being applied to the current position of the object to change the current orientation of the object to the target orientation.

6. the robotic assembly is communicatively connected to a training system for training the learning function using machine learning; The training system comprises: a training support surface; a training imaging system configured to image the training support surface; a set of training actuators, each training actuator configured to apply impulses to the training support surface having an energy defined by a corresponding training control command, wherein a particular set of training control commands provided to the set of training actuators causes a corresponding particular distribution of energy to be applied to the training support surface; The training system comprises: an input interface configured to accept a target orientation of the object on the training support surface; a training processor and a training memory storing instructions for causing said training processor to train said learning function; The training processor, for training the learning function, applying different distributions of energy to different locations on the training support surface by providing different sets of control commands to the set of training actuators; using the training imaging system to detect the change in orientation of the object for each of the different distributions of energy; generating a set of output commands for the set of actuators by training parameters of the learning function, the set of output commands increasing the probability of the energy of the distribution applying to a current candidate position of the object so as to change the current candidate orientation of the object to the target orientation; The robot assembly of claim 1 , configured to output the parameters of the learning function.

7. 2. The robot assembly of claim 1, wherein the set of actuators includes one or more transducers selected from the group consisting of an electromagnetic linear solenoid, an electromagnetic rotary solenoid, a hydraulic cylinder, a pneumatic cylinder, a piezoelectric transducer, a transducer based on impingement of a fluid against the support surface, and a transducer based on direct impingement of a fluid against the object.

8. The robot assembly of claim 7 , wherein the set of actuators includes a combination of different types of actuators than the group.

9. an imaging system configured to image the support surface and generate the multiple instances of the pose data of the object on the support surface; The robot manipulator further comprises: The robotic assembly of claim 1 , wherein the robotic manipulator is configured to grasp the object with one or more contact surfaces.

10. applying the corresponding specific distribution of energy to the first current position of the object on the support surface changes the first current position to a second current position of the object on the support surface; The robot assembly of claim 1 , wherein the object on the support surface is located at the second current position in the second orientation.

11. The support surface is a semi-flexible layer configured to attenuate one or more impact forces from the set of actuators and to transmit at least a portion of the attenuated one or more impact forces to the object; a component holder frame disposed on the semi-flexible layer and configured to hold the object within the support surface; 2. The robot assembly of claim 1, further comprising an actuator mounting plate disposed below the semi-flexible layer, the set of actuators being mounted on the actuator mounting plate.

12. 2. The robot assembly of claim 1, wherein each command in the set of control commands includes instructions specifying one or more of the timing and duration of an impact force to be applied by one or more actuators in the set of actuators, or an identifier for at least one actuator in the set of actuators.

13. 1. A method for orienting an object supported on a support surface of an assembly toward a first target, the method comprising: i) receiving pose data of the object on the support surface; ii) obtaining a first current position and a first current orientation of the object based on the attitude data of the object; and iii) mapping the first current position and the first current orientation of the object to at least one control command of a set of control commands by executing the learning function, wherein the learning function is trained using machine learning to map the position and orientation of the object on the support surface to one or more of the set of control commands, the method comprising: iv) applying a corresponding specific distribution of energy to the first current position of the object on the support surface by providing the at least one control command to a set of actuators so as to increase the likelihood of changing the first current orientation to a target orientation of the object, wherein each actuator in the set of actuators is configured to apply to the support surface an impulse having an energy defined by a corresponding control command in the set of control commands, repeatedly performing steps i) to iv) until the object is oriented in the target direction.

14. the plurality of instances of pose data are received at discrete time intervals; the first current position and the first current orientation of the object are obtained based on the first instance of pose data; The method comprises: obtaining a second current orientation of the object based on a second instance of the pose data of the object; determining a match by comparing the second current orientation of the object with the target orientation; and terminating the repetition of steps i) through iv) based on the determined match.

15. 14. The method of claim 13, wherein the learning function is a classifier trained with one or a combination of a k-nearest neighbor (k-NN) algorithm, a support vector machine (SVM), a radial neighborhood (rN), a random forest, a relevance vector machine (RVM), reinforcement learning (RL), and backpropagation that minimizes a loss function.

16. The method of claim 13, wherein the learning function is a classifier trained with a radial neighborhood (rN) selector of k-nearest neighbors (k-NN) learning.

17. further comprising the step of training said learning function during a training phase; The training stage comprises: collecting the target orientation of the object on the support surface; applying different distributions of energy to different locations on the support surface by providing multiple sets of random control commands to the set of actuators; detecting a change in orientation of the object for each of the different distributions of energy using an imaging system; and generating a set of control commands for the set of actuators by training parameters of the learning function to increase the likelihood of the different distributions of energy applying to the current position of the object to change the current orientation of the object to the target orientation.

18. further comprising training the learning function using machine learning; The training of the learning function comprises: imaging a training support surface of a training system; accepting a second target orientation of the object on the training support surface; applying different distributions of energy to different locations on the training support surface by providing different sets of control commands to a set of training actuators; detecting a change in the orientation of the object for each of the different distributions of energy; generating a set of output commands for the set of actuators by training parameters of the learning function, the set of output commands increasing the probability of the energy of the distribution applying to a current candidate position of the object so as to change the current candidate orientation of the object to a second target orientation; and outputting the parameters of the learning function.

19. 1. A robot controller for controlling a robot assembly comprising a flexible bowl feeder for supporting an object, a robot arm for manipulating the supported object, and a set of actuators, the robot controller being in communication with the robot arm, an impulse generator for controlling the set of actuators, an imaging system for generating multiple instances of pose data for the supported object; the robot controller includes an interface, a memory, and a processor; The interface is communicating with a database containing learned associations between candidate orientations of the object and one or more control commands of a set of control commands that result in new orientations; accepting a target orientation of the object; configured to receive the plurality of instances of the pose data of the supported object; the memory is configured to store executable instructions; The processor executes the executable instructions to: obtaining a current position and a first current orientation of the supported object based on a first instance of the plurality of instances of the pose data of the supported object; obtaining at least one control command from the set of control commands by querying the database using the current position and the first current orientation; providing the at least one control command to the impulse generator to cause the set of actuators to apply a corresponding specific distribution of energy to the current position of the supported object, thereby increasing the likelihood of changing the first current orientation to the target orientation of the object; obtaining a second current orientation of the object based on a second instance of the plurality of instances of the pose data of the supported object; a robot controller configured to command the robot arm to manipulate the supported object based on a match between the second orientation of the object and the target orientation.

20. the robot controller is hosted as one or more cloud services; the imaging system uploading the instances of pose data of the supported object to the one or more cloud services; 20. The robotic controller of claim 19, wherein the impulse generator downloads the at least one control command from the one or more cloud services.

Citation Information

Patent Citations

  • Impact type part feeder

    JP1999180538A

  • Component supply device and machine learning device

    JP2019014020A