Robot system and control method
The robot system addresses resource constraints by implementing periodic and aperiodic communication, enhancing robot functionality and simplifying application development through efficient data exchange.
Patent Information
- Application Number
- JP2025085825
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-12
- Filing Date
- 2025-05-22
- Publication Date
- 2025-08-20
AI Technical Summary
Existing robot systems face limitations in expanding functionality due to resource constraints and inefficient communication methods between the robot driving device and the computing device.
A robot system that employs periodic and aperiodic communication between the robot driving device and the computing device, allowing timely data exchange while reducing communication loads, enabling the execution of various applications beyond resource constraints.
The system provides a stable and expandable robot functionality environment by encapsulating communication methods, reducing communication loads, and allowing easy application development without awareness of communication constraints.
Smart Images

Figure 2025122119000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a robot system and a control method. [Background technology]
[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. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Publication No. 2019-220135 Summary of the Invention [Problem to be solved by the invention]
[0004] The present disclosure provides a system that is effective for expanding the functionality of a robot. [Means for solving the problem]
[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. [Effects of the Invention]
[0007] According to the present disclosure, a system that is effective for expanding the functionality of a robot can be provided. [Brief explanation of the drawings]
[0008] [Figure 1] FIG. 1 is a diagram schematically illustrating a configuration of a robot system. [Figure 2] FIG. 2 is a block diagram illustrating the functional configuration of a computing device and a robot driving device. [Figure 3] FIG. 10 is a block diagram showing a modified example of the arithmetic device and the robot driving device. [Figure 4] FIG. 10 is a block diagram showing a modified example of the arithmetic device and the robot driving device. [Figure 5] FIG. 2 is a block diagram illustrating an example of a hardware configuration of a computing device and a robot driving device. [Figure 6] 10 is a flowchart illustrating a communication start procedure. [Figure 7] 10 is a flowchart illustrating a request handling procedure in a computing device. [Figure 8] 1 is a flowchart illustrating an example aperiodic communication procedure. [Figure 9] 10 is a flowchart illustrating a request handling procedure in a robot driving device. [Figure 10] 10 is a flowchart illustrating a periodic communication procedure in a robot driving device. [Figure 11]10 is a flowchart illustrating a periodic communication procedure in a computing device. DETAILED DESCRIPTION OF THE INVENTION
[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 is caused to 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 is to work. 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 angle 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 obtaining feedback information representing the state of the robot 10 (for example, 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 performs network communication with the robot driving device 100. 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 layered protocols 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 a motion to be executed by the robot 10 in accordance with a force detected by a force sensor. The path generation application is an application that generates a motion path for the robot 10 to execute a task by performing a simulation (e.g., interference check) based on a task to be executed by the robot 10 and a three-dimensional model of the robot 10 and surrounding objects. Simulations such as collision 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 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 by 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 by 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 with hardware specialized for operation teaching, or may be configured with 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 execution results of an application 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 aperiodically 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 arithmetic device 200. This allows various applications required for robot control to be easily implemented beyond the resource constraints of the robot driving device 100. In addition, when exchanging data and processing results for executing an application, 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) 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 control system 20. For example, multiple data sets that require periodicity over immediacy can be piggybacked on periodic data sent via periodic communication, and only data sets that require immediacy over periodicity can be sent individually via aperiodic communication, thereby enabling timely communication while reducing communication loads. 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 kept in a constant 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 period based on a system timer of at least one of the robot driving device 100 and the arithmetic device 200. Furthermore, the periodic communication only needs to be executed in a period in which there is data to be transmitted, and may be omitted in periods in which 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 arithmetic 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 arithmetic device 200. Examples of data sets included in the periodic data sent from the arithmetic device 200 to the robot driving device 100 (hereinafter referred to as "second periodic data") include a target posture of the robot 10 for each control period based on a motion path calculated by the arithmetic device 200. The target posture of the robot 10 may be the target angles of the multiple joints 14, or may be the target position and target 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 computing device 200 to write settings to the robot driving device 100, a data set requesting the computing device 200 to turn the servo on to the robot driving device 100, and a data set requesting a one-shot operation from the computing device 200 to the robot driving device 100. 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 by aperiodic communication. If the request from the arithmetic device 200 is periodic, the communication control unit 111 transmits a response to the request by 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 builder 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 to the request. A periodic request is a request that requires repeated periodic responses to the request. 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 having to be 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. required 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 arithmetic 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 transmit a periodic request to the communication control unit 111 by aperiodic communication. When the communication control unit 111 receives a periodic request by aperiodic communication, it transmits a response to the request to the arithmetic device 200 by periodic communication. Because the request from the robot service 213 is sent by aperiodic communication, it 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 the first periodic data that is repeatedly sent by periodic communication. This makes it possible to reduce 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). Thereafter, the communication control unit 111 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 arithmetic 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 construction of a robot system 1 that can operate stably.
[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 non-periodic 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 non-periodic 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 a queue 112 and a queue 113 in the transport layer described above, and stores responses to periodic requests in the queue 112 and responses to one-off requests in the 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 will be referred to as "normal queues 113," and the one or more queues 113 having a higher priority than the one or more queues 112 will be referred to as "high-priority queues 113." When the communication control unit 111 includes the normal queue 113 and the high-priority queue 113, the communication control unit 111 may store a response to a one-off request whose priority can be reduced in the normal queue 113, and may store a response to a one-off request with a high priority 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 requests with a high priority. Each of the queues 112 and 113 is configured by, for example, a FIFO (First In First Out) memory or the like that can set priorities.
[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 (for example, the above-mentioned control cycle) at regular intervals (for example, the above-mentioned 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-mentioned control cycle and information on the driving power output in the above-mentioned 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 influence of jitter in periodic communication. For example, even if the arithmetic device 200 receives processing results at different timings 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 influence of the variations. The timing at which the timestamp is assigned by the timestamp assigning unit 115 may be the timing at which the processing result is acquired by the processing unit 114, or may be the timing at which 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 a process synchronized with the process 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, the computing device 200 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 first periodic data is received from the robot driving device 100. The application executed in the computing device 200 can know the timing synchronized with the robot's drive period 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 applications executed in 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 transmission is during the drive period or during 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 periodic identification information. Based on the notification of the periodic identification information, an application more suited to the operation of the robot driving device 100 can be easily built.
[0043] The arithmetic 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 arithmetic device 200 based on the second periodic data. The robot driving device 100 can check whether the arithmetic device 200 is operational and capable of communicating. 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 the second periodic data should be received, the watchdog unit 116 determines that the communication with the arithmetic device 200 is not healthy. In this case, the robot driving device 100 may stop controlling 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 the 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 unsoundness of communication from being mistakenly recognized when the communication control unit 111 is merely waiting for the establishment of periodic communication.
[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 arithmetic 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 an 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 soundness based on the first periodic data until the robot service 213 establishes periodic communication, and may start checking the soundness based on the second periodic data after the robot service 213 establishes periodic communication. This can prevent the unsoundness of communication from being mistakenly recognized in a situation where the robot service 213 is merely waiting for the establishment of periodic communication.
[0048] When the arithmetic device 200 brings the robot driving device 100 to an emergency stop, the arithmetic 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 cycle of the robot driving device 100, the second periodic data is also transmitted at or below the drive cycle 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 an emergency stop quickly. This also reduces delays in stopping the robot driving device 100 even when there are limited resources for non-periodic communication 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 due to 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 for 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 makes it possible to flexibly respond 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 through 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 the 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 through the second communication and stores a response (a response 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 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 nonvolatile storage media. The nonvolatile 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 nonvolatile 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 plurality of 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 a communication port 295. 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 a program loaded from the storage 293. The memory 292 includes one or more volatile storage media. The volatile storage medium includes one or more memory devices. An example of the one or more memory devices is a random access memory. The second CPU 291 executes the program 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 calculation 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-mentioned 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 is illustrated. This control procedure includes driving the robot by the robot driving device 100, executing an application required for controlling the robot 10 in the robot driving device 100 by the arithmetic device 200, performing periodic communication for periodically communicating data between the robot driving device 100 and the arithmetic device 200, and performing aperiodic communication for non-periodically communicating data between the robot driving device 100 and the arithmetic 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 a procedure for the robot driving device 100 and the arithmetic 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 arithmetic device 200 first execute step S01. In step S01, either the robot driving device 100 or the arithmetic device 200 requests a connection to the other via the m sockets 217. 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 is checked 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 procedures in computing devices) In this procedure, connections via the m sockets 217 are initiated, and the arithmetic device 200 handles requests from the application 211 while the robot driving device 100 drives the robot 10. As shown in FIG. 7 , the arithmetic 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 a 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 transmitted 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 by 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 processes.
[0074] (Acyclic Communication Procedure) This procedure is a communication procedure that the arithmetic device 200 executes 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 arithmetic 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 processes.
[0077] (Request handling procedure in robot drive unit) This 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 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 targets to be included in the first periodic data. The response added to the targets is included in the first periodic data and transmitted by periodic communication in the periodic communication procedure described below. After executing steps S34 and S36, the robot driving unit 100 returns the process to step S31. The robot driving unit 100 repeats the above process.
[0080] (Cyclic communication procedure for robot drive units) 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 result stored in the memory 214. In step S43, the communication control unit 111 assigns the issued response ID to the processing result to be included in the first periodic data, among the processing results to which the timestamp has been assigned, and adds the processing result 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 is, for example, 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. The robot driving device 100 repeats the above process.
[0081] (Periodic communication procedure in computing devices) This procedure is a periodic communication procedure that the arithmetic device 200 executes after a connection is established via the socket 217. As shown in FIG. 11, the arithmetic 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 arithmetic device 200 returns the process to step S51. The arithmetic 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, and at least while the robot driving device 100 is driving the robot 10, periodic communication for periodically communicating data and aperiodic communication for aperiodic communication for aperiodic communicating data are performed between the robot driving device 100 and the computing device 200. According to this robot system 1, resources required for controlling the robot 10 can be expanded from the robot driving device 100 to the computing device 200. This allows various processes or applications 211 required for controlling the robot 10 to be easily constructed beyond the resource constraints of the robot driving device 100. In addition, when exchanging data and processing results for executing the processes or applications 211, either periodic communication or aperiodic communication can be used, depending on the characteristics 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 at the required timing (e.g., immediately) without incurring periodic communication load. By combining these communication methods, timely communication can be achieved while minimizing communication load 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 by periodic communication, and transmitting only data sets that require immediacy over periodicity separately by aperiodic communication, it is possible to reduce the communication load and perform timely communication. Because the communication load is reduced, the need for the developer to be aware of communication constraints when building an application is reduced, providing an easier building environment. Furthermore, the need for the developer to be aware of communication constraints when building a process or application 211 is reduced, providing an easier building environment.
[0083] (2) The robot driving device 100 has a communication control unit 111 that controls periodic communication and non-periodic communication in response to a request from the calculation device 200, and the communication control unit 111 sends a response to the request to the calculation device 200 by non-periodic communication if the request is a one-off request, and sends a response to the request by periodic communication if the request is periodic, in the robot system 1 described in (1). According to this robot system 1, the communication control unit 111 automatically allocates appropriate communication depending on the nature of the request. Therefore, it is possible to encapsulate at least the communication from the robot driving device 100 to the arithmetic device 200, and the application 211 builder can enjoy a highly functional robot 10 building environment without being aware of the communication.
[0084] (3) The robot system 1 described in (2) includes a computing device 200 having a plurality of APIs 212 that can be called from an 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. It is also possible to encapsulate communication from the arithmetic device 200 to the robot driving device 100. Either a one-off request or a periodic request is selected according to the API 212, so that the application 211 can be easily constructed using the API 212 without being aware of the type of communication.
[0085] (4) A robot system 1 described in (2) or (3), in which the calculation 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 calculation device 200 via periodic communication. According to this robot system 1, requests from the arithmetic device 200 are sent by non-periodic communication, so that the requests 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 response to the request can be sent by being included in the periodic data that is repeatedly sent by periodic communication. This reduces calculation costs and communication costs.
[0086] (5) A robot system 1 described in any one of (2) to (4), wherein the communication control unit 111 performs periodic communication and aperiodic communication with the calculation device 200 using the same communication resources, and prioritizes periodic communication over aperiodic communication. According to this robot system 1, it is possible to maintain the reliability of periodic communication, and to construct a robot system 1 that can operate stably.
[0087] (6) The robot system 1 described in (5) has a communication control unit 111 that has one or more queues for periodic communication and one or more queues for aperiodic communication as queues that can hold data to be sequentially transmitted to the calculation device 200, and at the timing of periodic communication, transmits data held in one or more queues for periodic communication to the calculation device 200 in priority over data held in at least one queue for aperiodic communication. According to this robot system 1, the queue for periodic communication is given priority over the queue for non-periodic communication, so that it is possible to prevent the communication resources required for periodic communication from being overwhelmed.
[0088] (7) 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, in a robot system 1 described in any one of (2) to (6). By using the timestamp as a basis, 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 described in any one of (1) to (7), wherein the computing device 200 further includes a robot service 213 that sequentially sends 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. According to this robot system 1, communication resources can be saved.
[0090] (9) The robot system 1 described in (8) above, wherein the robot service 213 reserves memory 214 for responses for 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 memory 214 to the application 211 that made the corresponding request. It is possible to separate the processes of receiving a request from the application 211, executing communication via the socket 217, and returning a response to the application 211. This makes it possible to flexibly handle multiple requests from multiple applications 211.
[0091] (10) The robot system 1 described in (8), wherein the robot service 213 changes the number of the m sockets 217 based on the occupancy status of the m sockets 217 by the n requests. This makes it possible to save communication resources while maintaining immediacy of communication.
[0092] (11) The robot system 1 described in (1) has a communication control unit 111 that controls periodic communication and non-periodic communication between the robot driving device 100 and the calculation device 200, and the communication control unit 111 repeatedly transmits first periodic data to the calculation device 200 by periodic communication regardless of whether or not there is information to be transmitted by periodic communication. According to this robot system 1, periodic data is periodically sent to the arithmetic device 200 through periodic communication, and therefore the arithmetic device 200 can implement various processes 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 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 receiving the periodic data.
[0093] (12) The robot system 1 described in (11) above, wherein the communication control unit 111 performs periodic communication and transmits first periodic data to the calculation device 200 at a period synchronized with the drive period of the robot 10 in the robot drive device 100. According to this robot system 1, the periodic data is sent at a cycle synchronized with the control cycle of the robot 10, so that the arithmetic device 200 can perform calculations synchronized with the control cycle 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, executes a clock announcement to the application 211 executed by the arithmetic device 200. According to this robot system 1, the application 211 executed in the arithmetic device 200 can know the timing synchronized with the control cycle of the robot 10 by 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 described in (12) above, wherein the calculation 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 integrity of communication with the calculation device 200 based on the second periodic data. According to this robot system 1, it is possible to confirm on the robot driving device 100 side that the arithmetic device 200 is operational and capable of communicating. The confirmation result can also be used as a control condition for an error, an alarm, an emergency stop, or branching of processing on the robot driving device 100 side.
[0096] (15) In the robot system 1 described in (14), when the calculation device 200 needs to bring the robot driving device 100 to an emergency stop, the calculation device 200 includes an emergency stop signal in the second periodic data and transmits it to the robot driving device 100, and when the emergency stop signal is included in the second periodic data, the robot driving device 100 brings the robot 10 to an emergency stop. According to this robot system 1, the second periodic data periodically transmitted to the robot driving device 100 can be used to cause the robot driving device 100 to make an emergency stop 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 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, thereby reducing the number of control cycles executed before the emergency stop signal is transmitted and enabling the robot driving device 100 to be brought to an emergency stop quickly.
[0097] (16) The robot system 1 according to (14), wherein the watchdog unit 116 starts checking the health based on the second periodic data after the communication control unit 111 establishes periodic communication. This can prevent a false recognition that communication is unhealthy in a situation where periodic communication is merely being waited for to be established.
[0098] (17) A robot system 1 includes a first CPU that executes a real-time OS to control a 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 perform 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 operations along the path based on the results of the operations by the second CPU and the GPU. By making it possible to use matrix calculations by the GPU to generate paths 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 described in (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 the image processing results are reflected in the path.
[0100] (19) The robot system 1 described in (18), wherein the GPU performs matrix calculations to check for interference between the robot 10 and surrounding objects based on models of the robot 10 and surrounding objects of the robot 10 as matrix calculations. The robot 10 can be controlled while reflecting the result of the collision between the robot 10 and a surrounding 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, allowing 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 controlling 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 non-periodic communication to non-periodically 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. [Explanation of symbols]
[0104] 1...robot system, 10...robot, 100...robot driving device, 200...computing device, 111...communication control unit, 211...application, 212...API, 213...robot service, 114...processing unit, 115...timestamp assignment unit, 116...watchdog unit, 217...socket, 214...memory
Claims
1. a robot driving 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 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 A plurality of APIs that can be called 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; and The robot driving device a communication control unit that receives a request transmitted by the robot service, and if the received request is the one-off request, transmits a response to the received request by the non-periodic communication, and if the received request is the periodic request, transmits a response to the received request by the periodic communication. A robot system having:
2. The computing device transmitting the periodic request to the communication control unit through 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 the computing device using the same communication resource; giving the periodic communication priority over the aperiodic communication; The robot system according to claim 2 .
4. The communication control unit The queues capable of holding data to be sequentially transmitted to the computing device include one or more queues for periodic communication and one or more queues for aperiodic communication, At a communication timing of the periodic communication, the 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 a processing unit that periodically repeats a process for driving the robot; a timestamp assigning unit that assigns a timestamp to the processing result; and The communication control unit transmitting the processing result to which the timestamp has been assigned by the timestamp assigning unit through the periodic communication; The robot system according to claim 1 .
6. The computing device sequentially transmitting n requests from one or more applications to the robot drive over m sockets, where m is less than n; receiving a response to each of the n requests on the m sockets and returning it to the corresponding request; Further comprising robot services; The robot system according to claim 1 .
7. The robot service For each of the n requests, allocate memory for the response, storing the responses 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 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 a communication control unit that controls the periodic communication and the non-periodic communication between the computing device and the communication unit; and The communication control unit repeatedly transmitting first periodic data to the arithmetic device through the periodic communication regardless of whether or not there is 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 arithmetic device at a period synchronized with a drive period of the robot in the robot drive device; The robot system of claim 9.
11. The computing device Upon receiving data from the robot driving device, a clock announcement is performed to an application executed on the computing device. The robot system of claim 10.
12. The computing device transmitting 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; The robot driving device a watchdog unit that checks the soundness of communication with the arithmetic unit based on the second periodic data; having The robot system of claim 10.
13. The computing device When the robot driving device is to be brought to an emergency stop, an emergency stop signal is included in the second periodic data and transmitted to the robot driving device; The robot driving device If 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 After the communication control unit establishes the periodic communication, the communication control unit starts checking the health based on the second periodic data. The robot system of claim 12.
15. a robot driving 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 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 a communication control unit that controls the periodic communication and the non-periodic communication between the computing device and the communication unit; and The communication control unit repeatedly transmitting first periodic data to the arithmetic device through the periodic communication regardless of whether or not there is information to be transmitted through the periodic communication; performing the periodic communication and transmitting the first periodic data to the arithmetic device at a period synchronized with a drive period of the robot in the robot drive device; The computing device Upon receiving data from the robot driving device, the robot system performs a clock announcement to an application running 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 to periodically communicate data; performing aperiodic communication between the robot driving device and the computing device to aperiodically communicate data; Including, When one of a plurality of APIs included in 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 to periodically communicate data; performing aperiodic communication between the robot driving device and the computing device to aperiodically communicate 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 whether or not there is information to be transmitted through the periodic communication; When the computing device receives data from the robot driving device, the computing device executes a clock announcement to an application executed on the computing device.
Citation Information
Patent Citations
Motion control program, motion control method and motion control device
JP2019220135A