A ROBOT CONTROLLER WITH INTEGRATED LOGIC FUNCTIONALITY
20230405819 ยท 2023-12-21
Assignee
Inventors
Cpc classification
B25J9/1682
PERFORMING OPERATIONS; TRANSPORTING
B25J9/161
PERFORMING OPERATIONS; TRANSPORTING
G05B2219/31089
PHYSICS
B25J9/1602
PERFORMING OPERATIONS; TRANSPORTING
B25J9/0093
PERFORMING OPERATIONS; TRANSPORTING
B25J13/06
PERFORMING OPERATIONS; TRANSPORTING
International classification
B25J13/06
PERFORMING OPERATIONS; TRANSPORTING
Abstract
The invention relates to a robot system comprising: a robot arm, a robot controller configured to execute a robot control In process based on a robot control software program and an auxiliary control process based on an auxiliary control software program; and a peripheral device communicatively connected to the 5 robot controller. Execution of the robot control process is performed by the robot controller resulting in operation of the robot arm. Execution of the auxiliary control process is performed by the robot controller resulting in establishing of a logic signal based on an application input signal received from the robot control process or the peripheral device. The auxiliary control process is configured to 10 establish a logic output signal based on the logic signal and, based on the logic output signal, configured to control operation of any of the robot control process and the peripheral device.
Claims
1. A system comprising: a robotic arm comprising joints connecting a base and a tool flange; a robot controller configured to execute processes comprising: a robot control software program to implement a robot control process; and an auxiliary control software program to implement an auxiliary control process; and one or more peripheral devices communicatively connected to the robot controller; wherein the robot control process causes operation of the robotic arm; wherein the auxiliary control process is configured to produce one or more logic signals based on at least one application input signal received from at least one of the robot control process or the one or more peripheral devices; and wherein the auxiliary control process is configured to produce, at least one logic output signal based on the one or more logic signals, and and is configured to control operation of at least one of the robot control process or the one or more peripheral devices based on the at least one logic output signal.
2. The system of claim 1, wherein the robot control process and the auxiliary control process are configured for parallel operation on the robot controller.
3. The system of claim 1, wherein the auxiliary control process is configured for continuous operation; and wherein the auxiliary control process is configured to produce the at least one logic output signal within a program cycle in which the auxiliary control process is operated independently of a state of the at least one application input signal.
4. The system of claim 1, wherein the auxiliary control process is configured to execute sub-processes; and wherein each of the sub-processes is configured to produce least one of the logic output signals.
5. The system of claim 4, wherein the auxiliary control process is configured to execute the sub-processes concurrently.
6. The system of claim 1, wherein the robot controller comprises a multi-core processor; and wherein the robot control software program and the auxiliary control software program are executed on different cores of the multi-core processor.
7. The system of claim 1, wherein a logic output signal is based on logical operations applied to the one or more logic signals.
8. The system of claim 1, wherein the at least one logic output signal is output to operate a tool attached to the tool flange.
9. The system of claim 1, wherein the robot controller is configured to receive an application input signal from the tool.
10. The system of claim 1, wherein a peripheral device of the one or more peripheral devices is communicatively connected directly to the robot controller.
11. The system of claim 1, further comprising: a programming device to provide the robot control software program and the auxiliary control software program.
12. The system of claim 11, wherein the programming device is configured to implement a simulation indicative of operation of the system based on execution of the robot control software program and the auxiliary control software program.
13. The system of claim 1, wherein at least one of the one or more peripheral devices is an output device.
14. The system of claim 1, wherein the one or more peripheral devices are configured for use during an operation cycle of the system.
15. The system of claim 1, wherein the system comprises at least one of: the at least one application input signal is received from the one or more peripheral devices; or the auxiliary control process is configured to control the one or more peripheral devices.
16. The system of claim 1, wherein the robotic arm is configured to operate based on the at least one logic output signal.
17. The system of claim 1, wherein the auxiliary control process is configured to control operation of the one or more peripheral devices based on the at least one logic output signal.
18. The system of claim 1, wherein the robot control process is configured to generate the at least one application input signal.
19. The system of claim 1, wherein the one or more peripheral devices are configured to generate the at least one application input signal.
20. The system of claim 1, wherein each of the one or more logic signals is indicative of a state of a peripheral device or the robot control process.
21. The system of claim 1, wherein the at least one logic output signal comprises a logic output signal that is the same signal as one of the one or more logic signals.
22. The system of claim 1, wherein the at least one logic output signal comprises a logic output signal that is based on logical operations applied to at least one of the logic signals.
23. The system of claim 1, wherein one of the logic signals is an application input signal.
24. The system of claim 1, wherein operation of the robotic arm comprises the robotic arm controlling the tool flange holding a tool to apply the tool to an object.
25. The system of claim 1, wherein a peripheral device of the one or more peripheral devices is in direct communication with the auxiliary control process.
26. The system of claim 1, wherein a peripheral device of the one or more peripheral devices is in direct communication with the auxiliary control software program.
27. The system of claim 1, wherein each peripheral device of the one or more peripheral devices is in direct communication with the robot controller.
28. The system of claim 1, wherein each peripheral device of the one or more peripheral devices is in direct communication with the auxiliary control process.
29. The system of claim 1, wherein each peripheral device of the one or more peripheral devices is in direct communication with the auxiliary control software program.
30. The system of claim 1, wherein the robot control software program comprises robot control software code that has been compiled.
31. The system of claim 30, wherein the auxiliary control software program comprises auxiliary control software code that has been compiled.
32. The system of claim 31, further comprising: a programming device to provide the robot control software code and the auxiliary control software code; wherein the programming device is programmed to enable configuration of the robot control software code and the auxiliary control software code.
33. The system of claim 32, wherein the programming device comprises a programming environment to configure the robot control software code and the auxiliary control software code.
34. The system of claim 32, wherein the programming device is configured to executed a simulation based on operation of the system, the simulation being based on the robot control software code and said the control software code.
35. The system of claim 32, wherein the programming device is configured to provide an evaluation of operation feasibility of the system based on the simulation; and wherein the evaluation of operation feasibility is indicative of whether the system is able to operate as instructed by the robot control software code and the auxiliary control software code.
36. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a camera.
37. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a 3D (three dimensional) camera.
38. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a sensor.
39. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a conveyer belt.
40. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a peripheral display.
41. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises an indication light.
42. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a valve.
43. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a user input mechanism,
44. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a mobile robot.
45. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises an actuator.
46. The system of claim 1, wherein a peripheral device of said the or more peripheral devices comprises processing equipment, the processing equipment comprising at least one of a CNC (computer numerical control) machine, a pinching machine, or a molding machine.
47. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises a PC (personal computer) or other type of computing device.
48. The system of claim 1, wherein a peripheral device of the one or more peripheral devices comprises an auxiliary robot system.
49. The system of claim 1, wherein the robot controller comprises a PLC (programmable logic circuit) software code import and translation module.
50. A method for controlling operation of a robot system, the method comprising: providing at least one application input signal to an auxiliary control process implemented by executing an auxiliary control software program on a robot controller, the at least one application input signal being from at least one of a peripheral device in the robot system or a robot control process implemented by executing a robot control software program on the robot controller; the auxiliary control process generating one or more logic signals based on the at least one application input signal; the auxiliary control process producing at least one logic output signal based on the one or more logic signals; providing the at least one logic output signal to the peripheral device or the robot control process; and and the robot controller controlling a robotic arm in the robot system using the robot control process, wherein the robotic arm comprises joints connecting a base and a robot tool flange, and wherein the robot controller controls at least one of the peripheral device or the robotic arm based on the at least one logic output signal.
51. The method of claim 50, further comprising: compiling robot control software code to produce the robot control software program.
52. The method of claim 51, further comprising: compiling auxiliary control software code to produce auxiliary control software program.
53. The method of claim 52, wherein the robot control software code and the auxiliary control software code are produced using a programming environment on a programming device.
54. The method of claim 53, further comprising: simulating at least one of the following operations: providing the at least one application input signal, the auxiliary control process generating the one or more logic signals, the auxiliary control process producing the at least one logic output signal, providing the at least one logic output signal, or the robot controller controlling the robotic arm; wherein the simulating is performed on the programming device and is based on the robot control software code and the auxiliary control software code.
55. The method of claim 50, wherein the auxiliary control process producing the at least one logic output signal is is implemented by performing the auxiliary control process within a program cycle independently of a state of the at least one application input signal.
56. The method of claim 50, wherein the auxiliary control process producing the at least one logic output signal comprises executing sub-processes of the auxiliary control process, where each of the sub-processes is configured to produce at least one of the logic output signals.
57. The method of claim 56, wherein the sub-processes are executed concurrently.
58. The method of claim 50, wherein providing the at least one application input signal is performed during at least one of the auxiliary control process or the robot control process.
59. The method of claim 50, wherein providing the at least one application input signal is performed during operation of the robot system.
60. The method of claim 50, wherein providing the at least one application input signal is performed autonomously.
61. The method of claim 50, wherein the robot control process and the auxiliary control process are separate processes performed on the robot controller.
62. A pre-programmed computing system configured to perform the method of claim 50.
63. The method of claim 50, wherein the peripheral device interacts with an application object at least partially during at least one of the auxiliary control process or the robot control process.
64. The method of claim 54, further comprising: evaluating an operation feasibility of the robot control software code and the auxiliary control software code, wherein the operation feasibility is based on the simulating.
65. The method of claim 64, wherein the operation feasibility is indicative of whether the robot system is able to operate as instructed by the robot control software code and the auxiliary control software code.
66. A method for controlling operation of a peripheral device of a system comprising a robotic arm, the method comprising: providing at least one application input signal to an auxiliary control process of the system, the at least one application input signal being from at least one of a robot controller or one or more peripheral devices; generating one or more logic signals based on the at least one application input signal by executing the auxiliary control process; establishing, by the auxiliary control process, at least one output signal based on the one or more logic signals; and providing the at least one output signal to a peripheral device of the one or more peripheral devices to control the peripheral device.
67. The method of claim 66, wherein the at least one output signal comprises at least one logic output signal.
68. The method of claim 66, wherein the robot controller controls the robotic arm by executing a robot control process.
69. The method of claim 66, wherein the system is a robotic system.
70. A distributed control system for a peripheral device of a robot system, wherein the robot system comprises a robotic arm, a controller, and a peripheral device, wherein the robotic arm comprises joints connecting a base and a tool flange, wherein the controller is at least configured to execute a robot control process to control operation of the robotic arm, and wherein the distributed control system comprises: a first control block located in the robot controller; and a second control block located outside the robot controller; wherein the first control block and the second control block are configured to collectively control the peripheral device in coordination with the robot control process controlling the robotic arm, and wherein the coordination is implemented via a communicative connection between the robot control process and the first control block. cm 71. The distributed control system of claim 70, wherein the second control block is located in the peripheral device.
72. The distributed control system of claim 70, wherein the first control block and the second control block are located in separate casings.
73. The distributed control system of claim 70, wherein the first control block is configured to implement an auxiliary control process.
74. (canceled)
75. A peripheral device controller configured to execute processes comprising: a robot control process based on a robot control software program; and an auxiliary control process based on an auxiliary control software program; wherein execution of the robot control process causes operation of a robotic arm communicatively connected to the peripheral device controller; wherein execution of the auxiliary control process produces one or more logic signals based on at least one application input signal received from at least one of the robot control process or one or more peripheral devices; and wherein the auxiliary control process is configured to establish at least one logic output signal based on the one or more logic signals, and is configured to control operation of at least one of the robot control process or the one or more peripheral devices based on said at least one logic output signal.
76. (canceled)
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
DETAILED DESCRIPTION OF THE INVENTION
[0184] The present invention is described in view of exemplary embodiments only intended to illustrate the principles of the present invention. The skilled person will be able to provide several embodiments within the scope of the claims.
[0185]
[0186] A robot tool flange reference point 107 also known as a Tool Center Point (TCP) is indicated at the robot tool flange and defines the origin of a tool flange coordinate system defining three coordinate axis x.sub.flange, y.sub.flange, z.sub.flange. In the illustrated embodiment the origin of the robot tool flange coordinate system has been arrange on the tool flange axis 105f with one axis (z.sub.flange) parallel with the tool flange axis and with the other axes x.sub.flange, y.sub.flange parallel with the outer surface of the robot tool flange 104. Further a base reference point 108 is coincident with the origin of a robot base coordinate system defining three coordinate axes x.sub.base, y.sub.base, z.sub.base. In the illustrated embodiment the origin of the robot base coordinate system has been arrange on the base axis 105a with one axis (z.sub.base) parallel with the base axis 105a and with the other axes x.sub.base, y.sub.base parallel with the bottom surface of the robot base. The direction of gravity 109 in relation to the robot arm is also indicated by an arrow and it is to be understood that the robot arm can be arrange at any position and orientation in relation to gravity.
[0187] The robot arm comprises at least one robot controller 110 configured to control the robot arm 101 and can be provided as a computer comprising in interface device 111 enabling a user to control and program the robot arm. The controller 110 can be provided as an external device as illustrated in
[0188] The robot tool flange 104 comprises a force-torque sensor 114 (sometimes referred to simply as fore sensor) integrated into the robot tool flange 104. The force-torque sensor 114 provides a tool flange force signal indicating a force-torque provided at the robot tool flange. In the illustrated embodiment the force-torque sensor is integrated into the robot tool flange and is configured to indicate the forces and torques applied to the robot tool flange in relation to the robot tool flange reference point 107. The force sensor 114 provides a force signal indicating a force provided at the tool flange. In the illustrated embodiment the force sensor is integrated into the robot tool flange and is configured to indicate the forces and torques applied to the robot tool flange in relation to the reference point 107 and in the tool flange coordinate system. However, the force-torque sensor can indicate the force-torque applied to the robot tool flange in relation to any point which can be linked to the robot tool flange coordinate system. In one embodiment the force-torque sensor is provided as a six-axis force-torque sensor configured to indicate the forces along and the torques around three perpendicular axes. The force-torque sensor can for instance be provided as any force-torque sensor capable of indicating the forces and torques in relation to a reference point for instance any of the force-torque sensors disclosed by WO2014/110682A1, U.S. Pat. No. 4,763,531, US2015204742. However, it is to be understood that the force sensor in relation to the present invention not necessarily need to be capable of sensing the torque applied to the tool sensor. It is noted that the force-torque sensor may be provided as an external device arranged at the robot tool flange or omitted.
[0189] An acceleration sensor 115 is arranged at the robot tool joint 102f and is configured to sense the acceleration of the robot tool joint 102f and/or the acceleration of the robot tool flange 104. The acceleration sensor 115 provides an acceleration signal indicating the acceleration of the robot tool joint 102f and/or the acceleration of the robot tool flange 104. In the illustrated embodiment the acceleration sensor is integrated into the robot tool joint and is configured to indicate accelerations of the robot tool joint in the robot tool coordinate system. However, the acceleration sensor can indicate the acceleration of the robot tool joint in relation to any point which can be linked to the robot tool flange coordinate system. The acceleration sensor can be provided as any accelerometer capable of indicating the accelerations of an object. The acceleration sensor can for instance be provided as an IMU (Inertial Measurement Unit) capable of indicating both linear acceleration and rotational accelerations of an object. It is noted that the acceleration sensor may be provided as an external device arranged at the robot tool flange or omitted.
[0190] Each of the robot joints comprises a robot joint body and an output flange rotatable or translatable in relation to the robot joint body and the output flange is connected to a neighbor robot joint either directly or via an arm section as known in the art. The robot joint comprises a joint motor configured to rotate or translate the output flange in relation to the robot joint body, for instance via a gearing or directly connected to the motor shaft. The robot joint body can for instance be formed as a joint housing and the joint motor can be arranged inside the joint housing and the output flange can extend out of the joint housing. Additionally, the robot joint comprises at least one joint sensor providing a sensor signal indicative of at least one of the following parameters: an angular and/or linear position of the output flange, an angular and/or linear position of the motor shaft of the joint motor, a motor current of the joint motor or an external force and/or torque trying to rotate the output flange or motor shaft. For instance, the angular position of the output flange can be indicated by an output encoder such as optical encoders, magnetic encoders which can indicate the angular position of the output flange in relation to the robot joint. Similarly, the angular position of the joint motor shaft can be provided by an input encoder such as optical encoders, magnetic encoders which can indicate the angular position of the motor shaft in relation to the robot joint. It is noted that both output encoders indicating the angular position of the output flange and input encoders indicating the angular position of the motor shaft can be provided, which in embodiments where a gearing have been provided makes it possible to determine a relationship between the input and output side of the gearing. The joint sensor can also be provided as a current sensor indicating the current through the joint motor and thus be used to obtain the torque provided by the motor. For instance, in connection with a multiphase motor, a plurality of current sensors can be provided in order to obtain the current through each of the phases of the multiphase motor. It is also noted that some of the robot joints may comprise a plurality of output flanges rotatable and/or translatable by joint actuators, for instance one of the robot joints may comprise a first output flange rotating/translating a first part of the robot arm in relation to the robot joint and a second output flange rotating/translating a second part of the robot arm in relation to the robot joint.
[0191] The robot controller 110 is configured to control the motions of the robot arm by controlling the motor torque provided to the joint motors based on a dynamic model of the robot arm, the direction of gravity acting 109 and the joint sensor signal.
[0192]
[0193] The robot controller 110 comprises a processer 220 and memory 221 and is configured to control the joint motors of the robot joints by providing motor control signals 223a, 223b, 223f to the joint motors. The motor control signals 223a, 223b, 223f are indicative of the motor torque T.sub.motor,a, T.sub.motor,b, and T.sub.motor,f that each joint motor shall provide to the output flanges and the robot controller 110 is configured to determine the motor torque based on a dynamic model of the robot arm as known in the prior art. The dynamic model makes it possible for the controller 110 to calculate which torque the joint motors shall provide to each of the joint motors to make the robot arm perform a desired movement. The dynamic model of the robot arm can be stored in the memory 221 and be adjusted based on the joint sensor parameters J.sub.sensor,a, J.sub.sensor,b, J.sub.sensor,f For instance, the joint motors can be provided as multiphase electromotors and the robot controller 110 can be configured to adjust the motor torque provided by the joint motors by regulating the current through the phases of the multiphase motors as known in the art of motor regulation.
[0194] Robot tool joint 102f comprises the force sensor 114 providing a tool flange force signal 224 indicating a force-torque FT.sub.flange provided to the tool flange. For instance, the force signal-torque FT.sub.flange can be indicated as a force vector {right arrow over (F.sub.sensor.sup.flange)} and a torque vector {right arrow over (T.sub.sensor.sup.flange)} in the robot tool flange coordinate system:
where F.sub.x,sensor.sup.flange is the indicated force along the x.sub.flange axis, F.sub.y,sensor.sup.flange is the indicated force along the y.sub.flange axis and F.sub.z,sensor.sup.flange is the indicated force along the z.sub.flange axis.
[0195] In addition to the above, the robot controller 110 of the present invention may include a PLC code import/translate module (not illustrated). Such module facilitates importing PLC code stored e.g. on a PLC or on a PLC code developing tool connected to the robot controller either directly (e.g. wired or wireless connection) or indirectly (via e.g. the internet). Further, such module may facilitate translation of the PLC code to robot control software executable the robot controller.
[0196] In an embodiment where the force sensor is provided as a combined force-torque sensor the force-torque sensor can additionally also provide a torque signal indicating the torque provide to the tool flange, for instance as a separate signal (not illustrated) or as a part of the force signal. The torque can be indicated as a torque vector in the robot tool flange coordinate system:
where T.sub.x,sensor.sup.flange is the indicated torque around the x.sub.flange axis, T.sub.y,sensor.sup.flange is the indicated torque around the y.sub.flange axis and T.sub.z,sensor.sup.flange is the indicated torque around the z.sub.flange axis.
[0197] Robot tool joint 102f comprises the acceleration sensor 115 providing an acceleration signal 225 indicating the acceleration of the robot tool flange where the acceleration may be indicated in relation to the tool flange coordinate system
where A.sub.x,sensor.sup.flange or is the sensed acceleration along the x.sub.flange axis, A.sub.y,sensor.sup.flange is the sensed acceleration along the y.sub.flange axis and A.sub.z,sensor.sup.flange is the sensed acceleration along the z.sub.flange axis.
[0198] In an embodiment where the acceleration sensor is provided as a combined accelerometer/gyrometer (e.g. an IMU) the acceleration sensor can additionally provide an angular acceleration signal indicating the angular acceleration of the output flange in relation to the robot tool flange coordinate system, for instance as a separate signal (not illustrated) or as a part of the acceleration signal. The angular acceleration signal can indicate an angular acceleration vector {right arrow over (.sub.sensor.sup.flange)} in the robot tool flange coordinate system
where .sub.x,sensor.sup.flange is the angular acceleration around the x.sub.flange axis .sub.y,sensor.sup.flange is the angular acceleration around the y.sub.flange axis and .sub.z,sensor.sup.flange is the angular acceleration around the z.sub.flange axis.
[0199] The force sensor and acceleration sensor of the illustrated robot arm are arranged at the robot tool joint 102f; however, it is to be understood that the force sensor and acceleration sensor can be arrange at any part of the robot arm and that a pluralities of such sensors can be provided at the robot arm.
[0200] In an exemplary embodiment of the invention, the robot arm 101 is part of a robot system, that in addition to the robot arm 101 also comprises two peripheral devices 336, which in this particular embodiment is an object sensor and a conveyer belt. A robot tool is attached to the robot tool flange and is arranged to perform welding of an application object. The object sensor is arranged to detect the presence of an application object at a welding position. The auxiliary control process receives application input signals from the object sensor and the robot control process, upon which logic signals are established. Further, the auxiliary control process provides logic output signals to the conveyer belt and the robot control process based on the logic signals. When no application object is at the welding position, the auxiliary control process is arranged to activate the conveyer belt via a logic output signal. Then, when the object sensor detects an object at the welding position, the auxiliary control process stops the conveyer belt, and initiates movement of the robot arm and welding, via a logic output signal to the robot control process. When welding, as controlled by the robot control process, has completed, movement of the conveyer belt is initiated based on the application input signal from the robot control process. From here, the robot system is ready the receive a new application object via the conveyer belt to repeat the above explained welding process.
[0201] Accordingly, the robot arm 101 and the peripheral devices 336 in the above described exemplary embodiment of the invention are all controlled directly from the robot controller 110 i.e. without the use of additional controllers external to the robot controller as will be described in the following.
[0202]
[0203] In both of these exemplary embodiments, the robot arm 101 is configured to apply its tool 341 to an application object 342. The application object, sometimes referred to as a workpiece, should be understood as the object handled by the robot arm 101 i.e. the object, which is moved, packed, painted, welded, polished, etc. by the robot arm 101. In addition to the description of motion of the robot arm described above, the motion of the robot arm relative to the application object 342 is controlled by the robot control process 334 of the robot controller 110. The communication between the robot control process 334 and the peripheral device 336a, 336b is facilitated by the auxiliary control process 335 of the robot controller 110. As described above, the robot control process 334 is based on a robot control software program, and, similarly, the auxiliary control process 335 is based on an auxiliary control software program.
[0204] As described below, peripheral devices 336, which in the prior art, typically are controlled by a PLC, are according to the present invention controlled by the robot controller 110. This is possible by dividing the software executed by the robot controller 110 into a robot control software code and in an auxiliary control software code. The robot control software code would typically be developed based on the known principles of robot programming e.g. as described above, whereas the auxiliary control software code typically would be developed according to Logic programming principles such as PLC programming executable by the robot controller 110.
[0205] The embodiment illustrated in
[0206] The sensor 336a continuously detects whether an application object 342 is located in the vicinity of the sensor 336a at a position where the robot arm 101 is able to apply its tool 341 to the application object 342. The application input signal 338 is indicative of the presence of the application object 342. When no application object 342 is detected by the sensor 336a, the application input signal 338 is processed into a logic signal 337 which is low, e.g. the application input signal 338 from the sensor 336a is an analogue voltage, and when the signal 338 is below 2.5 V, the analogue voltage is processed into a logic signal 337 which is a binary 0, and when the signal 338 is above 2.5 V, the analogue voltage is processed into a logic signal 337 which is a binary 1. This logic signal 337 is used as logic output signal 339 which is provided to the robot control process 334. While the robot control process 334 is receiving a low logic output signal 339, the robot arm 101 is operated by the robot control process 334 to be in a waiting position, where the robot arm 101 does not apply its tool 341. When an application object 342 is moved to the vicinity of the detector 336a, the application input signal 338 changes accordingly, and in the auxiliary control process 335, the application input signal 338 is now processed into a logic signal 337 which is high, which in turn is provided to the robot control process 334 as a logical output signal 339. Upon receiving a high logical output signal 339, the robot arm 101 is operated by the robot control process 334 to apply its tool 341 to the application object 342. The tool 341 may for example be applied for a predefined amount of time or by moving the robot arm in a predefined movement pattern. When the tool 341 has been applied, the robot arm 101 is operated by the robot control process 334 to be in a waiting position again. The robot arm 101 cannot be operated to apply its tool 341 to an application object 342 until it has received a low logical output signal 339 which is indicative that the application object 342, which had the robot tool 341 applied to it, has been removed. After removal of the application object 342, the process can restart, i.e. a new application object 342 may be moved to the vicinity of the sensor 336a, such that the robot tool 341 is applied again.
[0207] The embodiment illustrated in
[0208] The embodiments of the invention described with respect to
[0209]
[0210] In this exemplary embodiment, the robot arm 101 is configured to apply its tool 341 to an application object 342 brought to the robot arm 101 e.g. on a conveyer belt. A camera is used to analyze whether the application object 342 is correctly placed relative to the robot arm 101. The camera is the first peripheral device 336c and the conveyer belt is the second peripheral device 336d.
[0211] Motion of the robot arm 101 is controlled by the robot control process 334 of the robot controller 110. The communication between the robot control process 334 and the peripheral devices 336c, 336d is facilitated by the auxiliary control process 335 of the robot controller 110.
[0212] The auxiliary control process 335 receives an application input signal 338 from the robot control process 334, which is processed into a robot arm ready logic signal 337, L1 indicative of whether the robot arm 101 is ready or not. The auxiliary control process 335 further receives an application input signal 338 from the camera 336c, which is processed into a peripheral camera logic signal 337, L2 indicative of whether the application object 342 is correctly placed relative to the robot arm 101 or not.
[0213] The auxiliary control process 335 generate logic output signals 339, L3, L4 based on the logic signals 337, L1, L2 and logic operations 450 applied to the logic signals 337, L1, L2. As described with respect to
[0214] Operating the robot system 100 may for example take place as follows, with reference to
[0215] A robot arm operation logic output signal 339, L3 is based on the robot arm ready logic signal 337, L1 and the peripheral camera logic signal 337, L2 and is provided to the robot control process 334. When the two signals 337, L1, L2 become high at time T1, i.e. when the robot is ready and an application object 342 is correctly placed, the robot arm operation logic output signal 339, L3 becomes high as well, e.g. at a later clock period at time T2. Consequently, the robot control process 334 initiates a predetermined operation of the robot arm 101 such that the tool 341 is applied to the application object 342. The robot control process 334 further changes the application input signal 338 such that the robot arm ready logic signal 337, L1 is switched to low at time T3. The robot arm operation logic output signal L3 is kept high for the duration of the operation of the robot and its tool and the robot arm ready logic signal 337, L1 is low until the operation of the robot arm is complete at time T4. At time T4 when the operation of the robot is completed, the robot arm operation logic output signal 339, L3 becomes low, upon which a peripheral conveyer belt logic output signal 339, L4 becomes high for a predetermined amount of time until time T5. Accordingly, the application object 342 is moved by the conveyer belt 336d during the time between time T4 and T5, and consequently the peripheral camera logic signal 337, L2 becomes low. In other words, the conveyer belt 336d is operated to replace the application object 342, which have just had the tool 341 applied to it, with a new application object 342, which have not yet had the tool 341 applied to it. At time T5, the peripheral camera logic signal 337, L2 becomes high, indicating that the operation cycle is ready to repeat.
[0216] Note that the timing in change of the signals L1-L4 of
[0217] In this exemplary embodiment, the robot controller 110 comprises a multi-core processor, where the robot control process 334 is executed on one group of cores of the multi-core processor, and the auxiliary control process 335 is executed on another separate group of cores of the multi-core processor. This ensures that the two processes 334, 335 can be parallelly executed by the robot controller 110.
[0218]
[0219] Not including the programming device 543, the illustrated robot system 100 is substantially similar to the robot system illustrated in
[0220] The programming device 543 associated with this embodiment comprise a graphical user interface 540, which enables a user to generate, evaluate, and edit robot control software code 546 and auxiliary control software code 547 upon which the robot control process 334 and the auxiliary control process 335 are based, respectively. In the illustration of
[0221] The programming device allows the user to compile the robot control software code 546 and auxiliary control software code 547 into program formats which are readable by the robot controller 110. Consequently, the robot controller 110 is able to control a robot control process 334 based on execution of the robot control software program 544 and control an auxiliary control process 335 based on execution of the auxiliary control software program 545. In the illustration of
[0222] The programming device 543 is arranged to facilitate a robot operation simulation 548 based on the robot control software code 546 and the auxiliary control software code 547. The robot operation simulation 548 is arranged to simulate operation of the robot system 100 according to execution of the robot control process 334 based on the robot control software program 544 and execution of the auxiliary control process 335 based on the auxiliary control software program 545. In this way, it is possible to simulate the effect of changes both in the robot control software code 546 and in the auxiliary control software code 547 on the respective robot and auxiliary control processes 334, 335.
[0223] For example, the robot operation simulation 548 may simulate operation of the robot system 100 as described in relation to
[0224] The robot operation simulation 548 is arranged to generate simulation results 549 which are presented to a user. Accordingly, the robot operation simulation 548 may be used to evaluate an operation feasibility of the robot control software code 546 and the auxiliary control software code 547 and changes made thereto. The operation feasibility may for example indicate whether the robot system 100 is able to operate as instructed by the robot and auxiliary control software code 546, 547. For example, a programming error introduced by a user editing the software code 546, 547 or integrating the robot system 101 may result in an operation of the robot system 100 which does not proceed as intended by the user, e.g. if timings or logic operations are inaccurate, and accordingly, a robot operation simulation may provide a notice to a user of the system.
[0225] The robot operation simulation 548 may further comprise a simulation of the physical motion of the robot arm 101 and/or any moving of peripheral devices 336 to evaluate whether this motion is feasible according to the intended operation of the robot system 100.
[0226] In exemplary robot control software code 546 and auxiliary control software code 547, the robot system 100 has erroneously been programmed to apply its robot tool 341 while an application object 342 is not present. When performing a robot operation simulation 548, the user receives simulation results 549, which warns the user that, according to the code, the robot system is arranged to apply its robot tool while an application object is not present.
[0227] In another exemplary robot control software code 546 and auxiliary control software code 547, the user receives a warning that an allocated time duration is too short to perform a necessary operation, e.g. the time duration for applying a robot tool is too short, or the time duration for moving a conveyer belt is too short.
[0228] In another exemplary robot control software code 546 and auxiliary control software code 547, the user receives a warning that an allocated time duration is too long and may be reduced to increase efficiency of the robot system.
[0229] In another exemplary embodiment, from a simulation of the robot control software code 546 and auxiliary control software code 547, the user is able to observe if logic operations may not yield the intended output. For example, a conveyer belt as activated based on a logic output signal, which in turn is based on a logic AND gate applied to logic signals from an object sensor and the robot control process. The logic signal from the object sensor is high when an application object is present, the logic signal from the robot control process high when the robot arm is idle, and the conveyer belt is moved upon a high logic output signal. Consequently, the conveyer belt moves the application object upon an idle signal, but the conveyer belt may not necessarily successfully move a new application object to the robot arm, and therefore a user of the system receives a warning from the simulation. The user may for example fix this problem by implementing logic operations, which ensures that the conveyer belt is also moved when no application object is present
[0230] In another exemplary robot control software code 546 and auxiliary control software code 547, the user receives a warning that the programmed physical movement of the robot arm is not possible, e.g. it may collide with itself or its surroundings.
[0231] In another exemplary embodiment, the simulation results 549 comprises parameters indicative of the expected performance of the robot system 100 according to the robot control software code 546 and auxiliary control software code 547. For example, cycle duration, power consumption, relative idling duration of robot arm etc.
[0232] In some embodiments of the invention, a system similar to the one illustrated in
[0233]
[0234] In a first step M1 of the method, one or more application input signals 338 are transmitted to an auxiliary control process 335 of a robot controller 110. The one or more application input signals 338 may be transmitted from the robot control process 334, from one or more peripheral devices 336 or from both the robot control process 334 and one or more peripheral devices 336.
[0235] In a next step M2 of the method, one or more logic signals 337 are generated based on the one or more application input signals 338 by executing the auxiliary control process based on an auxiliary control software program. The auxiliary control process may for example take place on a processor of a computer such as the robot controller 110, e.g. on one or more cores of a multicore processor. In some embodiments of the invention, an application input signal 338 is used as a logic signal 337.
[0236] In a next step M3 of the method, at least one logic output signal 339 is established by executing the auxiliary control process based on an auxiliary control software program. The at least one logic output signal 339 may be based on the one or more logic signals 337 which are established by converting or processing one or more application input signals 338. The status/value (high or low) of the logic signals 337 may then, dependent on logic Boolean operators of the auxiliary control software code result in one or more logic output signals 339 (the value of a logic output signal 339 is typically 0 or 1/low or high).
[0237] In a next step M4 of the method, the at least one logic output signal 339 may be provided to any of a peripheral device 336 and the robot control process 334. For example, in some embodiments, a logic output signal 339 is provided to a peripheral device 336, in some embodiments, a logic output signal 339 is provided to the robot control process 334, in some embodiments a single logic output signal 339 is provided to both a peripheral device 336 and the robot control process 334, and in some embodiments a logic output signal 339 is provided to a peripheral device 336 while another logic output signal 339 is provided to the robot control process 334.
[0238] In a next step M5 of the method, a robot arm 101 of the robot system 100 is controlled by the robot controller 110 by executing the robot control process 334 based on a robot control software program. Further, the robot controller 110 may at least partly control any of the peripheral device 336 and the robot arm 101 based on one or more logic output signals 339. In some embodiments a peripheral device 336 and the robot arm 101 is at least partly controlled based on the same logic output signal 339 or based on different logic output signals 339.
[0239]
[0240] In a first step M6 of the method, robot and auxiliary control software code 546, 547 are provided. In some embodiments of the invention, this code 546, 547 is provided to the same programming/simulation device 543, e.g. a personal computer or a robot controller 110. In some embodiments of the invention, this code is configurable through a programming/simulation environment installed on the programming/simulation device 543, e.g. the code may be editable via a graphical user interface associated with the environment. Providing robot and auxiliary control software code 546, 547 may for example be understood as establishing the codes, importing the codes, editing codes, etc.
[0241] In a next step M7 of the method, a robot operation simulation 548 is performed. This simulation 548 emulates possible forthcoming steps M10-M14 of the method regarding operation of the robot system 100. The robot operation simulation 548 may for example comprise simulations of signals and signal processing, such as application input signals 338, logical signals 337, logical output signals 339 and processing of these. The robot operation simulation 548 may further comprise simulations of operations of the robot arm 101 and any peripheral devices 336, for example including durations of operations and interactions between signals, operations, application object 342, robot arm 101, robot tool 341, peripheral devices 336, robot control process 334, and auxiliary control process 335. The robot operation simulation 548 may additionally comprise simulations of the physical extend and motion of components of the robot system 100, e.g. the robot arm 101, peripheral devices 336, robot tool 341, and application object 342. As an output, the robot operation simulation 548 generates a simulation result 549, which is a representation of an output of the simulation, e.g. indicative of performance, duration, efficiency etc.
[0242] Hence, with one and the same simulation 548, both robot and auxiliary control software code 546, 547 can be simulated simultaneously. This means, that the effect of changes or additions to any one of the robot and auxiliary control software code 546, 547 can be simulated. Thereby unsuitable effects related to movement or safety of such software changes or additions, either alone or interrelated between the software 546, 547 can be found prior to approving the software for operating the robot arm 101.
[0243] In a next step M8 of the method, the simulation results 549 are evaluated. The simulation results may be evaluated manually by a user of the system or automatically by an automated evaluation algorithm. In some embodiments, the simulation results 549 are evaluated both based on automated evaluation and user interaction. The evaluation may for example include assessment of operation feasibility, assessment of duration of intended robot system operations, etc. If a user and/or an automated evaluation finds the simulation results 549 are indicative of an unsatisfactory performance of the robot system 100, new robot control software code and auxiliary control software code may be provided or updates can be made, i.e. the first step M6 of the method may be repeated, followed by a new simulation M7 and a new evaluation M8. In this way, providing code M6, performing simulations M7, and evaluating simulation results M8 is an iterative process which may be repeated until a satisfactory simulation result has been achieved. The iterative process may be partially of fully automated, or it may be partially or fully manual.
[0244] Whether a simulation result 549 is satisfactory or unsatisfactory may for example be based on user judgment, calculation of parameters indicative of the expected performance of the robot system based on the simulation, or evaluation of operation feasibility.
[0245] In a next step M9 of the method, the robot control software code 546 is compiled to a robot control software program 544 and the auxiliary control software code 547 is compiled to an auxiliary control software program 545. These programs 544, 545 are readable by the robot controller 110. The robot controller 110 may for example be a multi-core processor and the two programs 544, 545 may be used to execute to respective processes 334, 335 on two separate cores or groups of cores.
[0246] In some other embodiments of the invention, the simulation is performed based on the robot control software program 544 and the auxiliary control software program 545, and not based directly on the robot control software code 546 and the auxiliary control software code 547. In these embodiments, the simulation step M7 is performed prior to the compilation step M9. In some other embodiments, simulation is performed based on a combination of compiled and un-compiled code.
[0247] In a next step of the method M10, at least one application input signal 338 is transmitted to an auxiliary control process 335 of the robot controller 110 from any of a peripheral device 336 and the robot control process 334.
[0248] In a next step M11 of the method, one or more logic signals 337 are generated based on the at least one application input signal 338 by executing the auxiliary control process 335 based on the auxiliary control software program 545.
[0249] In a next step M12 of the method, at least one logic output signal 339 is established by executing the auxiliary control process 335. In this way, the at least one logic output signal 339 may be based on the one or more logic signals 337 established in the execution of the auxiliary control process 335.
[0250] In a next step M13 of the method, the at least one logic output signal 339 is provided to any of a peripheral device 336 and/or the robot control software code/program/process.
[0251] In a next step M14 of the method, a robot arm 101 of the robot system 100 is controlled by the robot controller 110 by executing the robot control process 334 based on the robot control software program 544. Further, the robot controller 110 controls any of the peripheral device 336 and the robot arm 101 based on the at least one logic output signal 339.
[0252] Hence the present invention relates to the use of a robot controller to execute auxiliary control software code taking up computational power from the robot controller which is needed for the heavy mathematical process of controlling a robot arm. However, by strategically performing carefully selected logic processing associated with a limited number of peripheral devices, it is possible to execute a robot control process and an auxiliary control process by the robot controller with a minimal impact of the ability for the robot controller to control movement of the robot controller. Accordingly, the invention may primarily be applicable in small and medium-sized robot applications, where a limited amount of computational power is required to execute the auxiliary control process. This is to allow the robot controller to simultaneously control robot arm movement and handling of the application object. However, note that the invention is not limited to any size or type of robot application, particularly due to the ever-increasing computational power of processers which may steadily broaden the robot application range of the invention in the future.
[0253] Note that, generally, any of the method steps of the invention may be performed automatically, for example via a computer or processor, such as the robot controller.
[0254] From the above, it is now clear that the invention relates to a robot system and a method for controlling a robot system. By strategically allocating resources of the robot controller 110 to perform signal processing of logical signals 337, 339, it is possible to reduce the need for auxiliary circuitry, such as external programmable logic circuits, to install a robot arm 101 in a robot application. This improved approach to facilitate the interaction between a robot arm 101 and its robot application further allows enhanced programming of the robot system, which in turn allows a straightforward simulation of the robot system 100 to evaluate and optimize a proposed operation of the system 100. Also the present invention enables to user to perform programming of the robot arm and the signal processing of logic signals in the same programming environment, consequently the user will easier be able to learn and implement both robot programming and signal logic programming of the entire robot system.
[0255] The invention has been exemplified above with the purpose of illustration rather than limitation with reference to specific examples of methods and robot systems. Details such as a specific method and system structures have been provided in order to understand embodiments of the invention. Note that detailed descriptions of well-known systems, devices, circuits, and methods have been omitted so as to not obscure the description of the invention with unnecessary details. It should be understood that the invention is not limited to the particular examples described above and a person skilled in the art can also implement the invention in other embodiments without these specific details. As such, the invention may be designed and altered in a multitude of varieties within the scope of the invention as specified in the claims.
TABLE-US-00001 BRIEF DESCRIPTION OF FIGUR REFERENCES 100 robot system 101 robot arm 102a-102f robot joint 103 robot base 104 robot tool flange 105a-105f axis of robot joints 106a-106f rotation arrow of robot joints 107 robot tool flange reference point 108 robot base reference point 109 direction of gravity 110 robot controller 111 interface device 112 display 113 input devices 114 force torque sensor 115 acceleration sensor 216a; 216b; 216f output flange 217a; 217b; 2179f joint motors 218a; 218B, 218f output axle 219a; 219b; 219f joint sensor 220a-220f joint sensor signal 221 memory 222 processor 223a, 223b, 223f motor control signals 224 force signal 225 acceleration signal 334 robot control process 335 auxiliary control process 336, 336a-336d peripheral devices 337 logic signal 338 application input signal 339 logic output signal 540 graphical user interface 341 robot tool 342 application object 543 programming device 544 robot control software program 545 auxiliary control software program 546 robot control software code 547 auxiliary control software code 548 robot operation simulation 549 simulation results 450 logical operation L1 robot arm ready logic signal L2 peripheral camera logic signal L3 robot arm operation logic output signal L4 peripheral conveyer belt logic output signal M1 application input transmitted M2 generate logic signal M3 establish logic output signal M4 provide logic output signal to device or controller M5 control elements of robot system based at least partly on logic output signals M6 provide software code M7 perform robot operation simulation M8 evaluate simulation results M9 compile software code M10 transmit input signal M11 generate logic signal M12 establish logic output signal M13 provide logic output signal to device or controller M14 control element of the robot system based at least partly on logic output signals