WO2023171574A1 - 制御システム、演算モジュール、ロボットコントローラ、及び制御方法 - Google Patents

制御システム、演算モジュール、ロボットコントローラ、及び制御方法 Download PDF

Info

Publication number
WO2023171574A1
WO2023171574A1 PCT/JP2023/008123 JP2023008123W WO2023171574A1 WO 2023171574 A1 WO2023171574 A1 WO 2023171574A1 JP 2023008123 W JP2023008123 W JP 2023008123W WO 2023171574 A1 WO2023171574 A1 WO 2023171574A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
robot
control
application
command
Prior art date
Application number
PCT/JP2023/008123
Other languages
English (en)
French (fr)
Inventor
裕太 有田
貴宏 前田
弘 熊谷
Original Assignee
株式会社安川電機
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社安川電機 filed Critical 株式会社安川電機
Publication of WO2023171574A1 publication Critical patent/WO2023171574A1/ja

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller

Definitions

  • the present disclosure relates to a control system, a calculation module, a robot controller, and a control method.
  • Patent Document 1 discloses a motion control device in which a non-real-time OS and a real-time OS are installed and performs motion control on a device to be controlled.
  • the motion control device has a shared memory that can be commonly referenced and written to by each functional unit on the non-real-time OS side and each functional unit on the real-time OS side.
  • the present disclosure provides a system that allows the functionality of a robot controller to be easily expanded.
  • a control system includes a robot controller that controls a robot, and an arithmetic module that communicates with the robot controller, the robot controller having a first memory in which state information of the robot is stored,
  • the calculation module includes a second memory whose contents are synchronized with the first memory, and a processor capable of executing an application that performs calculations related to robot control based on the contents of the second memory.
  • a calculation module includes a shared memory that stores information referenced by a robot controller that controls a robot, and an application that can execute an application that performs calculations related to controlling the robot based on the contents of the shared memory.
  • the memory manager includes a processor and a memory manager that writes data to or reads data from a shared memory based on a request from an application.
  • a calculation module includes a shared memory that stores information written by a robot controller that controls a robot, and 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.
  • a robot controller includes a shared memory that stores information written by a calculation module capable of executing an application that performs calculations related to control of the robot based on state information of the robot, and at least a state of the robot.
  • a state collection unit that writes information to the shared memory, a memory interpreter that generates control commands that can be executed inside the robot controller based on the data written to the shared memory based on the calculation results by the application, and a memory interpreter that generates control commands that can be executed inside the robot controller.
  • a motion control section that controls the motion of the robot.
  • a control system includes a processor capable of executing an application that performs calculations related to controlling a robot, and at least one of writing and reading data to and from a shared memory based on a request from the application.
  • a memory manager that performs this, a command storage unit that can store multiple local commands, a local interpreter that sequentially reads multiple local commands from the command storage unit and generates control commands, and a local interpreter that generates control commands based on the data read from the shared memory.
  • the robot includes a memory interpreter that generates control commands, 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.
  • a control system includes a command storage unit that can store a plurality of local commands for controlling a robot, generates data used in control based on the local commands, and stores the generated data. It includes an arithmetic module that writes to the 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 command read from the command storage unit.
  • a control method includes storing robot status information in a first memory by a robot controller that controls the robot, and storing the contents of a second memory by a calculation module communicating with the robot controller.
  • the method includes synchronizing with the contents of the first memory, and using the calculation module to execute an application that performs calculations related to control of the robot based on the contents of the second memory.
  • FIG. 1 is a schematic diagram illustrating the configuration of a robot system.
  • FIG. 2 is a block diagram illustrating a functional configuration of a calculation module.
  • FIG. 2 is a block diagram illustrating the functional configuration of a robot controller.
  • FIG. 2 is a block diagram illustrating the hardware configuration of a control system.
  • 3 is a flowchart illustrating a memory synchronization procedure in a robot controller.
  • 3 is a flowchart illustrating a memory synchronization procedure in an arithmetic module.
  • 7 is a flowchart illustrating a data writing procedure by a memory manager.
  • 7 is a flowchart illustrating a procedure for reading data by a memory manager.
  • 12 is a flowchart illustrating a procedure in which an application generates a motion path in response to a call from a robot controller.
  • 7 is a flowchart illustrating a procedure for reading a plurality of local commands including a call to an application that generates a path.
  • 3 is a flowchart illustrating a procedure for reading command data generated by an application.
  • 3 is a flowchart illustrating a control execution procedure based on a control command.
  • 7 is a flowchart illustrating a command selection procedure.
  • 7 is a flowchart illustrating a procedure in which an application performs a correction calculation in response to a call from a robot controller.
  • 7 is a flowchart illustrating a procedure for reading a plurality of local commands including a call to an application that performs a correction calculation. 7 is a flowchart illustrating a procedure for reading correction data generated by an application. 3 is a flowchart illustrating a control execution procedure based on a control command and correction data.
  • a robot system 1 shown in FIG. 1 is a system in which a robot 2 executes various tasks such as production of workpieces.
  • the robot system 1 may be a system that causes the robot 2 to perform work in a field other than the industrial field, such as the biomedical field.
  • the robot system 1 includes a robot 2 and a control system 3.
  • the robot 2 is a six-axis vertical articulated robot, and includes a base 11, a rotating section 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 the floor, wall, ceiling, or on the automatic guided vehicle.
  • the rotating portion 12 is provided on the base portion 11 so as to rotate around a vertical axis 21 .
  • the first arm 13 is connected to the rotating portion 12 so as to swing around an axis 22 that intersects (for example, perpendicularly intersects) the axis 21, and extends in a direction away from the axis 22. Intersection also includes cases where there is a twisting relationship, such as a so-called three-dimensional intersection. The same applies to the following.
  • the second arm 14 is connected to the distal end of the first arm 13 so as to swing around an axis 23 that is substantially parallel to the axis 22, and extends in a direction 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 around an axis 24 that intersects (for example, perpendicularly) the axis 23, and extends in a direction away from the arm base 15 along the axis 24. ing.
  • the third arm 17 is connected to the tip of the arm end 16 so as to swing around 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 around an axis 26 that intersects (eg, perpendicularly) the axis 25 .
  • the robot 2 has a joint 31 that connects the base 11 and the rotating part 12, a joint 32 that connects the rotating part 12 and the first arm 13, and a joint 32 that connects the first arm 13 and the second arm 14. a joint 33 that connects the arm base 15 and the arm end 16 in the second arm 14, a joint 35 that connects the arm end 16 and the third arm 17, and a joint 35 that connects the arm end 16 and the third arm 17; 18.
  • the actuators 41, 42, 43, 44, 45, 46 include, for example, an electric motor and a speed reducer, and drive the joints 31, 32, 33, 34, 35, 36, respectively.
  • the actuator 41 swings the swinging section 12 around the axis 21
  • the actuator 42 swings the first arm 13 around the axis 22
  • the actuator 43 swings the second arm 14 around the axis 23
  • the actuator 44 swings the second arm 14 around the axis 23.
  • the arm end 16 is pivoted about the axis 24
  • the actuator 45 swings the third arm 17 about the axis 25
  • the actuator 46 pivots the tip 18 about the axis 26 .
  • the robot 2 may be a 7-axis redundant robot in which one additional axis joint is added to the 6-axis vertically articulated robot, or may be a so-called scalar type articulated robot.
  • the control system 3 controls the robot 2.
  • the configuration of the control system 3 will be illustrated in detail below.
  • the control system 3 includes a robot controller 100 that controls the robot 2.
  • the robot controller 100 generates driving power for controlling the robot 2 and supplies it to the actuators 41, 42, 43, 44, 45, and 46.
  • An example of controlling the robot 2 is to cause the robot 2 to operate based on a predetermined operation program.
  • the operation program includes a plurality of time-series operation commands.
  • Each of the plurality of motion commands defines at least a target position of the tip 18 and a target velocity of the tip 18 to the target position.
  • the target position is information that determines the coordinates of the tip 18 in the robot coordinate system and the attitude 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 determines the coordinates and posture of the tip 18, or may be information that indirectly determines the coordinates and posture of the tip 18.
  • a specific example of the information that indirectly determines the coordinates and posture of the tip portion 18 is the rotation angle of the joints 31, 32, 33, 34, 35, and 36.
  • control system 3 further includes a calculation module 200 that communicates with the robot controller 100.
  • the robot controller 100 includes a first memory 110 in which state information of the robot 2 is stored, and the calculation module 200 includes a second memory 210 whose contents are synchronized with the first memory 110, and a second memory 210 whose contents are synchronized with the first memory 110. and a processor 201 that can execute an application 241 that performs calculations related to the control of the robot 2 based on the robot.
  • the application 241 can be easily constructed without considering special rules such as a data exchange protocol between the robot controller 100 and the calculation module 200. According to the constructed application 241, it becomes possible to assist or lead the control of the robot 2 by the robot controller 100. Therefore, the functions of the robot controller 100 can be easily expanded.
  • the robot controller 100 and the calculation module 200 may be provided in different casings, or may be provided in the same casing. Examples of communication between the robot controller 100 and the calculation module 200 include serial communication, parallel communication, or bus communication.
  • Network communication is communication performed using a communication protocol on a network-like communication line.
  • a communication protocol in a network-like communication line includes specifying the network address of the other party each time data is transmitted.
  • the network communication may be an industrial network communication that guarantees time synchronization, a general-purpose local area network (LAN) communication, or a wide area network communication.
  • the robot controller 100 and the calculation module 200 may be configured to perform wireless communication using a wireless LAN or mobile communication (for example, 5G communication).
  • the first memory 110 is configured by one or more memory devices 192 or one or more storage devices 193, which will be described later in the hardware configuration.
  • the second memory 210 is configured by one or more memory devices 292 or one or more storage devices 293, which will be 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.
  • the contents of the first read area 211 are synchronized with the contents of the first write area 111. Therefore, the contents written in the first write area 111 in the robot controller 100 can be read out from the first read area 211 in the arithmetic module 200.
  • the contents of the second read area 112 are synchronized with the contents of the first read area 211. Therefore, the contents written in the second write area 212 in the arithmetic module 200 can be read out from the second read area 112 in the robot controller 100.
  • the processor 201 includes one or more processing devices 291, which will be described later.
  • the application 241 is a program constructed in advance 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 state information of the robot 2 and the like. Examples of the state information of the robot 2 include the position of the tip 18, the posture of the tip 18, the moving speed of the tip 18, the rotation angles of the actuators 41, 42, 43, 44, 45, 46, the actuators 41, 42, Examples include the rotational speed of the actuators 43, 44, 45, and 46, or the torque generated by the actuators 41, 42, 43, 44, 45, and 46.
  • the control data may be, for example, text data representing the above-mentioned operation command, or may be numerical data such as the target position, target speed, etc. that constitute the operation command.
  • 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 reading area 112 and operate the robot 2 based on the read control data.
  • the calculations related to the control of the robot 2 are not necessarily limited to the calculations that generate data for operating the robot 2. Calculations for evaluating the motion of the robot 2 based on the state information of the robot 2 are also included in the calculations related to the control of the robot 2.
  • the robot controller 100 may further include a processor 101.
  • the processor 101 includes one or more processing devices 191, which will be described later.
  • the processor 101 performs calculations in the robot controller 100 to control the robot 2 based on the control data. For example, the processor 101 calculates target rotation angles of the joints 31, 32, 33, 34, 35, 36 so that the robot 2 executes operations based on the control data.
  • the actuators 41, 42, 43, 44, 45, and 46 each output driving power for making the rotation angle of 36 follow the target rotation angle.
  • the processor 101 may be further configured to obtain state information of the robot 2 and write it in the first writing area 111. Thereby, in the calculation module 200, it becomes possible to read the state information of the robot 2 from the first reading area 211 and use the read state information of the robot 2 for calculations etc. by the application 241.
  • FIG. 2 is a block diagram illustrating the functional configuration of the robot controller 100 and the calculation module 200.
  • the robot controller 100 includes a first synchronization section 121 and a first transmission section 128 as functional components (hereinafter referred to as "functional blocks").
  • the calculation module 200 includes a second synchronization section 221, a second transmission section 228, an application storage section 240, an application execution section 222, and a memory manager 223 as functional blocks.
  • the first synchronization unit 121 synchronizes (for example, matches) the contents of the first memory 110 with the contents of the second memory 210 at regular intervals through network communication.
  • the second synchronization unit 221 synchronizes (for example, matches) the contents of the second memory 210 with the contents of the first memory 110 at regular intervals through network communication.
  • the first transmitter 128 transmits the contents of the first write area 111 to the calculation module 200 at regular intervals through 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 periodic synchronization as long as the periodicity is generally maintained. .
  • the first memory 110 and the second memory 210 are mutually updated at regular intervals through network communication. Therefore, the application 241 can be easily constructed without being aware of network communication protocols and the like.
  • the application storage unit 240 stores one or more applications 241.
  • the memory manager 223 performs at least one of writing and reading data to and from the second memory 210 based on a request from the application 241 .
  • the memory manager 223 has an API 230 and writes or reads data into or from the second memory 210 based on a request received by the API 230.
  • the API 230 is an interface that makes pre-provided software available to external applications, accepts requests in a predetermined format, and passes a response to the request to the application that made the request.
  • the API 230 includes a motion system API 231 that supports control of the robot 2. Responding to the control of the robot 2 means, for example, handling data used for controlling the robot 2.
  • the motion-related API 231 receives a request from the application 241 to write the above-mentioned control data into the second write area 212, and confirms that the control data has been read from the second read area 112 or as a result of control execution based on the control data. A response indicating such information is passed to the application 241.
  • the motion system API 231 receives a request from the application 241 to write a control variable used for controlling the robot 2 into the second write area 212, and receives a request based on the control variable that has been read from the second read area 112 or based on the control variable.
  • a response indicating the control execution result etc. may be passed to the application 241.
  • the motion-related API 231 receives a request from the application 241 to write an execution command for an operation program stored in the robot controller 100 into the second write area 212, and receives a request that the execution command has been read from the second read area 112, or A response indicating the execution result of the operating program based on the execution command may be passed to the application 241.
  • the operation program within the robot controller 100 may be subdivided into a plurality of job programs by work content or workpiece.
  • the motion-related API 231 may accept a request to write an execution command for each job program into the second writing area 212.
  • the memory manager 223 When the memory manager 223 receives a request from the application 241 through the motion API 231, it writes data corresponding to the request into the second memory 210. For example, the memory manager 223 writes control data and the like to the second write area 212. As will be described later, in the robot controller 100, control data and the like are read from the second reading area 112, and responses corresponding to the control data and the like are written to the first writing area 111. The memory manager 223 reads a response corresponding to the control data etc. from the first reading area 211 and passes it to the application 241 that has made the request to write the control data etc.
  • the functions expanded by the application 241 can be easily reflected in the control of the robot 2 by the motion API 231. Furthermore, since the second memory 210 is wrapped by the motion-based API 231, security against erroneous operations, secret leaks, etc. can be improved.
  • the API 230 may include an operation-based API 232, a monitoring-based API 233, and the like.
  • the operation system API 232 corresponds to operations of the robot controller 100. Responding to the operation of the robot controller 100 means, for example, handling data used for operating the robot controller 100.
  • the operation system API 232 receives a request to write a servo-on command into the second write area 212 from the application 241, and sends a response indicating that the servo-on command has been read from the second read area 112 or that servo-on has been completed. Pass it to the application 241.
  • the servo-on command is a command to start supplying driving power (including power for making the actuators stationary) to the actuators 41, 42, 43, 44, 45, and 46.
  • the operation system API 232 receives a request from the application 241 to write an alarm reset command to the second write area 212, and receives information such as that the alarm reset command has been read from the second read area 112 or that the alarm has been reset. A response indicating this may be passed to the application 241.
  • the memory manager 223 When the memory manager 223 receives a request from the application 241 through the operation API 232, it writes data corresponding to the request into the second memory 210. For example, the memory manager 223 writes a servo-on command or the like to the second write area 212. In the robot controller 100, servo-on commands and the like are read from the second reading area 112, and responses corresponding to the servo-on commands and the like are written into the first writing area 111. The memory manager 223 reads a response corresponding to a servo-on command or the like from the first reading area 211, and passes it to the application 241 that has made the request to write the servo-on command or the like.
  • the monitoring API 233 corresponds to monitoring the contents of the first reading area 211.
  • the monitoring API 233 accepts a data read request, reads data corresponding to the request from the first read area 211, and passes a response including the read data to the application 241.
  • the memory manager 223 When the memory manager 223 receives a request from the application 241 through the monitoring API 233, the memory manager 223 reads data corresponding to the request from the first reading area 211, and passes a response including the read data to the application 241.
  • 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 including 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.
  • the memory manager 223 may activate the associated application 241. Notifying the associated application 241 also includes starting the associated application 241. As an example, when the memory manager 223 receives a request from the application 241 through the monitoring API 233, the memory manager 223 starts monitoring an area in the second memory 210 where the startup command is stored, and sends a response indicating the start of monitoring to the application 241. give it to In response to this, the application 241 stops. Thereafter, when the memory manager 223 reads the activation command from the second memory 210, it activates the application 241 associated with the activation command.
  • the robot controller 100 may further include a status collection unit 122.
  • the state collection unit 122 writes at least the state information of the robot 2 into the first memory 110.
  • the status collection unit 122 writes status information of the robot 2 into the first writing area 111.
  • the memory manager 223 obtains state information from the second memory 210 and passes it to the application 241 in response to a request from the application 241 .
  • the memory manager 223 reads the state information of the robot 2 from the first reading area 211 and passes a response including the read state information 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, the application 241 based on the state information of the robot 2 can be easily constructed by simply incorporating reading of the state information from the second memory 210 into the application 241.
  • the status collection unit 122 writes the status information to the first write area 111 of the first memory 110, and the memory manager 223 writes the status information from the first read area 211 of the second memory 210 corresponding to the first write area 111.
  • Information may be acquired and passed to the application 241, and data may be written based on a request from the application 241 to a second write area 212 of the second memory 210 that is different from the first read area 211. . Since data writing from the application 241 is performed in the second write area 212 that is different from the first read area 211 for acquiring status information, the status information stored in the first read area 211 is It is possible to always synchronize with the status information written by the status collection unit 122. This allows status information to be provided to the application 241 at any timing.
  • the memory manager 223 queues multiple requests from one or more applications 241 in the request storage unit 225, sequentially issues the multiple requests from the request storage unit 225, and stores data corresponding to the issued requests in the second memory 210. You can also write in “Queuing” means storing multiple requests in the request storage unit 225 in the order in which they are received. The memory manager 223 issues a plurality of requests from the request storage unit 225 in the order in which they are received.
  • the application 241 can be constructed to make requests at any time without considering the risk of accidentally overwriting a preceding request. Even when two or more applications 241 can be executed simultaneously, each application 241 can be configured to make requests at any time without considering the status of requests by other applications 241. Therefore, the cost of building the application 241 can be further reduced.
  • the memory manager 223 When the memory manager 223 reads a response from the second memory 210, it may issue a request subsequent to the request corresponding to the response from the request storage unit 225. It is possible to achieve both the degree of freedom of the application 241 and the real-time performance of the robot controller 100.
  • 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. .
  • 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.
  • the robot controller 100 further includes a memory interpreter 123 and a robot control section 130.
  • the memory interpreter 123 generates control commands that can be executed within the robot controller 100 based on the control data read from the first memory 110.
  • the robot control unit 130 executes processing corresponding to the control command. According to the memory interpreter 123, the function of the robot controller 100 that controls the robot 2 using control commands can be easily expanded using the calculation results of the calculation module 200.
  • the control command may be any command as long as it can be executed within the robot controller 100.
  • the command being executable within the robot controller 100 means that the robot controller 100 is capable of interpreting the contents of the command and executing processing corresponding to the command.
  • the control command may be text data representing the above-mentioned operation command, or may be numerical data obtained by interpreting the above-mentioned operation command.
  • MoveS(%) Example 3
  • MoveJ the arguments in parentheses represent the target position and target velocity.
  • “Move” represents moving to a target position at a target speed.
  • the alphabet added after “Move” represents the interpolation method from the movement start position to the target position.
  • “L” represents linear interpolation
  • "S” represents sigmoidal interpolation.
  • "J” linearly interpolates between the angles of the joints 31, 32, 33, 34, 35, 36 before the start of movement and the angles of the joints 31, 32, 33, 34, 35, 36 at the target position. represents something.
  • the arguments in MoveJ may be the target rotation angle and target rotation speed of each of the joints 31, 32, 33, 34, 35, and 36.
  • the robot control unit 130 controls the motion of the robot 2 based on the control command.
  • the robot control unit 130 includes a motion control unit 131 and a command buffer 132.
  • the command buffer 132 temporarily stores control commands generated by the memory interpreter 123 in chronological order.
  • the motion control unit 131 controls the motion of the robot 2 based on one or more control commands stored in the memory interpreter 123. For example, the motion control unit 131 repeats control processing based on one or more control commands in a constant control cycle.
  • the control process calculates target rotation angles of the joints 31, 32, 33, 34, 35, and 36 so that the distal end portion 18 moves at a target speed along a motion path represented by one or more control commands. and making the rotation angles of the joints 31, 32, 33, 34, 35, and 36 follow the target rotation angles.
  • the robot controller 100 is configured to be able to control the robot 2 based on an operation program generated in advance inside the robot controller 100, in addition to controlling the robot 2 based on the control commands generated by the memory interpreter 123. You can leave it there.
  • the robot controller 100 may further include a command storage unit 124 and a local interpreter 125.
  • the command storage unit 124 stores an operation program generated in advance.
  • the operation program includes multiple operation commands.
  • the operation commands of the operation program stored in the command storage unit 124 will be referred to as "local commands.”
  • the local interpreter 125 sequentially reads a plurality of local commands from the command storage unit 124 and generates a control command.
  • the command buffer 132 temporarily stores 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 a control command generated by at least one of the memory interpreter 123 and the local interpreter 125.
  • the robot controller 100 has a local control mode in which the motion control unit 131 controls the motion of the robot 2 based on the control commands generated by the local interpreter 125, and a local control mode in which the motion control unit 131 controls the motion of the robot 2 based on the control commands generated by the local interpreter 125. It is possible to provide an application control mode in which the motion of the robot 2 is controlled based on the control commands generated by the memory interpreter 123. Furthermore, it is also possible to operate the robot 2 based on a combination of a plurality of 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 expanded using the calculation results of the calculation module 200.
  • both the local command and the calculation result of the calculation module 200 are converted into control commands in the same format. Therefore, the motion control unit 131 and command buffer 132 can be used in common by operating the robot 2 based on a plurality of 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.
  • the control command may be a command representing the assignment of a value to the control variable described above.
  • the robot control unit 130 assigns values to the control variables based on the control command.
  • the control command may be a command representing an instruction to execute an operation program or job program stored in the command storage unit 124.
  • 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.
  • the robot controller 100 may have a function of dynamically generating or modifying at least a portion of a motion path (for example, at least a portion of a motion program) based on surrounding environment information or the like. Such a function is called a "local generation function.”
  • the control command may be a command representing invoking a local generation function.
  • the robot control unit 130 calls the local generation function of the robot controller 100 based on the control command.
  • 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 be called in the operation program stored in the command storage unit 124.
  • the program generated by the local generation function is read by the local interpreter 125 and executed by the motion control unit 131.
  • the control command may be a command representing the servo-on command described above.
  • the robot control unit 130 starts supplying drive power to the actuators 41, 42, 43, 44, 45, and 46 based on the control command.
  • the control command may be a command representing the above-mentioned alarm reset command. In this case, the robot control unit 130 resets the alarm generated within the robot controller 100.
  • the robot controller 100 may further include a command selection section 126.
  • the command selection unit 126 prohibits input of control commands from the memory interpreter 123 to the motion control unit 131 during a period when the robot 2 is operating based on the control commands generated by the local interpreter 125. During the period when the robot 2 is operating based on the control commands, input of control commands from the local interpreter 125 to the motion control unit 131 is prohibited.
  • the above-described local control mode and application control mode can be realized by coding both the operation program stored in the command storage unit 124 and the application 241.
  • a local control mode and an application control mode are realized by an operation program that includes a local command that calls the application 241 and a local command that waits for the completion of execution of the application 241 in this order. For example, the local control mode transitions to the application control mode midway through, and the local control mode is restarted after the application control mode is completed.
  • the local control mode and the application control mode are also controlled by the application 241 that includes the above-described writing request to the second write area 212 of the execution command and waiting for the completion notification of the operation program corresponding to the execution command in this order. is realized. For example, the application control mode shifts to the local control mode midway through, and the application control mode is restarted after the local control mode is completed.
  • the application 241 generates data used in control based on local commands, requests the memory manager 223 to write the generated data, and the motion control unit 131 generates data to be used in control based on the local command.
  • the motion of the robot 2 may be controlled based on the generated data and the local command read from the command storage unit 124.
  • the application 241 may generate correction data for the movement of the robot 2 based on environmental information acquired by a camera or the like.
  • 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 correction data into a correction variable representing a correction amount for a control command based on a local command.
  • the robot control unit 130 substitutes correction data into correction variables based on the correction command.
  • the motion control unit 131 controls the motion of the robot 2 based on the control commands generated by the local interpreter 125 and correction variables.
  • the memory interpreter 123 may generate a control command based on the local command and the correction variable, taking the correction variable into consideration.
  • the robot controller 100 may further include a response generation section 127.
  • the response generation unit 127 generates a response corresponding to the data read by the memory interpreter 123 and writes it into the first memory 110.
  • the memory manager 223 reads the response from the second memory 210 and passes it to the application 241 that made the request to write the read data. Based on the response, it is possible to easily generate an application 241 that performs calculations in accordance with the execution status of processing based on the request.
  • FIG. 4 is a block diagram illustrating the hardware configuration of the control system 3.
  • the robot controller 100 includes a circuit 190.
  • Circuit 190 includes 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 nonvolatile storage media, and store programs for causing the robot controller 100 to configure the processor 101 and first memory 110 described above.
  • One or more storage devices 193 may store programs for causing the robot controller 100 to further configure each of the functional blocks described above.
  • Each of the one or more storage devices 193 may be a built-in storage medium such as a flash memory or a hard disk, or may be a portable storage medium such as a USB memory or an optical disk.
  • 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 processors 101 by executing programs loaded into one or more memory devices 192, and store the first memory 110 in one or more memory devices 192 or one or more storage devices 193. Configure. One or more processing devices 191 may further configure each of the functional blocks described above. One or more processing devices 191 store the calculation results in one or more memory devices 192 as appropriate.
  • the communication port 194 communicates with the calculation module 200 based on requests from one or more processing devices 191.
  • the driver circuit 195 supplies driving power to the robot 2 (actuators 41, 42, 43, 44, 45, 46) based on requests from one or more processing devices 191.
  • the calculation module 200 has a circuit 290.
  • Circuit 290 includes one or more processing devices 291 , one or more memory devices 292 , one or more storage devices 293 , communication ports 294 , and user interface 295 .
  • One or more storage devices 293 are nonvolatile storage media, and store programs for configuring the processor 201 and second memory 210 in the arithmetic module 200 described above.
  • One or more storage devices 293 may store programs for causing the calculation module 200 to further configure each of the functional blocks described above.
  • Each of the one or more storage devices 293 may be a built-in storage medium such as a flash memory or a hard disk, or may be a portable storage medium such as a USB memory or an optical disk.
  • 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 processors 201 by executing programs loaded into one or more memory devices 292, and store second memory 210 in one or more memory devices 292 or one or more storage devices 293. Configure.
  • One or more processing devices 291 may further configure each of the functional blocks described above.
  • One or more processing devices 291 store the calculation results in one or more memory devices 292 as appropriate.
  • the communication port 294 communicates with the robot controller 100 based on requests from one or more processing devices 291.
  • User interface 295 communicates with a user based on requests from one or more processing devices 291 .
  • user interface 295 includes a display device and an input device. Examples of display devices include liquid crystal monitors and organic EL (Electro-Luminescence) monitors. Examples of input devices include a keyboard, mouse, or keypad. The input device may be integrated with the display device as a touch panel.
  • Control procedure As an example of the control method, a control procedure executed by the control system 3 will be illustrated. This procedure includes storing 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 performing calculation.
  • the module 200 executes an application 241 that performs calculations related to the control of the robot 2 based on the contents of the second memory 210.
  • this procedure will be illustrated in detail by dividing it into a memory synchronization procedure, a data writing procedure by the arithmetic module 200, a data reading procedure by the arithmetic module 200, and a robot 2 control procedure.
  • a control procedure in which local control and application control are executed serially, and a control procedure in which local control and application control are executed in parallel are illustrated, respectively.
  • FIG. 5 is a flowchart illustrating a memory synchronization procedure in the robot controller 100.
  • the robot controller 100 executes steps S01, S02, S03, and S04.
  • step S01 the first transmitter 128 transmits the contents of the first write area 111 to the calculation module 200.
  • step S02 the first synchronization unit 121 waits for receiving the contents of the second write area 212 from the second transmission unit 228.
  • step S03 the first synchronization section 121 synchronizes the contents of the second reading area 112 with the contents received from the second transmission section 228.
  • step S04 the first transmitter 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 the process to step S01. The robot controller 100 repeats the above process.
  • FIG. 6 is a flowchart illustrating a memory synchronization procedure in the calculation module 200.
  • the calculation module 200 executes steps S11, S12, and S13.
  • step S11 the second synchronization unit 221 waits for receiving the contents of the first write area 111 from the first transmission unit 128.
  • step S12 the second synchronization unit 221 synchronizes the content of the first reading area 211 with the content received from the first transmission unit 128.
  • the second transmitter 228 transmits the contents of the second write area 212 to the robot controller 100. Thereafter, the calculation module 200 returns the process to step S11.
  • the calculation module 200 repeats the above processing.
  • the contents of the first write area 111 are repeatedly transmitted in the synchronization cycle, and the contents of the second read area 112 are repeatedly synchronized with the contents of the second write area 212.
  • the contents of the second write area 212 are repeatedly transmitted in the synchronization cycle, and the contents of the first read area 211 are repeatedly synchronized with the contents of the first write area 111.
  • FIG. 7 is a flowchart illustrating a data writing procedure by the memory manager 223.
  • the calculation module 200 executes step S21.
  • the memory manager 223 checks whether the application 241 is requesting data writing. If it is determined in step S21 that there is a request to write data, the arithmetic module 200 executes step S22.
  • the memory manager 223 queues a data write request in the request storage unit 225.
  • step S21 if it is determined that no data write request has been made, the arithmetic module 200 executes step S23.
  • step S23 the memory manager 223 checks whether a response corresponding to the data read from the second reading area 112 is present in the first reading area 211. If it is determined in step S23 that there is no response, the calculation module 200 returns the process to step S21. If it is determined in step S23 that there is a response, the calculation module 200 executes steps S24, S25, and S26.
  • step S24 the memory manager 223 passes a response to the application 241 that made the request to write the read data.
  • step S25 the memory manager 223 issues a request next to the request corresponding to the response from the request storage unit 225.
  • step S26 the memory manager 223 writes data corresponding to the issued request into the second write area 212. After executing step S22 or step S26, the calculation module 200 returns the process to step S21. The calculation module 200 repeats the above processing.
  • FIG. 8 is a flowchart illustrating a data read procedure.
  • the calculation module 200 executes steps S31, S32, and S33.
  • step S31 the memory manager 223 waits for the application 241 to make a request to read data.
  • step S32 the memory manager 223 reads data corresponding to the request from the first read area 211.
  • step S33 the memory manager 223 passes a response including the read data to the application 241.
  • the calculation module 200 returns the process to step S31.
  • the calculation module 200 repeats the above processing.
  • “Local control” means control based on a control command generated by the local interpreter 125
  • “application control” means control based on a control command generated by the memory interpreter 123.
  • An example will be shown below in which application control is executed after local control is interrupted, and local control is resumed after execution of application control.
  • An example of application control is control that causes the robot 2 to operate on a motion path based on surrounding environment information.
  • FIG. 9 is a flowchart illustrating a procedure in which the application 241 generates a motion path in response to a call from the robot controller 100.
  • the calculation module 200 that executes the application 241 executes steps S41, S42, and S43.
  • step S41 the application 241 uses the monitoring API 233 to request the above-mentioned call data readout.
  • step S42 the application 241 waits for a response to the request to be delivered from the memory manager 223.
  • step S43 the application 241 checks based on the call data whether or not the start of processing has been instructed (whether or not it has been called). If it is determined in step S43 that the start of the process has not been instructed, the calculation module 200 returns the process to step S41. Thereafter, reading of the call data is repeated until it is determined based on the call data that a process start is instructed.
  • the call data that instructs the start of processing includes information that specifies the start point and end point of the motion path.
  • the starting point includes the movement start position and movement start attitude of the tip portion 18.
  • the end point includes the movement completion position and movement completion attitude of the tip portion 18.
  • step S44 the application 241 generates a motion path from the start point to the end point based on surrounding environment information stored in advance.
  • the surrounding environment information includes a three-dimensional model of the robot 2 and a three-dimensional model of objects surrounding the robot 2.
  • the application 241 generates a motion path based on the surrounding environment information so that the robot 2 does not interfere with (collide with) surrounding objects.
  • the application 241 generates one or more control data corresponding to one or more waypoints including the end point. Each of the one or more pieces of control data includes a target position and a target speed corresponding to the waypoint.
  • step S45 the application 241 uses the motion API 231 to request writing of control data that has not yet been written to the second write area 212 among the one or more generated control data.
  • step S46 the application 241 waits for a response to the request to be delivered from the memory manager 223.
  • step S47 the application 241 checks whether there is any next control data that has not been written to the second write area 212. If it is determined in step S47 that there is next control data, the calculation module 200 returns the process to step S45. Thereafter, the control data write request is repeated until all the control data has been written.
  • step S47 If it is determined in step S47 that all the control data has been written to the second write area 212, the calculation module 200 executes steps S51 and S52.
  • step S51 the application 241 uses the motion API 231 to request writing of an execution completion notification.
  • step S52 the application 241 waits for a response to the request to be delivered from the memory manager 223. This completes the path generation procedure by the application 241.
  • FIG. 10 is a flowchart illustrating a procedure for reading a plurality of local commands including a call to the application 241 that generates a path.
  • the robot controller 100 executes steps S61, S62, and S63.
  • step S61 the local interpreter 125 waits until the command buffer 132 becomes free.
  • step S62 the local interpreter 125 reads the local command from the command storage unit 124.
  • step S63 the local interpreter 125 checks whether the local command is a command that calls the application 241.
  • a command that calls the application 241 will be referred to as a "call command.”
  • step S63 If it is determined in step S63 that the local command is not a call command, the robot controller 100 executes steps S64 and S65.
  • step S64 the local interpreter 125 generates a control command based on the read local command and stores it in the command buffer 132.
  • step S65 the local interpreter 125 checks whether the command storage unit 124 has the next local command. If it is determined in step S65 that there is a next local command, the robot controller 100 returns the process to step S61.
  • step S62 If it is determined in step S62 that the local command is a call command, the robot controller 100 executes steps S66 and S67.
  • step S66 the robot control unit 130 writes call data for the application 241 into the first write area 111.
  • step S67 the local interpreter 125 starts waiting for notification of completion of execution of the application 241.
  • FIG. 11 is a flowchart illustrating a procedure for reading control data generated by the application 241.
  • the robot controller 100 next executes steps S71 and S72.
  • step S71 the memory interpreter 123 waits until the command buffer 132 becomes free.
  • step S72 the memory interpreter 123 waits for the control data written by the application 241 to be stored in the second read area 112.
  • step S73 the memory interpreter 123 reads the control data from the second read area 112.
  • step S74 the memory interpreter 123 generates a control command based on the control data and stores it in the command buffer 132.
  • step S75 the response generation unit 127 generates a response corresponding to the control data and stores it in the first write area 111.
  • step S76 the memory interpreter 123 checks whether the execution completion notification written by the application 241 is stored in the second reading area 112. If it is determined in step S76 that the execution completion notification is not stored in the second reading area 112, the robot controller 100 returns the process to step S71.
  • step S76 If it is determined in step S76 that the execution completion notification is stored in the second reading area 112, the robot controller 100 executes step S77.
  • step S77 the robot control unit 130 causes the local interpreter 125 to cancel waiting for notification of completion of execution of the application 241. This allows the local interpreter 125 to resume reading local commands. After that, the robot controller 100 returns the process to step S61 in FIG. 10. Thereafter, the reading of local commands by the local interpreter 125 continues until it is determined in step S65 that there is no next local command. If it is determined in step S65 that there is no next local command, the robot controller 100 completes reading the local command.
  • FIG. 12 is a flowchart illustrating a control execution procedure based on a control command.
  • the robot controller 100 executes steps S81 and S82.
  • step S81 the motion control unit 131 controls the joints 31, 32, 33, 34 to move the distal end 18 at a target speed along a motion path represented by one or more control commands stored in the command buffer 132. , 35, and 36 are calculated.
  • step S82 the motion control unit 131 causes the actuators 41, 42, 43, 44, 45, and 46 to make the angles of the joints 31, 32, 33, 34, 35, and 36 follow the target rotation angle.
  • step S83 the status collection unit 122 acquires status information of the robot 2.
  • step S84 the status collection unit 122 writes the status information of the robot 2 into the first writing area 111.
  • step S85 the motion control unit 131 waits for the control cycle to elapse.
  • 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 the process to step S81. Thereafter, the above control processing is repeated in control cycles until the execution of the operating 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 controlling the motion of the robot 2.
  • FIG. 13 is a flowchart illustrating a command selection procedure executed by the robot controller 100 using the command selection unit 126.
  • the robot controller 100 executes step S91.
  • step S91 the command selection unit 126 confirms whether or not the robot 2 has started operating based on the local command. If it is determined in step S91 that the movement of the robot 2 based on the local command has not been started, the robot controller 100 executes step S92.
  • step S92 the command selection unit 126 confirms whether or not the robot 2 has started operating based on the execution result of the application 241. If it is determined in step S92 that the operation of the robot 2 has not been started, the robot controller 100 returns the process to step S91.
  • step S91 the robot controller 100 executes steps S93, S94, and S95.
  • step S93 the command selection unit 126 prohibits input of control commands from the memory interpreter 123 to the motion control unit 131.
  • the command selection unit 126 prohibits the memory interpreter 123 from writing a control command into the command buffer 132.
  • step S94 the command selection unit 126 waits for the robot 2 to complete its operation based on the local command.
  • step S95 the command selection unit 126 cancels the inhibition of inputting control commands from the memory interpreter 123 to the motion control unit 131.
  • step S92 the robot controller 100 executes steps S96, S97, and S98.
  • step S96 the command selection unit 126 prohibits input of control commands from the local interpreter 125 to the motion control unit 131.
  • the command selection unit 126 prohibits the local interpreter 125 from writing a control command into the command buffer 132.
  • step S97 the command selection unit 126 waits for the robot 2 to complete its operation based on the execution result of the application 241.
  • step S98 the command selection unit 126 cancels the inhibition of inputting control commands from the local interpreter 125 to the motion control unit 131.
  • step S95 or step S98 the robot controller 100 returns the process to step S91.
  • the robot controller 100 repeats the above process.
  • Control procedure for executing local control and application control in parallel An example in which part of local control is executed in parallel with application control will be shown below.
  • An example of application control is control that corrects a control command based on surrounding environment information.
  • FIG. 14 is a flowchart illustrating a procedure in which the application 241 performs a correction calculation in response to a call from the robot controller 100.
  • the calculation module 200 that executes the application 241 executes steps S101, S102, and S103.
  • step S101 the application 241 makes a request to read call data using the monitoring API 233.
  • step S102 the application 241 waits for a response to the request to be delivered from the memory manager 223.
  • step S103 the application 241 checks whether or not correction start has been instructed based on the call data. If it is determined in step S103 that the start of correction has not been instructed, the calculation module 200 returns the process to step S101. Thereafter, reading of the call data is repeated until it is determined that an instruction to start correction has been given based on the call data.
  • step S104 the application 241 acquires environmental information such as an image taken by a camera.
  • step S105 the application 241 generates correction data based on the environmental information.
  • step S106 the application 241 uses the motion API 231 to request writing of correction data.
  • step S107 the application 241 waits for a response to the request to be passed from the memory manager 223.
  • step S111 the application 241 makes a request to read call data using the monitoring API 233.
  • step S112 the application 241 waits for a response to the request to be delivered from the memory manager 223.
  • step S113 the application 241 checks whether or not correction stop has been instructed based on the call data.
  • step S113 If it is determined in step S113 that stop of correction has not been instructed, the calculation module 200 returns the process to step S104. Thereafter, generation of correction data is repeated until it is determined that an instruction to stop correction has been given based on the call data. If it is determined in step S113 that correction stop has been instructed based on the call data, the calculation module 200 completes the generation of correction data.
  • FIG. 15 is a flowchart illustrating a procedure for reading out a plurality of local commands including a call to the application 241 that performs correction calculations.
  • the robot controller 100 executes S121, S122, S123, and S124.
  • step S121 the local interpreter 125 waits until the command buffer 132 becomes free.
  • step S122 the local interpreter 125 reads the local command from the command storage unit 124.
  • step S123 the local interpreter 125 generates a control command based on the read local command and stores it in the command buffer 132.
  • the local interpreter 125 checks whether the command storage unit 124 has the next local command. If it is determined in step S124 that there is the next local command, the robot controller 100 returns the process to step S121.
  • FIG. 16 is a flowchart illustrating a procedure for reading correction data generated by the application 241.
  • the value of the correction variable described above is zero (no correction).
  • the robot controller 100 executes steps S131 and S132.
  • step S131 the robot control unit 130 waits for a timing to execute a local command that causes the application 241 to start correction based on the execution status (execution progress status) of the control command stored in the command buffer 132.
  • the local command that causes the application 241 to start correction will be referred to as a "correction start command.”
  • the robot control unit 130 writes call data indicating the start of correction into the first writing area 111.
  • step S133 the memory interpreter 123 waits for the correction data written by the application 241 to be stored in the second read area 112.
  • step S134 the memory interpreter 123 reads the correction data from the second read area 112.
  • step S135 the memory interpreter 123 generates the above-described correction command and inputs it to the robot control unit 130.
  • the robot control unit 130 substitutes the correction data into the above-mentioned correction variables based on the correction command.
  • step S136 the response generation unit 127 generates a response corresponding to the correction data and stores it in the first write area 111.
  • step S137 the robot control unit 130 checks whether it is the timing to execute a local command that causes the application 241 to stop correction based on the execution status (execution progress status) of the control command stored in the command buffer 132. .
  • a local command that causes the application 241 to stop correction will be referred to as a "correction stop command.”
  • step S137 If it is determined in step S137 that it is not the timing to execute the correction stop command, the robot controller 100 returns the process to step S133. Thereafter, reading out the correction data and substituting the correction data into the correction variables are repeated until it is time to execute the correction stop command.
  • step S137 If it is determined in step S137 that it is the timing to execute the correction stop command, the robot controller 100 executes steps S138 and S139.
  • step S138 the robot control unit 130 clears the correction variable (sets it to zero).
  • step S139 the robot control unit 130 writes call data indicating a correction stop into the first writing area 111. This completes the correction data reading procedure.
  • FIG. 17 is a flowchart illustrating a control execution procedure based on control commands and correction data.
  • the robot controller 100 executes step S141.
  • the motion control unit 131 controls the joints 31 and 32 to move the distal end 18 at a target speed along a corrected path in which a motion path represented by one or more control commands is corrected based on correction variables. , 33, 34, 35, and 36 are calculated.
  • the corrected path when the correction variable is zero is the same as the operating path represented by one or more control commands.
  • 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 the process to step S141. Thereafter, the above control processing is repeated in control cycles until the execution of the operating 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 control of the motion of the robot 2.
  • the control system 3 includes the robot controller 100 that controls the robot 2 and the arithmetic module 200 that communicates with the robot controller 100, and the robot controller 100 stores state information of the robot 2.
  • the calculation module 200 includes a first memory 110, a second memory 210 whose contents are synchronized with the first memory 110, and an application 241 that performs calculations related to the control of the robot 2 based on the contents of the second memory 210. and a processor 201 capable of executing.
  • the application 241 can be easily constructed without considering special rules such as a data exchange protocol between the robot controller 100 and the calculation module 200. According to the constructed application 241, it becomes possible to assist or lead the control of the robot 2 by the robot controller 100. Therefore, the functions of the robot controller 100 can be easily expanded.
  • the robot controller 100 further includes a first synchronization section 121 that synchronizes the contents of the first memory 110 with the contents of the second memory 210 at regular intervals through network communication. It may further include a second synchronization unit 221 that synchronizes the contents of 210 with the contents of the first memory 110 at regular intervals.
  • the first memory 110 and the second memory 210 are mutually updated at regular intervals through network communication. Therefore, the application 241 can be easily constructed without being aware of network communication protocols and the like. Moreover, by having network communication take charge of simple synchronization between memories, the robot controller 100 and the calculation module 200 can be connected through general-purpose network communication, and the construction cost of the control system 3 can be reduced.
  • various devices can be connected to the robot controller 100 as the calculation module 200. Utilizing this, the cost for the developer of the application 241 to become familiar with the architecture of the computing module 200 can be significantly reduced by using a device with a more general-purpose architecture as the computing module 200.
  • the computing module 200 may further include a memory manager 223 that performs at least one of writing and reading data to and from the second memory 210 based on a request from the application 241.
  • a memory manager 223 that performs at least one of writing and reading data to and from the second memory 210 based on a request from the application 241.
  • the computing module 200 further includes an application storage section 240 that stores one or more applications 241, and the memory manager 223 associates the contents of the second memory 210 associated with the applications 241 stored in the application storage section 240.
  • the received application 241 may be notified. It becomes possible to notify the application 241 from the robot controller 100 via the first memory 110 and the second memory 210. Thereby, the application 241 that operates based on notifications from the robot controller 100 can be easily constructed. According to the application 241 that operates based on the notification from the robot controller 100, it becomes possible to start the application 241 requested by the robot controller 100 based on the notification from the robot controller 100. Furthermore, at least some calculations in the activated application 241 can be started at a timing requested by the robot controller 100.
  • the memory manager 223 has an API 230 that supports control of the robot 2, and when it receives a request from the application 241 through the API 230, it may write data corresponding to the request into the second memory 210.
  • the functions expanded by the application 241 can be easily reflected in the control of the robot 2 by the API 230. Furthermore, since the second memory 210 is wrapped by the API 230, security against erroneous operations, secret leaks, etc. can be improved.
  • the robot controller 100 further includes a state collection unit 122 that writes at least the state information of the robot 2 into the first memory 110, and the memory manager 223 acquires state information from the second memory 210 in response to a request from the application 241. It may also be passed 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, the application 241 based on the state information of the robot 2 can be easily constructed by simply incorporating reading of the state information from the second memory 210 into the application 241. Further, by limiting the state information written to the first memory 110, it is possible to easily prevent the state information of the robot 2 from being acquired without limit.
  • the status collection unit 122 writes the status information to the first write area 111 of the first memory 110, and the memory manager 223 writes the status information from the first read area 211 of the second memory 210 corresponding to the first write area 111.
  • Information may be acquired and passed to the application 241, and data may be written based on a request from the application 241 to a second write area 212 of the second memory 210 that is different from the first read area 211. . Since data writing from the application 241 is performed in the second write area 212 that is different from the first read area 211 for acquiring status information, the status information stored in the first read area 211 is It is possible to always synchronize with the status information written by the status collection unit 122. This allows status information to be provided to the application 241 at any timing. Therefore, the application 241 based on the state information can be easily constructed without being aware of the timing of obtaining the state information.
  • the robot controller 100 may further include a memory interpreter 123 that generates control commands that can be executed within the robot controller 100 based on the data read from the first memory 110.
  • the function of the robot controller 100 that controls the robot 2 using control commands can be easily expanded using the calculation results of the calculation module 200. Furthermore, by freely combining the operation program generated to control the robot 2 using the control commands and the calculation results of the calculation module 200, it is possible to cause the robot controller 100 to perform more diverse controls. It is also possible to develop the operating program itself that was generated in the past separately from the calculation module 200.
  • the robot controller 100 includes a command storage unit 124 that can store 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 memory interpreter 123 and a local interpreter 125.
  • the robot 2 may further include a motion control unit 131 that controls the motion of the robot 2 based on a control command generated by at least one of the robots. It is possible to operate the robot 2 based on a plurality of local commands and to operate the robot 2 based on the calculation result of the calculation module 200. Furthermore, it is also possible to operate the robot 2 based on a combination of a plurality of local commands and the calculation results of the calculation module 200.
  • the function of controlling the robot 2 based on local commands can be easily expanded using the calculation results of the calculation module 200. Furthermore, both the local command and the calculation result of the calculation module 200 are converted into control commands in the same format. Therefore, the motion control unit 131 can be used in common by operating the robot 2 based on a plurality of 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.
  • the robot controller 100 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 the control commands generated by the local interpreter 125.
  • the robot 2 may further include a command selection unit 126 that prohibits input of control commands from the local interpreter 125 to the motion control unit 131 while the robot 2 is operating based on the control commands. It is possible to prevent the control commands from the local interpreter 125 and the control commands from the memory interpreter 123 from unexpectedly mixing and causing the robot 2 to malfunction.
  • the application 241 generates data used in control based on local commands, requests the memory manager 223 to write the generated data, and the motion control unit 131 generates data to be used in control based on the local command.
  • the motion of the robot 2 may be controlled based on the generated data and the local command read from the command storage unit 124.
  • the robot controller 100 has 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 a local control mode in which the motion control unit 131 controls the motion of the robot 2 based on the control commands generated by the local interpreter 125.
  • the robot 2 may also have an application control mode in which the motion of the robot 2 is controlled based on control commands generated by the robot 123.
  • the functions of the robot controller 100 can be easily expanded. In either mode, control by the motion control unit 131 is performed based on control commands of the same format, so the arithmetic module 200 can be added to a part of the architecture for the local control mode without changing the architecture. Can be done. Therefore, control based on the calculation result by the application 241 can be easily added to the robot controller 100 while making use of the operation program generated in the past for the local control mode. It is also possible to develop the operating program itself that was generated in the past separately from the application 241.
  • 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 into the first memory 110, and the memory manager 223 reads the response from the second memory 210, It may also be passed to the application 241 that made the request to write the read data. Based on the response, it is possible to easily generate an application 241 that performs calculations in accordance with the execution status of processing based on the request.
  • the memory manager 223 queues multiple requests from one or more applications 241 in the request storage unit 225, sequentially issues the multiple requests from the request storage unit 225, and stores data corresponding to the issued requests in the second memory 210. You can also write in Since the memory manager 223 performs queuing of requests, the application 241 can be constructed to make requests at any time without considering the risk of accidentally overwriting a preceding request. Even when two or more applications 241 can be executed simultaneously, each application 241 can be configured to make requests at any time without considering the status of requests by other applications 241. Therefore, the cost of building the application 241 can be further reduced.
  • the memory manager 223 When the memory manager 223 reads a response from the second memory 210, it may issue a request subsequent to the request corresponding to the response from the request storage unit 225. It is possible to achieve both the degree of freedom of the application 241 and the real-time performance of the robot controller 100.
  • 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. .
  • 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. .
  • the calculation module 200 includes a shared memory (second memory 210) that stores information referenced by the robot controller 100 that controls the robot 2, and controls the robot 2 based on the contents of the shared memory. It includes a processor 201 that can execute an application 241 that performs related calculations, and a memory manager 223 that performs at least one of writing and reading data to and from a shared memory based on a request from the application 241.
  • the calculation module 200 also includes a shared memory that stores information written by the robot controller 100 that controls the robot 2, and an application storage unit 240 that stores one or more applications 241 that perform calculations based on the contents of the memory. It includes a memory manager 223 that notifies the associated application 241 of the content of the shared memory associated with the application 241 stored in the application storage unit 240.
  • 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 state information of the robot 2; a state collection unit 122 that writes at least state information to the shared memory; and a memory interpreter 123 that generates control commands executable within the robot controller 100 based on data written to the shared memory based on calculation results by the application 241. , and a motion control unit 131 that controls the motion of the robot 2 based on control commands.
  • 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 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 executable within the robot controller 100 based on data written to the shared memory based on calculation results by the application 241.
  • a motion control unit 131 that
  • the control system 3 includes a processor 201 capable of executing an application 241 that performs calculations related to controlling the robot 2, and a processor 201 that writes and reads data to and from a shared memory (second memory 210) based on requests from the application 241.
  • a memory manager 223 that performs at least one of these functions, a command storage unit 124 that can store 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 shared memory ( a memory interpreter 123 that generates a control command based on data read out from the memory 110); and a motion control that controls the motion of the robot 2 based on a control command generated by at least one of the memory interpreter 123 and the local interpreter 125.
  • the shared memory does not necessarily have to be divided into first memory 110 and second memory 210 that are synchronized with each other.
  • the control system 3 includes a command storage unit 124 that can store a plurality of local commands for controlling the robot 2, and an arithmetic module that generates data used in control based on the local commands and writes the generated data to a shared memory. 200, 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 command read from the command storage unit 124.
  • a robot controller that controls the robot; a calculation module communicating with the robot controller; Equipped with The robot controller has a first memory in which state information of the robot is stored;
  • the 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 controlling the robot based on the contents of the second memory; has, control system.
  • 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 through network communication
  • the 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 through the network communication.
  • the arithmetic module further includes a memory manager that performs at least one of writing and reading data to and from the second memory based on a request from an application.
  • the control system according to [1] or [2].
  • the calculation module further includes an application storage unit that stores 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] Control system described.
  • the memory manager has an API corresponding to control of the robot, and when a request from an application is accepted by the API, writes data corresponding to the request to the second memory.
  • the control system according to [3] or [4].
  • the robot controller further includes a state collection unit that writes at least the state information of the robot into the first memory,
  • the memory manager obtains the state information from the second memory and passes it to the application in response to a request from the application.
  • the control system according to any one of [3] to [5].
  • the state collection unit writes the state information in a first write area of the first memory;
  • the memory manager acquires the state information from a first read area of the second memory corresponding to the first write area and passes it to an application; writing data based on a request from an application to a second write area different from the first read area of the second memory; [6] The control system described.
  • the robot controller further includes a memory interpreter that generates a control command executable within the robot controller based on the data read from the first memory. [7] The control system described.
  • the robot controller includes: a command storage unit that can store 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 that controls the motion of the robot based on the control command generated by at least one of the memory interpreter and the local interpreter; further having, [8] The control system described.
  • the robot controller prohibits input of the control commands from the memory interpreter to the motion control unit during a period when the robot is operating based on the control commands generated by the local interpreter;
  • the robot further includes a command selection unit that prohibits input of the control command from the local interpreter to the motion control unit while the robot is operating based on the generated control command.
  • the application generates data used in 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 according to [9] or [10].
  • the robot controller includes: a local control mode in which the motion control unit controls the motion of the robot based on the control command generated by the local interpreter; an application control mode in which the motion control unit controls the motion of the robot based on the control command generated by the memory interpreter based on a calculation result by an application; has, The control system according to any one of [9] to [11].
  • 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 into 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 memory manager queues a plurality of requests from one or more applications in a request storage unit, sequentially dispatches the plurality of requests from the request storage unit, and writes data corresponding to the issued requests to the second memory.
  • the control system according to [12] or [13].
  • the memory manager 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 [14] or [15].
  • a shared memory that stores information referenced by a robot controller that controls the robot; a processor capable of executing an application that performs calculations related to controlling the robot based on the contents of the shared memory; a memory manager that writes or reads data to or from the shared memory based on a request from an application; A calculation module equipped with.
  • 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; 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 calculation module equipped with.
  • a shared memory that stores information written by a calculation module capable of executing an application that performs calculations related to control of the robot based on state information of the robot; a state collection unit that writes at least the 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 calculation results by the application; a motion control unit that controls the motion of the robot based on the control command;
  • a processor capable of executing an application that performs calculations related to robot control; a memory manager that at least writes and reads data to and from the shared memory based on a request from an application; a command storage unit that can store multiple local commands; a local interpreter that sequentially reads the plurality of local commands from the command storage unit and generates a control command; a memory interpreter that generates the control command based on data read from the shared memory; a motion control unit that controls the motion of the robot based on the control command generated by at least one of the memory interpreter and the local interpreter; A control system equipped with
  • a command storage unit that can store multiple local commands for controlling the robot; a calculation module that generates data used in 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 command read from the command storage unit;
  • 2... Robot, 3... Control system 100... Robot controller, 200... Arithmetic 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...Status collection unit, 225...Request Storage section, 123...Memory interpreter, 131...Motion control section, 124...Command storage section, 125...Local interpreter, 126...Command selection section, 127...Response generation section.

Landscapes

  • Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Numerical Control (AREA)

Abstract

制御システム3は、ロボット2を制御するロボットコントローラ100と、ロボットコントローラ100と通信する演算モジュール200と、を備え、ロボットコントローラ100は、ロボット2の状態情報が格納される第1メモリ110を有し、演算モジュール200は、第1メモリ110と内容が同期される第2メモリ210と、第2メモリ210の内容に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能なプロセッサ201と、を有する。

Description

制御システム、演算モジュール、ロボットコントローラ、及び制御方法
 本開示は、制御システム、演算モジュール、ロボットコントローラ、及び制御方法に関する。
 特許文献1には、非リアルタイムOS及びリアルタイムOSがインストールされ、制御対象装置をモーション制御するモーション制御装置が開示されている。モーション制御装置は、非リアルタイムOS側の各機能部とリアルタイムOS側の各機能部とから共通に参照及び書込み可能な共有メモリを有する。
特開2019-220135号公報
 本開示は、ロボットコントローラの機能を容易に拡張可能なシステムを提供する。
 本開示の一側面に係る制御システムは、ロボットを制御するロボットコントローラと、ロボットコントローラと通信する演算モジュールと、を備え、ロボットコントローラは、ロボットの状態情報が格納される第1メモリを有し、演算モジュールは、第1メモリと内容が同期される第2メモリと、第2メモリの内容に基づいて、ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、を有する。
 本開示の他の側面に係る演算モジュールは、ロボットを制御するロボットコントローラが参照する情報を記憶する共有メモリと、共有メモリの内容に基づいて、ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、アプリケーションからのリクエストに基づいて、共有メモリに対してデータの書き込み又は読み出しの少なくとも一方を行うメモリマネージャと、を備える。
 本開示の更に他の側面に係る演算モジュールは、ロボットを制御するロボットコントローラにより書き込まれた情報を記憶する共有メモリと、メモリの内容に基づいて演算を行う1以上のアプリケーションを保存するアプリ保存部と、アプリ保存部に保存されたアプリケーションに関連付けられた共有メモリの内容を、関連付けられたアプリケーションに通知するメモリマネージャと、を備える。
 本開示の更に他の側面に係るロボットコントローラは、ロボットの状態情報に基づいて、ロボットの制御に関わる演算を行うアプリケーションを実行可能な演算モジュールにより書き込まれた情報を記憶する共有メモリと、少なくとも状態情報を共有メモリに書き込む状態収集部と、アプリケーションによる演算結果に基づき共有メモリに書き込まれたデータに基づいて、ロボットコントローラの内部で実行可能な制御コマンドを生成するメモリインタプリタと、制御コマンドに基づいて、ロボットのモーションを制御するモーション制御部と、を備える。
 本開示の更に他の側面に係る制御システムは、ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、アプリケーションからのリクエストに基づいて、共有メモリに対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャと、複数のローカルコマンドを記憶可能なコマンド記憶部と、コマンド記憶部から複数のローカルコマンドを順次読み出し、制御コマンドを生成するローカルインタプリタと、共有メモリから読み出したデータに基づいて、制御コマンドを生成するメモリインタプリタと、メモリインタプリタ及びローカルインタプリタの少なくとも一方が生成した制御コマンドに基づいて、ロボットのモーションを制御するモーション制御部と、を備える。
 本開示の更に他の側面に係る制御システムは、ロボットを制御するための複数のローカルコマンドを記憶可能なコマンド記憶部と、ローカルコマンドに基づく制御で使用されるデータを生成し、生成済みデータを共有メモリに書き込む演算モジュールと、共有メモリから読み出された生成済みデータと、コマンド記憶部から読み出されたローカルコマンドとに基づいてロボットのモーションを制御するモーション制御部と、を備える。
 本開示の更に他の側面に係る制御方法は、ロボットを制御するロボットコントローラにより、ロボットの状態情報を第1メモリに格納することと、ロボットコントローラと通信する演算モジュールにより、第2メモリの内容を第1メモリの内容に同期させることと、演算モジュールにより、第2メモリの内容に基づいて、ロボットの制御に関わる演算を行うアプリケーションを実行することと、を含む。
 本開示によれば、ロボットコントローラの機能を容易に拡張可能なシステムを提供することができる。
ロボットシステムの構成を例示する模式図である。 演算モジュールの機能的な構成を例示するブロック図である。 ロボットコントローラの機能的な構成を例示するブロック図である。 制御システムのハードウェア構成を例示するブロック図である。 ロボットコントローラにおけるメモリ同期手順を例示するフローチャートである。 演算モジュールにおけるメモリ同期手順を例示するフローチャートである。 メモリマネージャによるデータの書き込み手順を例示するフローチャートである。 メモリマネージャによるデータの読み出し手順を例示するフローチャートである。 ロボットコントローラからのコールに応じてアプリケーションが動作パスを生成する手順を例示するフローチャートである。 パス生成を行うアプリケーションのコールを含む複数のローカルコマンドの読み出し手順を例示するフローチャートである。 アプリケーションが生成した指令データの読み出し手順を例示するフローチャートである。 制御コマンドに基づく制御の実行手順を例示するフローチャートである。 コマンド選択手順を例示するフローチャートである。 ロボットコントローラからのコールに応じてアプリケーションが補正演算を行う手順を例示するフローチャートである。 補正演算を行うアプリケーションのコールを含む複数のローカルコマンドの読み出し手順を例示するフローチャートである。 アプリケーションが生成した補正データの読み出し手順を例示するフローチャートである。 制御コマンド及び補正データに基づく制御の実行手順を例示するフローチャートである。
 以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
〔ロボットシステム〕
 図1に示すロボットシステム1は、ロボット2により、ワークの生産等の様々な作業を実行させるシステムである。ロボットシステム1は、例えばバイオメディカル分野等、産業分野以外の分野においてロボット2に作業を実行させるシステムであってもよい。図1に示すように、ロボットシステム1は、ロボット2と、制御システム3とを備える。
 ロボット2は、6軸の垂直多関節ロボットであり、基部11と、旋回部12と、第1アーム13と、第2アーム14と、第3アーム17と、先端部18と、アクチュエータ41,42,43,44,45,46とを有する。基部11は、床面、壁面、又は天井面、又は無人搬送車上等に設置されている。旋回部12は、鉛直な軸線21まわりに旋回するように基部11上に設けられている。第1アーム13は、軸線21に交差(例えば直交)する軸線22まわりに揺動するように旋回部12に接続されており、軸線22から離れる方向に向かって延びている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。以下においても同様である。
 第2アーム14は、軸線22に実質的に平行な軸線23まわりに揺動するように第1アーム13の先端部に接続されており、軸線23から離れる方向に向かって延びている。第2アーム14は、アーム基部15とアーム端部16とを含む。アーム基部15は、第1アーム13の先端部に接続されている。アーム端部16は、軸線23に交差(例えば直交)する軸線24まわりに旋回するようにアーム基部15の先端部に接続されており、軸線24に沿ってアーム基部15から離れる方向に向かって延びている。
 第3アーム17は、軸線24に交差(例えば直交)する軸線25まわりに揺動するようにアーム端部16の先端部に接続されている。先端部18は、軸線25に交差(例えば直交)する軸線26まわりに旋回するように第3アーム17の先端部に接続されている。
 このように、ロボット2は、基部11と旋回部12とを接続する関節31と、旋回部12と第1アーム13とを接続する関節32と、第1アーム13と第2アーム14とを接続する関節33と、第2アーム14においてアーム基部15とアーム端部16とを接続する関節34と、アーム端部16と第3アーム17とを接続する関節35と、第3アーム17と先端部18とを接続する関節36とを有する。
 アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、関節31,32,33,34,35,36をそれぞれ駆動する。例えばアクチュエータ41は軸線21まわりに旋回部12を旋回させ、アクチュエータ42は軸線22まわりに第1アーム13を揺動させ、アクチュエータ43は軸線23まわりに第2アーム14を揺動させ、アクチュエータ44は軸線24まわりにアーム端部16を旋回させ、アクチュエータ45は軸線25まわりに第3アーム17を揺動させ、アクチュエータ46は軸線26まわりに先端部18を旋回させる。
 なお、ロボット2の具体的な構成は適宜変更可能である。例えばロボット2は、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
 制御システム3は、ロボット2を制御する。以下、制御システム3の構成を詳細に例示する。
〔制御システム〕
 制御システム3は、ロボット2を制御するロボットコントローラ100を備える。例えばロボットコントローラ100は、ロボット2を制御するための駆動電力を生成し、アクチュエータ41,42,43,44,45,46に供給する。ロボット2の制御の例としては、予め定められた動作プログラムに基づいてロボット2を動作させることが挙げられる。
 動作プログラムは、時系列の複数の動作コマンドを含む。複数の動作コマンドのそれぞれは、少なくとも、先端部18の目標位置と、目標位置までの先端部18の目標速度とを定める。目標位置は、ロボット座標系における先端部18の座標と、各座標軸まわりの先端部18の姿勢とを定める情報である。ロボット座標系は、基部11に固定された三次元座標系である。目標位置は、先端部18の座標及び姿勢を直接的に定める情報であってもよく、先端部18の座標及び姿勢を間接的に定める情報であってもよい。先端部18の座標及び姿勢を間接的に定める情報の具体例としては、関節31,32,33,34,35,36の回転角度が挙げられる。
 周辺環境に適応した動作(例えば周辺物体との衝突を回避する動作)をロボット2に実行させるための複数の動作コマンドを自動生成する等、より高度な制御演算をロボット2の動作中に実行できれば、ロボットコントローラ100の使い勝手が大幅に向上する。しかしながら、ロボット2の制御にはリアルタイム性が求められるので、制御演算にロボットコントローラ100のリソースを割き難い。
 これに対し、制御システム3は、ロボットコントローラ100と通信する演算モジュール200を更に備える。ロボットコントローラ100は、ロボット2の状態情報が格納される第1メモリ110を有し、演算モジュール200は、第1メモリ110と内容が同期される第2メモリ210と、第2メモリ210の内容に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能なプロセッサ201と、を有する。
 第1メモリ110と第2メモリ210とが同期されるので、データの書き込み又は読み出しの相手を第2メモリ210として、ロボット2の制御に関わるアプリケーション241を作成することができる。従って、ロボットコントローラ100と演算モジュール200との間におけるデータ交換のプロトコル等、特殊なルールを考慮することなく、容易にアプリケーション241を構築することができる。構築されるアプリケーション241によれば、ロボットコントローラ100によるロボット2の制御を補助又は主導することが可能となる。従って、ロボットコントローラ100の機能を容易に拡張することができる。
 ロボットコントローラ100と演算モジュール200とは、互いに別の筐体内に設けられていてもよく、同じ筐体内に設けられていてもよい。ロボットコントローラ100と演算モジュール200とが行う通信の例としては、シリアル通信、パラレル通信、又はバス通信等が挙げられる。
 ロボットコントローラ100と演算モジュール200とが行う通信は、ネットワーク通信であってもよい。ネットワーク通信は、ネットワーク状の通信回線における通信プロトコルにより行われる通信である。ネットワーク状の通信回線における通信プロトコルは、データ送信の度に相手のネットワークアドレスを特定することを含む。
 ネットワーク通信は、時間同期性を保証する産業用のネットワーク通信であってもよく、汎用のローカルエリアネットワーク(LAN)通信、又はワイドエリアネットワーク通信であってもよい。ロボットコントローラ100と演算モジュール200とは、無線LAN又は移動体通信(例えば5G通信)等による無線通信を行うように構成されていてもよい。
 第1メモリ110は、ハードウェア構成における後述の1以上のメモリデバイス192又は1以上のストレージデバイス193等により構成される。第2メモリ210は、後述の1以上のメモリデバイス292又は1以上のストレージデバイス293等により構成される。第1メモリ110は、データを書き込むための第1書込領域111と、データを読み出すための第2読出領域112とを有してもよい。第2メモリ210は、データを読み出すための第1読出領域211と、データを書き込むための第2書込領域212とを有してもよい。
 第1読出領域211の内容は、第1書込領域111の内容に同期される。このため、ロボットコントローラ100において第1書込領域111に書き込まれた内容を、演算モジュール200において第1読出領域211から読み出すことが可能である。第2読出領域112の内容は、第1読出領域211の内容に同期される。このため、演算モジュール200において第2書込領域212に書き込まれた内容を、ロボットコントローラ100において第2読出領域112から読み出すことが可能である。
 プロセッサ201は、後述の1以上のプロセッシングデバイス291等により構成される。アプリケーション241は、ロボット2の制御に関わる演算を行うように予め構築されたプログラムである。制御に関わる演算の例としては、ロボット2の状態情報等に基づいて制御データを生成する演算等が挙げられる。ロボット2の状態情報の例としては、先端部18の位置、先端部18の姿勢、先端部18の移動速度、アクチュエータ41,42,43,44,45,46の回転角度、アクチュエータ41,42,43,44,45,46の回転速度、又はアクチュエータ41,42,43,44,45,46が発生するトルク等が挙げられる。制御データは、例えば、上述した動作コマンドを表すテキストデータであってもよく、動作コマンドを構成する上記目標位置、目標速度等の数値データであってもよい。
 一例として、ロボット2を動作させるために制御データを生成するアプリケーション241を実行する場合、プロセッサ201は、制御データを第2書込領域212に書き込んでもよい。これにより、ロボットコントローラ100においては、制御データを第2読出領域112から読み出し、読み出した制御データに基づいてロボット2を動作させることが可能となる。
 ロボット2の制御に関わる演算は、必ずしもロボット2を動作させるためのデータを生成する演算に限られない。ロボット2の状態情報に基づいて、ロボット2の動作を評価する演算も、ロボット2の制御に関わる演算に含まれる。
 制御データに基づきロボット2を動作させることを可能にするために、ロボットコントローラ100は、プロセッサ101を更に備えてもよい。プロセッサ101は、後述の1以上のプロセッシングデバイス191等により構成される。プロセッサ101は、ロボットコントローラ100において、制御データに基づくロボット2の制御を主導する演算を行う。例えばプロセッサ101は、制御データに基づく動作をロボット2に実行させるように、関節31,32,33,34,35,36の目標回転角度を算出し、関節31,32,33,34,35,36の回転角度を、目標回転角度に追従させるための駆動電力を、アクチュエータ41,42,43,44,45,46のそれぞれに出力させる。
 プロセッサ101は、ロボット2の状態情報を取得し、第1書込領域111に書き込むように更に構成されていてもよい。これにより、演算モジュール200においては、ロボット2の状態情報を第1読出領域211から読み出し、読み出したロボット2の状態情報をアプリケーション241による演算等に利用することが可能となる。
 図2は、ロボットコントローラ100及び演算モジュール200の機能的な構成を例示するブロック図である。図2に示すように、ロボットコントローラ100は、機能上の構成要素(以下、「機能ブロック」という。)として、第1同期部121と、第1送信部128とを有する。演算モジュール200は、機能ブロックとして、第2同期部221と、第2送信部228と、アプリ保存部240と、アプリ実行部222と、メモリマネージャ223とを有する。第1同期部121は、ネットワーク通信により、第1メモリ110の内容を定周期で第2メモリ210の内容に同期(例えば一致)させる。第2同期部221は、ネットワーク通信により、第2メモリ210の内容を定周期で第1メモリ110の内容に同期(例えば一致)させる。
 例えば第1送信部128は、第1書込領域111の内容をネットワーク通信により定周期で演算モジュール200に送信する。第2同期部221は、第1書込領域111の内容を定周期で第1送信部128から受信し、受信した内容に第1読出領域211の内容を同期させる。第2送信部228は、第2書込領域212の内容をネットワーク通信により定周期でロボットコントローラ100に送信する。第1同期部121は、第2書込領域212の内容を定周期で第2送信部228から受信し、受信した内容に第2読出領域112の内容を同期させる。なお、通信のジッタ―等に起因して、第1メモリ110及び第2メモリ210の同期周期に多少のばらつきが生じる場合も、定周期性が概ね維持されていれば定周期の同期に含まれる。
 第1メモリ110と第2メモリ210とは、ネットワーク通信により相互に定周期で更新される。このため、ネットワーク通信のプロトコル等を意識することなく、アプリケーション241を容易に構築することができる。
 アプリ保存部240は、1以上のアプリケーション241を保存する。メモリマネージャ223は、アプリケーション241からのリクエストに基づいて、第2メモリ210に対してデータの書き込み及び読み出しの少なくとも一方を行う。例えばメモリマネージャ223は、API230を有し、API230により受け付けたリクエストに基づいて、第2メモリ210に対してデータの書き込み又は読み出しを行う。
 API230(Application Programming Interface)は、予め設けられたソフトウェアを、外部のアプリケーションから利用可能にするインタフェースであり、予め定められたフォーマットでリクエストを受け付け、リクエストを行ったアプリケーションにリクエストに対するレスポンスを渡す。
 予め定められたフォーマットのAPI230により第2メモリ210に対するデータの書き込み又は読み出しをリクエストすることで、第2メモリ210の構成等を把握することなく、データの読み出し又は書き出しを容易に行うことができる。また、API230により第2メモリ210をラップし、第2メモリ210へのダイレクトアクセスを制限することで、データの不正な書き込み等が防がれる。
 例えばAPI230は、ロボット2の制御に対応するモーション系API231を有する。ロボット2の制御に対応するとは、例えばロボット2の制御に用いられるデータをハンドリングすることを意味する。例えばモーション系API231は、上述した制御データを第2書込領域212に書き込むリクエストをアプリケーション241から受け付け、制御データが第2読出領域112から読み出されたこと、又は制御データに基づく制御の実行結果等を示すレスポンスをアプリケーション241に渡す。
 モーション系API231は、ロボット2の制御に用いられる制御変数を第2書込領域212に書き込むリクエストをアプリケーション241から受け付け、制御変数が第2読出領域112から読み出されたこと、又は制御変数に基づく制御の実行結果等を示すレスポンスをアプリケーション241に渡してもよい。
 モーション系API231は、ロボットコントローラ100内に保存された動作プログラムの実行指令を第2書込領域212に書き込むリクエストをアプリケーション241から受け付け、実行指令が第2読出領域112から読み出されたこと、又は実行指令に基づく動作プログラムの実行結果等を示すレスポンスをアプリケーション241に渡してもよい。
 ロボットコントローラ100内の動作プログラムは、作業内容単位又はワーク単位等で複数のジョブプログラムに細分化されている場合もある。この場合、モーション系API231は、ジョブプログラムごとの実行指令を第2書込領域212に書き込むリクエストを受け付けてもよい。
 メモリマネージャ223は、アプリケーション241からのリクエストをモーション系API231により受け付けた場合に、リクエストに対応するデータを第2メモリ210に書き込む。例えばメモリマネージャ223は、制御データ等を第2書込領域212に書き込む。後述するように、ロボットコントローラ100においては、制御データ等が第2読出領域112から読み出され、制御データ等に対応するレスポンスが第1書込領域111に書き込まれる。メモリマネージャ223は、制御データ等に対応するレスポンスを第1読出領域211から読み出して、制御データ等の書き込みのリクエストを行ったアプリケーション241に渡す。
 このように、アプリケーション241により拡張した機能を、モーション系API231によってロボット2の制御に容易に反映させることができる。また、モーション系API231により第2メモリ210がラップされることとなるため、誤操作、秘密漏洩等に対するセキュリティを向上させることができる。
 API230は、モーション系API231に加えて、操作系API232、監視系API233等を含んでいてもよい。操作系API232は、ロボットコントローラ100の操作に対応する。ロボットコントローラ100の操作に対応するとは、例えばロボットコントローラ100の操作に用いられるデータをハンドリングすることを意味する。例えば操作系API232は、サーボオン指令を第2書込領域212に書き込むリクエストをアプリケーション241から受け付け、サーボオン指令が第2読出領域112から読み出されたこと、又はサーボオンが完了したこと等を示すレスポンスをアプリケーション241に渡す。サーボオン指令は、アクチュエータ41,42,43,44,45,46に対する駆動電力(静止させるための電力を含む)の供給開始指令である。
 操作系API232は、アラームのリセット指令を第2書込領域212に書き込むリクエストをアプリケーション241から受け付け、アラームのリセット指令が第2読出領域112から読み出されたこと、又はアラームがリセットされたこと等を示すレスポンスをアプリケーション241に渡してもよい。
 メモリマネージャ223は、アプリケーション241からのリクエストを操作系API232により受け付けた場合に、リクエストに対応するデータを第2メモリ210に書き込む。例えばメモリマネージャ223は、サーボオン指令等を第2書込領域212に書き込む。ロボットコントローラ100においては、サーボオン指令等が第2読出領域112から読み出され、サーボオン指令等に対応するレスポンスが第1書込領域111に書き込まれる。メモリマネージャ223は、サーボオン指令等に対応するレスポンスを第1読出領域211から読み出して、サーボオン指令等の書き込みのリクエストを行ったアプリケーション241に渡す。
 監視系API233は、第1読出領域211の内容監視に対応する。例えば監視系API233は、データの読み出しリクエストを受け付け、リクエストに対応するデータを第1読出領域211から読み出し、読み出したデータを含むレスポンスをアプリケーション241に渡す。
 メモリマネージャ223は、アプリケーション241からのリクエストを監視系API233により受け付けた場合に、リクエストに対応するデータを第1読出領域211から読み出し、読み出したデータを含むレスポンスをアプリケーション241に渡す。
 メモリマネージャ223は、アプリ保存部240に保存されたアプリケーション241に関連付けられた第2メモリ210の内容を、関連付けられたアプリケーション241に通知してもよい。例えばメモリマネージャ223は、アプリケーション241に関連付けられたデータを第2メモリ210から読み出した場合に、読み出したデータを含むレスポンスを、関連付けられたアプリケーション241に渡してもよい。アプリケーション241に関連付けられたデータの具体例としては、アプリケーション241に対して処理を開始すべきか否かを示すコールデータが挙げられる。
 メモリマネージャ223は、アプリケーション241に関連付けられた起動指令を第2メモリ210から読み出した場合に、関連付けられたアプリケーション241を起動してもよい。関連付けられたアプリケーション241を起動することも、関連付けられたアプリケーション241に通知することに含まれる。一例として、メモリマネージャ223は、アプリケーション241からのリクエストを監視系API233により受け付けた場合に、第2メモリ210において起動指令が格納されるエリアの監視を開始し、監視の開始を表すレスポンスをアプリケーション241に渡す。これに応じ、アプリケーション241は停止する。その後、メモリマネージャ223は、第2メモリ210から起動指令を読み出した場合に、起動指令に関連付けられたアプリケーション241を起動する。
 このように、第1メモリ110及び第2メモリ210を介して、ロボットコントローラ100からアプリケーション241への通知を行うことが可能となる。これにより、ロボットコントローラ100からの通知に基づき動作するアプリケーション241を容易に構築することができる。
 ロボットコントローラ100は、状態収集部122を更に有してもよい。状態収集部122は、少なくともロボット2の状態情報を、第1メモリ110に書き込む。例えば状態収集部122は、ロボット2の状態情報を第1書込領域111に書き込む。メモリマネージャ223は、アプリケーション241からのリクエストに応じ、第2メモリ210から状態情報を取得してアプリケーション241に渡す。例えばメモリマネージャ223は、アプリケーション241からのリクエストを監視系API233により受け付けた場合に、ロボット2の状態情報を第1読出領域211から読み出し、読み出した状態情報を含むレスポンスをアプリケーション241に渡す。
 アプリケーション241の構築に必要なロボット2の状態情報が、第2メモリ210において継続的に更新される。このため、第2メモリ210からの状態情報の読み出しをアプリケーション241に組み込むのみで、ロボット2の状態情報に基づくアプリケーション241を容易に構築することができる。
 状態収集部122は、状態情報を、第1メモリ110の第1書込領域111に書き込み、メモリマネージャ223は、第1書込領域111に対応した第2メモリ210の第1読出領域211から状態情報を取得して、アプリケーション241に渡し、アプリケーション241からのリクエストに基づくデータの書き込みを、第2メモリ210のうち第1読出領域211とは異なる第2書込領域212に対して行ってもよい。アプリケーション241からのデータの書き込みが、状態情報を取得するための第1読出領域211とは別の第2書込領域212に対して行われるので、第1読出領域211が記憶する状態情報を、状態収集部122により書き込まれた状態情報に常に同期しておくことができる。これにより、状態情報を任意のタイミングでアプリケーション241に提供することが可能である。
 メモリマネージャ223は、1以上のアプリケーション241からの複数のリクエストをリクエスト格納部225にキューイングし、リクエスト格納部225から複数のリクエストを順番に払い出し、払い出したリクエストに対応するデータを第2メモリ210に書き込んでもよい。「キューイング」は、複数のリクエストを受け付け順にリクエスト格納部225に格納することを意味する。メモリマネージャ223は、複数のリクエストをリクエスト格納部225から受け付け順に払い出す。
 メモリマネージャ223によりリクエストのキューイングが行われるので、先行するリクエストを誤って上書きしてしまうリスク等に配慮することなく、リクエストを随時行うようにアプリケーション241を構築することができる。2以上のアプリケーション241が同時に実行され得る場合においても、他のアプリケーション241によるリクエスト状況を考慮することなく、随時リクエストを行うように個々のアプリケーション241を構築することができる。従って、アプリケーション241の構築コストを更に低減することができる。
 メモリマネージャ223は、第2メモリ210からレスポンスを読み出した場合に、レスポンスに対応するリクエストの次のリクエストをリクエスト格納部225から払い出してもよい。アプリケーション241の自由度と、ロボットコントローラ100におけるリアルタイム性との両立を図ることができる。
 メモリマネージャ223は、リクエストがロボット2の状態情報の読み出しのリクエストである場合、リクエストをキューイングせずに、第2メモリ210から状態情報を読み出して、リクエストを行ったアプリケーション241に渡してもよい。即時性が求められる状態情報の読み出しのリクエストを、キューイングの対象から外すことで、状態情報の取得遅延を抑制することができる。
〔ロボットコントローラ〕
 図3に示すように、ロボットコントローラ100は、メモリインタプリタ123と、ロボット制御部130とを更に有する。メモリインタプリタ123は、第1メモリ110から読み出した制御データに基づいて、ロボットコントローラ100の内部で実行可能な制御コマンドを生成する。ロボット制御部130は、制御コマンドに対応する処理を実行する。メモリインタプリタ123によれば、制御コマンドによりロボット2を制御するロボットコントローラ100の機能を、演算モジュール200の演算結果によって容易に拡張することができる。
 制御コマンドは、ロボットコントローラ100の内部で実行可能である限り、いかなる内容のコマンドであってもよい。コマンドがロボットコントローラ100の内部で実行可能であるとは、ロボットコントローラ100がコマンドの内容を解釈し、コマンドに対応する処理を実行可能であることを意味する。例えば、制御コマンドは、上述した動作コマンドを表すテキストデータであってもよく、上述した動作コマンドをインタプリトすることで得られる数値データであってもよい。
 動作コマンドを表すテキストの例を以下に示す。
例1)MoveL(・・・)
例2)MoveS(・・・)
例3)MoveJ(・・・)
各例において、カッコ内の引数は、目標位置及び目標速度を表す。「Move」は、目標位置まで目標速度で移動することを表す。「Move」の後に添えられたアルファベットは、移動開始位置から目標位置までの補間方式を表す。例えば「L」は線形補間を表し、「S」はS字状補間を表す。「J」は、移動開始前の関節31,32,33,34,35,36の角度と、目標位置における関節31,32,33,34,35,36の角度との間を線形に補間することを表す。MoveJにおける引数は、関節31,32,33,34,35,36のそれぞれの目標回転角度及び目標回転速度であってもよい。
 ロボット制御部130は、動作コマンドに対応する制御コマンドをメモリインタプリタ123が生成した場合に、制御コマンドに基づいて、ロボット2のモーションを制御する。例えばロボット制御部130は、モーション制御部131と、コマンドバッファ132とを有する。コマンドバッファ132は、メモリインタプリタ123が生成した制御コマンドを時系列で一時的に記憶する。モーション制御部131は、メモリインタプリタ123が記憶する1以上の制御コマンドに基づいて、ロボット2のモーションを制御する。例えばモーション制御部131は、一定の制御サイクルにて、1以上の制御コマンドに基づく制御処理を繰り返す。
 制御処理は、1以上の制御コマンドにより表される動作パスに沿って、先端部18を目標速度で移動させるように、関節31,32,33,34,35,36の目標回転角度を算出することと、関節31,32,33,34,35,36の回転角度を目標回転角度に追従させることと、を含む。
 ロボットコントローラ100は、メモリインタプリタ123により生成された制御コマンドに基づくロボット2の制御とは別に、ロボットコントローラ100の内部に予め生成された動作プログラムに基づくロボット2の制御を実行し得るように構成されていてもよい。
 例えばロボットコントローラ100は、コマンド記憶部124と、ローカルインタプリタ125とを更に有してもよい。コマンド記憶部124は、予め生成された動作プログラムを記憶する。上述したように、動作プログラムは、複数の動作コマンドを含む。以下、コマンド記憶部124が記憶する動作プログラムの動作コマンドを、「ローカルコマンド」という。
 ローカルインタプリタ125は、コマンド記憶部124から複数のローカルコマンドを順次読み出し、制御コマンドを生成する。コマンドバッファ132は、メモリインタプリタ123及びローカルインタプリタ125の少なくとも一方が生成した制御コマンドを時系列で一時的に記憶する。モーション制御部131は、メモリインタプリタ123及びローカルインタプリタ125の少なくとも一方が生成した制御コマンドに基づいて、ロボット2のモーションを制御する。
 この構成によれば、複数のローカルコマンドに基づきロボット2を動作させることと、演算モジュール200の演算結果に基づきロボット2を動作させることとの両方が可能となる。このため、ロボットコントローラ100に、モーション制御部131が、ローカルインタプリタ125が生成した制御コマンドに基づいて、ロボット2のモーションを制御するローカル制御モードと、モーション制御部131が、アプリケーション241による演算結果に基づきメモリインタプリタ123が生成した制御コマンドに基づいて、ロボット2のモーションを制御するアプリ制御モードとを持たせることが可能となる。更に、複数のローカルコマンドと、演算モジュール200の演算結果との組み合わせに基づきロボット2を動作させることも可能である。従って、ローカルコマンドに基づきロボット2を制御する機能を、演算モジュール200の演算結果によって容易に拡張することができる。
 また、ローカルコマンド、及び演算モジュール200の演算結果のいずれもが、同じ形式の制御コマンドに変換される。このため、複数のローカルコマンドに基づきロボット2を動作させることと、演算モジュール200の演算結果に基づきロボット2を動作させることとで、モーション制御部131、及びコマンドバッファ132を共用することができる。従って、ロボットコントローラ100の構成を簡素化することができる。
 制御コマンドは、上述した制御変数に値を代入することを表すコマンドであってもよい。この場合、ロボット制御部130は、制御コマンドに基づいて、制御変数に値を代入する。制御コマンドは、コマンド記憶部124が記憶する動作プログラム又はジョブプログラムの実行指令を表すコマンドであってもよい。この場合、ロボット制御部130は、実行指令に対応する動作プログラム又はジョブプログラムに基づく制御コマンドの生成をローカルインタプリタ125に実行させる。
 ロボットコントローラ100が、周辺環境情報等に基づいて、動作パスの少なくとも一部(例えば動作プログラムの少なくとも一部)を動的に生成又は修正する機能を有する場合がある。このような機能を、「ローカル生成機能」という。制御コマンドは、ローカル生成機能を呼び出すことを表すコマンドであってもよい。この場合、ロボット制御部130は、制御コマンドに基づいて、ロボットコントローラ100のローカル生成機能を呼び出す。
 ローカル生成機能により生成されたプログラムは、例えばローカルインタプリタ125により読み出され、モーション制御部131により実行される。なお、ローカル生成機能は、コマンド記憶部124が記憶する動作プログラムにおいて呼び出される場合もある。この場合も、ローカル生成機能により生成されたプログラムはローカルインタプリタ125により読み出され、モーション制御部131により実行される。
 制御コマンドは、上述したサーボオン指令を表すコマンドであってもよい。この場合、ロボット制御部130は、制御コマンドに基づいて、アクチュエータ41,42,43,44,45,46に対する駆動電力の供給を開始させる。制御コマンドは、上述したアラームリセット指令を表すコマンドであってもよい。この場合、ロボット制御部130は、ロボットコントローラ100内で発生したアラームをリセットする。
 ロボットコントローラ100は、コマンド選択部126を更に有してもよい。コマンド選択部126は、ローカルインタプリタ125が生成した制御コマンドに基づきロボット2が動作している期間には、メモリインタプリタ123からモーション制御部131への制御コマンドの入力を禁止し、メモリインタプリタ123が生成した制御コマンドに基づきロボット2が動作している期間には、ローカルインタプリタ125からモーション制御部131への制御コマンドの入力を禁止する。
 上述したローカル制御モード及びアプリ制御モードは、コマンド記憶部124が記憶する動作プログラムと、アプリケーション241との双方のコーディングにより実現することができる。動作プログラムにおいて、アプリケーション241を呼び出すローカルコマンドと、アプリケーション241の実行完了を待機するローカルコマンドとをこの順で連続して含む動作プログラムによれば、ローカル制御モードとアプリ制御モードとが実現される。例えば、ローカル制御モードが途中でアプリ制御モードに移行し、アプリ制御モードの完了後にローカル制御モードが再開されることとなる。上述した実行指令の第2書込領域212に対する書き込みのリクエストと、実行指令に対応する動作プログラムの完了通知の待機とをこの順で連続して含むアプリケーション241によっても、ローカル制御モードとアプリ制御モードとが実現される。例えば、アプリ制御モードが途中でローカル制御モードに移行し、ローカル制御モードの完了後にアプリ制御モードが再開されることとなる。
 しかしながら、コーディングのミス等により、メモリインタプリタ123が生成した制御コマンドと、ローカルインタプリタ125が生成した制御コマンドと想定外に混ざり合い、ロボット2の誤動作が発生してしまう可能性がある。コマンド選択部126によれば、ローカルインタプリタ125からの制御コマンドと、メモリインタプリタ123から制御コマンドとが想定外に混ざり合い、ロボット2の誤動作が発生することを防止することができる。
 アプリケーション241は、ローカルコマンドに基づく制御で使用されるデータを生成して、生成済みデータの書き込みのリクエストをメモリマネージャ223に対して行い、モーション制御部131は、第1メモリ110から読み出された生成済みデータと、コマンド記憶部124から読み出されたローカルコマンドとに基づいて、ロボット2のモーションを制御してもよい。ロボットコントローラ100のリソースと、演算モジュール200のリソースとを組み合わせて、より高度な制御を実行することができる。
 例えばアプリケーション241は、カメラ等により取得された環境情報に基づいて、ロボット2の動作に対する補正データを生成してもよい。この場合、メモリインタプリタ123は、制御コマンドの一例として、補正データに基づき補正コマンドを生成する。補正コマンドは、例えば、ローカルコマンドに基づく制御コマンドに対する補正量を表す補正変数に、補正データを代入することを表す。ロボット制御部130は、補正コマンドに基づいて、補正データを補正変数に代入する。モーション制御部131は、ローカルインタプリタ125が生成した制御コマンドと、補正変数とに基づいて、ロボット2のモーションを制御する。メモリインタプリタ123が、ローカルコマンドと補正変数とに基づいて、補正変数を加味した制御コマンドを生成してもよい。
 ロボットコントローラ100は、レスポンス生成部127を更に有してもよい。レスポンス生成部127は、メモリインタプリタ123が読み出したデータに対応したレスポンスを生成し、第1メモリ110に書き込む。メモリマネージャ223は、第2メモリ210からレスポンスを読み出して、読み出し済みデータの書き込みのリクエストを行ったアプリケーション241に渡す。レスポンスに基づくことで、リクエストに基づく処理の実行状況に合わせて演算を進行させるアプリケーション241を容易に生成することができる。
〔ハードウェア構成〕
 図4は、制御システム3のハードウェア構成を例示するブロック図である。図4に示すように、ロボットコントローラ100は、回路190を有する。回路190は、1以上のプロセッシングデバイス191と、1以上のメモリデバイス192と、1以上のストレージデバイス193と、通信ポート194と、ドライバ回路195とを有する。1以上のストレージデバイス193は、不揮発性の記憶媒体であり、上述したプロセッサ101及び第1メモリ110をロボットコントローラ100に構成させるためのプログラムを記憶する。1以上のストレージデバイス193は、上述した各機能ブロックをロボットコントローラ100に更に構成させるためのプログラムを記憶してもよい。1以上のストレージデバイス193のそれぞれは、フラッシュメモリ、又はハードディスク等の内蔵型の記憶媒体であってもよく、USBメモリ又は光ディスク等の可搬型の記憶媒体であってもよい。
 1以上のメモリデバイス192は、1以上のストレージデバイス193からロードされたプログラムを一時的に記憶する。1以上のメモリデバイス192のそれぞれは、ランダムアクセスメモリ等であってもよい。1以上のプロセッシングデバイス191は、1以上のメモリデバイス192にロードされたプログラムを実行することにより、プロセッサ101として機能し、1以上のメモリデバイス192又は1以上のストレージデバイス193に第1メモリ110を構成する。1以上のプロセッシングデバイス191は、上述した各機能ブロックを更に構成してもよい。1以上のプロセッシングデバイス191は、演算結果を適宜1以上のメモリデバイス192に記憶させる。
 通信ポート194は、1以上のプロセッシングデバイス191からの要求に基づいて演算モジュール200との間で通信を行う。ドライバ回路195は、1以上のプロセッシングデバイス191からの要求に基づいて、ロボット2(アクチュエータ41,42,43,44,45,46)に駆動電力を供給する。
 演算モジュール200は、回路290を有する。回路290は、1以上のプロセッシングデバイス291と、1以上のメモリデバイス292と、1以上のストレージデバイス293と、通信ポート294と、ユーザインタフェース295とを有する。1以上のストレージデバイス293は、不揮発性の記憶媒体であり、上述したプロセッサ201及び第2メモリ210を演算モジュール200に構成させるためのプログラムを記憶する。1以上のストレージデバイス293は、上述した各機能ブロックを演算モジュール200に更に構成させるためのプログラムを記憶してもよい。1以上のストレージデバイス293のそれぞれは、フラッシュメモリ、又はハードディスク等の内蔵型の記憶媒体であってもよく、USBメモリ又は光ディスク等の可搬型の記憶媒体であってもよい。
 1以上のメモリデバイス292は、1以上のストレージデバイス293からロードされたプログラムを一時的に記憶する。1以上のメモリデバイス292は、ランダムアクセスメモリ等であってもよい。1以上のプロセッシングデバイス291は、1以上のメモリデバイス292にロードされたプログラムを実行することにより、プロセッサ201として機能し、1以上のメモリデバイス292又は1以上のストレージデバイス293に第2メモリ210を構成する。1以上のプロセッシングデバイス291は、上述した各機能ブロックを更に構成してもよい。1以上のプロセッシングデバイス291は、演算結果を適宜1以上のメモリデバイス292に記憶させる。
 通信ポート294は、1以上のプロセッシングデバイス291からの要求に基づいてロボットコントローラ100との間で通信を行う。ユーザインタフェース295は、1以上のプロセッシングデバイス291からの要求に基づいて、ユーザとのコミュニケーションを行う。例えばユーザインタフェース295は、表示デバイスと、入力デバイスとを含む。表示デバイスの例としては、液晶モニタ又は有機EL(Electro-Luminescence)モニタ等が挙げられる。入力デバイスの例としては、キーボード、マウス、又はキーパッド等が挙げられる。入力デバイスは、タッチパネルとして表示デバイスと一体化されていてもよい。
 以上のハードウェア構成はあくまで一例であり、適宜変更可能である。
〔制御手順〕
 制御方法の一例として、制御システム3が実行する制御手順を例示する。この手順は、ロボットコントローラ100により、ロボット2の状態情報を第1メモリ110に格納することと、演算モジュール200により、第2メモリ210の内容を第1メモリ110の内容に同期させることと、演算モジュール200により、第2メモリ210の内容に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行することと、を含む。以下、この手順を、メモリの同期手順と、演算モジュール200によるデータの書き込み手順と、演算モジュール200によるデータの読み出し手順と、ロボット2の制御手順と、に分けて詳細に例示する。制御手順については、ローカル制御とアプリ制御とをシリアルに実行する制御手順と、ローカル制御とアプリ制御をパラレルに実行する制御手順と、をそれぞれ例示する。
(メモリ同期手順)
 図5は、ロボットコントローラ100におけるメモリ同期手順を例示するフローチャートである。図5に示すように、ロボットコントローラ100は、ステップS01,S02,S03,S04を実行する。ステップS01では、第1送信部128が、第1書込領域111の内容を演算モジュール200に送信する。ステップS02では、第1同期部121が、第2書込領域212の内容を第2送信部228から受信するのを待機する。ステップS03では、第1同期部121が、第2読出領域112の内容を第2送信部228から受信した内容に同期させる。
 ステップS04では、所定の同期サイクルが経過したか否かを第1送信部128が確認する。ステップS04において、同期サイクルは経過していないと判定した場合、ロボットコントローラ100は処理をステップS01に戻す。ロボットコントローラ100は以上の処理を繰り返す。
 図6は、演算モジュール200におけるメモリ同期手順を例示するフローチャートである。図6に示すように、演算モジュール200は、ステップS11,S12,S13を実行する。ステップS11では、第2同期部221が、第1書込領域111の内容を第1送信部128から受信するのを待機する。ステップS12では、第2同期部221が、第1読出領域211の内容を第1送信部128から受信した内容に同期させる。ステップS13では、第2送信部228が、第2書込領域212の内容をロボットコントローラ100に送信する。その後、その後、演算モジュール200は処理をステップS11に戻す。演算モジュール200は以上の処理を繰り返す。
 以上の手順により、ロボットコントローラ100においては、同期サイクルにて第1書込領域111の内容が繰り返し送信され、第2読出領域112の内容が第2書込領域212の内容に繰り返し同期される。演算モジュール200においては、同期サイクルにて第2書込領域212の内容が繰り返し送信され、第1読出領域211の内容が第1書込領域111の内容に繰り返し同期される。
(データの書き込み手順)
 図7は、メモリマネージャ223によるデータの書き込み手順を例示するフローチャートである。図7に示すように、演算モジュール200は、ステップS21を実行する。ステップS21では、メモリマネージャ223が、アプリケーション241がデータの書き込みのリクエストを行っているか否かを確認する。ステップS21において、データの書き込みのリクエストがあると判定した場合、演算モジュール200はステップS22を実行する。ステップS22では、メモリマネージャ223が、データの書き込みのリクエストをリクエスト格納部225にキューイングする。
 ステップS21において、データの書き込みのリクエストは行われていないと判定した場合、演算モジュール200はステップS23を実行する。ステップS23では、第2読出領域112から読み出されたデータに対応するレスポンスが第1読出領域211にあるか否かをメモリマネージャ223が確認する。ステップS23において、レスポンスはないと判定した場合、演算モジュール200は処理をステップS21に戻す。ステップS23において、レスポンスがあると判定した場合、演算モジュール200はステップS24,S25,S26を実行する。ステップS24では、メモリマネージャ223が、読み出し済みデータの書き込みのリクエストを行ったアプリケーション241にレスポンスを渡す。ステップS25では、メモリマネージャ223が、レスポンスに対応するリクエストの次のリクエストをリクエスト格納部225から払い出す。ステップS26では、メモリマネージャ223が、払い出したリクエストに対応するデータを第2書込領域212に書き込む。ステップS22又はステップS26を実行した後、演算モジュール200は処理をステップS21に戻す。演算モジュール200は以上の処理を繰り返す。
(データの読み出し手順)
 図8は、データの読み出し手順を例示するフローチャートである。図8に示すように、演算モジュール200は、ステップS31,S32,S33を実行する。ステップS31では、アプリケーション241が、データの読み出しのリクエストを行うのをメモリマネージャ223が待機する。ステップS32では、メモリマネージャ223が、リクエストに対応するデータを第1読出領域211から読み出す。ステップS33では、メモリマネージャ223が、読み出したデータを含むレスポンスをアプリケーション241に渡す。その後、演算モジュール200は処理をステップS31に戻す。演算モジュール200は以上の処理を繰り返す。
(ローカル制御とアプリ制御とをシリアルに実行する制御手順)
 「ローカル制御」は、ローカルインタプリタ125が生成した制御コマンドに基づく制御を意味し、「アプリ制御」は、メモリインタプリタ123が生成した制御コマンドに基づく制御を意味する。以下、ローカル制御が中断した後にアプリ制御が実行され、アプリ制御の実行後にローカル制御が再開される例を示す。アプリ制御としては、周辺環境情報に基づく動作パスにてロボット2を動作させる制御を例示する。
 図9は、ロボットコントローラ100からのコールに応じてアプリケーション241が動作パスを生成する手順を例示するフローチャートである。図9に示すように、アプリケーション241を実行する演算モジュール200は、ステップS41,S42,S43を実行する。ステップS41では、アプリケーション241が、監視系API233により、上述したコールデータの読み出しのリクエストを行う。ステップS42では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。ステップS43では、アプリケーション241が、コールデータに基づいて、処理開始が指示されているか否か(コールされているか否か)を確認する。ステップS43において、処理開始は指示されていないと判定した場合、演算モジュール200は処理をステップS41に戻す。以後、コールデータに基づき処理開始が指示されたと判定されるまでは、コールデータの読み出しが繰り返される。
 処理開始を指示するコールデータは、動作パスの始点と終点とを指定する情報を含む。始点は、先端部18の移動開始位置及び移動開始姿勢を含む。終点は、先端部18の移動完了位置及び移動完了姿勢を含む。
 ステップS43において、処理開始が指示されていると判定した場合、演算モジュール200はステップS44,S45,S46を実行する。ステップS44では、アプリケーション241が、予め保存されている周辺環境情報に基づいて、始点から終点までの動作パスを生成する。例えば周辺環境情報は、ロボット2の三次元モデルと、ロボット2の周辺物体の三次元モデルとを含む。アプリケーション241は、周辺環境情報に基づいて、ロボット2が周辺物体と干渉(衝突)しないように、動作パスを生成する。例えばアプリケーション241は、終点を含む1以上の経由点にそれぞれ対応する1以上の制御データを生成する。1以上の制御データのそれぞれは、経由点に対応する目標位置と、目標速度とを含む。
 ステップS45では、アプリケーション241が、生成した1以上の制御データのうち、未だ第2書込領域212に書き込まれていない制御データの書き込みのリクエストをモーション系API231により行う。ステップS46では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。ステップS47では、第2書込領域212に書き込まれていない次の制御データがないかをアプリケーション241が確認する。ステップS47において、次の制御データがあると判定した場合、演算モジュール200は処理をステップS45に戻す。以後、全ての制御データの書き込みが完了するまで、制御データの書き込みのリクエストが繰り返される。
 ステップS47において、全ての制御データが第2書込領域212に書き込まれたと判定した場合、演算モジュール200はステップS51,S52を実行する。ステップS51では、アプリケーション241が、実行完了通知の書き込みのリクエストをモーション系API231により行う。ステップS52では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。以上でアプリケーション241によるパスの生成手順が完了する。
 図10は、パス生成を行うアプリケーション241のコールを含む複数のローカルコマンドの読み出し手順を例示するフローチャートである。図10に示すように、ロボットコントローラ100は、ステップS61,S62,S63を実行する。ステップS61では、ローカルインタプリタ125が、コマンドバッファ132に空きが生じるのを待機する。ステップS62では、ローカルインタプリタ125が、コマンド記憶部124からローカルコマンドを読み出す。ステップS63では、ローカルコマンドが、アプリケーション241を呼び出すコマンドではないかをローカルインタプリタ125が確認する。以下、アプリケーション241を呼び出すコマンドを「コールコマンド」という。
 ステップS63において、ローカルコマンドはコールコマンドではないと判定した場合、ロボットコントローラ100はステップS64,S65を実行する。ステップS64では、ローカルインタプリタ125が、読み出したローカルコマンドに基づいて制御コマンドを生成し、コマンドバッファ132に格納する。ステップS65では、コマンド記憶部124に次のローカルコマンドがないかをローカルインタプリタ125が確認する。ステップS65において、次のローカルコマンドがあると判定した場合、ロボットコントローラ100は処理をステップS61に戻す。
 ステップS62において、ローカルコマンドはコールコマンドであると判定した場合、ロボットコントローラ100はステップS66,S67を実行する。ステップS66では、ロボット制御部130が、アプリケーション241に対するコールデータを第1書込領域111に書き込む。ステップS67では、ローカルインタプリタ125が、アプリケーション241の実行完了通知の待機を開始する。
 図11は、アプリケーション241が生成した制御データの読み出し手順を例示するフローチャートである。図11に示すように、ロボットコントローラ100は、次にステップS71,S72を実行する。ステップS71では、メモリインタプリタ123が、コマンドバッファ132に空きが生じるのを待機する。ステップS72では、アプリケーション241により書き込まれた制御データが第2読出領域112に格納されるのをメモリインタプリタ123が待機する。
 次に、ロボットコントローラ100はステップS73,S74、S75を実行する。ステップS73では、メモリインタプリタ123が、第2読出領域112から制御データを読み出す。ステップS74では、メモリインタプリタ123が、制御データに基づき制御コマンドを生成し、コマンドバッファ132に格納する。ステップS75では、レスポンス生成部127が、制御データに対応するレスポンスを生成し、第1書込領域111に格納する。
 次に、ロボットコントローラ100はステップS76を実行する。ステップS76では、メモリインタプリタ123が、アプリケーション241により書き込まれた実行完了通知が第2読出領域112に格納されているか否かを確認する。ステップS76において実行完了通知が第2読出領域112に格納されていないと判定した場合、ロボットコントローラ100は処理をステップS71に戻す。
 ステップS76において実行完了通知が第2読出領域112に格納されていると判定した場合、ロボットコントローラ100はステップS77を実行する。ステップS77では、ロボット制御部130が、アプリケーション241の実行完了通知の待機をローカルインタプリタ125に解除させる。これにより、ローカルインタプリタ125によるローカルコマンドの読み込みを再開することが可能となる。その後、ロボットコントローラ100は処理を図10のステップS61に戻す。以後、ステップS65において、次のローカルコマンドがないと判定されるまでは、ローカルインタプリタ125によるローカルコマンドの読み出しが継続される。ステップS65において、次のローカルコマンドはないと判定した場合、ロボットコントローラ100はローカルコマンドの読み出しを完了する。
 図12は、制御コマンドに基づく制御の実行手順を例示するフローチャートである。図12に示すように、ロボットコントローラ100は、ステップS81,S82を実行する。ステップS81では、コマンドバッファ132が記憶する1以上の制御コマンドにより表される動作パスに沿って、先端部18を目標速度で移動させるように、モーション制御部131が関節31,32,33,34,35,36の目標回転角度を算出する。ステップS82では、モーション制御部131が、アクチュエータ41,42,43,44,45,46により、関節31,32,33,34,35,36の角度を目標回転角度に追従させる。
 次に、ロボットコントローラ100はステップS83,S84を実行する。ステップS83では、状態収集部122が、ロボット2の状態情報を取得する。ステップS84では、状態収集部122が、ロボット2の状態情報を第1書込領域111に書き込む。
 次に、ロボットコントローラ100はステップS85,S86を実行する。ステップS85では、モーション制御部131が制御サイクルの経過を待機する。ステップS86では、モーション制御部131が、動作プログラムの実行を完了したか否かを確認する。ステップS86において、動作プログラムの実行は完了していないと判定した場合、ロボットコントローラ100は処理をステップS81に戻す。以後、動作プログラムの実行が完了するまでは、以上の制御処理が制御サイクルで繰り返される。ステップS86において、動作プログラムの実行が完了したと判定した場合、ロボットコントローラ100はロボット2のモーションの制御を完了する。
 上述したように、ロボットコントローラ100は、コマンド選択部126を更に有してもよい。図13は、コマンド選択部126によりロボットコントローラ100が実行するコマンド選択手順を例示するフローチャートである。図13に示すように、ロボットコントローラ100は、ステップS91を実行する。ステップS91では、ローカルコマンドに基づくロボット2の動作が開始されたか否かをコマンド選択部126が確認する。ステップS91において、ローカルコマンドに基づくロボット2の動作が開始されていないと判定した場合、ロボットコントローラ100はステップS92を実行する。ステップS92では、アプリケーション241の実行結果に基づくロボット2の動作が開始されたか否かをコマンド選択部126が確認する。ステップS92において、ロボット2の動作は開始されていないと判定した場合、ロボットコントローラ100は処理をステップS91に戻す。
 ステップS91において、ローカルコマンドに基づくロボット2の動作が開始されたと判定した場合、ロボットコントローラ100はステップS93,S94,S95を実行する。ステップS93では、コマンド選択部126が、メモリインタプリタ123からモーション制御部131への制御コマンドの入力を禁止する。例えばコマンド選択部126は、メモリインタプリタ123によるコマンドバッファ132への制御コマンドの書き込みを禁止する。ステップS94では、コマンド選択部126が、ローカルコマンドに基づくロボット2の動作の完了を待機する。ステップS95では、コマンド選択部126が、メモリインタプリタ123からモーション制御部131への制御コマンドの入力の禁止を解除する。
 ステップS92において、アプリケーション241の実行結果に基づくロボット2の動作が開始されたと判定した場合、ロボットコントローラ100はステップS96,S97,S98を実行する。ステップS96では、コマンド選択部126が、ローカルインタプリタ125からモーション制御部131への制御コマンドの入力を禁止する。例えばコマンド選択部126は、ローカルインタプリタ125によるコマンドバッファ132への制御コマンドの書き込みを禁止する。ステップS97では、コマンド選択部126が、アプリケーション241の実行結果に基づくロボット2の動作の完了を待機する。ステップS98では、コマンド選択部126が、ローカルインタプリタ125からモーション制御部131への制御コマンドの入力の禁止を解除する。
 ステップS95又はステップS98を実行した後、ロボットコントローラ100は処理をステップS91に戻す。ロボットコントローラ100は以上の処理を繰り返す。
(ローカル制御とアプリ制御をパラレルに実行する制御手順)
 以下、ローカル制御の一部が、アプリ制御と並行して実行される例を示す。アプリ制御としては、周辺環境情報に基づいて制御コマンドを補正する制御を例示する。
 図14は、ロボットコントローラ100からのコールに応じてアプリケーション241が補正演算を行う手順を例示するフローチャートである。図14に示すように、アプリケーション241を実行する演算モジュール200は、ステップS101,S102,S103を実行する。ステップS101では、アプリケーション241が、監視系API233により、コールデータの読み出しのリクエストを行う。ステップS102では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。ステップS103では、アプリケーション241が、コールデータに基づいて、補正開始が指示されているか否かを確認する。ステップS103において、補正開始は指示されていないと判定した場合、演算モジュール200は処理をステップS101に戻す。以後、コールデータに基づき補正開始が指示されたと判定されるまでは、コールデータの読み出しが繰り返される。
 次に、演算モジュール200はステップS104,S105,S106,S107を実行する。ステップS104では、アプリケーション241が、カメラにより撮影された画像等の環境情報を取得する。ステップS105では、アプリケーション241が、環境情報に基づいて補正データを生成する。ステップS106では、アプリケーション241が、補正データの書き込みのリクエストをモーション系API231により行う。ステップS107では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。
 次に、演算モジュール200はステップS111,S112,S113を実行する。ステップS111では、アプリケーション241が、監視系API233により、コールデータの読み出しのリクエストを行う。ステップS112では、リクエストに対するレスポンスがメモリマネージャ223から渡されるのをアプリケーション241が待機する。ステップS113では、アプリケーション241が、コールデータに基づいて、補正停止が指示されているか否かを確認する。
 ステップS113において、補正停止は指示されていないと判定した場合、演算モジュール200は処理をステップS104に戻す。以後、コールデータに基づき補正停止が指示されたと判定されるまでは、補正データの生成が繰り返される。ステップS113において、コールデータに基づき補正停止が指示されたと判定した場合、演算モジュール200は補正データの生成を完了する。
 図15は、補正演算を行うアプリケーション241のコールを含む複数のローカルコマンドの読み出し手順を例示するフローチャートである。図15に示すように、ロボットコントローラ100はS121,S122,S123,S124を実行する。ステップS121では、ローカルインタプリタ125が、コマンドバッファ132に空きが生じるのを待機する。ステップS122では、ローカルインタプリタ125が、コマンド記憶部124からローカルコマンドを読み出す。ステップS123では、ローカルインタプリタ125が、読み出したローカルコマンドに基づいて制御コマンドを生成し、コマンドバッファ132に格納する。ステップS124では、コマンド記憶部124に次のローカルコマンドがないかをローカルインタプリタ125が確認する。ステップS124において、次のローカルコマンドがあると判定した場合、ロボットコントローラ100は処理をステップS121に戻す。
 図16は、アプリケーション241が生成した補正データの読み出し手順を例示するフローチャートである。このフローチャートの開始時点において、上述した補正変数の値はゼロ(補正なし)となっている。図16に示すように、ロボットコントローラ100は、ステップS131,S132を実行する。ステップS131では、コマンドバッファ132に格納された制御コマンドの実行状況(実行の進捗状況)に基づいて、アプリケーション241に補正を開始させるローカルコマンドを実行するタイミングをロボット制御部130が待機する。以下、アプリケーション241に補正を開始させるローカルコマンドを「補正開始コマンド」という。ステップS132では、ロボット制御部130が、補正開始を表すコールデータを第1書込領域111に書き込む。
 次に、ロボットコントローラ100はS133,S134,S135,S136を実行する。ステップS133では、アプリケーション241により書き込まれた補正データが第2読出領域112に格納されるのをメモリインタプリタ123が待機する。ステップS134では、メモリインタプリタ123が、第2読出領域112から補正データを読み出す。ステップS135では、メモリインタプリタ123が、上述した補正コマンドを生成し、ロボット制御部130に入力する。ロボット制御部130は、補正コマンドに基づいて、補正データを上述した補正変数に代入する。ステップS136では、レスポンス生成部127が、補正データに対応するレスポンスを生成し、第1書込領域111に格納する。
 次に、ロボットコントローラ100はステップS137を実行する。ステップS137では、コマンドバッファ132に格納された制御コマンドの実行状況(実行の進捗状況)に基づいて、アプリケーション241に補正を停止させるローカルコマンドを実行するタイミングであるかをロボット制御部130が確認する。以下、アプリケーション241に補正を停止させるローカルコマンドを「補正停止コマンド」という。
 ステップS137において、補正停止コマンドを実行するタイミングではないと判定した場合、ロボットコントローラ100は処理をステップS133に戻す。以後、補正停止コマンドを実行するタイミングとなるまでは、補正データの読み出しと、補正変数への補正データの代入とが繰り返される。
 ステップS137において、補正停止コマンドを実行するタイミングであると判定した場合、ロボットコントローラ100はステップS138,S139を実行する。ステップS138では、ロボット制御部130が、補正変数をクリアする(ゼロにする)。ステップS139では、ロボット制御部130が、補正停止を表すコールデータを第1書込領域111に書き込む。以上で補正データの読み出し手順が完了する。
 図17は、制御コマンド及び補正データに基づく制御の実行手順を例示するフローチャートである。図17に示すように、ロボットコントローラ100は、ステップS141を実行する。ステップS141では、1以上の制御コマンドにより表される動作パスを補正変数に基づき補正した補正済みパスに沿って、先端部18を目標速度で移動させるように、モーション制御部131が関節31,32,33,34,35,36の目標回転角度を算出する。補正変数がゼロである場合の補正済みパスは、1以上の制御コマンドにより表される動作パスと同じである。
 次に、ロボットコントローラ100は、ステップS82,S83,S84,S85と同様のS142,S143,S144,S145を実行し、ステップS86と同様のステップS146を実行する。ステップS146では、モーション制御部131が、動作プログラムの実行を完了したか否かを確認する。ステップS146において、動作プログラムの実行は完了していないと判定した場合、ロボットコントローラ100は処理をステップS141に戻す。以後、動作プログラムの実行が完了するまでは、以上の制御処理が制御サイクルで繰り返される。ステップS146において、動作プログラムの実行が完了したと判定した場合、ロボットコントローラ100はロボット2のモーションの制御を完了する。
〔まとめ〕
 以上に説明したように、制御システム3は、ロボット2を制御するロボットコントローラ100と、ロボットコントローラ100と通信する演算モジュール200と、を備え、ロボットコントローラ100は、ロボット2の状態情報が格納される第1メモリ110を有し、演算モジュール200は、第1メモリ110と内容が同期される第2メモリ210と、第2メモリ210の内容に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能なプロセッサ201と、を有する。
 第1メモリ110と第2メモリ210とが同期されるので、データの書き込み又は読み出しの相手を第2メモリ210として、ロボット2の制御に関わるアプリケーション241を作成することができる。従って、ロボットコントローラ100と演算モジュール200との間におけるデータ交換のプロトコル等、特殊なルールを考慮することなく、容易にアプリケーション241を構築することができる。構築されるアプリケーション241によれば、ロボットコントローラ100によるロボット2の制御を補助又は主導することが可能となる。従って、ロボットコントローラ100の機能を容易に拡張することができる。
 ロボットコントローラ100は、ネットワーク通信により、第1メモリ110の内容を定周期で第2メモリ210の内容に同期させる第1同期部121を更に有し、演算モジュール200は、ネットワーク通信により、第2メモリ210の内容を定周期で第1メモリ110の内容に同期させる第2同期部221を更に有してもよい。第1メモリ110と第2メモリ210とは、ネットワーク通信により相互に定周期で更新される。このため、ネットワーク通信のプロトコル等を意識することなく、アプリケーション241を容易に構築することができる。また、単なるメモリ間の同期をネットワーク通信に担わせることによって、汎用的なネットワーク通信によってロボットコントローラ100と演算モジュール200とを接続し、制御システム3の構築コストを削減することができる。汎用的なネットワーク通信によれば、様々な機器を演算モジュール200としてロボットコントローラ100に接続することが可能となる。これを利用し、より汎用的なアーキテクチャを有する機器を演算モジュール200として、アプリケーション241の開発者が演算モジュール200のアーキテクチャに習熟するためのコストを大幅に低減することができる。
 演算モジュール200は、アプリケーション241からのリクエストに基づいて、第2メモリ210に対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャ223を更に有してもよい。メモリマネージャ223へのリクエストにより、第2メモリ210の構成等を把握することなく、データの読み出し又は書き出しを容易に行うことができる。これにより、アプリケーション241の構築コストを更に低減することができる。また、第2メモリ210へのダイレクトアクセスを制限することで、データの不正な書き込み等が防がれる。これにより、アプリケーション241の開発におけるデバッグコストも低減することができる。
 演算モジュール200は、1以上のアプリケーション241を保存するアプリ保存部240を更に有し、メモリマネージャ223は、アプリ保存部240に保存されたアプリケーション241に関連付けられた第2メモリ210の内容を、関連付けられたアプリケーション241に通知してもよい。第1メモリ110及び第2メモリ210を介して、ロボットコントローラ100からアプリケーション241への通知を行うことが可能となる。これにより、ロボットコントローラ100からの通知に基づき動作するアプリケーション241を容易に構築することができる。ロボットコントローラ100からの通知に基づき動作するアプリケーション241によれば、ロボットコントローラ100からの通知に基づき、ロボットコントローラ100から求められたアプリケーション241を起動することが可能となる。また、起動済みのアプリケーション241における少なくとも一部の演算を、ロボットコントローラ100から求められたタイミングで開始させることもできる。
 メモリマネージャ223は、ロボット2の制御に対応するAPI230を有し、アプリケーション241からのリクエストをAPI230により受け付けた場合に、リクエストに対応するデータを第2メモリ210に書き込んでもよい。アプリケーション241により拡張した機能を、API230によってロボット2の制御に容易に反映させることができる。また、API230により第2メモリ210がラップされることとなるため、誤操作、秘密漏洩等に対するセキュリティを向上させることができる。
 ロボットコントローラ100は、少なくともロボット2の状態情報を、第1メモリ110に書き込む状態収集部122を更に有し、メモリマネージャ223は、アプリケーション241からのリクエストに応じ、第2メモリ210から状態情報を取得してアプリケーション241に渡してもよい。アプリケーション241の構築に必要なロボット2の状態情報が、第2メモリ210において継続的に更新される。このため、第2メモリ210からの状態情報の読み出しをアプリケーション241に組み込むのみで、ロボット2の状態情報に基づくアプリケーション241を容易に構築することができる。また、第1メモリ110に書き込む状態情報を限定することで、ロボット2の状態情報が無制限に取得されることを容易に防ぐことができる。
 状態収集部122は、状態情報を、第1メモリ110の第1書込領域111に書き込み、メモリマネージャ223は、第1書込領域111に対応した第2メモリ210の第1読出領域211から状態情報を取得して、アプリケーション241に渡し、アプリケーション241からのリクエストに基づくデータの書き込みを、第2メモリ210のうち第1読出領域211とは異なる第2書込領域212に対して行ってもよい。アプリケーション241からのデータの書き込みが、状態情報を取得するための第1読出領域211とは別の第2書込領域212に対して行われるので、第1読出領域211が記憶する状態情報を、状態収集部122により書き込まれた状態情報に常に同期しておくことができる。これにより、状態情報を任意のタイミングでアプリケーション241に提供することが可能である。このため、状態情報の取得タイミングを意識することなく、状態情報に基づくアプリケーション241を容易に構築することができる。
 ロボットコントローラ100は、第1メモリ110から読み出したデータに基づいて、ロボットコントローラ100の内部で実行可能な制御コマンドを生成するメモリインタプリタ123を更に有してもよい。制御コマンドによりロボット2を制御するロボットコントローラ100の機能を、演算モジュール200の演算結果によって容易に拡張することができる。また、制御コマンドによりロボット2を制御するように生成された動作プログラムと、演算モジュール200の演算結果とを自在に組み合わせて、より多様な制御をロボットコントローラ100に実行させることができる。過去に生成された動作プログラム自体を、演算モジュール200とは別に発展させてゆくことも可能である。
 ロボットコントローラ100は、複数のローカルコマンドを記憶可能なコマンド記憶部124と、コマンド記憶部124から複数のローカルコマンドを順次読み出し、制御コマンドを生成するローカルインタプリタ125と、メモリインタプリタ123及びローカルインタプリタ125の少なくとも一方が生成した制御コマンドに基づいて、ロボット2のモーションを制御するモーション制御部131と、を更に有してもよい。複数のローカルコマンドに基づきロボット2を動作させることと、演算モジュール200の演算結果に基づきロボット2を動作させることとの両方が可能である。更に、複数のローカルコマンドと、演算モジュール200の演算結果との組み合わせに基づきロボット2を動作させることも可能である。従って、ローカルコマンドに基づきロボット2を制御する機能を、演算モジュール200の演算結果によって容易に拡張することができる。また、ローカルコマンド、及び演算モジュール200の演算結果のいずれもが、同じ形式の制御コマンドに変換される。このため、複数のローカルコマンドに基づきロボット2を動作させることと、演算モジュール200の演算結果に基づきロボット2を動作させることとで、モーション制御部131を共用することができる。従って、ロボットコントローラ100の構成を簡素化することができる。
 ロボットコントローラ100は、ローカルインタプリタ125が生成した制御コマンドに基づきロボット2が動作している期間には、メモリインタプリタ123からモーション制御部131への制御コマンドの入力を禁止し、メモリインタプリタ123が生成した制御コマンドに基づきロボット2が動作している期間には、ローカルインタプリタ125からモーション制御部131への制御コマンドの入力を禁止するコマンド選択部126を更に有してもよい。ローカルインタプリタ125からの制御コマンドと、メモリインタプリタ123から制御コマンドとが想定外に混ざり合い、ロボット2の誤動作が発生することを防止することができる。
 アプリケーション241は、ローカルコマンドに基づく制御で使用されるデータを生成して、生成済みデータの書き込みのリクエストをメモリマネージャ223に対して行い、モーション制御部131は、第1メモリ110から読み出された生成済みデータと、コマンド記憶部124から読み出されたローカルコマンドとに基づいて、ロボット2のモーションを制御してもよい。ロボットコントローラ100のリソースと、演算モジュール200のリソースとを組み合わせて、より高度な制御を実行することができる。
 ロボットコントローラ100は、モーション制御部131が、ローカルインタプリタ125が生成した制御コマンドに基づいて、ロボット2のモーションを制御するローカル制御モードと、モーション制御部131が、アプリケーション241による演算結果に基づきメモリインタプリタ123が生成した制御コマンドに基づいて、ロボット2のモーションを制御するアプリ制御モードと、を有してもよい。ローカル制御モードと、アプリ制御モードとを選択的に実行することで、ロボットコントローラ100の機能を容易に拡張することができる。いずれのモードにおいても、モーション制御部131による制御は同じ形式の制御コマンドに基づき行われるので、ローカル制御モードのためのアーキテクチャを変更することなく、そのアーキテクチャの一部に演算モジュール200を相乗りさせることができる。このため、ローカル制御モードのために過去に生成された動作プログラムを活かしつつ、アプリケーション241による演算結果に基づく制御をロボットコントローラ100に容易に付加することができる。過去に生成された動作プログラム自体を、アプリケーション241とは別に発展させてゆくことも可能である。
 ロボットコントローラ100は、メモリインタプリタ123が読み出したデータに対応したレスポンスを生成し、第1メモリ110に書き込むレスポンス生成部127を更に有し、メモリマネージャ223は、第2メモリ210からレスポンスを読み出して、読み出し済みデータの書き込みのリクエストを行ったアプリケーション241に渡してもよい。レスポンスに基づくことで、リクエストに基づく処理の実行状況に合わせて演算を進行させるアプリケーション241を容易に生成することができる。
 メモリマネージャ223は、1以上のアプリケーション241からの複数のリクエストをリクエスト格納部225にキューイングし、リクエスト格納部225から複数のリクエストを順番に払い出し、払い出したリクエストに対応するデータを第2メモリ210に書き込んでもよい。メモリマネージャ223によりリクエストのキューイングが行われるので、先行するリクエストを誤って上書きしてしまうリスク等に配慮することなく、リクエストを随時行うようにアプリケーション241を構築することができる。2以上のアプリケーション241が同時に実行され得る場合においても、他のアプリケーション241によるリクエスト状況を考慮することなく、随時リクエストを行うように個々のアプリケーション241を構築することができる。従って、アプリケーション241の構築コストを更に低減することができる。
 メモリマネージャ223は、第2メモリ210からレスポンスを読み出した場合に、レスポンスに対応するリクエストの次のリクエストをリクエスト格納部225から払い出してもよい。アプリケーション241の自由度と、ロボットコントローラ100におけるリアルタイム性との両立を図ることができる。
 メモリマネージャ223は、リクエストがロボット2の状態情報の読み出しのリクエストである場合、リクエストをキューイングせずに、第2メモリ210から状態情報を読み出して、リクエストを行ったアプリケーション241に渡してもよい。即時性が求められる状態情報の読み出しのリクエストを、キューイングの対象から外すことで、状態情報の取得遅延を抑制することができる。また、リクエストのキューイングのリソースを削減することができる。
 以上に例示した構成において、演算モジュール200は、ロボット2を制御するロボットコントローラ100が参照する情報を記憶する共有メモリ(第2メモリ210)と、共有メモリの内容に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能なプロセッサ201と、アプリケーション241からのリクエストに基づいて、共有メモリに対してデータの書き込み又は読み出しの少なくとも一方を行うメモリマネージャ223と、を備える。
 また、演算モジュール200は、ロボット2を制御するロボットコントローラ100により書き込まれた情報を記憶する共有メモリと、メモリの内容に基づいて演算を行う1以上のアプリケーション241を保存するアプリ保存部240と、アプリ保存部240に保存されたアプリケーション241に関連付けられた共有メモリの内容を、関連付けられたアプリケーション241に通知するメモリマネージャ223と、を備える。
 ロボットコントローラ100は、ロボット2の状態情報に基づいて、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能な演算モジュール200により書き込まれた情報を記憶する共有メモリ(第1メモリ110)と、少なくとも状態情報を共有メモリに書き込む状態収集部122と、アプリケーション241による演算結果に基づき共有メモリに書き込まれたデータに基づいて、ロボットコントローラ100の内部で実行可能な制御コマンドを生成するメモリインタプリタ123と、制御コマンドに基づいて、ロボット2のモーションを制御するモーション制御部131と、を備える。
 制御システム3は、ロボット2の制御に関わる演算を行うアプリケーション241を実行可能なプロセッサ201と、アプリケーション241からのリクエストに基づいて、共有メモリ(第2メモリ210)に対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャ223と、複数のローカルコマンドを記憶可能なコマンド記憶部124と、コマンド記憶部124から複数のローカルコマンドを順次読み出し、制御コマンドを生成するローカルインタプリタ125と、共有メモリ(第1メモリ110)から読み出したデータに基づいて、制御コマンドを生成するメモリインタプリタ123と、メモリインタプリタ123及びローカルインタプリタ125の少なくとも一方が生成した制御コマンドに基づいて、ロボット2のモーションを制御するモーション制御部131と、を備える。この構成において、共有メモリは、必ずしも互いに同期される第1メモリ110と第2メモリ210とに分かれていなくてもよい。
 制御システム3は、ロボット2を制御するための複数のローカルコマンドを記憶可能なコマンド記憶部124と、ローカルコマンドに基づく制御で使用されるデータを生成し、生成済みデータを共有メモリに書き込む演算モジュール200と、共有メモリから読み出された生成済みデータと、コマンド記憶部124から読み出されたローカルコマンドとに基づいてロボット2のモーションを制御するモーション制御部131と、を備える。
 以上、実施形態について説明したが、本発明は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
[付記]
 ここで、本開示に含まれる種々の例示的実施形態を、以下のとおり記載する。
[1]
 ロボットを制御するロボットコントローラと、
 前記ロボットコントローラと通信する演算モジュールと、
を備え、
 前記ロボットコントローラは、前記ロボットの状態情報が格納される第1メモリを有し、
 前記演算モジュールは、
  前記第1メモリと内容が同期される第2メモリと、
  前記第2メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
を有する、
制御システム。
[2]
 前記ロボットコントローラは、ネットワーク通信により、前記第1メモリの内容を定周期で前記第2メモリの内容に同期させる第1同期部を更に有し、
 前記演算モジュールは、前記ネットワーク通信により、前記第2メモリの内容を定周期で前記第1メモリの内容に同期させる第2同期部を更に有する、
[1]記載の制御システム。
[3]
 前記演算モジュールは、アプリケーションからのリクエストに基づいて、前記第2メモリに対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャを更に有する、
[1]又は[2]記載の制御システム。
[4]
 前記演算モジュールは、1以上のアプリケーションを保存するアプリ保存部を更に有し、
 前記メモリマネージャは、前記アプリ保存部に保存されたアプリケーションに関連付けられた前記第2メモリの内容を、関連付けられたアプリケーションに通知する、
[3]記載の制御システム。
[5]
 前記メモリマネージャは、前記ロボットの制御に対応するAPIを有し、アプリケーションからのリクエストを前記APIにより受け付けた場合に、リクエストに対応するデータを前記第2メモリに書き込む、
[3]又は[4]記載の制御システム。
[6]
 前記ロボットコントローラは、少なくとも前記ロボットの前記状態情報を、前記第1メモリに書き込む状態収集部を更に有し、
 前記メモリマネージャは、アプリケーションからのリクエストに応じ、前記第2メモリから前記状態情報を取得してアプリケーションに渡す、
[3]~[5]のいずれか一項記載の制御システム。
[7]
 前記状態収集部は、前記状態情報を、前記第1メモリの第1書込領域に書き込み、
 前記メモリマネージャは、前記第1書込領域に対応した前記第2メモリの第1読出領域から前記状態情報を取得して、アプリケーションに渡し、
アプリケーションからのリクエストに基づくデータの書き込みを、前記第2メモリのうち前記第1読出領域とは異なる第2書込領域に対して行う、
[6]記載の制御システム。
[8]
 前記ロボットコントローラは、前記第1メモリから読み出したデータに基づいて、前記ロボットコントローラの内部で実行可能な制御コマンドを生成するメモリインタプリタを更に有する、
[7]記載の制御システム。
[9]
 前記ロボットコントローラは、
  複数のローカルコマンドを記憶可能なコマンド記憶部と、
  前記コマンド記憶部から前記複数のローカルコマンドを順次読み出し、前記制御コマンドを生成するローカルインタプリタと、
  前記メモリインタプリタ及び前記ローカルインタプリタの少なくとも一方が生成した前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
を更に有する、
[8]記載の制御システム。
[10]
 前記ロボットコントローラは、前記ローカルインタプリタが生成した前記制御コマンドに基づき前記ロボットが動作している期間には、前記メモリインタプリタから前記モーション制御部への前記制御コマンドの入力を禁止し、前記メモリインタプリタが生成した前記制御コマンドに基づき前記ロボットが動作している期間には、前記ローカルインタプリタから前記モーション制御部への前記制御コマンドの入力を禁止するコマンド選択部を更に有する、
[9]記載の制御システム。
[11]
 アプリケーションは、ローカルコマンドに基づく制御で使用されるデータを生成して、生成済みデータの書き込みのリクエストを前記メモリマネージャに対して行い、
 前記モーション制御部は、前記第1メモリから読み出された前記生成済みデータと、前記コマンド記憶部から読み出されたローカルコマンドとに基づいて、前記ロボットの前記モーションを制御する、
[9]又は[10]記載の制御システム。
[12]
 前記ロボットコントローラは、
  前記モーション制御部が、前記ローカルインタプリタが生成した前記制御コマンドに基づいて、前記ロボットの前記モーションを制御するローカル制御モードと、
  前記モーション制御部が、アプリケーションによる演算結果に基づき前記メモリインタプリタが生成した前記制御コマンドに基づいて、前記ロボットの前記モーションを制御するアプリ制御モードと、
を有する、
[9]~[11]のいずれか一項記載の制御システム。
[13]
 前記ロボットコントローラは、前記メモリインタプリタが読み出したデータに対応したレスポンスを生成し、前記第1メモリに書き込むレスポンス生成部を更に有し、
 前記メモリマネージャは、前記第2メモリから前記レスポンスを読み出して、読み出し済みデータの書き込みのリクエストを行ったアプリケーションに渡す、
[12]記載の制御システム。
[14]
 前記メモリマネージャは、1以上のアプリケーションからの複数のリクエストをリクエスト格納部にキューイングし、前記リクエスト格納部から複数のリクエストを順番に払い出し、払い出したリクエストに対応するデータを前記第2メモリに書き込む、
[12]又は[13]記載の制御システム。
[15]
 前記メモリマネージャは、前記第2メモリからレスポンスを読み出した場合に、前記レスポンスに対応するリクエストの次のリクエストを前記リクエスト格納部から払い出す、
[14]記載の制御システム。
[16]
 前記メモリマネージャは、リクエストが前記ロボットの前記状態情報の読み出しのリクエストである場合、リクエストをキューイングせずに、前記第2メモリから前記状態情報を読み出して、リクエストを行ったアプリケーションに渡す、
[14]又は[15]記載の制御システム。
[17]
 ロボットを制御するロボットコントローラが参照する情報を記憶する共有メモリと、
 前記共有メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
 アプリケーションからのリクエストに基づいて、前記共有メモリに対してデータの書き込み又は読み出しの少なくとも一方を行うメモリマネージャと、
を備える演算モジュール。
[18]
 ロボットを制御するロボットコントローラにより書き込まれた情報を記憶する共有メモリと、
 メモリの内容に基づいて演算を行う1以上のアプリケーションを保存するアプリ保存部と、
 前記アプリ保存部に保存されたアプリケーションに関連付けられた前記共有メモリの内容を、関連付けられたアプリケーションに通知するメモリマネージャと、
を備える演算モジュール。
[19]
 ロボットの状態情報に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能な演算モジュールにより書き込まれた情報を記憶する共有メモリと、
 少なくとも前記状態情報を前記共有メモリに書き込む状態収集部と、
 アプリケーションによる演算結果に基づき共有メモリに書き込まれたデータに基づいて、ロボットコントローラの内部で実行可能な制御コマンドを生成するメモリインタプリタと、
 前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
を備えるロボットコントローラ。
[20]
 ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
 アプリケーションからのリクエストに基づいて、共有メモリに対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャと、
 複数のローカルコマンドを記憶可能なコマンド記憶部と、
 前記コマンド記憶部から前記複数のローカルコマンドを順次読み出し、制御コマンドを生成するローカルインタプリタと、
 前記共有メモリから読み出したデータに基づいて、前記制御コマンドを生成するメモリインタプリタと、
 前記メモリインタプリタ及び前記ローカルインタプリタの少なくとも一方が生成した前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
を備える制御システム。
[21]
 ロボットを制御するための複数のローカルコマンドを記憶可能なコマンド記憶部と、
 ローカルコマンドに基づく制御で使用されるデータを生成し、生成済みデータを共有メモリに書き込む演算モジュールと、
 前記共有メモリから読み出された前記生成済みデータと、前記コマンド記憶部から読み出されたローカルコマンドとに基づいて前記ロボットのモーションを制御するモーション制御部と、
を備える制御システム。
[22]
 ロボットを制御するロボットコントローラにより、前記ロボットの状態情報を第1メモリに格納することと、
 前記ロボットコントローラと通信する演算モジュールにより、第2メモリの内容を前記第1メモリの内容に同期させることと、
 前記演算モジュールにより、前記第2メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行することと、
を含む制御方法。
 2…ロボット、3…制御システム、100…ロボットコントローラ、200…演算モジュール、110…第1メモリ、210…第2メモリ、201…プロセッサ、111…第1書込領域、211…第1読出領域、212…第2書込領域、121…第1同期部、221…第2同期部、223…メモリマネージャ、230…API、240…アプリ保存部、241…アプリケーション、122…状態収集部、225…リクエスト格納部、123…メモリインタプリタ、131…モーション制御部、124…コマンド記憶部、125…ローカルインタプリタ、126…コマンド選択部、127…レスポンス生成部。

Claims (22)

  1.  ロボットを制御するロボットコントローラと、
     前記ロボットコントローラと通信する演算モジュールと、
    を備え、
     前記ロボットコントローラは、前記ロボットの状態情報が格納される第1メモリを有し、
     前記演算モジュールは、
      前記第1メモリと内容が同期される第2メモリと、
      前記第2メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
    を有する、
    制御システム。
  2.  前記ロボットコントローラは、ネットワーク通信により、前記第1メモリの内容を定周期で前記第2メモリの内容に同期させる第1同期部を更に有し、
     前記演算モジュールは、前記ネットワーク通信により、前記第2メモリの内容を定周期で前記第1メモリの内容に同期させる第2同期部を更に有する、
    請求項1記載の制御システム。
  3.  前記演算モジュールは、アプリケーションからのリクエストに基づいて、前記第2メモリに対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャを更に有する、
    請求項1又は2記載の制御システム。
  4.  前記演算モジュールは、1以上のアプリケーションを保存するアプリ保存部を更に有し、
     前記メモリマネージャは、前記アプリ保存部に保存されたアプリケーションに関連付けられた前記第2メモリの内容を、関連付けられたアプリケーションに通知する、
    請求項3記載の制御システム。
  5.  前記メモリマネージャは、前記ロボットの制御に対応するAPIを有し、アプリケーションからのリクエストを前記APIにより受け付けた場合に、リクエストに対応するデータを前記第2メモリに書き込む、
    請求項3記載の制御システム。
  6.  前記ロボットコントローラは、少なくとも前記ロボットの前記状態情報を、前記第1メモリに書き込む状態収集部を更に有し、
     前記メモリマネージャは、アプリケーションからのリクエストに応じ、前記第2メモリから前記状態情報を取得してアプリケーションに渡す、
    請求項3記載の制御システム。
  7.  前記状態収集部は、前記状態情報を、前記第1メモリの第1書込領域に書き込み、
     前記メモリマネージャは、前記第1書込領域に対応した前記第2メモリの第1読出領域から前記状態情報を取得して、アプリケーションに渡し、
    アプリケーションからのリクエストに基づくデータの書き込みを、前記第2メモリのうち前記第1読出領域とは異なる第2書込領域に対して行う、
    請求項6記載の制御システム。
  8.  前記ロボットコントローラは、前記第1メモリから読み出したデータに基づいて、前記ロボットコントローラの内部で実行可能な制御コマンドを生成するメモリインタプリタを更に有する、
    請求項7記載の制御システム。
  9.  前記ロボットコントローラは、
      複数のローカルコマンドを記憶可能なコマンド記憶部と、
      前記コマンド記憶部から前記複数のローカルコマンドを順次読み出し、前記制御コマンドを生成するローカルインタプリタと、
      前記メモリインタプリタ及び前記ローカルインタプリタの少なくとも一方が生成した前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
    を更に有する、
    請求項8記載の制御システム。
  10.  前記ロボットコントローラは、前記ローカルインタプリタが生成した前記制御コマンドに基づき前記ロボットが動作している期間には、前記メモリインタプリタから前記モーション制御部への前記制御コマンドの入力を禁止し、前記メモリインタプリタが生成した前記制御コマンドに基づき前記ロボットが動作している期間には、前記ローカルインタプリタから前記モーション制御部への前記制御コマンドの入力を禁止するコマンド選択部を更に有する、
    請求項9記載の制御システム。
  11.  アプリケーションは、ローカルコマンドに基づく制御で使用されるデータを生成して、生成済みデータの書き込みのリクエストを前記メモリマネージャに対して行い、
     前記モーション制御部は、前記第1メモリから読み出された前記生成済みデータと、前記コマンド記憶部から読み出されたローカルコマンドとに基づいて、前記ロボットの前記モーションを制御する、
    請求項9記載の制御システム。
  12.  前記ロボットコントローラは、
      前記モーション制御部が、前記ローカルインタプリタが生成した前記制御コマンドに基づいて、前記ロボットの前記モーションを制御するローカル制御モードと、
      前記モーション制御部が、アプリケーションによる演算結果に基づき前記メモリインタプリタが生成した前記制御コマンドに基づいて、前記ロボットの前記モーションを制御するアプリ制御モードと、
    を有する、
    請求項9記載の制御システム。
  13.  前記ロボットコントローラは、前記メモリインタプリタが読み出したデータに対応したレスポンスを生成し、前記第1メモリに書き込むレスポンス生成部を更に有し、
     前記メモリマネージャは、前記第2メモリから前記レスポンスを読み出して、読み出し済みデータの書き込みのリクエストを行ったアプリケーションに渡す、
    請求項12記載の制御システム。
  14.  前記メモリマネージャは、1以上のアプリケーションからの複数のリクエストをリクエスト格納部にキューイングし、前記リクエスト格納部から複数のリクエストを順番に払い出し、払い出したリクエストに対応するデータを前記第2メモリに書き込む、
    請求項12記載の制御システム。
  15.  前記メモリマネージャは、前記第2メモリからレスポンスを読み出した場合に、前記レスポンスに対応するリクエストの次のリクエストを前記リクエスト格納部から払い出す、
    請求項14記載の制御システム。
  16.  前記メモリマネージャは、リクエストが前記ロボットの前記状態情報の読み出しのリクエストである場合、リクエストをキューイングせずに、前記第2メモリから前記状態情報を読み出して、リクエストを行ったアプリケーションに渡す、
    請求項14記載の制御システム。
  17.  ロボットを制御するロボットコントローラが参照する情報を記憶する共有メモリと、
     前記共有メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
     アプリケーションからのリクエストに基づいて、前記共有メモリに対してデータの書き込み又は読み出しの少なくとも一方を行うメモリマネージャと、
    を備える演算モジュール。
  18.  ロボットを制御するロボットコントローラにより書き込まれた情報を記憶する共有メモリと、
     メモリの内容に基づいて演算を行う1以上のアプリケーションを保存するアプリ保存部と、
     前記アプリ保存部に保存されたアプリケーションに関連付けられた前記共有メモリの内容を、関連付けられたアプリケーションに通知するメモリマネージャと、
    を備える演算モジュール。
  19.  ロボットの状態情報に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行可能な演算モジュールにより書き込まれた情報を記憶する共有メモリと、
     少なくとも前記状態情報を前記共有メモリに書き込む状態収集部と、
     アプリケーションによる演算結果に基づき共有メモリに書き込まれたデータに基づいて、ロボットコントローラの内部で実行可能な制御コマンドを生成するメモリインタプリタと、
     前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
    を備えるロボットコントローラ。
  20.  ロボットの制御に関わる演算を行うアプリケーションを実行可能なプロセッサと、
     アプリケーションからのリクエストに基づいて、共有メモリに対してデータの書き込み及び読み出しの少なくとも一方を行うメモリマネージャと、
     複数のローカルコマンドを記憶可能なコマンド記憶部と、
     前記コマンド記憶部から前記複数のローカルコマンドを順次読み出し、制御コマンドを生成するローカルインタプリタと、
     前記共有メモリから読み出したデータに基づいて、前記制御コマンドを生成するメモリインタプリタと、
     前記メモリインタプリタ及び前記ローカルインタプリタの少なくとも一方が生成した前記制御コマンドに基づいて、前記ロボットのモーションを制御するモーション制御部と、
    を備える制御システム。
  21.  ロボットを制御するための複数のローカルコマンドを記憶可能なコマンド記憶部と、
     ローカルコマンドに基づく制御で使用されるデータを生成し、生成済みデータを共有メモリに書き込む演算モジュールと、
     前記共有メモリから読み出された前記生成済みデータと、前記コマンド記憶部から読み出されたローカルコマンドとに基づいて前記ロボットのモーションを制御するモーション制御部と、
    を備える制御システム。
  22.  ロボットを制御するロボットコントローラにより、前記ロボットの状態情報を第1メモリに格納することと、
     前記ロボットコントローラと通信する演算モジュールにより、第2メモリの内容を前記第1メモリの内容に同期させることと、
     前記演算モジュールにより、前記第2メモリの内容に基づいて、前記ロボットの制御に関わる演算を行うアプリケーションを実行することと、
    を含む制御方法。
PCT/JP2023/008123 2022-03-08 2023-03-03 制御システム、演算モジュール、ロボットコントローラ、及び制御方法 WO2023171574A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2022035101 2022-03-08
JP2022-035101 2022-03-08

Publications (1)

Publication Number Publication Date
WO2023171574A1 true WO2023171574A1 (ja) 2023-09-14

Family

ID=87935010

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/008123 WO2023171574A1 (ja) 2022-03-08 2023-03-03 制御システム、演算モジュール、ロボットコントローラ、及び制御方法

Country Status (1)

Country Link
WO (1) WO2023171574A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094473A (ja) * 2002-08-30 2004-03-25 Hitachi Ltd コントローラ及びその制御方法
JP2012060207A (ja) * 2010-09-06 2012-03-22 Hitachi Industrial Equipment Systems Co Ltd 通信制御装置及び通信・制御システム
JP2019053459A (ja) * 2017-09-14 2019-04-04 オムロン株式会社 制御装置および制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004094473A (ja) * 2002-08-30 2004-03-25 Hitachi Ltd コントローラ及びその制御方法
JP2012060207A (ja) * 2010-09-06 2012-03-22 Hitachi Industrial Equipment Systems Co Ltd 通信制御装置及び通信・制御システム
JP2019053459A (ja) * 2017-09-14 2019-04-04 オムロン株式会社 制御装置および制御方法

Similar Documents

Publication Publication Date Title
JP3269003B2 (ja) ロボット制御装置
Sanfilippo et al. Controlling Kuka industrial robots: Flexible communication interface JOpenShowVar
JP5149258B2 (ja) ロボットコンポーネント管理装置
CN109605367B (zh) 一种机器人编程方法、装置及设备、存储介质
CN111427310A (zh) 一种工业机器人控制器运行系统
JP6750909B2 (ja) ロボット軌道生成方法、ロボット軌道生成装置、および製造方法
WO2021138260A1 (en) Transformation mode switching for a real-time robotic control system
WO2023171574A1 (ja) 制御システム、演算モジュール、ロボットコントローラ、及び制御方法
JP6362821B2 (ja) 制御装置、制御方法および命令セット
JP2019081204A (ja) ロボット制御方法、制御端末、およびロボットシステム
JP5459601B2 (ja) ロボットコントロール・システム、ロボットコントロール方法
US20220347841A1 (en) Real-time robotics control framework
CN117120219A (zh) 实时机器人控制框架
CN115816459A (zh) 机器人控制方法、装置、计算机设备、存储介质和产品
WO2012124145A1 (ja) 演算ユニット、支援装置、支援プログラム、支援プログラムを格納した記憶媒体、および、支援装置における動作方法
US11992948B2 (en) Real-time robotics control framework
JPH08106320A (ja) 自動機械及び自動機械の制御方法
WO2023145361A1 (ja) ロボット制御システムおよびロボット制御システムを構成する方法
WO2023145362A1 (ja) ロボット制御システムおよびロボット制御システムを構成する方法
JP7453483B1 (ja) データ供給装置、ロボットシステム、データ供給方法、ロボットの制御方法、データ供給プログラムおよび制御プログラム
JP7495440B2 (ja) ロボットコントローラ、制御システム、及び制御方法
CN114690702B (zh) 一种软plc和运动控制相结合的机器人控制系统
US20230311304A1 (en) Robot controller, control system, and control method
US20230286153A1 (en) Path generation for manual robot teaching
JP7490412B2 (ja) ロボットシステム及びその制御方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23766750

Country of ref document: EP

Kind code of ref document: A1