Robot system and control method
The robot system addresses the challenge of expanding robot functionality by employing cyclic and asynchronous communication between the robot drive device and the computing device, effectively extending resource constraints and simplifying application development.
Patent Information
- Application Number
- PCT/JP2024/032708
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-12
- Filing Date
- 2024-09-12
- Publication Date
- 2025-03-20
AI Technical Summary
Existing robot control systems face challenges in efficiently expanding robot functionality due to limited resource constraints and inadequate communication methods between the robot drive device and the computing device.
A robot system that includes a robot driving device and a computing device capable of network communication, utilizing both cyclic and asynchronous communication methods to enable timely and efficient data exchange while reducing communication load.
This approach extends the resources required for robot control beyond the robot drive device to the computing device, allowing for the easy construction of various applications and reducing the need for builders to consider communication restrictions, thereby enhancing the robot's functionality and ease of development.
Smart Images

Figure JP2024032708_20032025_PF_FP_ABST
Abstract
Description
Robot system and control method
[0001] The present disclosure relates to a robot system and a control method.
[0002] Patent Document 1 discloses a motion control device that has a non-real-time OS and a real-time OS installed and that controls the motion of a device to be controlled. The motion control device has a shared memory that can be accessed and written to by both the functional units on the non-real-time OS side and the functional units on the real-time OS side.
[0003] Japanese Patent Application Laid-Open No. 2019-220135
[0004] The present disclosure provides a system that is effective for expanding the functionality of a robot.
[0005] A robot system according to one aspect of the present disclosure includes a robot driving device that drives a robot, and a computing device that communicates with the robot driving device over a network and is capable of executing applications required for controlling the robot in the robot driving device, and at least while the robot driving device is driving the robot, periodic communication for periodically communicating data and aperiodic communication for aperiodic communicating data are performed between the robot driving device and the computing device.
[0006] A control method according to another aspect of the present disclosure includes driving a robot by 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 over a network, performing periodic communication to periodically communicate data between the robot driving device and the computing device, and performing aperiodic communication to aperiodically communicate data between the robot driving device and the computing device.
[0007] According to the present disclosure, a system that is effective for expanding the functionality of a robot can be provided.
[0008] FIG. 1 is a diagram schematically illustrating the configuration of a robot system. FIG. 2 is a block diagram illustrating an example of the functional configuration of a calculation device and a robot drive device. FIG. 3 is a block diagram illustrating a modified example of the calculation device and the robot drive device. FIG. 4 is a block diagram illustrating a modified example of the calculation device and the robot drive device. FIG. 5 is a block diagram illustrating an example of the hardware configuration of the calculation device and the robot drive device. FIG. 6 is a flowchart illustrating an example of a communication start procedure. FIG. 7 is a flowchart illustrating an example of a request handling procedure in the calculation device. FIG. 8 is a flowchart illustrating an example of a non-periodic communication procedure. FIG. 9 is a flowchart illustrating an example of a request handling procedure in the robot drive device. FIG. 10 is a flowchart illustrating an example of a periodic communication procedure in the robot drive device. FIG. 11 is a flowchart illustrating an example of a periodic communication procedure in the calculation device.
[0009] Hereinafter, the embodiments will be described in detail with reference to the drawings. In the description, the same elements or elements having the same functions are denoted by the same reference numerals, and redundant description will be omitted.
[0010] [Robot System] The robot system 1 shown in FIG. 1 is a system that causes a robot 10 to perform various tasks. Examples of tasks that the robot 10 can perform include transporting workpieces in an industrial production line, machining workpieces, and assembling workpieces. 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 includes a base 11, an articulated arm 12, and an end effector 13. The base 11 is installed on the floor, wall, or ceiling of a work area where the robot 10 works. The base 11 may also be installed on a mobile body such as an automated guided vehicle. The articulated arm 12 is connected to the base 11. The articulated arm 12 has multiple links 15 connected in sequence from the base 11 at multiple joints 14. The end effector 13 is connected to the tip of the articulated arm 12 and acts on the workpiece for the above-mentioned tasks. Examples of the end effector 13 include a hand that grips a workpiece, a suction portion that sucks the workpiece, a tool that processes the workpiece, and a tool that assembles the workpiece (e.g., a fastening tool, a welding tool, etc.). The articulated arm 12 changes the position and posture of the end effector 13 by changing the angles of each of the multiple joints 14 using an actuator, such as an electric actuator. The configuration of the robot 10 is an example and can be changed. For example, the robot 10 may be a SCARA type robot.
[0011] The control system 20 is a system that controls the robot 10. For example, the control system 20 includes a robot driving device 100 and a computing device 200. The robot driving device 100 drives the robot 10. For example, the robot driving device 100 drives the multiple joints 14 of the articulated arm 12 and the end effector 13. For example, the robot driving device 100 repeats a control cycle at a constant driving period, the control cycle including acquiring feedback information representing the state of the robot 10 (e.g., the angles of each of the multiple joints 14) and driving the robot 10 so as to reduce the difference between a target state of the robot 10 and the state of the robot 10 based on the feedback information. Driving the robot 10 includes, for example, supplying driving power to multiple actuators that respectively drive the multiple joints 14. Driving the robot 10 includes maintaining a constant posture of the robot 10 by supplying driving power to the multiple actuators.
[0012] The arithmetic device 200 communicates with the robot driving device 100 via a network. The arithmetic device 200 can execute applications required for controlling the robot 10 in the robot driving device 100. Network communication is digital communication in which the other party is identified by addressing using an IP address, a MAC address, or the like. Network communication is performed using a layered protocol such as the TCP / IP model or the OSI model. For example, the TCP / IP model has a network interface layer, an internet layer, a transport layer, and an application layer.
[0013] An application required for controlling the robot 10 is an application that generates information required to execute the desired control. The application is executed, for example, while the robot driving device 100 is driving the robot 10. The period during which the robot driving device 100 is driving the robot 10 refers to the period during which the servo is on, and includes the period during which the robot 10 is maintained in a certain posture by supplying driving power to multiple actuators.
[0014] For example, an application is a program that executes processing not included in the program executed by the robot driving device 100 (hereinafter referred to as the "robot program"). Examples of applications include a vision application, a haptic application, and a path generation application, which are shown below. The vision application is an application that performs image processing on images captured by a camera installed on the robot 10 or a camera installed in the vicinity of the robot 10 to extract information necessary for controlling the robot. Examples of information necessary for controlling the robot include the position of a workpiece and the positions of peripheral devices of the robot 10. The information extracted by image processing is used to generate a motion path for the robot 10. The motion path is information that determines 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 haptic application is an application that generates an action to be performed by the robot 10 in accordance with the 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 performing a simulation (e.g., interference check) based on a task to be performed by the robot 10 and a three-dimensional model of the robot 10 and surrounding objects. The simulation such as interference check may include matrix operations suitable for execution by a GPU (Graphics Processing Unit).
[0015] In the illustrated example, the control system 20 includes a robot driving device 100, a computing device 200, and a network switch 300 housed in a housing 21 of the robot system 1, and a programming pendant 400 that can be used at a location remote from the housing 21. The robot driving device 100 may be unitized using a sub-housing 22 or the like so that it can be inserted and removed together with the housing 21. Similarly, the computing device 200 may be unitized using a sub-housing 23 or the like so that it can be inserted and removed together with the housing 21. The programming pendant 400 is a device operated by an operator to teach the robot driving device 100 the operations to be performed by the robot 10. The programming pendant 400 may be configured using hardware specialized for operation teaching, or may be configured using a general-purpose computer such as a tablet computer and a teaching application. The network switch 300 is connected to the robot driving device 100, the computing device 200, and the programming pendant 400 via LAN cables or the like, and transfers network communication data between the robot driving device 100, the computing device 200, and the programming pendant 400. For example, the network switch 300 transfers data based on MAC addresses at the network interface layer of the TCP / IP model. In addition to being connected via the network switch 300, the robot driving device 100 and the computing device 200 may also be directly connected to each other. For example, the robot driving device 100 and the computing device 200 may also be directly connected to each other by a LAN cable that is separate from the LAN cable that connects the robot driving device 100 and the network switch 300 and the LAN cable that connects the computing device 200 and the network switch 300.
[0016] In order to reflect the results of application execution by the arithmetic device 200 in the control of the robot 10 while the robot driving device 100 is driving the robot 10, it is necessary to execute communication between the robot driving device 100 and the arithmetic device 200 in a timely manner using limited communication resources. Therefore, as shown in Fig. 2, the control system 20 is configured to execute periodic communication for periodically communicating data and aperiodic communication for aperiodic communication for aperiodic communicating data between the robot driving device 100 and the arithmetic device 200 at least while the robot driving device 100 is driving the robot 10.
[0017] According to the control system 20, resources required for robot control can be expanded from the robot driving device 100 to the computing device 200. This allows various applications required for robot control to be easily implemented beyond the resource constraints of the robot driving device 100. Additionally, when exchanging data and processing results for executing applications, either periodic communication or aperiodic communication can be used, depending on the nature of the processing or application. For example, periodic communication allows reliable exchange of data (e.g., position data) corresponding to the drive cycle of the robot driving device 100. Aperiodic communication allows temporary information to be exchanged when needed (e.g., immediately) without incurring periodic communication loads. By combining these communication methods, timely communication can be achieved while minimizing communication loads while the robot driving device 100 is driving the control system 20. For example, multiple data sets requiring periodicity over immediacy can be piggybacked on periodic data sent via periodic communication, and only data sets requiring immediacy over periodicity can be individually transmitted via aperiodic communication, thereby minimizing communication loads and achieving timely communication. Since the communication load is reduced, the developer does not need to be aware of communication constraints when building an application, providing an easier building environment.
[0018] As described above, the period during which the robot driving device 100 is driving the robot 10 refers to the period during which the servo is on, and includes the period during which the robot 10 is maintained in a certain posture by supplying driving power to a plurality of actuators. The period during which the robot driving device 100 is driving the robot 10 may also refer to the period during which the robot 10 is moving.
[0019] The periodic communication may be a fixed-period communication that satisfies a fixed-period communication standard (e.g., EtherCAT (registered trademark)), but it does not necessarily have to be a strict fixed-period communication that satisfies the fixed-period communication standard. For example, the periodic communication may be communication that is executed at a roughly fixed interval based on a system timer of at least one of the robot driving device 100 and the computing device 200. Furthermore, the periodic communication only needs to be executed in a certain period when there is data to be transmitted, and may be omitted in periods when there is no data to be transmitted.
[0020] Examples of data sets included in the periodic data sent from the robot driving device 100 to the computing device 200 (hereinafter referred to as "first periodic data") include a data set representing the current state of the robot 10, such as the current position of the robot 10 (e.g., the current angles of the multiple joints 14), and a data set representing the status of a process being executed by the robot driving device 100 in response to a request from the computing device 200. An example of a data set included in the periodic data sent from the computing device 200 to the robot driving device 100 (hereinafter referred to as "second periodic data") includes a target posture of the robot 10 for each control period based on a motion path calculated by the computing device 200. The target posture of the robot 10 may be a target angle of the multiple joints 14, or a target position and posture of the end effector 13. Examples of data sets transmitted from the computing device 200 to the robot driving device 100 by non-periodic communication include a data set requesting the transmission of configuration information etc. of the robot 10, a data set requesting the robot driving device 100 to write settings from the computing device 200, a data set requesting the robot driving device 100 to turn servo on, and a data set requesting the robot driving device 100 to perform a one-shot operation from the computing device 200. A data set requesting a one-shot operation is, for example, an operation command requesting that the robot 10 be moved to a target posture.
[0021] The robot driving device 100 may have a communication control unit 111 as a functional component (hereinafter referred to as a "functional block"). The communication control unit 111 controls periodic communication and aperiodic communication in response to a request from the arithmetic device 200. For example, if the request from the arithmetic device 200 is a one-off request, the communication control unit 111 transmits a response to the request via aperiodic communication. If the request from the arithmetic device 200 is periodic, the communication control unit 111 transmits a response to the request via periodic communication. The communication control unit 111 automatically assigns appropriate communication depending on the nature of the request. Therefore, at least communication from the robot driving device 100 to the arithmetic device 200 can be encapsulated, allowing an application developer to enjoy a highly functional robot building environment without having to be aware of communication.
[0022] A one-off request is a request that is completed with a single response. A periodic request is a request that requires repeated periodic responses. For example, when the communication control unit 111 receives a one-off request, it prepares a response to the received request and immediately transmits the prepared response to the arithmetic device 200. When the communication control unit 111 receives a periodic request, it includes the response to the request in first periodic data and transmits it to the arithmetic device 200.
[0023] The computing device 200 has the above-described application 211 and a plurality of APIs 212. The computing device 200 may have a plurality of applications 211. Furthermore, the computing device 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 one-off request and a periodic request in accordance with the API 212 called from the application 211, and transmits the selected request to the communication control unit 111. Communication from the arithmetic device 200 to the robot driving device 100 can also be encapsulated. Because either a one-off request or a periodic request is selected in accordance with the API, applications can be easily constructed using the API without being aware of the type of communication.
[0025] For example, a process to be executed by the robot service 213 is predetermined for each of the multiple APIs 212. Hereinafter, the process to be executed by the robot service 213 is referred to as a "service process." When one of the multiple APIs 212 is called, the robot service 213 selects and executes a service process corresponding to the called API 212. If the selected service process includes a one-off request to the communication control unit 111, the one-off request is selected by selecting the service process. If the selected service process includes a periodic request to the communication control unit 111, the periodic request is selected by selecting the service process. When the robot service 213 selects a service process including a one-off request, it transmits the one-off request to the communication control unit 111 as part of the service process. When the robot service 213 selects a service process including a periodic request, it transmits the periodic request to the communication control unit 111 as part of the service process.
[0026] The robot service 213 may perform network communication with the application 211 in addition to network communication with the communication control unit 111. For example, the computing device 200 may include one or more virtualized containers. A container is a virtual execution environment that collects libraries, configuration files, etc. necessary for application operation into a single package and enables the application to be executed independently from other containers or a host system (e.g., an operating system), etc.
[0027] The one or more containers may include an application container capable of network communication with the robot service 213, and the application 211 may be stored in the application container. The computing device 200 may include, as the one or more containers, an application container and a service container capable of network communication with each other, and the application 211 may be stored in the application container, and the robot service 213 may be stored in the service container.
[0028] 3, the computing device 200 (robot service 213) may transmit a one-off request to the communication control unit 111 through aperiodic communication. The communication control unit 111 transmits a response to the request to the robot service 213 in the aperiodic communication in which the one-off request is transmitted.
[0029] The arithmetic device 200 (robot service 213) may send periodic requests to the communication control unit 111 via aperiodic communication. When the communication control unit 111 receives a periodic request via aperiodic communication, it sends a response to the request to the arithmetic device 200 via periodic communication. Because requests from the robot service 213 are sent via aperiodic communication, the request can be sent to the robot driving device 100 without waiting for the period of periodic communication. In addition, if the request is periodic, the requested data can be sent by being included in first periodic data that is repeatedly sent via periodic communication. This reduces calculation costs and communication costs.
[0030] For example, when the communication control unit 111 receives a periodic request through aperiodic communication, it issues a response ID for the request and transmits the issued response ID to the robot service 213 in the aperiodic communication. The robot service 213 stores the received response ID in association with the application 211 (the application 211 that caused the robot service 213 to transmit the periodic request). The communication control unit 111 then assigns the issued response ID to a response to the request, includes the response with the response ID in first periodic data, and repeatedly transmits the response to the robot service 213. Each time the robot service 213 receives first periodic data from the communication control unit 111, the robot service 213 returns a response to the application 211 in association with the response ID based on the response ID assigned to the response. The communication control unit 111 may further assign the data size of the response to the request in addition to the response ID and transmit the response to the robot service 213. In this case, the robot service 213 may extract a 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 computing device 200 using the same communication resources, and may prioritize periodic communication over aperiodic communication. This allows the reliability of periodic communication to be maintained, and allows the robot system 1 to be constructed so as to be capable of stable operation.
[0032] An example of the same communication resource is the same physical communication path (for example, a communication line), etc. The same communication resource does not necessarily have to be a wired resource, and may be the same communication band in wireless communication.
[0033] For example, the communication control unit 111 prioritizes periodic communication over aperiodic communication so that periodic communication is maintained. For example, at the timing of transmitting the first periodic data, the communication control unit 111 first allocates communication resources to the periodic data and allocates surplus communication resources to the aperiodic communication data.
[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 to be sequentially transmitted to the arithmetic device 200. At the timing of periodic communication, the communication control unit 111 may transmit data held in one or more queues 112 for periodic communication to the arithmetic device 200 with priority over data held in at least one or more queues 113 for aperiodic communication. Because the queue 112 for periodic communication has priority over the queue 113 for aperiodic communication, it is possible to prevent communication resources required for periodic communication from being strained.
[0035] For example, the communication control unit 111 has queue 112 and queue 113 in the transport layer described above, and stores responses to periodic requests in queue 112 and responses to one-off requests in queue 113. At the timing of periodic communication, the communication control unit 111 includes data held in one or more queues 112 in a transmission packet to the robot service 213, and includes at least a portion of the data held in one or more queues 113 in a surplus transmission packet.
[0036] Note that the communication control unit 111 may further include one or more queues 113 having a higher priority than the one or more queues 112, in addition to one or more queues 113 having a lower priority than the one or more queues 112. Hereinafter, the one or more queues 113 having a lower priority than the one or more queues 112 are referred to as "normal queues 113," and the one or more queues 113 having a higher priority than the one or more queues 112 are referred to as "high-priority queues 113." When the communication control unit 111 includes the normal queues 113 and the high-priority queues 113, the communication control unit 111 may store responses to one-off requests whose priority can be reduced in the normal queue 113, and may store responses to one-off high-priority requests in the high-priority queue 113. The communication control unit 111 may transmit data held in the high-priority queue 113 to the arithmetic device 200 with priority over data held in the queue 112 at the communication timing of periodic communication. This makes it possible to prevent delays in responses to one-off high-priority requests. Each of the queues 112 and 113 is configured by, for example, a FIFO (First In First Out) memory or the like in which priority can be set.
[0037] The robot driving device 100 may further include a processing unit 114 and a timestamp assigning unit 115 as functional blocks. The processing unit 114 repeats a process for driving the robot 10 (e.g., the above-described control cycle) at regular intervals (e.g., the above-described control cycle). The timestamp assigning unit 115 assigns a timestamp to the processing result by the processing unit 114. Examples of the processing result include feedback information acquired in the above-described control cycle and information on the driving power output in the above-described control cycle. When an aperiodic request received by the communication control unit 111 requires processing by the processing unit 114, the processing unit 114 may perform a one-off process corresponding to the aperiodic request and return the processing result to the communication control unit 111. Examples of the aperiodic request include a request to read setting information in the robot driving device 100 and a one-off request to confirm feedback information.
[0038] The communication control unit 111 may transmit the processing result to which the timestamp has been assigned by the timestamp assigning unit 115 to the arithmetic device 200 by periodic communication. For example, the communication control unit 111 may transmit the processing result to which the timestamp has been assigned by the timestamp assigning unit 115 to the arithmetic device 200 by including it in the above-mentioned first periodic data.
[0039] By using the timestamp as a basis, the arithmetic device 200 can execute processing while suppressing the effects of jitter in periodic communication. For example, even if the arithmetic device 200 receives processing results at different times due to periodic communication, the processing results can be used for calculations in the application 211 assuming that the processing results are from the timing indicated by the timestamp, thereby eliminating the effects of the variations. The timestamp assignment unit 115 assigns the timestamp may be the timing when the processing result is acquired by the processing unit 114, or may be the timing when the communication control unit 111 includes the processing result in the first periodic data.
[0040] The communication control unit 111 may repeatedly transmit the first periodic data to the calculation device 200 through periodic communication, regardless of whether there is information to be transmitted through periodic communication. Because the first periodic data is transmitted periodically through periodic communication, the calculation device 200 can implement various processes on the assumption that the first periodic data will arrive periodically. For example, the calculation device 200 can know that communication with the robot driving device 100 is being maintained by the periodic arrival of the first periodic data. Furthermore, the calculation device 200 can execute processes synchronized with the processes in the robot driving device 100 based on the timing of receiving the first periodic data.
[0041] The communication control unit 111 may perform periodic communication at a cycle synchronized with the drive cycle of the robot 10 in the robot driving device 100 to transmit first periodic data to the arithmetic device 200. Because the first periodic data is transmitted at a cycle synchronized with the drive cycle of the robot 10, the arithmetic device 200 can perform calculations synchronized with the drive cycle of the robot 10. In the robot driving device 100, multiple processes may be repeated at multiple cycles that are different from each other. For example, in addition to the drive process of the robot 10 that is repeated at the drive cycle, I / O processing that checks input and output from outside to the robot driving device 100 may be repeated at an I / O cycle that is different from the drive cycle. In this case, the communication control unit 111 may perform periodic communication at a cycle synchronized with the I / O cycle to transmit the first periodic data to the arithmetic device 200. When the I / O cycle is synchronized with the drive cycle, performing periodic communication at a cycle synchronized with the I / O cycle is included in performing periodic communication at a cycle synchronized with the drive cycle.
[0042] When the computing device 200 receives data from the robot driving device 100, it may execute a clock announcement to an application executed by the computing device 200. For example, the computing device 200 may execute a clock announcement to an application executed by the computing device 200 each time it receives first periodic data from the robot driving device 100. The clock announcement allows the application executed by the computing device 200 to know the timing synchronized with the robot's drive period and to execute processing according to that timing. This significantly reduces the burden on system integrators and service vendors who build applications executed by the computing device 200. When the drive period and I / O period are synchronized with each other and the drive period is an integer multiple of the I / O period, the communication control unit may include period identification information, which identifies whether data is being transmitted during the drive period or the I / O period, in the first periodic data and transmit it to the computing device 200. The computing device 200 may execute a clock announcement including notification of the period identification information. Based on the notification of the period identification information, it is possible to easily build an application that is more suitable for the operation of the robot driving device 100.
[0043] The computing device 200 may transmit second periodic data to the robot driving device 100 through periodic communication, regardless of whether there is information to be transmitted through periodic communication. The robot driving device 100 may further include a watchdog unit 116 as a functional block. The watchdog unit 116 checks the soundness of communication with the computing device 200 based on the second periodic data. The robot driving device 100 can check whether the computing device 200 is operational and capable of communication. The check results can also be used as control conditions for errors, alarms, emergency stops, and branching of processing on the robot driving device 100 side.
[0044] For example, if the communication control unit 111 fails to receive the second periodic data at the timing when it should receive the second periodic data, the watchdog unit 116 determines that communication with the arithmetic device 200 is not healthy. In this case, the robot driving device 100 may stop control of the robot 10 based on the second periodic data. The robot driving device 100 may bring the robot 10 to an emergency stop or issue an alarm to the operator. The robot driving device 100 may temporarily suspend the robot 10 and resume operation of the robot 10 when communication with the arithmetic device 200 returns to normal.
[0045] The watchdog unit 116 may not check the soundness based on the second periodic data until the communication control unit 111 establishes periodic communication, and may start checking the soundness based on the second periodic data after the communication control unit 111 establishes periodic communication. This can prevent the watchdog unit 116 from erroneously determining that the communication is unsound when the communication control unit 111 is merely waiting for the periodic communication to be established.
[0046] Instead of the watchdog unit 116 in the robot driving device 100, or in addition to the watchdog unit 116 in the robot driving device 100, the computing device 200 may further include a watchdog unit 216. If the robot service 213 fails to receive the first periodic data at the timing when it should receive the first periodic data, the watchdog unit 216 determines that communication with the robot driving device 100 is not healthy. In this case, the robot service 213 may send a command to the communication control unit 111 to make an emergency stop of the robot 10, or may issue an alarm to the operator. The robot service 213 may temporarily suspend transmission of the second periodic data to the robot driving device 100, and resume transmission of the second periodic data to the robot driving device 100 when communication with the robot driving device 100 returns to healthy.
[0047] The watchdog unit 216 may not check the health of the robot service 213 based on the first periodic data until the robot service 213 establishes periodic communication, and may start checking the health of the robot service 213 based on the second periodic data after the robot service 213 establishes periodic communication. This can prevent the misidentification of unhealthy communication in a situation where the robot service 213 is merely waiting for periodic communication to be established.
[0048] When the computing device 200 brings the robot driving device 100 to an emergency stop, the computing device 200 may include an emergency stop signal in the second periodic data and transmit the second periodic data to the robot driving device 100. When the emergency stop signal is included in the second periodic data, the robot driving device 100 may bring the robot 10 to an emergency stop.
[0049] The second periodic data periodically transmitted to the robot driving device 100 can be used to cause an emergency stop of the robot driving device 100 from the computing device 200. Even if the second periodic data including the emergency stop signal is not transmitted due to a communication problem, the robot driving device 100 can be brought to an emergency stop based on the monitoring results of the watchdog unit 116. In addition, if the periodic communication is performed at or below the drive period of the robot driving device 100, the second periodic data is also transmitted at or below the drive period of the robot driving device 100. This reduces the number of drive cycles executed before the emergency stop signal is transmitted, allowing the robot driving device 100 to be brought to a rapid emergency stop. This also reduces delays in stopping the robot driving device 100, even when resources for non-periodic communication are limited due to a request for file acquisition, etc.
[0050] 4, the robot service 213 may sequentially send n requests from one or more applications 211 to the robot driving device via m (one in the figure) sockets 217, which is less than n, and may receive responses to each of the n requests via the m sockets 217 and return them to the corresponding requests. By using at least 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 communication is performed with a connection established. The connection via the socket 217 is established based on the IP address and port number of 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] The robot service 213 may change the number of m sockets 217 based on the occupancy status of the m sockets 217 by the n requests. This makes it possible to achieve both saving of communication resources and smooth communication.
[0053] The occupancy status is, for example, the percentage of sockets 217 that are occupied by any of the n requests out of the m sockets 217. For example, the robot service 213 may increase the number of sockets 217 when the occupancy status is high and timely communication is difficult with m sockets 217. Conversely, the robot service 213 may decrease the number of sockets 217 when the occupancy status is low and timely communication is possible with fewer than m sockets 217.
[0054] The robot service 213 may allocate a memory 214 for responses to each of the n requests, store the responses received in response to each of the n requests in the corresponding memory 214, and return the responses stored in the memory 214 to the application that issued the corresponding request. Receiving a request from an application, executing communication via the socket 217, and returning a response to the application can be performed separately. This allows for flexible response to multiple requests from multiple applications.
[0055] For example, the robot service 213 may execute communication with the application 211 and communication with the communication control unit 111 at timings independent of each other. Hereinafter, communication with the application 211 will be referred to as "first communication," and communication with the communication control unit 111 will be 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 via the first communication in the queue 218. The robot service 213 sequentially releases the requests stored in the queue 218 from the queue 218 and secures memory 214 corresponding to the released requests. After securing the memory 214, the robot service 213 transmits a request to the communication control unit 111 via the second communication and stores a response (a response ID to a one-off request or a response ID to a periodic request) received from the communication control unit 111 in the memory 214. The robot service 213 reads the response from the memory 214 at a timing independent of the second communication. The robot service 213 returns the read response to the requesting application corresponding to the memory 214 via the first communication.
[0056] FIG. 5 illustrates an example of the hardware configuration of the robot driving device 100 and the computing device 200. As shown in FIG. 5, the robot driving device 100 includes a circuit 190, and the computing device 200 includes 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 and aperiodic communication with the computing device 200 and stores programs for controlling the robot 10. The programs include, for example, a real-time OS, the robot program described above, and a program for configuring the robot driving device 100 with the functional blocks described above. The storage 193 includes, for example, one or more non-volatile storage media. The non-volatile storage medium includes one or more storage devices. Examples of the one or more storage devices include a hard disk drive, a solid-state drive, and a flash memory. The non-volatile storage medium may also 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 storage media. The volatile storage media includes one or more memory devices. An example of the one or more memory devices is a random access memory. The first CPU 191 configures the above-mentioned functional blocks in the robot driving device 100 by executing the program loaded in the memory 192. The first CPU 191 may temporarily store the calculation results 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-mentioned multiple actuators in response to a request from the first CPU 191.
[0059] The circuit 290 has a second CPU 291, a memory 292, a storage 293, a GPU 294, and communication ports 295 and 296. The storage 293 stores programs including applications necessary for controlling the robot 10. For example, the programs stored in the storage 293 include a non-real-time OS and a program for configuring the above-mentioned multiple APIs 212 and function blocks in the robot driving device 100.
[0060] The memory 292 temporarily stores programs loaded from the storage 293. The memory 292 includes one or more volatile storage media. The volatile storage media includes one or more memory devices. Examples of the one or more memory devices include random access memories. The second CPU 291 executes the programs loaded in the memory 292, cooperating with the GPU 294 as necessary to configure the above-mentioned functional blocks in the arithmetic device 200. The second CPU 291 and the GPU 294 may temporarily store arithmetic results 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 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] The communication port 295 performs network communication with the communication port 194 in response to a request from the second CPU 291. This enables the second CPU 291 to communicate with the first CPU 191.
[0062] The second CPU 291 may cause the GPU 294 to execute matrix operations related to the generation of a path (for example, the above-described movement path) of the robot 10 while the first CPU 191 is controlling the robot 10. The first CPU 191 may cause the robot 10 to execute an operation along the path based on the results of the operations by the second CPU 291 and the GPU 294. By making the matrix operations by the GPU 294 available for generating a path for the robot 10 while the first CPU 191 is controlling the robot, the functionality of the robot 10 can be easily expanded.
[0063] As the matrix calculation, the GPU 294 may perform a matrix calculation 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 results in the path.
[0064] As the matrix calculation, the GPU 294 may perform a matrix calculation to check for interference between the robot 10 and a peripheral object based on a model of the robot 10 and the peripheral object of the robot 10. The robot 10 can be controlled while reflecting the result of interference between the robot 10 and the peripheral object in the path.
[0065] [Control Procedure] As an example of a control method, a control procedure executed by the control system 20 will be illustrated. This control procedure includes driving the robot by the robot driving device 100, executing an application required for control of the robot 10 in the robot driving device 100 by the computing device 200, performing periodic communication for periodically communicating data between the robot driving device 100 and the computing device 200, and performing aperiodic communication for aperiodically communicating data between the robot driving device 100 and the computing device 200.
[0066] The control procedures are exemplified below with reference to flowcharts. The exemplified control procedures include a communication initiation procedure between the robot driving device 100 and the computing device 200, a request handling procedure in the computing device 200, an aperiodic communication procedure, a request handling procedure in the robot driving device 100, a periodic communication procedure in the robot driving device 100, and a periodic communication procedure in the computing device 200.
[0067] (Communication Start Procedure) This procedure is for the robot driving device 100 and the computing device 200 to establish communication before the robot driving device 100 starts driving the robot 10. As shown in FIG. 6 , the robot driving device 100 and the computing device 200 first execute step S01. In step S01, either the robot driving device 100 or the computing device 200 requests a connection to the other device via the m sockets 217 described above. Next, the robot driving device 100 executes step S02. In step S02, the communication control unit 111 checks whether a connection via the m sockets 217 has been established. If it is determined in step S02 that a connection has not yet been established, the robot driving 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 driving device 100 returns the process to step S02. Thereafter, the robot driving device 100 waits until communication is established or until a predetermined time has elapsed.
[0068] If it is determined in step S02 that connections via m sockets 217 have been established, the robot driving device 100 executes step S04. In step S04, the processing unit 114 starts processing for controlling the robot 10 (the control cycle described above). Next, the robot driving device 100 executes steps S05 and S06. In step S05, the watchdog unit 116 waits for timing of periodic communication. In step S06, the watchdog unit 116 checks whether or not the second periodic data has been received by the communication control unit 111. If it is determined in step S06 that the second periodic data has been received, the robot driving device 100 returns the processing to step S05. Thereafter, it checks whether or not the second periodic data has been received at each timing of periodic communication.
[0069] If it is determined in step S06 that the second periodic data has not been received, or if it is determined in step S03 that the predetermined time has elapsed, the robot driving device 100 executes step S07. In step S07, the watchdog unit 116 outputs an alarm and brings the robot 10 to an emergency stop. For example, the watchdog unit 116 displays the alarm for the operator on a display device or the like. After step S07, the control procedure for the robot 10 is completed.
[0070] (Request Handling Procedure in Computing Device) In this procedure, connections via the m sockets 217 are initiated, and the computing device 200 handles requests from the application 211 while the robot driving device 100 is driving the robot 10. As shown in FIG. 7 , the computing device 200 executes 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 processing according to the called API 212. In step S13, the robot service 213 allocates memory 214 for the response. In step S14, the robot service 213 writes a request to be sent to the communication control unit 111 in the queue 218. The request written in the queue 218 is sent to the communication control unit 111 in a non-periodic communication procedure, which will be described later. When a response to the request is received, it is written to the memory 214.
[0071] Next, the arithmetic device 200 executes steps S15 and S16. In step S15, the robot service 213 waits for a response to be written to the memory 214. In step S16, the robot service 213 reads the response written to the memory 214.
[0072] Next, the arithmetic device 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 a response via periodic communication. If it is determined in step S17 that the read response is the response ID, the arithmetic device 200 executes step S18. In step S18, the robot service 213 stores the response ID in association with the request being handled.
[0073] If it is determined in step S17 that the read response is not a response ID, the arithmetic device 200 executes step S19. In step S19, the robot service 213 returns a response to the application 211 that is the request source of the request being handled. After executing steps S18 and S19, the arithmetic device 200 returns the process to step S11. The arithmetic device 200 repeats the above process.
[0074] (Non-periodic communication procedure) This procedure is a communication procedure executed by the arithmetic device 200 in response to the request written to the queue 218 in step S14 described above. As shown in Fig. 8, the arithmetic device 200 first executes step S21. In step S21, the robot service 213 reads the request from the queue 218.
[0075] Next, the computing device 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 device 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. Thereafter, the arithmetic device 200 returns the process to step S21. The arithmetic device 200 repeats the above process.
[0077] (Request Handling Procedure in Robot Driving Device) This procedure is a procedure by which the robot driving device 100 handles the request sent by the robot service 213 in step S22 described above. As shown in Fig. 9, the robot driving device 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 a one-off request.
[0078] If it is determined in step S32 that the request is a one-off request, the robot driving device 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] If it is determined in step S32 that the request is periodic, the robot driving device 100 executes steps S35 and S36. In step S35, the communication control unit 111 issues a response ID for the periodic request and sends it to the robot service 213. In step S36, the communication control unit 111 adds the response to the request to the targets to be included in the first periodic data. The response added to the targets is included in the first periodic data and sent by periodic communication in the periodic communication procedure described below. After executing steps S34 and S36, the robot driving device 100 returns the process to step S31. The robot driving device 100 repeats the above process.
[0080] (Periodic Communication Procedure in Robot Driving Device) This procedure is a periodic communication procedure executed by the robot driving device 100 after a connection via 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 the above-described control cycle and other processes. In step S42, the timestamp assigning unit 115 assigns a timestamp to the processing results stored in the memory 214. In step S43, the communication control unit 111 assigns the issued response ID to the processing results to be included in the first periodic data, among the processing results to which the timestamp has been assigned, and adds the processing results with the assigned response ID to the first periodic data. In step S44, the communication control unit 111 waits for the timing to transmit the first periodic data. The timing to transmit the first periodic data corresponds, for example, to the timing when the above-described control period elapses. In step S45, the communication control unit 111 transmits the first periodic data to the robot service 213. After that, the robot driving device 100 returns the process to step S41 and repeats the above process.
[0081] (Periodic Communication Procedure in Computing Device) This procedure is a periodic communication procedure that the computing device 200 executes after a connection is established via the socket 217. As shown in FIG. 11 , the computing device 200 executes steps S51 and S52. In step S51, the robot service 213 waits to receive first periodic data. In step S52, in response to receiving the first periodic data, the robot service 213 transmits second periodic data to the communication control unit 111. Thereafter, the computing device 200 returns the process to step S51. The computing device 200 repeats the above process.
[0082] [Summary] (1) A robot system 1 includes a robot driving device 100 that drives a robot 10, and a computing device 200 that communicates with the robot driving device 100 via a network and is capable of executing an application 211 required for controlling the robot 10 on the robot driving device 100. Periodic communication, in which data is periodically exchanged, and aperiodic communication, in which data is exchanged aperiodically, are performed between the robot driving device 100 and the computing device 200, at least while the robot driving device 100 is driving the robot 10. According to this robot system 1, resources required for controlling the robot 10 can be extended from the robot driving device 100 to the computing device 200, making it possible to easily implement various processes or applications 211 required for controlling the robot 10 beyond the resource constraints of the robot driving device 100. Additionally, in exchanging data, processing results, and the like for executing the processes or applications 211, either periodic communication or aperiodic communication can be used, depending on the nature of the processes or applications 211. For example, periodic communication allows reliable exchange of data (e.g., position data) according to the drive cycle of the robot driving device 100. Aperiodic communication allows temporary information to be exchanged when needed (e.g., immediately) without incurring periodic communication loads. By combining these communication methods, timely communication can be achieved while reducing communication loads while the robot driving device 100 is driving the robot 10. For example, by piggybacking periodically updated or generated data sets on periodic data sent via periodic communication and transmitting only data sets that require immediacy over periodicity via aperiodic communication, timely communication can be achieved while reducing communication loads. Because communication loads are reduced, the need for developers to be aware of communication constraints when building applications is reduced, providing an easier development environment. Furthermore, the need for developers to be aware of communication constraints when building processes or applications 211 is reduced, providing an easier development environment.
[0083] (2) In the robot system 1 described in (1), the robot driving device 100 includes a communication control unit 111 that controls periodic communication and aperiodic communication in response to a request from the computing device 200. The communication control unit 111 transmits a response to the request to the computing device 200 via aperiodic communication if the request is a one-off request, and transmits a response to the request via periodic communication if the request is periodic. According to this robot system 1, the communication control unit 111 automatically assigns appropriate communication depending on the nature of the request. Therefore, at least communication from the robot driving device 100 to the computing device 200 can be encapsulated, allowing the application 211 builder to enjoy a highly functional robot 10 construction environment without being aware of communication.
[0084] (3) The robot system 1 according to (2), wherein the arithmetic device 200 includes 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 one-off 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. Communication from the arithmetic device 200 to the robot driving device 100 can also be encapsulated. Because either a one-off 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) In the robot system 1 described in (2) or (3), the arithmetic device 200 transmits a periodic request to the communication control unit 111 via aperiodic communication, and the communication control unit 111, upon receiving the periodic request, transmits a response to the request to the arithmetic device 200 via periodic communication. According to this robot system 1, requests from the arithmetic device 200 are sent via aperiodic communication, so that the requests can be sent to the robot driving device 100 without waiting for the period of periodic communication. Additionally, if the request is periodic, the response to the request can be included in and transmitted as periodic data repeatedly transmitted via periodic communication. This reduces computational costs and communication costs.
[0086] (5) The robot system 1 according to any one of (2) to (4), wherein the communication control unit 111 performs periodic communication and aperiodic communication with the arithmetic device 200 using the same communication resources, and prioritizes periodic communication over aperiodic communication. This robot system 1 can maintain the reliability of periodic communication and can be configured to operate stably.
[0087] (6) The robot system 1 according to (5), wherein 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 to be sequentially transmitted to the arithmetic device 200, and at the timing of periodic communication, transmits data held in the one or more queues for periodic communication to the arithmetic device 200 with priority over data held in at least one queue for aperiodic communication. According to this robot system 1, the queues for periodic communication are given priority over the queues for aperiodic communication, thereby preventing a strain on communication resources required for periodic communication.
[0088] (7) The robot system 1 according to any one of (2) to (6), wherein the robot driving device 100 further includes a processing unit 114 that periodically repeats processing for driving the robot 10 and a timestamp assigning unit 115 that assigns a timestamp to the processing result, and the communication control unit 111 transmits the processing result, to which the timestamp has been assigned by the timestamp assigning unit 115, via periodic communication. By using the timestamp, the arithmetic device 200 can execute processing while suppressing the effects of jitter, latency, and the like of periodic communication.
[0089] (8) The robot system 1 according to any one of (1) to (7), wherein the computing device 200 further includes a robot service 213 that sequentially transmits n requests from one or more applications 211 to the robot driving 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. This robot system 1 can conserve communication resources.
[0090] (9) The robot system 1 described in (8) above, wherein the robot service 213 allocates memory 214 for responses to each of the n requests, stores the responses received in response 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 issued the corresponding request. Receiving a request from the application 211, executing communication via the socket 217, and returning a response to the application 211 can be performed separately. This allows for flexible response to multiple requests from multiple applications 211.
[0091] (10) The robot system 1 according to (8), wherein the robot service 213 changes the number of m sockets 217 based on the occupancy status of the m sockets 217 by the n requests. This allows for both saving communication resources and real-time communication.
[0092] (11) In the robot system 1 described in (1), the robot driving device 100 includes a communication control unit 111 that controls periodic communication and non-periodic communication with the arithmetic device 200. The communication control unit 111 repeatedly transmits first periodic data to the arithmetic device 200 through periodic communication, regardless of whether or not there is information to be transmitted through periodic communication. According to this robot system 1, the periodic data is periodically transmitted to the arithmetic device 200 through periodic communication. This allows the arithmetic device 200 to implement various processes based on the assumption that data arrives periodically through periodic communication. For example, the arithmetic device 200 can know that communication with the robot driving device 100 is being maintained by periodically receiving periodic data through periodic communication. Furthermore, the arithmetic device 200 can execute processes synchronized with the processes in the robot driving device 100 based on the timing of reception of the periodic data.
[0093] (12) The robot system 1 according to (11), wherein the communication control unit 111 performs periodic communication and transmits the first periodic data to the arithmetic device 200 at a period synchronized with the drive period of the robot 10 in the robot driving device 100. According to this robot system 1, the periodic data is transmitted at a period synchronized with the control period of the robot 10, and therefore the arithmetic device 200 can perform calculations synchronized with the control period of the robot 10.
[0094] (13) The robot system 1 according to (12), wherein the arithmetic device 200, upon receiving data from the robot driving device 100, issues a clock announcement to the application 211 executed in the arithmetic device 200. According to this robot system 1, the application 211 executed in the arithmetic device 200 can know timing synchronized with the control cycle of the robot 10 through the clock announcement and can execute processing according to that timing. This significantly reduces the burden on system integrators and service vendors who build the application 211 executed in the arithmetic device 200.
[0095] (14) The robot system 1 according to (12), wherein the arithmetic device 200 transmits second periodic data to the robot driving device 100 through periodic communication regardless of whether there is information to be transmitted through periodic communication, and the robot driving device 100 has a watchdog unit 116 that checks the soundness of communication with the arithmetic device 200 based on the second periodic data. According to this robot system 1, the robot driving device 100 can check whether the arithmetic device 200 is operational and capable of communicating. The check results can be used as control conditions for errors, alarms, emergency stops, branching of processing on the robot driving device 100 side, and the like.
[0096] (15) In the robot system 1 described in (14), when the calculation device 200 needs to make an emergency stop of the robot driving device 100, the calculation device 200 includes an emergency stop signal in the second periodic data and transmits the second periodic data to the robot driving device 100. If the second periodic data includes the emergency stop signal, the robot driving device 100 makes an emergency stop of the robot 10. According to this robot system 1, the calculation device 200 can make an emergency stop of the robot driving device 100 by utilizing the second periodic data periodically transmitted to the robot driving device 100. Even if the second periodic data including the emergency stop signal is not transmitted due to a communication problem, the robot driving device 100 can be made to make an emergency stop based on the monitoring results of the watchdog unit 116. In addition, if the periodic communication is performed within the control period of the robot driving device 100, the second periodic data is also transmitted within the control period of the robot driving device 100. This reduces the number of control cycles executed before the emergency stop signal is transmitted, allowing the robot driving device 100 to be made to make an emergency stop quickly.
[0097] (16) In the robot system 1 according to (14), the watchdog unit 116 starts checking the health of the robot system based on the second periodic data after the communication control unit 111 establishes the periodic communication. This prevents the robot system 1 from erroneously determining that the communication is unhealthy when the robot system 1 is merely waiting for the periodic communication to be established.
[0098] (17) A robot system 1 includes a first CPU that executes a real-time OS to control the robot 10, a second CPU that is capable of communicating with the first CPU and executes a non-real-time OS, and a GPU that is controlled by the second CPU, wherein the second CPU causes the GPU to execute matrix operations related to generating a path for the robot 10 while the first CPU is controlling the robot 10, and the first CPU causes the robot 10 to perform an operation along the path based on the results of the operations by the second CPU and the GPU. By making the matrix operations by the GPU available for generating a path for the robot 10 while the first CPU is controlling the robot 10, the functionality of the robot 10 can be easily expanded.
[0099] (18) The robot system 1 according to (17), wherein 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. The robot 10 can be controlled while reflecting the image processing results in the path.
[0100] (19) The robot system 1 according to (18), wherein the GPU performs, as the matrix operation, a matrix operation for checking interference between the robot 10 and a peripheral object based on a model of the robot 10 and the peripheral object of the robot 10. The robot 10 can be controlled while reflecting the result of interference between the robot 10 and the peripheral object in the path.
[0101] (20) The robot system 1 according to (18), wherein the second CPU communicates with the first CPU via a network. This increases the degree of freedom in the data that can be communicated, and allows for more flexible use of the GPU.
[0102] (21) A control method including: driving a robot 10 using a robot driving device 100; executing an application 211 required for control of the robot 10 in the robot driving device 100 using a computing device 200 that communicates with the robot driving device 100 via a network; performing periodic communication to periodically communicate data between the robot driving device 100 and the computing device 200; and performing aperiodic communication to aperiodically communicate data between the robot driving device 100 and the computing device 200.
[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 spirit of the present disclosure.
[0104] 1...Robot system, 10...Robot, 100...Robot driving device, 200...Calculation 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
Claims
1. A robot system comprising: a robot driving device that drives a robot; and a computing device that communicates with said robot driving device over a network and is capable of executing applications required for controlling the robot in said robot driving device, wherein, at least while said robot driving device is driving the robot, periodic communication for periodically communicating data and non-periodic communication for non-periodically communicating data are performed between said robot driving device and said computing device.
2. A robot system as described in claim 1, wherein the robot driving device has a communication control unit that controls the periodic communication and the non-periodic communication in response to a request from the computing device, and the communication control unit transmits a response to the request to the computing device by the non-periodic communication if the request is a one-off request, and transmits a response to the request by the periodic communication if the request is periodic.
3. The robot system of claim 2, wherein the computing device has: a plurality of APIs that can be called from the application; and a robot service that selects at least one of the one-off requests and the periodic requests according to the API called from the application, and transmits the selected request to the communication control unit.
4. A robot system as described in claim 2, wherein the calculation device transmits the periodic request to the communication control unit via the non-periodic communication, and the communication control unit, upon receiving the periodic request, transmits a response to the request to the calculation device via the periodic communication.
5. The robot system according to claim 2, wherein the communication control unit performs the periodic communication and the non-periodic communication with the computing device using the same communication resources, and prioritizes the periodic communication over the non-periodic communication.
6. A robot system as described in claim 5, wherein the communication control unit has one or more queues for periodic communication and one or more queues for non-periodic communication as queues capable of holding data to be sequentially transmitted to the calculation device, and at the timing of the periodic communication, transmits to the calculation device data held in at least one of the queues for periodic communication in priority over data held in at least one of the queues for non-periodic communication.
7. A robot system as described in claim 2, wherein the robot driving device further has a processing unit that repeats processing for driving the robot at a fixed period, and a time stamp assignment unit that assigns a time stamp to a processing result, and the communication control unit transmits the processing result, to which a time stamp has been assigned by the time stamp assignment unit, via the periodic communication.
8. The robot system according to claim 1, further comprising a robot service, wherein the computing device sequentially transmits n requests from one or more applications to the robot drive device through m sockets, the m being less than n, and receives responses to each of the n requests through the m sockets and returns the responses to the corresponding requests.
9. The robot system according to claim 8, wherein the robot service reserves memory for a response for each of the n requests, stores a response received in response to each of the n requests in the corresponding memory, and returns the response stored in the memory to an application that originated the corresponding request.
10. The robot system according to claim 8, wherein the robot service changes the number of the m sockets based on the occupancy status of the m sockets by the n requests.
11. A robot system as described in claim 1, wherein the robot driving device has a communication control unit that controls the periodic communication and the non-periodic communication between the robot driving device and the computing device, and the communication control unit repeatedly transmits first periodic data to the computing device by the periodic communication regardless of whether or not there is information to be transmitted by the periodic communication.
12. The robot system according to claim 11, wherein the communication control unit performs the periodic communication and transmits the first periodic data to the computing device at a period synchronized with a drive period of the robot in the robot drive device.
13. The robot system according to claim 12, wherein the computing device performs a clock announcement to an application executed by the computing device upon receiving data from the robot drive device.
14. A robot system as described in claim 12, wherein the calculation device transmits second periodic data to the robot driving device through the periodic communication regardless of whether or not there is information to be transmitted through the periodic communication, and the robot driving device has a watchdog unit that checks the soundness of communication with the calculation device based on the second periodic data.
15. The robot system according to claim 14, wherein the computing device, when causing an emergency stop of the robot driving device, includes an emergency stop signal in the second periodic data and transmits the second periodic data to the robot driving device, and the robot driving device, when the emergency stop signal is included in the second periodic data, causes the robot to come to an emergency stop.
16. The robot system according to claim 14, wherein the watchdog unit starts checking the soundness based on the second periodic data after the communication control unit has established the periodic communication.
17. A robot system comprising: a first CPU that executes a real-time OS to control a robot; a second CPU that is capable of communicating with the first CPU and executes a non-real-time OS; and a GPU controlled by the second CPU, wherein the second CPU causes the GPU to execute matrix calculations related to generating a path for the robot while the first CPU is controlling the robot, and the first CPU causes the robot to perform operations along the path based on the results of the calculations by the second CPU and the GPU.
18. The robot system according to claim 17, wherein the matrix operation includes a matrix operation related to image processing for generating the path based on an image of the surrounding environment of the robot.
19. The robot system according to claim 18, wherein the GPU performs, as the matrix calculation, a matrix calculation for checking interference between the robot and the peripheral objects based on a model of the robot and the peripheral objects of the robot.
20. The robot system according to claim 18, wherein the second CPU communicates with the first CPU via a network.
21. A control method comprising: driving a robot with a robot driving device; executing an application required for control of the robot in the robot driving device by a computing device that communicates with the robot driving device over a network; performing periodic communication for periodically communicating data between the robot driving device and the computing device; and performing non-periodic communication for non-periodically communicating data between the robot driving device and 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