Robot system and control method

The robot system addresses the challenge of resource constraints in robot drive devices by implementing periodic and aperiodic communication between the robot drive device and the arithmetic device, thereby expanding robot functions and improving communication efficiency.

JP7688239B1Active Publication Date: 2025-06-03YASKAWA DENKI KK
View PDF 11 Cites 0 Cited by

Patent Information

Application Number
JP2025506200
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2023-09-12
Filing Date
2024-09-12
Publication Date
2025-06-03
Estimated Expiration
2044-09-12

AI Technical Summary

Technical Problem

Existing robot systems face limitations in expanding robot functions due to resource constraints within the robot drive device, necessitating a more efficient communication and control method.

Method used

A robot system comprising a robot drive device and an arithmetic device that performs network communication, enabling periodic and aperiodic data communication between the two devices while the robot is being driven, thereby extending control resources and facilitating the execution of various applications.

Benefits of technology

This solution allows for timely and efficient communication between the robot drive device and the arithmetic device, reducing communication load and enabling the construction of complex robot control applications beyond the resource limitations of the robot drive device.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007688239000001
    Figure 0007688239000001
  • Figure 0007688239000002
    Figure 0007688239000002
  • Figure 0007688239000003
    Figure 0007688239000003
Patent Text Reader

Abstract

The robot system 1 includes a robot drive device 100 that drives a robot 10, and an arithmetic unit 200 that performs network communication with the robot drive device 100 and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive device 100. At least while the robot drive device 100 is driving the robot 10, periodic communication for periodically communicating data and aperiodic communication for aperiodically communicating data are performed between the robot drive device 100 and the arithmetic unit 200.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

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

Background Art

[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 device to be controlled. 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.

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

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

Means for Solving the Problems

[0005] A robot system according to an aspect of the present disclosure includes a robot driving device that drives a robot, and an arithmetic device that performs network communication with the robot driving device and can execute an application necessary for controlling the robot in the robot driving device. At least while the robot driving device is driving the robot, periodic communication for periodically communicating data and aperiodic communication for aperiodically communicating data are performed between the robot driving device and the arithmetic device.

[0006] The control method according to another aspect of the present disclosure includes driving a robot by a robot drive device, executing an application necessary for controlling the robot in the robot drive device by an arithmetic device that performs network communication with the robot drive device, performing periodic communication for periodically communicating data between the robot drive device and the arithmetic device, and performing aperiodic communication for aperiodically communicating data between the robot drive device and the arithmetic device.

Advantages of the Invention

[0007] According to the present disclosure, a system effective for expanding the functions of a robot can be provided.

Brief Description of the Drawings

[0008]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Embodiments for Carrying Out the Invention

[0009] Hereinafter, embodiments will be described in detail with reference to the drawings. In the description, the same reference numerals are assigned to the same elements or elements having the same function, and redundant descriptions are omitted.

[0010] 〔Robot System〕 The robot system 1 shown in FIG. 1 is a system for causing the robot 10 to execute various operations. Examples of operations to be executed by the robot 10 include conveyance of workpieces, machining of workpieces, assembly of workpieces, etc. in an industrial production line. For example, the robot system 1 includes a 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 surface, wall surface, or ceiling surface, etc. of the work area by the robot 10. The base 11 may be installed on a moving body such as an automated guided vehicle. The articulated arm 12 is connected to the base 11. The articulated arm 12 has a plurality of links 15 connected in sequence 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 the workpiece for the above-described operations. Examples of the end effector 13 include a hand for gripping the workpiece, a suction part for sucking the workpiece, a tool for machining the workpiece, a tool for assembling the workpiece (e.g., fastening tool, welding tool, etc.). The articulated arm 12 changes the position and posture of the end effector 13 by changing the angle of each of the plurality of joints 14 by an actuator such as an electric type. The configuration of the robot 10 is an example and can be changed. For example, the robot 10 may be a scalar type robot.

[0011] The control system 20 is a system that controls 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 a plurality of joints 14 of the articulated arm 12 and the end effector 13. For example, the robot drive device 100 acquires feedback information representing the state of the robot 10 (e.g., the respective angles of the plurality of joints 14), and drives the robot 10 so as to reduce the difference between the target state of the robot 10 and the state of the robot 10 based on the feedback information, and repeats a control cycle including the above at a constant drive cycle. Driving the robot 10 includes, for example, supplying drive power to a plurality of actuators that respectively drive 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.

[0012] The computing device 200 performs network communication with the robot drive device 100. The computing device 200 is capable of executing an application necessary for controlling the robot 10 in the robot drive device 100. Network communication is digital communication that identifies the other party by addressing using an IP address, a MAC address, or the like. Network communication is executed by 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.

[0013] The application necessary for controlling the robot 10 is an application that generates information necessary for executing the target control. The application is executed, for example, while the robot drive device 100 is driving the robot 10. While the robot drive device 100 is driving the robot 10 means while so-called servo is on, and includes while the robot 10 is being maintained in a certain posture by supplying drive power to the plurality of actuators.

[0014] For example, the application is a program that executes processes not included in the program executed by the robot drive device 100 (hereinafter referred to as the "robot program"). Examples of the application include the vision application, force sense application, path generation application, etc. shown below. The vision application is an application that performs image processing on an image captured by a camera provided in the robot 10 or a camera installed around the robot 10, etc., and extracts information necessary for controlling the robot. Examples of the information necessary for controlling the robot include the position of the workpiece, the position of the peripheral devices of the robot 10, etc. The information extracted by the image processing is used for generating the motion path of the robot 10, etc. The motion path is information that defines the transition of the position and posture of the end effector 13. The image processing may include matrix operations suitable for execution by a GPU (Graphics Processing Unit). The force sense application is an application that generates an operation to be executed by the robot 10 according to the force detected by the force sensor. The path generation application is an application that generates the motion path of the robot 10 for executing the work based on the work to be executed by the robot 10 and a simulation (for example, interference check) based on the three-dimensional models of the robot 10 and the surrounding objects. Simulations such as interference checks may include matrix operations suitable for execution by a GPU (Graphics Processing Unit).

[0015] In the illustrated example, the control system 20 includes a robot drive device 100, an arithmetic 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 position away from the housing 21. The robot drive device 100 may be unitized by a sub-housing 22 or the like so as to be able to be taken in and out of the housing 21 as a unit. Similarly, the arithmetic device 200 may be unitized by a sub-housing 23 or the like so as to be able to be taken in and out of the housing 21 as a unit. The programming pendant 400 is a device operated by an operator to teach the robot drive device 100 the operations to be executed by the robot 10. The programming pendant 400 may be composed of hardware specialized for operation teaching, or may be composed of 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 device 100, the arithmetic device 200, and the programming pendant 400 by a LAN cable or the like, and transfers network communication data among the robot drive device 100, the arithmetic device 200, and the programming pendant 400. For example, the network switch 300 transfers data based on the MAC address in the network interface layer of the TCP / IP model. In addition to the connection via the network switch 300, the robot drive device 100 and the arithmetic device 200 may be directly connected to each other. For example, the robot drive device 100 and the arithmetic device 200 may be directly connected to each other by a LAN cable different from the LAN cable connecting the robot drive device 100 and the network switch 300 and the LAN cable connecting the arithmetic device 200 and the network switch 300.

[0016] While the robot drive device 100 is driving the robot 10, in order to reflect the execution result of the application by the arithmetic unit 200 in the control of the robot 10, it is necessary to execute the communication between the robot drive device 100 and the arithmetic unit 200 in a timely manner with limited communication resources. Therefore, as shown in FIG. 2, the control system 20 is configured to execute at least periodic communication for periodically communicating data and aperiodic communication for aperiodically communicating data between the robot drive device 100 and the arithmetic unit 200 while the robot drive device 100 is driving the robot 10.

[0017] According to the control system 20, since the resources required for robot control can be extended from the robot drive device 100 to the arithmetic unit 200, various applications required for robot control can be easily constructed beyond the resource constraints of the robot drive device 100. In addition, in the transfer of data, processing results, etc. for executing an application, among periodic communication and aperiodic communication, communication suitable for the nature of the processing or application can be used. For example, according to periodic communication, data (such as position data, etc.) corresponding to the drive cycle of the robot drive device 100 can be reliably transferred. According to aperiodic communication, temporary information can be transferred at the required timing (for example, immediately) without generating a periodic communication load. By combining these communications, while the robot drive device 100 is driving the control system 20, timely communication can be performed while suppressing the communication load. For example, by multiplying a plurality of data sets that require periodicity rather than immediacy by the periodic data sent by periodic communication and sending only the data sets that require immediacy rather than periodicity individually by aperiodic communication, timely communication can be performed while suppressing the communication load. Since the communication load is suppressed, it is possible to reduce the necessity for the constructor to be aware of communication constraints during the construction of the application and provide an easier construction environment.

[0018] As described above, the period during which the robot drive device 100 drives the robot 10 means the period during which the so-called servo is on, and includes the period during which the robot 10 is maintained in a certain posture by supplying drive power to a plurality of actuators. The period during which the robot drive device 100 drives the robot 10 may be the period during which the robot 10 is moving.

[0019] The periodic communication may be periodic communication that necessarily satisfies a periodic communication standard (for example, EtherCAT (registered trademark)), but does not necessarily have to be strict periodic communication that satisfies the periodic communication standard. For example, the periodic communication may be communication that is executed at approximately regular intervals based on the system timer of at least one of the robot drive device 100 and the arithmetic device 200. Further, the periodic communication only needs to be executed in a period in which there is data to be transmitted, and may be omitted in a period in which there is no data to be transmitted.

[0020] Examples of data sets included in the periodic data (hereinafter referred to as "first periodic data") from the robot drive device 100 to the arithmetic unit 200 include data sets representing the current state of the robot 10, such as the current position of the robot 10 (for example, the current angles of a plurality of joints 14), and data sets representing the status of the process being executed by the robot drive device 100 in response to a request from the arithmetic unit 200. Examples of data sets included in the periodic data (hereinafter referred to as "second periodic data") from the arithmetic unit 200 to the robot drive device 100 include the target posture of the robot 10 for each control cycle based on the motion path calculated by the arithmetic unit 200. The target posture of the robot 10 may be the target angles of a plurality of joints 14, or may be the target position and target posture of the end effector 13. Examples of data sets transmitted from the arithmetic unit 200 to the robot drive device 100 by non-periodic communication include data sets requesting the transmission of configuration information of the robot 10, data sets requesting the writing of settings from the arithmetic unit 200 to the robot drive device 100, data sets requesting servo-on from the arithmetic unit 200 to the robot drive device 100, and data sets requesting a one-shot operation from the arithmetic unit 200 to the robot drive device 100. The data set requesting a one-shot operation is, for example, an operation command requesting the robot 10 to move to the target posture.

[0021] The robot drive device 100 may have a communication control unit 111 as a functional component (hereinafter referred to as a "function block"). The communication control unit 111 controls periodic communication and non-periodic communication in response to a request from the arithmetic unit 200. For example, if the request from the arithmetic unit 200 is a single-shot request, the communication control unit 111 transmits a response to the request by non-periodic communication. If the request from the arithmetic unit 200 is a periodic request, the communication control unit 111 transmits a response to the request by periodic communication. The communication control unit 111 automatically assigns a suitable communication according to the nature of the request. Therefore, at least the communication from the robot drive device 100 to the arithmetic unit 200 can be encapsulated, and the application builder can enjoy a high-performance robot construction environment without being aware of the communication.

[0022] A single request is a request that is completed once a response is made to it. A periodic request is a request for which it is necessary to repeatedly respond periodically. For example, when the communication control unit 111 receives a single request, it prepares a response to the received request and immediately transmits the prepared response to the arithmetic unit 200. When the communication control unit 111 receives a periodic request, it includes the response to the request in the first-cycle data and transmits it to the arithmetic unit 200.

[0023] The arithmetic unit 200 has the above-described application 211 and a plurality of APIs 212. The arithmetic unit 200 may have a plurality of applications 211. Further, the arithmetic unit 200 has a robot service 213 as a functional block. Each of the plurality of APIs 212 is an Application Programming Interface that can be called from the application 211.

[0024] The robot service 213 selects at least one of a single request and a periodic request according to the API called from the application 211, and transmits the selected request to the communication control unit 111. Communication from the arithmetic unit 200 to the robot drive unit 100 can also be encapsulated. Since either a single request or a periodic request is selected according to the API, an application can be easily constructed using the API without being aware of the type of communication.

[0025] For example, for each of the plurality of APIs 212, the processing to be executed by the robot service 213 is predetermined. Hereinafter, the processing to be executed by the robot service 213 is referred to as "service processing". When any of the plurality of APIs 212 is called, the robot service 213 selects and executes the service processing corresponding to the called API 212. When the selected service processing includes a single request to the communication control unit 111, the single request is selected by selecting the service processing. When the selected service processing includes a periodic request to the communication control unit 111, the periodic request is selected by selecting the service processing. When the robot service 213 selects a service processing including a single request, it transmits the single request as part of the service processing to the communication control unit 111. When the robot service 213 selects a service processing including a periodic request, it transmits the periodic request as part of the service processing to the communication control unit 111.

[0026] In addition to network communication with the communication control unit 111, the robot service 213 may perform network communication with the application 211. For example, the arithmetic unit 200 may include one or more virtualized containers. A container is a virtual execution environment that bundles libraries, configuration files, etc. necessary for the operation of an application into one package so that the application can be executed independently of other containers or a host system (e.g., an operating system).

[0027] The one or more containers include application containers capable of network communication with the robot service 213, and the application 211 may be stored in the application container. The arithmetic unit 200 includes, as one or more containers, application containers and service containers capable of network communication with each other, the application 211 may be stored in the application container, and the robot service 213 may be stored in the service container.

[0028] As shown in FIG. 3, the arithmetic unit 200 (robot service 213) may transmit a single request to the communication control unit 111 by means of asynchronous communication. The communication control unit 111 transmits a response to the request to the robot service 213 in the asynchronous communication for transmitting a single request.

[0029] The arithmetic unit 200 (robot service 213) may transmit a periodic request to the communication control unit 111 by means of asynchronous communication. When the communication control unit 111 receives a periodic request by means of asynchronous communication, it transmits a response to the request to the arithmetic unit 200 by means of periodic communication. Since requests from the robot service 213 are sent by means of asynchronous communication, the robot service 213 can transmit requests to the robot drive unit 100 without waiting for the period of periodic communication. In addition, if the request is periodic, the requested data can be transmitted by including it in the first periodic data that is repeatedly transmitted by means of periodic communication. Therefore, the calculation cost and the communication cost can be reduced.

[0030] For example, when the communication control unit 111 receives a periodic request by means of asynchronous communication, it issues a response ID for the request and transmits the issued response ID to the robot service 213 in the asynchronous communication. The robot service 213 stores the received response ID in association with the application 211 (the application 211 that has transmitted a periodic request to the robot service 213). Thereafter, the communication control unit 111 attaches the response ID already issued to the response to the request, and repeatedly transmits the response with the attached response ID to the robot service 213 by including it in the first periodic data. Each time the robot service 213 receives the first periodic data from the communication control unit 111, it returns the response corresponding to the response ID to the application 211 associated with the response ID based on the response ID attached to the response. In addition to the response ID, the communication control unit 111 may further attach the data size of the response to the response to the request and transmit it to the robot service 213. In this case, the robot service 213 may extract the response corresponding to the request from the first periodic data based on the response ID and the data size, and return the extracted response to the application 211 associated with the response ID.

[0031] The communication control unit 111 may perform periodic communication and aperiodic communication with the arithmetic unit 200 using the same communication resource, and may prioritize the periodic communication over the aperiodic communication. The reliability of the periodic communication can be maintained, and a robot system 1 that can operate stably can be constructed.

[0032] Examples of the same communication resource include a physically identical communication path (e.g., a communication line), etc. The same communication resource does not necessarily have to be wired, and may be the same communication band in wireless communication.

[0033] For example, the communication control unit 111 prioritizes the periodic communication over the aperiodic communication so that the periodic communication is maintained. For example, at the timing of transmitting the first periodic data, the communication control unit 111 first allocates the communication resource to the periodic data, and allocates the surplus of the communication resource to the data of the aperiodic communication.

[0034] The communication control unit 111 may have one or more queues 112 for periodic communication and one or more queues 113 for aperiodic communication as queues capable of holding data sequentially transmitted to the arithmetic unit 200. At the communication timing of the periodic communication, the communication control unit 111 may preferentially transmit the data held in one or more queues 112 for periodic communication to the data held in at least one or more queues 113 for aperiodic communication to the arithmetic unit 200. Since the queue 112 for periodic communication is prioritized over the queue 113 for aperiodic communication, it is possible to prevent the communication resources required for the periodic communication from being compressed.

[0035] For example, the communication control unit 111 has the queue 112 and the queue 113 in the above-described transport layer, stores responses to periodic requests in the queue 112, and stores responses to single-shot requests in the queue 113. At the communication timing of the periodic communication, the communication control unit 111 includes the data held in one or more queues 112 in the transmission packet to the robot service 213, and includes at least a part of the data held in one or more queues 113 in the surplus transmission packet.

[0036] Note that, in addition to one or more queues 113 with a lower priority than one or more queues 112, the communication control unit 111 may further have one or more queues 113 with a higher priority than one or more queues 112. Hereinafter, one or more queues 113 with a lower priority than one or more queues 112 are referred to as "normal queues 113", and one or more queues 113 with a higher priority than one or more queues 112 are referred to as "high-priority queues 113". When the communication control unit 111 has a normal queue 113 and a high-priority queue 113, the communication control unit 111 may store responses to sporadic requests that are not a problem even if the priority decreases in the normal queue 113, and store responses to sporadic requests with a high priority in the high-priority queue 113. At the communication timing of periodic communication, the communication control unit 111 may preferentially transmit the data held in the high-priority queue 113 to the data held in the queue 112 to the arithmetic unit 200. It is possible to suppress the delay of the response to a sporadic request with a high priority. Each of the queues 112 and 113 is configured by, for example, a FIFO (First In First Out) memory capable of setting a priority.

[0037] The robot drive device 100 may further have a processing unit 114 and a timestamp adding unit 115 as functional blocks. The processing unit 114 repeats the processing for driving the robot 10 (for example, the control cycle described above) at a fixed period (for example, the control cycle described above). The timestamp adding unit 115 adds a timestamp to the processing result by the processing unit 114. Examples of the processing result include the feedback information acquired in the control cycle described above, the information on the driving power output in the control cycle described above, and the like. When an aperiodic request received by the communication control unit 111 requires the processing by the processing unit 114, the processing unit 114 may perform a sporadic process corresponding to the aperiodic request and return the processing result to the communication control unit 111. Examples of the aperiodic request include a read request for setting information in the robot drive device 100, a sporadic confirmation request for feedback information, and the like.

[0038] The communication control unit 111 may transmit the processing result provided with a time stamp by the time stamp providing unit 115 to the arithmetic unit 200 by periodic communication. For example, the communication control unit 111 may include the processing result provided with a time stamp by the time stamp providing unit 115 in the first cycle data described above and transmit it to the arithmetic unit 200.

[0039] By being based on the time stamp, in the arithmetic unit 200, processing can be executed while suppressing the influence of jitter of periodic communication. For example, even if the reception timing of the processing result by the arithmetic unit 200 varies due to periodic communication, the processing result can be used for the arithmetic operation in the application 211 assuming that it is at the timing represented by the time stamp, thereby removing the influence of the variation. The timing at which the time stamp providing unit 115 provides the time stamp may be the timing at which the processing unit 114 acquires the processing result, or may be the timing at which the communication control unit 111 includes the processing result in the first cycle data.

[0040] Regardless of the presence or absence of information to be transmitted by periodic communication, the communication control unit 111 may repeatedly transmit the first cycle data to the arithmetic unit 200 by periodic communication. Since the first cycle data by periodic communication is periodically sent, on the arithmetic unit 200 side, it becomes possible to construct various processes on the premise that the first cycle data comes periodically. For example, the arithmetic unit 200 can also know that the communication with the robot drive unit 100 is maintained because the first cycle data comes periodically. Also, based on the reception timing of the first cycle data, it is possible to execute a process synchronized with the process in the robot drive unit 100.

[0041] The communication control unit 111 may perform periodic communication at a period synchronized with the driving period of the robot 10 in the robot driving device 100 and transmit the first-period data to the arithmetic unit 200. Since the first-period data is sent at a period synchronized with the driving period of the robot 10, the arithmetic unit 200 can perform arithmetic operations synchronized with the driving period of the robot 10. In the robot driving device 100, a plurality of different processes may be repeated at a plurality of different periods respectively. For example, in addition to the driving process of the robot 10 repeated at the driving period, an I / O process for checking external input / output to the robot driving device 100 may be repeated at an I / O period different from the driving period. In this case, the communication control unit 111 may perform periodic communication at a period synchronized with the I / O period and transmit the first-period data to the arithmetic unit 200. When the I / O period is synchronized with the driving period, performing periodic communication at a period synchronized with the I / O period is included in performing periodic communication at a period synchronized with the driving period.

[0042] When the arithmetic unit 200 receives data from the robot drive unit 100, it may perform a clock announcement for the application executed in the arithmetic unit 200. For example, every time the arithmetic unit 200 receives first cycle data from the robot drive unit 100, it may perform a clock announcement for the application executed in the arithmetic unit 200. In the application executed within the arithmetic unit 200, the clock announcement can be used to know the timing synchronized with the drive cycle of the robot, and processing corresponding to that timing can be executed. Therefore, the burden on the system integrator or service vendor when constructing the application executed within the arithmetic unit 200 can be significantly reduced. When the above-described drive cycle and I / O cycle are synchronized with each other and the drive cycle is an integer multiple of the I / O cycle, the communication control unit may include cycle identification information for identifying whether the data transmission is in the drive cycle or in the I / O cycle in the first cycle data and transmit it to the arithmetic unit 200. The arithmetic unit 200 may perform a clock announcement including the notification of the cycle identification information. Based on the notification of the cycle identification information, an application more suitable for the operation of the robot drive unit 100 can be easily constructed.

[0043] Regardless of the presence or absence of information to be transmitted by periodic communication, the arithmetic unit 200 may transmit second cycle data to the robot drive unit 100 by periodic communication. The robot drive unit 100 may further include a watchdog unit 116 as a functional block. The watchdog unit 116 checks the soundness of the communication with the arithmetic unit 200 based on the second cycle data. On the side of the robot drive unit 100, it can be confirmed that the arithmetic unit 200 is communicable and operating. This confirmation result can also be used for control conditions such as errors, alarms, emergency stops, and branch of processing on the side of the robot drive unit 100.

[0044] For example, when the communication control unit 111 cannot receive the second-cycle data at the timing when the watchdog unit 116 should receive the second-cycle data, the watchdog unit 116 determines that the communication with the arithmetic unit 200 is not sound. In this case, the robot drive unit 100 may stop the control of the robot 10 based on the second-cycle data. The robot drive unit 100 may also cause the robot 10 to make an emergency stop and issue an alarm to the operator. The robot drive unit 100 may temporarily stop the robot 10 and resume the operation of the robot 10 in response to the communication with the arithmetic unit 200 returning to soundness.

[0045] The watchdog unit 116 may not perform the soundness check based on the second-cycle data until the communication control unit 111 establishes periodic communication, and may start the soundness check based on the second-cycle data after the communication control unit 111 establishes periodic communication. It is possible to prevent misrecognition of communication unsoundness in a situation where it is only waiting for the establishment of periodic communication.

[0046] Instead of, or in addition to, the watchdog unit 116 in the robot drive unit 100, the arithmetic unit 200 may further include a watchdog unit 216. When the robot service 213 cannot receive the first-cycle data at the timing when the watchdog unit 216 should receive the first-cycle data, the watchdog unit 216 determines that the communication with the robot drive unit 100 is not sound. In this case, the robot service 213 may send a command to the communication control unit 111 to cause the robot 10 to make an emergency stop and issue an alarm to the operator. The robot service 213 may temporarily stop the transmission of the second-cycle data to the robot drive unit 100 and resume the transmission of the second-cycle data to the robot drive unit 100 in response to the communication with the robot drive unit 100 returning to soundness.

[0047] The watchdog unit 216 may not perform the integrity check based on the first cycle data until the robot service 213 establishes periodic communication, and may start the integrity check based on the second cycle data after the robot service 213 establishes periodic communication. In a situation where it is only waiting for the establishment of periodic communication, it is possible to prevent misrecognition of communication unsoundness.

[0048] When the arithmetic unit 200 causes the robot drive unit 100 to make an emergency stop, it may transmit to the robot drive unit 100 including an emergency stop signal in the second cycle data. When the emergency stop signal is included in the second cycle data, the robot drive unit 100 may cause the robot 10 to make an emergency stop.

[0049] By utilizing the second cycle data periodically transmitted to the robot drive unit 100, the arithmetic unit 200 can cause the robot drive unit 100 to make an emergency stop. Even if the second cycle data including the emergency stop signal is not transmitted due to communication problems, the robot drive unit 100 can also be made to make an emergency stop based on the monitoring result by the watchdog unit 116. In addition, when periodic communication is performed within the drive cycle of the robot drive unit 100 or less, the second cycle data is also transmitted within the drive cycle of the robot drive unit 100 or less, so the number of drive cycle cycles executed until the transmission of the emergency stop signal is suppressed, and the robot drive unit 100 can be quickly made to make an emergency stop. Even when there is no margin in the resources for aperiodic communication due to requests such as file acquisition, it is possible to suppress the delay in stopping the robot drive unit 100.

[0050] As shown in FIG. 4, the robot service 213 may sequentially transmit n requests from one or more applications 211 to the robot drive unit via m sockets 217, where m is less than n (one in the figure), receive responses to each of the n requests via the m sockets 217, and return them to the corresponding requests. By using at least any one of the m sockets 217 for two or more requests, communication resources can be saved.

[0051] The socket 217 is, for example, a TCP socket and communicates in a state where a connection is established. The connection by the socket 217 is established based on the IP address and port number in the server. The communication control unit 111 may be the server, or the robot service 213 may be the server. n is an arbitrary number. m is an arbitrary number as long as it is smaller than n.

[0052] Based on the occupancy status of the m sockets 217 due to the n requests, the robot service 213 may change the number of the m sockets 217. It is possible to achieve both conservation of communication resources and smooth communication.

[0053] The occupancy status is, for example, the ratio of the sockets 217 occupied by any of the n requests among the m sockets 217. For example, when the occupancy status is high and timely communication is difficult with the m sockets 217, the robot service 213 may increase the number of sockets 217. On the contrary, when the occupancy status is low and timely communication is possible even with fewer than m sockets 217, the robot service 213 may decrease the number of sockets 217.

[0054] For each of the n requests, the robot service 213 secures a response memory 214, stores the response received corresponding to each of the n requests in the corresponding memory 214, and may return the response stored in the memory 214 to the application that is the source of the corresponding request. Receiving a request from an application, executing communication by the socket 217, and returning a response to the application can be executed separately. Therefore, it is possible to flexibly respond to a plurality of requests from a plurality of applications.

[0055] For example, the robot service 213 may execute communication with the application 211 and communication with the communication control unit 111 at independent timings. Hereinafter, communication with the application 211 is referred to as "first communication", and communication with the communication control unit 111 is referred to as "second communication". For example, the robot service 213 has a queue 218 and stores n requests received from one or more applications by the first communication in the queue 218. The robot service 213 sequentially dequeues the requests stored in the queue 218 and secures a memory 214 corresponding to the dequeued requests. After securing the memory 214, the robot service 213 transmits the requests to the communication control unit 111 by the second communication and stores responses (responses to single requests or response IDs for periodic requests) received from the communication control unit 111 in the memory 214. The robot service 213 reads out the responses from the memory 214 at a timing independent of the second communication. The robot service 213 returns the read-out responses to the application that is the request source corresponding to the memory 214 by the first communication.

[0056] FIG. 5 is a diagram illustrating the hardware configuration of the robot drive device 100 and the arithmetic device 200. As shown in FIG. 5, the robot drive device 100 has a circuit 190, and the arithmetic device 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. The storage 193 executes periodic communication and aperiodic communication with the arithmetic device 200 and stores a program for controlling the robot 10. The program includes, for example, a real-time OS, the above-described robot program, and a program for configuring the above-described functional blocks in the robot drive device 100. The storage 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, a flash memory, and the like. The non-volatile storage media may include a portable storage medium such as an optical disk.

[0057] The memory 192 temporarily stores the program loaded from the storage 193. The memory 192 includes one or more volatile memory media. The volatile memory media includes one or more memory devices. Examples of the one or more memory devices include random access memory. The first CPU 191 configures the above-described functional blocks in the robot drive device 100 by executing the program loaded in the memory 192. The first CPU 191 may temporarily store the calculation result in the 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.

[0058] The communication port 194 performs network communication with the arithmetic device 200 in response to a request from the first CPU 191. The driver circuit 195 supplies drive power to the above-described plurality of actuators in response to a request from the first CPU 191.

[0059] The circuit 290 includes a second CPU 291, a memory 292, a storage 293, a GPU 294, a communication port 295, and 296. The storage 293 stores a program including an application necessary for controlling the robot 10. For example, the storage 293 includes a non-real-time OS and a program for configuring the above-described plurality of APIs 212 and functional blocks in the robot drive device 100.

[0060] Memory 292 temporarily stores the program loaded from storage 293. Memory 292 includes one or more volatile memory media. The volatile memory media includes one or more memory devices. Examples of the one or more memory devices include random access memory. The second CPU 291 executes the program loaded in memory 292, and cooperates with the GPU 294 as necessary to configure the above-described functional blocks in the arithmetic unit 200. The second CPU 291 and the GPU 294 may temporarily store the calculation result in the memory 292. The second CPU 291 includes one or more arithmetic devices. The one or more arithmetic devices may be, for example, one or more Central Processing Units, or may be one or more cores included in one Central Processing Unit. The GPU 294 includes, for example, one or more Graphics Processing Units specialized for parallel processing.

[0061] In response to a request from the second CPU 291, the communication port 295 performs network communication with the communication port 194. Thereby, the second CPU 291 can communicate with the first CPU 191.

[0062] While the first CPU 191 is controlling the robot 10, the second CPU 291 may cause the GPU 294 to execute matrix operations related to the generation of the path of the robot 10 (for example, the above-described motion path). The first CPU 191 may cause the robot 10 to execute an operation along the path based on the calculation results by the second CPU 291 and the GPU 294. By making the matrix operations by the GPU 294 available for the generation of the path of the robot 10 while the first CPU 191 is controlling the robot, the function of the robot 10 can be easily expanded.

[0063] As the above matrix operation, the GPU 294 may perform a matrix operation related to image processing for generating a path based on an image of the surrounding environment of the robot 10. The robot 10 can be controlled while reflecting the image processing result in the path.

[0064] The GPU 294 may perform matrix operations for checking the interference between the robot 10 and surrounding objects based on the above matrix operations and the models of the robot 10 and the surrounding objects. The robot 10 can be controlled while reflecting the interference result between the robot 10 and the surrounding objects in the path.

[0065] 〔Control Procedure〕 As an example of the control method, the control procedure executed by the control system 20 is illustrated. This control procedure includes driving the robot by the robot drive device 100, executing, by the arithmetic unit 200, an application necessary for controlling the robot 10 in the robot drive device 100, performing periodic communication for periodically communicating data between the robot drive device 100 and the arithmetic unit 200, and performing aperiodic communication for aperiodically communicating data between the robot drive device 100 and the arithmetic unit 200.

[0066] Hereinafter, the control procedure is illustrated with reference to the flowchart. The illustrated control procedure includes a communication start procedure between the robot drive device 100 and the arithmetic unit 200, a request handling procedure in the arithmetic unit 200, an aperiodic communication procedure, a request handling procedure in the robot drive device 100, a periodic communication procedure in the robot drive device 100, and a periodic communication procedure in the arithmetic unit 200.

[0067] (Communication Start Procedure) This procedure is a procedure in which the robot drive device 100 and the arithmetic unit 200 establish communication before the robot drive device 100 starts driving the robot 10. As shown in FIG. 6, the robot drive device 100 and the arithmetic unit 200 first execute step S01. In step S01, either the robot drive device 100 or the arithmetic unit 200 requests the other party to establish a connection using the above-described m sockets 217. Next, the robot drive device 100 executes step S02. In step S02, the communication control unit 111 checks whether the connection using the m sockets 217 has been established. If it is determined in step S02 that the connection has not yet been established, the robot drive device 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 it is determined in step S03 that the predetermined time has not elapsed, the robot drive device 100 returns the process to step S02. Thereafter, the robot drive device 100 waits for the communication to be established or for the predetermined time to elapse.

[0068] If it is determined in step S02 that the connection using the m sockets 217 has been established, the robot drive device 100 executes step S04. In step S04, the processing unit 114 starts processing (the above-described control cycle) for controlling the robot 10. Next, the robot drive device 100 executes steps S05 and S06. In step S05, the watchdog unit 116 waits for the timing of periodic communication. In step S06, the watchdog unit 116 checks whether the second cycle data has been received by the communication control unit 111. If it is determined in step S06 that the second cycle data has been received, the robot drive device 100 returns the process to step S05. Thereafter, whether the second cycle data has been received is checked every timing of periodic communication.

[0069] In step S06, if it is determined that the second cycle data has not been received, or in step S03, if it is determined that a predetermined time has elapsed, the robot drive device 100 executes step S07. In step S07, the watchdog unit 116 outputs an alarm and stops the robot 10 immediately. For example, the watchdog unit 116 displays an alarm for the operator on a display device or the like. After step S07, the control procedure of the robot 10 is completed.

[0070] (Request handling procedure in the arithmetic unit) This procedure is a procedure in which the connection by m sockets 217 is started, and while the robot drive device 100 is driving the robot 10, the arithmetic unit 200 handles requests from the application 211. As shown in FIG. 7, the arithmetic unit 200 executes steps S11, S12, S13, and S14. In step S11, the robot service 213 waits for any of the plurality of APIs 212 to be called. In step S12, the robot service 213 selects a process corresponding to the called API 212. In step S13, the robot service 213 secures a memory 214 for response. In step S14, the request to be transmitted to the communication control unit 111 is written into the queue 218. The request written into the queue 218 is transmitted to the communication control unit 111 in the aperiodic communication procedure described later. When a response to the request is received, it is written into the memory 214.

[0071] Next, the arithmetic unit 200 executes steps S15 and S16. In step S15, the robot service 213 waits for a response to be written into the memory 214. In step S16, the robot service 213 reads the response written into the memory 214.

[0072] Next, the arithmetic unit 200 executes step S17. In step S17, the robot service 213 checks whether the response read from the memory 214 is the response ID of the response by periodic communication. In step S17, if it is determined that the read response is the response ID, the arithmetic unit 200 executes step S18. In step S18, the robot service 213 stores the response ID in association with the request being handled.

[0073] In step S17, if it is determined that the read response is not the response ID, the arithmetic unit 200 executes step S19. In step S19, the robot service 213 returns the response to the application 211 that is the requester of the request being handled. After executing steps S18 and S19, the arithmetic unit 200 returns the process to step S11. The arithmetic unit 200 repeats the above process.

[0074] (Aperiodic communication procedure) This procedure is a communication procedure executed by the arithmetic unit 200 in response to the request written in the queue 218 in step S14 described above. As shown in FIG. 8, the arithmetic unit 200 first executes step S21. In step S21, the robot service 213 reads the request from the queue 218.

[0075] Next, the arithmetic unit 200 executes 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 necessary based on the occupancy status of the m sockets 217.

[0076] Next, the arithmetic unit 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 the memory 214. After that, the arithmetic unit 200 returns the process to step S21. The arithmetic unit 200 repeats the above process.

[0077] (Request handling procedure in the robot drive unit) This procedure is a procedure for the robot drive unit 100 to handle the request transmitted by the robot service 213 in step S22 described above. As shown in FIG. 9, the robot drive unit 100 first executes 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 single-shot.

[0078] In step S32, if it is determined that the request is single-shot, the robot drive unit 100 executes steps S33 and S34. In step S33, the processing unit 114 generates a response to the request received by 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.

[0079] In step S32, if it is determined that the request is periodic, the robot drive unit 100 executes steps S35 and S36. In step S35, the communication control unit 111 issues a response ID for the periodic 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 included in the first cycle data. The response added to the target is transmitted by periodic communication included in the first cycle data in the periodic communication procedure described later. After executing steps S34 and S36, the robot drive unit 100 returns the process to step S31. The robot drive unit 100 repeats the above process.

[0080] (Periodic Communication Procedure in Robot Driving Device) This procedure is the periodic communication procedure executed by the robot driving device 100 after the connection by the socket 217 is established. As shown in FIG. 10, the robot driving device 100 executes steps S41, S42, S43, S44, and S45. In step S41, the processing unit 114 executes processes such as the above-described control cycle. In step S42, the timestamp adding unit 115 adds a timestamp to the processing result by the memory 214. In step S43, the communication control unit 111 adds an issued response ID to the processing result that is the target to be included in the first-cycle data among the processing results with timestamps added, and adds the processing result with the response ID added to the first-cycle data. In step S44, the communication control unit 111 waits for the transmission timing of the first-cycle data. The transmission timing of the first-cycle data is, for example, the timing when the above-described control cycle elapses. In step S45, the communication control unit 111 transmits the first-cycle data to the robot service 213. Thereafter, the robot driving device 100 returns the process to step S41. The robot driving device 100 repeats the above processes.

[0081] (Periodic Communication Procedure in Arithmetic Unit) This procedure is the periodic communication procedure executed by the arithmetic unit 200 after the connection by the socket 217 is established. As shown in FIG. 11, the arithmetic unit 200 executes steps S51 and S52. In step S51, the robot service 213 waits to receive the first-cycle data. In step S52, in response to the reception of the first-cycle data, the robot service 213 transmits the second-cycle data to the communication control unit 111. Thereafter, the arithmetic unit 200 returns the process to step S51. The arithmetic unit 200 repeats the above processes.

[0082] 〔Summary〕 (1) A robot system 1 comprising a robot drive device 100 that drives a robot 10, and a computing device 200 that performs network communication with the robot drive device 100 and is capable of executing an application 211 necessary for controlling the robot 10 in the robot drive device 100. At least while the robot drive device 100 is driving the robot 10, periodic communication for periodically communicating data and aperiodic communication for aperiodically communicating data are performed between the robot drive device 100 and the computing device 200. According to this robot system 1, resources necessary for robot 10 control can be extended from the robot drive device 100 to the computing device 200, so that various processes or applications 211 necessary for robot 10 control can be easily constructed beyond the resource constraints of the robot drive device 100. In addition, in the transfer of data, processing results, etc. for executing the process or application 211, communication suitable for the nature of the process or application 211 can be used among periodic communication and aperiodic communication. For example, according to periodic communication, data (such as position data, etc.) corresponding to the drive cycle of the robot drive device 100 can be reliably transferred. According to aperiodic communication, temporary information can be transferred at the necessary timing (for example, immediately) without generating a periodic communication load. By combining these communications, while the robot drive device 100 is driving the robot 10, timely communication can be performed while suppressing the communication load. For example, by multiplying a data set, etc. that is periodically updated or generated by periodic data sent by periodic communication, and individually transmitting only the data set that requires more immediacy than periodicity by aperiodic communication, timely communication can be performed while suppressing the communication load. Since the communication load is suppressed, when constructing an application, the necessity for the constructor to be conscious of communication constraints can be reduced, and an easier construction environment can be provided. Also, when constructing the process or application 211, the necessity for the constructor to be conscious of communication constraints can be reduced, and an easier construction environment can be provided.

[0083] (2) The robot drive device 100 has a communication control unit 111 that controls periodic communication and aperiodic communication in response to requests from the arithmetic unit 200. The communication control unit 111 transmits a response to the request to the arithmetic unit 200 by aperiodic communication if the request is a single-shot request, and transmits a response to the request to the arithmetic unit 200 by periodic communication if the request is a periodic request, for the robot system 1 described in (1). According to this robot system 1, the communication control unit 111 automatically assigns appropriate communication according to the nature of the request. Therefore, at least the communication from the robot drive device 100 to the arithmetic unit 200 can be encapsulated, and the application 211 builder can enjoy a high-performance robot 10 construction environment without being aware of the communication.

[0084] (3) The arithmetic unit 200 has a plurality of APIs 212 that can be called from the application 211, and a robot service 213 that selects at least one of a single-shot request and a periodic request according to the API 212 called from the application 211 and transmits the selected request to the communication control unit 111, for the robot system 1 described in (2). The communication from the arithmetic unit 200 to the robot drive device 100 can also be encapsulated. Since either a single-shot request or a periodic request is selected according to the API 212, the application 211 can be easily constructed using the API 212 without being aware of the type of communication.

[0085] (4) The arithmetic unit 200 transmits a periodic request to the communication control unit 111 by aperiodic communication, and when the communication control unit 111 receives a periodic request, it transmits a response to the request to the arithmetic unit 200 by periodic communication, for the robot system 1 described in (2) or (3). According to this robot system 1, since requests from the arithmetic unit 200 are sent through aperiodic communication, requests can be sent to the robot drive unit 100 without waiting for the period of periodic communication. In addition, if a request is periodic, a response to the request can be sent included in periodic data repeatedly sent through periodic communication. Therefore, calculation costs and communication costs can be reduced.

[0086] (5) The communication control unit 111 performs periodic communication and aperiodic communication with the arithmetic unit 200 using the same communication resource, and prioritizes periodic communication over aperiodic communication. The robot system 1 according to any one of (2) to (4). According to this robot system 1, the certainty of periodic communication can be maintained, and a robot system 1 that can operate stably can be constructed.

[0087] (6) The communication control unit 111 has one or more queues for periodic communication and one or more queues for aperiodic communication as queues capable of holding data sequentially transmitted to the arithmetic unit 200. At the communication timing of periodic communication, data held in one or more queues for periodic communication is prioritized over data held in at least one or more queues for aperiodic communication and transmitted to the arithmetic unit 200. The robot system 1 according to (5). According to this robot system 1, since the queue for periodic communication is prioritized over the queue for aperiodic communication, it is possible to prevent the communication resources required for periodic communication from being compressed.

[0088] (7) The robot drive unit 100 further includes a processing unit 114 that repeatedly performs processing for driving the robot 10 at a fixed period, and a time stamp adding unit 115 that adds a time stamp to the processing result. The communication control unit 111 transmits the processing result to which a time stamp is added by the time stamp adding unit 115 through periodic communication. The robot system 1 according to any one of (2) to (6). By being based on the time stamp, in the arithmetic unit 200, processing can be executed while suppressing the influence of jitter and latency of periodic communication and the like.

[0089] (8) The arithmetic unit 200 further has a robot service 213 that sequentially transmits n requests from one or more applications 211 to the robot drive device 100 via m sockets 217, where m is less than n, receives responses to each of the n requests via the m sockets 217, and returns the responses to the corresponding requests. The robot system 1 according to any one of (1) to (7). According to this robot system 1, communication resources can be saved.

[0090] (9) The robot service 213 secures a response memory 214 for each of the n requests, stores the responses received corresponding to each of the n requests in the corresponding memory 214, and returns the responses stored in the memory 214 to the application 211 that is the source of the corresponding request. The robot system 1 according to (8). Receiving a request from the application 211, executing communication via the socket 217, and returning a response to the application 211 can be separated and executed. Therefore, it is possible to flexibly respond to a plurality of requests from a plurality of applications 211.

[0091] (10) The robot service 213 changes the number of the m sockets 217 based on the occupancy status of the m sockets 217 due to the n requests. The robot system 1 according to (8). It is possible to achieve both conservation of communication resources and immediacy of communication.

[0092] (11) The robot drive device 100 has a communication control unit 111 that controls periodic communication and aperiodic communication with the arithmetic unit 200. The communication control unit 111 repeatedly transmits first cycle data to the arithmetic unit 200 by periodic communication regardless of the presence or absence of information to be transmitted by periodic communication. The robot system 1 according to (1). According to this robot system 1, since periodic data is periodically sent to the arithmetic unit 200 by periodic communication, on the arithmetic unit 200 side, it becomes possible to construct various processes on the premise that data periodically arrives by periodic communication. For example, the arithmetic unit 200 can also know that the communication with the robot drive unit 100 is maintained because periodic data periodically arrives by periodic communication. Also, based on the reception timing of the periodic data, it is possible to execute a process synchronized with the process in the robot drive unit 100.

[0093] (12) The communication control unit 111 performs periodic communication at a period synchronized with the drive period of the robot 10 in the robot drive unit 100 and transmits first periodic data to the arithmetic unit 200, for the robot system 1 described in (11). According to this robot system 1, since the periodic data is sent at a period synchronized with the control period of the robot 10, the arithmetic unit 200 can perform operations synchronized with the control period of the robot 10.

[0094] (13) When the arithmetic unit 200 receives data from the robot drive unit 100, the arithmetic unit 200 performs a clock announcement for the application 211 executed in the arithmetic unit 200, for the robot system 1 described in (12). According to this robot system 1, in the application 211 executed in the arithmetic unit 200, it is possible to know the timing synchronized with the control period of the robot 10 by the clock announcement, and it is possible to execute a process according to the timing. Therefore, the burden at the time of constructing a system integrator or service vendor that constructs the application 211 executed in the arithmetic unit 200 can be significantly reduced.

[0095] (14) The arithmetic unit 200 transmits second cycle data to the robot drive unit 100 by periodic communication regardless of the presence or absence of information to be transmitted by periodic communication. The robot drive unit 100 has a watchdog unit 116 that checks the soundness of communication with the arithmetic unit 200 based on the second cycle data, in the robot system 1 described in (12). According to this robot system 1, on the side of the robot drive unit 100, it is possible to confirm that the arithmetic unit 200 is operating communicably. This confirmation result can also be used for control conditions such as errors, alarms, emergency stops, and branch of processing on the side of the robot drive unit 100.

[0096] (15) When the arithmetic unit 200 stops the robot drive unit 100 emergently, it includes an emergency stop signal in the second cycle data and transmits it to the robot drive unit 100. When the emergency stop signal is included in the second cycle data, the robot drive unit 100 stops the robot 10 emergently, in the robot system 1 described in (14). According to this robot system 1, by utilizing the second cycle data transmitted to the robot drive unit 100 periodically, the arithmetic unit 200 can stop the robot drive unit 100 emergently. Even if the second cycle data including the emergency stop signal is not transmitted due to communication problems, the robot drive unit 100 can also be stopped emergently based on the monitoring result by the watchdog unit 116. In addition, when the periodic communication is performed within the control cycle of the robot drive unit 100 or less, since the second cycle data is also transmitted within the control cycle of the robot drive unit 100 or less, the number of control cycle cycles executed until the transmission of the emergency stop signal can be suppressed, and the robot drive unit 100 can be stopped emergently quickly.

[0097] (16) The watchdog unit 116 starts checking the soundness based on the second cycle data after the communication control unit 111 establishes the periodic communication, in the robot system 1 described in (14). It is possible to prevent misrecognizing the unsoundness of communication in a situation where it is only waiting for the establishment of periodic communication.

[0098] (17) A robot system 1 comprising a first CPU that executes a real-time OS to control a robot 10, a second CPU that can communicate with the first CPU and executes a non-real-time OS, and a GPU controlled by the second CPU. While the first CPU is controlling the robot 10, the second CPU causes the GPU to execute matrix operations related to the generation of the path of the robot 10. The first CPU causes the robot 10 to execute an operation along the path based on the operation results of the second CPU and the GPU. By making matrix operations by the GPU available for generating the path of the robot 10 while the first CPU is controlling the robot 10, the functions of the robot 10 can be easily extended.

[0099] (18) The matrix operation includes a matrix operation related to image processing for generating a path based on an image of the surrounding environment of the robot 10, and the robot system 1 according to (17). The robot 10 can be controlled while reflecting the image processing result in the path.

[0100] (19) As the matrix operation, the GPU performs a matrix operation for checking interference between the robot 10 and surrounding objects based on the models of the robot 10 and the surrounding objects of the robot 10, and the robot system 1 according to (18). The robot 10 can be controlled while reflecting the interference result between the robot 10 and surrounding objects in the path.

[0101] (20) The second CPU performs network communication with the first CPU, and the robot system 1 according to (18). The degree of freedom of communicable data can be increased, and the GPU can be utilized more flexibly.

[0102] (21) Driving the robot 10 by the robot drive device 100, executing an application 211 necessary for controlling the robot 10 in the robot drive device 100 by an arithmetic unit 200 that performs network communication with the robot drive device 100, performing periodic communication for periodically communicating data between the robot drive device 100 and the arithmetic unit 200, and performing aperiodic communication for aperiodically communicating data between the robot drive device 100 and the arithmetic unit 200. A control method including these steps.

[0103] Although the embodiments have been described above, the present disclosure is not necessarily limited to the above-described embodiments, and various modifications are possible without departing from the gist thereof.

Explanation of Reference Numerals

[0104] 1... robot system, 10... robot, 100... robot drive device, 200... arithmetic unit, 111... communication control unit, 211... application, 212... API, 213... robot service, 114... processing unit, 115... timestamp adding unit, 116... watchdog unit, 217... socket, 214... memory.

Claims

1. a robot drive device that drives the robot; a computing device that communicates with the robot driving device through a network and is capable of executing an application required for controlling the robot in the robot driving device; Equipped with At least, between the robot driving device and the arithmetic device while the robot driving device is driving the robot, Periodic communication for periodically communicating data; aperiodic communication for aperiodically communicating data; was carried out, The computing device includes: A plurality of APIs callable from the application; A robot service that selects at least one of a one-off request and a periodic request in response to an API called from the application and transmits the selected request; having The robot driving device is a communication control unit that receives a request transmitted by the robot service, and if the received request is a one-off request, transmits a response to the received request by the non-periodic communication, and if the received request is a periodic request, transmits a response to the received request by the periodic communication. A robot system having the above configuration.

2. The computing device includes: transmitting the periodic request to the communication control unit via the non-periodic communication; The communication control unit When the periodic request is received, a response to the request is transmitted to the computing device through the periodic communication. The robot system according to claim 1 .

3. The communication control unit performing the periodic communication and the aperiodic communication with respect to the computing device using the same communication resource; prioritizing the periodic communications over the aperiodic communications; The robot system according to claim 1 .

4. The communication control unit The queues capable of holding data to be sequentially transmitted to the arithmetic device include one or more queues for periodic communication and one or more queues for non-periodic communication, At a communication timing of the periodic communication, data held in the one or more queues for periodic communication is transmitted to the arithmetic device with priority over data held in at least the one or more queues for non-periodic communication. The robot system according to claim 3.

5. The robot driving device is A processing unit that periodically repeats a process for driving the robot; a time stamp adding unit that adds a time stamp to the processing result; Further comprising: The communication control unit transmitting the processing result to which the time stamp has been assigned by the time stamp assignment unit through the periodic communication; The robot system according to claim 1 .

6. The computing device includes: sending n requests from one or more applications sequentially to the robot drive over m sockets, where m is a smaller number than n; receiving a response to each of the n requests on said m sockets and returning it to a corresponding request; Further comprising a robot service; The robot system according to claim 1 .

7. The robot service includes: For each of the n requests, reserve memory for the response, storing a response received in response to each of the n requests in a corresponding memory; returning the response stored in said memory to the application that originated the corresponding request; The robot system according to claim 6.

8. The robot service includes: changing the number of the m sockets based on the occupancy status of the m sockets by the n requests; The robot system according to claim 6.

9. The robot driving device is A communication control unit that controls the periodic communication and the non-periodic communication between the computing device and the communication control unit. having The communication control unit repeatedly transmitting first periodic data to the arithmetic device through the periodic communication, regardless of the presence or absence of information to be transmitted through the periodic communication; The robot system according to claim 1 .

10. The communication control unit performing the periodic communication and transmitting the first periodic data to the computing device in a cycle synchronized with a drive cycle of the robot in the robot drive device; The robot system according to claim 9.

11. The computing device includes: Upon receiving data from the robot driving device, perform a clock announcement to an application executed on the computing device. The robot system of claim 10.

12. The computing device includes: transmitting second periodic data to the robot driving device through the periodic communication, regardless of the presence or absence of information to be transmitted through the periodic communication; The robot driving device is A watchdog unit that checks the soundness of communication with the computing device based on the second periodic data. having The robot system of claim 10.

13. The computing device includes: When the robot driving device is to be stopped in an emergency, an emergency stop signal is included in the second periodic data and transmitted to the robot driving device; The robot driving device is When the second periodic data includes the emergency stop signal, the robot is brought to an emergency stop. The robot system of claim 12.

14. The watchdog unit is After the communication control unit establishes the periodic communication, the communication control unit starts checking the health of the device based on the second periodic data. The robot system of claim 12.

15. a robot drive device that drives the robot; a computing device that communicates with the robot driving device through a network and is capable of executing an application required for controlling the robot in the robot driving device; Equipped with At least, between the robot driving device and the arithmetic device while the robot driving device is driving the robot, Periodic communication for periodically communicating data; aperiodic communication for aperiodically communicating data; was carried out, The robot driving device is A communication control unit that controls the periodic communication and the non-periodic communication between the computing device and the communication control unit. having The communication control unit repeatedly transmitting first periodic data to the arithmetic device through the periodic communication, regardless of the presence or absence of information to be transmitted through the periodic communication; performing the periodic communication and transmitting the first periodic data to the computing device at a period synchronized with a drive period of the robot in the robot drive device; The computing device includes: Upon receiving data from the robot driving device, the robot system performs a clock announcement to an application executed on the computing device.

16. Driving the robot with a robot driving device; Executing an application required for controlling the robot in the robot driving device by a computing device that communicates with the robot driving device through a network; performing periodic communication between the robot driving device and the computing device for periodically communicating data; performing non-periodical communication between the robot driving device and the arithmetic device for non-periodically communicating data; Including, When any one of a plurality of APIs possessed by the arithmetic device is called by the application, the arithmetic device selects at least one of a one-off request and a periodic request according to the API called by the application, and transmits the selected request from the arithmetic device to the robot driving device; If the request received by the robot driving device is the one-off request, a response to the request is transmitted from the robot driving device to the computing device through the non-periodic communication; If the request received by the robot driving device is the periodic request, a response to the request is transmitted from the robot driving device to the computing device by the periodic communication.

17. Driving the robot with a robot driving device; Executing an application required for controlling the robot in the robot driving device by a computing device that communicates with the robot driving device through a network; performing periodic communication between the robot driving device and the computing device for periodically communicating data; performing non-periodical communication between the robot driving device and the arithmetic device for non-periodically communicating data; Including, repeatedly transmitting first periodic data from the robot driving device to the arithmetic device through the periodic communication in a cycle synchronized with a drive cycle of the robot in the robot driving device, regardless of the presence or absence of information to be transmitted through the periodic communication; The control method further comprises: when the computing device receives data from the robot driving device, the computing device performs a clock announcement for an application executed by the computing device.

Citation Information

Patent Citations

  • Applications of switchable data networks for real-time and non-real-time communications

    JP2004523972A

  • Control node and control unit

    JP2010537296A

  • Motor control device, control method, information processing program, and recording medium

    JP2017163758A

  • Robot control device, robot, and robot system

    JP2018015858A

  • Controller and control method

    JP2018147258A