WO2024096190A1 - 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법 - Google Patents

자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법 Download PDF

Info

Publication number
WO2024096190A1
WO2024096190A1 PCT/KR2022/020214 KR2022020214W WO2024096190A1 WO 2024096190 A1 WO2024096190 A1 WO 2024096190A1 KR 2022020214 W KR2022020214 W KR 2022020214W WO 2024096190 A1 WO2024096190 A1 WO 2024096190A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
robot
occupied
actual
occupancy
Prior art date
Application number
PCT/KR2022/020214
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 WO2024096190A1 publication Critical patent/WO2024096190A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/60Intended control result
    • G05D1/69Coordinated control of the position or course of two or more vehicles
    • G05D1/698Control allocation
    • G05D1/6987Control allocation by centralised control off-board any of the vehicles
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0287Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling
    • G05D1/0291Fleet control
    • G05D1/0297Fleet control by controlling means in a control room
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1682Dual arm manipulator; Coordination of several manipulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4155Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0011Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots associated with a remote control arrangement
    • G05D1/0027Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots associated with a remote control arrangement involving a plurality of vehicles, e.g. fleet or convoy travelling
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/22Command input arrangements
    • G05D1/221Remote-control arrangements
    • G05D1/225Remote-control arrangements operated by off-board computers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/24Arrangements for determining position or orientation
    • G05D1/246Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
    • G05D1/2464Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM] using an occupancy grid
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/60Intended control result
    • G05D1/69Coordinated control of the position or course of two or more vehicles
    • G05D1/693Coordinated control of the position or course of two or more vehicles for avoiding collisions between vehicles
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39167Resources scheduling and balancing
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D2107/00Specific environments of the controlled vehicles
    • G05D2107/60Open buildings, e.g. offices, hospitals, shopping areas or universities
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D2109/00Types of controlled vehicles
    • G05D2109/10Land vehicles

Definitions

  • This disclosure relates to a control method of a management server that resolves a blockage in the autonomous driving process of a plurality of robots. More specifically, it relates to a control method of a server that removes a blockage based on the concept of an occupied node.
  • Patent Document 1 Registered Patent Publication No. 10-2263159 (Artificial intelligence server and method for determining robot path)
  • This disclosure relates to a server control method that coordinates the path planning, movement, and pause of each robot so that the robots can successfully reach each destination without interfering with each other's movement paths.
  • a control method of a server that manages the movement schedule of a plurality of robots includes receiving an occupancy request for at least one node matching a scheduled movement path from at least one robot among the plurality of robots. setting an actual occupancy node and a provisional occupancy node for each of the plurality of robots based on the occupancy request; providing occupancy permission information including the set actual occupancy node and a provisional occupancy node to each of the plurality of robots. Including the step of transmitting.
  • the step of setting the actual occupancy node and the provisional occupancy node includes setting the actual occupancy node and provisional occupancy node of each of the plurality of robots so that the actual occupancy node of one robot does not overlap with the actual occupancy node or provisional node of another robot. Choose.
  • the step of setting the actual occupancy node and the provisional occupancy node includes, for each robot, selecting an actual occupancy node included in a scheduled movement path, and for each robot, an actual occupancy node that is not the actual occupancy node but is adjacent to the actual occupancy node. At least one provisionally occupied node can be selected. The number of provisionally occupied nodes adjacent to the actual occupied node may vary depending on the size of the robot.
  • the step of setting the actual occupancy node and the provisional occupancy node includes, for each robot, selecting an actual occupancy node included in a scheduled movement path, and for each robot, an actual occupancy node that is not the actual occupancy node but is adjacent to the actual occupancy node. At least one provisionally occupied node can be selected. At this time, the number of provisionally occupied nodes may vary depending on whether at least one preset object related to the robot's work exists within a certain distance from the actually occupied node.
  • the control method of the server may further include transmitting a waiting request to at least one robot when the actually occupied node of one robot along the predetermined movement path overlaps with the actually occupied node or provisional occupied node of another robot.
  • the step of setting the actual occupancy node and the provisional occupancy node is such that, if the overlap of the actual occupancy nodes cannot be resolved according to the waiting request, the actual occupancy node of one robot does not overlap with the actual occupancy node of another robot. It may include changing the scheduled movement path under certain conditions, and selecting an actually occupied node and a provisionally occupied node according to the changed movement path.
  • the step of changing the scheduled movement path includes selecting at least one target robot among robots related to overlapping of the actual occupancy nodes, and the actual occupancy node of the selected target robot overlaps with the actual occupancy nodes of other robots. It may include a step of changing the movement path of the selected target robot to prevent this from happening.
  • the step of selecting the target robot divides the robots related to the overlap of the actual occupancy nodes into two groups with conflicting movement paths, and the movement cost added according to the change in movement path among the two groups is divided into two groups.
  • Robots included in fewer groups can be selected as target robots.
  • the movement cost may be proportional to the number of nodes through which the robot moves.
  • At least one robot with the largest number of unoccupied peripheral nodes among robots related to duplication of the actually occupied node may be selected as the target robot.
  • a temporary movement path of the target robot may be set so that the actual occupied node of the target robot does not overlap with the actual occupied node or provisional occupied node of other robots.
  • the actual occupancy node and provisional occupancy node of each of the plurality of robots can be set on the premise that one or more occupancy requests are received at regular intervals. there is.
  • the step of setting the actual occupancy node and provisional occupancy node of each of the plurality of robots includes setting the actual occupancy node and provisional occupancy node of each of the plurality of robots based on the moving distance of each robot scheduled for a time matching the schedule period. Occupied nodes can be set.
  • control method of the server is, when the frequency at which the step of changing the scheduled movement path is performed is more than a first threshold frequency, the step of decreasing the schedule period, the frequency at which the step of changing the scheduled movement path is performed If is less than the second critical frequency than the first critical frequency, it may include increasing the constant period.
  • control method of the server may include, when a disabled robot that cannot move occurs, setting the actual occupied node and provisionally occupied node of the disabled robot based on the location of the disabled robot.
  • the movement path and the actually occupied node of other robots may be selected so as not to overlap with the actual occupied node or the provisionally occupied node of the disabled robot.
  • the server control method can support quick and flexible blockage resolution with minimal load by setting the actual occupancy/provisional occupancy of each robot for the node based on occupancy requests received in real time.
  • FIG. 1 is a diagram schematically illustrating the operation of a server that controls a plurality of robots based on the concept of node occupancy according to an embodiment of the present disclosure
  • Figure 2A is a block diagram for explaining the configuration of a server according to an embodiment of the present disclosure
  • Figure 2b is a block diagram for explaining the configuration of a robot according to an embodiment of the present disclosure
  • FIG. 3 is a flowchart for explaining the operation of a server according to an embodiment of the present disclosure
  • Figure 4 is a process for determining whether there is overlap between occupied nodes according to an embodiment of the present disclosure.
  • FIGS. 5A to 5C are diagrams for explaining an operation in which a server changes the movement path or occupied node of at least one robot depending on the occurrence of deadlock, according to various embodiments of the present disclosure.
  • ordinal numbers such as “first”, “second”, etc. may be used to distinguish between components. These ordinal numbers are used to distinguish identical or similar components from each other, and the meaning of the term should not be interpreted limitedly due to the use of these ordinal numbers. For example, the order of use or arrangement of components combined with these ordinal numbers should not be limited by the number. If necessary, each ordinal number may be used interchangeably.
  • modules are terms to refer to components that perform at least one function or operation, and these components are either hardware or software. It may be implemented or may be implemented through a combination of hardware and software.
  • a plurality of “modules”, “units”, “parts”, etc. are integrated into at least one module or chip, except in cases where each needs to be implemented with individual specific hardware, and is integrated into at least one processor. It can be implemented as:
  • a part when a part is connected to another part, this includes not only direct connection but also indirect connection through other media.
  • the meaning that a part includes a certain component does not mean that other components are excluded, but that other components can be further included, unless specifically stated to the contrary.
  • FIG. 1 is a diagram schematically illustrating the operation of a server that controls a plurality of robots based on the concept of node occupancy according to an embodiment of the present disclosure.
  • the server 100 may communicate with a plurality of robots 200-1, 2, 3, 4, ....
  • the server 100 may be implemented as one or more computers or systems, and may monitor the location and movement path of each robot according to various time units/distance units.
  • Each robot may correspond to a robot with various functions that can move, such as a delivery robot, a guidance robot, a cleaning robot, and a boarding robot.
  • Each robot can be operated based on an autonomous driving algorithm, and position changes can be controlled based on communication with the server 100, etc.
  • each robot moves on land by driving at least one wheel, leg, etc., but robots that move on the sea or in the air are not excluded as long as the concept of an occupied node, which will be described later, can be applied.
  • the robot determines whether it is possible to occupy the location.
  • An inquiry request for occupancy may be transmitted to the server 100.
  • the server 100 establishes an occupied node (ex. actual occupancy) for each robot in order to prevent overlap between positions occupied by each of the plurality of robots (200-1, 2, 3, 4,). node, temporarily occupied node) can be set.
  • a node refers to a unit point or unit area that constitutes movement paths within an area where a plurality of robots are operated. That is, each robot can be located on at least one node and can pass through at least one node to move.
  • nodes defined at regular intervals are shown on a path along which a plurality of robots 200-1, 2, 3, 4, ... move.
  • each area divided in a grid form is defined as a node, rather than a node at each point as shown in FIG. 1, is also possible.
  • Map information of the corresponding area including information about nodes is stored in each of the server 100 and the robot.
  • the robot can occupy the corresponding node, and movement can proceed in this manner.
  • FIG. 2A is a block diagram for explaining the configuration of a server according to an embodiment of the present disclosure.
  • the server 100 may include a memory 110, a communication unit 120, a processor 130, etc.
  • the memory 110 is configured to store an operating system (OS) for controlling the overall operation of the components of the server 100 and at least one instruction or data related to the components of the server 100.
  • OS operating system
  • the memory 110 may include non-volatile memory such as ROM and flash memory, and may include volatile memory such as DRAM. Additionally, the memory 110 may include a hard disk, solid state drive (SSD), etc.
  • non-volatile memory such as ROM and flash memory
  • volatile memory such as DRAM
  • the memory 110 may include a hard disk, solid state drive (SSD), etc.
  • the communication unit 120 may include circuits, modules, chips, etc. for communicating with at least one external device through various wired or wireless communication methods. In terms of securing the mobility of robots, the communication unit 120 may be equipped with various circuits/modules/chips to perform wireless communication.
  • the communication unit 120 may be connected to external devices through various networks.
  • the network may be a personal area network (PAN), a local area network (LAN), or a wide area network (WAN).
  • PAN personal area network
  • LAN local area network
  • WAN wide area network
  • the network may be an intranet, It may be an extranet, the Internet, etc.
  • the communication unit 120 supports long-term evolution (LTE), LTE Advance (LTE-A), 5th Generation (5G) mobile communication, code division multiple access (CDMA), wideband CDMA (WCDMA), and universal mobile telecommunications system (UMTS). , WiBro (Wireless Broadband), GSM (Global System for Mobile Communications), DMA (Time Division Multiple Access), WiFi (Wi-Fi), WiFi Direct, Bluetooth, NFC (near field communication), Zigbee, etc. It can be connected to external devices.
  • LTE long-term evolution
  • LTE-A LTE Advance
  • 5G 5th Generation
  • CDMA code division multiple access
  • WCDMA wideband CDMA
  • UMTS universal mobile telecommunications system
  • WiBro Wireless Broadband
  • GSM Global System for Mobile Communications
  • DMA Time Division Multiple Access
  • WiFi Wi-Fi
  • WiFi Direct Bluetooth
  • NFC near field communication
  • Zigbee Zigbee, etc. It can be connected to external devices.
  • the processor 130 is configured to overall control the server 100. Specifically, the processor 130 may perform operations according to various embodiments of the present disclosure by being connected to the memory 110 and executing at least one instruction stored in the memory 110.
  • the processor 130 may include a general-purpose processor such as a CPU, AP, or DSP (Digital Signal Processor), a graphics-specific processor such as a GPU, a VPU (Vision Processing Unit), or an artificial intelligence-specific processor such as an NPU.
  • An artificial intelligence-specific processor may be designed with a hardware structure specialized for training or use of a specific artificial intelligence model.
  • the processor 130 may control the map management module 131, the scheduled route collection module 132, the occupied node setting module 133, etc. These modules may each be implemented in software and/or hardware. However, since the modules in FIG. 2A correspond to an example in which the functions of the processor 130 are divided, the functional blocks of the processor 130 do not necessarily have to be divided like the modules in FIG. 2A.
  • the map management module 131 is a module for managing map information of an area where a plurality of robots 200-1, 2, 3, 4, ... are operated.
  • Map information may include the location (ex. coordinates), path width, path length, direction, etc. of each movement path included in the area. Additionally, map information may include information about a plurality of nodes existing on the movement path. Information about nodes may include the location (coordinates) of each node, the distance from adjacent nodes, etc. Additionally, if a node is defined as an area rather than a point, information about the node may further include the size and shape of the node.
  • Nodes are typically defined to match each point arranged at regular intervals as shown in FIG. 1, but are not limited to this and can be defined in various ways. For example, if the movement path is divided into a square grid, each divided area can become a node.
  • the spacing and arrangement between nodes can be set according to a certain spacing and pattern, but of course it is also possible for the spacing between nodes to vary or the arrangement pattern to vary for each area.
  • the spacing between nodes can be set according to the size of each robot being operated. For example, the spacing between nodes may be set so that the horizontal area of the robot does not exceed half the spacing between nodes.
  • the map management module 131 may update map information based on the route change information.
  • nodes included in each movement path may also be added/changed/removed.
  • the scheduled path collection module 132 is a module for collecting the scheduled path of each robot.
  • the scheduled path collection module 132 may obtain the scheduled path of the robot based on an occupancy request received from the robot that wants to occupy at least one node during the movement process.
  • the occupancy request may include information about the planned path along which the robot wants to move.
  • the scheduled path collection module 132 may identify the scheduled path of each robot at regular intervals. At this time, for each cycle, the scheduled path collection module 132 may identify the scheduled path based on the moving distance of each robot scheduled for a time matching the cycle.
  • the scheduled path collection module 132 may identify the scheduled path of each robot as an occupancy request is received from at least one robot among the plurality of robots.
  • the occupied node setting module 133 is a module for setting the occupied node occupied by each robot.
  • the occupied node setting module 133 may update and set the occupied node of each robot at the above-described regular period. As the occupied node is set, when the occupancy permission information is transmitted to the robot, the robot can move through the corresponding node.
  • Occupied nodes can be divided into actual occupied nodes and provisionally occupied nodes.
  • the actual occupied node is a concept that includes not only the nodes currently occupied by the robot, but also the nodes that the robot will actually occupy according to the planned path.
  • the actually occupied node may also include a node that cannot be occupied by any other robot due to the presence of the robot in question. For example, while a robot is passing through a narrow road that only allows one-way traffic, the entire narrow road may be set as an occupied node.
  • a provisionally occupied node is not an actual occupied node, but corresponds to a node that may become difficult for other robots to occupy as a robot actually occupies a specific node. For example, all nodes immediately adjacent to the actual occupied node may be set as provisionally occupied nodes.
  • the number of provisionally occupied nodes set based on one actual occupied node may vary depending on the size of the robot.
  • the area occupied by the robot overlaps with other adjacent nodes (ex. a situation where the robot's volume invades a position closer to the center of an adjacent node than the center of the node where the robot is currently located) Since this may occur, collisions between robots can be prevented by introducing the concept of provisionally occupied nodes and preventing overlap between occupied nodes. For example, if the horizontal area of the robot is greater than half the distance between the centers of two adjacent nodes, the robot cannot be located in each of the two nodes mentioned above at the same time.
  • the number of provisionally occupied nodes set based on one actual occupied node may vary depending on the presence or absence of at least one preset object close to (e.g., within a certain distance) the actual occupied node. That is, in addition to the size of the robot, the range of the temporarily occupied node may be set depending on the surrounding environment or surrounding objects where the robot is located.
  • the preset object may be various objects related to at least one task performed by the robot.
  • the work may include various tasks such as charging the robot, loading/unloading the robot's shipments, moving/turning the robot, interaction between the robot and the user, and automatic transformation of the robot.
  • the preset object may correspond to various objects related to the robot's work, such as a station where the robot is charged, a logistics conveyor, a stand, an obstacle, and a user.
  • the range in which the provisionally occupied node is set when each node is actually occupied may vary.
  • the second node adjacent to the first node in addition to the first node adjacent to the actual occupied node, is set as a provisionally occupied node, so the range of provisionally occupied nodes is relatively large. It can be set widely. As a result, collisions or interference can be prevented in the process of docking the station.
  • the range of temporary occupancy nodes can be set wider at locations close to preset objects, such as logistics conveyors or stands. At this time, of course, the range in which the provisionally occupied node is set may vary depending on the type of preset object.
  • Figure 2b is a block diagram for explaining the configuration of a robot according to an embodiment of the present disclosure.
  • the robot 200 in FIG. 2B may correspond to each robot shown in FIG. 1.
  • the robot 200 includes a memory 210, a communication unit 220, a driving unit 230, a processor 240, a sensor unit 250, an output unit 260, a user input unit 270, etc. It can be included.
  • the memory 210 is configured to store an operating system (OS) for controlling the overall operation of the components of the robot 200 and at least one instruction or data related to the components of the robot 200.
  • OS operating system
  • the communication unit 220 may include circuits, modules, chips, etc. for communicating with at least one external device through various wired or wireless communication methods. To secure the mobility of the robot 200, the communication unit 220 may be equipped with various circuits/modules/chips to perform wireless communication.
  • the driving unit 230 is configured to drive the movement of the robot 200.
  • the driving unit 230 may correspond to a module implemented in software and/or hardware.
  • the drive unit 230 can control a motor for driving the wheels of the robot 200 and can control a mechanical configuration to control the direction of the wheels. For example, straight driving, curved driving, rotation, etc. of the wheels can be controlled.
  • the processor 240 is configured to overall control the robot 200.
  • the processor 240 may include a general-purpose processor such as a CPU, AP, or DSP (Digital Signal Processor), a graphics-specific processor such as a GPU, a VPU (Vision Processing Unit), or an artificial intelligence-specific processor such as an NPU.
  • a general-purpose processor such as a CPU, AP, or DSP (Digital Signal Processor)
  • a graphics-specific processor such as a GPU, a VPU (Vision Processing Unit)
  • an artificial intelligence-specific processor such as an NPU.
  • the sensor unit 250 is configured to collect various information related to the movement of the robot 200 and the surrounding environment.
  • the sensor unit 250 may include various sensors for self-measuring the movement situation (e.g. direction of movement, movement speed, degree of inclination, impact received, etc.) of the robot 200, such as an acceleration sensor, a gyro sensor, and a geomagnetic sensor. there is.
  • the sensor unit 250 may include a lidar sensor for detecting surrounding terrain, an ultrasonic sensor for detecting nearby objects, and a microphone for detecting ambient noise or objects in various directions.
  • the sensor unit 250 may include at least one camera for photographing the surroundings of the robot 200.
  • a camera may include one or more image sensors.
  • the camera may include an RGB camera and may include a depth camera.
  • the output unit 260 is configured to visually/audibly output various information.
  • the output unit 260 may include a display, LED, speaker, etc.
  • the user input unit 270 is configured to receive input of various user commands or information.
  • the user input unit 270 may include at least one button, touch pad, microphone, camera (face recognition, motion sensing), etc.
  • Figure 3 is a flowchart for explaining the operation of a server according to an embodiment of the present disclosure.
  • the server 100 may receive a request to occupy at least one node from at least one robot (S310).
  • the occupation request corresponds to a request to occupy at least one node included in the movement path planned for the robot.
  • the occupancy request may be a request for occupancy of at least one node that the robot must pass through within a certain time (: a certain time from the current point) according to the planned movement path.
  • the planned movement path is set according to the robot's destination and may be derived through the server 100 or may be determined by the robot itself.
  • the server 100 can set the actual occupancy node and provisional occupancy node for each of the plurality of robots (S320).
  • the server 100 may set the actual occupied node and provisionally occupied node for each of the plurality of robots at regular intervals. However, this operation can be performed on the premise that one or more occupancy requests are received in each cycle. This reflects that if no occupancy request is received, there is no need to newly set up the actual occupancy node and provisional occupancy node.
  • the server 100 may set the actual occupancy node and provisional occupancy node for each of the plurality of robots on the premise that an occupancy request is received from at least one robot among the plurality of robots, regardless of the period.
  • the server 100 Based on the planned movement path of the robot that sent the occupancy request, the server 100 sets the nodes constituting the movement path as the actual occupied nodes of the robot, and adds a node that is adjacent to the actually occupied node but is not the actual occupied node. It can be set as an occupied node.
  • the actually occupied node may also include a node that cannot be occupied by any other robot due to the presence of the corresponding robot.
  • the entire narrow road may be set as an occupied node.
  • the number of provisionally occupied nodes adjacent to the actual occupied node may vary depending on the size of the robot. For example, if the horizontal area of the robot is the first area, only nodes directly in contact with the actual occupancy node can be set as provisionally occupied nodes, but if the horizontal area of the robot is the second area larger than the first area, the actual occupancy node can be set as the second area. In addition to the adjacent nodes that are in direct contact with the node, nodes that are in direct contact with the adjacent node may additionally be set as provisionally occupied nodes.
  • the server 100 may select the actually occupied node and provisionally occupied node for each of the plurality of robots so that the actually occupied node of one robot does not overlap with the actually occupied node or provisionally occupied node of another robot.
  • FIG. 4 is a diagram for explaining the operation of a server that determines whether there is overlap between occupied nodes according to an embodiment of the present disclosure.
  • actual occupancy nodes may be set according to the planned movement paths (arrows) of each robot 200-1, 2, 3, and 4 shown in FIG. 1, respectively. At this time, only nodes scheduled to move for a certain period of time based on the current point in the scheduled movement path may be set as actual occupied nodes.
  • the certain time may be the same as the period in which the server 100 sets the actual occupied node and provisionally occupied node of each robot. And, based on the moving distance of each robot scheduled during a time matching the cycle, the actual occupied node and provisionally occupied node for each of the plurality of robots may be set.
  • Actual occupancy nodes 410-4 for the nodes 410-3 and the robot 200-4 may be set, respectively.
  • nodes not included in the planned movement path may be set as actual occupied nodes.
  • the width of the path where (200-3) is located corresponds to a narrow width (e.g., below the critical width) through which only one robot can pass, and here the server 100 moves the path. All nodes included in can be set as actual occupied nodes of the robot (200--3). As a result, nodes 410-2' that are not actually included in the planned movement path (arrow) for the robot 200-3 may also be set as actually occupied nodes.
  • nodes directly in contact with each actually occupied node may be set as provisionally occupied nodes.
  • the provisionally occupied nodes 411-1 adjacent to the actual occupancy nodes 410-1, the provisionally occupied nodes 411-2 adjacent to the actual occupancy nodes 410-2, and the actual occupancy nodes ( Provisionally occupied nodes 411-3 adjacent to 410-3) and provisionally occupied nodes 411-4 adjacent to actual occupied nodes 410-4 may be set, respectively.
  • one of the actual occupied nodes 410-3 that can be set for the robot 200-3 is the provisionally occupied nodes 411 that can be set for the robot 200-4.
  • one of the actual occupied nodes 410-4 that can be set for the robot 200-4 is one of the temporarily occupied nodes (410-4) that can be set for the robot 200-3. 411-3) overlaps with one of the following.
  • the server 100 may transmit a waiting request for a certain time to at least one robot related to the overlap of occupied nodes.
  • a waiting request may be transmitted for at least one robot, and occupancy permission information (: movement command) may be transmitted only for other robots.
  • the server 100 may transmit a waiting request to one of the robots 200-3 and 200-4.
  • the server 100 may identify that a dead lock event has occurred.
  • the server 100 may identify that a deadlock event has occurred.
  • the server 100 may identify that a deadlock event has occurred.
  • the server 100 may change the scheduled movement path under the condition that the node actually occupied by one robot does not overlap with the node actually occupied by another robot. Additionally, the server 100 can select the actually occupied node and the provisionally occupied node according to the changed movement path.
  • the server 100 selects at least one target robot from robots related to overlapping actual occupancy nodes, and ensures that the actual occupancy nodes of the selected target robot do not overlap with the actual occupancy nodes of other robots. You can change your travel route.
  • the server 100 divides robots related to overlapping actual occupancy nodes into two groups with conflicting movement paths, and selects the group with the lower movement cost added due to a change in movement path among the two groups.
  • the included robots can be selected as target robots.
  • the movement cost corresponds to the concept of being proportional to the number of nodes through which the robot moves.
  • FIGS. 5A to 5C are diagrams for explaining an operation in which a server changes the movement path or occupied node of at least one robot depending on the occurrence of deadlock according to various embodiments of the present disclosure.
  • Figure 5a shows a case where a linear deadlock event occurs.
  • the moving direction of the robot 200-11 is opposite to the moving direction of the robots 200-12, 13, and 14, and they cannot move because their paths are blocked.
  • this corresponds to a state in which two or more of the robots 200-11, 12, 13, and 14 actually occupied nodes overlap each other and cannot move, and the situation is not resolved by waiting for one robot.
  • the server 100 may divide the robots 200-11, 12, 13, and 14 into two groups that conflict with each other according to the planned movement path (direction of movement) of the robots.
  • the robot 200-11 is included in one group, and the remaining robots 200-12, 13, and 14 are included in another group.
  • the server 100 may select the group that incurs lower movement costs depending on the change in movement path among the two groups. Since the movement cost is lower when one robot moves than when three robots move, the server 100 can select a group containing the robot 200-11, and as a result, the robot 200-11 can be selected as the target robot.
  • the movement path of the robot 200-11 selected as the target robot may be changed.
  • the server 100 may set the temporary movement path of the target robot 200-11 so as not to overlap with the actual occupied node or provisionally occupied node related to the movement path of the robots 200-12, 13, and 14. .
  • Figure 5b shows a case where a linear deadlock event occurs.
  • the robots 200-21, 22, 23, and 24 sequentially block the movement path of the robot that follows them, so the actual occupied nodes overlap, and the situation changes depending on the temporary waiting of at least one robot. It is not a situation that can be resolved.
  • the server 100 may select at least one robot with the largest number of unoccupied peripheral nodes among the robots 200-21, 22, 23, and 24 as the target robot. That is, the robot with the easiest movement can be selected.
  • the robot 200-24 that is closest to the other path may be selected, and this deadlock event occurs when the robot 200 It can be interpreted as a conflict between -24) and the remaining robots (200-21, 22, 23).
  • the server 100 can change the actual occupied node and the temporarily occupied node by setting a temporary movement path for the robot 200-24, which is the target robot.
  • the movement path of the robot 200-24 may be changed to fall into another path connected to the circular path, and as a result, the actual occupied node and provisionally occupied node may be changed.
  • the server 100 may first divide the corresponding robots 200-21, 22, 23, 24, and 25 into a linear deadlock portion and a circular deadlock portion.
  • the robot 200-25 is blocked by the robot 200-24
  • the robot 200-24 is blocked by the robot 200-23
  • the robot 200-23 is blocked by the robot 200-22.
  • the robots 200-24, 23, 22, and 21 are divided into circular deadlock parts, and the robots 200-25, 24 ) can be divided into forming deadlock parts.
  • the server 100 selects the node with the easiest movement among the robots constituting the circular deadlock (e.g., the robot with the fewest number of nodes occupied (by other robots) among the surrounding nodes) as the target robot. You can.
  • the server 100 can divide the robot into two groups by changing the circular deadlock to a linear deadlock centered on the target robot, and change the movement path of the group with lower movement costs. As a result, the circular deadlock portion and the linear deadlock portion that constitute the complex deadlock can be sequentially resolved.
  • the server 100 includes information about the actual occupancy node and provisional occupancy node set for each robot. Occupancy permission information can be transmitted to each robot (S330).
  • each robot can move according to a movement path composed of the actually occupied nodes included in the occupancy permit information.
  • the operation of setting the actual occupied node and provisionally occupied node of the plurality of robots may be performed according to a certain cycle.
  • the server 100 may update the above-described cycle according to the frequency with which the movement path scheduled for each robot changes due to a deadlock event, etc.
  • the server 100 may decrease the constant period.
  • the actual occupied node and provisionally occupied node for each robot can be frequently set at shorter cycles, and the occurrence of deadlock events, etc. can be suppressed.
  • the server 100 may increase the constant period. As a result, the load and communication volume of the server 100 may be reduced.
  • the server 100 may set the actual occupied node and provisionally occupied node of the disabled robot based on the location of the disabled robot. At this time, the server 100 may select the movement paths and actual occupied nodes of other robots so as not to overlap with the actually occupied or provisionally occupied nodes of the disabled robot.
  • the various embodiments described above may be implemented in a recording medium that can be read by a computer or similar device using software, hardware, or a combination thereof.
  • embodiments described in the present disclosure include application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), and field programmable gate arrays (FPGAs). ), processors, controllers, micro-controllers, microprocessors, and other electrical units for performing functions.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • processors controllers, micro-controllers, microprocessors, and other electrical units for performing functions.
  • embodiments described herein may be implemented in the processor itself. According to software implementation, embodiments such as procedures and functions described in this specification may be implemented as separate software modules. Each of the software modules described above may perform one or more functions and operations described herein.
  • non-transitory computer readable media non-transitory computer readable media
  • Computer instructions or computer programs stored in such non-transitory computer-readable media when executed by a processor of a specific device, cause the specific device to perform processing operations in the electronic device according to the various embodiments described above.
  • a non-transitory computer-readable medium refers to a medium that stores data semi-permanently and can be read by a device, rather than a medium that stores data for a short period of time, such as registers, caches, and memories.
  • Specific examples of non-transitory computer-readable media may include CD, DVD, hard disk, Blu-ray disk, USB, memory card, ROM, etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Game Theory and Decision Science (AREA)
  • Medical Informatics (AREA)
  • Manipulator (AREA)

Abstract

복수의 로봇의 이동 스케줄을 설정하는 서버의 제어 방법이 개시된다. 본 제 어 방법은, 복수의 로봇 중 적어도 하나의 로봇으로부터, 예정된 이동 경로에 매칭 되는 적어도 하나의 노드에 대한 점유 요청을 수신하는 단계, 점유 요청을 바탕으 로, 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계, 복수의 로 봇 각각에 설정된 실점유 노드 및 가점유 노드를 포함하는 점유 허가 정보를 전송 하는 단계를 포함한다. 실점유 노드 및 가점유 노드를 설정하는 단계는, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 복 수의 로봇 각각의 실점유 노드 및 가점유 노드를 선택한다.

Description

자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
본 개시는 복수의 로봇의 자율주행 과정에서 막힘을 해소하는 관리용 서버의 제어 방법에 관한 것으로, 보다 상세하게는, 점유 노드 개념을 바탕으로 막힘을 해소하는 서버의 제어 방법에 관한 것이다.
이동 가능한 로봇이 상용화됨에 따라 개별적인 로봇의 운행 알고리즘 외에 멀티 로봇의 통합 모니터링에 대한 필요성이 대두되고 있다.
복수의 로봇 각각의 현 위치 및 목적지에 따라 각 로봇의 이동 경로를 서로 저촉되지 않도록 결정하여 전체적으로 관리하는 방식을 고려할 수도 있으나, 각 로봇이 이동을 시작/종료하는 시점이 제각기 다르다는 점에서 현실적인 전략이 아닐 수 있다.
아울러, 시스템 전체를 구성하는 모든 로봇들의 이동 경로를 처음부터 끝까지 전체적/거시적으로 설정하는 경우, 복잡한 알고리즘에 의해 로드가 크고 유동성이 떨어지며, 국소적인 문제 해결 능력이 떨어진다는 단점이 있다.
특히, 멀티 로봇의 자율주행 환경 내에서는 각 로봇 내지 이동 구역마다 다양한 상태/환경 변화가 발생할 수 있는 바, 다양한 변수에 유동적으로 신속하게 대응하기 위한 실시간 관제 서비스가 필요하다.
특허문헌
- 특허문헌1 : 등록특허공보 제10-2263159호(로봇의 경로를 결정 하는 인공 지능 서버 및 그 방법)
본 개시는 로봇들이 서로의 이동 경로를 방해하지 않으면서 각각의 목적 지에 성공적으로 도달할 수 있도록 각 로봇의 경로 계획, 이동, 일시정지 등을 조율하는 서버의 제어 방법에 관한 것이다.
본 개시의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 개시의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 개시의 실시 예에 의해 보다 분명하게 이해될 것이다. 또한, 본 개시의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
본 개시의 일 실시 예에 따라 복수의 로봇의 이동 스케줄을 관리하는 서버의 제어 방법은, 상기 복수의 로봇 중 적어도 하나의 로봇으로부터, 예정된 이동 경로에 매칭되는 적어도 하나의 노드에 대한 점유 요청을 수신하는 단계, 상기 점유 요청을 바탕으로, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계, 상기 복수의 로봇 각각에 상기 설정된 실점유 노드 및 가점유 노드를 포함하는 점유 허가 정보를 전송하는 단계를 포함한다. 상기 실점유 노드 및 가점유 노드를 설정하는 단계는, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 선택한다.
상기 실점유 노드 및 가점유 노드를 설정하는 단계는, 각 로봇에 대하여, 예정된 이동 경로에 포함되는 실점유 노드를 선택하고, 각 로봇에 대하여, 상기 실점유 노드가 아니면서 상기 실점유 노드에 인접한 적어도 하나의 가점유 노드를 선택할 수 있다. 상기 실점유 노드에 인접한 가점유 노드의 수는, 로봇의 크기에 따라 달라질 수 있다.
상기 실점유 노드 및 가점유 노드를 설정하는 단계는, 각 로봇에 대하여, 예정된 이동 경로에 포함되는 실점유 노드를 선택하고, 각 로봇에 대하여, 상기 실점유 노드가 아니면서 상기 실점유 노드에 인접한 적어도 하나의 가점유 노드를 선택할 수 있다. 이때, 상기 가점유 노드의 수는, 상기 실점유 노드로부터 일정 거리 내에 로봇의 작업과 관련된 적어도 하나의 기설정된 객체가 존재하는지 여부에 따라 달라질 수도 있다.
상기 서버의 제어 방법은, 상기 예정된 이동 경로에 따른 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되는 경우, 적어도 하나의 로봇에 대기 요청을 전송하는 단계를 더 포함할 수 있다. 이 경우, 상기 실점유 노드 및 가점유 노드를 설정하는 단계는, 상기 대기 요청에 따라 실점유 노드의 중복이 해소될 수 없는 경우, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드와 중복되지 않는 조건 하에 상기 예정된 이동 경로를 변경하는 단계, 상기 변경된 이동 경로에 따라 실점유 노드 및 가점유 노드를 선택하는 단계를 포함할 수 있다.
여기서, 상기 예정된 이동 경로를 변경하는 단계는, 상기 실점유 노드의 중복과 관련된 로봇들 중 적어도 하나의 대상 로봇을 선택하는 단계, 상기 선택된 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드와 중복되지 않도록, 상기 선택된 대상 로봇의 이동 경로를 변경하는 단계를 포함할 수 있다.
이때, 상기 대상 로봇을 선택하는 단계는, 상기 실점유 노드의 중복과 관련된 로봇들을 이동 경로가 서로 상충되는 두 개의 그룹으로 구분하고, 상기 두개의 그룹 중 이동 경로의 변경에 따라 추가되는 이동 비용이 더 적은 그룹에 포함되는 로봇들을 대상 로봇으로 선택할 수 있다. 상기 이동 비용은, 로봇이 이동 하는 노드의 수에 비례할 수 있다.
또한, 상기 대상 로봇을 선택하는 단계는, 상기 실점유 노드의 중복과 관련된 로봇들 중 미점유된 주변 노드가 가장 많은 적어도 하나의 로봇을 대상 로봇으로 선택할 수 있다.
그리고, 상기 대상 로봇의 이동 경로를 변경하는 단계는, 상기 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 상기 대상 로봇의 임시 이동 경로를 설정할 수 있다.
한편, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는, 일정 주기마다, 하나 이상의 점유 요청이 수신되었음을 전제로 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정할 수 있다. 이때, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는, 상기 일정 주기에 매칭되는 시간 동안 예정된 각 로봇의 이동 거리를 기준으로, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정할 수 있다.
이 경우, 상기 서버의 제어 방법은, 상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 제1 임계 빈도 이상인 경우, 상기 일정 주기를 감소 시키는 단계, 상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 상기 제1 임계 빈도보다 작은 제2 임계 빈도 미만인 경우, 상기 일정 주기를 증가시키는 단계를 포함할 수 있다.
한편, 상기 서버의 제어 방법은, 이동이 불가능한 장애 로봇이 발생한 경우, 상기 장애 로봇의 위치를 바탕으로 상기 장애 로봇의 실점유 노드 및 가점유 노드를 설정하는 단계를 포함할 수 있다. 여기서, 상기 실점유 노드 및 가점유 노드를 설정하는 단계는, 상기 장애 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 다른 로봇들의 이동 경로 및 실점유 노드를 선택할 수 있다.
본 개시에 따른 서버의 제어 방법은, 실시간으로 수신되는 점유 요청을 바탕으로 노드에 대한 각 로봇의 실점유/가점유를 설정하여 최소한의 로드로 신속하고 유동적인 막힘 해소를 지원할 수 있다.
도 1은 본 개시의 일 실시 예에 따라 노드 점유의 개념을 토대로 복수의 로봇에 대한 관제를 수행하는 서버의 동작을 개략적으로 설명하기 위한 도면,
도 2a는 본 개시의 일 실시 예에 따른 서버의 구성을 설명하기 위한 블록도,
도 2b는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도,
도 3은 본 개시의 일 실시 예에 따른 서버의 동작을 설명하기 위한 흐름도,
도 4는 본 개시의 일 실시 예에 따라 점유 노드 간 중복 여부를 판단하는 서
버의 동작을 설명하기 위한 도면, 그리고
도 5a 내지 도 5c는 본 개시의 다양한 실시 예에 따른 서버가 데드락의 발생 태양에 따라 적어도 하나의 로봇의 이동 경로 내지는 점유 노드를 변경하는 동작을 설명하기 위한 도면들이다.
본 개시에 대하여 구체적으로 설명하기에 앞서, 본 명세서 및 도면의 기재 방법에 대하여 설명한다.
먼저, 본 명세서 및 청구범위에서 사용되는 용어는 본 개시의 다양한 실시 예들에서의 기능을 고려하여 일반적인 용어들을 선택하였다. 하지만, 이러한 용어들은 당해 기술 분야에 종사하는 기술자의 의도나 법률적 또는 기술적 해석 및 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 일부 용어는 출원인이 임의로 선정한 용어도 있다. 이러한 용어에 대해서는 본 명세서에서 정의된 의미로 해석될 수 있으며, 구체적인 용어 정의가 없으면 본 명세서의 전반적인 내용 및 당해 기술 분야의 통상적인 기술 상식을 토대로 해석될 수도 있다.
또한, 본 명세서에 첨부된 각 도면에 기재된 동일한 참조번호 또는 부호는 실질적으로 동일한 기능을 수행하는 부품 또는 구성요소를 나타낸다. 설명 및 이해의 편의를 위해서 서로 다른 실시 예들에서도 동일한 참조번호 또는 부호를 사용하여 설명한다. 즉, 복수의 도면에서 동일한 참조 번호를 가지는 구성요소를 모두 도시되어 있다고 하더라도, 복수의 도면들이 하나의 실시 예를 의미하는 것은 아니다.
또한, 본 명세서 및 청구범위에서는 구성요소들 간의 구별을 위하여 "제1", "제2" 등과 같이 서수를 포함하는 용어가 사용될 수 있다. 이러한 서수는 동일 또는 유사한 구성요소들을 서로 구별하기 위하여 사용하는 것이며 이러한 서수 사용으로 인하여 용어의 의미가 한정 해석되어서는 안 된다. 일 예로, 이러한 서수와 결합된 구성요소는 그 숫자에 의해 사용 순서나 배치 순서 등이 제한되어서는 안 된다. 필요에 따라서는, 각 서수들은 서로 교체되어 사용될 수도 있다.
본 명세서에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시의 실시 예에서 "모듈", "유닛", "부(part)" 등과 같은 용어는 적어도 하나의 기능이나 동작을 수행하는 구성요소를 지칭하기 위한 용어이며, 이러한 구성요소는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈", "유닛", "부(part)" 등은 각각이 개별적인 특정한 하드웨어로 구현될 필요가 있는 경우를 제외하고는, 적어도 하나의 모듈이나 칩으로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
또한, 본 개시의 실시 예에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적인 연결뿐 아니라, 다른 매체를 통한 간접적인 연결의 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 포함한다는 의미는, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 개시의 일 실시 예에 따라 노드 점유의 개념을 토대로 복수의 로봇에 대한 관제를 수행하는 서버의 동작을 개략적으로 설명하기 위한 도면이다.
도 1을 참조하면, 서버(100)는 복수의 로봇(200-1, 2, 3, 4, …)과 통신을 수행할 수 있다. 서버(100)는 하나 이상의 컴퓨터 내지는 시스템으로 구현될 수 있으며, 각 로봇의 위치, 이동 경로 등을 다양한 시간 단위/거리 단위에 따라 모니터링할 수 있다.
각 로봇은 배송 로봇, 안내 로봇, 청소 로봇, 탑승용 로봇 등 이동 가능한 다양한 기능의 로봇에 해당할 수 있다. 각 로봇은 자율주행 알고리즘에 근거하여 운행될 수 있으며, 이때 서버(100) 등과의 통신을 바탕으로 위치 변경을 제어할 수 있다.
각 로봇은 적어도 하나의 바퀴, 다리 등의 이동 수단을 구동함으로써 육상에서 이동하는 형태가 대표적이나, 후술할 점유 노드의 개념이 적용될 수 있는 한 해상이나 공중을 이동하는 로봇이 배제되는 것은 아니다.
일 실시 예로, 복수의 로봇(200-1, 2, 3, 4, …) 중 적어도 하나의 로봇이 특정 위치(: 노드)를 거쳐가거나 해당 위치로 이동하는 경우, 로봇은 해당 위치의 점유가 가능한지 문의하는 점유 요청을 서버(100)로 전송할 수 있다.
이때, 서버(100)는 복수의 로봇(200-1, 2, 3, 4, …) 각각이 점유한 위치 간의 중복 등이 발생하지 않도록 조율하기 위해, 각 로봇을 위한 점유 노드 (ex. 실점유 노드, 가점유 노드)를 설정할 수 있다.
여기서, 노드는 복수의 로봇이 운영되는 지역 내에서 해당 지역 내 이동 경로들을 구성하는 단위 지점 또는 단위 영역을 의미한다. 즉, 각 로봇은 적어도 하나의 노드 상에 위치할 수 있으며, 이동을 위해 적어도 하나의 노드를 거칠 수 있다.
일 예로, 도 1을 참조하면, 복수의 로봇(200-1, 2, 3, 4, …)이 이동하는 경로 상에 일정한 간격에 따라 정의된 노드들(nodes)이 도시되어 있다. 한편, 도 1과 같은 각 지점의 노드가 아니라, 격자 형태로 구분된 각 영역이 노드로 정의되는 실시 예도 가능하다.
노드에 대한 정보를 포함하는 해당 지역의 맵 정보는 서버(100) 및 로봇 각각에 저장되어 있다.
그리고, 이렇듯 설정된 점유 노드에 대한 정보를 포함하는 점유 허가 정보가 로봇에 전송되면, 로봇은 해당 노드를 점유할 수 있고, 이러한 방식으로 이동이 진행될 수 있다.
도 2a는 본 개시의 일 실시 예에 따른 서버의 구성을 설명하기 위한 블록도이다.
도 2a를 참조하면, 서버(100)는 메모리(110), 통신부(120), 프로세서(130) 등을 포함할 수 있다.
메모리(110)는 서버(100)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 서버(100)의 구성요소와 관련된 적어도 하나의 인스트럭션 또는 데이터를 저장하기 위한 구성이다.
메모리(110)는 ROM, 플래시 메모리 등의 비휘발성 메모리를 포함할 수 있으며, DRAM 등으로 구성된 휘발성 메모리를 포함할 수 있다. 또한, 메모리(110)는 하드 디스크, SSD(Solid state drive) 등을 포함할 수도 있다.
통신부(120)는 다양한 유무선 통신방식으로 적어도 하나의 외부 장치와 통신을 수행하기 위한 회로, 모듈, 칩 등을 포함할 수 있다. 로봇들의 이동성 확보면에서 통신부(120)는 무선 통신을 수행하기 위한 다양한 회로/모듈/칩을 구비할 수 있다.
통신부(120)는 다양한 네트워크를 통해 외부 장치와 연결될 수 있다.
네트워크는 영역 또는 규모에 따라 개인 통신망(PAN; Personal Area Network), 근거리 통신망(LAN; Local Area Network), 광역 통신망(WAN; Wide Area Network) 등일 수 있으며, 네트워크의 개방성에 따라 인트라넷(Intranet), 엑스트 라넷(Extranet), 또는 인터넷(Internet) 등일 수 있다.
통신부(120)는 LTE(long-term evolution), LTE-A(LTE Advance), 5G(5th Generation) 이동통신, CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), GSM(Global System for Mobile Communications), DMA(Time Division Multiple Access), WiFi(Wi-Fi), WiFi Direct, Bluetooth, NFC(near field communication), Zigbee 등 다양한 무선 통신 방식을 통해 외부 장치들과 연결될 수 있다.
프로세서(130)는 서버(100)를 전반적으로 제어하기 위한 구성이다. 구체적으로, 프로세서(130)는 메모리(110)와 연결되는 한편 메모리(110)에 저장된 적어도 하나의 인스트럭션을 실행함으로써 본 개시의 다양한 실시 예들에 따른 동작을 수행할 수 있다.
프로세서(130)는 CPU, AP, DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit) 등과 같은 그래픽 전용 프로세서 또는 NPU와 같은 인공지능 전용 프로세서 등을 포함할 수 있다. 인공지능 전용 프로세서는, 특정 인공지능 모델의 훈련 내지는 이용에 특화된 하드웨어 구조로 설계될 수 있다.
도 2a를 참조하면, 프로세서(130)는 맵 관리 모듈(131), 예정 경로 수집 모듈(132), 점유 노드 설정 모듈(133) 등을 제어할 수 있다. 본 모듈들은 각 각 소프트웨어 및/또는 하드웨어로 구현될 수 있다. 다만, 도 2a의 본 모듈들은 프로세서(130)의 기능이 구분된 예시에 해당하는 바, 프로세서(130)의 기능 블록이 반드시 도 2a의 본 모듈들과 같이 구분되어야 하는 것은 아니다.
맵 관리 모듈(131)은 복수의 로봇(200-1, 2, 3, 4, …)이 운행되는 지역의 맵 정보를 관리하기 위한 모듈이다.
맵 정보는, 해당 지역에 포함된 이동 경로들 각각의 위치(ex. 좌표), 경로 폭, 경로 길이, 방향 등을 포함할 수 있다. 또한, 맵 정보는, 이동 경로 상에 존재하는 복수의 노드에 대한 정보를 포함할 수 있다. 노드에 대한 정보는, 각 노드의 위치(좌표), 인접한 노드와의 간격 등을 포함할 수 있다. 또한, 만약 노드가 지점이 아닌 영역으로 정의되는 경우, 노드에 대한 정보는 노드의 크기, 형태를 더 포함할 수 있다.
노드는 도 1과 같이 일정 간격으로 배치된 각 지점에 매칭되도록 정의되는 것이 대표적이나, 이에 한정될 필요는 없고 다양한 방식으로 정의될 수 있다. 예를 들어, 이동 경로가 사각형의 격자 형태로 구분되는 경우 구분된 각 영역이 노드가 될 수 있다. 노드 간의 간격과 배열은 일정한 간격 및 패턴에 따라 설정 될 수 있지만, 영역 별로 노드 간의 간격이 달라지거나 배열 패턴이 달라지는 것도 물론 가능하다.
노드 간의 간격(: 중심 간의 간격)은, 운행되는 로봇들 각각의 크기에 따라 설정될 수 있다. 예를 들어, 로봇의 수평 넓이가 노드 간의 간격의 절반을 넘지 않도록 노드 간의 간격이 설정될 수 있다.
일 실시 예로, 지역 내 이동 경로의 추가/변경/제거 등과 관련된 경로 변경 정보가 획득되는 경우, 맵 관리 모듈(131)은 경로 변경 정보를 바탕으로 맵 정보를 업데이트할 수 있다. 이때, 이동 경로의 구성이 변경되면서 각 이동 경로에 포함되는 노드들 역시 추가/변경/제거될 수 있다.
예정 경로 수집 모듈(132)은 각 로봇의 예정 경로를 수집하기 위한 모듈이다.
예정 경로 수집 모듈(132)은 이동 과정에서 적어도 하나의 노드를 점유하고자 하는 로봇으로부터 수신되는 점유 요청을 바탕으로 해당 로봇의 예정 경로를 획득할 수 있다. 여기서, 점유 요청은, 로봇이 이동하고자 하는 예정 경로에 대한 정보를 포함할 수 있다.
일 예로, 예정 경로 수집 모듈(132)은 일정 주기마다 각 로봇의 예정 경로를 식별할 수 있다. 이때, 각 주기마다, 예정 경로 수집 모듈(132)은 주기에 매칭되는 시간 동안 예정된 각 로봇의 이동 거리를 기준으로 예정 경로를 식별할 수 있다.
다른 예로, 예정 경로 수집 모듈(132)은 복수의 로봇 중 적어도 하나의 로봇으로부터 점유 요청이 수신됨에 따라 각 로봇의 예정 경로를 식별할 수도 있다.
점유 노드 설정 모듈(133)은 각 로봇이 점유하는 점유 노드를 설정 하기 위한 모듈이다. 일 예로, 점유 노드 설정 모듈(133)은 상술한 일정 주기마다 각 로봇의 점유 노드를 갱신하여 설정할 수 있다. 점유 노드가 설정됨에 따라 점유 허가 정보가 로봇으로 전송되면, 로봇은 해당 노드를 거쳐 이동할 수 있게 된다.
점유 노드는, 실점유 노드와 가점유 노드로 구분될 수 있다. 실점유 노드는, 현재 로봇이 점유하고 있는 노드 뿐 아니라 예정 경로에 따라 로봇이 실제 점유하게 될 노드를 모두 포함하는 개념이다.
이밖에, 실점유 노드는 해당 로봇의 존재로 인해 다른 어떤 로봇도 점유할 수 없게 된 노드도 포함할 수 있다. 예를 들어, 로봇이 일방 통행만 가능한 좁은 길을 지나가는 동안 좁은 길 전체가 실점유 노드로 설정될 수도 있다.
가점유 노드는, 실점유 노드는 아니지만 로봇이 특정 노드를 실점유 함에 따라 다른 로봇의 점유가 어려워질 가능성이 있는 노드에 해당한다. 예를 들어, 실점유 노드와 바로 인접한 노드들은 모두 가점유 노드로 설정될 수 있다.
일 실점유 노드를 기준으로 설정되는 가점유 노드의 수는 로봇의 크기에 따라 달라질 수 있다.
구체적인 예로, 로봇의 수평 넓이에 따라 로봇이 점유한 영역이 인접한 다른 노드와 중첩되는 경우(ex. 로봇이 현재 위치한 노드의 중심보다 인접 노드의 중심에 더 가까운 위치까지 로봇의 부피가 침범하는 상황)가 발생할 수 있으므로, 가점유 노드의 개념을 도입하여 점유 노드 간 중복을 방지함으로써 로봇 간 충돌이 방지될 수 있다. 예를 들어, 로봇의 수평 넓이가 인접한 두 노드의 중심 간 거리의 절반보다 큰 경우, 상술한 두 노드에 각각 로봇이 동시에 위치할 수 없기 때문이다.
또한, 로봇의 수평 넓이에 따라 물리적인 중첩/충돌이 발생하지 않는 경우라고 하더라도, 가점유 노드 개념의 활용에 따라 로봇 간 지나친 근접에 따라 발생할 수 있는 변수(ex. 밀집도 증가, 센서 과동작, 작업 방해 등)가 방지될 수 있다.
관련하여, 일 실점유 노드를 기준으로 설정되는 가점유 노드의 수는, 실점유 노드와 근접한(ex. 일정 거리 내) 적어도 하나의 기설정된 객체의 존재 여부에 따라 달라질 수도 있다. 즉, 로봇의 크기 외에 로봇이 위치한 주변 환경 내지는 주변 객체에 따라 가점유 노드의 범위가 설정될 수도 있다.
여기서, 기설정된 객체는, 로봇이 수행하는 적어도 하나의 작업 (task)과 관련된 다양한 객체일 수 있다. 여기서 작업은, 로봇의 충전, 로봇의 배송물 적재/하차, 로봇의 이동/선회, 로봇과 사용자 간의 인터랙션, 로봇의 자동 변형 등 다양한 작업을 포함할 수 있다.
구체적으로, 기설정된 객체는 로봇의 충전이 수행되는 스테이션, 물류 컨베이어, 거치대, 장애물, 사용자 등 로봇의 작업과 관련된 다양한 객체에 해당할 수 있다.
이때, 노드의 위치 별로, 각 노드가 실점유되었을 때 가점유 노드가 설정되는 범위가 달라질 수도 있다. 예를 들어, 로봇이 충전을 수행하는 스테이션과 근접한 위치에서는, 실점유 노드와 인접한 제1 노드에 더하여, 제1 노드에 인접한 제2 노드까지 가점유 노드로 설정되는 등 가점유 노드의 범위가 비교적 넓게 설정될 수 있다. 그 결과, 스테이션 도킹을 수행하는 과정에서 충돌 내지는 방해가 미연에 방지될 수 있다. 스테이션 외에도, 물류 컨베이어 내지는 거치대 등 기설정 된 객체와 근접한 위치에서는 가점유 노드의 범위가 더 넓게 설정될 수 있다. 이때, 기설정된 객체의 종류에 따라 가점유 노드가 설정되는 범위가 각기 달라질 수 있음은 물론이다.
한편, 도 2b는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도이다. 도 2b의 로봇(200)은 도 1에 도시한 각 로봇에 해당할 수 있다.
도 2b를 참조하면, 로봇(200)은 메모리(210), 통신부(220), 구동부(230), 프로세서(240), 센서부(250), 출력부(260), 사용자 입력부(270) 등을 포함할 수 있다.
메모리(210)는 로봇(200)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 로봇(200)의 구성요소와 관련된 적어도 하나의 인스트럭션 또는 데이터를 저장하기 위한 구성이다.
통신부(220)는 다양한 유무선 통신방식으로 적어도 하나의 외부 장치와 통신을 수행하기 위한 회로, 모듈, 칩 등을 포함할 수 있다. 로봇(200)의 이동성 확보를 위해 통신부(220)는 무선 통신을 수행하기 위한 다양한 회로/모듈/칩을 구비할 수 있다.
구동부(230)는 로봇(200)의 이동을 구동하기 위한 구성이다. 구동부(230)는 소프트웨어 및/또는 하드웨어로 구현된 모듈에 해당할 수 있다.
예를 들어, 구동부(230)는 로봇(200)의 바퀴를 구동하기 위한 모터 를 제어할 수 있으며, 바퀴의 방향을 제어하기 위한 기계적 구성을 제어할 수 있다. 예를 들어, 바퀴의 직선 주행, 곡선 주행, 회전 등이 제어될 수 있다.
프로세서(240)는 로봇(200)을 전반적으로 제어하기 위한 구성이다. 프로세서(240)는 CPU, AP, DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU, VPU(Vision Processing Unit) 등과 같은 그래픽 전용 프로세서 또는 NPU 와 같은 인공지능 전용 프로세서 등을 포함할 수 있다.
센서부(250)는 로봇(200)의 이동 및 주변 환경과 관련된 다양한 정보를 수집하기 위한 구성이다.
센서부(250)는 가속도 센서, 자이로 센서, 지자기 센서 등 로봇(200)의 이동 상황(ex. 이동 방향, 이동 속도, 기울어진 정도, 받은 충격 등)을 자체 측정하기 위한 다양한 센서를 포함할 수 있다.
또한, 센서부(250)는 주변 지형을 파악하기 위한 라이다 센서, 근접한 객체를 감지하기 위한 초음파 센서, 주변 소음 내지는 다양한 방향의 객체를 감지하기 위한 마이크 등을 포함할 수 있다.
또한, 센서부(250)는 로봇(200)의 주변을 촬영하기 위한 적어도 하나의 카메라를 포함할 수 있다. 카메라는 하나 이상의 이미지 센서를 포함할 수 있다. 카메라는 RGB 카메라를 포함할 수 있고, 뎁스 카메라를 포함할 수도 있다.
출력부(260)는 다양한 정보를 시각적/청각적으로 출력하기 위한 구성이다. 출력부(260)는 디스플레이, LED, 스피커 등을 포함할 수 있다.
사용자 입력부(270)는 다양한 사용자 명령 내지는 정보를 입력 받기 위한 구성이다. 사용자 입력부(270)는 적어도 하나의 버튼, 터치 패드, 마이크, 카메라(: 안면 인식, 모션 센싱) 등을 포함할 수 있다.
이하 도면들을 통해, 복수의 로봇의 이동 스케줄을 관제하는 서버의 동작을 구체적으로 설명한다.
도 3은 본 개시의 일 실시 예에 따른 서버의 동작을 설명하기 위한 흐름도이다.
도 3을 참조하면, 서버(100)는 적어도 하나의 로봇으로부터 적어도 하나의 노드에 대한 점유 요청을 수신할 수 있다(S310).
점유 요청은, 해당 로봇에 대해 예정된 이동 경로에 포함된 적어도 하나의 노드를 점유하기 위한 요청에 해당한다. 구체적으로, 점유 요청은, 예정된 이동 경로에 따라 일정 시간 내(: 현 시점으로부터 일정 시간 동안)에 로봇이 거쳐 가야 하는 적어도 하나의 노드에 대한 점유 요청일 수 있다.
예정된 이동 경로는, 로봇의 목적지에 따라 설정된 것으로, 서버(100)를 통해 도출된 것일 수도 있고, 로봇에 의해 자체적으로 판단된 것일 수도 있다.
수신된 점유 요청을 바탕으로, 서버(100)는 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정할 수 있다(S320).
일 실시 예로, 서버(100)는 일정 주기마다 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정할 수 있다. 다만, 이러한 동작은 각 주기마다 하나 이상의 점유 요청이 수신되었음을 전제로 수행될 수 있다. 아무런 점유 요청이 수신되지 않은 경우 실점유 노드 및 가점유 노드를 새롭게 설정할 필요가 없음이 반영된 것이다. 또는, 서버(100)는 어떠한 주기와 무관하게 복수의 로봇 중 적어도 하나의 로봇으로부터 점유 요청이 수신됨을 전제로 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 것도 가능하다.
점유 요청을 전송한 로봇의 예정된 이동 경로를 바탕으로, 서버(100)는 이동 경로를 구성하는 노드를 해당 로봇의 실점유 노드로 설정하고, 실점유 노드와 인접하면서도 실점유 노드가 아닌 노드를 가점유 노드로 설정할 수 있다.
여기서, 실점유 노드는 해당 로봇의 존재로 인해 다른 어떤 로봇도 점유할 수 없게 된 노드도 포함할 수 있다. 예를 들어, 로봇이 일방 통행만 가능한 좁은 길을 지나가는 동안 좁은 길 전체가 실점유 노드로 설정될 수도 있다.
한편, 실점유 노드에 인접한 가점유 노드의 수는 로봇의 크기에 따라 달라질 수 있다. 예를 들어, 로봇의 수평 면적이 제1 면적인 경우 실점유 노드와 바로 닿아 있는 노드들만이 가점유 노드로 설정될 수 있으나, 로봇의 수평 면적이 제1 면적보다 큰 제2 면적인 경우 실점유 노드와 바로 닿아 있는 인접 노드에 더하여 인접 노드와 바로 닿아 있는 노드까지 추가로 가점유 노드로 설정될 수 있다.
다만, 이러한 과정에서, 서버(100)는 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 선택할 수 있다.
관련하여, 도 4는 본 개시의 일 실시 예에 따라 점유 노드 간 중복 여부를 판단하는 서버의 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 도 1에 도시된 각 로봇(200-1, 2, 3, 4)의 예정된 이동 경로(화살표)에 따라 실점유 노드들이 각각 설정될 수 있다. 이때, 예정된 이동 경로 중 현 시점을 기준으로 일정 시간 동안 이동이 예정된 노드들에 대해서만 실점유 노드로 설정될 수도 있다.
여기서, 일정 시간은, 서버(100)가 각 로봇의 실점유 노드 및 가점유 노드를 설정하는 주기와 동일할 수 있다. 그리고, 주기에 매칭되는 시간 동안 예정된 각 로봇의 이동 거리를 기준으로, 복수의 로봇 각각의 실점유 노드 및 가점유 노드가 설정될 수 있다.
그 결과, 로봇(200-1)에 대한 실점유 노드들(410-1), 로봇(200-2)에 대한 실점유 노드들(410-2), 로봇(200-3)에 대한 실점유 노드들(410-3), 로봇(200- 4)에 대한 실점유 노드들(410-4)이 각각 설정될 수 있다.
한편, 로봇이 위치한 경로의 폭에 따라서는, 예정된 이동 경로에 포함되지 않는 노드가 실점유 노드로 설정되는 경우도 가능하다. 예를 들어, 도 4를 참조하면, (200-3)이 위치한 경로의 폭이 단 하나의 로봇만이 통행 가능한 좁은 폭 (ex. 임계 폭 이하)에 해당하고, 여기서 서버(100)는 해당 경로에 포함된 모든 노드들을 로봇(200--3)의 실점유 노드로 설정할 수 있다. 그 결과, 실제로 로봇(200-3)에 대하여 예정된 이동 경로(화살표)에 포함되지 않은 노드들(410-2') 역시 실점유 노드로 설정될 수 있다.
또한, 도 4를 참조하면, 각 실점유 노드와 직접적으로 닿아 있는 노드들은 가점유 노드로 설정될 수 있다. 구체적으로, 실점유 노드들(410-1)에 인접한 가점유 노드들(411-1), 실점유 노드들(410-2)에 인접한 가점유 노드들(411-2), 실점유 노드들(410-3)에 인접한 가점유 노드들(411-3), 실점유 노드들(410-4)에 인접한 가점유 노드들(411-4)이 각각 설정될 수 있다.
다만, 도 4를 참조하면, 로봇(200-3)에 대하여 설정될 수 있는 실점유 노드들(410-3) 중 하나는 로봇(200-4)에 대하여 설정될 수 있는 가점유 노드들(411-4) 중 하나와 중복되며, 로봇(200-4)에 대하여 설정될 수 있는 실점유 노드들(410-4) 중 하나는 로봇(200-3)에 대하여 설정될 수 있는 가점유 노드들(411-3) 중 하나와 중복된다.
이렇듯, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되는 경우, 서버(100)는 점유 노드의 중복과 관련된 적어도 하나의 로봇에 대하여 일정 시간에 대한 대기 요청을 전송할 수 있다. 이 경우, 적어도 하나의 로봇에 대해서는 대기 요청이 전송되고, 다른 로봇들에 대해서만 점유 허가 정보(: 이동 명령)가 전송될 수 있다. 예를 들어, 도 4에서, 서버(100)는 로봇(200-3) 및 로봇(200-4) 중 하나의 로봇에 대기 요청을 전송할 수 있다.
다만, 일시적인 대기에 따라 점유 노드의 중복 내지는 막힘이 해소될 수 없는 경우, 서버(100)는 데드락(dead lock) 이벤트가 발생한 것으로 식별할 수 있다.
예를 들어, 대기 요청이 전송된 결과 해당 로봇이 대기를 수행하였음에도 해당 로봇과 관련된 실점유 노드의 중복이 해소되지 않는 경우(ex. 다음 주기 또는 그 다음 주기에도 여전히 실점유 노드의 중복이 해소되지 않는 경우), 서버(100)는 데드락 이벤트가 발생한 것으로 식별할 수 있다.
또는, 일 로봇이 대기를 수행하더라도 실점유 노드의 중복이 해소될 수 없는 것으로 식별되는 경우, 서버(100)는 데드락 이벤트가 발생한 것으로 식별할 수 있다.
이 경우, 서버(100)는, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드와 중복되지 않는 조건 하에 예정된 이동 경로를 변경할 수 있다. 그리고, 서버(100)는 변경된 이동 경로에 따라 실점유 노드 및 가점유 노드를 선택할 수 있다.
구체적으로, 서버(100)는 실점유 노드의 중복과 관련된 로봇들 중 적어도 하나의 대상 로봇을 선택하고, 선택된 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드와 중복되지 않도록, 선택된 대상 로봇의 이동 경로를 변경할 수 있다.
예를 들어, 서버(100)는 실점유 노드의 중복과 관련된 로봇들을 이동 경로가 서로 상충되는 두 개의 그룹으로 구분하고, 두 개의 그룹 중 이동 경로의 변경에 따라 추가되는 이동 비용이 더 적은 그룹에 포함되는 로봇들을 대상 로봇으로 선택할 수 있다. 여기서, 이동 비용은, 로봇이 이동하는 노드의 수에 비례 하는 개념에 해당한다.
관련하여, 도 5a 내지 도 5c는 본 개시의 다양한 실시 예에 따른 서버가 데드락의 발생 태양에 따라 적어도 하나의 로봇의 이동 경로 내지는 점유 노드를 변경하는 동작을 설명하기 위한 도면들이다.
먼저, 도 5a는 선형 데드락 이벤트가 발생한 경우를 도시한 것이다. 도 5a를 참조하면, 로봇(200-11)의 이동 방향은 로봇들(200-12, 13, 14)의 이동 방향과 반대이며, 서로 간에 진로가 막혀 이동하지 못하고 있다.
구체적으로, 로봇들(200-11, 12, 13, 14) 중 둘 이상의 실점유 노드가 서로 중복되어 이동이 불가하며, 일 로봇의 대기에 따라 상황이 해소되는 것도 아닌 상태에 해당한다.
이 경우, 서버(100)는 로봇들(200-11, 12, 13, 14)의 예정된 이동 경로(: 이동 방향)에 따라 로봇들을 서로 상충되는 두 개의 그룹으로 구분할 수 있다. 그 결과, 로봇(200-11)은 단독으로 일 그룹에 포함되고, 나머지 로봇들(200-12, 13, 14)은 다른 그룹에 포함된다.
여기서, 서버(100)는 두 그룹 중 이동 경로의 변경에 따라 이동 비용이 더 적게 발생하는 그룹을 선택할 수 있다. 3대의 로봇이 이동하는 때보다 한대의 로봇이 이동하는 때에 이동 비용이 더 적으므로, 서버(100)는 로봇(200-11)이 포함된 그룹을 선택할 수 있으며, 그 결과 로봇(200-11)은 대상 로봇으로 선택될 수 있다.
이때, 대상 로봇으로 선택된 로봇(200-11)의 이동 경로가 변경될 수 있다. 구체적으로, 서버(100)는 로봇들(200-12, 13, 14)의 이동 경로와 관련된 실 점유 노드 또는 가점유 노드와 중복되지 않도록 대상 로봇(200-11)의 임시 이동 경로를 설정할 수 있다.
한편, 도 5b는 선형 데드락 이벤트가 발생한 경우를 도시한 것이다. 도 5b를 참조하면, 로봇들(200-21, 22, 23, 24)은 각각 순차적으로 뒤따르는 로봇의 이동 경로를 막고 있어 실점유 노드가 중복되며, 적어도 하나의 로봇의 일시적인 대기에 따라 상황이 해소될 수 있는 상황도 아니다.
도 5b의 경우, 예정된 이동 경로에 따라 로봇들이 두개의 그룹으로 구분되는 경우가 아니므로, 먼저 일 로봇의 선택이 선택됨에 따라 도 5a와 같은 선형 데드락의 문제로 변환할 수 있다.
구체적으로, 서버(100)는 로봇들(200-21, 22, 23, 24) 중 미점유된 주변 노드가 가장 많은 적어도 하나의 로봇을 대상 로봇으로 선택할 수 있다. 즉, 움직임이 가장 용이한 로봇이 선택될 수 있다.
예를 들어, 도 5b를 참조하면, 로봇들(200-21, 22, 23, 24) 중 다른 경로가 가장 가까이에 인접한 로봇(200-24)이 선택될 수 있으며, 본 데드락 이벤트는 로봇(200-24)과 나머지 로봇들(200-21, 22, 23) 간의 상충으로 해석될 수 있다.
이 경우, 서버(100)는 대상 로봇인 로봇(200-24)에 대하여 임시 이동 경로를 설정함으로써 실점유 노드 및 가점유 노드를 변경할 수 있다. 그 결과, 원형 경로와 연결된 다른 경로로 빠지도록 로봇(200-24)의 이동 경로가 변경될 수 있으며, 그 결과 실점유 노드 및 가점유 노드 등이 변경될 수 있다.
한편, 도 5c와 같이 선형 데드락과 원형 데드락이 공존하는 형태도 가능하다.
이 경우, 서버(100)는 해당 로봇들(200-21, 22, 23, 24, 25)을 먼저 선형 데드락 부분과 원형 데드락 부분으로 구분할 수 있다.
구체적으로, 로봇(200-25)이 로봇(200-24)에 막히고, 로봇(200- 24)이 로봇(200-23)에 막히고, 로봇(200-23)이 로봇(200-22)에 막히고, 로봇(200-22)이 로봇(200-21)에 막히고, 다시 로봇(200-21)이 로봇(200-24)에 막히는 것으로 식별될 수 있다. 이 경우, 막힘 관계의 순환의 기준점이 되는 로봇(200-24)을 기점으로, 로봇들(200-24, 23, 22, 21)은 원형 데드락 부분으로 구분되고, 로봇들(200- 25, 24)은 성형 데드락 부분으로 구분될 수 있다.
이 경우, 서버(100)는 원형 데드락을 구성하는 로봇들 중 움직임이 가장 용이한 노드(ex. 주변 노드들 중 (다른 로봇에 의해) 점유된 노드의 수가 가장 적은 로봇)가 대상 로봇으로 선택될 수 있다. 이때, 서버(100)는 대상 로봇을 중심으로 원형 데드락을 선형 데드락의 형태로 변경하여 두 그룹으로 나눌 수 있으며, 이동 비용이 적은 그룹의 이동 경로를 변경할 수 있다. 그 결과, 복합 데드락을 구성하는 원형 데드락 부분 및 선형 데드락 부분 등이 순차적으로 해소될 수 있다.
상술한 다양한 실시 예들 중 적어도 하나에 따라 복수의 로봇 각각에 대해 실점유 노드 및 가점유 노드가 설정되면, 서버(100)는 각 로봇에 대하여 설정된 실점유 노드 및 가점유 노드에 대한 정보를 포함하는 점유 허가 정보를 각 로봇으로 전송할 수 있다(S330).
그 결과, 각 로봇은 점유 허가 정보에 포함된 실점유 노드로 구성된 이동 경로에 따라 이동을 수행할 수 있다.
한편, 상술한 실시 예에 같이, 복수의 로봇의 실점유 노드 및 가점유 노드가 설정되는 동작은 일정 주기에 따라 수행될 수 있다.
이때, 서버(100)는 각 로봇에 대하여 예정된 이동 경로가 데드락 이벤트 등에 따라 변경된 빈도에 따라 상술한 주기를 업데이트할 수도 있다.
예를 들어, 적어도 하나의 실점유 노드의 중복에 따라 복수의 로봇 중 적어도 하나의 로봇의 예정된 이동 경로가 변경되는 빈도가 제1 임계 빈도 이상인 경우, 서버(100)는 일정 주기를 감소시킬 수 있다. 이 경우, 각 로봇에 대한 실점유 노드 및 가점유 노드가 더 짧은 주기로 자주 설정될 수 있으며, 데드락 이벤트 등의 발생이 억제될 수 있다.
반면, 상술한 빈도가 상기 제1 임계 빈도보다 작은 제2 임계 빈도 미만인 경우, 서버(100)는 일정 주기를 증가시킬 수 있다. 그 결과, 서버(100)의 로드 및 통신량이 줄어들 수 있다.
한편, 일 실시 예로, 이동이 불가능한 장애 로봇이 발생한 경우, 서 버(100)는 장애 로봇의 위치를 바탕으로 장애 로봇의 실점유 노드 및 가점유 노드를 설정할 수 있다. 이때, 서버(100)는 장애 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 다른 로봇들의 이동 경로 및 실점유 노드를 선택할 수 있다.
한편, 이상에서 설명된 다양한 실시 예들은 서로 저촉되거나 모순되지 않는 한 두 개 이상의 실시 예가 서로 결합되어 구현될 수 있다.
한편, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합된 것을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다.
하드웨어적인 구현에 의하면, 본 개시에서 설명되는 실시 예들은 ASICs(Application Specific Integrated Circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서 (microprocessors), 기타 기능 수행을 위한 전기적인 유닛(unit) 중 적어도 하나를 이용하여 구현될 수 있다.
일부의 경우에 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상술한 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 서버(100), 로봇(200) 등 전자 장치에서의 처리동작을 수행하기 위한 컴퓨터 명령어(computer instructions) 또는 컴퓨터 프로그램은 비일시적 컴퓨터 판독 가능 매체(non- transitory computer-readable medium)에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어 또는 컴퓨터 프로그램은 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 전자 장치에서의 처리 동작을 상술한 특정 기기가 수행하도록 한다.
비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장 하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하 였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
부호의 설명
100: 서버 200: 로봇

Claims (11)

  1. 복수의 로봇의 이동 스케줄을 관리하는 서버의 제어 방법에 있어서,
    상기 복수의 로봇 중 적어도 하나의 로봇으로부터, 예정된 이동 경로에 매칭 되는 적어도 하나의 노드에 대한 점유 요청을 수신하는 단계;
    상기 점유 요청을 바탕으로, 상기 복수의 로봇 각각의 실점유 노드 및 가점 유 노드를 설정하는 단계; 및
    상기 복수의 로봇 각각에 상기 설정된 실점유 노드 및 가점유 노드를 포함하 는 점유 허가 정보를 전송하는 단계;를 포함하고,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복 되지 않도록, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 선택하는, 서버의 제어 방법.
  2. 제1항에 있어서,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    각 로봇에 대하여, 예정된 이동 경로에 포함되는 실점유 노드를 선택하고,
    각 로봇에 대하여, 상기 실점유 노드가 아니면서 상기 실점유 노드에 인접한
    적어도 하나의 가점유 노드를 선택하고
    상기 실점유 노드에 인접한 가점유 노드의 수는,
    로봇의 크기에 따라 달라지는, 서버의 제어 방법.
  3. 제1항에 있어서,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    각 로봇에 대하여, 예정된 이동 경로에 포함되는 실점유 노드를 선택하고,
    각 로봇에 대하여, 상기 실점유 노드가 아니면서 상기 실점유 노드에 인접한
    적어도 하나의 가점유 노드를 선택하고,
    상기 가점유 노드의 수는,
    상기 실점유 노드로부터 일정 거리 내에 로봇의 작업과 관련된 적어도 하나 의 기설정된 객체가 존재하는지 여부에 따라 달라지는, 서버의 제어 방법.
  4. 제1항에 있어서,
    상기 서버의 제어 방법은,
    상기 예정된 이동 경로에 따른 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드 또는 가점유 노드와 중복되는 경우, 적어도 하나의 로봇에 대기 요청을 전송 하는 단계;를 더 포함하고,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    상기 대기 요청에 따라 실점유 노드의 중복이 해소될 수 없는 경우, 일 로봇의 실점유 노드가 다른 로봇의 실점유 노드와 중복되지 않는 조건 하에 상기 예정된 이동 경로를 변경하는 단계; 및
    상기 변경된 이동 경로에 따라 실점유 노드 및 가점유 노드를 선택하는 단계;를 포함하는, 서버의 제어 방법.
  5. 제4항에 있어서,
    상기 예정된 이동 경로를 변경하는 단계는,
    상기 실점유 노드의 중복과 관련된 로봇들 중 적어도 하나의 대상 로봇을 선 택하는 단계; 및
    상기 선택된 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드와 중복 되지 않도록, 상기 선택된 대상 로봇의 이동 경로를 변경하는 단계;를 포함하는, 서버의 제어 방법.
  6. 제5항에 있어서,
    상기 대상 로봇을 선택하는 단계는,
    상기 실점유 노드의 중복과 관련된 로봇들을 이동 경로가 서로 상충되는 두 개의 그룹으로 구분하고,
    상기 두 개의 그룹 중 이동 경로의 변경에 따라 추가되는 이동 비용이 더 적 은 그룹에 포함되는 로봇들을 대상 로봇으로 선택하고,
    상기 이동 비용은,
    로봇이 이동하는 노드의 수에 비례하는, 서버의 제어 방법.
  7. 제5항에 있어서,
    상기 대상 로봇을 선택하는 단계는,
    상기 실점유 노드의 중복과 관련된 로봇들 중 미점유된 주변 노드가 가장 많 은 적어도 하나의 로봇을 대상 로봇으로 선택하는, 서버의 제어 방법.
  8. 제4항에 있어서,
    상기 대상 로봇의 이동 경로를 변경하는 단계는,
    상기 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드 또는 가점유 노 드와 중복되지 않도록, 상기 대상 로봇의 임시 이동 경로를 설정하는, 서버의 제어 방법.
  9. 제5항에 있어서,
    상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는,
    일정 주기마다, 하나 이상의 점유 요청이 수신되었음을 전제로 상기 복수의
    로봇 각각의 실점유 노드 및 가점유 노드를 설정하고,
    상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는,
    상기 일정 주기에 매칭되는 시간 동안 예정된 각 로봇의 이동 거리를 기준으 로, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는, 서버의 제 어 방법.
  10. 제9항에 있어서,
    상기 서버의 제어 방법은,
    상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 제1 임계 빈도 이상인 경우, 상기 일정 주기를 감소시키는 단계; 및
    상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 상기 제1 임계 빈도보다 작은 제2 임계 빈도 미만인 경우, 상기 일정 주기를 증가시키는 단계;를 포함하는, 서버의 제어 방법.
  11. 제1항에 있어서,
    상기 서버의 제어 방법은,
    이동이 불가능한 장애 로봇이 발생한 경우, 상기 장애 로봇의 위치를 바탕으 로 상기 장애 로봇의 실점유 노드 및 가점유 노드를 설정하는 단계;를 포함하고,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    상기 장애 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 다른 로봇들의 이동 경로 및 실점유 노드를 선택하는, 서버의 제어 방법.
PCT/KR2022/020214 2022-11-03 2022-12-13 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법 WO2024096190A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220145009A KR20240065586A (ko) 2022-11-03 2022-11-03 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
KR10-2022-0145009 2022-11-03

Publications (1)

Publication Number Publication Date
WO2024096190A1 true WO2024096190A1 (ko) 2024-05-10

Family

ID=90927541

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/020214 WO2024096190A1 (ko) 2022-11-03 2022-12-13 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법

Country Status (3)

Country Link
US (1) US20240152154A1 (ko)
KR (1) KR20240065586A (ko)
WO (1) WO2024096190A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090030683A (ko) * 2007-09-20 2009-03-25 한국과학기술연구원 로봇의 경로 설계 방법 및 그 로봇
US20130138246A1 (en) * 2005-03-25 2013-05-30 Jens-Steffen Gutmann Management of resources for slam in large environments
KR20130101913A (ko) * 2012-03-06 2013-09-16 고려대학교 산학협력단 로봇의 주행 경로 계획 장치 및 방법
KR20220055167A (ko) * 2020-10-26 2022-05-03 주식회사 케이티 자율주행 로봇, 자율주행 로봇의 충돌 회피 방법 및 월드 맵 관리 방법
KR20220145144A (ko) * 2021-04-21 2022-10-28 네이버랩스 주식회사 로봇 원격 제어 방법 및 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102263159B1 (ko) 2019-07-30 2021-06-10 엘지전자 주식회사 로봇의 경로를 결정하는 인공 지능 서버 및 그 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130138246A1 (en) * 2005-03-25 2013-05-30 Jens-Steffen Gutmann Management of resources for slam in large environments
KR20090030683A (ko) * 2007-09-20 2009-03-25 한국과학기술연구원 로봇의 경로 설계 방법 및 그 로봇
KR20130101913A (ko) * 2012-03-06 2013-09-16 고려대학교 산학협력단 로봇의 주행 경로 계획 장치 및 방법
KR20220055167A (ko) * 2020-10-26 2022-05-03 주식회사 케이티 자율주행 로봇, 자율주행 로봇의 충돌 회피 방법 및 월드 맵 관리 방법
KR20220145144A (ko) * 2021-04-21 2022-10-28 네이버랩스 주식회사 로봇 원격 제어 방법 및 시스템

Also Published As

Publication number Publication date
KR20240065586A (ko) 2024-05-14
US20240152154A1 (en) 2024-05-09

Similar Documents

Publication Publication Date Title
WO2021101047A1 (en) Mobile robot device and method for controlling mobile robot device
WO2018230845A1 (ko) 비전 정보에 기반한 위치 설정 방법 및 이를 구현하는 로봇
WO2021066416A1 (en) Unmanned aerial vehicle for inventory management and method of operating the same
WO2020218644A1 (ko) 인공지능을 이용하여 로봇의 위치를 재정의하는 방법 및 로봇
WO2023140476A1 (ko) 자율 주행 알고리즘의 성능 평가 방법 및 시스템
EP3987484A1 (en) Jointly learning visual motion and confidence from local patches in event cameras
WO2022154242A1 (ko) 로봇 및 그 제어 방법
WO2021201569A1 (ko) 강화학습 기반 신호 제어 장치 및 신호 제어 방법
WO2024096190A1 (ko) 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
WO2020189831A1 (ko) 자율주행 차량의 모니터링 및 제어 방법
WO2021215813A1 (ko) 무인 자율주행차량의 경로제어장치 및 경로제어방법
WO2020184776A1 (ko) 코드 인식을 통한 위치 인식 및 이동경로 설정 방법과 무인 모빌리티와 운영시스템
WO2020153628A1 (ko) 로봇 및 그 제어 방법
WO2022035054A1 (ko) 로봇 및 이의 제어 방법
WO2020159157A1 (en) Server and controlling method of server
WO2021040179A1 (ko) 로봇 및 이의 제어 방법
WO2020197126A1 (ko) 빅셀그리드맵을 이용한 이동체의 자세 추정 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램
WO2015170794A1 (ko) 주변 차량 탐지 장치 및 방법
WO2020071853A1 (ko) 주행 보조 장치 및 이미지 처리 방법
WO2021158066A1 (en) Electronic apparatus and control method thereof
WO2023096151A1 (ko) 로봇 및 그 제어 방법
WO2021132864A1 (ko) 실내 이동체의 경로 계획 방법, 이를 구현하기 위한 프로그램이 저장된 기록매체 및 이를 구현하기 위해 매체에 저장된 컴퓨터프로그램
WO2023022297A1 (ko) 로봇 및 그 제어 방법
WO2020209402A1 (ko) 자율 주행 차량을 이용한 자동 선적 방법 및 장치
WO2022114551A1 (ko) 전자 장치 및 그 제어 방법