ROBOT SYSTEM AND CONTROL METHOD
The robot system addresses resource constraints by implementing cyclic and acyclic communication methods, enhancing functionality and stability by ensuring timely and efficient data exchange between the robot drive and computing devices, facilitating advanced applications.
Patent Information
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- YASKAWA DENKI KK
- Filing Date
- 2024-09-12
- Publication Date
- 2026-06-18
AI Technical Summary
Existing robot systems face limitations in extending functionality due to resource constraints and inefficient communication methods between the robot drive device and computing device, particularly during the servo-on phase where timely and reliable data exchange is crucial.
A robot system and control method that employs cyclic and acyclic communication methods between the robot drive device and computing device, allowing for timely data exchange and resource management, enabling the integration of various applications beyond the resource limitations of the robot drive device.
This approach enhances the functionality of robots by providing a reliable and efficient communication framework that reduces communication load, simplifies application development, and ensures stable operation by prioritizing cyclic communication, thereby extending the capabilities of the robot system.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical field
[0001] The present disclosure relates to a robot system and a control procedure. Background technology
[0002] Patent literature 1 discloses a motion control device for controlling the motion of a device to be controlled, in which both a non-real-time operating system and a real-time operating system are installed. The motion control device has a common memory that can be jointly referenced and written to by each functional unit in the non-real-time operating system and each functional unit in the real-time operating system. Bibliography Patent literature
[0003] [Patent Literature 1] Japanese Patent Application No. 2019-220135 A Brief explanation of the invention: Technical task
[0004] The present disclosure provides a system for effectively extending the functionality of a robot. Solution to the task
[0005] A robot system according to one aspect of the present disclosure comprises: a robot drive device configured to drive a robot; and a computing device configured to perform network communication with the robot drive device and to execute an application required for the robot drive device to control the robot, wherein, at least while the robot drive device is driving the robot, cyclic communication for cyclic communication of data and acyclic communication for non-cyclic communication of data are performed between the robot drive device and the computing device.
[0006] A control method according to another aspect of the present disclosure comprises: driving a robot by means of a robot drive device; executing an application required for the control of the robot by means of the robot drive device by means of a computing device configured to perform network communication with the robot drive device; performing cyclic communication for the cyclical communication of data between the robot drive device and the computing device; and performing acyclic communication for the non-cyclical communication of data between the robot drive device and the computing device. Advantageous effects of the invention
[0007] According to the present disclosure, a system for effectively extending the functionality of a robot can be provided. Brief description of the drawings Fig. Figure 1 is a diagram that schematically illustrates a configuration of a robot system. Fig. Figure 2 is a block diagram illustrating an exemplary functional configuration of a computing device and a robot drive device. Fig. Figure 3 is a block diagram illustrating a modified example of the computing device and the robot drive device. Fig. Figure 4 is a block diagram illustrating another modified example of the computing device and the robot drive device. Fig. Figure 5 is a block diagram illustrating an example hardware configuration of the computing device and the robot drive device. Fig. Figure 6 is a flowchart that illustrates an example of a communication initiation process. Fig. Figure 7 is a flowchart that illustrates an example of a query processing operation in the computing device. Fig. Figure 8 is a flowchart that illustrates an example of an acyclic communication process. Fig. Figure 9 is a flowchart that illustrates an example of a request processing operation in the robot drive device. Fig. Figure 10 is a flowchart that illustrates an example of a cyclic communication process in the robot drive device. Fig. Figure 11 is a flowchart that illustrates an example of a cyclic communication process in the computing device. Description of embodiments
[0008] The following describes the embodiments in detail with reference to the drawings. Identical elements or elements with the same function are assigned the same reference numerals in the description, and redundant descriptions are avoided. [Robot system]
[0009] A in Fig. The robot system 1 shown is a system that causes a robot 10 to perform various tasks. Examples of tasks performed by the robot 10 include transferring workpieces, machining workpieces, and assembling workpieces in an industrial production line. The robot system 1 includes, for example, 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 a floor, wall, or ceiling surface of the robot 10's work area. The base 11 can be installed on a mobile body, such as an automated guided vehicle (AGV). The articulated arm 12 is connected to the base 11. The articulated arm 12 has a plurality of articulating links 15 that are connected in series from the base 11 at a plurality of joints 14.The end effector 13 is connected to the tip of the articulated arm 12 and acts on a workpiece to perform the tasks described above. Examples of the end effector 13 include a hand for gripping a workpiece, a suction unit for picking up a workpiece, a tool for machining a workpiece, and a tool for assembling a workpiece (for example, a fastening tool, a welding tool, etc.). The articulated arm 12 changes the position and orientation of the end effector 13 by altering the angle of each of the multiple joints 14 using actuators, such as electric actuators. The configuration of the robot 10 is merely an example and can be modified. For example, the robot 10 could be a SCARA-type robot.
[0010] The control system 20 is a system for controlling the robot 10. For example, the control system 20 includes a robot drive device 100 and a computing device 200. The robot drive device 100 drives the robot 10. For example, the robot drive device 100 drives the plurality of joints 14 of the articulated arm 12 and the end effector 13. For example, the robot drive device 100 repeatedly executes a control cycle with a constant drive period, wherein the control cycle includes obtaining feedback information indicating 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 desired state of the robot 10 and the state of the robot 10 based on the feedback information.Driving the robot 10, for example, involves supplying drive power to a plurality of actuators, each of which drives a plurality of joints 14. Driving the robot 10 also involves maintaining a specific posture of the robot 10 by supplying drive power to the plurality of actuators.
[0011] The computer 200 is configured to perform network communication with the robot drive 100. The computer 200 is capable of running an application required for the robot drive 10 to control the robot 10. Network communication is digital communication that is carried out by identifying a destination using an address such as an IP address or a MAC address. Network communication takes place via layered protocols such as the TCP / IP model or the OSI model. The TCP / IP model, for example, has a network interface layer, an internet layer, a transport layer, and an application layer.
[0012] The application required to control robot 10 is an application that generates information necessary for executing the intended control. This application runs, for example, while the robot drive device 100 is driving robot 10. The period during which the robot drive device 100 is driving robot 10 is, for example, referred to as the servo-on phase and encompasses the period during which robot 10 is held in a specific posture by supplying drive power to the majority of actuators.
[0013] For example, the application is a program that performs processing not included in a program executed by the robot drive device 100 (hereinafter referred to as the "robot program"). Examples of the application include an image processing application, a force sensing application, and a path generation application, as described below. The image processing application is an application that performs image processing on images captured by a camera provided on or around the robot 10 and extracts information required for controlling the robot. Examples of information required for controlling the robot include the position of a workpiece and the position of a peripheral device of the robot 10.The information extracted by image processing is used, for example, to generate a motion path for the robot 10. The motion path is information that defines the position and orientation of the end effector 13. The image processing can include a matrix operation suitable for execution by a graphics processing unit (GPU). The force detection application is an application that generates an operation to be performed by the robot 10 according to a force detected by a force sensor. The path generation application is an application that generates a motion path for the robot 10 to perform a task by simulation (e.g., collision detection) based on the task to be performed by the robot 10 and three-dimensional models of the robot 10 and surrounding objects.The simulation, such as collision detection, can include a matrix operation suitable for execution by a graphics processing unit (GPU).
[0014] In the illustrated example, the control system 20 comprises: the robot drive unit 100, the computing unit 200, and a network switch 300, all housed in a casing 21 of the robot system 1, as well as a programming device 400, which can be used at a location remote from the casing 21. The robot drive unit 100 can be combined into a single unit by means of a partial casing 22 or the like, so that they can be inserted into and removed from the casing 21 together. Similarly, the computing unit 200 can be combined into a single unit by means of a partial casing 23 or the like, so that they can be inserted into and removed from the casing 21 together. The programming device 400 is a device operated by a person to teach the robot drive unit 100 the operation to be performed by the robot 10.The programmer 400 can be configured using hardware specialized for teaching operations or using a general-purpose computer, such as a tablet computer, and a teaching application. The network switch 300 is connected to each of the robot drive unit 100, the computer 200, and the programmer 400 via a LAN cable or similar connection and transmits network communication data between these units. For example, the network switch 300 transmits data based on a MAC address at the network interface layer of the TCP / IP model. In addition to their connection via the network switch 300, the robot drive unit 100 and the computer 200 can also be directly connected to each other.For example, the robot drive device 100 and the computing device 200 can be directly connected to each other via a LAN cable, which is different from the LAN cable that connects the robot drive device 100 and the network switch 300, as well as from the LAN cable that connects the computing device 200 and the network switch 300.
[0015] To reflect the execution result of the application by the computing device 200 in the controller of the robot 10, while the robot drive device 100 drives the robot 10, it is necessary to carry out timely communication between the robot drive device 100 and the computing device 200 with limited communication resources. Accordingly, the control system 20, as shown in Fig. 2 shown, configured to carry out cyclic communication for the cyclic communication of data and acyclic communication for the non-cyclic communication of data between the robot drive device 100 and the computing device 200 at least during the drive phase of the robot 10 by the robot drive device 100.
[0016] With the control system 20, the resources required for robot control can be extended from the robot drive device 100 to the computing device 200, so that various applications required for robot control can be easily implemented beyond the resource limitations of the robot drive device 100. Furthermore, when exchanging data and processing results for application execution, a suitable communication method can be selected from cyclic and acyclic communication, depending on the type of processing or application. For example, cyclic communication allows for the reliable exchange of data (e.g., position data) that corresponds to the drive cycle of the robot drive device 100. Acyclic communication allows for the exchange of temporary information at the required time (e.g., immediately) without generating a cyclic communication load.By combining these communication methods, timely communication can be achieved while suppressing the communication load, as the robot drive device 100 drives the control system 20. For example, multiple data records requiring periodicity rather than immediacy can be multiplexed onto cyclic data sent via cyclic communication, while only those requiring immediacy can be sent individually via acyclic communication, thus enabling timely communication while suppressing the communication load. Because the communication load is suppressed, it is possible to reduce the need for the application developer to consider communication constraints at the time of application creation and to provide a simpler development environment.
[0017] As described above, the period during which the robot drive device 100 drives the robot 10, for example, is called the servo-on period and includes the period during which the robot 10 is held in a specific posture by supplying drive power to the majority of actuators. The period during which the robot drive device 100 drives the robot 10 can also include the period during which the robot 10 is moving.
[0018] Cyclic communication can be strictly periodic communication conforming to a periodic communication standard (for example, EtherCAT (registered trademark)), but it need not be limited to strictly periodic communication conforming to a periodic communication standard. For example, cyclic communication can be communication performed at approximately fixed intervals based on a system timer of at least one by the robot drive device 100 and the computing device 200. Furthermore, cyclic communication only needs to be performed in cycles where data is to be transmitted and can be omitted in cycles where no data is to be transmitted.
[0019] Examples of data records included in cyclic data (hereinafter referred to as "first cyclic data") from the robot drive device 100 to the computing device 200 include: data records indicating the current state of the robot 10, such as the current position of the robot 10 (for example, the current angle of each of the multiple joints 14); data records indicating the status of the processing being performed by the robot drive device 100 in response to a request from the computing device 200; and the like. Examples of data records included in cyclic data (hereinafter referred to as "second cyclic data") from the computing device 200 to the robot drive device 100 include the target attitude and the like of the robot 10 for each control cycle based on a motion path calculated by the computing device 200.The target posture of the robot 10 can be the target angle of each of the plurality of joints 14 or the target position and orientation of the end effector 13. Examples of data records transmitted from the computer 200 to the robot drive 100 via acyclic communication include: data records requesting the transmission of configuration information for the robot 10; data records requesting the writing of settings from the computer 200 to the robot drive 100; data records requesting servo activation from the computer 200 to the robot drive 100; and data records requesting a one-time operation from the computer 200 to the robot drive 100. For example, the data record requesting a one-time operation is an operating command instructing the robot 10 to move into a target posture.
[0020] The robot drive device 100 can include a communication control unit 111 as a functional block. The communication control unit 111 is configured to control cyclic and acyclic communication in response to a request from the computer 200. For example, if the request from the computer 200 is a one-time request, the communication control unit 111 transmits a response to the request using acyclic communication. If the request from the computer 200 is a cyclic request, the communication control unit 111 transmits a response to the request using cyclic communication. The communication control unit 111 automatically assigns a suitable communication type according to the type of request.Therefore, at least the communication from the robot drive device 100 to the computing device 200 can be encapsulated, and the application developer can benefit from a highly functional robot development environment without having to consider the communication.
[0021] A one-time request is a request that is completed with a single response. A cyclic request is a request that requires repeated cyclic responses. For example, when the communication control unit 111 receives a one-time request, it prepares a response to the received request and immediately transmits the prepared response to the computing device 200. Upon receiving a cyclic request, the communication control unit 111 inserts the response to the request into the first cyclic data and transmits the first cyclic data to the computing device 200.
[0022] The computing device 200 includes the application 211 described above and a plurality of APIs 212. The computing device 200 can include a plurality of applications 211. Furthermore, the computing device 200 includes a robot service 213 as a function block. Each of the plurality of APIs 212 is an application programming interface that can be called by the application 211.
[0023] The robot service 213 is configured to select one or both a one-time request and a cyclic request, according to the API 212 called by the application 211, and to transmit the selected request to the communication control unit 111. Communication from the computing device 200 to the robot drive device 100 can also be encapsulated. Since either a one-time request or a cyclic request is selected according to the API, an application can be easily created using the API without regard to the type of communication.
[0024] For example, the processing to be performed by Robot Service 213 is predefined for each of the plurality of APIs 212. Hereinafter, the processing to be performed by Robot Service 213 is referred to as the "service processing." When any of the plurality of APIs 212 is called, Robot Service 213 selects and executes the service processing corresponding to the called API 212. If the selected service processing involves a one-time request to the Communication Control Unit 111, the one-time request is selected by choosing the service processing. If the selected service processing involves a recurring request to the Communication Control Unit 111, the recurring request is selected by choosing the service processing.If Robot Service 213 selects a service processing activity that includes a one-time request, Robot Service 213 transmits the one-time request as part of the service processing activity to Communication Control Unit 111. If Robot Service 213 selects a service processing activity that includes a cyclical request, it transmits the cyclical request as part of the service processing activity to Communication Control Unit 111.
[0025] In addition to network communication with the communication control unit 111, the robot service 213 can also perform network communication with the application 211. For example, the computing device 200 can have one or more virtualized containers. A container is a virtual execution environment that bundles libraries, configuration files, etc., required for the operation of an application into a single package, allowing the application to run independently of other containers or the host system (e.g., the operating system).
[0026] The one or more containers can contain an application container capable of network communication with the robot service 213, and the application 211 can be stored in the application container. The computing device 200 can contain, as one or more containers, an application container and a service container capable of network communication with each other, and the application 211 can be stored in the application container and the robot service 213 can be stored in the service container.
[0027] As in Fig. As shown in Figure 3, the computing device 200 (robot service 213) can send a one-time request to the communication control unit 111 using acyclic communication. When sending a one-time request via acyclic communication, the communication control unit 111 sends a response to the request to the robot service 213.
[0028] The computer 200 (robot service 213) can be configured to transmit a cyclic request to the communication control unit 111 via acyclic communication. Upon receiving a cyclic request via acyclic communication, the communication control unit 111 is configured to send a response to the computer 200 via cyclic communication. Because the request is sent by the robot service 213 via acyclic communication, the request can be transmitted to the robot drive unit 100 without waiting for the cyclic communication cycle to complete. Furthermore, if the request is a cyclic request, the requested data can be included in the initial cyclic data transmitted repeatedly via cyclic communication.Accordingly, computing costs and communication costs can be reduced.
[0029] For example, when a cyclic request is received via acyclic communication, the communication control unit 111 issues a response ID for the request and transmits the issued response ID to the robot service 213 via acyclic communication. The robot service 213 stores the received response ID in association with application 211 (the application 211 that caused the robot service 213 to transmit the cyclic request). The communication control unit 111 then appends the issued response ID to the response to the request and includes the response ID in the first cyclic data that is repeatedly transmitted to the robot service 213. Each time the robot service 213 receives the first cyclic data from the communication control unit 111, it sends the response back to the application 211 associated with the response ID, based on the response ID appended to the response.In addition to the response ID, the communication control unit 111 can also append the data size of the response to the request and transmit the response to the robot service 213. In this case, the robot service 213 can extract the response corresponding to the request from the initial cyclic data based on the response ID and the data size, and send the extracted response back to the application 211 associated with the response ID.
[0030] The communication control unit 111 can be configured to perform cyclic and acyclic communication with the computing device 200 using an identical communication resource and can prioritize cyclic communication over acyclic communication. The reliability of the cyclic communication can be maintained, and a robot system 1 capable of stable operation can be built.
[0031] Examples of identical communication resources have a physically identical communication path (for example, a communication line). Identical communication resources are not limited to wired connections and can be an identical communication band in wireless communication.
[0032] For example, the communication control unit 111 prioritizes cyclic communication over acyclic communication, thus maintaining cyclic communication. Specifically, at the time of transmission of the first cyclic data, the communication control unit 111 first allocates the communication resource to the cyclic data and allocates any excess communication resource to the acyclic communication data.
[0033] The communication control unit 111 can have: one or more cyclic communication queues 112 configured to receive data sent sequentially to the computing device 200; and one or more acyclic communication queues 113 configured to receive data sent sequentially to the computing device 200. At a cyclic communication event, the communication control unit 111 can prioritize data stored in the one or more cyclic communication queues 112 over data stored in the one or more acyclic communication queues 113 and transmit the prioritized data to the computing device 200.Since queue 112 for cyclic communication is prioritized over queue 113 for acyclic communication, it is possible to prevent the communication resources required for cyclic communication from being restricted.
[0034] For example, the communication control unit 111 can have queues 112 and 113 in the transport layer described above, store responses to cyclic requests in queue 112, and store responses to one-off requests in queue 113. At a communication time point of the cyclic communication, the communication control unit 111 inserts data held in one or more queues 112 into a transmission packet to the robot service 113 and inserts at least some of the data held in one or more queues 113 into a surplus transmission packet.
[0035] The communication control unit 111 can also have, in addition to one or more queues 113 with a lower priority than the one or more queues 112, one or more queues 113 with a higher priority than the one or more queues 112. Hereinafter, the one or more queues 113 with a lower priority than the one or more queues 112 are referred to as "normal queues 113", and the one or more queues 113 with a higher priority than the one or more queues 112 are referred to as "high priority queues 113".If the communication control unit 111 has both normal queues 113 and high-priority queues 113, it can store responses to one-off requests, which are unproblematic even if their priority is lowered, in the normal queues 113 and responses to one-off, high-priority requests in the high-priority queues 113. At a communication point during cyclic communication, the communication control unit 111 can prioritize data held in the high-priority queues 113 over data held in the queues 112 and transmit the prioritized data to the computing device 200. This prevents delays in responses to one-off, high-priority requests.Each of the queues 112 and 113, for example, is configured by a first-in-first-out (FIFO) storage system or similar, which is capable of setting priorities.
[0036] The robot drive device 100 can further comprise a processing unit 114 and a timestamp assignment unit 115 as functional blocks. The processing unit 114 is configured to repeat the processing (for example, the control cycle described above) to drive the robot 10 at a defined period length (for example, the control cycle described above). The timestamp assignment unit 115 is configured to assign a timestamp to a processing result by the processing unit 114. Examples of the processing result include feedback information obtained in the control cycle described above, as well as information about the drive power in the control cycle described above.If a non-cyclic request received by the communication control unit 111 requires processing by the processing unit 114, the processing unit 114 can perform a one-time processing operation in accordance with the non-cyclic request and return the processing result to the communication control unit 111. Examples of non-cyclic requests include a request to read setting information in the robot drive device 100 and a one-time confirmation request for feedback information.
[0037] The communication control unit 111 can be configured to transmit the processing result, time-stamped by the timestamp assignment unit 115, to the computing device 200 via cyclic communication. For example, the communication control unit 111 can insert the processing result, time-stamped by the timestamp assignment unit 115, into the first cyclic data described above and transmit the first cyclic data to the computing device 200.
[0038] Based on a timestamp, the computing device 200 can perform processing while reducing the impact of jitter in the cyclic communication. Even if, for example, the time at which the computing device 200 receives the processing result varies due to the cyclic communication, the processing result can be used in the calculation in the application 211 as if it existed at the time specified by the timestamp, thus eliminating the impact of the variation. The time at which the timestamp assignment unit 115 assigns a timestamp can be the time at which the processing result is obtained by the processing unit 114, or the time at which the communication control unit 111 inserts the processing result into the first cyclic data.
[0039] The communication control unit 111 can be configured to repeatedly transmit the initial cyclic data to the computing device 200 via cyclic communication, regardless of whether there is any information to be transmitted via cyclic communication. Since the initial cyclic data is sent periodically via cyclic communication, various processing operations can be established under the assumption that the initial cyclic data is periodically received by the computing device 200. For example, the computing device 200 can determine, based on the periodic arrival of the initial cyclic data, that communication with the robot drive device 100 is being maintained. Furthermore, processing operations synchronized with the processing in the robot drive device 100 can be executed based on the time of receipt of the initial cyclic data.
[0040] The communication control unit 111 can be configured to transmit the initial cyclic data to the computing device 200 by performing cyclic communication in a cycle synchronized with the robot 10's drive period in the robot drive device 100. Since the initial cyclic data is sent in a period synchronized with the robot 10's drive period, the computing device 200 can perform calculations synchronized with the robot 10's drive period. In the robot drive device 100, multiple processes can be repeated in different periods. For example, in addition to the robot 10's drive processing being repeated in the drive period, I / O processing to verify external input / output to the robot drive device 100 can be repeated in an I / O period that differs from the drive period.In this case, the communication control unit 111 can transmit the first cyclic data to the computing device 200 by performing the cyclic communication in a period synchronized with the I / O period. If the I / O period is synchronized with the drive period, performing the cyclic communication in a period synchronized with the I / O period is included in the cycle of performing the cyclic communication in a cycle synchronized with the drive period.
[0041] The computer 200 can be configured to send a clock announcement to the application running on it in response to receiving data from the robot drive 100. For example, the computer 200 can send a clock announcement to the application running on it every time it receives the first cycle of data from the robot drive 100. This clock announcement allows the application running on the computer 200 to synchronize its timing with the robot's drive cycle and perform processing accordingly. Therefore, the effort required by a system integrator or service provider to develop the application running on the computer 200 can be significantly reduced.If the drive period and the I / O period described above are synchronized, and the drive period is an integer multiple of the I / O period, the communication control unit can possess cycle identification information to identify whether the data transmission is occurring in the drive period or in the I / O period of the first cyclic data, and transmit this information to the computing device 200. The computing device 200 can perform a clock announcement that includes a notification of the cycle identification information. Based on this notification, an application better suited for the operation of the robot drive device 100 can be easily created.
[0042] The computing device 200 can be configured to transmit the second cyclic data to the robot drive device 100 via cyclic communication, regardless of whether information is to be transmitted via cyclic communication. The robot drive device 100 can further include a watchdog unit 116 as a functional block. The watchdog unit 116 is configured to verify the integrity of the communication with the computing device 200 based on the second cyclic data. The robot drive device 100 can thus confirm that the computing device 200 is operational and capable of communication. This confirmation result can also be used as a control condition for errors, alarms, emergency stops, or processing branching in the robot drive device 100.
[0043] For example, if the communication control unit 111 fails to receive the second cyclic data at the time it should be received, the watchdog unit 116 determines that communication with the computing device 200 is unreliable. In this case, the robot drive unit 100 can halt the control of the robot 10 based on the second cyclic data. The robot drive unit 100 can perform an emergency stop of the robot 10 or issue an alarm to the operator. The robot drive unit 100 can temporarily stop the robot 10 and resume its operation once communication with the computing device 200 returns to a reliable state.
[0044] The watchdog unit 116 can be configured to refrain from confirming integrity based on the second cyclic data until the communication control unit 111 establishes cyclic communication, and can be configured to begin confirming integrity based on the second cyclic data after the communication control unit 111 has established cyclic communication. This prevents the false detection of an integrity loss in a situation where the system is merely waiting for cyclic communication to be established.
[0045] Instead of, or in addition to, the watchdog unit 116 in the robot drive device 100, the computing device 200 may also have a watchdog unit 216. If the robot service 213 cannot receive the first cyclic data at the time when the first cyclic data should be received, the watchdog unit 216 determines that communication with the robot drive device 100 is unreliable. In this case, the robot service 213 can send a command to the communication control unit 111 to perform an emergency stop of the robot 10 or issue an alarm to the operator.The robot service 213 can temporarily suspend the transmission of the second cyclic data to the robot drive device 100 and resume the transmission of the second cyclic data to the robot drive device 100 in response to the fact that communication with the robot drive device 100 returns to a reliable state.
[0046] The watchdog unit 216 can be configured to refrain from confirming integrity based on the first cyclic data until the robot service 213 has established cyclic communication, and can be configured to begin confirming integrity based on the second cyclic data after the robot service 213 has established cyclic communication. This prevents the erroneous detection of an integrity loss in a situation where the unit is merely waiting for the establishment of cyclic communication.
[0047] The computing device 200 can be configured to insert an emergency stop signal into the second cyclic data and transmit the second cyclic data to the robot drive device 100 to cause the robot drive device 100 to perform an emergency stop. If the second cyclic data contains the emergency stop signal, the robot drive device 100 can be configured to perform an emergency stop of the robot 10.
[0048] By using the second cyclic data, which is periodically transmitted to the robot drive unit 100, the computing device 200 can cause the robot drive unit 100 to perform an emergency stop. Even if the second cyclic data, which contains the emergency stop signal, is not transmitted due to a communication problem, the robot drive unit 100 can still be caused to perform an emergency stop based on the monitoring result from the watchdog unit 116.Furthermore, if the cyclic communication occurs with a period less than or equal to the drive period of the robot drive device 100, the second cyclic data is also transmitted with a period less than or equal to the drive period of the robot drive device 100. This suppresses the number of drive periods executed before the emergency stop signal is transmitted, allowing the robot drive device 100 to be stopped quickly in an emergency. Even if no free resources are available in the acyclic communication resource due to a request such as a file acquisition, the delay in stopping the robot drive device 100 can be prevented.
[0049] As in Fig. As shown in Figure 4, the robot service 213 can be configured to: sequentially transmit n requests from one or more applications 211 to the robot drive device using m sockets 217, where m is less than n; and receive a response to each of the n requests via the m sockets 217 (one socket in the figure) and return each received response to a corresponding request. Sharing at least one of the m sockets 217 among two or more requests can save communication resources.
[0050] Socket 217, for example, is a TCP socket and conducts communication in a state where the connection is established. The connection through Socket 217 is established based on the IP address and port number of a server. The communication control unit 111 can be the server, or the robot service 213 can be the server; n can be any number; m can be any number as long as it is less than n.
[0051] The robot service 213 can be configured to change the number of m sockets 217 based on the occupancy status of the m sockets 217 due to the n requests. This can achieve both a saving of communication resources and smooth communication.
[0052] The occupancy status is, for example, the ratio of Socket 217 among the m Socket 217 that are occupied by one of the n requests. If, for instance, the occupancy status is high and timely communication with the m Socket 217 is difficult, the robot service 213 can increase the number of Socket 217. Conversely, the robot service 213 can decrease the number of Socket 217 if the occupancy status is low and timely communication with fewer than m Socket 217 is possible.
[0053] The robot service 213 can be configured to assign a response memory 214 to each of the n requests; to store a received response corresponding to each of the n requests in a corresponding memory 214; and to return the response stored in memory 214 to the application that made the corresponding request. Receiving requests from applications, performing communication via socket 217, and returning responses to applications can all occur independently. This allows for flexible responses to multiple requests from multiple applications.
[0054] For example, the robot service 213 can communicate with the application 211 and with the communication control unit 111 at independent times. Hereinafter, the communication with the application 211 is referred to as the "first communication" and the communication with the communication control unit 111 is referred to as the "second communication." For example, the robot service 213 has a queue 218 and stores n requests received from one or more applications via the first communication in the queue 218. The robot service 213 retrieves the requests stored in the queue 218 one by one and allocates a memory 214 according to the request retrieved from the queue.After memory 214 is allocated, the robot service 213 transmits the request via the second communication to the communication control unit 111 and stores the response received from the communication control unit 111 (response to a one-time request or response ID to a cyclic request) in memory 214. The robot service 213 reads the response from memory 214 at a time independent of the second communication. The robot service 213 sends the read response back via the first communication to the application that issued the request corresponding to memory 214.
[0055] Fig. Section 5 explains an example of a hardware configuration for the robot drive device 100 and the computing device 200. As in Fig. As shown in Figure 5, the robot drive device 100 has a circuit 190, and the computing device 200 has a circuit 290. The circuit 190 has a first CPU 191, a memory 192, a memory 193, a communication port 194, and a driver circuit 195. The memory 193 stores a program for controlling the robot 10 and for performing cyclic and acyclic communication with the computing device 200. The program includes, for example, a real-time operating system, the robot program described above, and a program for configuring the function blocks described above in the robot drive device 100. The memory 193 includes, for example, one or more non-volatile storage media. The non-volatile storage media include one or more storage devices. Examples of the one or more storage devices include a hard disk drive, a solid-state drive, and flash memory.The non-volatile storage media can include a portable storage medium such as an optical disc.
[0056] Memory 192 temporarily stores a program loaded from memory 193. Memory 192 has one or more volatile storage media. The volatile storage media have one or more storage devices. Examples of the one or more storage devices include multiple access memory. The first CPU 191 executes the program loaded into memory 192 to configure the function blocks described above in the robot drive device 100. The first CPU 191 can temporarily store calculation results in memory 192. The first CPU 191 is a central processing unit (CPU) and has one or more computing devices. The one or more computing devices can be one or more cores.
[0057] The communication port 194 initiates network communication with the computing device 200 in response to a request from the first CPU 191. The driver circuit 195, in response to a request from the first CPU 191, supplies drive power to the plurality of actuators described above.
[0058] Circuit 290 includes a second CPU 291, a memory 292, a memory 293, a GPU 294, and communication ports 295 and 296. Memory 293 stores a program that includes an application required for controlling the robot 10. For example, memory 293 contains a non-real-time operating system program and a program for configuring the plurality of APIs 212 and function blocks in the robot drive device 100 described above.
[0059] Memory 292 temporarily stores a program loaded from memory 293. Memory 292 has one or more volatile storage media. The volatile storage media have one or more storage devices. Examples of the one or more storage devices include a multiple access memory. The second CPU 291 executes the program loaded into memory 292 to configure the function blocks described above in the computing device 200, cooperating with the GPU 294 as needed. The second CPU 291 and the GPU 294 can temporarily store computation results in memory 292. The second CPU 291 has one or more computing devices. The one or more computing devices can be, for example, one or more central processing units or one or more cores contained within a central processing unit.The GPU 294, for example, has one or more graphics processing units that are specialized for parallel processing.
[0060] In response to a request from the second CPU 291, communication port 295 initiates network communication with communication port 194. This allows the second CPU 291 to communicate with the first CPU 191.
[0061] The second CPU 291 can be configured to instruct the GPU 294 to perform a matrix operation related to generating a path for robot 10 (for example, the movement path described above) while the first CPU 191 controls robot 10. The first CPU 191 can then be configured to instruct robot 10 to move along the path based on computational results from the second CPU 291 and the GPU 294. By enabling the GPU 294 to use matrix operations to generate a path for robot 10 while the first CPU 191 controls the robot, the functionality of robot 10 can be easily extended.
[0062] The GPU 294 can perform a matrix operation in conjunction with image processing, as described above, to generate the path based on an image of the robot 10's environment. The robot 10 can be controlled while the image processing result is reflected in the path.
[0063] The GPU 294 can perform a matrix operation for collision detection between robot 10 and an environment object of robot 10, based on models of both robot 10 and the environment object. Robot 10 can be controlled, with the collision result between robot 10 and the environment object reflected in its path. [Tax procedure]
[0064] As an example of the control procedure, a control procedure executed by the control system 20 is presented. This control procedure includes: driving the robot by the robot drive device 100; executing an application required for controlling the robot 10 by the robot drive device 100 by the computer device 200; performing cyclic communication for the cyclical exchange of data between the robot drive device 100 and the computer device 200; and performing acyclic communication for the non-cyclical exchange of data between the robot drive device 100 and the computer device 200.
[0065] The control procedure is explained below using flowcharts. The depicted control procedure includes: a communication start procedure between the robot drive device 100 and the computer device 200, a request processing procedure in the computer device 200, an acyclic communication procedure, a request processing procedure in the robot drive device 100, a cyclic communication procedure in the robot drive device 100, and a cyclic communication procedure in the computer device 200. (Communication start procedure)
[0066] This process is a process for establishing communication between the robot drive device 100 and the computing device 200 before the robot drive device 100 begins driving the robot 10. As in Fig. As shown in Figure 6, the robot drive unit 100 and the computing unit 200 first execute step S01. In step S01, either the robot drive unit 100 or the computing unit 200 requests the other to establish a connection using the m sockets 217 described above. Next, the robot drive unit 100 executes step S02. In step S02, the communication control unit 111 checks whether the connections have been established using the m sockets 217. If step S02 determines that the connection has not yet been established, the robot drive unit 100 executes step S03. In step S03, the communication control unit 111 checks whether a predetermined time has elapsed since the start of step S01. If step S03 determines that the predetermined time has not yet elapsed, the robot drive unit 100 returns to step S02.After that, the robot drive device 100 either waits for communication to be established or for the predetermined time to elapse.
[0067] If, in step S02, it is determined that the connection via the m-sockets 217 has been established, the robot drive unit 100 executes step S04. In step S04, the processing unit 114 starts the processing (the control cycle described above) to control the robot 10. Subsequently, the robot drive unit 100 executes steps S05 and S06. In step S05, the watchdog unit 116 waits for the point of cyclic communication. In step S06, the watchdog unit 116 checks whether the communication control unit 111 has received the second cyclic data. If, in step S06, it is determined that the second cyclic data has been received, the robot drive unit 100 returns to step S05. Thereafter, at each point of cyclic communication, it is checked whether the second cyclic data has been received.
[0068] If step S06 determines that the second cyclic data has not been received, or if step S03 determines that the predetermined time has elapsed, the robot drive unit 100 executes step S07. In step S07, the watchdog unit 116 issues an alarm and causes the robot 10 to perform an emergency stop. For example, the watchdog unit 116 displays an alarm to the operator on a display device or similar. After step S07, the control process of the robot 10 is complete. (Request processing procedure in the computing device)
[0069] This method involves the computing device 200 processing requests from the application 211, while the connection is established via the m-sockets 217 and the robot drive device 100 drives the robot 10. As in Fig. As shown in Figure 7, the computing device 200 performs steps S11, S12, S13, and S14. In step S11, the robot service 213 waits for one of the multiple APIs 212 to be called. In step S12, the robot service 213 selects the processing corresponding to the called API 212. In step S13, the robot service 213 allocates a response memory 214. In step S14, a request to be transmitted to the communication control unit 111 is written to queue 218. The request written to queue 218 is transmitted to the communication control unit 111 using the acyclic communication procedure described later. When a response to the request is received, it is written to memory 214.
[0070] Next, the computing device 200 executes steps S15 and S16. In step S15, the robot service 213 waits for a response to be written to memory 214. In step S16, the robot service 213 reads the response written to memory 214.
[0071] Next, the computing device 200 executes step S17. In step S17, the robot service 213 checks whether the response read from the computer's memory 214 is a response ID for a response using cyclic communication. If step S17 determines that the read response is a response ID, the computing device 200 executes step S18. In step S18, the robot service 213 stores the response ID in conjunction with the request to be processed.
[0072] If step S17 determines that the retrieved response is not a response ID, the computing device 200 executes step S19. In step S19, the robot service 213 sends the response back to the application 211 from which the request to be processed originated. After steps S18 and S19 have been executed, the computing device 200 returns to processing in step S11. The computing device 200 then repeats the processing described above. (Acyclic communication method)
[0073] This procedure is a communication procedure that is executed by the computing device 200 according to the request written to queue 218 in step S14, as described above. As in Fig. As shown in Figure 8, the computing device 200 first executes step S21. In step S21, the robot service 213 reads a request from the queue 218.
[0074] Next, the computing device 200 performs steps S22 and S23. In step S22, the robot service 213 checks the occupancy status of the m sockets 217. In step S23, the robot service 213 changes the number of sockets 217 as needed, based on the occupancy status of the m sockets 217.
[0075] Next, the computer 200 executes steps S24, S25, and S26. In step S24, the robot service 213 transmits the read request to the communication control unit 111. In step S25, the robot service 213 waits for a response from the communication control unit 111. In step S26, the robot service 213 writes the response from the communication control unit 111 to memory 214. Afterward, the computer 200 returns to step S21. The computer 200 then repeats the process described above. (Request processing procedure in the robot drive device)
[0076] This procedure is one in which the robot drive device 100 processes a request transmitted by the robot service 213 in step S22 described above. As in Fig. As shown in Figure 9, the robot drive device 100 first performs steps S31 and S32. In step S31, the communication control unit 111 waits to receive a request. In step S32, the communication control unit 111 checks whether the request is a one-time request.
[0077] If step S32 determines that the request is a one-time request, the robot drive device 100 executes steps S33 and S34. In step S33, the processing unit 114 generates a response to the request received from the communication control unit 111. In step S34, the communication control unit 111 transmits the response generated by the processing unit 114 to the robot service 213.
[0078] If step S32 determines that the request is a cyclic request, the robot drive unit 100 executes steps S35 and S36. In step S35, the communication control unit 111 outputs a response ID for the cyclic request and transmits it to the robot service 213. In step S36, the communication control unit 111 adds the response to the request to the target to be inserted into the first cyclic data. The response added to the target is inserted into the first cyclic data and transmitted via cyclic communication as part of the cyclic communication procedure described later. After executing steps S34 and S36, the robot drive unit 100 returns to step S31. The robot drive unit 100 then repeats the process described above. (Cyclical communication method in the robot drive device)
[0079] This procedure is a cyclic communication method executed by the robot drive device 100 after the connection has been established via socket 217. As in Fig. As shown in Figure 10, the robot drive device 100 performs steps S41, S42, S43, S44, and S45. In step S41, the processing unit 114 performs processing similar to the control cycle described above. In step S42, the timestamp assignment unit 115 assigns a timestamp to the processing result via the memory 214. In step S43, the communication control unit 111 appends the output response ID to the processing result, which is to be included in the first cyclic data, among the timestamped processing results, and adds the processing result with the response ID to the first cyclic data. In step S44, the communication control unit 111 waits for the transmission time of the first cyclic data. The transmission time of the first cyclic data is, for example, the time at which the control cycle described above has expired.In step S45, the communication control unit 111 transmits the first cyclic data to the robot service 213. The robot drive unit 100 then returns to step S41. The robot drive unit 100 repeats the process described above. (Cyclical communication method in the computing device)
[0080] This procedure is a cyclic communication procedure executed by the computing device 200 after the connection has been established via socket 217. As in Fig.As shown in Figure 11, the computing device 200 performs steps S51 and S52. In step S51, the robot service 213 waits to receive the first cyclic data. In step S52, in response to receiving the first cyclic data, the robot service 213 transmits the second cyclic data to the communication control unit 111. The computing device 200 then returns to step S51. The computing device 200 repeats the process described above. [Conclusion] (1) Robot system 1 comprising: a robot drive device 100 configured to drive a robot 10; and a computing device 200 configured to perform network communication with the robot drive device 100 and to execute an application 211 required for the robot drive device 10 to control the robot 10, wherein at least while the robot drive device 100 is driving the robot 10, cyclic communication for cyclic communication of data and acyclic communication for non-cyclic communication of data are performed between the robot drive device 100 and the computing device 200.With this robot system 1, the resources required for controlling the robot 10 can be extended from the robot drive device 100 to the computing device 200, so that various processing operations or applications 211 required for controlling the robot 10 can be readily implemented beyond the resource limitations of the robot drive device 100. Furthermore, when exchanging data and processing results for executing the processing or application 211, communication appropriate to the type of processing or application 211 can be used, either cyclic or acyclic. For example, cyclic communication allows data (e.g., position data) corresponding to the drive period of the robot drive device 100 to be reliably sent and received. Acyclic communication allows temporary information to be transmitted at a necessary time (e.g.,Data can be exchanged immediately without generating a cyclic communication load. By combining these communication types, timely communication can be performed while suppressing the communication load, as the robot drive device 100 drives the robot 10. For example, data records that are updated or generated periodically can be multiplexed onto cyclic data sent via cyclic communication, and only data records that require immediacy rather than periodicity can be sent individually via acyclic communication, thus enabling timely communication while suppressing the communication load. Because the communication load is suppressed, it is possible to reduce the need for the application developer to consider communication constraints when building the application and to provide a simpler development environment.Furthermore, it is possible to reduce the need for the developer to consider communication restrictions when creating the processing or application 211, and to provide a simpler development environment. (2) Robot system 1 according to (1), wherein the robot drive device 100 comprises a communication control unit 111 configured to control cyclic and acyclic communication in response to a request from the computing device 200, and wherein the communication control unit 111 is configured to send a response to the request to the computing device 200 via acyclic communication if the request is a one-time request; and to send a response to the request via cyclic communication if the request is a cyclic request. In this robot system 1, the communication control unit 111 automatically assigns a suitable communication type according to the nature of the request.Therefore, at least the communication from the robot drive device 100 to the computing device 200 can be encapsulated, and the developer of the application 211 can benefit from a highly functional development environment for the robot 10 without having to consider the communication. (3) Robot system 1 according to (2), wherein the computing device 200 comprises: a plurality of APIs 212 that can be called from the application 211; and a robot service 213 that is configured to select one or both of a one-time request and a cyclic request according to the API 212 called by the application 211 and to transmit the selected request to the communication control unit 111. The communication from the computing device 200 to the robot drive device 100 can also be encapsulated. Since either a one-time request or a cyclic request is selected according to the API 212, the application 211 can be easily created using the API 212 without regard to the type of communication. (4) Robot system 1 according to (2) or (3), wherein the computing device 200 is configured to transmit a cyclic request to the communication control unit 111 via acyclic communication, and the communication control unit 111 is configured to transmit a response to the request to the computing device 200 via cyclic communication upon receipt of the cyclic request. Since in this robot system 1 the request is sent by the computing device 200 via acyclic communication, the request can be transmitted to the robot drive device 100 without waiting for the cycle of cyclic communication. Furthermore, if the request is a cyclic request, the response to the request can be inserted into the cyclic data that is repeatedly transmitted via cyclic communication. Accordingly, computing and communication costs can be reduced. (5) Robot system 1 according to any one of (2) to (4), wherein the communication control unit 111 is configured to: perform cyclic and acyclic communication with the computing device 200 using an identical communication resource; and prioritize cyclic communication over acyclic communication. In this robot system 1, the reliability of the cyclic communication can be maintained, and a robot system 1 capable of stable operation can be established. (6) Robot system 1 according to (5), wherein the communication control unit 111 comprises: one or more cyclic communication queues configured to hold data sent sequentially to the computing device 200; and one or more acyclic communication queues configured to hold data sent sequentially to the computing device 200, wherein the communication control unit 111 is configured to prioritize, at a cyclic communication communication time point, data held in the one or more cyclic communication queues over data held in the one or more acyclic communication queues, and to transmit the prioritized data to the computing device 200.In this robot system 1, it is possible to prevent the communication resources required for cyclic communication from becoming scarce, since the queue for cyclic communication is prioritized over the queue for acyclic communication. (7) Robot system 1 according to any one of (2) to (6), wherein the robot drive device 100 further comprises: a processing unit 114 configured to repeat the processing to drive the robot 10 at a fixed cycle length; and a timestamp assignment unit 115 configured to assign a timestamp to a processing result, and wherein the communication control unit 111 is configured to transmit the processing result timestamped by the timestamp assignment unit 115 via cyclic communication. Based on the timestamp, the computing device 200 can perform processing, thereby reducing the impact of jitter and latency in the cyclic communication. (8) Robot system 1 according to any one of (1) to (7), wherein the computing device 200 further comprises a robot service 213 configured to: sequentially transmit n requests from one or more applications 211 to the robot drive device 100 using m sockets 217, where m is less than n; and receive a response to each of the n requests via the m sockets 217 and send each received response back to a corresponding request. This robot system 1 can save communication resources. (9) Robot system 1 according to (8), wherein the robot service 213 is configured to: allocate a response memory 214 for each of the n requests, store a received response corresponding to each of the n requests in a corresponding memory 214, and return the response stored in memory 214 to the application 211 from which the corresponding request originated. Receiving requests from applications 211, performing communication via socket 217, and returning responses to applications 211 can be performed independently. Accordingly, it is possible to respond flexibly to multiple requests from multiple applications 211. (10) Robot system 1 according to (8), wherein the robot service 213 is configured to change the number of m sockets 217 based on the occupancy status of the m sockets 217 by the n requests. Both saving communication resources and the immediacy of communication can be achieved. (11) Robot system 1 according to (1), wherein the robot drive device 100 has a communication control unit 111 configured to control cyclic and acyclic communication with the computing device 200, the communication control unit 111 being configured to repeatedly transmit initial cyclic data to the computing device 200 via cyclic communication, regardless of whether there is information to be transmitted via cyclic communication. Since, in this robot system 1, cyclic data is periodically sent to the computing device 200 via cyclic communication, various processing operations can be set up assuming that data is periodically received by the computing device 200 via cyclic communication.For example, the computing device 200 can determine, based on the periodic arrival of cyclic data, that communication with the robot drive device 100 is being maintained. Furthermore, processing steps synchronized with the processing in the robot drive device 100 can be executed based on the time of receipt of the cyclic data. (12) Robot system 1 according to (11), wherein the communication control unit 111 is configured to transmit the initial cyclic data to the computing device 200 by performing cyclic communication with a period synchronized with the drive period of the robot 10 in the robot drive device 100. In this robot system 1, the computing device 200 can perform calculations synchronously with the control cycle of the robot 10, since the cyclic data is sent in a cycle synchronized with the control cycle of the robot 10. (13) Robot system 1 according to (12), wherein the computing device 200 is configured to issue a clock announcement to the application 211 running on the computing device 200 in response to receiving data from the robot drive device 100. With this robot system 1, the application 211 running on the computing device 200 can, through the clock announcement, obtain the timing synchronized with the control cycle of the robot 10 and perform processing accordingly. Therefore, the workload for a system integrator or service provider who creates the application 211 running on the computing device 200 can be significantly reduced. (14) Robot system 1 according to (12), wherein the computing device 200 is configured to transmit second cyclic data to the robot drive device 100 via cyclic communication, regardless of whether there is information to be transmitted via cyclic communication, and wherein the robot drive device 100 has a watchdog unit 116 configured to confirm the integrity of the communication with the computing device 200 based on the second cyclic data. With this robot system 1, the robot drive device 100 can confirm that the computing device 200 is operational and capable of communication. This confirmation result can also be used as a control condition for faults, alarms, emergency stops, or branching of processing in the robot drive device 100. (15) Robot system 1 according to (14), wherein the computing device 200 is configured to insert an emergency stop signal into the second cyclic data and to transmit the second cyclic data to the robot drive device 100 to cause the robot drive device 100 to perform an emergency stop, and the robot drive device 100 is configured to perform an emergency stop of the robot 10 when the second cyclic data contains the emergency stop signal. In this robot system 1, the computing device 200 can cause the robot drive device 100 to perform an emergency stop by using the second cyclic data periodically transmitted to the robot drive device 100.Even if the second cyclic data, containing the emergency stop signal, is not transmitted due to a communication problem, the robot drive unit 100 can be triggered to perform an emergency stop based on the monitoring result from the watchdog unit 116. Furthermore, if the cyclic communication occurs with a period less than or equal to the control cycle of the robot drive unit 100, the second cyclic data will also be transmitted with a cycle less than or equal to the control cycle of the robot drive unit 100. This reduces the number of control cycles required before the emergency stop signal is transmitted, allowing the robot drive unit 100 to be stopped quickly in an emergency. (16) Robot system 1 according to (14), wherein the watchdog unit 116 is configured to begin an integrity confirmation based on the second cyclic data after the communication control unit 111 has established cyclic communication. A false detection of an integrity loss in a situation where only the establishment of cyclic communication is being awaited can be prevented. (17) Robot system 1, comprising: a first CPU configured to control the robot 10 by running a real-time operating system; a second CPU capable of communicating with the first CPU and configured to run a non-real-time operating system; and a GPU controlled by the second CPU, wherein the second CPU is configured to cause the GPU to perform a matrix operation related to generating a path for the robot 10 while the first CPU controls the robot 10, and wherein the first CPU is configured to cause the robot 10 to move along the path based on computational results from the second CPU and the GPU. By enabling the GPU to use matrix operations to generate a path for the robot 10 while the first CPU controls the robot 10, the functionality of the robot 10 can be easily extended. (18) Robot system 1 according to (17), wherein the matrix operation includes a matrix operation related to image processing to generate the path based on an image of the robot 10's environment. The robot 10 can be controlled while the result of the image processing is reflected in the path. (19) Robot system 1 according to (18), wherein the GPU is configured to perform a matrix collision detection operation between robot 10 and an environment object of robot 10 based on models of robot 10 and the environment object. Robot 10 can be controlled while the collision result between robot 10 and the environment object is reflected in the path. (20) Robot system 1 according to (18), wherein the second CPU is configured to perform network communication with the first CPU. The flexibility of data that can be transferred is increased, and the GPU can be used more flexibly. (21) Control method comprising: driving the robot 10 by the robot drive device 100; executing an application 211 required for controlling the robot 10 by the computing device 200, which is configured to perform network communication with the robot drive device 100; performing cyclic communication for the cyclic exchange of data between the robot drive device 100 and the computing device 200; and performing acyclic communication for the non-cyclic exchange of data between the robot drive device 100 and the computing device 200.
[0081] Although the embodiments are described above, the present disclosure is not limited to the embodiments described above, and various modifications can be made without departing from the core of the invention. List of reference symbols
[0082] 1: Robot system, 10: Robot, 100: Robot drive device, 200: Computing device, 111: Communication control unit, 211: Application, 212: API, 213: Robot service, 114: Processing unit, 115: Timestamp assignment unit, 116: Watchdog unit, 217: Socket, 214: Memory. QUOTES INCLUDED IN THE DESCRIPTION
[0000] This list of documents cited by the applicant was automatically generated and is included solely for the reader's convenience. The list is not part of the German patent or utility model application. The DPMA accepts no liability for any errors or omissions. Cited patent literature
[0000] JP 2019-220135 A
[0003]
Claims
Robot system comprising: a robot drive device configured to drive a robot; and a computing device configured to perform network communication with the robot drive device and to execute an application required for the robot drive device to control the robot, wherein at least while the robot drive device is driving the robot, cyclic communication for the cyclic communication of data and acyclic communication for the non-cyclic communication of data are performed between the robot drive device and the computing device. Robot system according to claim 1, wherein the robot drive device comprises a communication control unit configured to control cyclic and acyclic communication in response to a request from the computing device, and wherein the communication control unit is configured to transmit to the computing device: a response to the request via acyclic communication if the request is a one-time request; and a response to the request via cyclic communication if the request is a cyclic request. Robot system according to claim 2, wherein the computing device comprises: a plurality of APIs that can be called from the application; and a robot service that is configured to select one or both of the one-off request and the cyclic request according to an API called from the application, and to transmit the selected request to the communication control unit. Robot system according to claim 2, wherein the computing device is configured to transmit the cyclic request to the communication control unit via acyclic communication, and wherein the communication control unit is configured to transmit a response to the request to the computing device via cyclic communication in the event of receiving the cyclic request. Robot system according to claim 2, wherein the communication control unit is configured to: perform cyclic and acyclic communication with the computing device using an identical communication resource; and prioritize cyclic communication over acyclic communication. Robot system according to claim 5, wherein the communication control unit comprises: one or more queues for cyclic communication as queues configured to hold data sent sequentially to the computing device; and one or more queues for acyclic communication as queues configured to hold data sent sequentially to the computing device, and wherein the communication control unit is configured to prioritize, at a communication time of the cyclic communication, data held in the one or more queues for cyclic communication over data held in the one or more queues for acyclic communication and to transmit the prioritized data to the computing device. Robot system according to claim 2, wherein the robot drive device further comprises: a processing unit configured to repeat processing to drive the robot at a fixed period; and a timestamp assignment unit configured to assign a timestamp to a processing result, and wherein the communication control unit is configured to transmit the processing result, which is timestamped by the timestamp assignment unit, by means of cyclic communication. Robot system according to claim 1, wherein the computing device further comprises a robot service configured to: n requests from one or more applications sequentially to the robot drive device using m sockets, wherein m is less than n; and receive a response to each of the n requests via the m sockets and return each received response to a corresponding request. Robot system according to claim 8, wherein the robot service is configured to: allocate a memory for a response for each of the n requests; store a received response corresponding to each of the n requests in a corresponding memory; and return the response stored in memory to the application from which the corresponding request originated. Robot system according to claim 8, wherein the robot service is configured to change the number of m sockets based on the occupancy status of the m sockets by the n requests. Robot system according to claim 1, wherein the robot drive device has a communication control unit configured to control the cyclic communication and the acyclic communication with the computing device, wherein the communication control unit is configured to repeatedly transmit initial cyclic data to the computing device via the cyclic communication, regardless of whether there is information to be transmitted via the cyclic communication. Robot system according to claim 11, wherein the communication control unit is configured to transmit the first cyclic data to the computing device by performing the cyclic communication in a period synchronized with a drive period of the robot in the robot drive device. Robot system according to claim 12, wherein the computing device is configured to perform a clock announcement to the application running on the computing device in response to receiving data from the robot drive device. Robot system according to claim 12, wherein the computing device is configured to transmit second cyclic data to the robot drive device via cyclic communication, regardless of whether there is information to be transmitted via cyclic communication, and wherein the robot drive device has a watchdog unit configured to confirm the integrity of the communication with the computing device based on the second cyclic data. Robot system according to claim 14, wherein the computing device is configured to insert an emergency stop signal into the second cyclic data and to transmit the second cyclic data to the robot drive device to cause the robot drive device to perform an emergency stop, and wherein the robot drive device is configured to cause the robot to perform an emergency stop when the second cyclic data contains the emergency stop signal. Robot system according to claim 14, wherein the watchdog unit is configured to perform integrity confirmation based on the second cyclic data after the communication control unit has established cyclic communication. A robot system comprising: a first CPU configured to control a robot by running a real-time operating system; a second CPU capable of communicating with the first CPU and configured to run a non-real-time operating system; and a GPU controlled by the second CPU, wherein the second CPU is configured to cause the GPU to perform a matrix operation related to generating a path for the robot while the first CPU controls the robot, and wherein the first CPU is configured to cause the robot to move along the path based on computational results from the second CPU and the GPU. Robot system according to claim 17, wherein the matrix operation comprises a matrix operation relating to image processing to generate the path based on an image of the robot's environment. Robot system according to claim 18, wherein the GPU is configured to perform a matrix operation for collision detection between the robot and an environment object of the robot based on models of the robot and the environment object. Robot system according to claim 18, wherein the second CPU is configured to perform network communication with the first CPU. Control method comprising: driving a robot by means of a robot drive device; executing an application required for the control of the robot by the robot drive device by means of a computing device configured to perform network communication with the robot drive device; performing cyclic communication for the cyclical exchange of data between the robot drive device and the computing device; and performing acyclic communication for the non-cyclical exchange of data between the robot drive device and the computing device.