Industrial Robot And Method For Controlling The Robot To Automatically Select Which Program Code To Be Executed Next
20180345494 · 2018-12-06
Inventors
- Annika Hedlund (Västerås, SE)
- Ivan Lundberg (Västerås, SE)
- Jonathan Styrud (Västerås, SE)
- Martin Nordvall (Västerås, SE)
- Ralph Sjöberg (Västerås, SE)
- Tomas Groth (Västerås, SE)
Cpc classification
B25J9/1656
PERFORMING OPERATIONS; TRANSPORTING
G05B2219/39453
PHYSICS
B25J9/1664
PERFORMING OPERATIONS; TRANSPORTING
G05B2219/50049
PHYSICS
International classification
Abstract
An industrial robot including a manipulator and a robot control unit are disclosed, wherein the manipulator includes a plurality of joints that are moved under the control of the control unit, and the control unit includes a storage medium including program code for controlling the motions of the robot when executed by the control unit. The control unit is configured to automatically select which part of the program code to be executed next based on the position of the robot. A method for controlling the robot is also disclosed.
Claims
1.-15. (canceled)
16. A method for controlling an industrial robot comprising a manipulator and a control unit including program code for controlling the motions of the manipulator, wherein the method includes: defining a plurality of locations in the surroundings of the manipulator, each of the locations being assigned a part of the program code, manually moving the robot to a new position when execution of the current program part has been interrupted, automatically selecting which part of the program code to be executed next based on the closeness between new position of the manipulator and the defined locations, and upon command executing the selected part of the program code.
17. The method according to claim 16, wherein the method includes determining the closeness between the current position of the robot and the locations, and selecting the program code assigned to the location based on the closeness to the current position of the robot.
18. The method according to claim 16, wherein the method includes detecting that execution of the program code has been stopped, and upon command start execution of the selected part of the program code.
19. The method according to claim 16, wherein the method includes presenting the result of the selection on a user interface, and executing the selected part of the program code upon receiving an approval from the user.
20. The method according to claim 16, wherein said program code includes program code for controlling the robot to perform a plurality of tasks, and the method includes automatically selecting which task to be executed next based on the position of the robot.
21. The method according to claim 20, wherein the method includes deciding whether to continue execution of the current task or to execute another of said tasks based on the position of the robot.
22. The method according to claim 16, wherein said locations include a plurality of defined points, each of the defined points being assigned a part of the program code, and the method includes: determining the closeness between the current position of the robot and the defined points, and selecting which part of the program code to be executed next based on the closeness between the current position of the robot and the defined points.
23. The method according to claim 22, wherein the method includes: storing a stop position of the robot when execution of the program code has been interrupted, determining the closeness between the current position of the robot and the stop position of the robot, and selecting which part of the program code to be executed next based on the determined closeness between the current position of the robot, the defined points and the stop position such that the currently executed part of the program code is selected if the position of the robot is closest to the stop position, and otherwise the part of the robot program code assigned to the defined point closest to the position of the robot is selected.
24. The method according to claim 16, wherein said locations includes a plurality of defined zones within the operating range of the robot, and each of the zones being assigned a part of the program code, and the method includes: determining whether the position of the robot is within any of said zones, and selecting which part of the program code to be executed next based on in which of said zones the current position of the robot is located.
25. An industrial robot including a manipulator and a robot control unit, wherein the manipulator includes a plurality of joints that are moved under the control of the control unit, and the control unit includes a storage medium including program code for controlling the motions of the manipulator when executed by the control unit, wherein a plurality of locations in the surroundings of the manipulator have been defined, each of the locations being assigned a part of the program code, and the control unit is configured to automatically select which part of the program code to be executed next based on the closeness between the current position of the manipulator and the defined locations when execution of the current program part has been interrupted, and to execute the selected part of the program code upon command.
26. The industrial robot according to claim 25, wherein the robot includes a user interface, and the control unit is configured to present the result of the selection on the user interface, and to execute the selected part of the program code upon receiving an approval from the user.
27. The method according to claim 17, wherein the method includes detecting that execution of the program code has been stopped, and upon command start execution of the selected part of the program code.
28. The method according to claim 17, wherein the method includes presenting the result of the selection on a user interface, and executing the selected part of the program code upon receiving an approval from the user.
29. The method according to claim 17, wherein said program code includes program code for controlling the robot to perform a plurality of tasks, and the method includes automatically selecting which task to be executed next based on the position of the robot.
30. The method according to claim 17, wherein said locations include a plurality of defined points, each of the defined points being assigned a part of the program code, and the method includes: determining the closeness between the current position of the robot and the defined points, and selecting which part of the program code to be executed next based on the closeness between the current position of the robot and the defined points.
31. The method according to claim 17, wherein said locations includes a plurality of defined zones within the operating range of the robot, and each of the zones being assigned a part of the program code, and the method includes: determining whether the position of the robot is within any of said zones, and selecting which part of the program code to be executed next based on in which of said zones the current position of the robot is located.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0034] The invention will now be explained more closely by the description of different embodiments of the invention and with reference to the appended figures.
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
DETAILED DESCRIPTION
[0041]
[0042] The control unit includes software as well as hardware, such as input and output means, a processor unit including one or more central processing units (CPU) for handling main functions of the robot controller, such as executing robot programs. The control unit has a storage medium 4 for storing program code for controlling the motions of the manipulator. The robot may also include a user interface 6 to allow communication between the robot and a user, such as a robot operator. The user interface 6 is, for example, a portable operating device for teaching and manually operating the robot. Alternatively, the user interface is a screen with touch functionally, such as a tablet or a cell phone.
[0043] According to the invention, the control unit 2 is configured to automatically select which part of the program code to be executed next based on the position of the robot. The program code may comprise program code for controlling the robot to perform a plurality of tasks, and in one embodiment of the invention the control unit is configured to automatically select which task to be executed next based on the position of the robot.
[0044] With the position of the robot is meant the position of the manipulator 3 of the robot. The position of the robot can be defined as the position of a prescribed part of the robot, for example, a part of the robot arm. The position of the robot can also be given by the TCP of the robot. The position of the robot can also be given by the positions of a defined set of axes of the robot.
[0045] The control unit is configured to select which part of the program code to be executed next based on the current position of the robot and a plurality of locations defined in the vicinity of the robot. Each of the locations is assigned a part of the program code, and it is determined where to start execution of the program code. Which part of the program code to execute next, and accordingly where to start execution of the program code is determined by some kind of measure of closeness between the current robot position and the defined locations, and a defined criteria for the closeness. The criteria is, for example, that the position of the robot is within defined zones, or that the robot is close to defined points. If more than one location fulfills the closeness criteria, more than one program part can be selected and presented to the user with an option to choose which of the selected program parts to be executed next. The chosen program part is then executed. If the criteria is a range, the user may select another program part than what was suggested as a first choice.
[0046] Suitably, the control unit is configured to upon command execute the selected part of the program code. For example, the user has to approve the selection before the selected program part is executed e.g. by using the user interface 6, by touching the robot, automatically after a timeout, or by other means. The user interface 6 can, for example, be provided with a touch button 8. The selected part of the program code can be displayed on the user interface 6, and the user can approve the selected program part by interacting with the user interface. The user can also approve the selection by giving a touch command, for example, by tapping on the robot. If the selected part of the program code is a program procedure or a robot program for carrying out a task, the name of the procedure, the robot program or the task can suitably be presented on the user interface. Execution of the selected part of the program code could then be started when the user has approved the selection. If multiple choices fulfill the defined criteria for closeness, a selection choice can be given to the user, e.g. through the user interface 6.
[0047] For example, the control unit is configured to select which part of the program code to be executed next when execution of the current program part has been interrupted or when the movements of the robot have been stopped. By supervising the movements of the robot it can be detected that the robot has been stopped.
[0048] In one embodiment of the invention, the control unit is configured to select to continue execution of the presently executed part of the program code, or to execute another part of the program code based on the position of the robot. In this embodiment, the control unit also takes into account the possibility to continue execution of the present program code. If the robot is not moved to another location, or only a short distance, after it has been stopped, execution of the current part of the program code is resumed. If the robot instead is moved such that it is closer to one of the defined locations after it has been stopped, a new part of the program code is executed. Thus, the user can choose to resume the present task or to switch to another task. In this embodiment of the invention, the control unit is configured to store a stop position of the robot when execution of the program code has been interrupted, and to select which part of the program code to be executed next based on the defined locations as well as the stop position of the robot. For example, the control unit is configured to determine the closeness between the current position of the robot and the stop position of the robot, and to select which part of the program code to be executed next based on the determined closeness between the current position of the robot and the defined locations, and the closeness between the current position of the robot and the stop position. The control unit is configured to select the currently executed part of the program code if the current position of the robot is closest to the stop position, and otherwise to select the part of the robot code assigned to the location closest to the current position of the robot.
[0049]
[0050] In an alternative embodiment of the invention, a first task could be defined using target points to the left of the robot and a second task could be defined using target points to the right of the robot. By moving the robot, preferably by hand, to the left of the robot, the control unit determines that the first task should be executed. If instead the robot is moved to the right, the control unit determines that the second task should be executed. Which task to execute is determined by some kind of measure of closeness between the current robot position and the target points used in the different tasks.
[0051]
[0052]
[0053]
[0054]
[0055]
[0056] In this embodiment, a plurality of points are defined in the vicinity of the robot. Each of the defined points is assigned a part of the program code. The method comprises executing a part of the robot program, block 90. Determining whether execution of the program part has been stopped, block 92. When execution of the program part has been stopped, the stop position of the robot is determined and stored, block 94. The current position of the robot is determined, block 96. The distances between the current position of the robot and the positions of the defined points are determined, and the distance between the current position of the robot and the stop position is determined, block 98. In a next step it is determined based on the determined distances which of the positions the robot is closest to, block 100. The part of the program code assigned to the position closest to the current position of the robot is selected. If the position of the robot is closest to the stop position, the currently executed part of the program code is selected, block 102 and 104. If the position of the robot is closest to one of the defined points, the program part assigned to the defined point closest to the position of the robot is selected, block 106. The selected program part is presented to the user, block 108. If more than one point is a candidate for being close to the robot position, based on the criteria for what is considered to be closest, the user may be presented with an option to choose from these points. The selection of which part of the program code to be executed next is repeated until a start command is received, block 110. In the meantime, the user may move the robot to new positions within the working area of the robot. When the user agrees to execute the presented program part, he approves the selection, for example, by tapping on the robot. Upon receiving the approval, a start command is generated. Execution of the presently selected part of the program is started upon receiving the start command, block 112.