WO2017052059A1 - Real-time control system, real-time control device and system control method - Google Patents

Real-time control system, real-time control device and system control method Download PDF

Info

Publication number
WO2017052059A1
WO2017052059A1 PCT/KR2016/008031 KR2016008031W WO2017052059A1 WO 2017052059 A1 WO2017052059 A1 WO 2017052059A1 KR 2016008031 W KR2016008031 W KR 2016008031W WO 2017052059 A1 WO2017052059 A1 WO 2017052059A1
Authority
WO
WIPO (PCT)
Prior art keywords
agents
control
agent
shared memory
hardware
Prior art date
Application number
PCT/KR2016/008031
Other languages
French (fr)
Korean (ko)
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
Priority claimed from KR1020160006426A external-priority patent/KR102235166B1/en
Application filed by 주식회사 레인보우 filed Critical 주식회사 레인보우
Priority to CN201680054794.7A priority Critical patent/CN108025436B/en
Priority to US15/762,060 priority patent/US11135719B2/en
Priority to JP2018514269A priority patent/JP6836585B2/en
Priority to EP16848785.8A priority patent/EP3354415A4/en
Publication of WO2017052059A1 publication Critical patent/WO2017052059A1/en

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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • 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

Definitions

  • the present invention relates to a real time control system, a system control apparatus and a system control method. More specifically, the present invention relates to a real-time control system, a system control apparatus and a system capable of accurate real-time processing, easy to develop and debug, and robust in hardware.
  • Robots can be largely divided into hardware and software, and they are integrated to form a system.
  • Components of the robot hardware include a driver and a controller for moving the robot joint, a battery and a power controller, a communication module, a sensor, an exoskeleton of the robot, an electronic circuit, and a battery. These different types of elements are combined according to the characteristics of each desired robot to form a robot hardware platform.
  • the present invention is to solve the above problems, in a system that requires real-time, while several independent processes for the same hardware control and processing can coexist, the operation of the robot can be stably controlled accordingly.
  • An object of the present invention is to provide a real-time system, a system control device, and a system control method that can provide robustness and scalability.
  • a method of controlling a system including: operating a plurality of agents using a shared memory and having mutually independent processes; Obtaining hardware control data for controlling one or more devices from each reference generated from the plurality of agents and stored in the shared memory; And transmitting a control signal according to the reference to the one or more devices selected from the hardware control data.
  • an apparatus for solving the above problems, the system control apparatus, a plurality of agents having mutually independent processes; A shared memory storing a reference generated according to the operations of the plurality of agents; And obtaining hardware control data for at least one device control from each reference generated from the plurality of agents and stored in the shared memory, and controlling the control signal according to the reference to the at least one device selected from the hardware control data. It includes a device control module for delivering.
  • a real-time system for solving the above problems, one or more hardware devices including a joint or sensor device of the system; A plurality of agents having processes independent of each other in association with the system; A shared memory storing a reference generated according to the operations of the plurality of agents; From each reference generated from the plurality of agents and stored in the shared memory, hardware control data for controlling one or more devices is obtained, and the control signal according to the reference is sent to the one or more devices selected from the hardware control data.
  • a device control module for transmitting; And a user system for managing real-time operating cycles and execution operations of the device control module and the agents.
  • a method of controlling a real-time device system including: obtaining state information of a current step from a device to be controlled; Transferring the status information to one or more agents processing a reference operation using the status information of the current step; Obtaining, from the agent, reference information calculated beforehand based on state information of a previous step; And transmitting the reference information to the device as a control signal corresponding to the current step.
  • the apparatus for solving the above problems, in the device system control apparatus, obtains the state information of the current step from the device to be controlled, and reference by using the state information of the current step A device communication unit for transmitting the status information to one or more agents processing an operation; And a reference acquisition unit for obtaining reference information pre-calculated based on state information of a previous step from the agent, wherein the device communication unit transfers the reference information as a control signal corresponding to the current staff to the device.
  • a system for solving the above problems includes a device control system comprising: a plurality of agents having mutually independent processes; A shared memory storing a reference generated according to the operations of the plurality of agents; And obtaining the state information of the current step from the controlling device, and transferring the state information to the plurality of agents processing a reference operation using the state information of the current step, and from the agent to the state information of the previous step. And a device control module configured to obtain reference information calculated in advance based on the reference information, and to transmit the reference information to the device as a control signal corresponding to the current step.
  • the method for solving the above problems can be implemented with a program for executing the method on a computer and a recording medium on which the program is recorded.
  • a plurality of agents having mutually independent processes and a shared memory in which references generated according to operations of the plurality of agents are stored are provided, and the reference to the hardware device is controlled using the reference.
  • FIG. 1 is a conceptual diagram schematically showing an entire system according to an embodiment of the present invention.
  • FIG. 2 is a flowchart illustrating a control method of a robot system according to an exemplary embodiment of the present invention.
  • 3 to 4 are diagrams for describing a relationship between a shared memory and a system according to an exemplary embodiment of the present invention.
  • FIG. 5 is a diagram for explaining data exchange between a device control module and an agent according to an embodiment of the present invention.
  • FIG. 6 is a block diagram illustrating a device control module according to an embodiment of the present invention.
  • FIG. 7 is a flowchart illustrating a control operation of the robot system according to another exemplary embodiment.
  • FIG. 8 illustrates a configuration of a device control module according to an embodiment of the present invention.
  • FIG. 9 is a flowchart illustrating an operation of a device control module and agents according to an embodiment of the present invention.
  • FIG. 10 is a timing diagram illustrating an operation timing between a device, a device control module, and an agent according to an embodiment of the present invention.
  • 11 to 14 illustrate time elements and test results for performance verification of a control system according to an exemplary embodiment of the present invention.
  • components expressed as means for performing the functions described in the detailed description include all types of software including, for example, a combination of circuit elements or firmware / microcode, etc. that perform the functions. It is intended to include all methods of performing a function which are combined with appropriate circuitry for executing the software to perform the function.
  • the invention, as defined by these claims, is equivalent to what is understood from this specification, as any means capable of providing such functionality, as the functionality provided by the various enumerated means are combined, and in any manner required by the claims. It should be understood that.
  • FIG. 1 is a conceptual diagram schematically showing an entire system according to an embodiment of the present invention.
  • an entire system may include one or more devices 100, a device control module 200, a shared memory 300, one or more agents 400, and a user system 500. Include.
  • the device 100 may include one or more driving devices that finally perform the operation of the robotic system.
  • the drive device may comprise a hardware device or a software device.
  • the drive device may include, for example, at least one of a joint device, a sensor device including a sensor board, or a simulator device that controls drive for the articulated motor.
  • the device 100 may be controlled according to a control signal received from the device control module 200, and may output various data such as sensor data to the device control module 200.
  • the term device 100 is not limited to hardware, but may be used as a concept including a software driver for driving an actual hardware device. Accordingly, each device 100 may be physically and softwarely connected to the device control module 200.
  • Each device 100 may form a communication network with the device control module 200.
  • the communication network may form a system network using a controller area network (CAN) protocol for system stability.
  • CAN controller area network
  • each device 100 may be connected to the device control module 200 through one or more CAN communication channels, and receive a message composed of CAN frame data according to a preset control period through the CAN communication channel.
  • a message may be output to the device control module 200.
  • the message may include a motor control reference, an encoder value, a controller state value, a pulse width modulation (PWM) command, a sensor value, or various other setting or output values.
  • PWM pulse width modulation
  • the device control module 200 obtains hardware control data for controlling one or more devices 100 from each reference generated from the plurality of agents 400 and stored in the shared memory, and the hardware control data. And transmits a control signal according to the reference to the one or more devices 100 selected from.
  • the device control module 200 may always reside on an operating system for controlling the robotic system and may be executed in the background.
  • the device control module 200 may uniquely directly communicate the device 100 with reference to the shared memory 300, and may transmit a control signal or receive a sensor signal through the communication channel.
  • the device control module 200 may transfer a reference for controlling the joint device 100 to the joint device 100 or receive necessary sensor information from the sensor device 100.
  • the device control module 200 may include a real-time thread created on the operating system. The thread is synchronized with the motion generation operation cycle of the system to enable real time processing. In addition, the device control module 200 may further include a non-real time thread for processing data reading and conversion.
  • each agent 400 may be implemented as independent software modules having independent processes.
  • the agents 400 may each process different motions and perform a process for outputting a reference corresponding thereto.
  • each agent 400 may include a motion agent, a controller agent, a communication agent or a walking agent, a damping agent, and various other agents.
  • the agents 400 can create and operate respective threads without sharing heap, data, and static memory, and mutually share them.
  • the necessary data for each can be provided to the shared memory 300, thereby allowing organic processing without mutual collision, and facilitates software development and processing.
  • each agent 400 may refer to hardware abstraction data and user-defined data of the shared memory 300 according to a defined process, and store the reference data generated based on the hardware abstraction data of the shared memory 300.
  • the user defined data may include shared data for sharing information between the agents 400 and various data for driving other user-definable systems.
  • the hardware abstraction data may include abstracted reference, sensor data, motion owner variable, and command data to control the device 100.
  • the device control module 200 may generate a control signal for each device 100 by using the hardware abstraction data and hardware information previously stored in the hardware database 250.
  • the device control module 200 identifies the control target device 100 using the hardware abstraction data extracted from the shared memory 300, and generates a control signal for the control target devices 100.
  • the control signal according to the reference may be output to the control target device 100.
  • the processing cycle of each agent 400 needs to be shorter than the operation cycle of processing the motion information of the system. Accordingly, the agent 400 generates a reference from the sensor data, the device control module 200 generates and outputs a control signal from the reference through the shared memory 300, and the time for updating the sensor data is It may be included in the first operating period of the system. Thus, the series of operations can all be processed within the first operating period.
  • the user system 500 may provide a user interface for controlling and monitoring the agent 400 and the device control module 200.
  • the user system 500 may include middleware for controlling the agent 400, and may provide various interfaces that may be connected to other external systems.
  • FIG. 2 is a flowchart illustrating a control method of a robot system according to an exemplary embodiment of the present invention.
  • 3 to 4 are diagrams for describing a relationship between a shared memory and a system according to an exemplary embodiment of the present invention.
  • FIG. 5 is a diagram for explaining data exchange between a device control module and an agent according to an embodiment of the present invention.
  • the device control module 200 obtains hardware abstraction data from a reference stored in the shared memory 300.
  • the device control module 200 generates a control signal for hardware control from the hardware abstraction data (S107), and transmits the generated control signal to one or more devices 100 (S109).
  • the device control module 200 receives sensor data from the devices 100 corresponding to the sensor (S111), and updates the received sensor data in the shared memory 300 (S113).
  • the series of operation steps may be all processed within a first period corresponding to the real-time operation cycle of the robot system, thereby ensuring real-time.
  • each of the agents 400 and the device control module 200 may perform data exchange and transfer processing using the shared memory 300.
  • the reference corresponding to each device 100 may be stored in the shared memory 300, and the device control module 200 may obtain a reference and use it to output a control signal. .
  • Such a plurality of agents 400 and the device control module 200 may configure a multi-agent system around the shared memory 300.
  • each part performing independent work may be separately developed by several developers, or may have an advantageous structure in a robot system development environment in which they may collaborate.
  • developers may use the shared memory 300 while interacting with the computational output of another agent 400 while ensuring a development space independent from the process concurrent development model. You will be able to send and receive.
  • the hardware abstraction data may include sensor data, reference data, motion owner- and command data, and the device control module 200 may access only the hardware abstraction data area of the shared memory 300. .
  • the device control module 200 accesses the hardware abstraction data area of the shared memory 300 to update sensor data received from the device 100, or obtains updated reference data to control the device 100. You can generate a signal.
  • the hardware abstraction data may have a data format converted by abstracting detailed data about the robot device control, and the device control module 200 may convert it into an actual hardware control signal and deliver it to the appropriate devices 100. have.
  • the agent 400 developer or user can facilitate the control without a deep understanding of the hardware.
  • the developer or the user may transfer the abstracted hardware input information as a reference through the shared memory 300, and the device control module 200 may generate a low level control signal for controlling the device 100 from the hardware abstraction data.
  • the device control module 200 may manage hardware information required to generate the control signal using the hardware database 250 described above.
  • the hardware information may include, for example, a list of devices 100, joint motor information (deceleration ratio, encoder pulse, driver channel number, etc.), a communication protocol, and the like.
  • the device control module 200 may load the hardware database 250 to determine hardware information of the driving target device 100, thereby generating an optimal control signal for controlling the driving target device 100. can do. In addition, even if there is a change in hardware or using hardware of a new configuration, it is possible to apply only by modifying the hardware database 250, so that it is robust to hardware change and the hardware can provide scalable characteristics.
  • the hardware abstraction data may include reference data, sensor data, motion owner, and command data.
  • the reference data may be updated according to the calculation result in each agent 400, and may include a target value in the current step for the device control module 200 to control each device 100.
  • the reference data may include a joint motion reference and a joint controller reference.
  • the sensor data may include measurement data that the device control module 200 receives from each device 100.
  • the measurement data may include, for example, state information at a current step including an encoder value of the joint device and sensing data.
  • the command data may include command information for controlling the device control module 200 and the agent 400 at a higher system level, and may include command target process information and parameter information.
  • the shared memory 300 may include motion owner information.
  • the hardware abstraction data area of the shared memory 300 may include a memory area 350 for each agent 400 that can update reference data for each agent 400.
  • each agent 400 may update its calculated reference in its memory space area.
  • each agent 400 may calculate and update reference data corresponding to each device 100. For example, when a total of 31 joint devices 100 exist from J1 to J31, a memory space area of each agent 400 may include a reference data area corresponding to each of the joint devices 100. .
  • the shared memory 300 may include a motion owner variable for each of the joint devices 100. Therefore, each motion owner variable space may include the same number of motion owner variables as the number of the joint devices 100.
  • Each motion owner variable may represent one agent having the authority to the joint device 100 among a plurality of preset agents 400. Accordingly, the device control module 200 may determine which agent 400 the control right for the joint device 100 depends on.
  • control right for each joint device 100 may be transferred to another agent 400 or the device control module 200 according to the change of the motion owner variable.
  • the device control module 200 may first identify the agent 400 having the control right of the specific joint device 100 from the motion owner variable.
  • the device control module 200 may collect reference data of the identified agent 400, and combine the collected reference data to generate overall reference data for the overall joint device 100.
  • the device control module 200 may generate a control signal for each device 100 by using the entire reference data, and may appropriately transmit the signal.
  • each joint of the robot can be controlled without collision in different agents 400.
  • one agent 400 controls lower body joints through an algorithm for stabilizing lower body posture, and the other agent 400 generates a specific task motion of the upper body, the results of the two agents 400 are determined. In total, the whole body task of the robot can be performed. This enables efficient control according to the characteristics of the multi-agent system of the robot.
  • FIG. 6 is a block diagram illustrating a device control module according to an embodiment of the present invention.
  • the device control module 200 includes a motion selector 210, a controller signal accumulator 220, a signal combiner 230, and an information handler 240.
  • the reference data for the joint may include two or more reference signals for joint motion control and detailed control. Accordingly, the agent 400 corresponding to each joint device 100 may generate the two or more reference signals as reference data and store the same in the shared memory 300.
  • the reference signal may be referred to as a motion reference and a controller reference.
  • the motion reference may include reference data that provides a dominant value for each joint, and the controller reference may include detailed reference data that is added to or subtracted from the motion reference.
  • the reference is not limited to the name.
  • the motion reference output data M1 to Mm and the controller references M1 to Mm may be input to the device control module 200 from the shared memory 300.
  • one motion reference may be selected for each joint device 100, but all the controller references may be accumulated and added.
  • the motion selector 210 may select motion reference data corresponding to each joint device 100 from the motion reference data based on the motion owner variable information, and output the motion reference data to the signal combiner 230. have. Therefore, one motion reference data may be selected for one joint device 100.
  • controller signal accumulator 220 may accumulate each controller reference data and output the result value to the signal combiner 230 regardless of the motion owner variable.
  • the signal combiner 230 may generate the reference data for each final joint device 100 by synthesizing the motion reference data and the controller reference data accumulated result value, and output them to the appropriate target joint devices 100. Can be.
  • the signal combiner 230 may identify the type of the reference and classify the processing space according to the reference type.
  • the signal combiner 230 may include a type identifier and a spatial processor.
  • the reference data may have other types, such as task processing, as well as joint motion, such that a type identifier may identify whether the task type or the joint type is, and the spatial processor may determine each other according to the type. Can provide processing of other data spaces.
  • separating the motion reference from the controller reference functional separation may be enabled in the process of generating the robot motion. For example, if a bipedal motion is generated, a basic walking pattern is generated in one agent 400 to generate a motion reference, a damping controller is designed in another agent 400, and another agent 400 is generated. By designing a controller to catch the vibration in the controller and outputting it to the controller reference, it is very easy to design and develop.
  • the information handler 240 may perform a function of synthesizing sensor data collected from the sensor device 100 or other measurement target devices and outputting them to the shared memory 300.
  • FIG. 7 is a flowchart illustrating a control operation of the robot system according to another exemplary embodiment.
  • the robot In general, when a problem occurs in a real experiment using a robot, the robot must be driven again from the beginning. In the case of a mobile platform, the robot initialization process is simple, but when the initialization is difficult in the articulated system or the ground like a humanoid, and it is necessary to initialize it in the air by using a crane, etc., the entire initialization process is very cumbersome and time consuming. do.
  • the device control module 200 can debug and test the robot again without the process of initializing such a robot.
  • system initialization is first performed (S201), and a plurality of agents 400 having respective mutually independent processes operate (S202).
  • the user when the user tests the motion algorithm through the agent 400 and a problem is issued, the user simply passes the motion owner to another agent 400 or the device control module 200, and sends a code for the suspended agent 400. Can be modified.
  • the motion owner variable may be switched back to the original agent 400 (S209).
  • the developer can continue the experiment after bringing the motion owner. As a result, it can accelerate development, and from the user's point of view, it can be further utilized to continuously observe the robot's joint reference on other special eggs to detect the collision and to switch the robot to the motion owner in case of a collision. It has the effect of allowing you to experiment safely.
  • FIG 8 illustrates a configuration of the device control module 200 according to an embodiment of the present invention.
  • real-time thread synchronization may be performed for the processes of the respective agents 400.
  • the real-time threads included in each process are bound to be affected by jitter according to the operation time of each process, which causes a time axis shift between the processes.
  • the device control module 200 may reflect the reference that is not updated according to the algorithm execution time, and degrade the quality of motion generation due to incorrect sensor data. As a result, they may not always be updated at offset time intervals according to a constant step period, or they may be updated too quickly, which may cause many problems.
  • the device control module 200 may acquire data using the shared memory 300 and one step delay and process synchronization between the agents 400 for thread synchronization between processes.
  • the device control module 200 performs step-based control, obtains the state information of the current step from the controlling device 100, and transmits the state information to one or more operation agents 400, and from the operation agent,
  • the reference information calculated in advance is obtained based on the state information of the previous step, and the reference information is transmitted to the device 100 as a control signal corresponding to the current step and calculated in the previous step.
  • the reference motion is implemented in the device of the current step, and the sensor information of the current step is delivered to and processed by each operation agent 400, thereby enabling operation without time delay and jitter, based on one step period.
  • the device control module 200 may include a reference acquirer 250, a sensor device communicator 260, a synchronization signal processor 270, and a shared memory access unit 280. Include.
  • each component of the device control module 200 may complete all control and operation processing in a control period corresponding to one step, and may perform the same processing again in the next step.
  • components of the device control module 200 may be processed using all or some functions of the above-described motion selector 210, controller signal accumulator 220, signal combiner 230, and information handler 240. May be implemented as a hardware processor or software module process.
  • the sensor device communication unit 260 is uniquely connected to each device 100 to transmit and receive control signals and sensor data between the device control module 200.
  • the sensor data may be a concept including state information of each device 100, and the state information may include not only information sensed by a separate sensor module but also operating environment information of the device 100.
  • the sensor device communication unit 260 receives the sensor values updated in the current step from each device 100, and updates the sensor values in the sensor data of the shared memory 300 through the shared memory access unit 280. do.
  • each of the agents 400 may access the shared memory 300 to obtain the updated sensor values of the current step.
  • the sensor value of the current step may be used in the computation process for the reference of the next step.
  • the reference obtaining unit 250 shares the reference data previously calculated based on the state information (sensor data, etc.) of the previous step by each agent 400 in the previous step with respect to the current step as a reference of the current step. It may be obtained from the memory 300.
  • the sensor device communication unit 260 also generates a control signal of the current step by using the obtained reference data according to the synchronization signal received from each agent 400 by the synchronization signal processing unit 270, The generated control signal is transferred to each device 100.
  • the device control module 200 may process the motion control of the device 100 by converting the updated reference into the control signal of the current step in the shared memory 300 according to the state information of the previous step. This allows each of the agents 400 to operate separately according to a given sufficient control time, while the motion control signals for the devices 100 can be output directly in synchronization with the current step without any additional complex computations, thereby providing motion timebase error, jitter Alternatively, errors and the like can be solved, and motion quality can be improved according to stable operation.
  • FIG. 9 is a flowchart illustrating the operation of the device control module 200 and the agent 400 according to an embodiment of the present invention.
  • the device control module 200 receives a changed sensor value from each device 100 through the sensor device communication unit 260 to update the shared memory 300 (S301).
  • the device control module 200 transmits a synchronization start signal SYNC SIGNAL to each agent 400 through the synchronization signal processor 270 (S303).
  • each of the agents 400 may obtain sensor data of the current step from the shared memory 300 and calculate a reference of the next step based on the obtained sensor data.
  • each agent 400 updates the reference value calculated in the previous step on the shared memory 300 (S305).
  • the reference of the previous step may include a value calculated in advance from the sensor data of the previous step. Accordingly, the output time can be minimized because only the result value is updated in the current step.
  • the device control module 200 receives a response signal (ACK SIGNAL) from each agent 400 through the synchronization signal processing unit 270 (S307).
  • ACK SIGNAL response signal
  • the synchronization signal processor 270 of the device control module 200 determines whether a response signal is received from all agents 400 (S309), and when all are received, the reference obtainer of the device control module 200 is received. 250 obtains the updated previous step reference value on the shared memory 300 through the shared memory access unit 280, and transmits a control signal according to the reference value of the previous step to each device 100. Transfer (S311).
  • the device control module 200 requests a next sensor value through the sensor device communication unit 260.
  • steps S301 to S311 may be all performed within one step corresponding to the operation cycle time of the robot system.
  • the one step may be synchronized to the operation cycle of the device control module 200. Since the current sensor data based arithmetic process of each of the agents 400 is used to obtain a reference of the next step, the processing time can be minimized for the current step, and the synchronization can be maintained without error.
  • the system according to the embodiment of the present invention can provide very robust hard real time. Table 1 below discloses a pseudo code for the synchronization operation of the device control module 200.
  • Table 1 shows the water code of one step cycle for generating the real-time motion of the joint device 100
  • the device control module 200 delivers the sensor data (s.data) received from the sensor (sensor)
  • the joint reference calculated from the sensor data of the previous step may be obtained and transferred to each joint device.
  • the device control module 200 may be represented as a daemon as a general control of each device 100
  • each agent 400 has a connection structure such as the eggs of grapes It may be expressed as AL.
  • the algorithm of each agent 400 may be implemented by users and developers.
  • each of the agents 400 performs a task thread according to its own algorithm, and based on the sensor data of the current step, next agent (next refrence) Handles the operation. When the process is completed, it can wait until the next step.
  • the next step is assumed to be the current step, the operation for the reference may be an operation preprocessed in the previous step.
  • the agents 400 share a joint reference of a previous step generated in advance according to owner information of each agent.
  • the memory device may be updated in the memory and the ack signal ack_flag according to the update result may be transmitted to the device control module 200.
  • the device control module 200 may use a one step delay to synchronize the control signal according to the joint reference with the sensor data and the process thread. This allows for robust and uniform device control, resulting in strict hard real-time.
  • each agent 400 can fully utilize the time of a given control step period.
  • FIG. 10 is a timing diagram illustrating an operation timing between a device 100, a device control module 200, and an agent 400 according to an exemplary embodiment.
  • the device control module 200 acquires sensor data for 5 ms, that is, a control step period, and obtains a reference value calculated by the agent 400 in a previous step. 100).
  • data sharing between the device control module 200 and the agent 400 may be performed through input / output to the shared memory 300.
  • the sensor data in the previous step n-1 is processed in the agent 400, and the working time may be shorter than the control step period. Accordingly, each agent 400 may have a suspend time. Then, when the control cycle of the current step starts, each agent 400 transfers the reference calculated in the previous step (n-1) to the device control module 200 according to the synchronization signal received from the device control module 200. The device control module 200 transmits the sensor data of the current step (n) to the agent 400. Each of the agents 400 processes an operation based on the sensor data of the current step n to generate reference data for the next step n + 1.
  • Each of the device control module 200 and the agents 400 may be implemented as a thread, and only the device control module 200 may include a thread having the same period of 5 ms as the control step period. This is because the role of the device control module 200 is a constant, the highest priority thread, so the time taken to take a given action is almost constant. 5 ms, which is a given control period, may be a very long time from the point of view of the device control module 200, and strict hard real-time may be implemented using this characteristic.
  • the operation of the device control module 200 may perform only a function of minimizing the variation of the time offset value from the start point of the thread of all actions. Accordingly, it is possible to increase the quality of the hard real-time control of various systems by ensuring the validity of the values due to each action.
  • 11 to 14 illustrate time elements and test results for performance verification of a control system according to an exemplary embodiment of the present invention.
  • FIG 11 illustrates three temporal components measured for system performance testing according to an embodiment of the invention.
  • the concentration is 5000 us regardless of the number of agents 400 and AL that operate.
  • the maximum jitter is around 10 us. That is, the real-time thread of the device control module 200 can confirm that the user starts and ends the given task exactly at the desired period.
  • FIG. 13 shows a histogram of the time taken for the joint reference to be output in the case of 2) above.
  • a reference value is transmitted as a control signal between 30 us and 100 us after the real time thread of the device control module 200 starts.
  • the amount of change is about 70us, which is about 1.5% of the time compared to the control period, about 7 times the measured jitter, and the period is 1 ms (1000 us) because it operates at 1 kHz for the experimental motor controller.
  • the variation in the time it takes for the reference to be output is less than 10% of the motor control period of the device 100, which means that the system configuration of the present invention is a multi-rate system with different operating frequencies between the device and the control system. This means that it guarantees enough performance to run the Multi-Rate System.
  • FIG. 14 shows a histogram of the time taken for synchronization between the device control module 200 and the threads of the agents 400 and AL to occur.
  • a plurality of agents having mutually independent processes and a shared memory in which references generated according to operations of the plurality of agents are stored are provided and provided to the hardware device using the references.
  • the operation of the robot can be stably controlled accordingly.
  • the reference memory can be synthesized and selected through the shared memory, thereby reducing the possibility of mutual collision and securing robust real-time.
  • agent replacement and real-time debugging are facilitated when an error occurs, collaboration convenience and scalability can be brought.
  • the above-described methods according to the present invention may be stored in a computer-readable recording medium that is produced as a program for execution on a computer
  • examples of the computer-readable recording medium include ROM, RAM, CD-ROM, Magnetic tapes, floppy disks, optical data storage devices, and the like, and also include those implemented in the form of carrier waves (eg, transmission over the Internet).
  • the computer readable recording medium can be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
  • functional programs, codes, and code segments for implementing the method can be easily inferred by programmers in the art to which the present invention belongs.

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)

Abstract

A system control method, according to an embodiment of the present invention, comprises the steps of: operating by a plurality of agents using shared memory and having processes that are independent from each other; obtaining, from each reference generated from the plurality of agents and stored in the shared memory, hardware control data for controlling one or more devices; and transmitting a control signal, on the basis of the reference, to the one or more devices selected from the hardware control data.

Description

실시간 제어 시스템, 실시간 제어 장치 및 시스템 제어 방법Real time control system, real time control device and system control method
본 발명은 실시간 제어 시스템, 시스템 제어 장치 및 시스템 제어 방법에 관한 것이다. 보다 구체적으로, 본 발명은 정확한 실시간 처리가 가능하며, 개발 및 디버깅이 용이하고, 하드웨어적으로 강인한 실시간 제어 시스템, 시스템 제어 장치 및 시스템에 관한 것이다.The present invention relates to a real time control system, a system control apparatus and a system control method. More specifically, the present invention relates to a real-time control system, a system control apparatus and a system capable of accurate real-time processing, easy to develop and debug, and robust in hardware.
현재 국내외의 많은 기관에서 로봇에 대한 연구가 활발하게 이루어지고 있다. 로봇은 크게 하드웨어와 소프트웨어로 나눌 수 있고, 이들이 통합되어 하나의 시스템을 이루게 된다.Currently, research on robots is being actively conducted in many institutions at home and abroad. Robots can be largely divided into hardware and software, and they are integrated to form a system.
로봇 하드웨어를 구성하는 요소로는 로봇 관절을 움직이기 위한 구동기와 제어기, 배터리와 전원 제어기, 통신 모듈, 센서, 로봇의 외골격, 전자 회로, 배터리 등이 있다. 이러한 여러 종류의 요소들을 각자의 원하는 로봇의 특성대로 조합하여 로봇 하드웨어 플랫폼을 형성한다.Components of the robot hardware include a driver and a controller for moving the robot joint, a battery and a power controller, a communication module, a sensor, an exoskeleton of the robot, an electronic circuit, and a battery. These different types of elements are combined according to the characteristics of each desired robot to form a robot hardware platform.
각각의 요소들도 설계 목적에 따라서 크기, 외형, 성능, 제조사 등이 다르고, 결과적으로 무궁무진한 종류의 로봇 하드웨어 플랫폼을 만들게 된다. 실제로도 전세계적으로 매우 다양한 로봇들이 존재하고 있다. 그래서 공통적으로 목적하는 로봇 플랫폼의 성능과 기능을 조사하고, 하나의 대표되는 표준형 로봇 플랫폼을 개발하려는 연구가 전 세계적으로 진행 중이다.Each of these elements will vary in size, appearance, performance, and manufacturer, depending on the design purpose, resulting in an endless variety of robotic hardware platforms. Indeed, there are many different robots around the world. Therefore, research is underway around the world to investigate the performance and function of a common target robot platform and to develop one representative standard robot platform.
또한, 하드웨어적으로 위와 같이 표준형 로봇 플랫폼을 개발하는 방향의 연구가 있는 것과 같이, 소프트웨어도 공용으로 사용 가능한 표준형 로봇 소프트웨어에 대한 연구가 있다. 로봇 하드웨어에 속하는 구동 제어기나 센서와 같은 로봇 디바이스들을 제어하기 위한 소프트웨어, 로봇 모션을 쉽게 개발하도록 돕기 위한 소프트웨어, 태스크들간의 연관관계를 결정하여 로봇 운영을 돕는 소프트웨어, 네비게이션이나 비전 솔루션들을 제공하는 소프트웨어 등 다양한 소프트웨어의 종류들이 있으며, 표준형 소프트웨어의 개발도 표준형 하드웨어의 개발과 유사한 목적 하에 연구가 진행되고 있다.In addition, there is a study on the standard robot software that can be used in common, as there is a study on the development of a standard robot platform as described above in hardware. Software to control robotic devices such as drive controllers and sensors belonging to the robot hardware, software to help develop robot motion easily, software to help robots operate by determining the relationship between tasks, software to provide navigation or vision solutions There are various types of software, and the development of standard software is being conducted for the purpose similar to the development of standard hardware.
그러나, 상기 표준형 소프트웨어의 개발에 있어서, 여러 개발자들이 공통으로 요구하는 사항들을 해결하기 위한 표준 솔루션을 제공하는 것이 어려운 실정이다.However, in the development of the standard software, it is difficult to provide a standard solution for solving the common requirements of various developers.
특히, 하드웨어적으로 변경되는 사항이 많아짐에 따라 개발자들간 협업이 어려울 뿐만 아니라, 여러 사람이 동시에 개발한 기능 또는 프로세스에 의해 처리가 중복되는 문제점들이 발생할 수 있다. 이에 따라, 실시간 동기화가 어렵고, 하드웨어의 안정성 또는 강인성이 떨어질 수 있으며, 개발 시간 또한 오래 걸리는 문제점이 있다.In particular, as a lot of changes are made in hardware, it is not only difficult to collaborate among developers, but also a problem may occur that processes are overlapped by functions or processes developed by several people at the same time. Accordingly, the real-time synchronization is difficult, the stability or robustness of the hardware may be degraded, and the development time also takes a long time.
또한, 하드웨어 개발에 있어서도 상기 표준 소프트웨어와의 호환성을 유지하기 위해 추가적인 기능 변경을 부가해야 함으로써 구동 성능이 떨어질 수 있는 문제점이 있다.In addition, in hardware development, there is a problem in that driving performance may be degraded by adding an additional function change in order to maintain compatibility with the standard software.
본 발명은 상기과 같은 과제를 해결하기 위한 것으로, 실시간성이 필요한 시스템에 있어서, 동일한 하드웨어 제어 및 처리에 대한 여러 독립적 프로세스들이 공존할 수 있으면서도, 이에 따른 로봇의 동작이 안정적으로 제어될 수 있고, 그 강인성 및 확장성을 제공할 수 있는 실시간 시스템, 시스템 제어 장치 및 시스템 제어 방법을 제공하는데 그 목적이 있다.The present invention is to solve the above problems, in a system that requires real-time, while several independent processes for the same hardware control and processing can coexist, the operation of the robot can be stably controlled accordingly, An object of the present invention is to provide a real-time system, a system control device, and a system control method that can provide robustness and scalability.
상기와 같은 과제를 해결하기 위한 본 발명의 실시 예에 따른 방법은, 시스템 제어 방법에 있어서, 공유 메모리를 이용하며, 상호 독립적인 프로세스를 갖는 복수의 에이전트들을 동작시키는 단계; 상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하는 단계; 및 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하는 단계를 포함한다.According to an aspect of the present disclosure, there is provided a method of controlling a system, the method including: operating a plurality of agents using a shared memory and having mutually independent processes; Obtaining hardware control data for controlling one or more devices from each reference generated from the plurality of agents and stored in the shared memory; And transmitting a control signal according to the reference to the one or more devices selected from the hardware control data.
또한, 상기와 같은 과제를 해결하기 위한 본 발명의 실시 예에 따른 장치는, 시스템 제어 장치에 있어서, 상호 독립적인 프로세스를 갖는 복수의 에이전트; 상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리; 및 상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하고, 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하는 디바이스 제어 모듈을 포함한다.In addition, an apparatus according to an embodiment of the present invention for solving the above problems, the system control apparatus, a plurality of agents having mutually independent processes; A shared memory storing a reference generated according to the operations of the plurality of agents; And obtaining hardware control data for at least one device control from each reference generated from the plurality of agents and stored in the shared memory, and controlling the control signal according to the reference to the at least one device selected from the hardware control data. It includes a device control module for delivering.
그리고, 상기와 같은 과제를 해결하기 위한 실시간 시스템은, 상기 시스템의 관절 또는 센서 디바이스를 포함하는 하나 이상의 하드웨어 디바이스; 상기 시스템과 연관하여 상호 독립적인 프로세스를 갖는 복수의 에이전트; 상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리; 상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하고, 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하는 디바이스 제어 모듈; 및 상기 디바이스 제어 모듈과 상기 에이전트들의 실시간 동작 주기 및 실행 동작을 관리하는 사용자 시스템을 포함한다.And, a real-time system for solving the above problems, one or more hardware devices including a joint or sensor device of the system; A plurality of agents having processes independent of each other in association with the system; A shared memory storing a reference generated according to the operations of the plurality of agents; From each reference generated from the plurality of agents and stored in the shared memory, hardware control data for controlling one or more devices is obtained, and the control signal according to the reference is sent to the one or more devices selected from the hardware control data. A device control module for transmitting; And a user system for managing real-time operating cycles and execution operations of the device control module and the agents.
상기와 같은 과제를 해결하기 위한 본 발명의 실시 예에 따른 방법은, 실시간 디바이스 시스템 제어 방법에 있어서, 제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하는 단계; 상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 하나 이상의 에이전트로 상기 상태 정보를 전달하는 단계; 상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하는 단계; 및 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달하는 단계를 포함한다.According to an aspect of the present invention, there is provided a method of controlling a real-time device system, the method including: obtaining state information of a current step from a device to be controlled; Transferring the status information to one or more agents processing a reference operation using the status information of the current step; Obtaining, from the agent, reference information calculated beforehand based on state information of a previous step; And transmitting the reference information to the device as a control signal corresponding to the current step.
또한, 상기와 같은 과제를 해결하기 위한 본 발명의 실시 예에 따른 장치는, 디바이스 시스템 제어 장치에 있어서, 제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하고, 상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 하나 이상의 에이전트로 상기 상태 정보를 전달하는 디바이스 통신부; 및 상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하는 레퍼런스 획득부를 포함하고, 상기 디바이스 통신부는 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달한다.In addition, the apparatus according to an embodiment of the present invention for solving the above problems, in the device system control apparatus, obtains the state information of the current step from the device to be controlled, and reference by using the state information of the current step A device communication unit for transmitting the status information to one or more agents processing an operation; And a reference acquisition unit for obtaining reference information pre-calculated based on state information of a previous step from the agent, wherein the device communication unit transfers the reference information as a control signal corresponding to the current staff to the device.
그리고, 상기와 같은 과제를 해결하기 위한 시스템은, 디바이스 제어 시스템에 있어서, 상호 독립적인 프로세스를 갖는 복수의 에이전트; 상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리; 및 제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하고, 상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 상기 복수의 에이전트로 상기 상태 정보를 전달하며, 상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하고, 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달하는 디바이스 제어 모듈을 포함한다.In addition, a system for solving the above problems includes a device control system comprising: a plurality of agents having mutually independent processes; A shared memory storing a reference generated according to the operations of the plurality of agents; And obtaining the state information of the current step from the controlling device, and transferring the state information to the plurality of agents processing a reference operation using the state information of the current step, and from the agent to the state information of the previous step. And a device control module configured to obtain reference information calculated in advance based on the reference information, and to transmit the reference information to the device as a control signal corresponding to the current step.
한편, 상기와 같은 과제를 해결하기 위한 방법은, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램 및 상기 프로그램이 기록된 기록 매체로 구현될 수 있다.On the other hand, the method for solving the above problems can be implemented with a program for executing the method on a computer and a recording medium on which the program is recorded.
본 발명의 실시 예에 따르면, 상호 독립적인 프로세스를 갖는 복수의 에이전트와 상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리를 제공하고, 상기 레퍼런스를 이용하여 상기 하드웨어 디바이스로를 제어하는 별도의 디바이스 제어 모듈을 제공함으로써, 실시간성이 필요한 로봇 시스템에 있어서, 동일한 하드웨어 제어에 대한 여러 독립적 프로세스들이 공존할 수 있으면서도, 이에 따른 로봇의 동작이 안정적으로 제어될 수 있다.According to an embodiment of the present invention, a plurality of agents having mutually independent processes and a shared memory in which references generated according to operations of the plurality of agents are stored are provided, and the reference to the hardware device is controlled using the reference. By providing a separate device control module, in a robot system requiring real-time, while several independent processes for the same hardware control can coexist, the robot operation can be stably controlled accordingly.
이에 따른 본 발명의 실시 예에 따르면, 각 에이전트를 독립적으로 개발하더라도, 공유 메모리를 통해 레퍼런스의 합성 및 선별이 가능하게 되어, 상호 충돌가능성을 줄일 수 있고 강인한 실시간성을 확보할 수 있다. 또한, 오류 발생시의 에이전트 대체 및 실시간 디버깅 등이 용이하게 되므로, 협업 편의성 및 확장성을 가져올 수 있다.Accordingly, according to an embodiment of the present invention, even if each agent is independently developed, it is possible to synthesize and select a reference through a shared memory, thereby reducing the possibility of mutual collision and securing robust real-time. In addition, since agent replacement and real-time debugging are facilitated when an error occurs, collaboration convenience and scalability can be brought.
또한, 본 발명의 실시 예에 따르면, 프로세스들 간의 쓰레드 동기화에 있어서, 공유 메모리를 이용한 원 스텝 지연(One Step Delay) 처리 방법을 제공하여, 디바이스 제어 모듈과 에이전트 및 디바이스간 처리 지연을 최소화하고, 이에 따른 실시간 동기화 처리를 최적화함으로써, 출력 신호의 퀄리티 및 실시간성을 강화시키며, 보다 정교하고 오류 및 지터(Jitter)를 최소화하는 제어 시스템을 제공할 수 있다.In addition, according to an embodiment of the present invention, in the thread synchronization between processes, by providing a method for processing one step delay (One Step Delay) using a shared memory, to minimize the processing delay between the device control module and the agent and the device, By optimizing the real-time synchronization process accordingly, it is possible to provide a control system that enhances the quality and real-time of the output signal and further refines and minimizes errors and jitter.
도 1은 본 발명의 실시 예에 따른 전체 시스템을 개략적으로 도시한 개념도이다.1 is a conceptual diagram schematically showing an entire system according to an embodiment of the present invention.
도 2는 본 발명의 실시 예에 따른 로봇 시스템의 제어 방법을 설명하기 위한 흐름도이다.2 is a flowchart illustrating a control method of a robot system according to an exemplary embodiment of the present invention.
도 3 내지 도 4는 본 발명의 실시 예에 따른 공유 메모리 및 시스템간 관계를 설명하기 위한 도면들이다.3 to 4 are diagrams for describing a relationship between a shared memory and a system according to an exemplary embodiment of the present invention.
도 5는 본 발명의 실시 예에 따른 디바이스 제어 모듈 및 에이전트간 데이터교환을 설명하기 위한 도면이다.5 is a diagram for explaining data exchange between a device control module and an agent according to an embodiment of the present invention.
도 6은 본 발명의 실시 예에 따른 디바이스 제어 모듈을 설명하기 위한 블록도이다.6 is a block diagram illustrating a device control module according to an embodiment of the present invention.
도 7은 본 발명의 다른 일 실시 예에 따른 로봇 시스템의 제어 동작을 설명하기 위한 흐름도이다.7 is a flowchart illustrating a control operation of the robot system according to another exemplary embodiment.
도 8은 본 발명의 실시 예에 따른 디바이스 제어 모듈의 구성을 도시한 것이다.8 illustrates a configuration of a device control module according to an embodiment of the present invention.
도 9는 본 발명의 실시 예에 따른 디바이스 제어 모듈 및 에이전트들의 동작을 설명하기 위한 흐름도이다.9 is a flowchart illustrating an operation of a device control module and agents according to an embodiment of the present invention.
도 10은 본 발명의 실시 예에 따른 디바이스, 디바이스 제어 모듈 및 에이전트간 동작 타이밍을 나타내기 위한 타이밍도이다.10 is a timing diagram illustrating an operation timing between a device, a device control module, and an agent according to an embodiment of the present invention.
도 11 내지 도 14는 본 발명의 실시 예에 따른 제어 시스템의 성능 검증을 위한 시간 요소 및 테스트 결과를 도시한 것이다.11 to 14 illustrate time elements and test results for performance verification of a control system according to an exemplary embodiment of the present invention.
이하의 내용은 단지 본 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 본 발명의 원리를 구현하고 본 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시예들은 원칙적으로, 본 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다.The following merely illustrates the principles of the invention. Therefore, those skilled in the art, although not explicitly described or illustrated herein, can embody the principles of the present invention and invent various devices that fall within the spirit and scope of the present invention. Furthermore, all conditional terms and embodiments listed herein are in principle clearly intended for the purpose of understanding the concept of the invention and are not to be limited to the specifically listed embodiments and states. Should be.
또한, 본 발명의 원리, 관점 및 실시예들 뿐만 아니라 특정 실시예를 열거하는 모든 상세한 설명은 이러한 사항의 구조적 및 기능적 균등물을 포함하도록 의도되는 것으로 이해되어야 한다. 또한 이러한 균등물들은 현재 공지된 균등물뿐만 아니라 장래에 개발될 균등물 즉 구조와 무관하게 동일한 기능을 수행하도록 발명된 모든 소자를 포함하는 것으로 이해되어야 한다.In addition, it is to be understood that all detailed descriptions, including the principles, aspects, and embodiments of the present invention, as well as listing specific embodiments, are intended to include structural and functional equivalents of these matters. In addition, these equivalents should be understood to include not only equivalents now known, but also equivalents to be developed in the future, that is, all devices invented to perform the same function regardless of structure.
따라서, 예를 들어, 본 명세서의 블럭도는 본 발명의 원리를 구체화하는 예시적인 회로의 개념적인 관점을 나타내는 것으로 이해되어야 한다. 이와 유사하게, 모든 흐름도, 상태 변환도, 의사 코드 등은 컴퓨터가 판독 가능한 매체에 실질적으로 나타낼 수 있고 컴퓨터 또는 프로세서가 명백히 도시되었는지 여부를 불문하고 컴퓨터 또는 프로세서에 의해 수행되는 다양한 프로세스를 나타내는 것으로 이해되어야 한다.Thus, for example, it should be understood that the block diagrams herein represent a conceptual view of example circuitry embodying the principles of the invention. Similarly, all flowcharts, state transitions, pseudocodes, and the like are understood to represent various processes performed by a computer or processor, whether or not the computer or processor is substantially illustrated on a computer readable medium and whether the computer or processor is clearly shown. Should be.
프로세서 또는 이와 유사한 개념으로 표시된 기능 블럭을 포함하는 도면에 도시된 다양한 소자의 기능은 전용 하드웨어뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 능력을 가진 하드웨어의 사용으로 제공될 수 있다. 프로세서에 의해 제공될 때, 상기 기능은 단일 전용 프로세서, 단일 공유 프로세서 또는 복수의 개별적 프로세서에 의해 제공될 수 있고, 이들 중 일부는 공유될 수 있다.The functionality of the various elements shown in the figures, including functional blocks represented by a processor or similar concept, can be provided by the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functionality may be provided by a single dedicated processor, by a single shared processor or by a plurality of individual processors, some of which may be shared.
또한 프로세서, 제어 또는 이와 유사한 개념으로 제시되는 용어의 명확한 사용은 소프트웨어를 실행할 능력을 가진 하드웨어를 배타적으로 인용하여 해석되어서는 아니되고, 제한 없이 디지털 신호 프로세서(DSP) 하드웨어, 소프트웨어를 저장하기 위한 롬(ROM), 램(RAM) 및 비 휘발성 메모리를 암시적으로 포함하는 것으로 이해되어야 한다. 주지관용의 다른 하드웨어도 포함될 수 있다.In addition, the explicit use of terms presented in terms of processor, control, or similar concept should not be interpreted exclusively as a citation to hardware capable of running software, and without limitation, ROM for storing digital signal processor (DSP) hardware, software. (ROM), RAM, and non-volatile memory are to be understood to implicitly include. Other hardware for the governor may also be included.
본 명세서의 청구범위에서, 상세한 설명에 기재된 기능을 수행하기 위한 수단으로 표현된 구성요소는 예를 들어 상기 기능을 수행하는 회로 소자의 조합 또는 펌웨어/마이크로 코드 등을 포함하는 모든 형식의 소프트웨어를 포함하는 기능을 수행하는 모든 방법을 포함하는 것으로 의도되었으며, 상기 기능을 수행하도록 상기 소프트웨어를 실행하기 위한 적절한 회로와 결합된다. 이러한 청구범위에 의해 정의되는 본 발명은 다양하게 열거된 수단에 의해 제공되는 기능들이 결합되고 청구항이 요구하는 방식과 결합되기 때문에 상기 기능을 제공할 수 있는 어떠한 수단도 본 명세서로부터 파악되는 것과 균등한 것으로 이해되어야 한다.In the claims of this specification, components expressed as means for performing the functions described in the detailed description include all types of software including, for example, a combination of circuit elements or firmware / microcode, etc. that perform the functions. It is intended to include all methods of performing a function which are combined with appropriate circuitry for executing the software to perform the function. The invention, as defined by these claims, is equivalent to what is understood from this specification, as any means capable of providing such functionality, as the functionality provided by the various enumerated means are combined, and in any manner required by the claims. It should be understood that.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. The above objects, features, and advantages will become more apparent from the following detailed description taken in conjunction with the accompanying drawings, whereby those skilled in the art may easily implement the technical idea of the present invention. There will be. In addition, in describing the present invention, when it is determined that the detailed description of the known technology related to the present invention may unnecessarily obscure the gist of the present invention, the detailed description thereof will be omitted.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 실시 예에 따른 전체 시스템을 개략적으로 도시한 개념도이다.1 is a conceptual diagram schematically showing an entire system according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 실시 예에 따른 전체 시스템은, 하나 이상의 디바이스(100), 디바이스 제어 모듈(200), 공유 메모리(300), 하나 이상의 에이전트(400) 및 사용자 시스템(500)을 포함한다.Referring to FIG. 1, an entire system according to an embodiment of the present invention may include one or more devices 100, a device control module 200, a shared memory 300, one or more agents 400, and a user system 500. Include.
디바이스(100)는 최종적으로 로봇 시스템의 동작을 수행하는 하나 이상의 구동 장치를 포함할 수 있다. 구동 장치는 하드웨어 장치 또는 소프트웨어 장치를 포함할 수 있다. 구동 장치는 예를 들어, 관절 모터에 대한 구동을 제어하는 관절 디바이스, 센서 보드를 포함하는 센서 디바이스 또는 시뮬레이터 장치들중 적어도 하나를 포함할 수 있다.The device 100 may include one or more driving devices that finally perform the operation of the robotic system. The drive device may comprise a hardware device or a software device. The drive device may include, for example, at least one of a joint device, a sensor device including a sensor board, or a simulator device that controls drive for the articulated motor.
또한, 디바이스(100)는 디바이스 제어 모듈(200)로부터 수신되는 제어 신호에 따라 제어되고, 상기 디바이스 제어 모듈(200)로 센서 데이터와 같은 다양한 데이터를 출력할 수 있다. 또한, 여기서 디바이스(100)라는 용어는 하드웨어에 한정되는 것이 아니라, 실제 하드웨어 디바이스를 구동하기 위한 소프트웨어 드라이버를 포함하는 개념으로 이용될 수 있다. 따라서, 각 디바이스(100)는 디바이스 제어 모듈(200)과 물리적 및 소프트웨어적으로도 연결될 수 있다.In addition, the device 100 may be controlled according to a control signal received from the device control module 200, and may output various data such as sensor data to the device control module 200. In addition, the term device 100 is not limited to hardware, but may be used as a concept including a software driver for driving an actual hardware device. Accordingly, each device 100 may be physically and softwarely connected to the device control module 200.
그리고, 각 디바이스(100)는 디바이스 제어 모듈(200)과의 통신 네트워크를 형성할 수 있다. 통신 네트워크는 시스템 안정성을 위해 CAN(Controller Area Network)방식의 프로토콜을 이용한 시스템 네트워크를 형성할 수 있다.Each device 100 may form a communication network with the device control module 200. The communication network may form a system network using a controller area network (CAN) protocol for system stability.
예를 들어, 각각의 디바이스(100)는 디바이스 제어 모듈(200)과 하나 이상의 CAN 통신 채널로 연결될 수 있으며, 상기 CAN 통신 채널을 통해 미리 설정된 제어 주기에 따라, CAN 프레임 데이터로 구성되는 메시지를 수신하거나 상기 디바이스 제어 모듈(200)로 메시지를 출력할 수 있다. 여기서, 상기 메시지는 모터 제어 레퍼런스, 엔코더 값, 제어기 상태 값, PWM(Pulse Width Modulation) 명령, 센서 값 또는 기타 다양한 설정 또는 출력 값들을 포함할 수 있다.For example, each device 100 may be connected to the device control module 200 through one or more CAN communication channels, and receive a message composed of CAN frame data according to a preset control period through the CAN communication channel. Alternatively, a message may be output to the device control module 200. Here, the message may include a motor control reference, an encoder value, a controller state value, a pulse width modulation (PWM) command, a sensor value, or various other setting or output values.
그리고, 디바이스 제어 모듈(200)은 상기 복수의 에이전트(400)들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스(100) 제어를 위한 하드웨어 제어 데이터를 획득하고, 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스(100)로 상기 레퍼런스에 따른 제어 신호를 전달한다.The device control module 200 obtains hardware control data for controlling one or more devices 100 from each reference generated from the plurality of agents 400 and stored in the shared memory, and the hardware control data. And transmits a control signal according to the reference to the one or more devices 100 selected from.
디바이스 제어 모듈(200)은 로봇 시스템의 제어를 위한 운영 시스템상에 항상 상주할 수 있으며, 백그라운드에서 실행될 수 있다.The device control module 200 may always reside on an operating system for controlling the robotic system and may be executed in the background.
디바이스 제어 모듈(200)은 상기 공유 메모리(300)를 참조하여 디바이스(100)를 유일하게 직접적으로 통신할 수 있고, 상기 통신 채널을 통해 제어 신호를 전달하거나 센서 신호를 수신할 수 있다.The device control module 200 may uniquely directly communicate the device 100 with reference to the shared memory 300, and may transmit a control signal or receive a sensor signal through the communication channel.
예를 들어, 디바이스 제어 모듈(200)은 관절 디바이스(100)의 제어를 위한 레퍼런스를 상기 관절 디바이스(100)로 전달하거나, 센서 디바이스(100)로부터 필요한 센서 정보를 수신할 수 있다.For example, the device control module 200 may transfer a reference for controlling the joint device 100 to the joint device 100 or receive necessary sensor information from the sensor device 100.
또한, 상기 디바이스 제어 모듈(200)은 상기 운영 시스템상에 생성된 실시간 쓰레드(thread)를 포함할 수 있다. 그리고, 상기 쓰레드는 시스템의 모션 생성 동작 주기와 동기화됨으로써 실시간 처리를 가능하게 한다. 또한, 디바이스 제어 모듈(200)에는 데이터 리딩 및 변환 등의 처리를 위한 비실시간 쓰레드를 더 포함할 수 있다.In addition, the device control module 200 may include a real-time thread created on the operating system. The thread is synchronized with the motion generation operation cycle of the system to enable real time processing. In addition, the device control module 200 may further include a non-real time thread for processing data reading and conversion.
그리고, 상기 복수의 에이전트(400)들은 상호 독립적인 프로세스를 갖는 독립적인 소프트웨어 모듈로 구현될 수 있다. 예를 들어, 에이전트(400)들은 각각 서로 다른 모션을 처리하고, 이에 대응하는 레퍼런스를 출력하기 위한 프로세스를 수행할 수 있다. 예를 들어, 각 에이전트(400)들은 모션 에이전트, 컨트롤러 에이전트, 통신 에이전트 또는 워킹(walking) 에이전트, 댐핑(damping) 에이전트, 기타 다양한 에이전트를 포함할 수 있다.In addition, the plurality of agents 400 may be implemented as independent software modules having independent processes. For example, the agents 400 may each process different motions and perform a process for outputting a reference corresponding thereto. For example, each agent 400 may include a motion agent, a controller agent, a communication agent or a walking agent, a damping agent, and various other agents.
상기와 같은 에이전트(400)들은 기능적으로 프로세스가 분리되어 있기 때문에, 힙(heap), 데이터(data) 및 스태틱(static) 메모리를 공유하지 않고, 각각의 쓰레드를 생성하여 동작할 수 있으며, 상호 공유를 위한 필요 데이터는 각각 공유 메모리(300)로 제공할 수 있으며, 이에 따른 상호 충돌 없이 유기적인 처리가 가능하게 되며, 소프트웨어 개발 및 처리가 용이하게 된다.Since the agents 400 are functionally separated from each other, the agents 400 can create and operate respective threads without sharing heap, data, and static memory, and mutually share them. The necessary data for each can be provided to the shared memory 300, thereby allowing organic processing without mutual collision, and facilitates software development and processing.
특히, 본 발명의 실시 예에 따르면, 상기 복수의 에이전트(400)들은 상호 독립된 프로세스의 동작에 따라, 상기 공유 메모리(300)로부터 센서 데이터를 본 발명의 실시 예에 따르면, 각각의 에이전트(400)들은 각각 정의된 프로세스에 따라 공유 메모리(300)의 하드웨어 추상화 데이터 및 사용자 정의 데이터를 참조하고, 이에 기초하여 생성되는 레퍼런스 데이터를 공유 메모리(300)의 하드웨어 추상화 데이터에 저장할 수 있다.In particular, according to an embodiment of the present invention, the plurality of agents 400 according to the operation of the mutually independent process, the sensor data from the shared memory 300 according to an embodiment of the present invention, each agent 400 Each may refer to hardware abstraction data and user-defined data of the shared memory 300 according to a defined process, and store the reference data generated based on the hardware abstraction data of the shared memory 300.
여기서, 사용자 정의 데이터는 에이전트(400)간 정보 공유를 위한 공유 데이터 및 사용자 정의 가능한 기타 시스템 구동을 위한 다양한 데이터를 포함할 수 있다.Here, the user defined data may include shared data for sharing information between the agents 400 and various data for driving other user-definable systems.
그리고, 하드웨어 추상화 데이터는 디바이스(100)를 제어하기 위해 추상화된 레퍼런스, 센서 데이터, 모션 오너 변수 및 명령 데이터를 포함할 수 있다. 그리고, 디바이스 제어 모듈(200)은 상기 하드웨어 추상화 데이터와 하드웨어 데이터베이스(250)에 미리 저장된 하드웨어 정보를 이용하여, 각 디바이스(100)별 제어 신호를 생성할 수 있다.In addition, the hardware abstraction data may include abstracted reference, sensor data, motion owner variable, and command data to control the device 100. The device control module 200 may generate a control signal for each device 100 by using the hardware abstraction data and hardware information previously stored in the hardware database 250.
이에 따라, 디바이스 제어 모듈(200)은 상기 공유 메모리(300)로부터 추출되는 하드웨어 추상화 데이터를 이용하여, 제어 대상 디바이스(100)를 식별하고, 제어 대상 디바이스(100)들에 대한 제어 신호를 생성하여, 제어 대상 디바이스(100)로 상기 레퍼런스에 따른 제어 신호를 출력할 수 있다.Accordingly, the device control module 200 identifies the control target device 100 using the hardware abstraction data extracted from the shared memory 300, and generates a control signal for the control target devices 100. The control signal according to the reference may be output to the control target device 100.
그리고, 강인한 실시간성의 보장을 위해, 각 에이전트(400)들의 처리 주기는 시스템의 모션 정보를 처리하는 동작 주기보다 짧을 필요성이 있다. 이에 따라, 상기 에이전트(400)들이 센서 데이터로부터 레퍼런스를 생성하고, 공유 메모리(300)를 통해 상기 디바이스 제어 모듈(200)이 레퍼런스로부터 제어 신호를 생성 및 출력하며, 센서 데이터를 갱신하는 시간은 상기 시스템의 제1 동작 주기 내에 포함될 수 있다. 따라서, 상기 일련의 동작들은 상기 제1 동작 주기 내에 모두 처리될 수 있다.And, in order to ensure robust real-time, the processing cycle of each agent 400 needs to be shorter than the operation cycle of processing the motion information of the system. Accordingly, the agent 400 generates a reference from the sensor data, the device control module 200 generates and outputs a control signal from the reference through the shared memory 300, and the time for updating the sensor data is It may be included in the first operating period of the system. Thus, the series of operations can all be processed within the first operating period.
한편, 사용자 시스템(500)은 에이전트(400) 및 디바이스 제어 모듈(200)의 제어 및 모니터링을 위한 유저 인터페이스를 제공할 수 있다. 또한, 사용자 시스템(500)은 에이전트(400)의 제어를 위한 미들웨어를 포함할 수도 있으며, 기타 외부 시스템과 연결될 수 있는 다양한 인터페이스를 제공할 수 있다.Meanwhile, the user system 500 may provide a user interface for controlling and monitoring the agent 400 and the device control module 200. In addition, the user system 500 may include middleware for controlling the agent 400, and may provide various interfaces that may be connected to other external systems.
도 2는 본 발명의 실시 예에 따른 로봇 시스템의 제어 방법을 설명하기 위한 흐름도이다.2 is a flowchart illustrating a control method of a robot system according to an exemplary embodiment of the present invention.
그리고, 도 3 내지 도 4는 본 발명의 실시 예에 따른 공유 메모리 및 시스템간 관계를 설명하기 위한 도면들이다.3 to 4 are diagrams for describing a relationship between a shared memory and a system according to an exemplary embodiment of the present invention.
또한, 도 5는 본 발명의 실시 예에 따른 디바이스 제어 모듈 및 에이전트간 데이터교환을 설명하기 위한 도면이다.5 is a diagram for explaining data exchange between a device control module and an agent according to an embodiment of the present invention.
이하에서는 상기 도 2 내지 도 5를 참조하여 본 발명의 로봇 시스템과 그 제어 방법에 대해 보다 구체적으로 설명하도록 한다.Hereinafter, the robot system of the present invention and its control method will be described in more detail with reference to FIGS. 2 to 5.
도 2를 참조하면, 본 발명의 실시 예에 따른 로봇 시스템의 제어 방법은 먼저 상호 독립적인 프로세스를 갖는 복수의 에이전트(400)들의 동작이 수행된다(S101).Referring to FIG. 2, in the control method of the robot system according to an exemplary embodiment of the present invention, operations of a plurality of agents 400 having mutually independent processes are first performed (S101).
그리고, 디바이스 제어 모듈(200)은 공유 메모리(300)에 저장된 레퍼런스로부터 하드웨어 추상화 데이터를 획득한다(S103).In operation S103, the device control module 200 obtains hardware abstraction data from a reference stored in the shared memory 300.
그리고, 디바이스 제어 모듈(200)은 하드웨어 추상화 데이터로부터 하드웨어 제어를 위한 제어 신호를 생성하며(S107), 생성된 제어 신호를 하나 이상의 디바이스(100)들로 전달한다(S109).In addition, the device control module 200 generates a control signal for hardware control from the hardware abstraction data (S107), and transmits the generated control signal to one or more devices 100 (S109).
한편, 디바이스 제어 모듈(200)은 센서에 대응하는 디바이스(100)들로부터 센서 데이터를 수신하고(S111), 상기 수신된 센서 데이터를 공유 메모리(300)에 업데이트한다(S113).Meanwhile, the device control module 200 receives sensor data from the devices 100 corresponding to the sensor (S111), and updates the received sensor data in the shared memory 300 (S113).
그리고, 상기 일련의 동작 단계들은 로봇 시스템의 실시간 동작 주기에 대응하는 제1 주기 내에 모두 처리될 수 있어, 실시간성을 보장할 수 있다.In addition, the series of operation steps may be all processed within a first period corresponding to the real-time operation cycle of the robot system, thereby ensuring real-time.
이와 같은 프로세스를 위해, 도 3에 도시된 바와 같이, 각각의 에이전트(400)들과 디바이스 제어 모듈(200)은 공유 메모리(300)를 이용하여 데이터 교환 및 전달 처리를 수행할 수 있다.For this process, as shown in FIG. 3, each of the agents 400 and the device control module 200 may perform data exchange and transfer processing using the shared memory 300.
각 에이전트(400)들의 동작에 따라, 공유 메모리(300)에는 각 디바이스(100)에 대응하는 레퍼런스들이 저장될 수 있고, 디바이스 제어 모듈(200)은 레퍼런스를 획득하여 제어 신호를 출력하는데 이용할 수 있다.According to the operation of each agent 400, the reference corresponding to each device 100 may be stored in the shared memory 300, and the device control module 200 may obtain a reference and use it to output a control signal. .
이와 같은 복수의 에이전트(400)과 디바이스 제어 모듈(200)은 공유 메모리(300)를 중심으로 멀티 에이전트 시스템을 구성할 수 있다. 이에 따라 독립된 일을 수행하는 각각의 파트를 여러 개발자들이 분리해서 개발할 수도 있고, 협업할 수도 있는 로봇 시스템 개발 환경에서의 유리한 구조를 가질 수 있다.Such a plurality of agents 400 and the device control module 200 may configure a multi-agent system around the shared memory 300. As a result, each part performing independent work may be separately developed by several developers, or may have an advantageous structure in a robot system development environment in which they may collaborate.
본 발명의 실시 예에 따른 에이전트(400)를 이용하면, 개발자들은 프로세스 동시 개발 모델로부터 독립된 개발 공간을 보장 받으면서도, 공유 메모리(300)를 이용함으로써 다른 에이전트(400)의 연산 결과물과 상호 작용하거나 데이터를 주고 받을 수 있게 된다.By using the agent 400 according to an exemplary embodiment of the present invention, developers may use the shared memory 300 while interacting with the computational output of another agent 400 while ensuring a development space independent from the process concurrent development model. You will be able to send and receive.
한편, 도 4에 도시된 바와 같이, 공유 메모리(300)상에는 하드웨어 추상화 데이터 및 사용자 정의 데이터가 포함될 수 있다.4, hardware abstraction data and user-defined data may be included on the shared memory 300.
하드웨어 추상화 데이터는 센서 데이터, 레퍼런스 데이터, 모션 오너 (motion own-er) 및 명령 데이터를 포함할 수 있으며, 디바이스 제어 모듈(200)은 공유 메모리(300)의 상기 하드웨어 추상화 데이터 영역에만 접근할 수 있다.The hardware abstraction data may include sensor data, reference data, motion owner- and command data, and the device control module 200 may access only the hardware abstraction data area of the shared memory 300. .
이에 따라, 디바이스 제어 모듈(200)은 공유 메모리(300)의 하드웨어 추상화 데이터 영역에 접근하여 디바이스(100)로부터 수신한 센서 데이터를 업데이트하거나, 갱신된 레퍼런스 데이터를 획득하여 디바이스(100)에 대한 제어 신호를 생성할 수 있다.Accordingly, the device control module 200 accesses the hardware abstraction data area of the shared memory 300 to update sensor data received from the device 100, or obtains updated reference data to control the device 100. You can generate a signal.
여기서, 하드웨어 추상화 데이터는 로봇 디바이스 제어에 관한 세부적인 데이터를 추상화하여 변환된 데이터 포맷을 가질 수 있으며, 디바이스 제어 모듈(200)은 이를 실제 하드웨어 제어 신호로 변환하여 적절한 디바이스(100)들로 전달할 수 있다.Here, the hardware abstraction data may have a data format converted by abstracting detailed data about the robot device control, and the device control module 200 may convert it into an actual hardware control signal and deliver it to the appropriate devices 100. have.
이에 따라, 에이전트(400) 개발자나 사용자는 하드웨어에 대한 깊은 이해 없이도 제어를 용이하게 할 수 있다. 개발자나 사용자자는 공유 메모리(300)를 통해서 추상화된 하드웨어 입력 정보를 레퍼런스로 전달하고, 디바이스 제어 모듈(200)은 상기 하드웨어 추상화 데이터로부터 디바이스(100) 제어를 위한 저수준 제어 신호를 생성할 수 있다.Accordingly, the agent 400 developer or user can facilitate the control without a deep understanding of the hardware. The developer or the user may transfer the abstracted hardware input information as a reference through the shared memory 300, and the device control module 200 may generate a low level control signal for controlling the device 100 from the hardware abstraction data.
또한 하드웨어의 확장성과 하드웨어의 변경 및 수정이 있을 수 있으므로, 디바이스 제어 모듈(200)은 전술한 하드웨어 데이터베이스(250)을 이용하여 상기 제어 신호를 생성하는데 필요한 하드웨어 정보를 관리할 수 있다. 하드웨어 정보는 예를 들어, 디바이스(100)들의 리스트, 관절 모터 정보(감속비, 엔코더 펄스, 구동기 채널 수 등) 또는 통신 규약 등을 포함할 수 있다.In addition, since there may be scalability of hardware and changes and modifications of hardware, the device control module 200 may manage hardware information required to generate the control signal using the hardware database 250 described above. The hardware information may include, for example, a list of devices 100, joint motor information (deceleration ratio, encoder pulse, driver channel number, etc.), a communication protocol, and the like.
디바이스 제어 모듈(200)은 상기 하드웨어 데이터베이스(250)를 로드하여 구동 대상 디바이스(100)의 하드웨어 정보를 파악할 수 있고, 이에 따라, 이 구동 대상 디바이스(100)의 제어를 위한 최적의 제어 신호를 생성할 수 있다. 또한 하드웨어의 변경이 있거나 새로운 구성의 하드웨어를 사용하더라도, 하드웨어 데이터베이스(250)의 수정만으로도 적용 가능하게 되므로, 하드웨어 변화에 강인하고, 하드웨어가 확장 가능한 특성을 제공할 수 있다.The device control module 200 may load the hardware database 250 to determine hardware information of the driving target device 100, thereby generating an optimal control signal for controlling the driving target device 100. can do. In addition, even if there is a change in hardware or using hardware of a new configuration, it is possible to apply only by modifying the hardware database 250, so that it is robust to hardware change and the hardware can provide scalable characteristics.
그리고, 하드웨어 추상화 데이터는 레퍼런스 데이터, 센서 데이터, 모션 오너 및 명령 데이터를 포함할 수 있다.The hardware abstraction data may include reference data, sensor data, motion owner, and command data.
여기서, 상기 레퍼런스 데이터는 각 에이전트(400)에서 연산 결과에 따라 업데이트될 수 있으며, 디바이스 제어 모듈(200)이 각 디바이스(100)들을 제어하기 위한 현재 스텝에서의 목표 값을 포함할 수 있다. 예를 들어, 레퍼런스 데이터는 관절 모션 레퍼런스 및 관절 컨트롤러 레퍼런스를 포함할 수 있다.Here, the reference data may be updated according to the calculation result in each agent 400, and may include a target value in the current step for the device control module 200 to control each device 100. For example, the reference data may include a joint motion reference and a joint controller reference.
또한, 센서 데이터는 디바이스 제어 모듈(200)이 각 디바이스(100)들로부터 수신되는 측정 데이터를 포함할 수 있다. 여기서 측정 데이터는 예를 들어, 관절 디바이스의 엔코더 값, 센싱 데이터를 포함하는 현재 스텝에서의 상태 정보를 포함할 수 있다.In addition, the sensor data may include measurement data that the device control module 200 receives from each device 100. The measurement data may include, for example, state information at a current step including an encoder value of the joint device and sensing data.
한편, 명령 데이터는 디바이스 제어 모듈(200) 및 에이전트(400)를 상위 시스템 레벨에서 제어하기 위한 명령 정보를 포함할 수 있으며, 명령 대상 프로세스 정보 및 매개변수 정보를 포함할 수 있다.The command data may include command information for controlling the device control module 200 and the agent 400 at a higher system level, and may include command target process information and parameter information.
한편, 다른 공유 메모리(300)의 데이터들은 에이전트(400)가 리드하는 값이기 때문에 혼동의 여지가 없지만, 레퍼런스 데이터의 경우에는 동일한 관절 디바이스(100)에 대해 각 에이전트(400)마다 출력하는 값들이 다를 수 있다. 이에 따른 충돌 여지를 제거하기 위해, 공유 메모리(300)는 모션 오너(owner) 정보를 포함할 수 있다.On the other hand, since the data of the other shared memory 300 is a value that is read by the agent 400, there is no confusion, but in the case of reference data, the values output for each agent 400 for the same joint device 100 can be different. In order to eliminate the possibility of collision, the shared memory 300 may include motion owner information.
그리고, 도 5에 도시된 바와 같이, 도 5는 본 발명의 실시 예에 따른 디바이스 제어 모듈(200) 및 에이전트(400)간 데이터 교환에 있어서, 모션 오너와 레퍼런스 데이터의 관계가 설명될 수 있다.5, in the data exchange between the device control module 200 and the agent 400 according to an embodiment of the present invention, a relationship between a motion owner and reference data may be described.
도 5에 도시된 바와 같이, 공유 메모리(300)의 하드웨어 추상화 데이터 영역에는 각 에이전트(400)별로 레퍼런스 데이터를 업데이트할 수 있는 에이전트(400)별 메모리 영역(350)을 포함할 수 있다.As illustrated in FIG. 5, the hardware abstraction data area of the shared memory 300 may include a memory area 350 for each agent 400 that can update reference data for each agent 400.
이에 따라, 각 에이전트(400)들은 자신의 메모리 공간 영역에 자신이 계산한 레퍼런스를 업데이트할 수 있다.Accordingly, each agent 400 may update its calculated reference in its memory space area.
여기서, 각 에이전트(400)들은 각 디바이스(100)들에 대응하는 레퍼런스 데이터를 연산하여 업데이트 할 수 있다. 예를 들어, 관절 디바이스(100)가 J1~J31까지 총 31개 존재하는 경우, 각 에이전트(400)별 메모리 공간 영역에는 상기 각각의관절 디바이스(100)들에 대응되는 레퍼런스 데이터 영역이 포함될 수 있다.Here, each agent 400 may calculate and update reference data corresponding to each device 100. For example, when a total of 31 joint devices 100 exist from J1 to J31, a memory space area of each agent 400 may include a reference data area corresponding to each of the joint devices 100. .
이와 함께, 공유 메모리(300)는 상기 관절 디바이스(100) 각각에 대한 모션 오너 변수를 포함할 수 있다. 따라서, 각 모션 오너 변수 공간에는 관절 디바이스(100)의 개수와 동일한 개수의 모션 오너 변수가 포함될 수 있다.In addition, the shared memory 300 may include a motion owner variable for each of the joint devices 100. Therefore, each motion owner variable space may include the same number of motion owner variables as the number of the joint devices 100.
그리고, 각 모션 오너 변수는 미리 설정된 복수의 에이전트(400)들 중 상기 관절 디바이스(100)에 대한 권한을 갖는 하나의 에이전트을 나타낼 수 있다. 이에 따라, 해당 관절 디바이스(100)에 대한 제어권이 어떠한 에이전트(400)에 종속되어 있는지를 디바이스 제어 모듈(200)이 판단할 수 있다.Each motion owner variable may represent one agent having the authority to the joint device 100 among a plurality of preset agents 400. Accordingly, the device control module 200 may determine which agent 400 the control right for the joint device 100 depends on.
또한, 각 관절 디바이스(100)들에 대한 제어권은 모션 오너 변수의 변경에 따라 다른 에이전트(400) 또는 디바이스 제어 모듈(200)로도 이전될 수 있다.In addition, the control right for each joint device 100 may be transferred to another agent 400 or the device control module 200 according to the change of the motion owner variable.
이를 위해, 디바이스 제어 모듈(200)은 우선적으로 모션 오너 변수로부터 특정 관절 디바이스(100)의 제어권을 갖는 에이전트(400)를 식별할 수 있다. 그리고, 디바이스 제어 모듈(200)은 식별된 에이전트(400)의 레퍼런스 데이터를 수집하며, 상기 수집된 레퍼런스 데이터를 결합하여 종합적으로 구성된 전체 관절 디바이스(100)에 대한 전체 레퍼런스 데이터를 생성할 수 있다.To this end, the device control module 200 may first identify the agent 400 having the control right of the specific joint device 100 from the motion owner variable. The device control module 200 may collect reference data of the identified agent 400, and combine the collected reference data to generate overall reference data for the overall joint device 100.
그리고, 디바이스 제어 모듈(200)은 전체 레퍼런스 데이터를 이용하여, 각 디바이스(100)에 대한 제어 신호를 생성할 수 있고, 적절하게 전달할 수 있다.In addition, the device control module 200 may generate a control signal for each device 100 by using the entire reference data, and may appropriately transmit the signal.
에게 있는지 살펴보고, 해당하는 관절 레퍼런스의 값을 읽어오고, 그렇게 하여 종합적으로 단 하나의 세트로 구성된 로봇 전체 관절의 레퍼런스를 구성하고, 이를 로봇 디바이스로 전달하여 구동하게 된다.It will read the value of the corresponding joint reference, thereby constructing a reference for the entire joint of the robot, which is composed of only one set, and passing it to the robotic device for driving.
이와 같은 데이터 교환 방식을 통해, 로봇의 각 관절들을 서로 다른 에이전트(400)들에서 충돌 없이 제어할 수 있다. 예를 들어 하나의 에이전트(400)에서는 하체의 자세 안정화에 대한 알고리즘을 통해서 하체 관절들을 제어하고, 다른 하나의 에이전트(400)에서는 상체의 특정 태스크 모션을 생성하면, 두 에이전트(400)들의 결과가 종합되어 로봇의 전신 태스크가 수행될 수 있다. 이는 로봇의 멀티 에이전트 시스템의 특성에 맞는 효율적인 제어를 가능하게 한다.Through such a data exchange method, each joint of the robot can be controlled without collision in different agents 400. For example, if one agent 400 controls lower body joints through an algorithm for stabilizing lower body posture, and the other agent 400 generates a specific task motion of the upper body, the results of the two agents 400 are determined. In total, the whole body task of the robot can be performed. This enables efficient control according to the characteristics of the multi-agent system of the robot.
도 6은 본 발명의 실시 예에 따른 디바이스 제어 모듈을 설명하기 위한 블록도이다.6 is a block diagram illustrating a device control module according to an embodiment of the present invention.
도 6을 참조하면, 디바이스 제어 모듈(200)은 모션 셀렉터(210), 컨트롤러 신호 누적부(220), 신호 결합부(230), 정보 핸들러(240)를 포함한다.Referring to FIG. 6, the device control module 200 includes a motion selector 210, a controller signal accumulator 220, a signal combiner 230, and an information handler 240.
본 발명의 실시 예에 따르면, 관절에 대한 레퍼런스 데이터는 관절 모션 제어 및 세부 컨트롤을 위한 2 이상의 레퍼런스 신호를 포함할 수 있다. 이에 따라, 각 관절 디바이스(100)에 대응되는 에이전트(400)는 상기 2 이상의 레퍼런스 신호를 레퍼런스 데이터로서 생성하여 공유 메모리(300)에 저장할 수 있다.According to an embodiment of the present disclosure, the reference data for the joint may include two or more reference signals for joint motion control and detailed control. Accordingly, the agent 400 corresponding to each joint device 100 may generate the two or more reference signals as reference data and store the same in the shared memory 300.
또한, 도 6에 도시된 바와 같이, 레퍼런스 신호는 모션 레퍼런스와 컨트롤러 레퍼런스로 명칭될 수 있다. 모션 레퍼런스는 각 관절에 지배적인 값을 제공하는 레퍼런스 데이터를 포함할 수 있고, 컨트롤러 레퍼런스는 미시적으로 모션 레퍼런스에 가감되는 세부 레퍼런스 데이터를 포함할 수 있다. 다만, 본 발명의 실시 예에서 상기 레퍼런스가 그 명칭으로 한정되는 것은 아니다.In addition, as shown in FIG. 6, the reference signal may be referred to as a motion reference and a controller reference. The motion reference may include reference data that provides a dominant value for each joint, and the controller reference may include detailed reference data that is added to or subtracted from the motion reference. However, in the embodiment of the present invention, the reference is not limited to the name.
이에 따라, 디바이스 제어 모듈(200)에는 공유 메모리(300)로부터 모션 레퍼런스 출력 데이터(M1~Mm)와 컨트롤러 레퍼런스(M1~Mm)이 입력될 수 있다. Accordingly, the motion reference output data M1 to Mm and the controller references M1 to Mm may be input to the device control module 200 from the shared memory 300.
그리고, 모션 레퍼런스는 하나의 관절 디바이스(100)별로 하나가 선택될 수 있으나, 컨트롤러 레퍼런스는 모두 누적되어 가감될 수 있다.In addition, one motion reference may be selected for each joint device 100, but all the controller references may be accumulated and added.
이를 위해, 모션 셀렉터(210)는 상기 모션 오너 변수 정보에 기초하여, 상기 모션 레퍼런스 데이터로부터 각 관절 디바이스(100)에 대응하는 모션 레퍼런스 데이터를 선택하며, 이를 신호 결합부(230)로 출력할 수 있다. 따라서, 하나의 관절 디바이스(100)에는 하나의 모션 레퍼런스 데이터가 선택될 수 있다.To this end, the motion selector 210 may select motion reference data corresponding to each joint device 100 from the motion reference data based on the motion owner variable information, and output the motion reference data to the signal combiner 230. have. Therefore, one motion reference data may be selected for one joint device 100.
또한, 컨트롤러 신호 누적부(220)에서는 상기 모션 오너 변수와 관계 없이, 각 컨트롤러 레퍼런스 데이터를 누적하여 결과값을 신호 결합부(230)로 출력할 수 있다.In addition, the controller signal accumulator 220 may accumulate each controller reference data and output the result value to the signal combiner 230 regardless of the motion owner variable.
그리고, 신호 결합부(230)에서는 상기 모션 레퍼런스 데이터와 상기 컨트롤러 레퍼런스 데이터 누적 결과값을 합성하여 최종 관절 디바이스(100)별 레퍼런스 데이터를 생성할 수 있으며, 적절한 타겟 관절 디바이스(100)들로 출력할 수 있다.In addition, the signal combiner 230 may generate the reference data for each final joint device 100 by synthesizing the motion reference data and the controller reference data accumulated result value, and output them to the appropriate target joint devices 100. Can be.
여기서, 신호 결합부(230)는 레퍼런스의 타입을 식별하고, 레퍼런스 타입에 따른 처리공간을 구분할 수 있다. 이를 위해, 신호 결합부(230)는 타입 식별부 및 공간 처리부를 포함할 수 있다.Here, the signal combiner 230 may identify the type of the reference and classify the processing space according to the reference type. To this end, the signal combiner 230 may include a type identifier and a spatial processor.
예를 들어, 레퍼런스 데이터는 관절 동작 뿐만 아니라, 태스크 처리와 같은 다른 타입을 가질 수 있으며, 이에 따라 타입 식별부는 상기 태스크 타입 또는 관절 타입인지 여부를 식별할 수 있고, 공간 처리부는 상기 타입에 따라 서로 다른 데이터 공간의 처리를 제공할 수 있다.For example, the reference data may have other types, such as task processing, as well as joint motion, such that a type identifier may identify whether the task type or the joint type is, and the spatial processor may determine each other according to the type. Can provide processing of other data spaces.
이와 같이, 모션 레퍼런스와 컨트롤러 레퍼런스를 분리함으로써 로봇 모션을 생성하는 과정에서 기능적인 분리가 가능해질 수 있다. 예를 들어서 이족보행의 모션을 생성한다면, 하나의 에이전트(400)에서 기본 보행 패턴을 생성하여 모션 레퍼런스를 생성하고, 다른 하나의 에이전트(400)에서 댐핑 컨트롤러를 설계하고, 또 다른 에이전트(400)에서 진동을 잡아주는 컨트롤러를 설계하여 컨트롤러 레퍼런스로 출력함에 따라 매우 용이하게 설계 및 개발이 가능하게 된다.As such, by separating the motion reference from the controller reference, functional separation may be enabled in the process of generating the robot motion. For example, if a bipedal motion is generated, a basic walking pattern is generated in one agent 400 to generate a motion reference, a damping controller is designed in another agent 400, and another agent 400 is generated. By designing a controller to catch the vibration in the controller and outputting it to the controller reference, it is very easy to design and develop.
한편, 정보 핸들러(240)는 센서 디바이스(100) 또는 기타 측정 대상 디바이스들로부터 수집되는 센서 데이터를 종합하여, 공유 메모리(300)로 출력하는 기능을 수행할 수 있다.Meanwhile, the information handler 240 may perform a function of synthesizing sensor data collected from the sensor device 100 or other measurement target devices and outputting them to the shared memory 300.
도 7은 본 발명의 다른 일 실시 예에 따른 로봇 시스템의 제어 동작을 설명하기 위한 흐름도이다.7 is a flowchart illustrating a control operation of the robot system according to another exemplary embodiment.
일반적으로 로봇을 사용한 실제 실험에서 문제가 발생하게 되면 일반적으로 로봇을 다시 처음부터 구동시켜야 한다. 모바일 플랫폼의 경우에는 로봇 초기화 과정이 간단하지만, 휴머노이드와 같이 다관절 시스템이나 지면에서 초기화를 수행하기 어렵고 크레인 등을 이용해서 공중에서 초기화를 해야 하는 경우에는 전체적인 초기화 과정이 매우 번거롭고 많은 시간을 소요하게 된다.In general, when a problem occurs in a real experiment using a robot, the robot must be driven again from the beginning. In the case of a mobile platform, the robot initialization process is simple, but when the initialization is difficult in the articulated system or the ground like a humanoid, and it is necessary to initialize it in the air by using a crane, etc., the entire initialization process is very cumbersome and time consuming. do.
따라서, 도 7에 도시된 바와 같이, 본 발명의 실시 예에 따른 디바이스 제어 모듈(200)은 이러한 로봇을 초기화 하는 과정이 없이 디버깅을 하고 다시 로봇을 테스트 할 수 있다.Thus, as shown in Figure 7, the device control module 200 according to an embodiment of the present invention can debug and test the robot again without the process of initializing such a robot.
이를 위해, 먼저 시스템 초기화가 수행되고(S201), 각각의 상호 독립적 프로세스를 갖는 복수의 에이전트(400)들이 동작한다(S202).For this purpose, system initialization is first performed (S201), and a plurality of agents 400 having respective mutually independent processes operate (S202).
이후, 오류가 발생된 특정 에이전트가 존재하는 경우(S203), 상기 오류 발생된 에이전트의 동작은 중단되고, 디바이스 제어 모듈(200) 또는 다른 에이전트(400)가 상기 모션 오너 변수를 다른 에이전트로 변경한다(S205).Thereafter, when a specific agent having an error exists (S203), the operation of the failed agent is stopped, and the device control module 200 or the other agent 400 changes the motion owner variable to another agent. (S205).
이에 따라, 사용자가 에이전트(400)를 통해 모션 알고리즘을 테스트하다가 문제가 발행하면 단지 다른 에이전트(400) 또는 디바이스 제어 모듈(200)로 모션 오너를 넘겨주고, 중단된 에이전트(400)에 대한 코드를 수정할 수 있다.Accordingly, when the user tests the motion algorithm through the agent 400 and a problem is issued, the user simply passes the motion owner to another agent 400 or the device control module 200, and sends a code for the suspended agent 400. Can be modified.
그리고 작성한 코드를 컴파일하여 디버깅이 완료된 경우(S207), 다시 모션 오너 변수를 원래의 에이전트(400)로 스위치할 수 있다(S209).When debugging is completed by compiling the created code (S207), the motion owner variable may be switched back to the original agent 400 (S209).
이와 같이, 개발자는 모션 오너를 가져온 이후에 실험을 계속할 수 있다. 이는 결과적으로 개발을 가속시킬 수 있고, 사용자의 입장에서 이를 좀 더 활용하여 다른 특수한 알에서 로봇의 관절 레퍼런스를 지속적으로 관찰하여 충돌이 일어나는 것을 감지하여 충돌이 발생할 경우에 모션 오너를 스위칭하여 로봇을 안전하게 실험하도록 할 수도 있게 되는 효과를 갖는다.As such, the developer can continue the experiment after bringing the motion owner. As a result, it can accelerate development, and from the user's point of view, it can be further utilized to continuously observe the robot's joint reference on other special eggs to detect the collision and to switch the robot to the motion owner in case of a collision. It has the effect of allowing you to experiment safely.
도 8은 본 발명의 실시 예에 따른 디바이스 제어 모듈(200)의 구성을 도시한 것이다.8 illustrates a configuration of the device control module 200 according to an embodiment of the present invention.
실제 실시간 제어 환경에서, 경성 실시간(strict hard real-time) 프레임워크를 구현하기 위하여는, 각 에이전트(400)들의 프로세스에 대한 실시간 쓰레드(thread) 동기화가 이루어질 수 있다.In a real-time real-time control environment, in order to implement a strict hard real-time framework, real-time thread synchronization may be performed for the processes of the respective agents 400.
그러나, 각 스텝(또는 주기)에 의해 제한되는 시간 동안 여러 프로세스들 사이에서 동기화가 제대로 일어나지 않는 경우에는, 한 스텝 빠른 관절 레퍼런스의 업데이트 혹은 한 스텝 늦은 관절 레퍼런스의 업데이트로 인해 예상치 못한 지터 및 저크 모션이 일어날 수 있다. 이러한 문제가 자주 발생할수록 모션의 질이 떨어지게 되거나 로봇 시스템의 전체적인 태스크를 위험하게 만들 수 있다.However, if synchronization does not occur properly between multiple processes during the time limited by each step (or period), unexpected jitter and jerk motion due to an update of one-step early joint reference or one-step late joint reference. This can happen. The more frequent these problems, the poorer the quality of motion or the more dangerous the overall task of the robotic system.
예를 들어, 디바이스 제어 모듈(200)과 모든 에이전트(400)들이 제어 스텝의 주기와 동일한 주기를 가지는 실시간 프로세스의 쓰레드로 동기화되는 경우 출력되는 액션의 실제 값들이 일부 오차가 발생될 소지가 있으며, 이는 강한 실시간성을 유지하지 못하게 하는 문제를 야기한다.For example, when the device control module 200 and all the agents 400 are synchronized with a thread of a real time process having the same period as the control step, actual values of the output action may have some error. This causes a problem of not maintaining strong real time.
보다 구체적으로, 각 프로세스에 포함된 실시간 쓰레드들은 각자의 프로세스의 동작 시간에 따른 지터(jitter)의 영향을 받을 수밖에 없으며, 이에 따라 각 프로세스간 시간 축이 어긋나는 경우가 발생된다. 이는 디바이스 제어 모듈(200)이 가장 최근의 레퍼런스 및 센서 값을 동기화하더라도 알고리즘 수행 시간에 따라서 업데이트 되지 않은 레퍼런스를 반영할 수 있으며, 부정확한 센서 데이터에 의한 모션 생성의 질을 떨어뜨리게 된다. 이에 따라 항상 일정한 스텝 주기에 따른 오프셋 시간대에서 업데이트 되지 못하거나, 너무 빠르게 업데이트됨으로써 많은 문제를 야기할 수 있다.More specifically, the real-time threads included in each process are bound to be affected by jitter according to the operation time of each process, which causes a time axis shift between the processes. Although the device control module 200 synchronizes the most recent reference and sensor values, the device control module 200 may reflect the reference that is not updated according to the algorithm execution time, and degrade the quality of motion generation due to incorrect sensor data. As a result, they may not always be updated at offset time intervals according to a constant step period, or they may be updated too quickly, which may cause many problems.
따라서, 본 발명의 실시 예에 따른 디바이스 제어 모듈(200)은 프로세스들 간의 쓰레드 동기화를 위해, 공유 메모리(300)와 원 스텝 지연(One Step Delay)을 이용한 데이터 획득 및 에이전트(400)간 동기화 처리를 수행함으로써, 상기와 같은 문제를 해결할 수 있다.Accordingly, the device control module 200 according to an exemplary embodiment of the present invention may acquire data using the shared memory 300 and one step delay and process synchronization between the agents 400 for thread synchronization between processes. By doing this, the above problems can be solved.
이를 위해, 디바이스 제어 모듈(200)은 스텝 기반 제어를 수행하며, 제어 대상 디바이스(100)로부터 현재 스텝의 상태 정보를 획득하여 하나 이상의 연산 에이전트(400)로 전달하고, 상기 연산 에이전트로부터, 상기 현재 스텝에 대한 이전 스텝에서 상기 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하며, 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스(100)로 전송하여 이전 스텝에서 연산된 레퍼런스 모션이 현재 스텝의 디바이스에서 구현되고, 현재 스텝의 센서 정보는 각 연산 에이전트(400)로 전달되어 처리됨으로써, 한 스텝 주기 내를 기준으로, 시간 지연 및 지터가 없는 동작 구현을 가능하게 한다.To this end, the device control module 200 performs step-based control, obtains the state information of the current step from the controlling device 100, and transmits the state information to one or more operation agents 400, and from the operation agent, In the previous step for the step, the reference information calculated in advance is obtained based on the state information of the previous step, and the reference information is transmitted to the device 100 as a control signal corresponding to the current step and calculated in the previous step. The reference motion is implemented in the device of the current step, and the sensor information of the current step is delivered to and processed by each operation agent 400, thereby enabling operation without time delay and jitter, based on one step period.
이에 따라 도 8을 참조하면 본 발명의 실시 예에 따른 디바이스 제어 모듈(200)은 레퍼런스 획득부(250), 센서 디바이스 통신부(260), 동기화 신호 처리부(270) 및 공유 메모리 접근부(280)를 포함한다.Accordingly, referring to FIG. 8, the device control module 200 according to an embodiment of the present invention may include a reference acquirer 250, a sensor device communicator 260, a synchronization signal processor 270, and a shared memory access unit 280. Include.
여기서, 디바이스 제어 모듈(200)의 각 구성 요소는 한 스텝에 대응하는 제어 주기 내에서 모든 제어 및 동작 처리를 완료하고, 다음 스텝에서는 다시 동일한 처리을 수행할 수 있다.Here, each component of the device control module 200 may complete all control and operation processing in a control period corresponding to one step, and may perform the same processing again in the next step.
또한, 상기 디바이스 제어 모듈(200)의 구성 요소는 전술한 모션 셀렉터(210), 컨트롤러 신호 누적부(220), 신호 결합부(230), 정보 핸들러(240)의 전부 또는 일부 기능을 이용하여 처리되는 하드웨어 프로세서 또는 소프트웨어 모듈 프로세스로서 구현될 수 있다.In addition, components of the device control module 200 may be processed using all or some functions of the above-described motion selector 210, controller signal accumulator 220, signal combiner 230, and information handler 240. May be implemented as a hardware processor or software module process.
먼저, 센서 디바이스 통신부(260)는 각 디바이스(100)들과 유일하게 연결되어 디바이스 제어 모듈(200)간 제어 신호 및 센서 데이터를 송수신한다. 여기서, 센서 데이터는 각 디바이스(100)의 상태 정보를 포함하는 개념일 수 있으며, 상태 정보는 별도의 센서 모듈에서 센싱되는 정보 뿐만 아니라 디바이스(100)의 동작 환경 정보 등을 모두 포함할 수 있다.First, the sensor device communication unit 260 is uniquely connected to each device 100 to transmit and receive control signals and sensor data between the device control module 200. Here, the sensor data may be a concept including state information of each device 100, and the state information may include not only information sensed by a separate sensor module but also operating environment information of the device 100.
그리고, 센서 디바이스 통신부(260)는 각 디바이스(100)들로부터 현재 스텝에서 갱신된 센서 값들을 수신하고, 공유 메모리 접근부(280)를 통해 공유 메모리(300)의 센서 데이터에 상기 센서 값들을 업데이트한다.Then, the sensor device communication unit 260 receives the sensor values updated in the current step from each device 100, and updates the sensor values in the sensor data of the shared memory 300 through the shared memory access unit 280. do.
또한, 동기화 신호 처리부(270)에서 처리되는 동기화 신호에 따라 각각의 에이전트(400)들은 상기 공유 메모리(300)에 접근하여 업데이트된 현재 스텝의 센서 값들을 획득할 수 있다. 일 실시 예에서, 현재 스텝의 센서 값은 다음 스텝의 레퍼런스에 대한 연산 처리에 이용될 수 있다.In addition, according to the synchronization signal processed by the synchronization signal processor 270, each of the agents 400 may access the shared memory 300 to obtain the updated sensor values of the current step. In one embodiment, the sensor value of the current step may be used in the computation process for the reference of the next step.
그리고, 레퍼런스 획득부(250)는 상기 현재 스텝에 대한 이전 스텝에서 각각의 에이전트(400)들이 상기 이전 스텝의 상태 정보(센서 데이터 등)에 기초하여 미리 연산된 레퍼런스 데이터를 현재 스텝의 레퍼런스로서 공유 메모리(300)로부터 획득할 수 있다.In addition, the reference obtaining unit 250 shares the reference data previously calculated based on the state information (sensor data, etc.) of the previous step by each agent 400 in the previous step with respect to the current step as a reference of the current step. It may be obtained from the memory 300.
그리고, 센서 디바이스 통신부(260)는 또한, 동기화 신호 처리부(270)에서 각 에이전트(400)들로부터 수신한 동기화 신호에 따라, 상기 획득된 레퍼런스 데이터를 이용하여, 현재 스텝의 제어 신호를 생성하고, 생성된 제어 신호를 각 디바이스(100)들로 전달한다.The sensor device communication unit 260 also generates a control signal of the current step by using the obtained reference data according to the synchronization signal received from each agent 400 by the synchronization signal processing unit 270, The generated control signal is transferred to each device 100.
이에 따라, 디바이스 제어 모듈(200)은 공유 메모리(300)에서 이전 스텝의 상태 정보에 따라 업데이트된 레퍼런스를 현재 스텝의 제어 신호로 변환하여 디바이스(100)의 모션 제어를 처리할 수 있다. 이는 각 에이전트(400)들이 주어진 충분한 제어 시간에 따라 별도로 동작하게 하면서도, 디바이스(100)들에 대한 모션 제어 신호는 별도 복잡한 연산 없이 현재 스텝에 동기화되어 바로 출력될 수 있게 됨으로써, 모션 시간축 오차, 지터 또는 오류 등을 해소하고, 안정적인 동작에 따른 모션의 질을 향상시킬 수 있다.Accordingly, the device control module 200 may process the motion control of the device 100 by converting the updated reference into the control signal of the current step in the shared memory 300 according to the state information of the previous step. This allows each of the agents 400 to operate separately according to a given sufficient control time, while the motion control signals for the devices 100 can be output directly in synchronization with the current step without any additional complex computations, thereby providing motion timebase error, jitter Alternatively, errors and the like can be solved, and motion quality can be improved according to stable operation.
도 9는 본 발명의 실시 예에 따른 디바이스 제어 모듈(200) 및 에이전트(400)들의 동작을 설명하기 위한 흐름도이다.9 is a flowchart illustrating the operation of the device control module 200 and the agent 400 according to an embodiment of the present invention.
도 9를 참조하면, 먼저 디바이스 제어 모듈(200)은 센서 디바이스 통신부(260)를 통해 각 디바이스(100)로부터 변경된 센서 값을 수신하여 공유 메모리(300)의 업데이트를 수행한다(S301).Referring to FIG. 9, first, the device control module 200 receives a changed sensor value from each device 100 through the sensor device communication unit 260 to update the shared memory 300 (S301).
업데이트가 완료되면, 디바이스 제어 모듈(200)은 동기화 신호 처리부(270)를 통해, 각 에이전트(400)로 동기화 시작 시그널(SYNC SIGNAL)을 전송한다(S303).When the update is completed, the device control module 200 transmits a synchronization start signal SYNC SIGNAL to each agent 400 through the synchronization signal processor 270 (S303).
동기화 시작 시그널이 수신되면, 각 에이전트들(400)은 현재 스텝의 센서 데이터를 공유 메모리(300)로부터 획득할 수 있으며, 획득된 센서 데이터에 기초하여 다음 스텝의 레퍼런스를 연산할 수 있다.When the synchronization start signal is received, each of the agents 400 may obtain sensor data of the current step from the shared memory 300 and calculate a reference of the next step based on the obtained sensor data.
한편, 동기화 시작 시그널에 따라, 각 에이전트(400)들은 이전 스텝에서 계산된 레퍼런스 값을 공유 메모리(300)상에 업데이트한다(S305).On the other hand, according to the synchronization start signal, each agent 400 updates the reference value calculated in the previous step on the shared memory 300 (S305).
여기서, 상기 이전 스텝의 레퍼런스는 이전 스텝의 센서 데이터로부터 생성되어 미리 계산된 값을 포함할 수 있다. 이에 따라, 현재 스텝에서는 결과 값만 업데이트하므로, 출력 시간을 최소화할 수 있다.The reference of the previous step may include a value calculated in advance from the sensor data of the previous step. Accordingly, the output time can be minimized because only the result value is updated in the current step.
업데이트가 완료되면, 디바이스 제어 모듈(200)은 동기화 신호 처리부(270)를 통해 각 에이전트(400)들로부터 응답 시그널(ACK SIGNAL)를 수신한다(S307).When the update is completed, the device control module 200 receives a response signal (ACK SIGNAL) from each agent 400 through the synchronization signal processing unit 270 (S307).
이에 따라, 디바이스 제어 모듈(200)의 동기화 신호 처리부(270)는 모든 에이전트(400)들로부터 응답 시그널이 수신되었는지 판단하고(S309), 모두 수신된 경우, 디바이스 제어 모듈(200)의 레퍼런스 획득부(250)는 공유 메모리 접근부(280)를 통해 상기 공유 메모리(300)상에 업데이트된 이전 스텝 레퍼런스 값을 획득하며, 상기 이전 스텝의 레퍼런스 값에 따른 제어 신호를 각각의 디바이스(100)들로 전달한다(S311).Accordingly, the synchronization signal processor 270 of the device control module 200 determines whether a response signal is received from all agents 400 (S309), and when all are received, the reference obtainer of the device control module 200 is received. 250 obtains the updated previous step reference value on the shared memory 300 through the shared memory access unit 280, and transmits a control signal according to the reference value of the previous step to each device 100. Transfer (S311).
그리고, 디바이스 제어 모듈(200)은 센서 디바이스 통신부(260)를 통해 다음 센서 값을 요청한다(S313).In operation S313, the device control module 200 requests a next sensor value through the sensor device communication unit 260.
여기서, S301 내지 S311 단계는 로봇 시스템의 동작 주기 시간에 대응하는 1 스텝 이내에 모두 이루어질 수 있다. 또한 상기 1 스텝은 디바이스 제어 모듈(200)의 동작 주기에 동기화될 수 있다. 각 에이전트(400)들의 현재 센서 데이터 기반 연산 프로세스는 다음 스텝의 레퍼런스를 획득하는데 이용되므로, 현재 스텝에 대하여는 그 프로세싱 시간이 최소화될 수 있으며, 상기 동기화를 오차 없이 유지시킬 수 있으며, 이에 따라 본 발명의 실시 예에 따른 시스템은 매우 강인한 경성 실시간성을 제공할 수 있다. 하기 표 1에서는 디바이스 제어 모듈(200)의 동기화 동작에 관한 Pseudo Code를 개시한다.Here, steps S301 to S311 may be all performed within one step corresponding to the operation cycle time of the robot system. In addition, the one step may be synchronized to the operation cycle of the device control module 200. Since the current sensor data based arithmetic process of each of the agents 400 is used to obtain a reference of the next step, the processing time can be minimized for the current step, and the synchronization can be maintained without error. The system according to the embodiment of the present invention can provide very robust hard real time. Table 1 below discloses a pseudo code for the synchronization operation of the device control module 200.
Figure PCTKR2016008031-appb-T000001
Figure PCTKR2016008031-appb-T000001
표 1은 관절 디바이스(100)의 실시간 모션을 생성하기 위한 1스텝 주기의 수도 코드를 도시한 것으로, 디바이스 제어 모듈(200)은 센서(sensor)로부터 수신되는 센서 데이터(s.data)를 전달하고, 이전 스텝의 센서 데이터로부터 연산된 관절 레퍼런스(joint reference)를 획득하여 각 관절 디바이스(joint)로 전달할 수 있다. 표 1에서, 디바이스 제어 모듈(200)은 각 디바이스(100)들을 전반적으로 제어하는 의미로서 데몬(Deamon)으로 표현될 수 있으며, 각각의 에이전트(400)들은 포도의 알들과 같은 연결구조를 가짐으로써 알(AL)로 표현될 수 있다. 각각의 에이전트(400)의 알고리즘은 사용자 및 개발자에 의해 구현될 수 있다.Table 1 shows the water code of one step cycle for generating the real-time motion of the joint device 100, the device control module 200 delivers the sensor data (s.data) received from the sensor (sensor) The joint reference calculated from the sensor data of the previous step may be obtained and transferred to each joint device. In Table 1, the device control module 200 may be represented as a daemon as a general control of each device 100, each agent 400 has a connection structure such as the eggs of grapes It may be expressed as AL. The algorithm of each agent 400 may be implemented by users and developers.
표 1에서와 같이, 디바이스 제어 모듈(200,Deamon)은 실시간 쓰레드(Real Time Thread)를 동작시키면서, 현재 스텝에서 i) 센서 데이터가 획득되면, ii) 센서 데이터와 함께 동기화(SYNC) 신호를 각 에이전트(400)로 전달하며, iii-A) 각 에이전트(400, AL)들은 이전 스텝에서 연산된 레퍼런스를 공유 메모리(300)에 업데이트하여 응답(ACK) 신호를 전송하고, iii-B) 각 에이전트(400, AL)들은 현재 스텝의 센서 데이터에 대응하는 다음 스텝 레퍼런스를 연산하고, iv) 디바이스 제어 모듈(200, Deamon)은 업데이트된 레퍼런스를 관절 디바이스(100)로 전달한다. 그리고, v) 다음 스텝의 센서 데이터를 각 디바이스(100)에 요청할 수 있다.As shown in Table 1, when the device control module 200 (Deamon) operates a real time thread, i) sensor data is acquired in the current step, ii) a sync (SYNC) signal with each sensor data is generated. Iii-A) Each agent 400 (AL) updates the reference calculated in the previous step to the shared memory 300 to transmit an ACK signal, and iii-B) each agent. (400, AL) calculates the next step reference corresponding to the sensor data of the current step, iv) the device control module 200 (Deamon) delivers the updated reference to the articulation device (100). And, v) the sensor data of the next step may be requested to each device 100.
예를 들어, 표 1에 도시된 바와 같이, 각각의 에이전트(400)들은 자신만의 알고리즘에 따른 태스크 쓰레드(Task Thread)을 수행하며, 현재 스텝의 센서 데이터에 기반하여 다음 레퍼런스(next refrence)를 위한 연산을 처리한다. 그리고 처리가 완료되면 다음 스텝까지 대기할 수 있다. 여기서, 다음 스텝을 현재 스텝으로 가정할 경우 상기 레퍼런스를 위한 연산은 이전 스텝에서 미리 처리된 연산일 수 있다.For example, as shown in Table 1, each of the agents 400 performs a task thread according to its own algorithm, and based on the sensor data of the current step, next agent (next refrence) Handles the operation. When the process is completed, it can wait until the next step. Here, when the next step is assumed to be the current step, the operation for the reference may be an operation preprocessed in the previous step.
또한, 에이전트(400)들은 동기화 감시 쓰레드(Sync Watching Thread)를 통해 동기화 시작 신호(sync_flag)가 수신되면, 각각이 가지는 오너 정보에 따라, 미리 연산하여 생성된 이전 스텝의 레퍼런스(joint reference)를 공유 메모리에 업데이트하며, 업데이트 결과에 따른 ack신호(ack_flag)를 디바이스 제어 모듈(200)로 전달할 수 있다.In addition, when the agent 400 receives a synchronization start signal sync_flag through a sync watching thread, the agents 400 share a joint reference of a previous step generated in advance according to owner information of each agent. The memory device may be updated in the memory and the ack signal ack_flag according to the update result may be transmitted to the device control module 200.
이와 같은 동기화 과정에 따라, 디바이스 제어 모듈(200)은 관절 레퍼런스에 따른 제어 신호를 센서 데이터 및 프로스세간 쓰레드와 동기화하기 위해, 원 스텝 지연(One Step Delay)를 이용할 수 있다. 이를 통해 강인하고 균일한 디바이스 제어를 할 수 있고, 결과적으로 경성 실시간(strict hard real-time)을 구현할 수 있다. 또한 각 에이전트(400)들에서도 주어진 제어 스텝 주기의 시간만큼을 충분히 활용할 수 있게 된다.In this synchronization process, the device control module 200 may use a one step delay to synchronize the control signal according to the joint reference with the sensor data and the process thread. This allows for robust and uniform device control, resulting in strict hard real-time. In addition, each agent 400 can fully utilize the time of a given control step period.
도 10은 본 발명의 실시 예에 따른 디바이스(100), 디바이스 제어 모듈(200) 및 에이전트(400)간 동작 타이밍을 나타내기 위한 타이밍도이다.FIG. 10 is a timing diagram illustrating an operation timing between a device 100, a device control module 200, and an agent 400 according to an exemplary embodiment.
도 10에 도시된 바와 같이, 먼저 디바이스 제어 모듈(200)에서는 그 제어 스텝 주기(Control Period)인 5ms동안 센서 데이터를 획득하고, 이전 스텝에서 에이전트(400)가 연산한 레퍼런스 값을 획득하여 디바이스(100)로 전달할 수 있다. 그리고, 디바이스 제어 모듈(200) 및 에이전트(400)간 데이터 공유는 공유 메모리(300)에 대한 입출력을 통해 이루어질 수 있다.As shown in FIG. 10, first, the device control module 200 acquires sensor data for 5 ms, that is, a control step period, and obtains a reference value calculated by the agent 400 in a previous step. 100). In addition, data sharing between the device control module 200 and the agent 400 may be performed through input / output to the shared memory 300.
도 10에 도시된 바와 같이, 이전 스텝(n-1)에서의 센서 데이터는 에이전트(400)에서 처리되며, 처리되는 시간(Working Time)은 제어 스텝 주기보다 짧을 수 있다. 이에 따라, 각 에이전트(400)들은 대기 시간(Suspend Time)이 존재할 수 있다. 그리고, 현재 스텝의 제어 주기가 시작되면, 각 에이전트(400)들은 디바이스 제어 모듈(200)로부터 수신되는 동기화 신호에 따라 이전 스텝(n-1)에서 연산된 레퍼런스를 디바이스 제어 모듈(200)로 전달하고, 디바이스 제어 모듈(200)은 현재 스텝(n)의 센서데이터를 에이전트(400)로 전달한다. 각 에이전트(400)들은 현재 스텝(n)의 센서 데이터에 기반한 연산을 처리하여 다음 스텝(n+1)을 위한 레퍼런스 데이터를 생성한다.As shown in FIG. 10, the sensor data in the previous step n-1 is processed in the agent 400, and the working time may be shorter than the control step period. Accordingly, each agent 400 may have a suspend time. Then, when the control cycle of the current step starts, each agent 400 transfers the reference calculated in the previous step (n-1) to the device control module 200 according to the synchronization signal received from the device control module 200. The device control module 200 transmits the sensor data of the current step (n) to the agent 400. Each of the agents 400 processes an operation based on the sensor data of the current step n to generate reference data for the next step n + 1.
그리고, 각 디바이스 제어 모듈(200)과 에이전트(400)들은 쓰레드로 구현될 수 있으며, 오직 유일하게 디바이스 제어 모듈(200)만 제어 스텝 주기와 동일한 주기 5ms를 가지는 쓰레드를 포함할 수 있다. 이는 디바이스 제어 모듈(200)이 수행하는 역할은 일정하고, 가장 높은 우선순위를 가지는 쓰레드이기 때문이며, 따라서 주어진 액션을 취하는데 걸리는 시간이 거의 일정하게 된다. 이에 주어진 제어 주기인 5 ms는 디바이스 제어 모듈(200)의 입장에서는 매우 긴 시간일 수 있으며, 이러한 특성을 이용하여 경성 실시간(strict hard real-time)이 구현될 수 있다.Each of the device control module 200 and the agents 400 may be implemented as a thread, and only the device control module 200 may include a thread having the same period of 5 ms as the control step period. This is because the role of the device control module 200 is a constant, the highest priority thread, so the time taken to take a given action is almost constant. 5 ms, which is a given control period, may be a very long time from the point of view of the device control module 200, and strict hard real-time may be implemented using this characteristic.
이에 따라, 디바이스 제어 모듈(200)의 동작은 모든 액션들의 쓰레드의 시작점으로부터의 시간 오프셋 값의 변동을 최소화하는 기능만을 수행할 수 있다. 이에 따라, 각 액션으로 인한 값들의 유효성만 보장하면 다양한 시스템의 경성 실시간 제어의 퀄리티를 높일 수 있게 된다.Accordingly, the operation of the device control module 200 may perform only a function of minimizing the variation of the time offset value from the start point of the thread of all actions. Accordingly, it is possible to increase the quality of the hard real-time control of various systems by ensuring the validity of the values due to each action.
한편, 도 11 내지 도 14는 본 발명의 실시 예에 따른 제어 시스템의 성능 검증을 위한 시간 요소 및 테스트 결과를 도시한 것이다.11 to 14 illustrate time elements and test results for performance verification of a control system according to an exemplary embodiment of the present invention.
도 11은 본 발명의 실시 예에 따른 시스템 성능 테스트를 위해 측정한 3개의 시간적 요소를 나타낸다.11 illustrates three temporal components measured for system performance testing according to an embodiment of the invention.
가장 먼저 1) 디바이스 제어 모듈(200)의 실시간 쓰레드의 주기를 측정하였으며, 이를 통해 실시간 쓰레드가 반복적으로 균일한 주기를 보장하는지를 확인할 수 있다. 다음으로 2) 관절 레퍼런스가 디바이스(100)에 전달되는 시간의 쓰레드의 시작으로부터의 오프셋을 측정하였다. 이를 통해서 액션의 지연이 거의 없는 경성 실시간(strict hard real-time)을 구현하였는지 확인할 수 있다. 마지막으로, 3) 디바이스 제어 모듈(200)과 에이전트(400)간 Sync. Signal을 보내고 Ack. Signal을 받기까지의 쓰레드 동기화에 걸리는 시간을 측정하였다. 시스템 반응성을 나타내며, 이 값이 두 번째 측정값인 액션의 지연 정도에 미치는 영향을 파악할 수 있다. 이 테스트를 동작하는 에이전트(400)들이 개수가 1개, 3개, 5개, 10개일 때에 대해서 수행하고 각각의 실험에서 4000개씩의 표본을 얻었다.First of all, 1) the period of the real-time thread of the device control module 200 was measured, and through this, it can be checked whether the real-time thread repeatedly guarantees a uniform period. Next, 2) the offset from the start of the thread of time the articulation reference is delivered to device 100 is measured. Through this, we can check whether we implemented strict hard real-time with almost no action delay. Finally, 3) Sync between device control module 200 and agent 400. Send a signal, Ack. The time taken for thread synchronization to receive a signal was measured. It indicates system responsiveness and you can see the effect of this value on the second measure of action delay. The agents 400 running this test were run when the number was 1, 3, 5, or 10 and obtained 4000 samples in each experiment.
도 12는 상기 1)의 경우의 히스토그램 그래프를 나타낸다.12 shows a histogram graph in the case of 1) above.
도 12를 참조하면, 동작하는 에이전트(400, AL)의 개수(count)에 상관 없이 5000 us에 집중되어 있는 것을 확인할 수 있다. 최대 jitter는 10 us 정도로 우수한 성능을 보이고 있다. 즉, 디바이스 제어 모듈(200)의 실시간 쓰레드는 사용자가 원하는 주기에 정확하게 주어진 일을 시작하고 끝내게 됨을 확인할 수 있다.Referring to FIG. 12, it can be seen that the concentration is 5000 us regardless of the number of agents 400 and AL that operate. The maximum jitter is around 10 us. That is, the real-time thread of the device control module 200 can confirm that the user starts and ends the given task exactly at the desired period.
도 13은 상기 2)의 경우의 관절 레퍼런스가 출력되는 데 걸리는 시간의 히스토그램을 나타낸다.FIG. 13 shows a histogram of the time taken for the joint reference to be output in the case of 2) above.
도 13을 참조하면, 디바이스 제어 모듈(200)의 실시간 쓰레드가 시작되고 나서 30 us에서 100 us 사이에 레퍼런스 값이 제어 신호로서 전달되는 것을 볼 수 있다. 그리고, 동작하는 에이전트(400, AL)의 개수에 따른 경향은 보이지 않음을 확인할 수 있다. 변화의 양은 70us 정도로 이것은 제어 주기에 비해서 1.5% 정도의 시간이고, 측정된 jitter의 7배 정도이며, 실험의 모터 제어기의 경우에 1 kHz으로 동작을 하므로 그 주기는 1 ms(1000 us)이었다. 따라서, 레퍼런스가 출력되는 데 걸리는 시간의 변화량이 디바이스(100)의 모터 제어 주기의 10% 보다 작다는 것을 의미하고, 이는 본 발명의 시스템 구성은 디바이스 및 제어 시스템간 동작 주파수가 상이한 다중-레이트 시스템(Multi-Rate System)을 구동하기에도 충분한 성능을 보장한다는 것을 의미한다.Referring to FIG. 13, it can be seen that a reference value is transmitted as a control signal between 30 us and 100 us after the real time thread of the device control module 200 starts. In addition, it can be seen that there is no tendency according to the number of operating agents 400 and AL. The amount of change is about 70us, which is about 1.5% of the time compared to the control period, about 7 times the measured jitter, and the period is 1 ms (1000 us) because it operates at 1 kHz for the experimental motor controller. Thus, the variation in the time it takes for the reference to be output is less than 10% of the motor control period of the device 100, which means that the system configuration of the present invention is a multi-rate system with different operating frequencies between the device and the control system. This means that it guarantees enough performance to run the Multi-Rate System.
한편, 도 14는 디바이스 제어 모듈(200)과 에이전트(400, AL)들의 쓰레들 간의 동기화가 일어나는데 걸리는 시간의 히스토그램을 나타내고 있다.Meanwhile, FIG. 14 shows a histogram of the time taken for synchronization between the device control module 200 and the threads of the agents 400 and AL to occur.
이 시간은 최소 10 us로부터 최대 70 us까지 가변하는 것을 확인할 수 있다. 앞의 실험 결과와 비교해보면, 디바이스 제어 모듈(200)이 레퍼런스를 출력하기까지 시간 중에서 상기 3)번 경우의 동기화에 걸리는 시간이 가장 크다는 것을 알 수 있다. 이러한 현상은 디바이스 제어 모듈(200)의 쓰레드가 가장 높은 우선순위를 가지고 있고, Sync. Signal을 포착하는 에이전트(400, AL)의 쓰레드가 너무 빠르게 돌면 그만큼 PC의 CPU 자원을 소비하기 때문에 동기화의 성능과 모션 생성을 위한 연산에 투자할 CPU 자원이 서로 상충 되기 때문에 적절한 선에서 trade-off가 가능함을 나타낸다. 이에 따라 시스템을 동작시키기에 충분한 성능을 보장하면서도 최대한 사용자에게 많은 CPU의 자원을 할당할 수 있음을 확인할 수 있다.You can see that this time varies from a minimum of 10 us to a maximum of 70 us. Comparing with the above experimental results, it can be seen that the time taken for synchronization in case 3) is the largest among the time until the device control module 200 outputs the reference. This phenomenon occurs because the thread of the device control module 200 has the highest priority, and Sync. If the thread of the agent (400, AL) that captures the signal runs too fast, it consumes the CPU resources of the PC, so the trade-off is at the proper level because the performance of synchronization and the CPU resources to invest in the computation for motion generation are in conflict with each other. Indicates that is possible. As a result, it is possible to allocate enough CPU resources to the user while ensuring sufficient performance to operate the system.
이와 같이, 본 발명의 실시 예에 따르면, 상호 독립적인 프로세스를 갖는 복수의 에이전트와 상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리를 제공하고, 상기 레퍼런스를 이용하여 상기 하드웨어 디바이스로를 제어하는 별도의 디바이스 제어 모듈을 제공함으로써, 실시간성이 필요한 로봇 시스템에 있어서, 동일한 하드웨어 제어에 대한 여러 독립적 프로세스들이 공존할 수 있으면서도, 이에 따른 로봇의 동작이 안정적으로 제어될 수 있다. 또한, 각 에이전트를 독립적으로 개발하더라도, 공유 메모리를 통해 레퍼런스의 합성 및 선별이 가능하게 되어, 상호 충돌가능성을 줄일 수 있고 강인한 실시간성을 확보할 수 있다. 또한, 오류 발생시의 에이전트 대체 및 실시간 디버깅 등이 용이하게 되므로, 협업 편의성 및 확장성을 가져올 수 있다.As described above, according to an embodiment of the present disclosure, a plurality of agents having mutually independent processes and a shared memory in which references generated according to operations of the plurality of agents are stored are provided and provided to the hardware device using the references. By providing a separate device control module for controlling the, in a robot system requiring real-time, while several independent processes for the same hardware control can coexist, the operation of the robot can be stably controlled accordingly. In addition, even if each agent is independently developed, the reference memory can be synthesized and selected through the shared memory, thereby reducing the possibility of mutual collision and securing robust real-time. In addition, since agent replacement and real-time debugging are facilitated when an error occurs, collaboration convenience and scalability can be brought.
또한, 본 발명의 실시 예에 따르면, 프로세스들 간의 쓰레드 동기화에 있어서, 공유 메모리를 이용한 원 스텝 지연(One Step Delay) 처리 방법을 제공하여, 디바이스 제어 모듈과 에이전트 및 디바이스간 처리 지연을 최소화하고, 이에 따른 실시간 동기화 처리를 최적화함으로써, 출력 신호의 퀄리티 및 실시간성을 강화시키며, 보다 정교하고 오류 및 지터(Jitter)를 최소화하는 제어 시스템을 제공할 수 있다.In addition, according to an embodiment of the present invention, in the thread synchronization between processes, by providing a method for processing one step delay (One Step Delay) using a shared memory, to minimize the processing delay between the device control module and the agent and the device, By optimizing the real-time synchronization process accordingly, it is possible to provide a control system that enhances the quality and real-time of the output signal and further refines and minimizes errors and jitter.
한편, 상술한 본 발명에 따른 방법들은 컴퓨터에서 실행되기 위한 프로그램으로 제작되어 컴퓨터가 읽을 수 있는 기록 매체에 저장될 수 있으며, 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다.Meanwhile, the above-described methods according to the present invention may be stored in a computer-readable recording medium that is produced as a program for execution on a computer, and examples of the computer-readable recording medium include ROM, RAM, CD-ROM, Magnetic tapes, floppy disks, optical data storage devices, and the like, and also include those implemented in the form of carrier waves (eg, transmission over the Internet).
컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.The computer readable recording medium can be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. In addition, functional programs, codes, and code segments for implementing the method can be easily inferred by programmers in the art to which the present invention belongs.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형 실시가 가능한 것은 물론이고, 이러한 변형 실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.In addition, although the preferred embodiment of the present invention has been shown and described above, the present invention is not limited to the specific embodiments described above, but the technical field to which the invention belongs without departing from the spirit of the invention claimed in the claims. Of course, various modifications can be made by those skilled in the art, and these modifications should not be individually understood from the technical spirit or the prospect of the present invention.

Claims (20)

  1. 시스템 제어 방법에 있어서,In the system control method,
    공유 메모리를 이용하며, 상호 독립적인 프로세스를 갖는 복수의 에이전트들이 동작하는 단계;Operating a plurality of agents using a shared memory and having mutually independent processes;
    상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하는 단계; 및Obtaining hardware control data for controlling one or more devices from each reference generated from the plurality of agents and stored in the shared memory; And
    상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하는 단계를 포함하는Transmitting a control signal according to the reference to the one or more devices selected from the hardware control data.
    시스템 제어 방법.How to control your system.
  2. 제1항에 있어서,The method of claim 1,
    상기 하나 이상의 디바이스로부터 센서 데이터를 수신하는 단계;Receiving sensor data from the one or more devices;
    상기 수신된 센서 데이터를 이용하여 상기 공유 메모리를 업데이트하는 단계; 및Updating the shared memory using the received sensor data; And
    상기 복수의 에이전트들이 상기 센서 데이터에 따라 업데이트된 상기 레퍼런스를 상기 공유 메모리로 출력하는 단계를 더 포함하는Outputting, by the plurality of agents, the reference updated according to the sensor data to the shared memory;
    시스템 제어 방법.How to control your system.
  3. 제1항에 있어서,The method of claim 1,
    상기 공유 메모리는 관절 디바이스에 대응하는 모션 오너 변수를 포함하고,The shared memory includes a motion owner variable corresponding to the joint device,
    상기 모션 오너 변수는 상기 복수의 에이전트들 중 상기 관절 디바이스에 대한 권한을 갖는 하나의 에이전트을 나타내며,The motion owner variable represents one agent having authority to the joint device among the plurality of agents,
    상기 복수의 에이전트 중 오류가 발생된 에이전트가 존재하는 경우, 상기 오류가 발생된 에이전트의 동작을 중단시키는 단계; 및Stopping an operation of the agent in which an error occurs when an agent in error exists among the plurality of agents; And
    상기 오류가 발생된 에이전트에 대응하는 모션 오너 변수를 다른 에이전트 로 변경하는 단계를 포함하는Changing the motion owner variable corresponding to the agent in which the error occurred to another agent;
    시스템 제어 방법.How to control your system.
  4. 제1항에 있어서,The method of claim 1,
    상기 하드웨어 제어 데이터를 획득하는 단계는,Acquiring the hardware control data,
    상기 각각의 레퍼런스에 따른 하드웨어 추상화 데이터를 생성하는 단계;Generating hardware abstraction data according to each reference;
    상기 하나 이상의 디바이스에 대한 하드웨어 정보가 포함된 하드웨어 데이터베이스를 이용하여, 상기 하드웨어 추상화 데이터에 대응하는 제어 신호를 생성하는 단계; 및Generating a control signal corresponding to the hardware abstraction data by using a hardware database including hardware information about the one or more devices; And
    상기 제어 신호를 상기 하나 이상의 디바이스로 전달하는 단계를 포함하는Communicating the control signal to the one or more devices;
    시스템 제어 방법.How to control your system.
  5. 제1항에 있어서,The method of claim 1,
    상기 동작하는 단계, 획득하는 단계, 전달하는 단계, 수신하는 단계 및 업데이트하는 단계는 상기 시스템의 실시간 동작 주기에 대응하는 제1 주기 내에 모두 처리되는 것을 특징으로 하는Operating, acquiring, delivering, receiving and updating are all processed within a first period corresponding to a real-time operating period of the system.
    시스템 제어 방법.How to control your system.
  6. 시스템 제어 장치에 있어서,In the system control unit,
    상호 독립적인 프로세스를 갖는 복수의 에이전트;A plurality of agents having mutually independent processes;
    상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리; 및A shared memory storing a reference generated according to the operations of the plurality of agents; And
    상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하고, 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하는 디바이스 제어 모듈을 포함하는From each reference generated from the plurality of agents and stored in the shared memory, hardware control data for controlling one or more devices is obtained, and the control signal according to the reference is sent to the one or more devices selected from the hardware control data. Including a device control module for transmitting
    시스템 제어 장치.System control unit.
  7. 제6항에 있어서,The method of claim 6,
    상기 디바이스 제어 모듈은, 상기 하나 이상의 디바이스로부터 센서 데이터를 수신하고, 상기 수신된 센서 데이터를 이용하여 상기 공유 메모리를 업데이트하여, 상기 복수의 에이전트들이 상기 센서 데이터에 따라 업데이트된 상기 레퍼런스를 상기 공유 메모리로 출력하게 하는The device control module receives sensor data from the one or more devices, updates the shared memory using the received sensor data, and stores the reference in which the plurality of agents are updated according to the sensor data. Output to
    시스템 제어 장치.System control unit.
  8. 제6항에 있어서,The method of claim 6,
    상기 공유 메모리는 관절 디바이스에 대응하는 모션 오너 변수를 포함하고,The shared memory includes a motion owner variable corresponding to the joint device,
    상기 모션 오너 변수는 상기 복수의 에이전트들 중 상기 관절 디바이스에 대한 권한을 갖는 하나의 에이전트을 나타내며,The motion owner variable represents one agent having authority to the joint device among the plurality of agents,
    상기 복수의 에이전트 중 오류가 발생된 에이전트가 존재하는 경우, 상기 오류가 발생된 에이전트의 동작을 중단시키고, 상기 오류가 발생된 에이전트에 대응하는 모션 오너 변수를 다른 에이전트로 변경하는 사용자 시스템을 더 포함하는If there is an agent having an error among the plurality of agents, the user system for stopping the operation of the error-prone agent, and further comprises a user system for changing the motion owner variable corresponding to the agent with the error to another agent doing
    시스템 제어 장치.System control unit.
  9. 제6항에 있어서,The method of claim 6,
    상기 하나 이상의 디바이스에 대한 하드웨어 정보가 포함된 하드웨어 데이터베이스를 더 포함하고,Further comprising a hardware database containing hardware information for the one or more devices,
    상기 디바이스 제어 모듈은 상기 각각의 레퍼런스에 따른 하드웨어 추상화 데이터를 생성하고, 상기 하나 이상의 디바이스에 대한 하드웨어 정보가 포함된 하드웨어 데이터베이스를 이용하여, 상기 하드웨어 추상화 데이터에 대응하는 제어 신호를 생성하며, 상기 제어 신호를 상기 하나 이상의 디바이스로 전달하고,The device control module generates hardware abstraction data according to each reference, generates a control signal corresponding to the hardware abstraction data by using a hardware database including hardware information about the one or more devices, and controls the Transmit a signal to the one or more devices,
    상기 하드웨어 정보는 상기 디바이스의 리스트, 감속비, 엔코드 펄스, 구동기 채널 수, 통신 규약 정보 중 적어도 하나를 포함하는The hardware information includes at least one of a list of the device, a reduction ratio, an encoder pulse, a driver channel number, and communication protocol information.
    시스템 제어 장치.System control unit.
  10. 실시간 제어 시스템에 있어서,In a real time control system,
    상기 시스템의 관절 또는 센서 디바이스를 포함하는 하나 이상의 하드웨어 디바이스;One or more hardware devices including a joint or sensor device of the system;
    상기 제어 시스템과 연관하여 상호 독립적인 프로세스를 갖는 복수의 에이전트;A plurality of agents having processes independent of each other in association with the control system;
    상기 복수의 에이전트들의 동작에 따라 생성되는 레퍼런스가 저장되는 공유 메모리;A shared memory storing a reference generated according to the operations of the plurality of agents;
    상기 복수의 에이전트들로부터 생성되어 상기 공유 메모리에 저장된 각각의 레퍼런스로부터, 하나 이상의 디바이스 제어를 위한 하드웨어 제어 데이터를 획득하고, 상기 하드웨어 제어 데이터로부터 선택되는 상기 하나 이상의 디바이스로 상기 레퍼런스에 따른 제어 신호를 전달하되, 제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하고, 상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 상기 복수의 에이전트로 상기 상태 정보를 전달하며, 상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하고, 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달하는 디바이스 제어 모듈; 및From each reference generated from the plurality of agents and stored in the shared memory, hardware control data for controlling one or more devices is obtained, and the control signal according to the reference is sent to the one or more devices selected from the hardware control data. The state information of the current step is acquired from the controlling device, and the state information is transmitted to the plurality of agents processing a reference operation using the state information of the current step. A device control module which obtains reference information calculated in advance based on the information, and transmits the reference information to the device as a control signal corresponding to the current step; And
    상기 디바이스 제어 모듈과 상기 에이전트들의 실시간 동작 주기 및 실행 동작을 관리하는 사용자 시스템을 포함하는 실시간 제어 시스템.And a user system for managing real-time operating cycles and execution operations of the device control module and the agents.
  11. 시스템 제어 방법에 있어서,In the system control method,
    제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하는 단계;Obtaining state information of the current step from the controlling device;
    상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 하나 이상의 에이전트로 상기 상태 정보를 전달하는 단계;Transferring the status information to one or more agents processing a reference operation using the status information of the current step;
    상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하는 단계; 및Obtaining, from the agent, reference information calculated beforehand based on state information of a previous step; And
    상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달하는 단계를 포함하는Transmitting the reference information to the device as a control signal corresponding to the current step.
    실시간 시스템 제어 방법.Real time system control method.
  12. 제11항에 있어서,The method of claim 11,
    상기 상태 정보를 전달하는 단계는,Delivering the state information,
    상기 현재 스텝의 상태 정보를 공유 메모리에 업데이트하는 단계; 및Updating state information of the current step in a shared memory; And
    상기 상태 정보가 업데이트된 경우, 상기 하나 이상의 에이전트로 동기화 신호를 전송하는 단계를 포함하고,If the status information is updated, transmitting a synchronization signal to the one or more agents,
    상기 하나 이상의 에이전트는 상기 동기화 신호가 수신되면 상기 상태 정보를 상기 공유 메모리로부터 획득하여 다음 스텝을 위한 레퍼런스를 연산하는 것을 특징으로 하는The at least one agent acquires the state information from the shared memory when the synchronization signal is received and computes a reference for a next step
    시스템 제어 방법.How to control your system.
  13. 제11항에 있어서,The method of claim 11,
    상기 미리 연산된 레퍼런스 정보를 획득하는 단계는,Acquiring the pre-calculated reference information,
    상기 하나 이상의 에이전트가 미리 연산된 레퍼런스 정보를 공유 메모리에 업데이트하고 전송하는 응답 신호를 수신하는 단계; 및Receiving, by the one or more agents, a response signal for updating and transmitting pre-calculated reference information to shared memory; And
    상기 응답 신호가 수신된 에이전트의 레퍼런스 정보를 상기 공유 메모리로부터 획득하는 단계를 포함하는Obtaining reference information of an agent from which the response signal is received from the shared memory;
    시스템 제어 방법.How to control your system.
  14. 제11항에 있어서,The method of claim 11,
    다음 스텝을 위한 센서 데이터에 대한 요청 정보를 상기 제어 대상 디바이스로 전달하는 단계를 더 포함하는Transmitting request information for sensor data for a next step to the controlling device;
    시스템 제어 방법.How to control your system.
  15. 제11항에 있어서,The method of claim 11,
    상기 스텝 주기는 상기 디바이스 시스템의 디바이스 제어 모듈의 쓰레드와 유일하게 동기화되는 것을 특징으로 하는The step period is uniquely synchronized with a thread of a device control module of the device system.
    시스템 제어 방법.How to control your system.
  16. 시스템 제어 장치에 있어서,In the system control unit,
    제어 대상 디바이스로부터 현재 스텝의 상태 정보를 획득하고, 상기 현재 스텝의 상태 정보를 이용하여 레퍼런스 연산을 처리하는 하나 이상의 에이전트로 상기 상태 정보를 전달하는 디바이스 통신부; 및A device communication unit obtaining state information of a current step from a controlling device and transferring the state information to one or more agents which process a reference operation using the state information of the current step; And
    상기 에이전트로부터, 이전 스텝의 상태 정보에 기초하여 미리 연산된 레퍼런스 정보를 획득하는 레퍼런스 획득부를 포함하고,A reference obtaining unit which obtains, from the agent, reference information previously calculated based on state information of a previous step,
    상기 디바이스 통신부는 상기 레퍼런스 정보를 상기 현재 스탭에 대응되는 제어 신호로서 상기 디바이스로 전달하는The device communication unit transfers the reference information to the device as a control signal corresponding to the current staff.
    시스템 제어 장치.System control unit.
  17. 제16항에 있어서,The method of claim 16,
    상기 디바이스 통신부는 공유 메모리 접근부를 통해 상기 현재 스텝의 상태 정보를 공유 메모리에 업데이트하고,The device communication unit updates the state information of the current step in the shared memory through the shared memory access unit,
    상기 상태 정보가 업데이트된 경우, 상기 하나 이상의 에이전트로 동기화 신호를 전송하는 동기화 신호 처리부를 더 포함하는If the status information is updated, further comprising a synchronization signal processor for transmitting a synchronization signal to the at least one agent
    시스템 제어 장치.System control unit.
  18. 제16항에 있어서,The method of claim 16,
    상기 하나 이상의 에이전트는 상기 동기화 신호가 수신되면 상기 상태 정보를 상기 공유 메모리로부터 획득하여 다음 스텝을 위한 레퍼런스를 연산하고,When the synchronization signal is received, the one or more agents obtain the state information from the shared memory to calculate a reference for a next step,
    상기 레퍼런스 획득부는,The reference acquisition unit,
    상기 하나 이상의 에이전트가 미리 연산된 레퍼런스 정보를 공유 메모리에 업데이트하고 전송하는 응답 신호를 수신하고, 상기 응답 신호가 수신된 에이전트의 레퍼런스 정보를 상기 공유 메모리로부터 획득하는Receiving a response signal for the at least one agent updates and transmits the pre-calculated reference information to the shared memory, and obtaining the reference information of the agent received the response signal from the shared memory
    시스템 제어 장치.System control unit.
  19. 제16항에 있어서,The method of claim 16,
    상기 디바이스 통신부는 다음 스텝을 위한 센서 데이터에 대한 요청 정보를 상기 제어 대상 디바이스로 전달하는The device communication unit transmits request information for sensor data for a next step to the control target device.
    시스템 제어 장치.System control unit.
  20. 제16항에 있어서,The method of claim 16,
    상기 스텝 주기는 상기 디바이스 시스템 내에서 디바이스 제어 모듈의 쓰레드와 유일하게 동기화되는 것을 특징으로 하는The step period is uniquely synchronized with a thread of a device control module in the device system.
    시스템 제어 장치.System control unit.
PCT/KR2016/008031 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method WO2017052059A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201680054794.7A CN108025436B (en) 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method
US15/762,060 US11135719B2 (en) 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method
JP2018514269A JP6836585B2 (en) 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method
EP16848785.8A EP3354415A4 (en) 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562221215P 2015-09-21 2015-09-21
US62/221,215 2015-09-21
KR10-2016-0006426 2016-01-19
KR1020160006426A KR102235166B1 (en) 2015-09-21 2016-01-19 A realtime robot system, an appratus for controlling a robot system, and a method for controlling a robot system
KR1020160020775A KR102235167B1 (en) 2015-09-21 2016-02-22 A realtime device control system based on steps, an appratus for controlling a device system, and a method for controlling a device system based on steps
KR10-2016-0020775 2016-02-22

Publications (1)

Publication Number Publication Date
WO2017052059A1 true WO2017052059A1 (en) 2017-03-30

Family

ID=58386279

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/008031 WO2017052059A1 (en) 2015-09-21 2016-07-22 Real-time control system, real-time control device and system control method

Country Status (1)

Country Link
WO (1) WO2017052059A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443592A (en) * 2020-03-24 2020-07-24 上海卫星工程研究所 Method and system for transmitting control right state of equipment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10309685A (en) * 1997-05-12 1998-11-24 Kawasaki Heavy Ind Ltd Robot control device
KR20030081370A (en) * 2000-12-28 2003-10-17 로보틱 워크스페이스 테크놀로지스, 인크. Versatile robot control system
KR100520779B1 (en) * 2003-01-09 2005-10-12 삼성중공업 주식회사 Multi joints position control device uning fpga
KR20070083460A (en) * 2004-07-06 2007-08-24 엠베디오 인코포레이티드 Method and system for concurrent execution of multiple kernels
KR20130110289A (en) * 2012-03-29 2013-10-10 주식회사 엔티리서치 Surgical operation robot

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10309685A (en) * 1997-05-12 1998-11-24 Kawasaki Heavy Ind Ltd Robot control device
KR20030081370A (en) * 2000-12-28 2003-10-17 로보틱 워크스페이스 테크놀로지스, 인크. Versatile robot control system
KR100520779B1 (en) * 2003-01-09 2005-10-12 삼성중공업 주식회사 Multi joints position control device uning fpga
KR20070083460A (en) * 2004-07-06 2007-08-24 엠베디오 인코포레이티드 Method and system for concurrent execution of multiple kernels
KR20130110289A (en) * 2012-03-29 2013-10-10 주식회사 엔티리서치 Surgical operation robot

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3354415A4 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443592A (en) * 2020-03-24 2020-07-24 上海卫星工程研究所 Method and system for transmitting control right state of equipment

Similar Documents

Publication Publication Date Title
KR20170034753A (en) A realtime device control system based on steps, an appratus for controlling a device system, and a method for controlling a device system based on steps
WO2017052061A1 (en) Gpos-connected real-time robot control system and real-time device control system using same
WO2019156518A1 (en) Method for tracking hand pose and electronic device thereof
WO2017052060A1 (en) Real-time device control system having hierarchical architecture and real-time robot control system using same
US20210135836A1 (en) Control system and control device
CN107588726B (en) Optical instrumentation device
EP3462261A1 (en) Information processing apparatus, information processing method and program
CN112947384B (en) Multifunctional satellite simulation test system
WO2017052059A1 (en) Real-time control system, real-time control device and system control method
WO2020162715A1 (en) Electronic device, storage medium, and method for process scheduling
CN112154385B (en) Motion control program, motion control method, and motion control device
CN112236728B (en) Motion control program, motion control method, and motion control device
Ahn et al. Dual channel ethercat control system for 33-dof humanoid robot tocabi
CN111095138A (en) Control device, control method for control device, information processing program, and recording medium
Cho et al. The RTDEVS/CORBA environment for simulation-based design of distributed real-time systems
WO2020171472A1 (en) Electronic device and control method thereof
Matsui et al. Distributed real-time processing for humanoid robots
CN116318508A (en) EtherCAT slave station servo synchronization device, etherCAT slave station servo synchronization method, electronic equipment and storage medium
WO2019078469A1 (en) Electronic device and service providing method therefor
WO2021033861A1 (en) Integrated development cloud server and method for providing cloud-based integrated development environment for developing ultra-micro iot device software supporting interworking with iot service infrastructure
WO2023249361A1 (en) Method and apparatus for data synchronization in container-based multi-cluster environment
Li et al. Multi-tasking syetem design for multi-axis synchronous control of robot based on RTOS
WO2022075556A1 (en) Container-based method and system for augmenting and sharing robot intelligence
CN212019735U (en) General vision processing device of laser processing system and laser processing system
WO2023068436A1 (en) Automatic design device for xr-based mep facilities, and operating method therefor

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: 16848785

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2018514269

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15762060

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016848785

Country of ref document: EP