Method and System for Programming a Robot

A method and system are provided for programming robots by users without expertise in specialized robot programming languages. In the method, a high-level description is provided by the user to a translator. The translator translates the description into a transformation. A transformer applies the transformation to an existing robot trajectory in order to provide an updated robot trajectory. The updated robot trajectory is then used to operate the robot.

TECHNICAL FIELD

The present inventions relate generally to robots, and more particularly, to programming robots.

BACKGROUND

When programming a robot, a sequence of positions (e.g., coordinates and rotations) must be defined for all joints so that the sequence together implements the desired robot functionality. Programming a robot is a laborious task, even when using state-of-the-art robot development tools (e.g., RobotStudio). The large initial time investment is acceptable when the robot is meant to execute the given task repeatedly over a long period of time. However, conventional robot programming becomes less economical when the work environment or the task frequently changes since any change requires a re-implementation of the task regardless of the nature or magnitude of the change.

SUMMARY

A method and system are described for programming robots. In the method and system, the user provides a high-level description of a modification to be made to an existing robot trajectory. A translator translates the description into a transformation that may be applied to the existing robot trajectory. A transformer then transforms the existing robot trajectory using the transformation to provide an updated robot trajectory. The robot may then be operated to perform the updated robot trajectory without requiring reprogramming by an expert engineer using specialized robot programming software code. Thus, the method and system allows non-expert users without experience with specialized robot programming languages to modify a robot program.  The invention may also include any other aspect described below in the written description or in the attached drawings and any combinations thereof.

The system may be configured for programming the robot by the user according to any method described herein. The system may comprise a translator configured for receiving and for translating the description; a transformer configured for receiving the existing robot trajectory and configured for receiving the transformation, the transformer being configured for transforming the existing robot trajectory (22) into the updated robot trajectory; the controller configured for receiving the updated robot trajectory; and the robot (30) configured for performing the updated robot trajectory. Also, a use of the system for programming the robot using any method described herein is provided.

DETAILED DESCRIPTION

Robotic systems perform robot tasks within the workspace of the robot. Inside the workspace, a robot task consists of a trajectory, which is a time series of coordinates in space. For instance, a trajectory can be a time series of joint angles or tooltip coordinates. The robotic system uses a controller to guide the robot along the coordinates of the robot trajectory exactly or approximately. As a result, the robot may perform various useful tasks. However, since robotic systems manipulate real objects, robot tasks rarely remain the same throughout the entire lifespan of a robotic system due to various changes that may be required for the robot task. In case of a change in the work environment, task or robot configuration, users of robotic systems need to modify existing robot trajectories in order to alter the behavior of the robot. This requires performing geometric calculations on the existing robot trajectories, which often are not readily available to a user. Alternatively, developing entirely new trajectories for  task variations is time-consuming and cumbersome. In order to overcome this problem, an intuitive system for manipulating existing robot tasks would be preferable.

The method and system herein may be useful in facilitating the implementation of robot tasks and the modification of tasks due to changes in the task or the environment in which the task is carried out. Abstract commands may be used to manipulate trajectories in such a way that a new or updated task can be generated out of a given set of basic movements or existing tasks with minimal effort. As a result, a level of adaptability may be reached that not only simplifies robot programming but also obviates the need for re-implementing robot tasks when transitioning to a new environment. This simplification makes robot programming significantly faster and less expensive.

The improved method and system allows the user of a robotic system to modify robot trajectories using intuitive, high-level commands. Oftentimes, the user of a robot is a non-expert with minimal or no programming skills using software commands of special-purpose robot programming languages. The improved method and system preferably includes at least two parts: a translator and a transformer. The translator receives a high-level command or a series of high-level commands from the user and translates these into a set of transformations. The transformer applies these transformations to an existing robot task. Depending on the configuration of the robot, the trajectory is transformed or the user is informed that the requested trajectory transformation is infeasible.

The method and system addresses the problem of allowing the user to manipulate robot tasks which is otherwise limited in conventional robotic systems and allowing the user to avoid developing whole new robot tasks that are mere variations of existing tasks. Further, the system allows the use of high-level commands which results in an intuitive interface that is easy to use.

It is also possible to provide a method and system for the cases where a completely new robot task is required. For example, when a larger change occurs (e.g., a change in the robot cell), or a robot is first taken into production, entirely new trajectories may be needed. In this case, the method and system may supply pre-established motion primitives that encode frequently used robot motions. The same  trajectory manipulation method as described above may then be used to simplify robot programming for new robot tasks. Using the same manipulation method for modifying existing robot tasks and creating new robot tasks simplifies the work of the robot task developer and thus makes the use of the whole robotic system faster and less expensive.

Another advantage of the method and system is that conventional components used in a typical robotic system, such as the controller, may be reused. Since the method and system works at the trajectory abstraction level, the robot controller simply executes the resulting trajectory using conventional robot programming code.

An overview of how the method and system works is shown inFIG.1. First, the user10of the robotic system provides a high-level description12of the trajectory manipulation that needs to be performed. The description12might pertain to environment properties, such as properties of the object being manipulated, or properties of the workspace, such as obstacles, or properties of the immediate surroundings of the robotic system, such as brightness, sounds, etc. Such properties may be obtained by a variety of sensing devices, such as cameras, microphones and LIDAR devices. In addition, the description12may relate to properties of the trajectory itself, such as velocity, acceleration, smoothness, approximation methods or randomization. The description12may also relate to the robot30itself, such as physical components of the robot30or the robot configuration. A description12may also be a series of high-level descriptions that form a more complex abstract description of the robot task manipulation. A variety of inputs may be provided by the user10as the description12, including for example, a textual input such as a colloquial sentence or phrase, or an input on a touchpad indicating a direction, object, icon or the like.

The description12is then fed into the translator14. The translator14is responsible for interpreting the high-level description12received from the user10and outputting a series of trajectory transformations18corresponding to the high-level description12. The transformations18are mathematical adjustments interpreted from the high-level description12which may be used to modify an existing robot trajectory22, such as an adjustment to the size of an object, an adjustment to the rotational  orientation of an object, or an adjustment to the location of an object. In order to provide the transformations18, the translator14may pull in extra information16, such as the robot configuration, perception data, historical data or data from other sources. The collection of this extra information16is indicated inFIG.1by the configuration input16to the translator14. In some situations, the translator14might not have all the information it needs to output a trajectory transformation18. The translator14then prompts the user10to provide a more specific description12or provide specific information12. In other situations, the translator14may determine that the described modification is infeasible. The translator14may then notify the user10that the requested modification is not feasible and may prompt the user10for a different modification description12.

The transformer20then receives a series of transformations18from the translator14. The transformer20also receives the existing robotic trajectories22and applies the transformations18to the trajectories22. Thus, the order of the trajectories is used in the method and system in that the transformer20starts from the coordinates of an existing robot task22and modifies the existing robot task22with the transformation18. However, in some situations, no existing robotic trajectories22(i.e., actual operational robot tasks) have been developed for the particular robot task, for example, when specifying a completely new task or when changing the underlying robotic system. In this situation, the method and system supplies the transformer20with robotic trajectories22corresponding to often occurring robot motions called motion primitives22. The motion primitives22may be pre-established and may be included with the high-level description12supplied by the user10. A plurality of motion primitives22may also be provided to the user10in a library to allow the user10to combine together selected motion primitives22to form a complete robot trajectory22.

The resulting transformed trajectory24is then programmed onto the controller26. The controller26and the robot30are preferably conventional components that require specialized robot programming software code in order to perform a trajectory. Thus, it is possible for the improved method and system to use existing controllers26and robots30without any alterations thereof. That is, the trajectories24that are fed to the controller26are transformed by the transformer20into conventional specialized programming software code used by conventional controllers26and robots30. It may be desirable for the translator14and the transformer20to be separate software components that are independent of the controller26and the robot30in order to simplify use of the system with conventional controllers26and robots30. It is understood that the existing robot trajectory22and the updated robot trajectory24both include a time series of coordinates for the robot to follow. The controller26then drives the robot with a series of commands28using the transformed trajectories24. The robot30then performs the trajectory24, which is labeled as the response32inFIG.1. The user10may then observe the robot response32, directly or indirectly, and accepts the resulting response32if it is deemed to be satisfactory or may decide to alter the high-level description12if a different trajectory response is desired.

As an illustrative example, the robotic system may be one that folds cardboard boxes. In such a system, the trajectories22for the manipulation of a standard size box may already exist and may be aligned with the workspace in front of the robot30. The robot30may also be equipped with a perception subsystem with a camera. However, it is possible that a slightly wider cardboard box may arrive at the robot30which is turned 45° with respect to the expected orientation. A possible high-level command12supplied by the user10may be, for example, “this box is 20% wider and is rotated”. The translator14receives the description12and requests an estimated rotation16from the perception subsystem. This is an example of extra information16pulled in by the translator14(the configuration input16inFIG.1). The translator14then outputs a series of transformations18, e.g., “scale horizontal component by 120% and rotate entire trajectory by 45 degrees around the vertical axis”. This collection of transformations18then feeds into the transformer20. First, the transformer20multiplies the horizontal component of the coordinates of the robot trajectory22for the standard size box by 120%. Then, the transformer20rotates the scaled trajectory by 45° around the vertical axis. The resulting trajectory24is a new robot task that is suitable for handling the modified box. The robot20is now ready to carry out the task and fold the modified box. If the user10is satisfied with the way the robot30handles the modified box, the robot30can move on to the next task. If not,  the user10may choose to alter the description12, e.g., “this box is 20% wider and is rotated counter-clockwise”.

While preferred embodiments of the inventions have been described, it should be understood that the inventions are not so limited, and modifications may be made without departing from the inventions herein. While each embodiment described herein may refer only to certain features and may not specifically refer to every feature described with respect to other embodiments, it should be recognized that the features described herein are interchangeable unless described otherwise, even where no reference is made to a specific feature. It should also be understood that the advantages described above are not necessarily the only advantages of the inventions, and it is not necessarily expected that all of the described advantages will be achieved with every embodiment of the inventions. The scope of the inventions is defined by the appended claims, and all devices and methods that come within the meaning of the claims, either literally or by equivalence, are intended to be embraced therein.