Control system, computing module, robot controller, and control method
The control system with synchronized memories and processors in the robot controller and computing module simplifies the expansion of robot controller functionality, addressing resource allocation challenges for advanced control calculations.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-03-03
- Publication Date
- 2026-03-18
AI Technical Summary
Existing robot controllers face challenges in performing advanced control calculations due to resource allocation difficulties for real-time control, making it difficult to expand their functionality.
A control system comprising a robot controller with a first memory and a computing module with a synchronized second memory, allowing applications to perform calculations related to robot control, and a processor to execute these calculations, along with a memory manager to facilitate data exchange and synchronization.
Enables easy expansion of robot controller functionality by allowing applications to be constructed without considering data exchange protocols, enhancing the robot's control capabilities.
Smart Images

Figure 0007833024000001 
Figure 0007833024000002 
Figure 0007833024000003
Abstract
Description
Technical Field
[0006] ,
[0001] The present disclosure relates to a control system, an arithmetic module, a robot controller, and a control method.
Background Art
[0002] Patent Document 1 discloses a motion control device that installs a non-real-time OS and a real-time OS and motion-controls a controlled device. The motion control device has a shared memory that can be commonly referred to and written by each functional unit on the non-real-time OS side and each functional unit on the real-time OS side.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] The present disclosure provides a system capable of easily expanding the functions of a robot controller.
Means for Solving the Problems
[0005] A control system according to an aspect of the present disclosure includes a robot controller that controls a robot, and an arithmetic module that communicates with the robot controller. The robot controller has a first memory in which state information of the robot is stored. The arithmetic module has a second memory whose content is synchronized with the first memory, and a processor capable of executing an application that performs an arithmetic operation related to the control of the robot based on the content of the second memory.
[0006] A computing module relating to other aspects of this disclosure includes a shared memory for storing information referenced by a robot controller that controls the robot, a processor capable of executing an application that performs calculations related to robot control based on the contents of the shared memory, and a memory manager that writes or reads data to or from the shared memory based on a request from the application.
[0007] A computing module relating to yet another aspect of this disclosure includes a shared memory that stores information written by a robot controller that controls the robot, an application storage unit that stores one or more applications that perform calculations based on the contents of the memory, and a memory manager that notifies the associated application of the contents of the shared memory associated with the application stored in the application storage unit.
[0008] A robot controller relating to yet another aspect of this disclosure includes: a shared memory that stores information written by a computing module capable of executing an application that performs calculations related to robot control based on the robot's state information; a state acquisition unit that writes at least state information to the shared memory; a memory interpreter that generates control commands that can be executed within the robot controller based on data written to the shared memory based on the calculation results by the application; and a motion control unit that controls the robot's motion based on the control commands.
[0009] A control system relating to yet another aspect of this disclosure includes a processor capable of executing an application that performs calculations related to robot control; a memory manager that writes and reads data to and from shared memory based on a request from the application; a command storage unit capable of storing a plurality of local commands; a local interpreter that sequentially reads a plurality of local commands from the command storage unit and generates control commands; a memory interpreter that generates control commands based on data read from shared memory; and a motion control unit that controls the motion of the robot based on the control commands generated by at least one of the memory interpreter and the local interpreter.
[0010] A control system relating to yet another aspect of this disclosure includes a command storage unit capable of storing a plurality of local commands for controlling a robot; an arithmetic module that generates data used for control based on local commands and writes the generated data to a shared memory; and a motion control unit that controls the motion of the robot based on the generated data read from the shared memory and the local commands read from the command storage unit.
[0011] A control method relating to yet another aspect of this disclosure includes: storing robot state information in a first memory using a robot controller that controls the robot; synchronizing the contents of a second memory with the contents of the first memory using a computing module that communicates with the robot controller; and executing an application using the computing module that performs calculations related to robot control based on the contents of the second memory. [Effects of the Invention]
[0012] According to this disclosure, it is possible to provide a system that allows for easy expansion of the robot controller's functionality. [Brief explanation of the drawing]
[0013] [Figure 1]This is a schematic diagram illustrating the configuration of a robot system. [Figure 2] This is a block diagram illustrating the functional configuration of the arithmetic module. [Figure 3] This is a block diagram illustrating the functional configuration of a robot controller. [Figure 4] This is a block diagram illustrating the hardware configuration of a control system. [Figure 5] This flowchart illustrates the memory synchronization procedure in a robot controller. [Figure 6] This flowchart illustrates the memory synchronization procedure in the arithmetic module. [Figure 7] This flowchart illustrates the data writing procedure performed by the memory manager. [Figure 8] This flowchart illustrates the procedure for reading data using a memory manager. [Figure 9] This flowchart illustrates the procedure by which an application generates an action path in response to a call from a robot controller. [Figure 10] This flowchart illustrates the procedure for reading multiple local commands, including calls to an application that generates paths. [Figure 11] This flowchart illustrates the procedure for reading command data generated by an application. [Figure 12] This flowchart illustrates the procedure for executing control based on control commands. [Figure 13] This is a flowchart illustrating the command selection procedure. [Figure 14] This flowchart illustrates the procedure by which an application performs correction calculations in response to a call from a robot controller. [Figure 15] This flowchart illustrates the procedure for reading multiple local commands, including calls to an application that performs correction calculations. [Figure 16]It is a flowchart illustrating the procedure for reading correction data generated by an application. [Figure 17] It is a flowchart illustrating the procedure for executing control based on a control command and correction data.
Mode for Carrying Out the Invention
[0014] Hereinafter, embodiments will be described in detail with reference to the drawings. In the description, elements having the same element or the same function are denoted by the same reference numerals, and duplicate descriptions are omitted.
[0015] 〔Robot System〕 The robot system 1 shown in FIG. 1 is a system for causing the robot 2 to execute various operations such as production of a workpiece. The robot system 1 may be a system for causing the robot 2 to execute operations in a field other than an industrial field, such as, for example, the biomedical field. As shown in FIG. 1, the robot system 1 includes a robot 2 and a control system 3.
[0016] The robot 2 is a six-axis vertical articulated robot and has a base 11, a swivel unit 12, a first arm 13, a second arm 14, a third arm 17, a tip 18, and actuators 41, 42, 43, 44, 45, 46. The base 11 is installed on a floor surface, a wall surface, a ceiling surface, or an automated guided vehicle or the like. The swivel unit 12 is provided on the base 11 so as to swivel around a vertical axis 21. The first arm 13 is connected to the swivel unit 12 so as to swing around an axis 22 that intersects (for example, is orthogonal to) the axis 21, and extends in a direction away from the axis 22. The intersection includes a case where the relationship is a twisted relationship like a so-called three-dimensional intersection. The same applies hereinafter.
[0017] The second arm 14 is connected to the tip of the first arm 13 so as to swing about an axis 23 substantially parallel to the axis 22, and extends away from the axis 23. The second arm 14 includes an arm base 15 and an arm end 16. The arm base 15 is connected to the tip of the first arm 13. The arm end 16 is connected to the tip of the arm base 15 so as to pivot about an axis 24 intersecting (e.g., perpendicular to) the axis 23, and extends along the axis 24 away from the arm base 15.
[0018] The third arm 17 is connected to the tip of the arm end 16 so as to swing about an axis 25 that intersects (for example, is perpendicular to) the axis 24. The tip 18 is connected to the tip of the third arm 17 so as to pivot about an axis 26 that intersects (for example, is perpendicular to) the axis 25.
[0019] Thus, the robot 2 has a joint 31 connecting the base 11 and the swivel section 12, a joint 32 connecting the swivel section 12 and the first arm 13, a joint 33 connecting the first arm 13 and the second arm 14, a joint 34 in the second arm 14 connecting the arm base 15 and the arm end 16, a joint 35 connecting the arm end 16 and the third arm 17, and a joint 36 connecting the third arm 17 and the tip 18.
[0020] Actuators 41, 42, 43, 44, 45, and 46 include, for example, electric motors and reduction gears, and drive joints 31, 32, 33, 34, 35, and 36, respectively. For example, actuator 41 rotates the pivot section 12 around axis 21, actuator 42 swings the first arm 13 around axis 22, actuator 43 swings the second arm 14 around axis 23, actuator 44 rotates the arm end 16 around axis 24, actuator 45 swings the third arm 17 around axis 25, and actuator 46 rotates the tip 18 around axis 26.
[0021] The specific configuration of robot 2 can be changed as appropriate. For example, robot 2 may be a 7-axis redundant robot, which is a 6-axis vertical articulated robot with an additional joint added, or it may be a so-called scalar-type articulated robot.
[0022] Control system 3 controls robot 2. The configuration of control system 3 is illustrated in detail below.
[0023] [Control System] The control system 3 includes a robot controller 100 for controlling the robot 2. For example, the robot controller 100 generates drive power for controlling the robot 2 and supplies it to actuators 41, 42, 43, 44, 45, and 46. An example of controlling the robot 2 is to operate the robot 2 based on a predetermined operation program.
[0024] The motion program includes a series of motion commands. Each of the motion commands specifies at least the target position of the tip 18 and the target velocity of the tip 18 to the target position. The target position is information that defines the coordinates of the tip 18 in the robot coordinate system and the orientation of the tip 18 around each coordinate axis. The robot coordinate system is a three-dimensional coordinate system fixed to the base 11. The target position may be information that directly defines the coordinates and orientation of the tip 18, or it may be information that indirectly defines the coordinates and orientation of the tip 18. Specific examples of information that indirectly defines the coordinates and orientation of the tip 18 include the rotation angles of joints 31, 32, 33, 34, 35, and 36.
[0025] The usability of the robot controller 100 would be greatly improved if it could perform more advanced control calculations during the operation of robot 2, such as automatically generating multiple motion commands to enable robot 2 to perform actions adapted to the surrounding environment (for example, actions to avoid collisions with surrounding objects). However, since real-time control is required for robot 2, it is difficult to allocate the resources of the robot controller 100 to control calculations.
[0026] In contrast, the control system 3 further includes a calculation module 200 that communicates with the robot controller 100. The robot controller 100 has a first memory 110 in which state information of the robot 2 is stored, and the calculation module 200 has a second memory 210 whose contents are synchronized with the first memory 110, and a processor 201 capable of executing an application 241 that performs calculations related to the control of the robot 2 based on the contents of the second memory 210.
[0027] Since the first memory 110 and the second memory 210 are synchronized, an application 241 related to the control of the robot 2 can be created by designating the second memory 210 as the recipient of data writing or reading. Therefore, the application 241 can be easily constructed without considering special rules such as data exchange protocols between the robot controller 100 and the computing module 200. The constructed application 241 can assist or lead the control of the robot 2 by the robot controller 100. Therefore, the functionality of the robot controller 100 can be easily expanded.
[0028] The robot controller 100 and the computing module 200 may be housed in separate enclosures or in the same enclosure. Examples of communication between the robot controller 100 and the computing module 200 include serial communication, parallel communication, or bus communication.
[0029] The communication between the robot controller 100 and the computing module 200 may be network communication. Network communication is communication performed using a communication protocol on a network communication line. The communication protocol on a network communication line includes identifying the recipient's network address each time data is transmitted.
[0030] The network communication may be industrial network communication that guarantees time synchronization, general-purpose local area network (LAN) communication, or wide area network communication. The robot controller 100 and the computing module 200 may be configured to communicate wirelessly using wireless LAN or mobile communication (e.g., 5G communication).
[0031] The first memory 110 is composed of one or more memory devices 192 or one or more storage devices 193, etc., as described later in the hardware configuration. The second memory 210 is composed of one or more memory devices 292 or one or more storage devices 293, etc., as described later. The first memory 110 may have a first write area 111 for writing data and a second read area 112 for reading data. The second memory 210 may have a first read area 211 for reading data and a second write area 212 for writing data.
[0032] The contents of the first read area 211 are synchronized with the contents of the first write area 111. Therefore, the contents written to the first write area 111 by the robot controller 100 can be read from the first read area 211 by the arithmetic module 200. The contents of the second read area 112 are: Second writing area 212 The contents are synchronized. Therefore, the contents written to the second write area 212 in the calculation module 200 can be read from the second read area 112 in the robot controller 100.
[0033] The processor 201 is composed of one or more processing devices 291, etc., as described later. The application 241 is a program pre-built to perform calculations related to the control of the robot 2. Examples of calculations related to control include calculations that generate control data based on the state information of the robot 2. Examples of the state information of the robot 2 include the position of the tip 18, the posture of the tip 18, the movement speed of the tip 18, the rotation angles of the actuators 41, 42, 43, 44, 45, 46, the rotation speeds of the actuators 41, 42, 43, 44, 45, 46, or the torque generated by the actuators 41, 42, 43, 44, 45, 46. The control data may be, for example, text data representing the above-mentioned operation commands, or numerical data such as the target position and target speed that constitute the operation commands.
[0034] For example, when executing an application 241 that generates control data to operate robot 2, the processor 201 may write the control data to the second write area 212. This allows the robot controller 100 to read the control data from the second read area 112 and operate robot 2 based on the read control data.
[0035] The calculations involved in controlling robot 2 are not necessarily limited to calculations that generate data to operate robot 2. Calculations that evaluate the actions of robot 2 based on its state information are also included in the calculations involved in controlling robot 2.
[0036] To enable the robot 2 to operate based on control data, the robot controller 100 may further include a processor 101. The processor 101 is composed of one or more processing devices 191, etc., as described later. The processor 101 performs calculations that lead the control of the robot 2 based on the control data in the robot controller 100. For example, the processor 101 calculates the target rotation angles of joints 31, 32, 33, 34, 35, and 36 so that the robot 2 can perform actions based on the control data, and outputs the rotation angles of joints 31, 32, 33, 34, 35, and 36, and the drive power to make them follow the target rotation angles, to each of the actuators 41, 42, 43, 44, 45, and 46.
[0037] The processor 101 may be further configured to acquire state information of the robot 2 and write it to the first write area 111. This allows the arithmetic module 200 to read the state information of the robot 2 from the first read area 211 and use the read state information of the robot 2 for calculations by the application 241.
[0038] Figure 2 is a block diagram illustrating the functional configuration of the robot controller 100 and the computing module 200. As shown in Figure 2, the robot controller 100 has a first synchronization unit 121 and a first transmission unit 128 as functional components (hereinafter referred to as "functional blocks"). The computing module 200 has a second synchronization unit 221, a second transmission unit 228, an application storage unit 240, an application execution unit 222, and a memory manager 223 as functional blocks. The first synchronization unit 121 synchronizes (e.g., matches) the contents of the first memory 110 with the contents of the second memory 210 at regular intervals via network communication. The second synchronization unit 221 synchronizes (e.g., matches) the contents of the second memory 210 with the contents of the first memory 110 at regular intervals via network communication.
[0039] For example, the first transmitter 128 transmits the contents of the first write area 111 to the arithmetic module 200 at regular intervals via network communication. The second synchronization unit 221 receives the contents of the first write area 111 from the first transmitter 128 at regular intervals and synchronizes the contents of the first read area 211 with the received contents. The second transmitter 228 transmits the contents of the second write area 212 to the robot controller 100 at regular intervals via network communication. The first synchronization unit 121 receives the contents of the second write area 212 from the second transmitter 228 at regular intervals and synchronizes the contents of the second read area 112 with the received contents. Note that even if there is some variation in the synchronization period of the first memory 110 and the second memory 210 due to communication jitter, etc., it is included in the regular-period synchronization as long as the regularity is generally maintained.
[0040] The first memory 110 and the second memory 210 are mutually updated at regular intervals via network communication. Therefore, application 241 can be easily constructed without needing to be aware of network communication protocols.
[0041] The application storage unit 240 stores one or more applications 241. The memory manager 223 writes and reads data to the second memory 210 based on requests from the applications 241. For example, the memory manager 223 has an API 230, and writes or reads data to the second memory 210 based on requests received by the API 230.
[0042] API 230 (Application Programming Interface) is an interface that makes pre-defined software available to external applications. It accepts requests in a predetermined format and passes the response to the request to the application that made the request.
[0043] By requesting data to be written to or read from the second memory 210 using API 230 in a predetermined format, data can be easily read or written without needing to understand the configuration of the second memory 210. Furthermore, by wrapping the second memory 210 with API 230 and restricting direct access to it, unauthorized data writing is prevented.
[0044] For example, API 230 has a motion API 231 that corresponds to the control of robot 2. To correspond to the control of robot 2 means, for example, to handle data used to control robot 2. For example, the motion API 231 receives a request from application 241 to write the aforementioned control data to the second write area 212, and passes a response to application 241 indicating that the control data has been read from the second read area 112, or the result of executing control based on the control data.
[0045] The motion API 231 may receive a request from application 241 to write control variables used to control robot 2 to the second write area 212, and may pass a response to application 241 indicating that the control variables have been read from the second read area 112, or the result of the control execution based on the control variables.
[0046] The motion API 231 may receive a request from application 241 to write execution commands for an action program stored in the robot controller 100 to the second write area 212, and may pass a response to application 241 indicating that the execution commands have been read from the second read area 112, or the result of executing the action program based on the execution commands.
[0047] The motion program within the robot controller 100 may be subdivided into multiple job programs based on the type of work or the type of workpiece. In this case, the motion API 231 may accept requests to write execution commands for each job program to the second write area 212.
[0048] When the memory manager 223 receives a request from the application 241 via the motion API 231, it writes the data corresponding to the request to the second memory 210. For example, the memory manager 223 writes control data, etc., to the second write area 212. As will be described later, in the robot controller 100, the control data, etc., is read from the second read area 112, and the response corresponding to the control data, etc., is written to the first write area 111. The memory manager 223 reads the response corresponding to the control data, etc., from the first read area 211 and passes it to the application 241 that made the request to write the control data, etc.
[0049] In this way, the functions extended by application 241 can be easily reflected in the control of robot 2 via motion API 231. Furthermore, since the second memory 210 is wrapped by motion API 231, security against errors, leaks of confidential information, etc., can be improved.
[0050] API230 may include, in addition to motion API231, operation API232, monitoring API233, etc. Operation API232 corresponds to the operation of the robot controller 100. Corresponding to the operation of the robot controller 100 means, for example, handling data used to operate the robot controller 100. For example, operation API232 receives a request from application 241 to write a servo-on command to the second write area 212 and passes a response to application 241 indicating that the servo-on command has been read from the second read area 112, or that the servo-on operation has been completed. The servo-on command is a command to start supplying drive power (including power to keep it stationary) to actuators 41, 42, 43, 44, 45, and 46.
[0051] The operation API 232 may receive a request from application 241 to write an alarm reset command to the second write area 212, and pass a response to application 241 indicating that the alarm reset command has been read from the second read area 112, or that the alarm has been reset.
[0052] When the memory manager 223 receives a request from the application 241 via the control API 232, it writes the data corresponding to the request to the second memory 210. For example, the memory manager 223 writes a servo-on command to the second write area 212. In the robot controller 100, the servo-on command is read from the second read area 112, and the response corresponding to the servo-on command is written to the first write area 111. The memory manager 223 reads the response corresponding to the servo-on command from the first read area 211 and passes it to the application 241 that made the request to write the servo-on command.
[0053] The monitoring API 233 is responsible for monitoring the contents of the first read area 211. For example, the monitoring API 233 receives a data read request, reads the data corresponding to the request from the first read area 211, and passes a response containing the read data to the application 241.
[0054] When the memory manager 223 receives a request from application 241 via the monitoring API 233, it reads the data corresponding to the request from the first read area 211 and passes a response containing the read data to application 241.
[0055] The memory manager 223 may notify the associated application 241 of the contents of the second memory 210 associated with the application 241 stored in the application storage unit 240. For example, when the memory manager 223 reads data associated with the application 241 from the second memory 210, it may pass a response containing the read data to the associated application 241. A specific example of data associated with the application 241 is call data indicating whether or not processing should be started for the application 241.
[0056] The memory manager 223 may start the associated application 241 when it reads the startup command associated with the application 241 from the second memory 210. Starting the associated application 241 is also included in notifying the associated application 241. For example, when the memory manager 223 receives a request from the application 241 via the monitoring API 233, it starts monitoring the area in the second memory 210 where the startup command is stored and passes a response to the application 241 indicating the start of monitoring. In response, the application 241 stops. Subsequently, when the memory manager 223 reads the startup command from the second memory 210, it starts the application 241 associated with the startup command.
[0057] In this way, notifications can be sent from the robot controller 100 to the application 241 via the first memory 110 and the second memory 210. This makes it easy to build an application 241 that operates based on notifications from the robot controller 100.
[0058] The robot controller 100 may further include a state acquisition unit 122. The state acquisition unit 122 writes at least the state information of the robot 2 to the first memory 110. For example, the state acquisition unit 122 writes the state information of the robot 2 to the first write area 111. The memory manager 223 retrieves state information from the second memory 210 in response to a request from the application 241 and passes it to the application 241. For example, when the memory manager 223 receives a request from the application 241 via the monitoring API 233, it reads the state information of the robot 2 from the first read area 211 and passes a response containing the read state information to the application 241.
[0059] The state information of robot 2, which is necessary for building application 241, is continuously updated in the second memory 210. Therefore, by simply incorporating the reading of state information from the second memory 210 into application 241, application 241 based on the state information of robot 2 can be easily built.
[0060] The state collection unit 122 writes state information to the first write area 111 of the first memory 110, and the memory manager 223 retrieves state information from the first read area 211 of the second memory 210 corresponding to the first write area 111 and passes it to the application 241. The application 241 may then write data based on its request to a second write area 212 of the second memory 210, which is different from the first read area 211. Since the application 241 writes data to a second write area 212 that is different from the first read area 211 used to retrieve state information, the state information stored in the first read area 211 can always be synchronized with the state information written by the state collection unit 122. This makes it possible to provide state information to the application 241 at any time.
[0061] The memory manager 223 may queue multiple requests from one or more applications 241 in the request storage unit 225, sequentially dispense the multiple requests from the request storage unit 225, and write the data corresponding to the dispensed requests to the second memory 210. "Queueing" means storing multiple requests in the request storage unit 225 in the order they are received. The memory manager 223 dispenses multiple requests from the request storage unit 225 in the order they are received.
[0062] Since the memory manager 223 queues requests, application 241 can be configured to make requests as they occur without having to consider risks such as accidentally overwriting preceding requests. Even when two or more applications 241 may be running simultaneously, each application 241 can be configured to make requests as they occur without having to consider the request status of other applications 241. Therefore, the cost of building applications 241 can be further reduced.
[0063] When the memory manager 223 reads a response from the second memory 210, it may issue the next request corresponding to the response from the request storage unit 225. This allows for a balance between the flexibility of the application 241 and the real-time capabilities of the robot controller 100.
[0064] If the request is for reading the state information of robot 2, the memory manager 223 may read the state information from the second memory 210 and pass it to the application 241 that made the request, without queuing the request. By excluding requests for reading state information, which require immediate access, from queuing, delays in obtaining the state information can be suppressed.
[0065] [Robot Controller] As shown in Figure 3, the robot controller 100 further comprises a memory interpreter 123 and a robot control unit 130. The memory interpreter 123 generates control commands that can be executed internally by the robot controller 100 based on control data read from the first memory 110. The robot control unit 130 executes processing corresponding to the control commands. The memory interpreter 123 allows the robot controller 100's function of controlling the robot 2 with control commands to be easily extended by the calculation results of the calculation module 200.
[0066] The control command may be any command in any form, as long as it is executable within the robot controller 100. Executable within the robot controller 100 means that the robot controller 100 can interpret the command's content and execute the corresponding process. For example, the control command may be text data representing the aforementioned operation command, or it may be numerical data obtained by interpreting the aforementioned operation command.
[0067] The following is an example of text representing an action command. Example 1) MoveL(···) Example 2) MoveS(...) Example 3) MoveJ(...) In each example, the arguments in parentheses represent the target position and target velocity. "Move" means to move to the target position at the target velocity. The alphabet following "Move" indicates the interpolation method from the starting position to the target position. For example, "L" represents linear interpolation, and "S" represents S-shaped interpolation. "J" means to linearly interpolate between the angles of joints 31, 32, 33, 34, 35, and 36 before the start of movement and the angles of joints 31, 32, 33, 34, 35, and 36 at the target position. The arguments in MoveJ may also be the target rotation angle and target rotation velocity for each of joints 31, 32, 33, 34, 35, and 36.
[0068] The robot control unit 130 controls the motion of the robot 2 based on the control command generated by the memory interpreter 123 when the memory interpreter 123 generates a control command corresponding to the motion command. For example, the robot control unit 130 has a motion control unit 131 and a command buffer 132. The command buffer 132 temporarily stores the control commands generated by the memory interpreter 123 in chronological order. The motion control unit 131, Command buffer 132 The motion control unit 131 controls the motion of robot 2 based on one or more control commands stored in its memory. For example, the motion control unit 131 repeats control processing based on one or more control commands in a fixed control cycle.
[0069] The control process includes calculating target rotation angles for joints 31, 32, 33, 34, 35, and 36 so that the tip 18 moves at a target speed along an action path represented by one or more control commands, and making the rotation angles of joints 31, 32, 33, 34, 35, and 36 follow the target rotation angles.
[0070] The robot controller 100 may be configured to perform control of the robot 2 based on an operation program pre-generated inside the robot controller 100, in addition to controlling the robot 2 based on control commands generated by the memory interpreter 123.
[0071] For example, the robot controller 100 may further include a command storage unit 124 and a local interpreter 125. The command storage unit 124 stores a pre-generated operation program. As described above, the operation program includes multiple operation commands. Hereinafter, the operation commands of the operation program stored in the command storage unit 124 will be referred to as "local commands".
[0072] The local interpreter 125 sequentially reads multiple local commands from the command storage unit 124 and generates control commands. The command buffer 132 temporarily stores the control commands generated by at least one of the memory interpreter 123 and the local interpreter 125 in chronological order. The motion control unit 131 controls the motion of the robot 2 based on the control commands generated by at least one of the memory interpreter 123 and the local interpreter 125.
[0073] This configuration allows for both operating the robot 2 based on multiple local commands and operating the robot 2 based on the calculation results of the calculation module 200. Therefore, the robot controller 100 can be equipped with two modes: a local control mode in which the motion control unit 131 controls the robot 2's motion based on control commands generated by the local interpreter 125, and an application control mode in which the motion control unit 131 controls the robot 2's motion based on control commands generated by the memory interpreter 123 based on the calculation results of the application 241. Furthermore, it is also possible to operate the robot 2 based on a combination of multiple local commands and the calculation results of the calculation module 200. Thus, the function of controlling the robot 2 based on local commands can be easily extended using the calculation results of the calculation module 200.
[0074] Furthermore, both local commands and the calculation results of the calculation module 200 are converted into control commands of the same format. Therefore, the motion control unit 131 and the command buffer 132 can be shared when operating the robot 2 based on multiple local commands and when operating the robot 2 based on the calculation results of the calculation module 200. Consequently, the configuration of the robot controller 100 can be simplified.
[0075] A control command may also be a command that indicates the assignment of a value to the control variable described above. In this case, the robot control unit 130 assigns a value to the control variable based on the control command. A control command may also be a command that indicates the execution command of an operation program or job program stored in the command storage unit 124. In this case, the robot control unit 130 causes the local interpreter 125 to generate a control command based on the operation program or job program corresponding to the execution command.
[0076] The robot controller 100 may have a function to dynamically generate or modify at least a part of the operation path (for example, at least a part of the operation program) based on surrounding environment information, etc. Such a function is called a "local generation function". The control command may also be a command that indicates calling the local generation function. In this case, the robot control unit 130 calls the local generation function of the robot controller 100 based on the control command.
[0077] The program generated by the local generation function is read by, for example, the local interpreter 125 and executed by the motion control unit 131. The local generation function may also be called in an operation program stored in the command storage unit 124. In this case as well, the program generated by the local generation function is read by the local interpreter 125 and executed by the motion control unit 131.
[0078] The control command may also be a command representing the servo-on command described above. In this case, the robot control unit 130 starts supplying drive power to actuators 41, 42, 43, 44, 45, and 46 based on the control command. The control command may also be a command representing the alarm reset command described above. In this case, the robot control unit 130 resets the alarm that occurred in the robot controller 100.
[0079] The robot controller 100 may further include a command selection unit 126. The command selection unit 126 prohibits the input of control commands from the memory interpreter 123 to the motion control unit 131 during the period when the robot 2 is operating based on control commands generated by the local interpreter 125, and prohibits the input of control commands from the local interpreter 125 to the motion control unit 131 during the period when the robot 2 is operating based on control commands generated by the memory interpreter 123.
[0080] The local control mode and application control mode described above can be realized by coding both the operation program stored in the command storage unit 124 and the application 241. The local control mode and application control mode can be realized by an operation program that includes, in this order, a local command to call the application 241 and a local command to wait for the completion of the execution of the application 241. For example, the local control mode may transition to the application control mode midway through, and the local control mode will resume after the completion of the application control mode. The local control mode and application control mode can also be realized by an application 241 that includes, in this order, a request to write the execution command to the second write area 212 and a wait for the completion notification of the operation program corresponding to the execution command. For example, the application control mode may transition to the local control mode midway through, and the application control mode will resume after the completion of the local control mode.
[0081] However, due to coding errors or other reasons, control commands generated by the memory interpreter 123 and control commands generated by the local interpreter 125 may unexpectedly become mixed, potentially causing malfunctions in the robot 2. The command selection unit 126 prevents the unexpected mixing of control commands from the local interpreter 125 and control commands from the memory interpreter 123, which can lead to malfunctions in the robot 2.
[0082] Application 241 generates data used for control based on local commands and requests the memory manager 223 to write the generated data. The motion control unit 131 may then control the motion of the robot 2 based on the generated data read from the first memory 110 and the local commands read from the command storage unit 124. By combining the resources of the robot controller 100 and the resources of the calculation module 200, more advanced control can be performed.
[0083] For example, application 241 may generate correction data for the robot 2's movement based on environmental information acquired by a camera or the like. In this case, the memory interpreter 123 generates a correction command based on the correction data as an example of a control command. The correction command represents, for example, substituting the correction data into a correction variable that represents the amount of correction for a control command based on a local command. The robot control unit 130 substitutes the correction data into the correction variable based on the correction command. The motion control unit 131 controls the robot 2's motion based on the control command generated by the local interpreter 125 and the correction variable. The memory interpreter 123 may generate a control command that takes the correction variable into account based on the local command and the correction variable.
[0084] The robot controller 100 may further include a response generation unit 127. The response generation unit 127 generates a response corresponding to the data read by the memory interpreter 123 and writes it to the first memory 110. The memory manager 223 reads the response from the second memory 210 and passes it to the application 241 that requested the writing of the read data. By using the response as a basis, it is possible to easily generate an application 241 that proceeds with calculations according to the execution status of the processing based on the request.
[0085] [Hardware configuration] Figure 4 is a block diagram illustrating the hardware configuration of the control system 3. As shown in Figure 4, the robot controller 100 has a circuit 190. The circuit 190 has one or more processing devices 191, one or more memory devices 192, one or more storage devices 193, a communication port 194, and a driver circuit 195. One or more storage devices 193 are non-volatile storage media and store a program for configuring the robot controller 100 with the processor 101 and the first memory 110 described above. One or more storage devices 193 may also store a program for further configuring the robot controller 100 with each of the functional blocks described above. Each of the one or more storage devices 193 may be an internal storage medium such as flash memory or a hard disk, or a portable storage medium such as a USB memory or optical disc.
[0086] One or more memory devices 192 temporarily store programs loaded from one or more storage devices 193. Each of the one or more memory devices 192 may be a random access memory or the like. One or more processing devices 191 function as a processor 101 by executing programs loaded into one or more memory devices 192, and configure a first memory 110 in one or more memory devices 192 or one or more storage devices 193. One or more processing devices 191 may further configure each of the functional blocks described above. One or more processing devices 191 appropriately stores the calculation results in one or more memory devices 192.
[0087] The communication port 194 communicates with the computing module 200 based on requests from one or more processing devices 191. The driver circuit 195 supplies drive power to the robot 2 (actuators 41, 42, 43, 44, 45, 46) based on requests from one or more processing devices 191.
[0088] The arithmetic module 200 has a circuit 290. The circuit 290 has one or more processing devices 291, one or more memory devices 292, one or more storage devices 293, a communication port 294, and a user interface 295. One or more storage devices 293 are non-volatile storage media and store a program for configuring the arithmetic module 200 with the processor 201 and second memory 210 described above. One or more storage devices 293 may also store a program for further configuring the arithmetic module 200 with each of the functional blocks described above. Each of the one or more storage devices 293 may be an internal storage medium such as flash memory or a hard disk, or a portable storage medium such as a USB memory or optical disc.
[0089] One or more memory devices 292 temporarily store programs loaded from one or more storage devices 293. One or more memory devices 292 may be random access memory or the like. One or more processing devices 291 function as a processor 201 by executing programs loaded into one or more memory devices 292, and configure a second memory 210 in one or more memory devices 292 or one or more storage devices 293. One or more processing devices 291 may further configure each of the functional blocks described above. One or more processing devices 291 appropriately stores the calculation results in one or more memory devices 292.
[0090] Communication port 294 communicates with the robot controller 100 based on requests from one or more processing devices 291. User interface 295 communicates with the user based on requests from one or more processing devices 291. For example, user interface 295 includes a display device and an input device. Examples of display devices include liquid crystal monitors or organic EL (Electro-Luminescence) monitors. Examples of input devices include keyboards, mice, or keypads. The input device may be integrated with the display device as a touch panel.
[0091] The hardware configuration described above is merely an example and can be modified as needed.
[0092] [Control Procedure] As an example of a control method, the control procedure executed by the control system 3 is illustrated. This procedure includes storing the state information of the robot 2 in the first memory 110 by the robot controller 100, synchronizing the contents of the second memory 210 with the contents of the first memory 110 by the calculation module 200, and executing an application 241 that performs calculations related to the control of the robot 2 based on the contents of the second memory 210 by the calculation module 200. Below, this procedure is illustrated in detail, divided into the memory synchronization procedure, the data writing procedure by the calculation module 200, the data reading procedure by the calculation module 200, and the robot 2 control procedure. Regarding the control procedure, examples of a control procedure that executes local control and application control serially, and a control procedure that executes local control and application control in parallel are illustrated.
[0093] (Memory synchronization procedure) Figure 5 is a flowchart illustrating the memory synchronization procedure in the robot controller 100. As shown in Figure 5, the robot controller 100 executes steps S01, S02, S03, and S04. In step S01, the first transmitter 128 transmits the contents of the first write area 111 to the arithmetic module 200. In step S02, the first synchronization unit 121 waits for the contents of the second write area 212 to be received from the second transmitter 228. In step S03, the first synchronization unit 121 synchronizes the contents of the second read area 112 with the contents received from the second transmitter 228.
[0094] In step S04, the first transmission unit 128 checks whether a predetermined synchronization cycle has elapsed. If it is determined in step S04 that the synchronization cycle has not elapsed, the robot controller 100 returns to step S01. The robot controller 100 repeats the above process.
[0095] Figure 6 is a flowchart illustrating the memory synchronization procedure in the arithmetic module 200. As shown in Figure 6, the arithmetic module 200 executes steps S11, S12, and S13. In step S11, the second synchronization unit 221 waits for the contents of the first write area 111 to be received from the first transmission unit 128. In step S12, the second synchronization unit 221 synchronizes the contents of the first read area 211 with the contents received from the first transmission unit 128. In step S13, the second transmission unit 228 transmits the contents of the second write area 212 to the robot controller 100. After that, the arithmetic module 200 returns to step S11. The arithmetic module 200 repeats the above process.
[0096] Through the above procedure, in the robot controller 100, the contents of the first write area 111 are repeatedly transmitted in a synchronous cycle, and the contents of the second read area 112 are repeatedly synchronized with the contents of the second write area 212. In the arithmetic module 200, the contents of the second write area 212 are repeatedly transmitted in a synchronous cycle, and the contents of the first read area 211 are repeatedly synchronized with the contents of the first write area 111.
[0097] (Data writing procedure) Figure 7 is a flowchart illustrating the data writing procedure by the memory manager 223. As shown in Figure 7, the arithmetic module 200 executes step S21. In step S21, the memory manager 223 checks whether application 241 has made a data writing request. If it is determined in step S21 that there is a data writing request, the arithmetic module 200 executes step S22. In step S22, the memory manager 223 queues the data writing request in the request storage unit 225.
[0098] If the arithmetic module 200 determines in step S21 that no data write request has been made, it executes step S23. In step S23, the memory manager 223 checks whether a response corresponding to the data read from the second read area 112 exists in the first read area 211. If the arithmetic module 200 determines in step S23 that there is no response, it returns to step S21. If the arithmetic module 200 determines that there is a response, it executes steps S24, S25, and S26. In step S24, the memory manager 223 passes the response to the application 241 that made the request to write the read data. In step S25, the memory manager 223 issues the next request corresponding to the response from the request storage unit 225. In step S26, the memory manager 223 writes the data corresponding to the issued request to the second write area 212. After executing step S22 or step S26, the arithmetic module 200 returns to step S21. The arithmetic module 200 repeats the above process.
[0099] (Data retrieval procedure) Figure 8 is a flowchart illustrating the data reading procedure. As shown in Figure 8, the arithmetic module 200 executes steps S31, S32, and S33. In step S31, the memory manager 223 waits for application 241 to make a data reading request. In step S32, the memory manager 223 reads the data corresponding to the request from the first read area 211. In step S33, the memory manager 223 passes a response containing the read data to application 241. After that, the arithmetic module 200 returns processing to step S31. The arithmetic module 200 repeats the above process.
[0100] (Control procedure for serially executing local control and application control) "Local control" refers to control based on control commands generated by the local interpreter 125, while "application control" refers to control based on control commands generated by the memory interpreter 123. The following example shows a case where application control is executed after local control is interrupted, and local control is resumed after application control is executed. As an example of application control, we will show control that operates robot 2 using an operation path based on surrounding environment information.
[0101] Figure 9 is a flowchart illustrating the procedure by which application 241 generates an operation path in response to a call from robot controller 100. As shown in Figure 9, the arithmetic module 200 that executes application 241 performs steps S41, S42, and S43. In step S41, application 241 requests the reading of the call data described above via the monitoring API 233. In step S42, application 241 waits for a response to the request to be passed from memory manager 223. In step S43, application 241 checks whether or not processing has been instructed to start (whether or not a call has been made) based on the call data. If it is determined in step S43 that processing has not been instructed to start, the arithmetic module 200 returns processing to step S41. Thereafter, the reading of call data is repeated until it is determined that processing has been instructed to start based on the call data.
[0102] The call data instructing the start of processing includes information specifying the start and end points of the operation path. The start point includes the starting position and starting orientation of the tip portion 18. The end point includes the completion position and completion orientation of the tip portion 18.
[0103] If it is determined in step S43 that processing has been instructed to begin, the calculation module 200 executes steps S44, S45, and S46. In step S44, application 241 generates a motion path from the start point to the end point based on pre-stored surrounding environment information. For example, the surrounding environment information includes a three-dimensional model of robot 2 and three-dimensional models of objects surrounding robot 2. Based on the surrounding environment information, application 241 generates a motion path so that robot 2 does not interfere with (collide with) surrounding objects. For example, application 241 generates one or more control data corresponding to one or more waypoints, including the end point. Each of the one or more control data includes a target position and a target velocity corresponding to the waypoint.
[0104] In step S45, application 241 uses the motion API 231 to request the writing of control data that has been generated but has not yet been written to the second write area 212. In step S46, application 241 waits for a response to the request to be passed from the memory manager 223. In step S47, application 241 checks if there is any further control data that has not yet been written to the second write area 212. If it is determined in step S47 that there is further control data, the arithmetic module 200 returns processing to step S45. Thereafter, requests to write control data are repeated until all control data has been written.
[0105] In step S47, if the arithmetic module 200 determines that all control data has been written to the second write area 212, it executes steps S51 and S52. In step S51, application 241 requests the writing of an execution completion notification via motion API 231. In step S52, application 241 waits for a response to the request to be passed from memory manager 223. This completes the path generation procedure by application 241.
[0106] Figure 10 is a flowchart illustrating the procedure for reading multiple local commands, including a call to application 241 that performs path generation. As shown in Figure 10, the robot controller 100 executes steps S61, S62, and S63. In step S61, the local interpreter 125 waits for a free space to become available in the command buffer 132. In step S62, the local interpreter 125 reads a local command from the command storage unit 124. In step S63, the local interpreter 125 checks whether the local command is a command that calls application 241. Hereinafter, a command that calls application 241 will be referred to as a "call command".
[0107] In step S63, if the robot controller 100 determines that the local command is not a call command, it executes steps S64 and S65. In step S64, the local interpreter 125 generates a control command based on the read local command and stores it in the command buffer 132. In step S65, the local interpreter 125 checks the command storage unit 124 to see if there is a next local command. In step S65, if the robot controller 100 determines that there is a next local command, it returns to step S61.
[0108] In step S62, if the robot controller 100 determines that the local command is a call command, it executes steps S66 and S67. In step S66, the robot control unit 130 writes the call data for application 241 to the first write area 111. In step S67, the local interpreter 125 starts waiting for notification that application 241 has finished executing.
[0109] Figure 11 is a flowchart illustrating the procedure for reading control data generated by application 241. As shown in Figure 11, the robot controller 100 then executes steps S71 and S72. In step S71, the memory interpreter 123 waits for a free space to become available in the command buffer 132. In step S72, the memory interpreter 123 waits for the control data written by application 241 to be stored in the second read area 112.
[0110] Next, the robot controller 100 executes steps S73, S74, and S75. In step S73, the memory interpreter 123 reads control data from the second read area 112. In step S74, the memory interpreter 123 generates a control command based on the control data and stores it in the command buffer 132. In step S75, the response generation unit 127 generates a response corresponding to the control data and stores it in the first write area 111.
[0111] Next, the robot controller 100 executes step S76. In step S76, the memory interpreter 123 checks whether the execution completion notification written by the application 241 is stored in the second read area 112. If it is determined in step S76 that the execution completion notification is not stored in the second read area 112, the robot controller 100 returns to step S71.
[0112] If the robot controller 100 determines in step S76 that the execution completion notification is stored in the second read area 112, it executes step S77. In step S77, the robot control unit 130 instructs the local interpreter 125 to release the waiting for the execution completion notification of application 241. This allows the local interpreter 125 to resume reading local commands. After that, the robot controller 100 returns to step S61 in Figure 10. Thereafter, the local interpreter 125 continues to read local commands until it is determined in step S65 that there are no further local commands. If it is determined in step S65 that there are no further local commands, the robot controller 100 completes reading local commands.
[0113] Figure 12 is a flowchart illustrating the procedure for executing control based on control commands. As shown in Figure 12, the robot controller 100 executes steps S81 and S82. In step S81, the motion control unit 131 calculates the target rotation angles of joints 31, 32, 33, 34, 35, and 36 so that the end portion 18 moves at the target speed along the motion path represented by one or more control commands stored in the command buffer 132. In step S82, the motion control unit 131 uses actuators 41, 42, 43, 44, 45, and 46 to make the angles of joints 31, 32, 33, 34, 35, and 36 follow the target rotation angles.
[0114] Next, the robot controller 100 executes steps S83 and S84. In step S83, the state acquisition unit 122 acquires the state information of the robot 2. In step S84, the state acquisition unit 122 writes the state information of the robot 2 to the first write area 111.
[0115] Next, the robot controller 100 executes steps S85 and S86. In step S85, the motion control unit 131 waits for the control cycle to elapse. In step S86, the motion control unit 131 checks whether the execution of the motion program has been completed. If it is determined in step S86 that the execution of the motion program has not been completed, the robot controller 100 returns to step S81. Thereafter, the above control process is repeated in the control cycle until the execution of the motion program is completed. If it is determined in step S86 that the execution of the motion program has been completed, the robot controller 100 completes the motion control of the robot 2.
[0116] As described above, the robot controller 100 may further include a command selection unit 126. Figure 13 is a flowchart illustrating the command selection procedure performed by the robot controller 100 using the command selection unit 126. As shown in Figure 13, the robot controller 100 executes step S91. In step S91, the command selection unit 126 checks whether or not the operation of robot 2 based on the local command has started. If in step S91 it is determined that the operation of robot 2 based on the local command has not started, the robot controller 100 executes step S92. In step S92, the command selection unit 126 checks whether or not the operation of robot 2 based on the execution result of application 241 has started. If in step S92 it is determined that the operation of robot 2 has not started, the robot controller 100 returns to step S91.
[0117] In step S91, if the robot controller 100 determines that the robot 2 has started moving based on a local command, it executes steps S93, S94, and S95. In step S93, the command selection unit 126 prohibits the input of control commands from the memory interpreter 123 to the motion control unit 131. For example, the command selection unit 126 prohibits the memory interpreter 123 from writing control commands to the command buffer 132. In step S94, the command selection unit 126 waits for the completion of the robot 2's movement based on the local command. In step S95, the command selection unit 126 releases the prohibition on the input of control commands from the memory interpreter 123 to the motion control unit 131.
[0118] In step S92, if the robot controller 100 determines that the operation of robot 2 based on the execution result of application 241 has started, it executes steps S96, S97, and S98. In step S96, the command selection unit 126 prohibits the input of control commands from the local interpreter 125 to the motion control unit 131. For example, the command selection unit 126 prohibits the local interpreter 125 from writing control commands to the command buffer 132. In step S97, the command selection unit 126 waits for the completion of the operation of robot 2 based on the execution result of application 241. In step S98, the command selection unit 126 releases the prohibition on the input of control commands from the local interpreter 125 to the motion control unit 131.
[0119] After executing step S95 or step S98, the robot controller 100 returns to step S91. The robot controller 100 repeats the above process.
[0120] (A control procedure that performs local control and application control in parallel) The following example shows how some local control functions are executed in parallel with application control. The application control example described is one that modifies control commands based on surrounding environment information.
[0121] Figure 14 is a flowchart illustrating the procedure by which application 241 performs correction calculations in response to a call from robot controller 100. As shown in Figure 14, the calculation module 200 that executes application 241 performs steps S101, S102, and S103. In step S101, application 241 requests to read call data using the monitoring API 233. In step S102, application 241 waits for a response to the request to be passed from memory manager 223. In step S103, application 241 checks whether correction start has been instructed based on the call data. If it is determined in step S103 that correction start has not been instructed, the calculation module 200 returns to step S101. Thereafter, the reading of call data is repeated until it is determined that correction start has been instructed based on the call data.
[0122] Next, the arithmetic module 200 executes steps S104, S105, S106, and S107. In step S104, application 241 acquires environmental information such as images captured by the camera. In step S105, application 241 generates correction data based on the environmental information. In step S106, application 241 requests the writing of the correction data using the motion API 231. In step S107, application 241 waits for a response to the request to be passed from the memory manager 223.
[0123] Next, the arithmetic module 200 executes steps S111, S112, and S113. In step S111, application 241 requests the reading of call data via the monitoring API 233. In step S112, application 241 waits for a response to the request to be passed from the memory manager 223. In step S113, application 241 checks, based on the call data, whether or not a correction stop has been instructed.
[0124] If it is determined in step S113 that no instruction has been given to stop the correction, the arithmetic module 200 returns to step S104. Thereafter, the generation of correction data is repeated until it is determined that an instruction to stop the correction has been given based on the call data. If it is determined in step S113 that an instruction to stop the correction has been given based on the call data, the arithmetic module 200 completes the generation of correction data.
[0125] Figure 15 is a flowchart illustrating the procedure for reading multiple local commands, including a call to application 241 that performs correction calculations. As shown in Figure 15, the robot controller 100 executes S121, S122, S123, and S124. In step S121, the local interpreter 125 waits for a free space to become available in the command buffer 132. In step S122, the local interpreter 125 reads a local command from the command storage unit 124. In step S123, the local interpreter 125 generates a control command based on the read local command and stores it in the command buffer 132. In step S124, the local interpreter 125 checks if there is another local command in the command storage unit 124. If it determines in step S124 that there is another local command, the robot controller 100 returns to step S121.
[0126] Figure 16 is a flowchart illustrating the procedure for reading correction data generated by application 241. At the start of this flowchart, the value of the correction variable mentioned above is zero (no correction). As shown in Figure 16, the robot controller 100 executes steps S131 and S132. In step S131, the robot control unit 130 waits for the timing to execute a local command to start correction in application 241, based on the execution status (execution progress) of the control commands stored in the command buffer 132. Hereinafter, the local command to start correction in application 241 will be referred to as the "correction start command". In step S132, the robot control unit 130 writes call data indicating the start of correction to the first write area 111.
[0127] Next, the robot controller 100 Step Steps S133, S134, S135, and S136 are executed. In step S133, the memory interpreter 123 waits for the correction data written by application 241 to be stored in the second read area 112. In step S134, the memory interpreter 123 reads the correction data from the second read area 112. In step S135, the memory interpreter 123 generates the correction command described above and inputs it to the robot control unit 130. Based on the correction command, the robot control unit 130 assigns the correction data to the correction variables described above. In step S136, the response generation unit 127 generates a response corresponding to the correction data and stores it in the first write area 111.
[0128] Next, the robot controller 100 executes step S137. In step S137, the robot control unit 130 checks whether it is time to execute a local command to stop the correction in application 241, based on the execution status (execution progress) of the control commands stored in the command buffer 132. Hereinafter, the local command to stop the correction in application 241 will be referred to as the "correction stop command".
[0129] If the robot controller 100 determines in step S137 that it is not time to execute the correction stop command, it returns to step S133. Thereafter, until it is time to execute the correction stop command, the reading of correction data and the assignment of correction data to the correction variables are repeated.
[0130] If the robot controller 100 determines in step S137 that it is time to execute the correction stop command, it executes steps S138 and S139. In step S138, the robot control unit 130 clears (sets to zero) the correction variables. In step S139, the robot control unit 130 writes call data indicating correction stop to the first write area 111. This completes the correction data reading procedure.
[0131] Figure 17 is a flowchart illustrating the procedure for executing control based on control commands and correction data. As shown in Figure 17, the robot controller 100 executes step S141. In step S141, the motion control unit 131 calculates the target rotation angles of joints 31, 32, 33, 34, 35, and 36 so that the tip 18 moves at the target speed along a corrected path obtained by correcting the motion path represented by one or more control commands based on correction variables. When the correction variable is zero, the corrected path is the same as the motion path represented by one or more control commands.
[0132] Next, the robot controller 100 executes steps S142, S143, S144, and S145 in the same way as steps S82, S83, S84, and S85, and then executes step S146 in the same way as step S86. In step S146, the motion control unit 131 checks whether the execution of the motion program has been completed. If it is determined in step S146 that the execution of the motion program has not been completed, the robot controller 100 returns to step S141. From there, the above control process is repeated in the control cycle until the execution of the motion program is completed. If it is determined in step S146 that the execution of the motion program has been completed, the robot controller 100 completes the motion control of the robot 2.
[0133] 〔summary〕 As described above, the control system 3 comprises a robot controller 100 for controlling the robot 2 and a computing module 200 that communicates with the robot controller 100. The robot controller 100 has a first memory 110 in which state information of the robot 2 is stored, and the computing module 200 has a second memory 210 whose contents are synchronized with the first memory 110, and a processor 201 capable of executing an application 241 that performs calculations related to the control of the robot 2 based on the contents of the second memory 210.
[0134] Since the first memory 110 and the second memory 210 are synchronized, an application 241 related to the control of the robot 2 can be created by designating the second memory 210 as the recipient of data writing or reading. Therefore, the application 241 can be easily constructed without considering special rules such as data exchange protocols between the robot controller 100 and the computing module 200. The constructed application 241 can assist or lead the control of the robot 2 by the robot controller 100. Therefore, the functionality of the robot controller 100 can be easily expanded.
[0135] The robot controller 100 further includes a first synchronization unit 121 that periodically synchronizes the contents of the first memory 110 with the contents of the second memory 210 via network communication, and the arithmetic module 200 may further include a second synchronization unit 221 that periodically synchronizes the contents of the second memory 210 with the contents of the first memory 110 via network communication. The first memory 110 and the second memory 210 are mutually updated periodically via network communication. Therefore, the application 241 can be easily constructed without being aware of the network communication protocol. Furthermore, by having network communication handle simple synchronization between memories, the robot controller 100 and the arithmetic module 200 can be connected using general-purpose network communication, reducing the construction cost of the control system 3. General-purpose network communication makes it possible to connect various devices to the robot controller 100 as arithmetic modules 200. By utilizing this, devices with a more general-purpose architecture can be used as arithmetic modules 200, significantly reducing the cost for application 241 developers to become familiar with the architecture of the arithmetic modules 200.
[0136] The arithmetic module 200 may further include a memory manager 223 that performs at least one of writing and reading data to the second memory 210 based on a request from the application 241. By requesting from the memory manager 223, data can be easily read or written without knowing the configuration of the second memory 210. This further reduces the construction cost of the application 241. In addition, by restricting direct access to the second memory 210, unauthorized data writing is prevented. This also reduces the debugging cost in the development of the application 241.
[0137] The arithmetic module 200 further includes an application storage unit 240 for storing one or more applications 241, and the memory manager 223 may notify the associated application 241 of the contents of the second memory 210 associated with the application 241 stored in the application storage unit 240. Notifications can be made from the robot controller 100 to the application 241 via the first memory 110 and the second memory 210. This makes it easy to construct an application 241 that operates based on notifications from the robot controller 100. With an application 241 that operates based on notifications from the robot controller 100, it is possible to start the application 241 requested by the robot controller 100 based on the notification from the robot controller 100. In addition, at least some of the calculations in an already running application 241 can be started at a timing requested by the robot controller 100.
[0138] The memory manager 223 has an API 230 that controls the robot 2, and when it receives a request from application 241 via API 230, it may write the data corresponding to the request to the second memory 210. The extended functions provided by application 241 can be easily reflected in the control of the robot 2 via API 230. In addition, since the second memory 210 is wrapped by API 230, security against errors, leaks of confidential information, etc., can be improved.
[0139] The robot controller 100 further includes a state acquisition unit 122 that writes at least the state information of the robot 2 to the first memory 110, and the memory manager 223 may acquire state information from the second memory 210 in response to a request from the application 241 and pass it to the application 241. The state information of the robot 2 necessary for building the application 241 is continuously updated in the second memory 210. Therefore, by simply incorporating the reading of state information from the second memory 210 into the application 241, the application 241 based on the state information of the robot 2 can be easily built. In addition, by limiting the state information written to the first memory 110, it is easy to prevent the acquisition of an unlimited amount of state information of the robot 2.
[0140] The state collection unit 122 writes state information to the first write area 111 of the first memory 110, and the memory manager 223 retrieves the state information from the first read area 211 of the second memory 210 corresponding to the first write area 111 and passes it to the application 241. The application 241 may write data based on its request to a second write area 212 of the second memory 210, which is different from the first read area 211. Since the application 241 writes data to a second write area 212 that is different from the first read area 211 used to retrieve state information, the state information stored in the first read area 211 can always be synchronized with the state information written by the state collection unit 122. This makes it possible to provide state information to the application 241 at any time. For this reason, an application 241 based on state information can be easily constructed without having to be aware of the timing of state information acquisition.
[0141] The robot controller 100 may further include a memory interpreter 123 that generates control commands executable within the robot controller 100 based on data read from the first memory 110. The function of the robot controller 100 in controlling the robot 2 with control commands can be easily extended by the calculation results of the calculation module 200. Furthermore, by freely combining the operation program generated to control the robot 2 with control commands and the calculation results of the calculation module 200, the robot controller 100 can perform a wider variety of controls. It is also possible to develop the operation program itself, which has been generated in the past, separately from the calculation module 200.
[0142] The robot controller 100 may further include a command storage unit 124 capable of storing multiple local commands, a local interpreter 125 that sequentially reads multiple local commands from the command storage unit 124 and generates control commands, and a motion control unit 131 that controls the motion of the robot 2 based on the control commands generated by at least one of the memory interpreter 123 and the local interpreter 125. It is possible to operate the robot 2 based on multiple local commands and to operate the robot 2 based on the calculation results of the calculation module 200. Furthermore, it is also possible to operate the robot 2 based on a combination of multiple local commands and the calculation results of the calculation module 200. Therefore, the function of controlling the robot 2 based on local commands can be easily extended by the calculation results of the calculation module 200. In addition, both local commands and the calculation results of the calculation module 200 are converted into control commands of the same format. For this reason, the motion control unit 131 can be shared between operating the robot 2 based on multiple local commands and operating the robot 2 based on the calculation results of the calculation module 200. Therefore, the configuration of the robot controller 100 can be simplified.
[0143] The robot controller 100 may further include a command selection unit 126 that prohibits the input of control commands from the memory interpreter 123 to the motion control unit 131 during the period when the robot 2 is operating based on control commands generated by the local interpreter 125, and prohibits the input of control commands from the local interpreter 125 to the motion control unit 131 during the period when the robot 2 is operating based on control commands generated by the memory interpreter 123. This prevents the robot 2 from malfunctioning due to unexpected mixing of control commands from the local interpreter 125 and control commands from the memory interpreter 123.
[0144] Application 241 generates data used for control based on local commands and requests the memory manager 223 to write the generated data. The motion control unit 131 may then control the motion of the robot 2 based on the generated data read from the first memory 110 and the local commands read from the command storage unit 124. By combining the resources of the robot controller 100 and the resources of the calculation module 200, more advanced control can be performed.
[0145] The robot controller 100 may have a local control mode in which the motion control unit 131 controls the motion of the robot 2 based on control commands generated by the local interpreter 125, and an application control mode in which the motion control unit 131 controls the motion of the robot 2 based on control commands generated by the memory interpreter 123 based on the calculation results of the application 241. By selectively executing the local control mode and the application control mode, the functionality of the robot controller 100 can be easily extended. In either mode, the control by the motion control unit 131 is performed based on control commands of the same format, so the calculation module 200 can be incorporated into a part of the architecture without changing the architecture for the local control mode. Therefore, it is possible to easily add control based on the calculation results of the application 241 to the robot controller 100 while making use of the operation programs previously generated for the local control mode. It is also possible to develop the previously generated operation programs themselves separately from the application 241.
[0146] The robot controller 100 further includes a response generation unit 127 that generates a response corresponding to the data read by the memory interpreter 123 and writes it to the first memory 110. The memory manager 223 may read the response from the second memory 210 and pass it to the application 241 that requested the writing of the read data. By using the response as a basis, it is possible to easily generate an application 241 that proceeds with calculations according to the execution status of the processing based on the request.
[0147] The memory manager 223 may queue multiple requests from one or more applications 241 in the request storage unit 225, sequentially dispense the requests from the request storage unit 225, and write the data corresponding to the dispensed requests to the second memory 210. Since the request queuing is performed by the memory manager 223, applications 241 can be configured to make requests as they occur without considering the risk of accidentally overwriting preceding requests. Even when two or more applications 241 may be executed simultaneously, each application 241 can be configured to make requests as they occur without considering the request status of other applications 241. Therefore, the cost of building applications 241 can be further reduced.
[0148] When the memory manager 223 reads a response from the second memory 210, it may issue the next request corresponding to the response from the request storage unit 225. This allows for a balance between the flexibility of the application 241 and the real-time capabilities of the robot controller 100.
[0149] If the request is for reading the state information of robot 2, the memory manager 223 may read the state information from the second memory 210 and pass it to the application 241 that made the request, without queuing the request. By excluding requests for reading state information, which require immediate access, from queuing, delays in obtaining state information can be suppressed. In addition, the resources used for request queuing can be reduced.
[0150] In the configuration illustrated above, the arithmetic module 200 includes a shared memory (second memory 210) that stores information referenced by the robot controller 100 that controls the robot 2, a processor 201 capable of executing an application 241 that performs calculations related to the control of the robot 2 based on the contents of the shared memory, and a memory manager 223 that performs at least one of writing or reading data to the shared memory based on a request from the application 241.
[0151] Furthermore, the calculation module 200 includes a shared memory that stores information written by the robot controller 100 that controls the robot 2, an application storage unit 240 that stores one or more applications 241 that perform calculations based on the contents of the memory, and a memory manager 223 that notifies the associated application 241 of the contents of the shared memory associated with the application 241 stored in the application storage unit 240.
[0152] The robot controller 100 includes a shared memory (first memory 110) that stores information written by a calculation module 200 capable of executing an application 241 that performs calculations related to the control of the robot 2 based on the state information of the robot 2; a state collection unit 122 that writes at least state information to the shared memory; a memory interpreter 123 that generates control commands that can be executed internally by the robot controller 100 based on the data written to the shared memory based on the calculation results of the application 241; and a motion control unit 131 that controls the motion of the robot 2 based on the control commands.
[0153] The control system 3 includes a processor 201 capable of executing an application 241 that performs calculations related to the control of the robot 2; a memory manager 223 that writes and reads data to and from a shared memory (second memory 210) based on a request from the application 241; a command storage unit 124 capable of storing multiple local commands; a local interpreter 125 that sequentially reads multiple local commands from the command storage unit 124 and generates control commands; a memory interpreter 123 that generates control commands based on data read from the shared memory (first memory 110); and a motion control unit 131 that controls the motion of the robot 2 based on the control commands generated by at least one of the memory interpreter 123 and the local interpreter 125. In this configuration, the shared memory does not necessarily have to be divided into a first memory 110 and a second memory 210 that are synchronized with each other.
[0154] The control system 3 includes a command storage unit 124 capable of storing multiple local commands for controlling the robot 2, a calculation module 200 that generates data used for control based on local commands and writes the generated data to a shared memory, and a motion control unit 131 that controls the motion of the robot 2 based on the generated data read from the shared memory and the local commands read from the command storage unit 124.
[0155] Although embodiments have been described above, the present invention is not necessarily limited to the embodiments described above, and various modifications are possible without departing from the spirit of the invention.
[0156] [Note] Hereinafter, various exemplary embodiments included in this disclosure are described below.
[0157] [1] A robot controller that controls the robot, A computing module that communicates with the robot controller, Equipped with, The robot controller has a first memory in which the state information of the robot is stored. The aforementioned calculation module is A second memory whose contents are synchronized with the first memory, A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, Having, Control system.
[0158] [2] The robot controller further includes a first synchronization unit that synchronizes the contents of the first memory with the contents of the second memory at regular intervals via network communication. The aforementioned arithmetic module further includes a second synchronization unit that synchronizes the contents of the second memory with the contents of the first memory at regular intervals via network communication. [1] The control system described in the following article.
[0159] [3] The arithmetic module further includes a memory manager that, based on a request from an application, performs at least one of writing data to and reading data from the second memory. The control system described in [1] or [2].
[0160] [4] The aforementioned arithmetic module further includes an application storage unit for storing one or more applications, The memory manager notifies the associated application of the contents of the second memory associated with the application stored in the application storage unit. [3] The control system described in the following article.
[0161] [5] The memory manager has an API that controls the robot, and when it receives a request from an application via the API, it writes the data corresponding to the request to the second memory. The control system described in [3] or [4].
[0162] [6] The robot controller further includes a state acquisition unit that writes at least the state information of the robot to the first memory, The memory manager, in response to a request from the application, retrieves the state information from the second memory and passes it to the application. A control system as described in any one of the following items [3] to [5].
[0163] [7] The state collection unit writes the state information to the first write area of the first memory. The memory manager obtains the state information from the first read area of the second memory corresponding to the first write area and passes it to the application. Data based on a request from the application is written to a second write area of the second memory that is different from the first read area. [6] The control system described in the following article.
[0164] [8] The robot controller further includes a memory interpreter that generates control commands executable within the robot controller based on data read from the first memory. [7] The control system described in the following article.
[0165] [9] The aforementioned robot controller is A command memory unit capable of storing multiple local commands, A local interpreter that sequentially reads the plurality of local commands from the command storage unit and generates the control command, A motion control unit controls the motion of the robot based on the control commands generated by at least one of the memory interpreter and the local interpreter, It further has, [8] The control system described in the following article.
[0166]
[10] The robot controller further includes a command selection unit that prohibits the input of control commands from the memory interpreter to the motion control unit during the period when the robot is operating based on the control commands generated by the local interpreter, and prohibits the input of control commands from the local interpreter to the motion control unit during the period when the robot is operating based on the control commands generated by the memory interpreter. [9] The control system described in the following article.
[0167]
[11] The application generates data used for control based on local commands and requests the memory manager to write the generated data. The motion control unit controls the motion of the robot based on the generated data read from the first memory and the local command read from the command storage unit. The control system described in [9] or
[10] .
[0168]
[12] The aforementioned robot controller is The motion control unit controls the motion of the robot based on the control command generated by the local interpreter, and The motion control unit controls the motion of the robot based on the control commands generated by the memory interpreter based on the calculation results of the application, in an application control mode. Having, A control system as described in any one of the items [9] to
[11] .
[0169]
[13] The robot controller further includes a response generation unit that generates a response corresponding to the data read by the memory interpreter and writes it to the first memory. The memory manager reads the response from the second memory and passes it to the application that requested the writing of the read data.
[12] The control system described in the following article.
[0170]
[14] The memory manager queues multiple requests from one or more applications in a request storage unit, sequentially dispenses the multiple requests from the request storage unit, and writes the data corresponding to the dispensed requests to the second memory. The control system described in
[12] or
[13] .
[0171]
[15] When the memory manager reads a response from the second memory, it issues the next request corresponding to the response from the request storage unit.
[14] The control system described in the following article.
[0172]
[16] If the request is a request to read the state information of the robot, the memory manager reads the state information from the second memory without queuing the request and passes it to the application that made the request. The control system described in
[14] or
[15] .
[0173]
[17] A shared memory that stores information referenced by the robot controller that controls the robot, A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the shared memory, A memory manager that, based on a request from an application, performs at least one of writing or reading data to the shared memory, A computing module equipped with the following features.
[0174]
[18] A shared memory that stores information written by the robot controller that controls the robot, An application storage unit that stores one or more applications that perform calculations based on the contents of memory, A memory manager that notifies the associated application of the contents of the shared memory associated with the application stored in the application storage unit, A computing module equipped with the following features.
[0175]
[19] A shared memory that stores information written by a computing module capable of executing an application that performs calculations related to the control of the robot based on the robot's state information, A state collection unit that writes the state information to the shared memory, A memory interpreter that generates control commands executable within the robot controller based on data written to shared memory based on the calculation results from the application, A motion control unit controls the motion of the robot based on the aforementioned control command, A robot controller equipped with the following features.
[0176]
[20] A processor capable of running applications that perform calculations related to robot control, A memory manager that, based on a request from an application, performs at least one of writing and reading data to shared memory, A command memory unit capable of storing multiple local commands, A local interpreter sequentially reads the plurality of local commands from the command storage unit and generates control commands, A memory interpreter that generates the control command based on the data read from the shared memory, A motion control unit controls the motion of the robot based on the control commands generated by at least one of the memory interpreter and the local interpreter, A control system equipped with the following features.
[0177] [twenty one] A command memory unit capable of storing multiple local commands for controlling the robot, A processing module that generates data used for control based on local commands and writes the generated data to shared memory, A motion control unit that controls the motion of the robot based on the generated data read from the shared memory and the local commands read from the command storage unit, A control system equipped with the following features.
[0178] [twenty two] The robot controller that controls the robot stores the state information of the robot in the first memory, The calculation module, which communicates with the robot controller, synchronizes the contents of the second memory with the contents of the first memory. The aforementioned calculation module executes an application that performs calculations related to the control of the robot based on the contents of the second memory, A control method including [Explanation of symbols]
[0179] 2...Robot, 3...Control system, 100...Robot controller, 200...Calculation module, 110...First memory, 210...Second memory, 201...Processor, 111...First write area, 211...First read area, 212...Second write area, 121...First synchronization unit, 221...Second synchronization unit, 223...Memory manager, 230...API, 240...Application storage unit, 241...Application, 122...State collection unit, 225...Request storage unit, 123...Memory interpreter, 131...Motion control unit, 124...Command storage unit, 125...Local interpreter, 126...Command selection unit, 127...Response generation unit.
Claims
1. A robot controller that controls the robot, A computing module that communicates with the robot controller, Equipped with, The robot controller has a first memory in which the state information of the robot is stored. The aforementioned calculation module is Second memory and A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, It has, The robot controller further includes a first synchronization unit that synchronizes the contents of the first memory with the contents of the second memory at regular intervals via network communication. The aforementioned arithmetic module further includes a second synchronization unit that synchronizes the contents of the second memory with the contents of the first memory at regular intervals via network communication. Control system.
2. The arithmetic module further includes a memory manager that, based on a request from the application, performs at least one of writing data to and reading data from the second memory. The control system according to claim 1.
3. The aforementioned arithmetic module further includes an application storage unit for storing one or more applications, The memory manager notifies the associated application of the contents of the second memory associated with the application stored in the application storage unit. The control system according to claim 2.
4. The memory manager has an API that controls the robot, and when it receives a request from the application via the API, it writes the data corresponding to the request to the second memory. The control system according to claim 2.
5. The robot controller further includes a state acquisition unit that writes at least the state information of the robot to the first memory, The memory manager, in response to a request from the application, retrieves the state information from the second memory and passes it to the application. The control system according to claim 2.
6. The state collection unit writes the state information to the first write area of the first memory. The memory manager obtains the status information from the first read area of the second memory corresponding to the first write area, passes it to the application, and writes data based on a request from the application to a second write area of the second memory that is different from the first read area. The control system according to claim 5.
7. The robot controller further includes a memory interpreter that generates control commands executable within the robot controller based on data read from the first memory. The control system according to claim 6.
8. The aforementioned robot controller is A command memory unit capable of storing multiple local commands, A local interpreter that sequentially reads the plurality of local commands from the command storage unit and generates the control command, A motion control unit controls the motion of the robot based on the control commands generated by at least one of the memory interpreter and the local interpreter, It further has, The control system according to claim 7.
9. The robot controller further includes a command selection unit that prohibits the input of control commands from the memory interpreter to the motion control unit during the period when the robot is operating based on the control commands generated by the local interpreter, and prohibits the input of control commands from the local interpreter to the motion control unit during the period when the robot is operating based on the control commands generated by the memory interpreter. The control system according to claim 8.
10. The application generates data used for control based on local commands and makes a request to the memory manager to write the generated data. The motion control unit controls the motion of the robot based on the generated data read from the first memory and the local command read from the command storage unit. The control system according to claim 8.
11. The aforementioned robot controller is The motion control unit controls the motion of the robot based on the control command generated by the local interpreter, and The motion control unit controls the motion of the robot based on the control commands generated by the memory interpreter based on the calculation results of the application, in an application control mode. Having, The control system according to claim 8.
12. The robot controller further includes a response generation unit that generates a response corresponding to the data read by the memory interpreter and writes it to the first memory. The memory manager reads the response from the second memory and passes it to the application that made the request to write the read data. The control system according to claim 11.
13. The memory manager queues multiple requests from one or more applications in a request storage unit, sequentially dispenses the multiple requests from the request storage unit, and writes the data corresponding to the dispensed requests to the second memory. The control system according to claim 11.
14. When the memory manager reads a response from the second memory, it issues the next request corresponding to the response from the request storage unit. The control system according to claim 13.
15. If the request is a request to read the state information of the robot, the memory manager reads the state information from the second memory without queuing the request and passes it to the application that made the request. The control system according to claim 13.
16. A robot controller for controlling a robot, A computing module that communicates with the robot controller, Equipped with, The aforementioned robot controller is A first memory in which the state information of the robot is stored, A state acquisition unit that writes at least the state information of the robot to the first memory, It has, The aforementioned calculation module is A second memory whose contents are synchronized with the first memory, A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, A memory manager that, based on a request from the aforementioned application, performs at least one of writing data to and reading data from the second memory, It has, The state collection unit writes the state information to the first write area of the first memory. The aforementioned memory manager In response to a request from the application, the state information is obtained from the first read area of the second memory corresponding to the first write area and passed to the application. The data based on the request from the application is written to a second write area of the second memory that is different from the first read area. Control system.
17. A computing module that communicates with a robot controller that controls a robot, The robot controller has a first memory in which the state information of the robot is stored. The aforementioned calculation module is Second memory and A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, A memory manager that, based on a request from the aforementioned application, performs at least one of writing data to and reading data from the second memory, It has, The robot controller further includes a first synchronization unit that synchronizes the contents of the first memory with the contents of the second memory at regular intervals via network communication. The aforementioned arithmetic module further includes a second synchronization unit that synchronizes the contents of the second memory with the contents of the first memory at regular intervals via network communication. A calculation module.
18. A computing module that communicates with a robot controller that controls a robot, The robot controller has a first memory in which the state information of the robot is stored. The aforementioned calculation module is Second memory and An application storage unit that stores one or more applications that perform calculations based on the contents of the second memory, A memory manager that notifies the associated application of the contents of the second memory associated with the application stored in the application storage unit, It has, The robot controller further includes a first synchronization unit that synchronizes the contents of the first memory with the contents of the second memory at regular intervals via network communication. The aforementioned arithmetic module further includes a second synchronization unit that synchronizes the contents of the second memory with the contents of the first memory at regular intervals via network communication. A calculation module.
19. A computing module that communicates with a robot controller that controls a robot, The robot controller has a first memory in which the state information of the robot is stored. The aforementioned calculation module is Second memory and A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, A memory manager that, based on a request from the aforementioned application, performs at least one of writing data to and reading data from the second memory, It has, The robot controller writes the state information to the first write area of the first memory. The aforementioned memory manager In response to a request from the application, the state information is read from the first read area of the second memory corresponding to the first write area and passed to the application. The data based on the request from the application is written to a second write area of the second memory that is different from the first read area. A calculation module.
20. A robot controller that communicates with a computing module and controls a robot, A first memory that stores information written by a computing module capable of executing an application that performs calculations related to the control of the robot based on the state information of the robot, A state collection unit that writes at least the state information to the first memory, A memory interpreter that generates control commands executable within the robot controller based on data written to the first memory based on the calculation results of the application, A motion control unit controls the motion of the robot based on the aforementioned control command, It has, The aforementioned calculation module is Second memory and A processor capable of executing an application that performs calculations related to the control of the robot based on the contents of the second memory, It has, The robot controller further includes a first synchronization unit that synchronizes the contents of the first memory with the contents of the second memory at regular intervals via network communication. The aforementioned arithmetic module further includes a second synchronization unit that synchronizes the contents of the second memory with the contents of the first memory at regular intervals via network communication. Robot controller.
21. A robot controller that controls the robot stores the state information of the robot in the first memory of the robot controller, The robot controller synchronizes the contents of the first memory with the contents of the second memory of the calculation module at regular intervals through network communication with the calculation module. The arithmetic module synchronizes the contents of the second memory with the contents of the first memory at regular intervals via the network communication, The aforementioned calculation module executes an application that performs calculations related to the control of the robot based on the contents of the second memory, A control method including
Citation Information
Patent Citations
Controller and its control method
JP2004094473A
Communication control device, and communication and control system
JP2012060207A
Control apparatus and control method
JP2019053459A
Motion control program, motion control method and motion control device
JP2019220135A