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

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

Info

Publication number
KR20240065586A
KR20240065586A KR1020220145009A KR20220145009A KR20240065586A KR 20240065586 A KR20240065586 A KR 20240065586A KR 1020220145009 A KR1020220145009 A KR 1020220145009A KR 20220145009 A KR20220145009 A KR 20220145009A KR 20240065586 A KR20240065586 A KR 20240065586A
Authority
KR
South Korea
Prior art keywords
node
robot
occupied
robots
actual
Prior art date
Application number
KR1020220145009A
Other languages
English (en)
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 주식회사 트위니
Priority to KR1020220145009A priority Critical patent/KR20240065586A/ko
Priority to PCT/KR2022/020214 priority patent/WO2024096190A1/ko
Priority to US18/067,818 priority patent/US20240152154A1/en
Publication of KR20240065586A publication Critical patent/KR20240065586A/ko

Links

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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • 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
    • 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/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • 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/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • 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

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

자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법 { MULTI-TRAFFIC CONTROL METHOD FOR PLURALITY OF ROBOTS PERFORMING AUTONOMOUS DRIVING }
본 개시는 복수의 로봇의 자율주행 과정에서 막힘을 해소하는 관리용 서버의 제어 방법에 관한 것으로, 보다 상세하게는, 점유 노드 개념을 바탕으로 막힘을 해소하는 서버의 제어 방법에 관한 것이다.
이동 가능한 로봇이 상용화됨에 따라 개별적인 로봇의 운행 알고리즘 외에 멀티 로봇의 통합 모니터링에 대한 필요성이 대두되고 있다.
복수의 로봇 각각의 현 위치 및 목적지에 따라 각 로봇의 이동 경로를 서로 저촉되지 않도록 결정하여 전체적으로 관리하는 방식을 고려할 수도 있으나, 각 로봇이 이동을 시작/종료하는 시점이 제각기 다르다는 점에서 현실적인 전략이 아닐 수 있다.
아울러, 시스템 전체를 구성하는 모든 로봇들의 이동 경로를 처음부터 끝까지 전체적/거시적으로 설정하는 경우, 복잡한 알고리즘에 의해 로드가 크고 유동성이 떨어지며, 국소적인 문제 해결 능력이 떨어진다는 단점이 있다.
특히, 멀티 로봇의 자율주행 환경 내에서는 각 로봇 내지 이동 구역마다 다양한 상태/환경 변화가 발생할 수 있는 바, 다양한 변수에 유동적으로 신속하게 대응하기 위한 실시간 관제 서비스가 필요하다.
등록특허공보 제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)는 로봇(100)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 로봇(100)의 구성요소와 관련된 적어도 하나의 인스트럭션 또는 데이터를 저장하기 위한 구성이다.
통신부(220)는 다양한 유무선 통신방식으로 적어도 하나의 외부 장치와 통신을 수행하기 위한 회로, 모듈, 칩 등을 포함할 수 있다. 로봇(100)의 이동성 확보를 위해 통신부(220)는 무선 통신을 수행하기 위한 다양한 회로/모듈/칩을 구비할 수 있다.
구동부(230)는 로봇(200)의 이동을 구동하기 위한 구성이다. 구동부(230)는 소프트웨어 및/또는 하드웨어로 구현된 모듈에 해당할 수 있다.
예를 들어, 구동부(230)는 로봇(200)의 바퀴를 구동하기 위한 모터를 제어할 수 있으며, 바퀴의 방향을 제어하기 위한 기계적 구성을 제어할 수 있다. 예를 들어, 바퀴의 직선 주행, 곡선 주행, 회전 등이 제어될 수 있다.
프로세서(240)는 로봇(100)을 전반적으로 제어하기 위한 구성이다. 프로세서(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, 스피커 등을 포함할 수 있다.
사용자 입력부(260)는 다양한 사용자 명령 내지는 정보를 입력 받기 위한 구성이다. 사용자 입력부(260)는 적어도 하나의 버튼, 터치 패드, 마이크, 카메라(: 안면 인식, 모션 센싱) 등을 포함할 수 있다.
이하 도면들을 통해, 복수의 로봇의 이동 스케줄을 관제하는 서버의 동작을 구체적으로 설명한다.
도 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. 제1항에 있어서,
    상기 대상 로봇의 이동 경로를 변경하는 단계는,
    상기 대상 로봇의 실점유 노드가 다른 로봇들의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 상기 대상 로봇의 임시 이동 경로를 설정하는, 서버의 제어 방법.
  9. 제5항에 있어서,
    상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는,
    일정 주기마다, 하나 이상의 점유 요청이 수신되었음을 전제로 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하고,
    상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는 단계는,
    상기 일정 주기에 매칭되는 시간 동안 예정된 각 로봇의 이동 거리를 기준으로, 상기 복수의 로봇 각각의 실점유 노드 및 가점유 노드를 설정하는, 서버의 제어 방법.
  10. 제9항에 있어서,
    상기 서버의 제어 방법은,
    상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 제1 임계 빈도 이상인 경우, 상기 일정 주기를 감소시키는 단계; 및
    상기 예정된 이동 경로를 변경하는 단계가 수행되는 빈도가 상기 제1 임계 빈도보다 작은 제2 임계 빈도 미만인 경우, 상기 일정 주기를 증가시키는 단계;를 포함하는, 서버의 제어 방법.
  11. 제1항에 있어서,
    상기 서버의 제어 방법은,
    이동이 불가능한 장애 로봇이 발생한 경우, 상기 장애 로봇의 위치를 바탕으로 상기 장애 로봇의 실점유 노드 및 가점유 노드를 설정하는 단계;를 포함하고,
    상기 실점유 노드 및 가점유 노드를 설정하는 단계는,
    상기 장애 로봇의 실점유 노드 또는 가점유 노드와 중복되지 않도록, 다른 로봇들의 이동 경로 및 실점유 노드를 선택하는, 서버의 제어 방법.
KR1020220145009A 2022-11-03 2022-11-03 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법 KR20240065586A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220145009A KR20240065586A (ko) 2022-11-03 2022-11-03 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
PCT/KR2022/020214 WO2024096190A1 (ko) 2022-11-03 2022-12-13 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
US18/067,818 US20240152154A1 (en) 2022-11-03 2022-12-19 Multi-traffic control method for plurality of robots performing autonomous driving

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
KR20240065586A true KR20240065586A (ko) 2024-05-14

Family

ID=90927541

Family Applications (1)

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

Country Status (3)

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

Citations (1)

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

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100956663B1 (ko) * 2007-09-20 2010-05-10 한국과학기술연구원 로봇의 경로 설계 방법 및 그 로봇
EP2776216B1 (en) * 2011-11-11 2022-08-31 iRobot Corporation Robot apparautus and control method for resuming operation following a pause.
KR101382982B1 (ko) * 2012-03-06 2014-04-09 고려대학교 산학협력단 로봇의 주행 경로 계획 장치 및 방법
KR20220055167A (ko) * 2020-10-26 2022-05-03 주식회사 케이티 자율주행 로봇, 자율주행 로봇의 충돌 회피 방법 및 월드 맵 관리 방법
KR102489723B1 (ko) * 2021-04-21 2023-01-18 네이버랩스 주식회사 로봇 원격 제어 방법 및 시스템

Patent Citations (1)

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

Also Published As

Publication number Publication date
WO2024096190A1 (ko) 2024-05-10
US20240152154A1 (en) 2024-05-09

Similar Documents

Publication Publication Date Title
US10946524B2 (en) Safety system for integrated human/robotic environments
KR102070530B1 (ko) 모션 계획에 기초한 자율 주행 차량의 운행 방법 및 시스템
US11145206B2 (en) Roadmap segmentation for robotic device coordination
KR102223270B1 (ko) 여분의 초음파 radar를 구비한 자율 주행 차량
US10457294B1 (en) Neural network based safety monitoring system for autonomous vehicles
US10860018B2 (en) System and method for generating simulated vehicles with configured behaviors for analyzing autonomous vehicle motion planners
KR102020163B1 (ko) 자율 주행 차량의 조향률의 동적 조정
US10068485B2 (en) Platooning autonomous vehicle navigation sensory exchange
US10809736B2 (en) ST-graph learning based decision for autonomous driving vehicle
JP2017533485A (ja) 車両制御
US11113971B2 (en) V2X communication-based vehicle lane system for autonomous vehicles
US11698640B2 (en) Method and apparatus for determining turn-round path of vehicle, device and medium
KR102028346B1 (ko) 선도 추미 대차
CN108646752A (zh) 自动驾驶系统的控制方法及装置
US11180160B2 (en) Spiral curve based vertical parking planner system for autonomous driving vehicles
US20190325234A1 (en) Lane post-processing in an autonomous driving vehicle
CN111830958B (zh) 用于操作自动驾驶车辆的方法、系统和机器可读介质
JP2014002739A (ja) 移動装置を案内するためのシステムおよび方法
JP2023534795A (ja) 自動帰還充電方法、装置、記憶媒体、充電台及びシステム
KR20240065586A (ko) 자율주행을 수행하는 복수의 로봇을 위한 멀티 트래픽 제어 방법
US10215852B1 (en) Robotic radar assistance
US20230131581A1 (en) Automated valet parking system, control method for automated valet parking system, and non-transitory storage medium
JP2021511999A (ja) 自動運転車両の3ポイントターンの最適プランナー切り替え方法
WO2021059560A1 (ja) 情報処理装置、ロボット、および情報処理システム
CN110716542A (zh) 机器人移动控制方法及装置、电子设备及介质