WO2024019475A1 - 로봇 제어를 위한 데이터 처리 장치 및 방법 - Google Patents

로봇 제어를 위한 데이터 처리 장치 및 방법 Download PDF

Info

Publication number
WO2024019475A1
WO2024019475A1 PCT/KR2023/010267 KR2023010267W WO2024019475A1 WO 2024019475 A1 WO2024019475 A1 WO 2024019475A1 KR 2023010267 W KR2023010267 W KR 2023010267W WO 2024019475 A1 WO2024019475 A1 WO 2024019475A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
modules
processor
processing device
data processing
Prior art date
Application number
PCT/KR2023/010267
Other languages
English (en)
French (fr)
Inventor
서일홍
김용년
고동욱
Original Assignee
코가로보틱스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코가로보틱스 주식회사 filed Critical 코가로보틱스 주식회사
Publication of WO2024019475A1 publication Critical patent/WO2024019475A1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Definitions

  • the embodiments below relate to a data processing device and method for robot control.
  • the Robot Operating System provides hardware abstraction, control of lower level devices, implementation of commonly used functions, message passing between processes, package management, libraries necessary for the development environment, and various development and debugging functions required when developing a robot application. Provide tools.
  • ROS is a robot platform like operating system for robot application development. It includes the hardware platform as a hardware abstraction, is a software platform to support robot application software development, and has functions such as an operating system that can be used on heterogeneous hardware.
  • ROS has problems such as low security, high overhead, and communication delay. Therefore, data processing technology that generates low overhead while maintaining high security is required.
  • Embodiments may provide data processing technology for robot control.
  • a data processing device for robot control includes a memory for storing data; and a processor that executes instructions stored in the memory, wherein the processor receives a detection result from a sensor driver and controls the robot according to the detection result by executing a single robot control program including a plurality of modules. It may process data transmission between the plurality of modules and generate a response signal in response to a change in data stored in the memory due to the processing of the data.
  • the plurality of modules directly access data stored in the memory to process the data, and transfer data between the plurality of modules using a virtual data bus based on a variable reference method,
  • the response signal may be implemented as a condition variable.
  • the data sharing method between the plurality of modules may be standardized.
  • the processor includes a sensor manager for managing sensors driven by the sensor driver; a module manager for managing the plurality of modules; a data sharing manager for sharing the data; And it may include a debugging manager for debugging the plurality of modules.
  • a data processing method for robot control includes receiving a detection result from a sensor driver; Controlling the robot according to the detection result by executing a robot control program including a plurality of modules; Processing data transmission between the plurality of modules; And a response signal may be generated in response to a change in data stored in the memory due to processing of the data.
  • Embodiments can provide high security, low overhead, and fast responsiveness when performing robot control by performing data processing using a standardized information exchange method.
  • the present invention can provide a means to enable collaborative programming through independent programs.
  • FIG. 1 shows a schematic block diagram of a data processing device according to an embodiment.
  • Figure 2 shows an example of a conventional collaboration method for robot control.
  • Figure 3 shows another example of a conventional collaboration method for robot control.
  • FIG. 4 shows an example of a collaborative method for robot control using the data processing device shown in FIG. 1.
  • Figure 5 is a diagram for explaining data processing operations.
  • FIG. 6 is a diagram for explaining a robot control process of the data processing device shown in FIG. 1.
  • Figure 7 is a diagram to explain the robot control solution.
  • Figure 8 is a diagram for explaining the process of measuring delay time.
  • Figure 9 shows delay time in a conventional data processing method.
  • FIG. 10 shows the delay time of the data processing device shown in FIG. 1.
  • FIG. 11 shows a flowchart of the operation of the data processing device shown in FIG. 1.
  • first or second may be used to describe various components, but these terms should be interpreted only for the purpose of distinguishing one component from another component.
  • a first component may be named a second component, and similarly, the second component may also be named a first component.
  • module used in this document may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit, for example.
  • a module may be an integrated part or a minimum unit of the parts or a part thereof that performs one or more functions.
  • the module may be implemented in the form of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • ' ⁇ unit' refers to software or hardware components such as FPGA or ASIC, and ' ⁇ unit' performs certain roles.
  • ' ⁇ part' is not limited to software or hardware.
  • the ' ⁇ part' may be configured to reside in an addressable storage medium and may be configured to reproduce on one or more processors.
  • ' ⁇ part' refers to software components, object-oriented software components, components such as class components and task components, processes, functions, properties, procedures, May include subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables.
  • components and 'parts' may be combined into a smaller number of components and 'parts' or may be further separated into additional components and 'parts'. Additionally, components and 'parts' may be implemented to regenerate one or more CPUs within a device or a secure multimedia card. Additionally, ' ⁇ part' may include one or more processors.
  • FIG. 1 shows a schematic block diagram of a data processing device according to an embodiment.
  • the data processing device 10 can process data.
  • the data processing device 10 may refer to data encoded and numbered in a form that can operate a program. Data can be in the form of letters, numbers, sounds, pictures, etc. that a computer can process.
  • the data processing device 10 can perform data processing for robot control.
  • the data processing device 10 can generate signals for robot control.
  • the data processing device 10 can transmit data to an application for robot control.
  • Applications for robot control may include a backend application, a frontend application, and a remote application.
  • the data processing device 10 can provide a standardized development environment to a plurality of developers.
  • the data processing device 10 can standardize the data sharing method and perform data processing based on the standardized sharing method.
  • the data processing device 10 may be implemented with a printed circuit board (PCB) such as a motherboard, an integrated circuit (IC), or a system on chip (SoC).
  • PCB printed circuit board
  • IC integrated circuit
  • SoC system on chip
  • the data processing device 10 may be implemented as an application processor.
  • the data processing device 10 may be implemented within a personal computer (PC), a data server, or a portable device.
  • PC personal computer
  • data server data server
  • portable device a portable device
  • Portable devices include laptop computers, mobile phones, smart phones, tablet PCs, mobile internet devices (MIDs), personal digital assistants (PDAs), and enterprise digital assistants (EDAs). , digital still camera, digital video camera, portable multimedia player (PMP), personal navigation device or portable navigation device (PND), handheld game console, e-book ( It can be implemented as an e-book) or a smart device.
  • a smart device may be implemented as a smart watch, smart band, or smart ring.
  • the data processing device 10 includes a processor 100 and a memory 200.
  • Processor 100 may receive data. Processor 100 may receive data from external sources or memory 200. Processor 100 may include a receiving interface.
  • the processor 100 may process data stored in the memory 200.
  • the processor 100 may execute computer-readable code (eg, software) stored in the memory 200 and instructions triggered by the processor 100 .
  • the “processor 100” may be a data processing device implemented in hardware that has a circuit with a physical structure for executing desired operations.
  • the intended operations may include code or instructions included in the program.
  • data processing devices implemented in hardware include microprocessors, central processing units, processor cores, multi-core processors, and multiprocessors.
  • microprocessors central processing units
  • processor cores multi-core processors
  • multiprocessors multiprocessors.
  • ASIC Application-Specific Integrated Circuit
  • FPGA Field Programmable Gate Array
  • the processor 100 may receive the detection result from the sensor driver.
  • the processor 100 may control the robot according to the detection result by executing a robot control program including a plurality of modules.
  • a plurality of modules may directly access data stored in the memory 200 and process the data.
  • the processor 100 can process data transmission between a plurality of modules.
  • the processor 100 may process data transmission between the plurality of modules using a virtual data bus based on a variable reference method.
  • the processor 100 may generate a response signal in response to a change in data stored in the memory 200 due to data processing.
  • the response signal may be composed of a condition variable.
  • the processor 100 may include a sensor manager for managing sensors driven by a sensor driver and a module manager for managing a plurality of modules.
  • the processor 100 may include a data sharing manager for sharing data and a debugging manager for debugging a plurality of modules.
  • the sensor manager, module manager, shared manager, and debugging manager are described in detail with reference to FIG. 7.
  • Memory 200 can store data.
  • the memory 200 may store instructions (or programs) executable by the processor 100 .
  • the instructions may include instructions for executing the operation of the processor and/or the operation of each component of the processor.
  • the memory 200 may be implemented as a volatile memory device or a non-volatile memory device.
  • Volatile memory devices may be implemented as dynamic random access memory (DRAM), static random access memory (SRAM), thyristor RAM (T-RAM), zero capacitor RAM (Z-RAM), or twin transistor RAM (TTRAM).
  • DRAM dynamic random access memory
  • SRAM static random access memory
  • T-RAM thyristor RAM
  • Z-RAM zero capacitor RAM
  • TTRAM twin transistor RAM
  • Non-volatile memory devices include EEPROM (Electrically Erasable Programmable Read-Only Memory), flash memory, MRAM (Magnetic RAM), Spin-Transfer Torque (STT)-MRAM (MRAM), and Conductive Bridging RAM (CBRAM). , FeRAM (Ferroelectric RAM), PRAM (Phase change RAM), Resistive RAM (RRAM), Nanotube RRAM (Nanotube RRAM), Polymer RAM (PoRAM), Nano Floating Gate Memory (NFGM), holographic memory, molecular electronic memory device, or insulation resistance change memory.
  • EEPROM Electrically Erasable Programmable Read-Only Memory
  • flash memory includes MRAM (Magnetic RAM), Spin-Transfer Torque (STT)-MRAM (MRAM), and Conductive Bridging RAM (CBRAM).
  • FeRAM Feroelectric RAM
  • PRAM Phase change RAM
  • Resistive RAM RRAM
  • Nanotube RRAM Nanotube RRAM
  • Polymer RAM PoRAM
  • NFGM Nano Floating Gate
  • Figure 2 shows an example of a conventional collaboration method for robot control
  • Figure 3 shows another example of a conventional collaboration method for robot control.
  • the conventional robot control system is implemented as a plurality of independent programs (e.g., Program 1 (210), Program 2 (230), Program 1 (310), or Program 2 (330). You can. These independent programs were prohibited from accessing each other at the OS (Operating System) level.
  • OS Operating System
  • the programs need to share information with each other.
  • a random developer e.g. Developer 1
  • another developer e.g. Developer 2
  • the development of the application was accomplished by delivering it in a specific type received. If a new developer developed a task, re-negotiation between developers was necessary.
  • a robot software framework based on ROS can standardize information sharing methods.
  • ROS Robot Operating System
  • developers can perform development according to the standards set by ROS, so they can perform development independently without the need to make promises or negotiate I/O (input/output) with other developers.
  • I/O input/output
  • various developers can configure the system by switching modules, and renegotiation may not be necessary even when a new developer develops a task.
  • ROS is a platform for developers and focuses on scalability rather than performance, so security is low and communication overhead and communication delays may occur.
  • FIG. 4 shows an example of a collaborative method for robot control using the data processing device shown in FIG. 1.
  • a processor may implement a robot control framework using one program (e.g., single program 1 (410)).
  • the processor 200 may enable direct information exchange between module 1 (411) and module 2 (413) using a single program (410).
  • the processor 100 can improve security in data transmission between modules (eg, module 1 (411) and module 2 (413)), eliminate overhead, and reduce communication delay.
  • modules eg, module 1 (411) and module 2 (413)
  • the processor 100 can provide a development environment such as standardized communication by standardizing the information exchange method between modules.
  • the processor 100 can enable developers of different modules to independently perform development using a standardized information exchange method. Through this, the processor 100 can facilitate module switching.
  • the processor 100 can process data transmission between module 1 (411) and module 2 (413) using a virtual communication method.
  • the processor 100 may process data transfer between the plurality of modules using a virtual data bus based on a variable reference method.
  • the processor 100 can contribute to commercial use for robotic system development by achieving high security, low overhead, and fast responsiveness. By using a plurality of modules included in a single program, the processor 100 can perform development without renegotiation even when a new developer develops a task, and can configure a robot control system by switching modules of various developers. It can be made to be so.
  • Figure 5 is a diagram for explaining data processing operations.
  • module 1 510 and modules 530 can exchange data through communication with each other.
  • data and related signals are directly transmitted and received in the form of packets through the TCP/IP method, so that communication can be performed between the modules 510 and 530.
  • each module 510 and 530 can accurately recognize when data is transmitted and received.
  • communication overhead may occur. For example, in a situation where module 1 (510) must transmit data to N separate modules, the communication load on module 1 (510) may increase exponentially, and data is transmitted utilizing communication, There may be a problem of lowering external security.
  • module 2 550 which transmits data, records data to be transmitted in the shared memory, and modules 570 that receive data directly record the data to be transmitted in the shared memory. You can access and use the recorded data.
  • Shared memory may refer to memory shared between the modules 550 and 570 and accessible to all modules. Since the modules 570 that receive data cannot immediately know in real time when module 2 (550), which provides data, records data in the shared memory, additional means are required to utilize the data immediately at the time the data is recorded. may be requested.
  • the processor may transmit a signal 580 indicating that data has been written to memory to the modules 570 in the form of a condition variable.
  • the modules 570 send a signal 580 indicating that data has been passed to the modules 570 to module 2 550 in a condition variable manner. It can be delivered.
  • the processor can share data between modules by sending a signal between modules about whether data is written or whether data is acquired, conditional on data being written to or from memory through the module. You can.
  • the time when data is recorded and when it is acquired is transmitted to the modules 550 and 570 in real time through the signal 580, so that in the process of utilizing the data immediately when the data is recorded in the shared memory, Data transmission can be accomplished without additional means (e.g., for loop method).
  • additional means e.g., for loop method.
  • FIG. 6 is a diagram for explaining a robot control process of the data processing device shown in FIG. 1.
  • a processor may process data using middleware.
  • the processor 100 may operate middleware on an operating system (OS) 670.
  • OS operating system
  • the OS 670 may include Linux or Windows.
  • Middleware can exchange data with a backend application 611, a frontend application 613, and/or a remote application 615.
  • Middleware may receive detection results from the sensor drive 630. Detection results can be transmitted via a data bus.
  • Middleware may include a robot control structure 650 composed of a single program.
  • a single program may include multiple modules (e.g., module 1 651 and module 2 653).
  • Module 1 651 and module 2 653 may exchange data through a virtual data bus.
  • the Middleware can be implemented as PIM (Program Internal Middleware).
  • the processor 100 can eliminate communication overhead by using PIM. Additionally, by using PIM, costs can be reduced as it can be implemented on low-cost, low-performance CPUs (Central Processing Units).
  • the processor 100 can provide an independent development environment for each module and can be applied to various robots.
  • Figure 7 is a diagram for explaining a robot control solution to which a method according to an embodiment is applied.
  • a processor may process data using middleware.
  • Middleware may include a robot control solution 710.
  • the robot control solution 710 includes a grid cell containing a metric map 711, a place cell containing a location awareness map 712, and a spatial view cell containing a semantic map 713 ( may include a spatial view cell).
  • the robot control solution 710 may include a global path planner 714, a switchable local path planner, and a person tracking map 716.
  • Place cells and grid cells can cooperate with each other to improve location accuracy and prevent location loss.
  • grid cells and place cells can provide kidnapping-free functionality.
  • the robot control solution 710 can exchange data with a plurality of managers through the data bus 730.
  • the plurality of managers may include a sensor manager 751, a module manager 753, a data sharing manager 755, and a debugging manager 757.
  • the sensor manager 751 can manage sensor status and sensor data.
  • the module manager 753 may include sensor configuration, module selector, and error level selector.
  • the data sharing manager 755 can process data requests and responses, and manage publishing and subscribing to data.
  • the data sharing manager 755 can manage callbacks.
  • the debugging manager 757 can manage module hyperparameters and module debuggers.
  • FIG. 8 is a diagram for explaining the process of measuring delay time
  • FIG. 9 shows the delay time in a conventional data processing method
  • FIG. 10 shows the delay time of the data processing device shown in FIG. 1.
  • the image publisher 810 and the image subscriber 830 can transmit images at 10Hz.
  • the image subscriber 830 may transmit the received time to the image publisher 810.
  • a processor may calculate the delay time (e.g., dt) by subtracting the received time from the local time. For example, the processor can calculate the delay time as shown in Equation 1.
  • received time may mean the received time
  • the conventional method of FIG. 9 had a delay time of about 0.005 seconds, and the data processing device of FIG. 10 (e.g., the data processing device 10 of FIG. 1) had a delay time of 0.0007 seconds. In other words, the data processing device 10 can reduce the delay time to about 1/7.
  • FIG. 11 shows a flowchart of the operation of the data processing device shown in FIG. 1.
  • a processor may receive a detection result from a sensor driver (1110).
  • the processor 100 may control the robot according to the detection result by executing a robot control program including a plurality of modules (1130).
  • a plurality of modules may directly access data stored in the memory 200 and process the data.
  • the processor 100 may process data transmission between a plurality of modules (1150).
  • the processor 100 may process data transmission between the plurality of modules using a virtual data bus based on a variable reference method.
  • the method of transmitting data may be the same as the method described above.
  • the processor 100 may generate a response signal in response to a change in data stored in the memory 200 due to data processing (1170).
  • the response signal can be implemented as a condition variable.
  • the processor 100 may include a sensor manager for managing sensors driven by a sensor driver and a module manager for managing a plurality of modules.
  • the processor 100 may include a data sharing manager for sharing data and a debugging manager for debugging a plurality of modules.
  • devices and components described in embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), etc. , may be implemented using one or more general-purpose or special-purpose computers, such as a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions.
  • a processing device may execute an operating system (OS) and one or more software applications that run on the operating system. Additionally, a processing device may access, store, manipulate, process, and generate data in response to the execution of software.
  • OS operating system
  • a processing device may access, store, manipulate, process, and generate data in response to the execution of software.
  • a single processing device may be described as being used; however, those skilled in the art will understand that a processing device includes multiple processing elements and/or multiple types of processing elements. It can be seen that it may include.
  • a processing device may include a plurality of processors or one processor and one controller. Additionally, other processing configurations, such as parallel processors, are possible.
  • Software may include a computer program, code, instructions, or a combination of one or more of these, which may configure a processing unit to operate as desired, or may be processed independently or collectively. You can command the device.
  • Software and/or data may be used on any type of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or to provide instructions or data to a processing device. , or may be permanently or temporarily embodied in a transmitted signal wave.
  • Software may be distributed over networked computer systems and stored or executed in a distributed manner.
  • Software and data may be stored on one or more computer-readable recording media.
  • the method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium.
  • the computer-readable medium may include program instructions, data files, data structures, etc., singly or in combination.
  • Program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and available to those skilled in the art of computer software.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks.
  • program instructions include machine language code, such as that produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter, etc.
  • the hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Manipulator (AREA)

Abstract

로봇 제어를 위한 데이터 처리 장치 및 방법이 개시된다. 로봇 제어를 위한 데이터 처리 장치에 있어서, 일 실시예에 따른 데이터 처리 장치는, 데이터를 저장하는 메모리와, 상기 메모리에 저장된 인스트럭션을 수행하는 프로세서를 포함하고, 상기 프로세서는, 센서 드라이버로부터 감지 결과를 수신하고, 복수의 모듈을 포함하는 로봇 제어 프로그램을 실행함으로써 상기 감지 결과에 따라 로봇을 제어하고, 상기 복수의 모듈 간의 데이터 전송을 처리하고, 상기 데이터의 처리에 의한 상기 메모리에 저장된 데이터의 변경에 응답하여 응답 신호를 생성한다.

Description

로봇 제어를 위한 데이터 처리 장치 및 방법
아래 실시예들은 로봇 제어를 위한 데이터 처리 장치 및 방법에 관한 것이다.
로봇 운영체제(ROS,Robot Operating System)는 로봇 응용 프로그램을 개발할 때 필요한 하드웨어 추상화, 하위 디바이스 제어, 일반적으로 사용되는 기능의 구현, 프로세스간의 메시지 패싱, 패키지 관리, 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구를 제공한다.
ROS는 로봇 응용 프로그램 개발을 위한 운영체제와 같은 로봇 플랫폼이다. 하드웨어 플랫폼을 하드웨어 추상화로 포함하고 있으며, 로봇 응용 소프트웨어 개발을 지원을 위한 소프트웨어 플랫폼이면서 이기종의 하드웨어에서 사용 가능한 운영 체제와 같은 기능을 갖추고 있다.
하지만, ROS는 보안성이 낮고, 높은 오버헤드가 발생하고, 통신 지연이 발생한다는 문제가 있다. 따라서, 높은 보안성을 유지하면서 낮은 오버헤드를 발생시키는 데이터 처리 기술이 요구된다.
실시예들은 로봇 제어를 위한 데이터 처리 기술을 제공할 수 있다.
다만, 기술적 과제는 상술한 기술적 과제들로 한정되는 것은 아니며, 또 다른 기술적 과제들이 존재할 수 있다.
일 실시예에 따른 로봇 제어를 위한 데이터 처리 장치는, 데이터를 저장하는 메모리; 및 상기 메모리에 저장된 인스트럭션을 수행하는 프로세서를 포함하고,상기 프로세서는, 센서 드라이버로부터 감지 결과를 수신하고, 복수의 모듈을 포함하는 단일 로봇 제어 프로그램을 실행함으로써 상기 감지 결과에 따라 로봇을 제어하고, 상기 복수의 모듈 간의 데이터 전송을 처리하고, 상기 데이터의 처리에 의한 상기 메모리에 저장된 데이터의 변경에 응답하여 응답 신호를 생성할 수 있다.
상기 복수의 모듈은, 상기 메모리에 저장된 데이터에 직접적으로 접근하여 상기 데이터를 처리하고, 변수 참조 방식에 기초한 가상 데이터 버스(virtual data bus)를 이용하여 상기 복수의 모듈 간의 데이터를 전송을 처리하고, 상기 응답 신호는, 조건 변수(condition variable)로 구현될 수 있다.
상기 복수의 모듈은, 상호간의 데이터 공유 방식이 표준화될 수 있다.
상기 프로세서는, 상기 센서 드라이버로 구동되는 센서를 관리하기 위한 센서 매니저; 상기 복수의 모듈을 관리하기 위한 모듈 매니저; 상기 데이터의 공유를 위한 데이터 공유 매니저; 및 상기 복수의 모듈을 디버깅 하기 위한 디버깅 매니저를 포함할 수 있다.
일 실시예에 따른 로봇 제어를 위한 데이터 처리 방법은, 센서 드라이버로부터 감지 결과를 수신하는 단계; 복수의 모듈을 포함하는 로봇 제어 프로그램을 실행함으로써 상기 감지 결과에 따라 로봇을 제어하는 단계; 상기 복수의 모듈 간의 데이터 전송을 처리하는 단계; 및 상기 데이터의 처리에 의한 메모리에 저장된 데이터의 변경에 응답하여 응답 신호를 생성할 수 있다.
실시예들은 표준화된 정보 교환 방식을 이용하여 데이터 처리를 수행함으로써 로봇 제어를 수행함에 있어서 높은 보안성, 낮은 오버헤드 및 빠른 응답성을 제공할 수 있다.
본 발명에 따른 데이터 표준화 기술 및 운용 지원 기술을 적용함에 따라, 서로 독립적으로 작성된 다수의 프로그램들이 조정 과정 및 프로그램 간의 통신 없이도, 하나의 컴퓨팅 시스템 내에 프로그램들 간에 통신을 통해 동작하는 것과 동일하게 운용될 수 있다. 이를 통해 본원 발명은 독립적인 프로그램을 통한 협업 프로그래밍이 가능케하는 수단을 제공할 수 있다.
도 1은 일 실시예에 따른 데이터 처리 장치의 개략적인 블록도를 나타낸다.
도 2는 로봇 제어를 위한 종래의 협업 방식의 일 예를 나타낸다.
도 3은 로봇 제어를 위한 종래의 협업 방식의 다른 예를 나타낸다.
도 4는 도 1에 도시된 데이터 처리 장치를 이용한 로봇 제어를 위한 협업 방식의 예를 나타낸다.
도 5는 데이터 처리 동작을 설명하기 위한 도면이다.
도 6은 도 1에 도시된 데이터 처리 장치의 로봇 제어 과정을 설명하기 위한 도면이다.
도 7은 로봇제어 솔루션을 설명하기 위한 도면이다.
도 8은 지연 시간을 측정하는 과정을 설명하기 위한 도면이다.
도 9는 종래의 데이터 처리 방식에서의 지연 시간을 나타낸다.
도 10은 도 1에 도시된 데이터 처리 장치의 지연 시간을 나타낸다.
도 11은 도 1에 도시된 데이터 처리 장치의 동작의 흐름도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 예를 들어, '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 또한, '~부'는 하나 이상의 프로세서를 포함할 수 있다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 데이터 처리 장치의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 장치(10)는 데이터를 처리할 수 있다. 데이터 처리 장치(10)는 프로그램을 운용할 수 있는 형태로 기호화, 숫자화한 자료를 의미할 수 있다. 데이터는 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 등의 형태로 이루어질 수 있다.
데이터 처리 장치(10)는 로봇 제어를 위하여 데이터 처리를 수행할 수 있다. 데이터 처리 장치(10)는 로봇 제어를 위한 신호를 생성할 수 있다.
데이터 처리 장치(10)는 로봇 제어를 위한 어플리케이션에 데이터를 전달할 수 있다. 로봇 제어를 위한 어플리케이션은 백엔드 어플리케이션(backend application), 프론트엔드 어플리케이션(frontend application) 및 리모트 어플리케이션(remote application)을 포함할 수 있다.
데이터 처리 장치(10)는 복수의 개발자에게 표준화된 개발 환경을 제공할 수 있다. 데이터 처리 장치(10)는 데이터의 공유 방법을 표준화하고, 표준화된 공유 방법에 기초하여 데이터 처리를 수행할 수 있다.
데이터 처리 장치(10)는 마더보드(motherboard)와 같은 인쇄 회로 기판(printed circuit board(PCB)), 집적 회로(integrated circuit(IC)), 또는 SoC(system on chip)로 구현될 수 있다. 예를 들어, 데이터 처리 장치(10)는 애플리케이션 프로세서(application processor)로 구현될 수 있다.
또한, 데이터 처리 장치(10)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.
휴대용 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 스마트 디바이스(smart device)로 구현될 수 있다. 스마트 디바이스는 스마트 와치(smart watch), 스마트 밴드(smart band), 또는 스마트 링(smart ring)으로 구현될 수 있다.
데이터 처리 장치(10)는 프로세서(100) 및 메모리(200)를 포함한다.
프로세서(100)는 데이터를 수신할 수 있다. 프로세서(100)는 외부 또는 메모리(200)로부터 데이터를 수신할 수 있다. 프로세서(100)는 수신 인터페이스를 포함할 수 있다.
프로세서(100)는 메모리(200)에 저장된 데이터를 처리할 수 있다. 프로세서(100)는 메모리(200)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(100)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서(100)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(100)는 센서 드라이버로부터 감지 결과를 수신할 수 있다.
프로세서(100)는 복수의 모듈을 포함하는 로봇 제어 프로그램을 실행함으로써 감지 결과에 따라 로봇을 제어할 수 있다.
복수의 모듈은 메모리(200)에 저장된 데이터에 직접적으로 접근하여 데이터를 처리할 수 있다.
프로세서(100)는 복수의 모듈 간의 데이터 전송을 처리할 수 있다. 프로세서(100)는 변수 참조 방식에 기초한 가상 데이터 버스(virtual data bus)를 이용하여 상기 복수의 모듈 간의 데이터를 전송을 처리할 수 있다.
프로세서(100)는 데이터의 처리에 의한 메모리(200)에 저장된 데이터의 변경에 응답하여 응답 신호를 생성할 수 있다. 응답 신호는 조건 변수(condition variable)로 구성될 수 있다.
프로세서(100)는 센서 드라이버로 구동되는 센서를 관리하기 위한 센서 매니저 및 복수의 모듈을 관리하기 위한 모듈 매니저를 포함할 수 있다. 프로세서(100)는 데이터의 공유를 위한 데이터 공유 매니저 및 복수의 모듈을 디버깅 하기 위한 디버깅 매니저를 포함할 수 있다. 센서 매니저, 모듈 매니저, 공유 매니저 및 디버깅 매니저는 도 7을 참조하여 자세하게 설명한다.
메모리(200)는 데이터를 저장할 수 있다. 메모리(200)는 프로세서(100)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(200)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 2는 로봇 제어를 위한 종래의 협업 방식의 일 예를 나타내고, 도 3은 로봇 제어를 위한 종래의 협업 방식의 다른 예를 나타낸다.
도 2 및 도 3을 참조하면, 종래의 로봇 제어 시스템은 복수의 독립적인 프로그램(예: 프로그램 1(210), 프로그램 2(230), 프로그램 1(310) 또는 프로그램 2(330))으로 구현될 수 있다. 이러한 독립적인 프로그램은 OS(Operating System) 차원에서 서로 접근이 금지되어 있었다.
복수의 독립적인 프로그램으로 하나의 어플리케이션을 제작하기 위해서는, 프로그램이 서로의 정보를 공유할 필요가 있다. 기존의 협업 방식에서는 임의의 개발자(예: 개발자 1)가 태스크 정보를 특정 유형(type) 및 인터페이스(interface)로 다른 개발자(예: 개발자 2)에게 제공하고, 다른 개발자가 자신의 현재 상태를 전달받은 특정 유형으로 전달함으로써 어플리케이션의 개발이 이루어졌다. 만약 새로운 개발자가 태스크를 개발하는 경우, 개발자 간의 재협의가 필요하였다.
ROS(Robot Operating System) 기반 로봇 소프트웨어 프레임워크(framework)는 정보 공유 방법을 표준화할 수 있다. ROS를 이용할 경우, 개발자들은 ROS가 정해준 규격대로 개발을 수행할 수 있어 다른 개발자들과 약속을 하거나 I/O(input/output)를 협의할 필요 없이 각각 독립적으로 개발을 수행할 수 있다. 즉, ROS의 경우, 다양한 개발자들이 모듈을 스위칭하면서 시스템을 구성할 수 있고, 새로운 개발자가 태스크를 개발하는 경우에도 재협의가 필요하지 않을 수 있다.
다만, ROS는 개발자들을 위한 플랫폼으로, 성능 보다는 확장성에 중점을 두고 있어서 보안성이 낮고, 통신 오버헤드 및 통신 지연이 발생할 수 있다.
도 4는 도 1에 도시된 데이터 처리 장치를 이용한 로봇 제어를 위한 협업 방식의 예를 나타낸다.
도 4를 참조하면, 프로세서(예: 도 1의 프로세서(100))는 하나의 프로그램(예: 단일 프로그램 1(410))을 이용하여 로봇 제어 프레임 워크를 구현할 수 있다. 프로세서(200)는 단일 프로그램 1(410)을 이용하여 모듈 1(411)과 모듈 2(413) 사이의 직접적인 정보 교환을 가능하게 할 수 있다.
이를 통해, 프로세서(100)는 모듈들(예: 모듈 1(411) 및 모듈 2(413)) 간의 데이터 전송에 있어서 보안성을 향상시키고, 오버헤드를 없애면서 통신 지연도 감소시킬 수 있다.
프로세서(100)는 모듈들 간의 정보 교환 방식을 표준화함으로써 표준화된 통신을 하는 것과 같은 개발 환경을 제공할 수 있다. 프로세서(100)는 표준화된 정보 교환 방식을 이용하여 서로 다른 모듈의 개발자들이 독립적으로 개발을 수행할 수 있도록 할 수 있다. 이를 통해, 프로세서(100)는 모듈 스위칭을 용이하게 할 수 있다.
프로세서(100)는 가상 통신 방식으로 모듈 1(411)과 모듈 2(413) 간의 데이터 전송을 처리할 수 있다. 프로세서(100)는 변수 참조 방식에 기초한 가상 데이터 버스를 이용하여 상기 복수의 모듈 간의 데이터를 전송을 처리할 수 있다.
프로세서(100)는 높은 보안성, 낮은 오버헤드 및 빠른 응답성을 달성함으로써 로봇 시스템 개발을 위한 상업적 사용에 이바지할 수 있다. 프로세서(100)는 단일 프로그램에 포함되는 복수의 모듈을 이용함으로써 새로운 개발자가 태스크를 개발하는 경우에도 재협의 없이 개발을 수행하도록 할 수 있고, 다양한 개발자들의 모듈을 스위칭하면서 로봇 제어 시스템을 구성할 수 있도록 만들 수 있다.
도 5는 데이터 처리 동작을 설명하기 위한 도면이다.
도 5를 참조하면, ROS를 이용할 경우, 모듈 1(510)과 모듈들(530)은 서로 통신을 통해 데이터를 주고받을 수 있다. 이 때, 데이터 및 관련 신호는 TCP/IP 방식을 통해 패킷의 형태로 직접 송수신됨으로써, 모듈(510, 530) 간에 통신이 수행될 수 있다. 이때 모듈 간의 데이터가 통신을 통해 직접 송수신되기 때문에 각각의 모듈(510, 530)이 데이터가 송수신되는 시점을 정확히 인식할 수 있으나, 대용량 데이터 송수신의 경우 통신 오버헤드가 발생될 수 있다. 예를 들어, 모듈 1(510)이 N 개의 별도 모듈에 데이터를 전송해야하는 상황의 경우, 모듈 1(510)에 대한 통신 부하가 기하급수적으로 늘어날 수 있으며, 통신을 활용하여 데이터가 전송되는 바, 외부 보안성이 낮아지는 문제가 있을 수 있다.
반면, 프로세서(예: 도 1의 프로세서(100))는 데이터를 전송하는 모듈 2(550)가 공유 메모리에 전송하고자 하는 데이터를 기록하고, 데이터를 수신하는 모듈들(570)이 공유 메모리에 직접 접근하여 기록된 데이터를 활용할 수 있다. 공유 메모리는 모듈들(550, 570) 사이에서 공유되어 모든 모듈이 접근 가능한 메모리를 의미할 수 있다. 데이터를 수신하는 모듈들(570)은 데이터를 제공하는 모듈 2(550)가 공유 메모리에 데이터를 기록한 시점을 실시간으로 바로 알 수 없으므로, 데이터가 기록된 시점에 바로 데이터를 활용하기 위해 추가적인 수단이 요구될 수 있다. 프로세서는 모듈 2(550)가 데이터를 메모리에 기록함과 더불어, 데이터가 메모리에 기록된 것을 나타내는 신호(580)를 조건 변수의 형태로 모듈들(570)에 전송할 수 있다. 반대로, 모듈들(570)이 기록된 데이터를 획득하는 상황에서, 모듈들(570)는 데이터가 모듈들(570)에 전달된 것을 나타내는 신호(580)를 조건 변수 방식으로 모듈 2(550)에 전달할 수 있다. 예를 들어, 프로세서는 모듈을 통해 메모리에 데이터가 기록되거나, 메모리로부터 데이터가 기록되는 것을 조건으로 하여, 데이터 기록 여부 또는 데이터 획득 여부에 대한 신호를 모듈 간에 송신하는 방식으로 모듈 간 데이터를 공유할 수 있다.
위 방식을 통해 데이터가 기록된 시점 및 획득된 시점이 신호(580)를 통해 실시간으로 모듈(550, 570)에 전송됨으로써, 공유 메모리에 데이터가 기록된 시점에 바로 데이터를 활용하기 위한 과정에서, 추가적인 수단(예를 들어, for loop 방식) 없이도 데이터 전송이 이루어질 수 있다. 이를 통해 통신 지연 및 보안성이 향상된 통신 방식이 제공될 수 있다.
도 6은 도 1에 도시된 데이터 처리 장치의 로봇 제어 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 프로세서(예: 도 1의 프로세서(100))는 미들웨어를 이용하여 데이터를 처리할 수 있다. 프로세서(100)는 OS(Operating System)(670) 상에서 미들웨어를 동작시킬 수 있다. 예를 들어, OS(670)는 리눅스(Linux) 또는 윈도우(Windows)를 포함할 수 있다.
미들웨어는 백엔드(backend) 어플리케이션(611), 프론트엔드(frontend) 어플리케이션(613) 및/또는 리모트(remote) 어플리케이션(615)과 데이터를 주고받을 수 있다.
미들웨어는 센서 드라이브(630)로부터 감지 결과를 수신할 수 있다. 감지 결과는 데이터 버스를 통해 전송될 수 있다. 미들웨어는 단일 프로그램으로 구성된 로봇 제어 구조(650)를 포함할 수 있다. 단일 프로그램은 복수의 모듈(예: 모듈 1(651) 및 모듈 2(653)을 포함할 수 있다. 모듈 1(651) 및 모듈 2(653)는 가상 데이터 버스를 통해 데이터를 주고받을 수 있다.
미들웨어는 PIM(Program Internal Middleware)로 구현될 수 있다. 프로세서(100)는 PIM을 이용하여 통신 오버헤드를 없앨 수 있다. 또한, PIM은 사용함으로써 저비용, 저사항 CPU(Central Processing Units) 상에서도 구현될 수 있어 비용이 절감될 수 있다. 프로세서(100)는 모듈 별로 독립적인 개발 환경을 제공할 수 있고, 다양한 로봇에 적용될 수 있다.
도 7은 일 실시예에 따른 방식이 적용된 로봇제어 솔루션을 설명하기 위한 도면이다.
도 7을 참조하면, 프로세서(예: 도 1의 프로세서(100))는 미들웨어를 이용하여 데이터를 처리할 수 있다.
미들웨어는 로봇 제어 솔루션(710)을 포함할 수 있다. 로봇 제어 솔루션(710)은 메트릭 맵(metric map)(711)을 포함하는 그리드 셀, 위치 인식 맵(712)을 포함하는 플레이스 셀, 시맨틱(semantic) 맵(713)을 포함하는 스페이셜 뷰 셀(spatial view cell)을 포함할 수 있다. 로봇 제어 솔루션(710)은 글로벌 패스 플래너(global path planner)(714), 스위처블(switchable)한 로컬 패스 플래너(local path planner) 및 사람 추종 맵(716)을 포함할 수 있다.
플레이스 셀과 그리드 셀은 상호 협력하여 위치 정밀도를 향상시키고, 위치를 잃어버리지 않게 할 수 있다. 다시 말해, 그리드 셀 및 플레이스 셀은 키드내핑 프리(kidnapping-free) 기능을 제공할 수 있다.
로봇 제어 솔루션(710)은 데이터 버스(730)를 통해서 복수의 매니저들과 데이터를 주고받을 수 있다. 복수의 매니저는 센서 매니저(751), 모듈 매니저(753), 데이터 공유 매니저(755) 및 디버깅 매니저(757)를 포함할 수 있다.
센서 매니저(751)는 센서 상태 및 센서 데이터를 관리할 수 있다. 모듈 매니저(753)는 센서 구성(sensor configuration), 모듈 셀렉터(module selector) 및 에러 레벨 셀렉터(error level selector)를 포함할 수 있다. 데이터 공유 매니저(755)는 데이터의 요청 및 응답을 처리하고, 데이터의 퍼블리시(publish) 및 섭스크라이브(subscribe)를 관리할 수 있다. 데이터 공유 매니저(755)는 콜백(callback)을 관리할 수 있다.
디버깅 매니저(757)는 모듈 하이퍼파라미터 및 모듈 디버거를 관리할 수 있다.
이하에서, 도 8 내지 도 10을 참조하여 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))의 성능 측정을 위한 실험에 관하여 설명한다.
도 8은 지연 시간을 측정하는 과정을 설명하기 위한 도면이고, 도 9는 종래의 데이터 처리 방식에서의 지연 시간을 나타내고, 도 10은 도 1에 도시된 데이터 처리 장치의 지연 시간을 나타낸다.
도 8 내지 도 10을 참조하면, 이미지 퍼블리셔(810)는 이미지 섭스크라이버(830)는 이미지를 10hz로 전송할 수 있다. 이미지 섭스크라이버(830)는 이미지 퍼블리셔(810)에게 수신된 시간을 전송할 수 있다.
프로세서(예: 도 1의 프로세서(100))는 지연 시간(예: dt)을 현지 시간에서 수신된 시간을 뺌으로써 계산할 수 있다. 예를 들어, 프로세서는 수학식 1과 같이 지연 시간을 계산할 수 있다.
Figure PCTKR2023010267-appb-img-000001
여기서, now는 현재 시간을 의미하고, received time은 수신된 시간을 의미할 수 있다.
도 9의 종래의 방식은 지연 시간이 약 0.005초 발생하였고, 도 10의 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))는 지연 시간이 0.0007초 발생하였다. 다시 말해, 데이터 처리 장치(10))는 지연 시간을 약 1/7로 단축시킬 수 있다.
도 11은 도 1에 도시된 데이터 처리 장치의 동작의 흐름도를 나타낸다.
도 11을 참조하면, 프로세서(예: 도 1의 프로세서(100))는 센서 드라이버로부터 감지 결과를 수신할 수 있다(1110).
프로세서(100)는 복수의 모듈을 포함하는 로봇 제어 프로그램을 실행함으로써 감지 결과에 따라 로봇을 제어할 수 있다(1130).
복수의 모듈은 메모리(200)에 저장된 데이터에 직접적으로 접근하여 데이터를 처리할 수 있다.
프로세서(100)는 복수의 모듈 간의 데이터 전송을 처리할 수 있다(1150). 프로세서(100)는 변수 참조 방식에 기초한 가상 데이터 버스(virtual data bus)를 이용하여 상기 복수의 모듈 간의 데이터를 전송을 처리할 수 있다. 데이터를 전송하는 방식은 앞서 설명된 방식과 동일할 수 있다.
프로세서(100)는 데이터의 처리에 의한 메모리(200)에 저장된 데이터의 변경에 응답하여 응답 신호를 생성할 수 있다(1170). 응답 신호는 조건 변수(condition variable)로 구현될 수 있다.
프로세서(100)는 센서 드라이버로 구동되는 센서를 관리하기 위한 센서 매니저 및 복수의 모듈을 관리하기 위한 모듈 매니저를 포함할 수 있다. 프로세서(100)는 데이터의 공유를 위한 데이터 공유 매니저 및 복수의 모듈을 디버깅 하기 위한 디버깅 매니저를 포함할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (5)

  1. 로봇 제어를 위한 데이터 처리 장치에 있어서,
    데이터를 저장하는 메모리; 및
    상기 메모리에 저장된 인스트럭션을 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    센서 드라이버로부터 감지 결과를 수신하고,
    복수의 모듈을 포함하는 단일 로봇 제어 프로그램을 실행함으로써 상기 감지 결과에 따라 로봇을 제어하고,
    상기 복수의 모듈 간의 데이터 전송을 처리하고,
    상기 데이터의 처리에 의한 상기 메모리에 저장된 데이터의 변경에 응답하여 응답 신호를 생성하는,
    데이터 처리 장치.
  2. 제1항에 있어서,
    상기 복수의 모듈은,
    상기 메모리에 저장된 데이터에 직접적으로 접근하여 상기 데이터를 처리하고,
    변수 참조 방식에 기초한 가상 데이터 버스(virtual data bus)를 이용하여 상기 복수의 모듈 간의 데이터를 전송을 처리하고,
    상기 응답 신호는,
    조건 변수(condition variable)로 구현되는,
    데이터 처리 장치.
  3. 제2항에 있어서,
    상기 복수의 모듈은,
    상호간의 데이터 공유 방식이 표준화되는,
    데이터 처리 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    상기 센서 드라이버로 구동되는 센서를 관리하기 위한 센서 매니저;
    상기 복수의 모듈을 관리하기 위한 모듈 매니저;
    상기 데이터의 공유를 위한 데이터 공유 매니저; 및
    상기 복수의 모듈을 디버깅 하기 위한 디버깅 매니저
    를 포함하는 데이터 처리 장치.
  5. 로봇 제어를 위한 데이터 처리 방법에 있어서,
    센서 드라이버로부터 감지 결과를 수신하는 단계;
    복수의 모듈을 포함하는 로봇 제어 프로그램을 실행함으로써 상기 감지 결과에 따라 로봇을 제어하는 단계;
    상기 복수의 모듈 간의 데이터 전송을 처리하는 단계; 및
    상기 데이터의 처리에 의한 메모리에 저장된 데이터의 변경에 응답하여 응답 신호를 생성하는 단계
    를 포함하는 데이터 처리 방법.
PCT/KR2023/010267 2022-07-19 2023-07-18 로봇 제어를 위한 데이터 처리 장치 및 방법 WO2024019475A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220088670A KR20240011342A (ko) 2022-07-19 2022-07-19 로봇 제어를 위한 데이터 처리 장치 및 방법
KR10-2022-0088670 2022-07-19

Publications (1)

Publication Number Publication Date
WO2024019475A1 true WO2024019475A1 (ko) 2024-01-25

Family

ID=89618199

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2023/010267 WO2024019475A1 (ko) 2022-07-19 2023-07-18 로봇 제어를 위한 데이터 처리 장치 및 방법

Country Status (2)

Country Link
KR (1) KR20240011342A (ko)
WO (1) WO2024019475A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100877715B1 (ko) * 2007-02-02 2009-01-09 한국과학기술연구원 지능형 로봇을 위한 센싱, 구동 및 실시간 행동을 포함한리액티브 층 소프트웨어의 구조
KR20120039974A (ko) * 2010-10-18 2012-04-26 대우조선해양 주식회사 다수 프로세스 간의 데이터 교환 방법
JP2012096338A (ja) * 2010-11-05 2012-05-24 Canon Inc ロボット制御装置
KR20170034755A (ko) * 2015-09-21 2017-03-29 주식회사 레인보우 Gpos 연동형 실시간 로봇 제어 시스템 및 이를 이용한 실시간 디바이스 제어 시스템
CN113535437A (zh) * 2021-08-03 2021-10-22 上海节卡机器人科技有限公司 一种机器人的模块数据交互方法、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100877715B1 (ko) * 2007-02-02 2009-01-09 한국과학기술연구원 지능형 로봇을 위한 센싱, 구동 및 실시간 행동을 포함한리액티브 층 소프트웨어의 구조
KR20120039974A (ko) * 2010-10-18 2012-04-26 대우조선해양 주식회사 다수 프로세스 간의 데이터 교환 방법
JP2012096338A (ja) * 2010-11-05 2012-05-24 Canon Inc ロボット制御装置
KR20170034755A (ko) * 2015-09-21 2017-03-29 주식회사 레인보우 Gpos 연동형 실시간 로봇 제어 시스템 및 이를 이용한 실시간 디바이스 제어 시스템
CN113535437A (zh) * 2021-08-03 2021-10-22 上海节卡机器人科技有限公司 一种机器人的模块数据交互方法、电子设备及存储介质

Also Published As

Publication number Publication date
KR20240011342A (ko) 2024-01-26

Similar Documents

Publication Publication Date Title
CN104704478B (zh) 输入/输出错误遏制事件后的恢复
TWI336051B (en) Virtualization event processing in a layered virtualization architecture
JP5122597B2 (ja) 仮想プロセッサへの直接的なインタラプトの送信
US9507619B2 (en) Virtualizing a host USB adapter
US7840964B2 (en) Mechanism to transition control between components in a virtual machine environment
US10067741B1 (en) Systems and methods for I/O device logging
US8151264B2 (en) Injecting virtualization events in a layered virtualization architecture
US9529615B2 (en) Virtual device emulation via hypervisor shared memory
US11620254B2 (en) Remote direct memory access for container-enabled networks
US9811481B2 (en) Distributed intelligent platform management interface (D-IPMI) system and method thereof
AU2019234483A1 (en) Machine learning repository service
US10931512B2 (en) Computer readable media, methods, and computer apparatuses for network service continuity management
US9251078B2 (en) Acquiring remote shared variable directory information in a parallel computer
WO2023123850A1 (zh) 一种固件可信根的实现方法、装置、设备和可读存储介质
US9606827B2 (en) Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
WO2015130093A1 (en) Method and apparatus for preventing bank conflict in memory
WO2024019475A1 (ko) 로봇 제어를 위한 데이터 처리 장치 및 방법
WO2024087932A1 (zh) 控制方法、设备及计算设备
WO2021081739A1 (en) Device capability aware technology to execute deep learning computation graphs in web applications
WO2024117384A1 (ko) 테스트 정보 관리 방법 및 이를 지원하는 전자 장치
He et al. DxPU: Large-scale Disaggregated GPU Pools in the Datacenter
US10452408B1 (en) System and method for intercepting data flow between a computer process and a file
Mehare et al. Basics of Modern Computer Systems
WO2019235664A1 (ko) 프로그램 보호를 위한 디버거 차단 방법 및 시스템
Qian et al. A measurable refinement method of design and verification for micro-kernel operating systems in communication network

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

Country of ref document: EP

Kind code of ref document: A1