Robot system, control method, and program

WO2026176635A1PCT designated stage Publication Date: 2026-08-27YASKAWA DENKI KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2025/006128
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-02-21
Publication Date
2026-08-27

Smart Images

  • Figure JP2025006128_27082026_PF_FP_ABST
    Figure JP2025006128_27082026_PF_FP_ABST
Patent Text Reader

Abstract

A robot system 1 of the present invention is provided with: a robot drive device 100 that drives a robot 10; and an arithmetic device 200 that performs network communication with the robot drive device 100 and is capable of executing an application 211 necessary for control of the robot 10 in the robot drive device 100. The robot drive device 100 includes: an execution unit 112 that executes a robot program 111 for driving the robot 10; a memory 120 that is readable and writable by the robot program 111 and includes a calling area 121 allocated for calling the application 211; and a communication control unit 113 that transmits the content of the calling area 121 to the arithmetic device 200.
Need to check novelty before this filing date? Find Prior Art

Description

Robot system, control method, and program

[0001] The present disclosure relates to a robot system, a control method, and a program.

[0002] Patent Document 1 discloses a motion control device that installs a non-real-time OS and a real-time OS and motion-controls a control target device. The motion control device has a shared memory that can be commonly referred to and written to by each functional unit on the non-real-time OS side and each functional unit on the real-time OS side.

[0003] Japanese Patent Application Laid-Open No. 2019-220135

[0004] The present disclosure provides a system effective for expanding the functions of a robot.

[0005] A robot system according to one aspect of the present disclosure includes a robot drive device that drives a robot, and an arithmetic device that performs network communication with the robot drive device and can execute an application necessary for controlling the robot in the robot drive device. The robot drive device includes an execution unit that executes a robot program for driving the robot, a memory that can be read from and written to by the robot program and includes a call area assigned for calling an application, and a communication control unit that transmits the content of the call area to the arithmetic device.

[0006] A control method according to another aspect of the present disclosure is a method for a system including a robot drive device that drives a robot and an arithmetic device that performs network communication with the robot drive device and can execute an application necessary for controlling the robot in the robot drive device to control the robot. In the robot drive device, the method includes executing a robot program for driving the robot, performing read and write operations on the memory of the robot drive device based on the executed robot program, and transmitting the content of a call area assigned for calling an application in the memory to the arithmetic device.

[0007] A program relating to yet another aspect of this disclosure is a system comprising a robot drive unit for driving a robot and a computing unit that communicates with the robot drive unit via a network and is capable of executing applications necessary for controlling the robot in the robot drive unit, wherein the program causes the robot drive unit to execute a robot program for driving the robot, to read and write to the robot drive unit's memory based on the running robot program, and to transmit the contents of a call area of ​​the memory allocated for calling an application to the computing unit.

[0008] A program relating to yet another aspect of this disclosure is a system comprising a robot drive unit for driving a robot and a computing unit that communicates with the robot drive unit via a network and is capable of executing applications necessary for controlling the robot in the robot drive unit, wherein the computing unit is instructed to: wait for the contents of a call area allocated for calling an application from the memory read and written by the robot drive unit based on a robot program for driving the robot to be transmitted from the robot drive unit; and receive the contents of the call area transmitted from the robot drive unit and pass the contents of the call area to the corresponding application.

[0009] According to this disclosure, it is possible to provide a system that is effective for expanding the functionality of robots.

[0010] This is a schematic diagram illustrating the configuration of a robot system. This is a block diagram illustrating the functional configurations of the computing unit and the robot drive unit. This is a schematic diagram illustrating the communication between the robot drive unit and the computing unit to monitor the call area. This is a block diagram illustrating a modified robot drive unit. This is a block diagram illustrating a modified robot system. This is a block diagram illustrating another modified robot system. This is a block diagram illustrating another modified robot drive unit. This is a block diagram illustrating the hardware configuration of the computing unit and the robot drive unit. This is a flowchart illustrating the procedure for requesting monitoring of events in the call area. This is a flowchart illustrating the procedure for monitoring events in response to a monitoring request. This is a flowchart illustrating the procedure for periodic communication. This is a flowchart illustrating the procedure for notifying an application of an event. This is a flowchart illustrating the procedure for sending the execution results of an application. This is a flowchart illustrating the procedure for registering the execution results of an application. This is a flowchart illustrating the procedure for updating corresponding data.

[0011] The embodiments will be described in detail below with reference to the drawings. In the description, the same elements or elements having the same function will be denoted by the same reference numeral, and redundant descriptions will be omitted.

[0012] [Robot System] The robot system 1 shown in Figure 1 is a system that causes the robot 10 to perform various tasks. Examples of tasks to be performed by the robot 10 include transporting workpieces, processing workpieces, and assembling workpieces in an industrial production line. For example, the robot system 1 comprises the robot 10 and a control system 20. The robot 10 is, for example, a vertical articulated robot and has a base 11, an articulated arm 12, and an end effector 13. The base 11 is installed on the floor, wall, or ceiling of the work area of ​​the robot 10. The base 11 may also be installed on a mobile vehicle such as an automated guided vehicle. The articulated arm 12 is connected to the base 11. The articulated arm 12 has multiple links 15 connected sequentially from the base 11 at multiple joints 14. The end effector 13 is connected to the tip of the articulated arm 12 and acts on the workpiece for the above-mentioned tasks. Examples of end effectors 13 include a hand for gripping a workpiece, a suction part for adsorbing a workpiece, a tool for machining a workpiece, and a tool for assembling a workpiece (e.g., a fastening tool, a welding tool, etc.). The articulated arm 12 changes the position and orientation of the end effector 13 by changing the angles of each of its multiple joints 14 using an actuator such as an electric motor. The configuration of the robot 10 is just an example and can be changed. For example, the robot 10 may be a SCARA type robot.

[0013] The control system 20 is a system that controls the robot 10. For example, the control system 20 includes a robot drive unit 100 and a computing unit 200. The robot drive unit 100 drives the robot 10. For example, the robot drive unit 100 drives a plurality of joints 14 of the articulated arm 12 and an end effector 13. For example, the robot drive unit 100 repeats a control cycle at a constant drive period which includes acquiring feedback information representing the state of the robot 10 (for example, the angle of each of the plurality of joints 14) and driving the robot 10 to reduce the difference between the target state of the robot 10 and the state of the robot 10 based on the feedback information. Driving the robot 10 includes, for example, supplying drive power to a plurality of actuators that drive each of the plurality of joints 14. Driving the robot 10 includes causing the robot 10 to maintain a certain posture by supplying drive power to the plurality of actuators.

[0014] The computing unit 200 communicates with the robot drive unit 100 via a network. The computing unit 200 can execute applications necessary for controlling the robot 10 in the robot drive unit 100. Network communication is digital communication that identifies the other party using addressing such as an IP address or MAC address. Network communication is executed using a layered protocol such as the TCP / IP model or the OSI model. For example, the TCP / IP model has a network interface layer, an internet layer, a transport layer, and an application layer.

[0015] The application required to control the robot 10 is, for example, an application that generates the information necessary to perform the desired control. The application is executed, for example, while the robot drive unit 100 is driving the robot 10. While the robot drive unit 100 is driving the robot 10, this means the period when the servo is on, and includes the period during which the robot 10 is kept in a certain posture by supplying drive power to multiple actuators.

[0016] For example, an application is a program that performs processing not included in the program executed by the robot drive unit 100 (hereinafter referred to as the "robot program"). Examples of applications include the vision application, force sensing application, and path generation application shown below. A vision application is an application that performs image processing on images captured by a camera installed on the robot 10 or cameras installed around the robot 10 to extract information necessary for controlling the robot. Examples of information necessary for controlling the robot include the position of the workpiece and the position of peripheral devices of the robot 10. The information extracted by image processing is used to generate the motion path of the robot 10. The motion path is information that determines the transition of the position and orientation of the end effector 13. The image processing may include matrix operations suitable for execution by a GPU (Graphics Processing Unit). A force sensing application is an application that generates actions to be performed by the robot 10 in response to the force detected by the force sensing sensor. The path generation application generates a motion path for the robot 10 to perform a task, based on the task to be performed by the robot 10 and a simulation (e.g., interference check) based on a three-dimensional model of the robot 10 and surrounding objects. The simulation, such as interference check, may include matrix operations suitable for execution by a GPU (Graphics Processing Unit). Each application may also be a program that outputs processing results based on a trained model generated by machine learning such as deep learning.

[0017] In the illustrated example, the control system 20 includes a robot drive unit 100, a computing device 200, and a network switch 300 housed in the housing 21 of the robot system 1, and a programming pendant 400 that can be used at a location away from the housing 21. The robot drive unit 100 may be unitized by a sub-housing 22 or the like so that it can be moved in and out of the housing 21 as a single unit. Similarly, the computing device 200 may be unitized by a sub-housing 23 or the like so that it can be moved in and out of the housing 21 as a single unit. The programming pendant 400 is a device operated by an operator to teach the robot drive unit 100 the actions that the robot 10 should perform. The programming pendant 400 may consist of hardware specialized for action teaching, or it may consist of a general-purpose computer such as a tablet computer and a teaching application. The network switch 300 is connected to the robot drive unit 100, the computing unit 200, and the programming pendant 400 by LAN cables or the like, and transfers network communication data between the robot drive unit 100, the computing unit 200, and the programming pendant 400. For example, the network switch 300 transfers data based on MAC addresses at the network interface layer of the TCP / IP model. In addition to being connected via the network switch 300, the robot drive unit 100 and the computing unit 200 may also be directly connected to each other. For example, the robot drive unit 100 and the computing unit 200 may be directly connected to each other by a LAN cable separate from the LAN cable connecting the robot drive unit 100 and the network switch 300, and the LAN cable connecting the computing unit 200 and the network switch 300.

[0018] According to the control system 20, the resources required for robot control can be extended from the robot drive unit 100 to the computing unit 200, allowing for the easy construction of various applications necessary for robot control, exceeding the resource limitations of the robot drive unit 100. Not all of the constructed applications are always needed; which applications are needed changes depending on the task performed by the robot 10. Therefore, it is desirable that the robot drive unit 100, which controls the robot 10, can promptly call the necessary applications according to the actions to be performed by the robot 10. However, the resources of the robot drive unit 100, which is specialized for controlling the robot 10, are limited. Furthermore, it is difficult to significantly change the program execution environment in the robot drive unit 100 in order to continue using existing control programs. Even if it is possible to control the robot 10 based on more advanced data processing, advanced data processing is not necessarily required in all scenarios. Rather, it is thought that there will remain many scenarios in which the objective can be sufficiently achieved by playing back existing control programs. If the program execution environment in the robot drive unit 100 changes significantly and existing control programs become unusable, it could increase the burden on engineers.

[0019] Therefore, the robot drive unit 100 is configured to execute a robot program for driving the robot 10 and to transmit the contents of the call area, which is allocated for calling an application from the memory readable and writable by the robot program, to the arithmetic unit 200.

[0020] A robot program may include, for example, a series of commands in a timeline. At least one of these commands is an action command that instructs the robot 10 to move to a predetermined target position and orientation. The commands may also include memory access commands that instruct access to (read from or write to) memory without instructing the robot 10 to move. The robot program is constructed by online teaching, for example, by manually operating a programming pendant 400 and sequentially adding commands while the robot 10 is in motion. The robot program may also be constructed by offline teaching (teaching performed in a simulation without operating the robot 10) in a simulation device separate from the programming pendant 400.

[0021] Memory that can be read from and written to by the robot program is, for example, memory that can be selected as an access destination in the environment in which the robot program is built. Memory that can be read from and written to by the robot program may also be memory that can be accessed in the execution environment of the robot program (for example, a real-time OS). The memory may also be I / O memory for inputting and outputting data to and from external devices such as tools used by the robot 10, or external sensors, etc.

[0022] With this robot 10, the robot program does not need to directly access the arithmetic unit 200, so the robot program can be executed in an environment where an existing control program can be executed. Although the robot program does not access the arithmetic unit 200, the contents of the call area are sent to the arithmetic unit 200. Therefore, by changing the contents of the call area based on the robot program, the applications of the arithmetic unit 200 can be easily called from the robot drive unit 100. This allows at least a portion of the processing required to control the robot 10 (for example, processing that is difficult to execute with the resources of the robot drive unit 100) to be executed by the arithmetic unit 200 in a timely manner in accordance with the progress of control in the robot drive unit 100. Thus, more advanced robot control can be easily realized.

[0023] For example, as shown in Figure 2, the robot drive unit 100 has a robot program 111, an execution unit 112, a memory 120, and a communication control unit 113 as functional components (hereinafter referred to as "functional blocks"). For example, the robot program 111 is constructed by the online teaching or offline teaching described above and stored in the program storage area of ​​the robot drive unit 100. The execution unit 112 executes the robot program 111. For example, the execution unit 112 operates the robot 10 by sequentially executing multiple commands of the robot program 111. The memory 120 is a memory that can be read from and written to by the robot program 111. The memory 120 includes a call area 121 allocated for calling applications. The memory 120 may include multiple call areas 121 allocated to multiple applications in order to call multiple applications, each of which is a call area.

[0024] The communication control unit 113 performs the above-described network communication with the arithmetic unit 200. The communication control unit 113 transmits the contents of the call area 121 to the arithmetic unit 200 via network communication. Transmitting the contents of the call area 121 to the arithmetic unit 200 is not limited to transmitting the numerical values ​​stored in the call area 121 to the arithmetic unit 200. For example, transmitting the meaning that has been pre-associated with the numerical values ​​stored in the call area 121 to the arithmetic unit 200 is also included in transmitting the contents of the call area 121 to the arithmetic unit 200. Examples of associating meaning with numerical values ​​stored in the call area 121 include associating the meaning of "no startup request" with "0" and associating the meaning of "startup request made" with "robot system 1". In this example, sending "No startup request" to the arithmetic unit 200 when the number stored in the call area 121 is "0", and sending "Startup request" to the arithmetic unit 200 when the number stored in the call area 121 is "Robot System 1", is included in sending the contents of the call area 121 to the arithmetic unit 200.

[0025] Sending the occurrence of an event, such as a change in a numerical value stored in the call area 121, to the arithmetic unit 200 is also included in sending the contents of the call area 121 to the arithmetic unit 200. For example, sending to the arithmetic unit 200 a notification that the numerical value stored in the call area 121 has changed from "0" to "Robot System 1", or a notification that the numerical value stored in the call area 121 has changed from "Robot System 1" to "0", is included in sending the contents of the call area 121 to the arithmetic unit 200. In addition to notifying the occurrence of the event itself, sending to the arithmetic unit 200 a meaning that has been pre-associated with the event is also included in sending the contents of the call area 121 to the arithmetic unit 200. An example of associating meaning with an event is associating the meaning "startup request made" with a change from "0" to "Robot System 1", or a change from "Robot System 1" to "0". In this example, when the numerical value stored in the call area 121 changes from "0" to "Robot System 1", sending "Startup Request Available" to the arithmetic unit 200 is included in sending the contents of the call area 121 to the arithmetic unit 200.

[0026] The arithmetic unit 200 may be configured to receive the contents of the call area 121 from the communication control unit 113 and pass the contents of the call area 121 to the corresponding application. With this control system 20, the contents of the call area received from the robot drive unit 100 are passed to the corresponding application, so applications can be built without being aware of communication with the robot drive unit 100. Therefore, the burden of application construction can be reduced.

[0027] For example, the computing unit 200 has, as functional blocks, an application 211, a plurality of APIs 212, and a robot service 213. The application 211 is executed in an execution environment different from the robot program (e.g., a non-real-time OS). The application 211 is built in an environment different from the robot program's construction environment (e.g., an environment where it can be programmed in a language different from the robot program's language) and stored in the application memory area of ​​the computing unit 200.

[0028] Each of the multiple APIs 212 is an Application Programming Interface that can be called from an application 211. The robot service 213 executes processing according to the called application 211 when any of the multiple applications 211 is called. For example, the robot service 213 executes processing according to the called application 211 while the robot drive unit 100 is driving the robot 10. The arithmetic unit 200 may have multiple applications 211 that are different from each other, and the multiple APIs 212 may be callable from each of the multiple applications 211.

[0029] Multiple APIs 212 correspond to multiple processes, each with different content. These multiple processes include processes that involve communication with the robot program 111 and processes that do not involve communication with the robot program 111. Examples of multiple processes include: Example 1) A process that notifies the application 211 of information already held by the robot service 213. Example 2) A process that notifies the application 211 of information acquired by the robot service 213 from another application 211. Example 3) A process that notifies the application 211 of the feedback information, drive power information, etc., mentioned above, for each control cycle. Example 4) A process that notifies the application 211 of the status of the process being executed by the robot drive unit 100 at the request of the application 211, for each control cycle. Example 5) A process that acquires configuration information of the robot 10, etc., and notifies the application 211. Example 6) A process that writes settings from the application 211 to the robot drive unit 100. Example 7) A process that requests the robot drive unit 100 to turn on the servo from the application 211. Example 8) A process that requests the robot drive unit 100 to perform a one-shot operation from the application 211.

[0030] Furthermore, multiple processes include receiving the contents of the call area 121 from the communication control unit 113 and passing the contents of the call area 121 to the corresponding application. The API 212 corresponding to this process will be referred to below as the "call monitoring API 212". The call monitoring API 212 is called, for example, by an application 211 newly started in the arithmetic unit 200. When the call monitoring API 212 is called by the application 211, the robot service 213 receives the contents of the call area 121 from the communication control unit 113 and executes the process of passing the contents of the call area 121 to the corresponding application 211 (the application 211 that called the call monitoring API 212).

[0031] Multiple processes corresponding to multiple APIs 212 may further include processes for sending the execution results of application 211 to the robot drive unit 100. The API 212 corresponding to this process will be referred to below as the "API 212 for sending results". Examples of the execution results of application 211 include the image processing results of application 211 and the operation path generated by application 211. When the API 212 for sending results is called by application 211, the robot service 213 sends the execution results of application 211 to the robot drive unit 100.

[0032] The memory 120 of the robot drive unit 100 may further include a results area 122. The results area 122 is allocated for storing the execution results of the application 211. The execution results are not limited to the final result, but also include intermediate results generated during the execution of the process. When the communication control unit 113 receives the execution results from the application 211 (for example, when it receives the execution results of the application 211 from the robot service 213), it may store the execution results in the results area 122.

[0033] According to this control system 20, the robot program 111 can easily obtain the execution results of the application 211 by reading from the result area 122. This makes it easy to reflect the execution results of the application 211 in the control of the robot. If it is necessary to obtain two or more execution results from an application, the memory 120 may include two or more result areas 122, each corresponding to one or more execution results. The memory 120 may also include multiple result areas 122, each allocated to multiple applications, in order to store the execution results of multiple applications.

[0034] The areas of memory 120 allocated to application 211 are not limited to the call area 121 and the result area 122. Examples of other areas of memory 120 allocated to application 211 include the abort area 123 allocated to abort the execution of application 211, the transfer area 124 allocated to transfer data from robot program 111 to application 211 while processing is in progress, and the completion notification area 125 allocated to obtain notification of the completion of application 211 execution.

[0035] The communication control unit 113 may transmit to the arithmetic unit 200 the contents of the abort area 123 and the contents of the transfer area 124, in addition to the contents of the call area 121. When the communication control unit 113 receives a completion notification for application 211 from the robot service 213, it may store the completion notification in the completion notification area 125. The memory 120 may contain two or more abort areas 123 assigned to the same application 211, or it may contain multiple abort areas 123 assigned to multiple applications 211. Similarly, the memory 120 may contain two or more transfer areas 124 assigned to the same application 211, or it may contain multiple transfer areas 124 assigned to multiple applications 211. Similarly, the memory 120 may contain two or more completion notification areas 125 assigned to the same application 211, or it may contain multiple completion notification areas 125 assigned to multiple applications 211.

[0036] Figure 3 is a schematic diagram illustrating communication between the robot drive unit 100 and the computing unit 200 to monitor the call area 121. As an example of transmitting the contents of the call area 121 to the robot service 213, the communication control unit 113 may monitor for the occurrence of events in the call area 121 and transmit the contents of the call area 121 to the computing unit 200 when an event occurs in the call area 121. For example, as shown in Figure 3, when an event occurs in the call area 121, the communication control unit 113 may transmit a notification of the occurrence of that event as the contents of the call area 121 to the computing unit 200. If no event has occurred, there is no need to transmit the contents of the call area 121, thus saving communication resources. The robot drive unit 100 can easily call the application 211 by generating an event in the call area 121, so it is easy to construct a robot program that includes cooperation with the application 211.

[0037] For example, the computing unit 200 (robot service 213) may send a monitoring request for the call area 121 corresponding to application 211 to the communication control unit 113, and when the communication control unit 113 receives the monitoring request, it may start monitoring events in the call area 121 corresponding to the monitoring request. This prevents the waste of communication resources, such as when the contents of the call area 121 are sent before application 211 is ready to respond to the call.

[0038] The communication control unit 113 and the arithmetic unit 200 (robot service 213) may perform periodic communication to periodically exchange data. Periodic communication may not necessarily be a fixed-period communication that satisfies a fixed-period communication standard (e.g., EtherCAT®), but it does not necessarily have to be a strictly fixed-period communication that satisfies a fixed-period communication standard. For example, periodic communication may be communication that is executed at approximately fixed intervals based on the system timer of at least one of the robot drive unit 100 and the arithmetic unit 200. Furthermore, periodic communication only needs to be performed in periods in which there is data to be transmitted, and may be omitted in periods in which there is no data to be transmitted. In periodic communication, the robot program 111 may repeatedly transmit first-period data to the robot service 213. The robot service 213 may repeatedly transmit second-period data to the robot program 111.

[0039] The communication control unit 113 and the arithmetic unit 200 (robot service 213) may further perform aperiodic communication, which involves the non-periodic exchange of data. Aperiodic communication is communication that is performed as needed, regardless of the period of periodic communication.

[0040] When the communication control unit 113 and the arithmetic unit 200 perform periodic communication, the communication control unit 113 may include the contents of the call area 121 in the periodic communication data (the first periodic data) and send it to the arithmetic unit 200. The contents of the call area 121 are sent to the arithmetic unit 200 in a timely manner by periodic communication. For example, if the periodic communication is synchronized with the drive cycle of the robot 10, the application 211 can be called in synchronization with the drive cycle of the robot 10. Since the transmission of monitoring requests from the robot service 213 to the communication control unit 113 is one-off, the robot service 213 may send monitoring requests to the communication control unit 113 by non-periodic communication. Without being constrained by the timing of periodic communication, monitoring requests can be sent to the communication control unit 113 in a timely manner as soon as they are ready.

[0041] The first period data may include, in addition to the contents of the call area 121, the aforementioned feedback information, drive power information, etc. Multiple types of information, such as feedback information, drive power information, and the contents of the call area 121, may be included in the first period data in a predetermined order. In this case, the order in which the information is located in the first period data can be used to identify which piece of information corresponds to which item. To prevent the order of other information from changing depending on whether or not the contents of the call area 121 are included in the first period data, the contents of the call area 121 may be included at the end of the above-mentioned order. In this case, it is easy to prevent other information from being recognized depending on whether or not the contents of the call area 121 are included in the first period data.

[0042] When the communication control unit 113 receives a monitoring request for the call area 121, it may issue an event ID to notify the robot service 213 (arithmetic unit 200) of an event in the call area 121 and send it to the robot service 213 (arithmetic unit 200), and start monitoring the event in the call area 121 corresponding to the monitoring request. Subsequently, when an event occurs in the call area 121, the communication control unit 113 may include the contents of the call area 121 (e.g., event occurrence notification) along with the event ID in the first cycle data and send it to the robot service 213. Even if the contents of the call area 121 are mixed with other data in the first cycle data, the response corresponding to the monitoring request can be easily extracted from the first cycle data based on the event ID and returned to the application 211. For this reason, communication between the robot service 213 and the communication control unit 113 can be easily encapsulated for the application 211, further reducing the burden of application construction. Since an event ID is issued for each monitoring request, it is possible to perform multiple monitoring on the same variable under the same conditions or different conditions.

[0043] When the event occurrence notification is included in the first cycle data, the robot service 213 notifies the application 211 of the event occurrence based on the event ID included in the first cycle data together with the event occurrence notification (event notification in FIG. 3). Regardless of whether there is an event occurrence notification, each time the robot service 213 receives the first cycle data from the communication control unit 113, it may notify the application 211 that it has received the first cycle data (reception notification in FIG. 3). In the application 211, the notification of receiving the first cycle data can be used as a clock announcement. By using the clock announcement to synchronize one or more applications 211 for periodic communication, the content of the call area 121 can be passed to the application at the timing synchronized with the clock announcement. Therefore, the content of the call area can be passed to the application 211 in a timely manner. If clock announcements are made for a plurality of applications 211, it is also possible to execute the plurality of applications 211 in synchronization with each other.

[0044] Similar to the monitoring result of the call area 121 being included in the first cycle data, the processing result of the application 211 may be included in the second cycle data. For example, when the processing result of the application 211 is the motion path of the robot 10, the motion path may be sequentially included in the second cycle data as the target position and target posture for each control cycle. In this case, each time the communication control unit 113 receives the second cycle data, it writes the target position and target posture included in the second cycle data into the result area 122. The execution unit 112 operates the robot 10 to sequentially follow the target position and target posture sequentially written into the result area 122.

[0045] As shown in Figure 4, the robot drive device 100 may further have corresponding data 130. The corresponding data 130 associates variable names with call areas 121. For example, the corresponding data 130 associates multiple variable names with multiple storage areas of the memory 120. The multiple storage areas may include one or more call areas 121 and one or more result areas 122. The multiple storage areas may include one or more abort areas 123, one or more transfer areas 124 and one or more completion notification areas 125. Hereinafter, if necessary, the variable name associated with the call area 121 will be referred to as the "first variable name," and the variable name associated with the result area 122 will be referred to as the "second variable name."

[0046] The execution unit 112 may access the storage area of ​​memory 120 corresponding to the specified variable name based on the variable name specified by the robot program 111 and the corresponding data 130. Similarly, the communication control unit 113 may access the storage area of ​​memory 120 corresponding to the specified variable name based on the variable name specified by the application 211 and the corresponding data 130. For example, the execution unit 112 may access the call area 121 corresponding to the first variable name based on the first variable name specified by the robot program and the corresponding data 130. Similarly, the communication control unit 113 may access the call area 121 corresponding to the first variable name based on the first variable name specified by the application 211 and the corresponding data 130.

[0047] For a plurality of storage areas, access can be made with the same variable name from both the robot program 111 and the application 211. Therefore, the builder of the application 211 of the arithmetic unit can easily access the content of the storage area of the memory 120, and the builder of the robot program 111 can also easily access the content of the storage area of the memory 120, so that system construction is easy. In addition, since the storage areas can be clearly distinguished by variable names, it is suppressed that different applications 211 are constructed so as to accidentally access the same storage area. The application 211 and the robot program 111 that access the storage area by variable name can also be easily transplanted to another control system 20 in which the usage status of the storage areas of the memory 120 is different from each other (for example, the storage areas assignable to the application 211 are different) by changing the association in the correspondence data 130. According to the variable name, it becomes easier to recognize which storage area the corresponding storage area is (for example, which of the call area 121, result area 122, stop area 123, transfer area 124, and completion notification area 125) compared to identification information such as an address, so that system construction is even easier.

[0048] The execution unit 112 may prohibit access to the storage area associated with the variable name in the correspondence data 130 when the robot program 111 directly designates the storage area without using the variable name. Similarly, the communication control unit 113 may prohibit access to the storage area associated with the variable name in the correspondence data 130 when the application 211 directly designates the storage area without using the variable name. By accessing the storage area associated with the variable name with an intention different from the intention of setting the variable name, it is possible to prevent malfunction such as the application 211 being called unintentionally.

[0049] As shown in Figure 5, when the application 211 requests the robot service 213 to send key-value type data D1, which includes a second variable name as key Ky1 and the application execution result as value Vl1, the robot service 213 may send data D1 to the robot drive unit 100 while maintaining the key-value type. When the communication control unit 113 receives key-value type data D1 from the arithmetic unit 200, it may store the execution result indicated by value Vl1 in the result area 122 based on the second variable name indicated by key Ky1 and the corresponding data 130. For example, the communication control unit 113 may extract key Ky1 and value Vl1 from data D1 (parse processing), identify the result area 122 corresponding to key Ky1 based on the second variable name indicated by key Ky1 and the corresponding data 130, and store the execution result indicated by value Vl1 in the identified result area 122. Data D1 may include two or more sets of key Ky1 and value Vl1. At least from application 211, it is possible to specify that two or more execution results be stored in two or more second variable names using key-value type data. This makes the construction of application 211 even easier. Examples of key-value type data include JSON format data or Python dictionary type data.

[0050] When the robot service 213 receives a request from the application 211 to send structure-type data by specifying a second variable name, it may send the data to the robot drive unit 100 while maintaining the structure type and associating it with the second variable name. The structure-type data includes two or more execution results. When the communication control unit 113 receives structure-type data from the arithmetic unit 200, it may store two or more execution results in two or more consecutively addressed result areas 122 based on the second variable name associated with the data and the corresponding data 130. For example, the communication control unit 113 may identify the result area 122 corresponding to the data based on the second variable name and the corresponding data 130, and store two or more execution results in two or more result areas 122 that are arranged sequentially from the identified result area 122.

[0051] As shown in Figure 6, the robot service 213 (arithmetic unit 200) may send an event monitoring request specifying a variable name to the communication control unit 113. For example, the robot service 213 may send an event monitoring request specifying a first variable name to the communication control unit 113. When the communication control unit 113 receives a monitoring request, it may issue an event ID to notify the robot service 213 of an event in the memory 120 corresponding to the variable name (for example, the call area 121 corresponding to the first variable name), access the memory area corresponding to the variable name based on the variable name and corresponding data 130, monitor the event in the accessed memory area, and, if an event occurs in the memory area, send the content of the event along with the event ID to the robot service 213.

[0052] Monitoring of events in the memory area of ​​the robot drive device 100 can be easily started by specifying a variable name. In response to an event monitoring request, an event ID is first issued, and when an event occurs, the content of the event is sent to the robot service 213 along with the event ID. Therefore, when monitoring multiple types of events for the same variable name (for example, monitoring of switching from off to on and monitoring of switching from on to off), it is possible to easily identify which event has occurred.

[0053] The robot service 213 may send an event monitoring request to the communication control unit 113 via the non-periodic communication described above. As soon as the need for event monitoring arises, a monitoring request can be sent immediately without waiting for the timing of periodic communication. The communication control unit 113 may include the event ID in the response to the monitoring request and send it to the robot service 213. This can more reliably prevent discrepancies in the correspondence between the monitoring request and the event ID.

[0054] The communication control unit 113 may, when an event occurs in the memory area, include the content of the event along with the event ID in the periodic communication data (for example, the first periodic data described above) and send it to the robot service 213. The contents of the call area 121 are sent to the arithmetic unit 200 in a timely manner via periodic communication. For example, if the periodic communication is synchronized with the drive cycle of the robot 10, the application 211 can be called in synchronization with the drive cycle of the robot 10. Furthermore, even if there is insufficient bandwidth for non-periodic communication, the content of the event can be sent to the robot service 213 in a timely manner. Since the content of the event is only included in the periodic communication data when an event occurs, the communication bandwidth of the periodic communication can also be saved.

[0055] As shown in Figure 7, the corresponding data 130 may associate the namespace name of any application 211 with the variable name in the namespace in each of the multiple storage areas of the memory 120. The execution unit 112 may access the storage area corresponding to the namespace name and variable name based on the namespace name and variable name specified by the robot program 111 and the corresponding data 130. Similarly, the communication control unit 113 may access the storage area corresponding to the namespace name and variable name based on the namespace name and variable name specified by the application 211 and the corresponding data 130.

[0056] For example, the corresponding data 130 may associate each of the multiple call areas 121 with the namespace name of the corresponding application 211 and the first variable name in the namespace. The execution unit 112 may access the call area 121 corresponding to the namespace name and first variable name based on the namespace name and first variable name specified by the robot program 111 and the corresponding data 130. Similarly, the communication control unit 113 may access the call area 121 corresponding to the namespace name and first variable name based on the namespace name and first variable name specified by the application 211 and the corresponding data 130.

[0057] Each application 211 is assigned a namespace, and a memory area is associated with the combination of the namespace name and the variable name. Therefore, even if variable names are duplicated among multiple applications 211, if the namespace names are different, different memory areas will be assigned to the variable names of the multiple applications 211. Consequently, variable names can be defined in each application 211 without being aware of the variable names in other applications 211. This further reduces the burden of building applications 211.

[0058] The robot drive device 100 may further include an allocation unit 114. The allocation unit 114 allocates unused storage areas of memory 120 to the namespace names of application 211 and the variable names in the namespace, based on the definition file of application 211, and adds the allocation results to the corresponding data 130. The allocation unit 114 may recognize the available storage areas based on the configuration information of memory 120 and the corresponding data 130. For example, the allocation unit 114 allocates the call area 121 to the namespace names of application 211 and the first variable names in the namespace, based on the definition file of application 211, and adds the allocation results to the corresponding data 130. By having the allocation unit 114 obtain the definition file, storage areas of memory 120 can be easily allocated to combinations of namespaces and variable names. In addition, by centrally assigning namespace names in the allocation unit 114, duplication of namespace names can be easily prevented.

[0059] A definition file may be provided for each application 211, or for each group containing two or more bases 11. The definition file may be created by a device other than the robot drive unit 100 (for example, a computing device 200 or another robot drive unit 100), or it may be created by a user through manual input. If it is created by a device other than the robot drive unit 100, the definition file may be automatically sent to the robot drive unit 100 from the computing device 200 or the other robot drive unit 100 when the robot drive unit 100 is connected to the computing device 200 or the other robot drive unit 100. In this case, the user does not need to be aware of the definition file, further improving convenience. In addition, at a predetermined timing, it may be checked whether the contents of the definition file match an existing namespace. In this case, it is possible to prevent definition errors and wiring errors, further increasing safety.

[0060] The definition file may be a header file provided for each application 211. If the namespace name is described in the definition file, the allocation unit 114 may read the namespace name from the definition file. The allocation unit 114 may generate a namespace name unique to the definition file based on the file name of the definition file, etc. If the identification information of the corresponding application 211 is described in the definition file, the allocation unit 114 may read the identification information of the application 211 from the definition file and generate a namespace name unique to the application 211 based on the read identification information.

[0061] The robot service 213 (arithmetic unit 200) may, when starting one of several applications 211, send a definition file (e.g., a header file) for the application 211 to be started to the communication control unit 113. The allocation unit 114 may, based on the definition file received by the communication control unit 113, allocate unused storage space in memory 120 to the namespace name of the application 211 corresponding to the definition file and the variable name in the namespace, and add the allocation result to the corresponding data 130. For example, the allocation unit 114 may, based on the definition file received by the communication control unit 113, allocate the call area 121 to the namespace name of the application 211 corresponding to the definition file and the first variable name in the namespace, and add the allocation result to the corresponding data 130. Manual operation to obtain the definition file from the allocation unit 114 is unnecessary. Therefore, the burden of system construction can be further reduced. Even if the definition file is updated due to an update of the application 211, when starting the updated application 211, the contents of the corresponding data 130 will be adjusted to reflect the update. Therefore, the burden of system maintenance can be further reduced.

[0062] Figure 8 is a block diagram illustrating the hardware configuration of the computing unit 200 and the robot drive unit 100. As shown in Figure 8, the robot drive unit 100 has a circuit 190, and the computing unit 200 has a circuit 290. The circuit 190 includes a first CPU 191, a memory 192, a storage 193, a communication port 194, and a driver circuit 195.

[0063] The storage 193 stores an operating system (e.g., a real-time OS) and a program executed in the real-time OS to cause the robot drive unit 100 to control the robot 10. The program is configured to cause the robot drive unit 100 to execute the robot program 111, to read and write to the memory 120 of the robot drive unit 100 based on the running robot program 111, and to transmit the contents of the call area 121 of the memory 120 allocated for calling the application 211 to the arithmetic unit 200. For example, the program causes the robot drive unit 100 to configure the above-described functional blocks. The storage 193 includes, for example, one or more non-volatile storage media. The non-volatile storage media includes one or more storage devices. Examples of one or more storage devices include hard disk drives, solid-state drives, flash memory, etc. The non-volatile storage media may also include portable storage media such as optical discs.

[0064] Memory 192 temporarily stores the program loaded from storage 193. Memory 192 includes one or more volatile storage media. The volatile storage media includes one or more memory devices. An example of one or more memory devices is random access memory. The first CPU 191 executes the program loaded into memory 192 to configure the above-described functional blocks in the robot drive device 100. The first CPU 191 may temporarily store the calculation results in memory 192. The first CPU 191 is a CPU (Central Processing Unit) and includes one or more arithmetic devices. The one or more arithmetic devices may be one or more cores.

[0065] The communication port 194 communicates with the arithmetic unit 200 via a network in response to a request from the first CPU 191. The driver circuit 195 supplies drive power to the aforementioned actuators in response to a request from the first CPU 191.

[0066] The circuit 290 includes a second CPU 291, memory 292, storage 293, GPU 294, and communication ports 295 and 296. The storage 293 stores an operating system (e.g., a non-real-time OS) and a program executed in the non-real-time OS to perform the processing necessary for controlling the robot 10. For example, the program is configured to cause the arithmetic unit 200 to execute the following: wait for the contents of the call area 121 of the memory read and written by the robot drive unit 100 based on the robot program 111 to be transmitted from the robot drive unit 100; receive the contents of the call area 121 transmitted from the robot drive unit 100; and pass the contents of the call area 121 to the corresponding application 211. For example, the program causes the arithmetic unit 200 to configure the above-mentioned functional blocks.

[0067] Memory 292 temporarily stores programs loaded from storage 293. Memory 292 includes one or more volatile storage media. The volatile storage media includes one or more memory devices. An example of one or more memory devices is random access memory. The second CPU 291 executes the programs loaded into memory 292, and, if necessary, cooperates with the GPU 294 to configure the above-described functional blocks in the arithmetic unit 200. The second CPU 291 and GPU 294 may temporarily store the calculation results in memory 292. The second CPU 291 includes one or more arithmetic devices. One or more arithmetic devices may be, for example, one or more CPUs, or one or more cores included in one CPU. GPU 294 includes, for example, one or more GPUs (Graphics Processing Units) specialized for parallel processing.

[0068] Communication port 295 communicates with communication port 194 via the network in response to a request from the second CPU 291. This enables the second CPU 291 to communicate with the first CPU 191.

[0069] The second CPU 291 may have the GPU 294 perform matrix operations related to generating the robot's path (for example, the motion path described above) while the first CPU 191 is controlling the robot 10. Based on the calculation results from the second CPU 291 and the GPU 294, the first CPU 191 may have the robot 10 perform actions along the path. By making the matrix operations performed by the GPU 294 available for generating the robot's path while the first CPU 191 is controlling the robot, the functionality of the robot 10 can be easily extended.

[0070] The GPU 294 may perform matrix operations related to image processing to generate a path based on images of the surrounding environment of the robot 10, as described above. The robot 10 can be controlled while reflecting the image processing results in the path.

[0071] The GPU 294 may perform matrix operations as described above, based on models of the robot 10 and surrounding objects, to check for interference between the robot 10 and surrounding objects. The robot 10 can be controlled while reflecting the results of the interference between the robot 10 and surrounding objects in the path.

[0072] [Control Procedure] As an example of a control method, a control procedure executed by the control system 20 is illustrated. This control procedure may include the following in the arithmetic unit 200: waiting for the contents of the call area 121 of the memory that the robot drive unit 100 reads and writes based on the robot program 111 to be transmitted from the robot drive unit 100; receiving the contents of the call area 121 transmitted from the robot drive unit 100; and passing the contents of the call area 121 to the corresponding application 211. This control procedure may also include the following in the robot drive unit 100: executing the robot program 111; performing read and write operations on the memory 120 of the robot drive unit 100 based on the running robot program 111; and transmitting the contents of the call area 121 of the memory 120 to the arithmetic unit 200.

[0073] The control procedures are illustrated below, divided into monitoring request procedures, event monitoring procedures, periodic communication procedures, event notification procedures, execution result transmission procedures, execution result registration procedures, and corresponding data 130 update procedures. The monitoring request procedure is a procedure in which the computing unit 200 requests the robot drive unit 100 to monitor events in the call area 121. The event monitoring procedure is an event monitoring procedure performed by the robot drive unit 100 in response to the monitoring request. The periodic communication procedure is a procedure in which the robot drive unit 100 transmits first periodic data to the computing unit 200. The event notification procedure is a procedure in which the computing unit 200 notifies the application 211 of the occurrence of an event. The execution result transmission procedure is a procedure in which the computing unit 200 transmits the execution results of the application 211 to the robot drive unit 100. The execution result registration procedure is a procedure in which the robot drive unit 100 stores the execution results of the application 211 in the result area 122. The procedure for updating the corresponding data 130 is to update the corresponding data 130 based on the definition file.

[0074] (Monitoring Request Procedure) As shown in Figure 9, the arithmetic unit 200 first executes step S01. In step S01, the robot service 213 waits for application 211 to start up, such as when the power of the arithmetic unit 200 is turned on. Note that "starting up" means becoming ready to receive calls, not execution. Next, the arithmetic unit 200 executes steps S02, S03, and S04. In step S02, the robot service 213 sends a monitoring request to the communication control unit 113. In step S03, the robot service 213 waits to receive an event ID from the communication control unit 113. In step S04, the robot service 213 associates the received event ID with the monitoring request. This makes it possible to pass the event notification to application 211 as a response to the monitoring request when an event ID and event notification are received. After that, the arithmetic unit 200 returns processing to step S01. Thereafter, steps S02 to S04 are executed each time application 211 is started.

[0075] (Event Monitoring Procedure) As shown in Figure 10, the robot drive unit 100 first executes step S11. In step S11, the communication control unit 113 waits for a monitoring request from the robot service 213. Next, the robot drive unit 100 executes steps S12 and S13. In step S12, the communication control unit 113 issues an event ID in response to the monitoring request. In step S13, the communication control unit 113 sends a response including the event ID to the robot service 213.

[0076] Next, the robot drive unit 100 executes step S14. In step S14, the communication control unit 113 waits for the timing to confirm an event (for example, when the drive cycle has elapsed). Next, the robot drive unit 100 executes steps S15 and S16. In step S15, the communication control unit 113 acquires the contents of the call area 121. In step S16, the communication control unit 113 checks whether an event has occurred in the call area 121 (for example, whether the contents of the call area 121 have changed) based on the contents of the call area 121. If it is determined in step S16 that an event has occurred, the robot drive unit 100 executes step S17. In step S17, the communication control unit 113 generates an event occurrence notification and includes the generated occurrence notification in the first cycle data to be transmitted next. The first cycle data is transmitted by the periodic communication procedure described below.

[0077] Subsequently, the robot drive unit 100 returns to step S14. If it is determined in step S16 that no event has occurred, the robot drive unit 100 returns to step S14 without executing step S17. Thereafter, the monitoring of events by steps S14 to S17 is repeatedly performed.

[0078] (Periodic Communication Procedure) As shown in Figure 11, the robot drive unit 100 executes steps S21 and S22. In step S21, the communication control unit 113 waits for the communication cycle of the periodic communication to elapse. In step S22, the communication control unit 113 transmits the first period data to the robot service 213. After that, the robot drive unit 100 returns to step S21. This repeats the transmission of the first period data to the robot service 213 each time a communication cycle has elapsed.

[0079] (Notification procedure to the application) As shown in Figure 12, the arithmetic unit 200 first executes step S31. In step S31, the robot service 213 waits for the reception of the first cycle data. Next, the arithmetic unit 200 executes steps S32 and S33. In step S32, the robot service 213 notifies the application 211 that it has received the first cycle data. In step S33, the robot service 213 checks whether the first cycle data contains an event occurrence notification.

[0080] If step S33 determines that an event occurrence notification is included, the arithmetic unit 200 executes steps S34 and S35. In step S34, the robot service 213 identifies the monitoring request to which it will respond based on the event ID associated with the event occurrence notification. In step S35, as a response to the identified monitoring request, it notifies the requesting application 211 of the occurrence of the event. After that, the arithmetic unit 200 returns to step S31. If step S33 determines that the first cycle data does not include an event occurrence notification, the arithmetic unit 200 returns to step S31 without executing steps S34 and S35.

[0081] (Result transmission procedure) As shown in Figure 13, the arithmetic unit 200 first executes step S41. In step S41, application 211 waits for notification of an event representing a call. Next, the arithmetic unit 200 executes step S42. In step S42, application 211 waits for notification from robot service 213 that the first cycle data has been received.

[0082] Next, the arithmetic unit 200 executes steps S43, S44, S45, and S46. In step S43, the application 211 executes processing for one cycle (for example, one drive cycle). In step S44, the application 211 generates the key-value type data described above (hereinafter referred to as "result data") so associating one or more second variable names with one or more execution results. In step S45, the application 211 requests the robot service 213 to send the result data. The robot service 213 sends the result data to the communication control unit 113. In step S46, the application 211 checks whether all the planned processing has been completed. If it is determined in step S46 that there is still unprocessed content remaining, the arithmetic unit 200 returns the processing to step S42. Thereafter, the execution of processing for one cycle (for example, one drive cycle) and the transmission of result data are repeated until all the planned processing is completed. In step S46, if the arithmetic unit 200 determines that all planned processing has been completed, it completes the result transmission procedure.

[0083] (Result Registration Procedure) As shown in Figure 14, the robot drive unit 100 first executes step S51. In step S51, the communication control unit 113 waits for the reception of result data. Next, the robot drive unit 100 executes steps S52 and S53. In step S52, the communication control unit 113 performs parsing and extracts key-value pairs from the result data. In step S53, the communication control unit 113 stores the execution result indicated by the value in the result area 122, based on the second variable name indicated by the key and the corresponding data 130.

[0084] (Procedure for updating corresponding data) As shown in Figure 15, the robot drive unit 100 first executes step S61. In step S61, the allocation unit 114 waits for a registration request for the definition file. Next, the robot drive unit 100 executes steps S62, S63, S64, and S65. In step S62, the allocation unit 114 obtains the definition file. In step S63, the allocation unit 114 assigns a space name to the application 211 corresponding to the definition file. In step S64, it allocates a storage area in the memory 120 for each combination of the assigned space and the variable name contained in the definition file. In step S65, it registers the allocation result in the corresponding data 130. After that, the robot drive unit 100 returns to step S61.

[0085] [Summary] The above disclosure includes the following configuration: (1) A robot system 1 comprising a robot drive device 100 for driving a robot 10, and a computing device 200 that communicates with the robot drive device 100 via a network and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive device 100, wherein the robot drive device 100 includes an execution unit 112 for executing a robot program 111 for driving the robot 10, a memory 120 that is readable and writable from the robot program 111 and includes a call area 121 allocated for calling the application 211, and a communication control unit 113 that transmits the contents of the call area 121 to the computing device 200. According to this robot system 1, the application 211 of the computing device 200 can be easily called from the robot drive device 100 by changing the contents of the call area 121 based on the robot program 111. As a result, at least a part of the processing necessary for controlling the robot 10 (for example, processing that is difficult to execute with the resources of the robot drive device 100) can be made to be executed by the computing device 200. Therefore, more advanced robot 10 control can be easily achieved.

[0086] (2) The robot system 1 according to (1), wherein the arithmetic unit 200 has a robot service 213 that receives the contents of the call area 121 from the communication control unit 113 and passes the contents of the call area 121 to the corresponding application 211. With this robot system 1, since the robot service 213 passes the contents of the call area 121 received from the robot drive unit 100 to the corresponding application 211, the application 211 can be built without being aware of communication with the robot drive unit 100. Therefore, the burden of building the application 211 can be reduced.

[0087] (3) The robot system 1 according to (1) or (2), wherein the communication control unit 113 monitors for the occurrence of events in the call area 121 and transmits the contents of the call area 121 to the arithmetic unit 200 when an event occurs in the call area 121. With this robot system 1, events in the call area 121 are monitored by the communication control unit 113, and when an event occurs, the contents of the call area 121 are transmitted. If no event occurs, there is no need to transmit the contents of the call area 121, so communication resources can be saved. The robot drive unit 100 can easily call the application 211 of the arithmetic unit 200 by generating an event in the call area 121, so a robot program 111 including cooperation with the application 211 can be easily constructed.

[0088] (4) The robot system 1 described in (3), wherein the arithmetic unit 200 transmits a monitoring request for the call area 121 corresponding to the application 211 to the communication control unit 113, and when the communication control unit 113 receives the monitoring request, it starts monitoring the event in the call area 121 corresponding to the monitoring request. With this robot system 1, monitoring of events is started by a monitoring request from the application 211. This prevents the waste of communication resources, such as when the contents of the call area 121 are transmitted before the application 211 is ready to respond to the call.

[0089] (5) The robot system 1 according to any one of (1) to (4), wherein the communication control unit 113 and the arithmetic unit 200 communicate data periodically, and the communication control unit 113 includes the contents of the call area 121 in the data of the periodic communication and transmits it to the arithmetic unit 200. With this robot system 1, the contents of the call area 121 are sent to the arithmetic unit 200 in a timely manner by periodic communication. For example, if the periodic communication is synchronized with the drive cycle of the robot 10, the application 211 can be called in synchronization with the drive cycle of the robot 10.

[0090] (6) The robot system 1 described in (5), wherein the arithmetic unit 200 notifies the application 211 that it has received periodic communication data each time it receives periodic communication data from the communication control unit 113. With this robot system 1, the application 211 can use the notification that it has received periodic communication data as a clock announcement. One or more applications 211 can be synchronized to periodic communication by the clock announcement, and the contents of the call area 121 can be passed to the application 211 at a timing synchronized with the clock announcement. Therefore, the contents of the call area 121 can be passed to the application 211 in a timely manner. If clock announcements are made to multiple applications 211, it is also possible to execute multiple applications 211 in synchronous manner with each other.

[0091] (7) The robot system 1 according to (5) or (6), wherein the arithmetic unit 200 transmits a monitoring request for the call area 121 corresponding to the application 211 to the communication control unit 113, and when the communication control unit 113 receives the monitoring request, it issues an event ID to notify the arithmetic unit 200 of an event in the call area 121 and transmits it to the arithmetic unit 200, and when an event occurs in the call area 121, it includes the contents of the call area 121 together with the event ID in the periodic communication data and transmits it to the arithmetic unit 200. With this robot system 1, even if the contents of the call area 121 are mixed with other data in the periodic communication data, the response corresponding to the monitoring request can be easily extracted from the periodic communication data based on the event ID and returned to the application 211. For this reason, the communication between the arithmetic unit 200 and the communication control unit 113 can be easily encapsulated for the application 211, further reducing the burden of building the application 211. Since an event ID is issued for each monitoring request, it is possible to perform multiple monitoring on the same variable under the same conditions or different conditions.

[0092] (8) The robot system 1 according to any one of (1) to (7), wherein the memory 120 further includes a result area 122 allocated for storing the execution results of the application 211, and the communication control unit 113 stores the execution results in the result area 122 when it receives the execution results from the application 211. With this robot system 1, the robot program 111 can easily obtain the execution results of the application 211 by reading from the result area 122. This makes it easy to reflect the execution results of the application 211 in the control of the robot 10.

[0093] (9) The robot system 1 according to any one of (1) to (7), wherein the execution unit 112 accesses the call area 121 based on the first variable name specified by the robot program 111 and the corresponding data 130 that associates the first variable name with the call area 121, and the communication control unit 113 accesses the call area 121 based on the first variable name specified by the application 211 and the corresponding data 130. With this robot system 1, the call area 121 can be accessed from both the robot program 111 and the application 211 using the same first variable name. Therefore, the developer of the application 211 of the arithmetic unit 200 can easily access the contents of the call area 121, and the developer of the robot program 111 can also easily access the contents of the call area 121, making system construction easy. In addition, even in the robot system 1 where various applications 211 are provided, it is suppressed that different applications 211 will erroneously access the same call area 121. The application 211 and robot program 111, which access the call area 121 using the first variable name, can be easily ported to another robot system 1 with different memory area usage in memory 120.

[0094] (10) The robot system 1 as described in (9), wherein the memory 120 further includes a result area 122 allocated for storing the execution results of the application 211, the corresponding data 130 further associates the second variable name with the result area 122, and when the communication control unit 113 receives key-value type data from the arithmetic unit 200, which includes the second variable name as the key and the execution result of the application 211 as the value, it stores the execution result indicated by the value in the result area 122 based on the second variable name indicated by the key and the corresponding data 130. At least from the application 211, two or more second variable names can be specified together using key-value type data. This makes it even easier to construct the application 211.

[0095] (11) The robot system 1 according to (9) or (10), wherein the arithmetic unit 200 transmits an event monitoring request specifying a first variable name to the communication control unit 113, and when the communication control unit 113 receives the monitoring request, it issues an event ID to notify the arithmetic unit 200 of an event in the call area 121 corresponding to the first variable name, accesses the call area 121 based on the first variable name and corresponding data 130, monitors events in the call area 121, and when an event occurs in the call area 121, transmits the content of the event along with the event ID to the arithmetic unit 200. Monitoring of events in the call area 121 of the robot drive unit 100 can be easily started by specifying a first variable name. In response to an event monitoring request, an event ID is first issued, and when an event occurs, the content of the event along with the event ID is transmitted to the arithmetic unit 200. Therefore, when monitoring multiple types of events for the same variable name (for example, monitoring the switch from off to on, and monitoring the switch from on to off), it is easy to identify which event has occurred.

[0096] (12) The robot system 1 as described in (11), wherein the arithmetic unit 200 and the communication control unit 113 perform periodic communication to communicate data periodically and aperiodic communication to communicate data aperiodically, the arithmetic unit 200 sends an event monitoring request to the communication control unit 113 via aperiodic communication, and when an event occurs in the call area 121, the communication control unit 113 includes the content of the event that occurred along with the event ID in the data of periodic communication and sends it to the arithmetic unit 200. The event monitoring request is sent via aperiodic communication, and the content of the event is sent via periodic communication. For this reason, even if there is insufficient capacity for aperiodic communication, the content of the event can be sent to the arithmetic unit 200 in a timely manner. Since the content of the event is included in the data of periodic communication only when an event occurs, the communication bandwidth of periodic communication can also be saved.

[0097] (13) The robot system 1 according to any one of (9) to (12), wherein the arithmetic unit 200 is capable of executing a plurality of different applications 211, the memory 120 includes a plurality of call areas 121 corresponding to each of the plurality of applications 211, the corresponding data 130 associates the namespace name of the corresponding application 211 and the first variable name in the namespace with each of the plurality of call areas 121, the execution unit 112 accesses the call area 121 based on the namespace name and first variable name specified by the robot program 111 and the corresponding data 130, and the communication control unit 113 accesses the call area 121 based on the namespace name and first variable name specified by the application 211 and the corresponding data 130. Even if the first variable name is duplicated among multiple applications 211, a different call area 121 is assigned to the first variable name in each application 211. Therefore, the first variable name can be defined in each application 211 without being aware of the first variable name in other applications 211. Consequently, the burden of building applications 211 can be further reduced.

[0098] (14) The robot system 1 according to (13), wherein the robot drive device 100 further includes an assignment unit 114 that assigns a call area 121 to the space name of the namespace of application 211 and the first variable name in the namespace based on a definition file of application 211, and adds the assignment result to the corresponding data 130. With this robot system 1, by having the assignment unit 114 acquire the definition file, the call area 121 can be easily assigned to the combination of namespace and first variable name. In addition, by centrally assigning the space names of namespaces in the assignment unit 114, it is also possible to easily prevent duplication of space names in namespaces.

[0099] (15) The robot system 1 as described in (14), wherein when the arithmetic unit 200 starts any of the multiple applications 211, it sends a definition file for the application 211 to be started to the communication control unit 113, and the allocation unit 114, based on the definition file received by the communication control unit 113, allocates the call area 121 to the namespace name of the application 211 corresponding to the definition file and the first variable name in the namespace, and adds the allocation result to the corresponding data 130. Manual operation to have the allocation unit 114 acquire the definition file is not required. Therefore, the burden of system construction can be further reduced.

[0100] (16) A method for controlling a robot 10 using a system comprising a robot drive device 100 for driving the robot 10 and a computing device 200 that communicates with the robot drive device 100 via a network and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive device 100, the control method comprising: executing a robot program 111 for driving the robot 10 in the robot drive device 100; performing read and write operations on the memory 120 of the robot drive device 100 based on the running robot program 111; and transmitting the contents of a call area 121 of the memory 120 allocated for calling the application 211 to the computing device 200.

[0101] (17) A program that causes the robot drive unit 100 to execute the following in a system comprising a robot drive unit 100 for driving a robot 10, and a computing unit 200 that communicates with the robot drive unit 100 via a network and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive unit 100: executing a robot program 111 for driving the robot 10, reading and writing to the memory 120 of the robot drive unit 100 based on the robot program 111 that is currently running, and transmitting the contents of the call area 121 of the memory 120 allocated for calling the application 211 to the computing unit 200.

[0102] (18) A program that causes the arithmetic unit 200 to perform the following actions in a system comprising a robot drive device 100 for driving a robot 10, and a computing unit 200 that communicates with the robot drive device 100 via a network and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive device 100: waiting for the contents of a call area 121 allocated for calling an application 211 in a memory 120 that the robot drive device 100 reads and writes based on a robot program 111 for driving the robot 10 to be transmitted from the robot drive device 100, and receiving the contents of the call area 121 transmitted from the robot drive device 100 and passing the contents of the call area 121 to the corresponding application 211.

[0103] 1...Robot system, 10...Robot, 100...Robot drive unit, 200...Calculation unit, 111...Robot program, 112...Execution unit, 120...Memory, 121...Call area, 113...Communication control unit, 211...Application, 213...Robot service, 122...Result area, 130...Corresponding data, 114...Assignment unit.

Claims

1. A robot system comprising: a robot drive device for driving a robot; and a computing device that communicates with the robot drive device via a network and is capable of executing applications necessary for controlling the robot in the robot drive device, wherein the robot drive device comprises: an execution unit for executing a robot program for driving the robot; a memory that is readable and writable from the robot program and includes a call area allocated for calling the application; and a communication control unit that transmits the contents of the call area to the computing device.

2. The robot system according to claim 1, wherein the computing device has a robot service that receives the contents of the call area from the communication control unit and passes the contents of the call area to the corresponding application.

3. The robot system according to claim 1, wherein the communication control unit monitors the occurrence of events in the call area and, when an event occurs in the call area, transmits the contents of the call area to the computing device.

4. The robot system according to claim 3, wherein the computing device transmits a monitoring request for the call area corresponding to the application to the communication control unit, and when the communication control unit receives the monitoring request, it starts monitoring events in the call area corresponding to the monitoring request.

5. The robot system according to claim 1, wherein the communication control unit and the computing device perform periodic communication to periodically exchange data, and the communication control unit includes the contents of the call area in the data of the periodic communication and transmits it to the computing device.

6. The robot system according to claim 5, wherein the computing device notifies the application that it has received the periodic communication data each time it receives the periodic communication data from the communication control unit.

7. The robot system according to claim 5, wherein the computing device transmits a request to the communication control unit to monitor the call area corresponding to the application; the communication control unit, upon receiving the monitoring request, issues an event ID to notify the computing device of an event in the call area; and when an event occurs in the call area, includes the contents of the call area together with the event ID in the data of the periodic communication and transmits it to the computing device.

8. The robot system according to any one of claims 1 to 7, wherein the memory further includes a result area allocated for storing the execution results of the application, and the communication control unit stores the execution results in the result area when it receives the execution results from the application.

9. The robot system according to any one of claims 1 to 7, wherein the execution unit accesses the call area based on a first variable name specified by the robot program and corresponding data that associates the first variable name with the call area, and the communication control unit accesses the call area based on a first variable name specified by the application and the corresponding data.

10. The robot system according to claim 9, wherein the memory further includes a result area allocated for storing the execution results of the application, the corresponding data further associates a second variable name with the result area, and when the communication control unit receives key-value type data from the arithmetic unit, which includes a second variable name as a key and the execution results of the application as a value, it stores the execution results indicated by the value in the result area based on the second variable name indicated by the key and the corresponding data.

11. The robot system according to claim 9, wherein the computing device transmits an event monitoring request specifying the first variable name to the communication control unit; the communication control unit, upon receiving the monitoring request, issues an event ID to notify the computing device of an event in the call area corresponding to the first variable name; accesses the call area based on the first variable name and the corresponding data, monitors events in the call area, and, when an event occurs in the call area, transmits the content of the event along with the event ID to the computing device.

12. The robot system according to claim 11, wherein the computing device and the communication control unit perform periodic communication for communicating data periodically and aperiodic communication for communicating data aperiodically, the computing device transmits an event monitoring request to the communication control unit via the aperiodic communication, and when an event occurs in the call area, the communication control unit includes the content of the event that occurred together with the event ID in the data of the periodic communication and transmits it to the computing device.

13. The robot system according to claim 9, wherein the computing unit is capable of executing a plurality of different applications, the memory includes a plurality of call areas corresponding to each of the plurality of applications, the corresponding data associates the namespace name of the corresponding application and the first variable name in the namespace with each of the plurality of call areas, the execution unit accesses the call areas based on the namespace name and the first variable name specified by the robot program and the corresponding data, and the communication control unit accesses the call areas based on the namespace name and the first variable name specified by the application and the corresponding data.

14. The robot system according to claim 13, wherein the robot drive device further comprises an assignment unit that assigns the call area to the space name of the namespace of the application and the first variable name in the namespace based on the definition file of the application, and adds the assignment result to the corresponding data.

15. The robot system according to claim 14, wherein when the computing unit starts any of the plurality of applications, it transmits the definition file for the application to be started to the communication control unit, and the allocation unit, based on the definition file received by the communication control unit, allocates the call area to the space name of the namespace of the application corresponding to the definition file and the first variable name in the namespace, and adds the allocation result to the corresponding data.

16. A method for controlling a robot, comprising a robot drive device for driving the robot and a computing device that communicates with the robot drive device via a network and is capable of executing applications necessary for controlling the robot in the robot drive device, the method comprising: executing a robot program for driving the robot in the robot drive device; performing read and write operations on the memory of the robot drive device based on the running robot program; and transmitting the contents of a call area of ​​the memory allocated for calling the application to the computing device.

17. A system comprising a robot drive device for driving a robot, and a computing device that communicates with the robot drive device via a network and is capable of executing applications necessary for controlling the robot in the robot drive device, wherein the system comprises a program that causes the robot drive device to execute a robot program for driving the robot, read and write to the memory of the robot drive device based on the robot program that is currently running, and transmit to the computing device the contents of a call area of ​​the memory allocated for calling the application.

18. A system comprising a robot drive device for driving a robot, and a computing device that communicates with the robot drive device via a network and is capable of executing applications necessary for controlling the robot in the robot drive device, wherein the computing device is instructed to: wait for the contents of a call area allocated for calling the application, which is read and written by the robot drive device based on a robot program for driving the robot, to be transmitted from the robot drive device; and receive the contents of the call area transmitted from the robot drive device and pass the contents of the call area to the corresponding application.