KR102291434B1 - 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기 - Google Patents

교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기 Download PDF

Info

Publication number
KR102291434B1
KR102291434B1 KR1020197032896A KR20197032896A KR102291434B1 KR 102291434 B1 KR102291434 B1 KR 102291434B1 KR 1020197032896 A KR1020197032896 A KR 1020197032896A KR 20197032896 A KR20197032896 A KR 20197032896A KR 102291434 B1 KR102291434 B1 KR 102291434B1
Authority
KR
South Korea
Prior art keywords
robot
lane
route
roadmap
priority
Prior art date
Application number
KR1020197032896A
Other languages
English (en)
Other versions
KR20190134750A (ko
Inventor
타티아나 키카일로
Original Assignee
보스턴 다이나믹스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 보스턴 다이나믹스, 인크. filed Critical 보스턴 다이나믹스, 인크.
Priority to KR1020217025623A priority Critical patent/KR102415096B1/ko
Publication of KR20190134750A publication Critical patent/KR20190134750A/ko
Application granted granted Critical
Publication of KR102291434B1 publication Critical patent/KR102291434B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM]
    • G05B19/4189Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by the transport system
    • G05B19/41895Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS], computer integrated manufacturing [CIM] characterised by the transport system using automatic guided vehicles [AGV]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0011Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot associated with a remote control arrangement
    • G05D1/0027Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot 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 or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • 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
    • G05D1/0214Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • 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/0289Control of position or course in two dimensions specially adapted to land vehicles involving a plurality of land vehicles, e.g. fleet or convoy travelling with means for avoiding collisions between vehicles
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • 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
    • 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/31From computer integrated manufacturing till monitoring
    • G05B2219/31003Supervise route, reserve route and allocate route to vehicle, avoid collision
    • 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/32Operator till task planning
    • G05B2219/32328Dynamic scheduling, resource allocation, multi agent negotiation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D2201/00Application
    • G05D2201/02Control of position of land vehicles
    • G05D2201/0216Vehicle for transporting goods in a warehouse, factory or similar
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/60Electric or hybrid propulsion means for production processes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/80Management or planning

Abstract

로봇들을 라우팅하는 것에 관련된 장치 및 방법들이 제공된다. 제1 및 제2 로봇들을 포함하는 환경의 로드맵이 수신될 수 있다. 로드맵에는 상충 구역들을 연결하는 단방향 레인들로 주석이 부기될 수 있으며, 각각의 레인은 상충 구역을 차단하는 것을 피하도록 끝난다. 제1 및 제2 로봇들의 개개의 사용들을 위한 제1 및 제2 루트들이 결정될 수 있으며, 제1 및 제2 루트들 둘 모두는 제1 상충 구역에 연결되는 제1 레인을 포함한다. 개개의 제1 및 제2 로봇들에 더 높은 제1 우선순위 및 더 낮은 제2 우선순위가 배정될 수 있다. 제2 루트를 따르는 제2 로봇이 제1 레인 상에서 제1 로봇을 차단할 것임이 결정될 수 있다. 제1 우선순위가 제2 우선순위보다 높은 것에 기반하여, 컴퓨팅 디바이스는, 제2 로봇이 제1 로봇을 차단하는 것을 방지하도록 제2 루트를 변경할 수 있다.

Description

교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기
관련 출원들에 대한 상호-참조
본 출원은 "Roadmap Annotation for Deadlock-Free Multi-Agent Navigation"이라는 명칭으로 2017년 4월 12일자로 출원된 미국 특허 출원 제15/486,219호를 우선권으로 주장하며, 상기 출원의 내용들은 모든 목적들을 위해 인용에 의해 본원에 완전히 포함된다.
하나 이상의 로봇 및/또는 인간 행위자와 같은 다른 행위자는, 하나 이상의 건물의 내부 및/또는 하나 이상의 실외 구역과 같은 하나 이상의 공간 전체에 걸쳐 이동하여 작업들을 수행하고/거나 그렇지 않으면 공간을 함께 활용할 수 있다. 건물의 일 예는 창고이며, 이는, 제조자들, 도매업자들, 운송 회사들을 포함하는 다양한 상이한 유형들의 상업적 개체들에 의해 물품들의 보관에 사용될 수 있다. 예시적인 보관된 물품들은 원자재들, 부품들 또는 구성요소들, 포장 재료들, 및 완제품들을 포함할 수 있다. 일부 경우들에서, 창고에는, 배달 트럭들 또는 다른 유형들의 차량들에 물품들을 적재하거나 그로부터 하적할 수 있게 하기 위한 하역장이 구비될 수 있다. 창고는 또한, 박스들 또는 다른 물체들의 더미를 포함하는 편평한 운송 구조들인 팔레트들의 보관을 허용하기 위해 팔레트 랙들의 열들을 사용할 수 있다. 부가적으로, 창고는, 물품들 또는 물품들의 팔레트들을 들어올리고 이동시키기 위한 크레인들 및 지게차들과 같은 기계들 또는 차량들을 사용할 수 있다. 기계들, 차량들, 및 다른 장비를 동작시키기 위해 인간 운영자들이 창고에 고용될 수 있다. 일부 경우들에서, 기계들 또는 차량들 중 하나 이상은 컴퓨터 제어 시스템들에 의해 안내되는 로봇들일 수 있다.
다수의 상이한 환경들에서 다양한 작업들을 달성하기 위해 이동식 로봇들이 사용될 수 있다. 예컨대, 이동식 로봇들은 창고들, 병원들, 및/또는 데이터 센터들과 같은 실내 환경들 내에서 부품들 또는 완제품들과 같은 품목들을 전달할 수 있다. 이동식 로봇들이 배치될 때, 그 로봇들은, 전달 및/또는 다른 위치들로의 그리고 그 위치들로부터의 하나 이상의 가능한 경로를 사용할 수 있다. 이러한 경로들은 하나 이상의 루트 계획 알고리즘을 사용하여 결정될 수 있다.
일 양상에서, 방법이 제공된다. 컴퓨팅 디바이스는, 제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신한다. 컴퓨팅 디바이스는, 복수의 상충 구역들을 연결하는 복수의 레인들로 로드맵에 주석을 부기하고, 여기서, 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝난다. 컴퓨팅 디바이스는, 제1 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제1 루트 및 제2 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제2 루트를 결정하며, 여기서, 제1 루트 및 제2 루트 둘 모두는 제1 레인을 포함하고, 제1 레인은 제1 상충 구역에 연결된다. 제1 로봇에 제1 우선순위가 배정되고, 제2 로봇에 제2 우선순위가 배정되며, 여기서, 제1 우선순위는 제2 우선순위보다 높다. 제2 루트를 따르는 제2 로봇은, 제1 로봇이 제1 상충 구역에 도달하기 전에 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 야기할 것임이 결정된다. 제1 우선순위가 제2 우선순위보다 높은 것에 기반하여, 제2 루트는 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 방지하도록 변경된다.
다른 양상에서, 컴퓨팅 디바이스가 제공된다. 컴퓨팅 디바이스는, 하나 이상의 프로세서; 및 적어도 컴퓨터 실행가능 명령어들이 저장된 데이터 저장소를 포함한다. 컴퓨터 실행가능 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금: 제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신하게 하고; 복수의 상충 구역들을 연결하는 복수의 레인들로 로드맵에 주석을 부기하게 하고 ― 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝남 ―; 제1 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제1 루트 및 제2 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제2 루트를 결정하게 하고 ― 제1 루트 및 제2 루트 둘 모두는 제1 레인을 포함하고, 제1 레인은 제1 상충 구역에 연결됨 ―; 제1 로봇에 제1 우선순위를 그리고 제2 로봇에 제2 우선순위를 배정하게 하고 ― 제1 우선순위는 제2 우선순위보다 높음 ―; 제2 루트를 따르는 제2 로봇이, 제1 로봇이 제1 상충 구역에 도달하기 전에 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 야기할 것임을 결정하게 하고; 제1 우선순위가 제2 우선순위보다 높은 것에 기반하여, 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 방지하도록 제2 루트를 변경하게 한다.
다른 양상에서, 시스템이 제공된다. 시스템은, 컴퓨팅 디바이스, 및 제1 로봇 및 제2 로봇을 포함하는 복수의 로봇들을 포함한다. 컴퓨팅 디바이스는, 하나 이상의 프로세서; 및 적어도 컴퓨터 실행가능 명령어들이 저장된 데이터 저장소를 포함한다. 컴퓨터 실행가능 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금: 제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신하게 하고; 복수의 상충 구역들을 연결하는 복수의 레인들로 로드맵에 주석을 부기하게 하고 ― 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝남 ―; 제1 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제1 루트 및 제2 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제2 루트를 결정하게 하고 ― 제1 루트 및 제2 루트 둘 모두는 제1 레인을 포함하고, 제1 레인은 제1 상충 구역에 연결됨 ―; 제1 로봇에 제1 우선순위를 그리고 제2 로봇에 제2 우선순위를 배정하게 하고 ― 제1 우선순위는 제2 우선순위보다 높음 ―; 제2 루트를 따르는 제2 로봇이, 제1 로봇이 제1 상충 구역에 도달하기 전에 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 야기할 것임을 결정하게 하고; 제1 우선순위가 제2 우선순위보다 높은 것에 기반하여, 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 방지하도록 제2 루트를 변경하게 한다.
전술한 요약은 단지 예시적인 것이며, 어떠한 방식으로든 제한하는 것으로 의도되지 않는다. 위에 설명된 예시적인 양상들, 실시예들, 및 특징들에 부가하여, 추가적인 양상들, 실시예들, 및 특징들이 도면들 및 후속하는 상세한 설명 및 첨부된 도해들을 참조함으로써 명백해질 것이다.
도 1은 예시적인 실시예에 따른, 4개의 로봇이 양방향 에지들의 교차로에 있는 것을 수반하는 시나리오를 도시한다.
도 2는 예시적인 실시예에 따른, 4개의 로봇이 단방향 레인들의 교차로에 있는 것을 수반하는 시나리오를 도시한다.
도 3은 예시적인 실시예에 따른, 2개의 로봇이 레인들의 순환에 있는 것을 수반하는 시나리오를 도시한다.
도 4a 내지 도 4e는 예시적인 실시예에 따른, 로봇들이 교차로에서 선회하는 것을 수반하는 시나리오를 도시한다.
도 5a 내지 도 5f는 예시적인 실시예에 따른, 로봇들이 복수의 레인들을 갖는 환경에서 내비게이팅하는 것을 수반하는 시나리오를 도시한다.
도 6a 내지 도 6f는 예시적인 실시예에 따른, 2개의 로봇이 교차로를 통과하는 것을 수반하는 시나리오를 도시한다.
도 7a 내지 도 7d는 예시적인 실시예에 따른, 컴퓨팅 디바이스의 사용자 인터페이스가 사용되어 로드맵에 레인들로 주석을 부기하는 시나리오를 도시한다.
도 8은 예시적인 실시예에 따른, 위치들을 차단 및 차단해제하기 위한 방법의 흐름도이다.
도 9는 예시적인 실시예에 따른, 동작자(agent)에 대한 우선순위 순환을 도시한다.
도 10은 예시적인 실시예에 따른 시스템의 블록도이다.
도 11은 예시적인 실시예에 따른, 하나 이상의 창고를 운영하기 위한 시스템을 도시한다.
도 12는 예시적인 실시예에 따른 시스템을 예시한다.
도 13은 예시적인 실시예에 따른, 하나 이상의 로봇식 디바이스에 대한 로봇식 디바이스 아키텍처를 예시한다.
도 14a는 예시적인 실시예에 따른 예시적인 컴퓨팅 디바이스의 기능 블록도이다.
도 14b는 예시적인 실시예에 따른, 클라우드 기반 서버 시스템으로서 배열된 컴퓨팅 클러스터들의 네트워크를 도시한다.
도 15는 예시적인 실시예에 따른 방법의 흐름도이다.
개관
환경에서 로봇들의 루트들을 계획하는 것과 같은 다중 동작자 계획을 수행할 때, 로봇들은 그들이 교착 상태 또는 로봇들이 진행할 수 없는 상태에 있는 위치들에 도달할 수 있다. 도 1은, 교차로(150)에서 4개의 로봇(110, 120, 130, 140)의 교착을 수반하는 시나리오(100)를 도시한다. 에지들(112, 122, 132, 및 142)은 교차로(150)에서 합쳐진다. 시나리오(100)에서, 에지들(112, 122, 132, 및 142) 각각은 지향되지 않고, 통로의 전체 폭을 나타내고, 에지를 따른 양방향 이동을 허용한다.
예에서, 로봇들(110, 120, 130 및 140) 각각은 교차로(150) 근처에서 개개의 양방향 에지(112, 122, 132, 또는 142) 상에 있고, 개개의 좌회전(114, 124, 134, 및 144)을 행할 것을 지시받는다. 예컨대, 로봇(110)은 에지(112) 상에 있고, 에지(142) 상으로 회전(114)을 행할 것을 지시받는다. 하지만, 에지(142)는 로봇(140)에 의해 점유되어 있고, 로봇(140)은 차례로 에지(132) 상으로 좌회전(144)을 행할 것을 지시받는다. 그러나, 에지(132)는 로봇(130)에 의해 점유되어 있고, 로봇(130)은 에지(122) 상으로 좌회전을 행할 것을 지시받는다. 그렇지만, 에지(122)는 로봇(120)에 의해 점유되어 있고, 로봇(120)은 에지(112) 상으로 좌회전을 행할 것을 지시받는다. 하지만, 에지(112)는 로봇(110)에 의해 점유되어 있고, 로봇(110)은 (이미 언급된 바와 같이) 에지(142) 상으로 좌회전을 행할 것을 지시받는다. 따라서, 로봇들(110, 120, 130, 및 140)은 진행할 수 없으며, 그러므로, 교착 상태(160)에 도달한다.
관련된 시나리오들에서, 4개의 로봇들(110, 120, 130, 140) 전부가 동시에 교차로(150)에 진입하려 시도할 수 있다. 그 때, 로봇들(110, 120, 130, 140) 중 일부 또는 전부가 교차로(150)에 있는 동안 회전을 시도하거나 교차로(150)를 통해 직진으로 이동하려고 시도하는 경우, 로봇들(110, 120, 130, 140) 중 2개 이상이 충돌할 수 있다.
교착 상태(160)와 같은 교착들을 피하기 위한 다중 동작자 계획자(planner)가 본원에서 설명된다. 다중 동작자 계획자는 먼저, N ≥ 1인 N개의 동작자를 포함하는 현재사용 환경에 대한 로드맵을 수신할 수 있다(N = 1인 경우는 단순명료한 예일 수 있음을 유의함). 단순명료하지 않은 예들의 경우, 환경은 적어도 2개의 로봇 R1 및 R2를 가질 수 있다. 로드맵은 단방향 "레인들" L1, L2, ... Ln에 의해 연결되는 교차로들을 가질 수 있으며, 따라서, 제1 레인 L1은 레인들의 순환, 즉, 그래프 이론적 의미로 연결된 레인들의 그룹의 일부인데, 즉, 모든 각각의 레인 쌍 La 및 Lb에 대해, La로부터 Lb로의 경로가 존재한다. 레인들은 아래에서 더 상세히 설명된다. 다중 동작자 계획자는 로봇 R1에 우선순위 P1을 그리고 로봇 R2에 우선순위 P2를 배정할 수 있으며, 여기서, 우선순위 P1은 우선순위 P2에 대한 더 높은 우선순위를 나타내고, 따라서, 이러한 예에서는, 로봇 R1이 로봇 R2보다 더 높은 우선순위 로봇이다. 우선순위 P1이 우선순위 P2보다 높으므로, 다중 동작자 계획자는 로봇 R1의 배타적 사용을 위한 환경을 통한 루트 RT1을 예비할 수 있다. 로봇 R1의 배타적 사용을 위한 예비 루트 RT1을 예비하는 것의 일부로서, 로봇 R1은 RT1 상의 레인들 및 레인들 간의 상충 구역들, 이를테면 교차로들의 배타적 사용을 가질 수 있다. 따라서, 로봇 R1은, 상충 구역의 배타적 사용이 로봇 R1에 대해 예비되므로, RT1의 상충 구역에서 다른 로봇과 충돌하지 않을 것이다.
예컨대, 루트 RT1이 레인 L1을 포함하고, 로봇 R2가 레인 L1 상에서 더 높은 우선순위 로봇 R1을 차단하여 로봇 R1이 루트 RT1을 따라 더 이동할 수 없다고 가정한다. 그 때, 다중 동작자 계획자는, 레인 L1을 포함하는 레인들의 순환을 따라 이동할 것을 로봇 R2에 지시할 수 있으며, 그러므로, 로봇 R2는 결국 레인 L1을 벗어날 것이고, 이어서, 로봇 R1은 루트 RT1을 따라서 레인 L1을 따라 진행할 수 있다. 일단 로봇 R1이 레인 L1을 횡단하면, 다중 동작자 계획자는 로봇 R1에 대한 레인 L1의 예비를 해제하여 필요한 경우 로봇 R2가 레인 L1 상으로 돌아오게 할 수 있다.
다중 동작자 계획자는, 하나 이상의 컴퓨팅 디바이스에 의해 실행가능한 소프트웨어 다중 동작자 계획자를 사용하여 구현될 수 있다. 다중 동작자 계획자 소프트웨어는, N ≥ 1인 N개의 동작자를 포함하는 환경을 나타내는 로드맵 상에서 동작하는 동안 교착들을 피하는 다중 동작자 계획 알고리즘을 포함할 수 있다. 이러한 동작자들의 예들은, 차량들 및 로봇들(이를테면, 이동식 로봇식 디바이스들)을 포함하지만 이에 제한되지 않는다. 로드맵은, N개의 동작자에 대한 루트들을 결정하기 위해 하나 이상의 레인으로 주석이 부기된 연결된 그래프를 포함할 수 있다. 레인은, 레인 상의 동작자가 임의의 다른 레인 상의 동작자와 상충하지 않게 하는 로드맵의 예상 이동 경로이다. 레인들로 분류되지 않을 수 있는 로드맵의 부분들의 예들은, 회전 에지들, 동작자의 루트의 시작 위치 및/또는 목적지 위치를 포함하는 에지들, 및 교차로 건널목들을 포함한다. 일부 예들에서, 레인은 하나의 동작자에 대해서만 충분히 넓은 것으로 가정되는데, 즉, 레인에서의 통과가 허용되지 않는다. 특히 이러한 예들에서, 통과는, 모두가 동일한 방향으로 이어지는 다수의 인접한 별개의 레인들의 사용에 의해 달성될 수 있다. 하지만, 지점 A로부터 지점 B로 향하는 하나의 레인 L_ONLY만이 존재하고, 로봇 R1이 레인 L_ONLY 상에서 로봇 R2 뒤에 있는 경우, R1이 R2를 통과할 수 있는 유일한 방법은 R1이 L_ONLY를 벗어나는 것이다. 그렇게 함으로써, R1은 비-레인 공간을 횡단할 수 있는데, 이는 가능하게는 자신의 방향에 대하여 레인 L_ANOTHER을 횡단하는 것을 포함하며, 이러한 경우에, R1은 L_ANOTHER 상에 있는 것으로 간주되지 않는다.
임의의 주어진 시간에, 동작자는 레인 상에 있거나 레인 상에 있지 않지만 레인에 영향을 미치기에 충분한 영역을 차단할 수 있다. 다시 말해서, 동작자는 레인 상에 있거나 레인으로의 도상에 있을 수 있다. 동작자가 어떠한 이유로든 레인에서 떠날 때, 다중 동작자 계획자는, 동작자가 레인으로부터 떨어져 작업을 수행하고 동작자가 다시 레인(동일한 레인 또는 상이한 레인) 상으로 돌아갈 수 있게 하기 위한 작업 수행 영역을 컴퓨팅 및 예비할 수 있다. 예컨대, "피킹 및 배치(pick and place)" 동작들 또는 로봇이 화물을 가져와(픽 업) 그 화물을 목적지 위치에 배치하는 동작들의 경우에서, 작업 수행 영역은 피킹-전 에지, 피킹 동작을 수행하는 데 요구되는 영역, 피킹-후 에지, 및 피킹-후 에지로부터 레인 에지까지의, 그 레인 에지를 포함하는 적어도 하나의 경로를 포함할 수 있다. 교차로 건널목들의 경우에서, 동작자가 레인으로부터 떠나자마자, 차단된 작업 수행 영역은 교차로를 형성하는 모든 에지들/레인들을 포함할 수 있다. 작업 수행 영역은 동작자가 다른 측 상의 레인에 도달할 때까지 차단된 채 유지될 수 있다. 일부 경우들에서, 작업 수행 영역은, 동작자가 작업 수행 영역을 통해 진행함에 따라 축소될 수 있다. 적어도 일부 경우들에서, 회전 에지들, 피킹-전 에지들, 피킹-후 에지들, 및 교차로 건널목들은 레인들이 아니라는 것을 유의한다.
(이전 몇몇 문단들에서 설명된 바와 같이) 로드맵 그래프에 레인 및 비-레인 구역들로 주석이 부기되고, 레인들이 교차로들로부터 충분히 멀리 떨어져서 끝나고, 레인 그래프가 연결되고, 동작자 예비들이 레인 에지로의 경로들을 포함하는 경우, 그러한 방식으로 제한되는 다중 동작자 계획 문제는 계산적으로 다루기 쉬울 수 있다. 추가로, 레인들에 대한 제한은 많은 실제 계획 문제들에 대해 합리적일 수 있다. 그 때, 다중 동작자 계획 문제에 대한 해는, 하나 이상의 비-레인 구역을 횡단할 수 있는 시작 위치로부터 목적지 위치까지의 하나 이상의 에지 및/또는 레인의 집합으로서 특정될 수 있는 루트들을 발견하는 것을 수반할 수 있다.
다중 동작자 계획자는 동작자들에 우선순위들을 배정할 수 있다. 우선순위들은 교착들을 해결하기 위해 동작자들을 순서화하는 데 사용될 수 있는데, 예컨대, 동작자 우선순위들은 상충 영역을 건너는 동작자들의 순서를 특정하는 데 사용될 수 있다. 그 때, 더 높은 우선순위 동작자는 경로들을 예비하여 더 낮은 우선순위 동작자들 전에 상충 영역들을 건널 수 있고, 더 낮은 우선순위 동작자들은 더 높은 우선순위 동작자를 위해 경로를 비우고/거나 더 높은 우선순위 동작자가 통과하기를 대기할 것을 지시받을 수 있다. 일부 예들에서, 동작자 우선순위들은 단조적으로 증가하는 값들을 취할 수 있는데, 예컨대, 동작자의 우선순위는 동일하게 머무르거나 증가할 수 있지만, 동작자가 자신의 작업 및/또는 루트를 완료할 때까지 감소하지는 않는다. 단조적으로 증가하는 값의 예는 동작자가 자신의 루트를 따라 이동한 시간량인데, 예컨대, 루트 상에 가장 오래 있던 동작자들이 통행권을 갖는다. 로봇 R에 대한 단조적으로 증가하는 값의 다른 예는, 로봇 R이 자신의 루트 상에서 시작된 이후로 자신들의 루트들 상에서 시작된 다수의 로봇들에 대한 루트 시작 값인데, 예컨대, 로봇 R에 대한 루트 시작 값은 처음에 0일 것이고, 다른 로봇들이 자신들의 루트 상에서 시작됨에 따라, 루트 시작 값은 시간 경과에 따라 증가하고, 감소하지 않을 것이며, 따라서, 루트 시작 값은 단조적으로 증가한다. 우선순위들로서 사용하기에 적합한 다른 단조적으로 증가하는 값들 및/또는 단조적으로 증가하는 값들을 생성하는 함수들이 또한 가능하다.
동작자가 목적지 위치에서 동작을 완료하고 다시 이동하기 시작할 때, 다중 동작자 계획자는, 목적지 위치 주변 영역을, 그 동작자가 목적지 위치에 있는 동안 차단되어 있는 것으로부터 차단해제되어 있는 것으로 변경할 수 있으며, 따라서, 다른 동작자들이 이용가능한 더 많고 아마도 더 짧은 경로들을 만들 수 있다. 그러므로, 동작자가 목적지 위치에 얼마나 오래 머무를 것인지의 추정치는 목적지 위치 주변 영역이 얼마나 오래 차단된 채 유지될 것인지를 제한할 수 있다. 그 때, 다중 동작자 계획자는, 동작자가 목적지 위치에 얼마나 오래 머무를 것인지의 하나 이상의 추정치를 결정할 수 있다. 하나의 극단적인 경우에서, 제1 추정치는 동작자가 목적지 위치에 영원히 머무를 것이라고 가정할 수 있다. 다른 극단적인 경우에서, 제2 추정치는 동작자가 최소 시간량, 예컨대, 1의 시간 단위 이하 동안 목적지 위치에 머무를 것이라고 가정할 수 있다. 동작자가 목적지에 있는 추정 시간을 결정하기 위해 이력 값이 사용될 수 있는데, 예컨대, 다수의 이전 동작자들이 동작 O1을 완료하기 위해 평균 X의 시간 단위를 소요했고, 동작자 A1이 동작 O1을 완료하려고 시도하는 경우, A1은 동작 O1을 완료하기 위해 X의 시간 단위를 소요할 것으로 추정될 수 있다. 또 다른 예에서, 다중 동작자 계획자는 사용자 인터페이스를 통해, 예컨대, 명령 행에 대한 인수로서, 그래픽 사용자 인터페이스(GUI)를 통해, 웹 브라우저에 의해 이루어지는 등의 방식으로 동작자가 목적지 위치에 얼마나 오래 머무를 것인지의 추정치를 제공할 수 있다. 동작자들에 대한 위치들을 차단하는 예시적인 방법은 도 8의 맥락에서 아래에 설명된다. 동작자 위치들의 다른 추정치들이 또한 가능하다.
동작자는, 동작자가 자신의 루트를 완료할 때, 자신의 우선순위를 예컨대 0 또는 다른 가장 낮은 우선순위 값으로 재설정할 수 있다. 일부 예들에서, 동작자는, 동작자가 목적지 위치에 도달할 때 루트를 완료한 것으로 간주될 수 있다. 다른 예들에서, 동작자는, 동작자가 목적지 위치에서 피킹 및 배치 동작과 같은 동작 중 일부 또는 전부를 완료할 때 루트를 완료할 것으로 간주될 수 있다. 그 때, 동작자가 자신의 현재 동작을 완료한 후에, 다중 동작자 계획자는 동작자의 우선순위를 재설정할 수 있다. 동작자가 레인 상으로 돌아갈 만큼 충분한 영역을 예비하므로, 동작자는 이미 다른 동작자들이 통과할 수 있도록 기동할 만큼 충분한 공간을 갖는다. 우선순위의 재설정 시, 동작을 방금 완료한 동작자 R1은 낮은 우선순위 동작자가 된다. 그 때, R1은, 하나 이상의 더 높은 우선순위 동작자 R2 ... Rn의 경로로부터 벗어나 있고/거나 그 경로 밖에서 대기할 것을 다중 동작자 계획자에 의해 지시받을 수 있다. 동작자 R1의 우선순위 재설정 전에, 동작자들 R2 ... Rn은 동작자 R1에 대한 경로를 비울 것을 지시받았다. 동작자 R1의 우선순위 재설정 후에, 동작자들 R2 ... Rn 중 적어도 하나는, 아마도, 동작자들 R2 ... Rn 중 하나 이상의 루트를 차단하는 것을 피하기 위해 동작자 R1의 루트를 변경함으로써, 자신의 목적지 위치에 도달할 수 있다. 동작자 R1이 루트를 따라 진행함에 따라, R1의 우선순위가 증가해서, R1은 상대적으로 높은 우선순위 동작자가 되고, 하나 이상의 더 낮은 우선순위 동작자 R3 ... Rm은 R1의 루트의 경로로부터 벗어나 있고/거나 경로 밖에서 대기할 것을 지시받을 수 있다. 일단 R1이 자신의 목적지에 도달하면, R1의 우선순위는 재설정될 수 있다. 목적지에 도달할 때까지 루트를 따라 우선순위들이 증가하는 동작자들의 예시적인 우선순위 순환이 도 9의 맥락에서 아래에 논의된다.
상충 구역은 레인들 사이의 위치, 이를테면, 교차로 또는 레인들로 주석이 부기되지 않은 로드맵의 부분이다. 2개의 레인 A 및 B가 상충 구역에 의해 분리되는 경우, 상충 구역을 통한 비-레인 경로(또는 에지)는 레인들 A와 B를 연결할 수 있으며, 여기서, 레인으로서 분류되지 않은 임의의 경로는 비-레인 경로로 지칭될 수 있다. 예들로서, 양방향 경로가 비-레인 경로이거나, 동작자가 다른 동작자와 상충하게 되는 것을 유발하는 경로가 비-레인 경로이다. 일부 예들에서, 로드맵은 레인들 및 상충 구역들을 가질 수 있다. 이러한 예들 중 일부에서, 적어도 2개의 레인, 예컨대, 레인 A 및 레인 B를 갖는 로드맵 R에 대해 조건 C가 존재할 수 있다. 예컨대, 레인 A와 레인 B가 레인 A와 레인 B 사이의 상충 구역 CR1을 횡단하는 비-레인 경로 NLP1에 의해 연결된다고 가정한다. 그 때, 로드맵 R에는, NLP1이 횡단하는 상충 구역 CR1의 각각의 레인 L1에 대해, 경로 NLP1의 시작으로의 또는 상충 구역 밖으로의 레인 전용 경로가 존재할 때, 조건 C가 존재할 수 있다. CR1과 같은 상충 구역의 예는, 도 2의 하단 부분에서의 상충 구역(250)의 맥락에서 아래에 논의된다.
조건 C를 충족하는 로드맵들의 경우, 다중 동작자 루트 계획에서 교착들을 피하기 위한 다루기 쉬운 해가 획득될 수 있다. NP-하드(NP-hard) 다중 동작자 계획 문제를 레인 기반 로드맵들을 사용하는 계획 문제로 제한함으로써, 결과적인 제한된 문제는 계산적으로 다루기 쉬울 수 있다. 추가로, 레인들에 대한 제한은 많은 실제 계획 문제들에 대해 합리적일 수 있다. 그 때, 다중 동작자 계획 문제에 대한 해는, 하나 이상의 상충 구역을 횡단할 수 있는 시작 위치로부터 목적지 위치까지의 하나 이상의 에지 및/또는 레인의 집합으로서 특정될 수 있는 루트들을 발견하는 것을 수반할 수 있다.
다중 동작자 계획자는 다중 동작자 계획에 대한 현재사용 환경의 로드맵 R을 수신 및 사용할 수 있으며, 여기서, R은, N > 0인 N개의 동작자에 의해 사용되는 M > 0인 M개의 레인의 지향되게 연결된 그래프일 수 있으며, N은, 시작 구성에서, 모든 각각의 레인에 대해, 적어도 하나의 동작자에 적합화될 만큼 충분한 공간이 존재하도록 충분히 작을 수 있거나, 일부 관련된 경우들에서, N은, 로드맵에서의 레인들의 모든 각각의 순환에 대해 적어도 하나의 동작자에 적합화될 충분한 공간이 있도록 택해진다. M 및 N은, 피킹 및 배치 동작과 같은 동작을 동작자가 수행할 만큼 충분히 큰 적어도 하나의 구역이 로드맵에 존재하도록 택해질 수 있다.
로드맵 R을 사용하여, 다중 동작자 계획자는 동작자 A1을 일 레인 상의 그의 현재 위치 CL로부터 동일하거나 다른 레인 상의 다른 위치 AL로 라우팅할 수 있다. 로드맵 R이 연결된 그래프이므로, CL과 AL 사이에 레인들의 순환 CY가 존재한다. 이전 문단에서 언급된 바와 같이, CY 상에 적어도 하나의 빈 자리가 존재한다. 동작자들을 CL과 AL 사이에서 CY 주변으로 이동시킴으로써, 다중 동작자 계획자는 동작자 A1이 위치 AL에 도달할 때까지 동작자들에 따라 빈 자리를 이동시킬 수 있다. 레인들의 순환 주변으로 동작자들을 이동시키는 것은, 예컨대, 도 3에 도시된 시나리오(300)의 로봇(330) 및 도 5a 내지 도 5f에 도시된 시나리오(500)의 로봇(530)의 맥락에서 아래에 더 상세히 논의된다. 모든 N개의 동작자가 CY 상에 있게 되는 경우라 하더라도, 동작자 A1은 다항 시간 내에 AL로 이동될 수 있다. 순환 자리옮김의 끝에서, 순환 당 적어도 하나의 빈 자리가 여전히 존재한다. 동작자 A1이 위치 AL에 있게 된 후에, 다중 동작자 계획자는 동작자 A의 우선순위를 재설정할 수 있고, 예컨대, 다른 동작자 A2의 상대적으로 높은 우선순위에 기반하여 동작자 A2가 선택될 수 있으며, 동작자 A2는 동작자 A1과 유사한 방식으로 라우팅될 수 있다. 이러한 순환 자리옮김 알고리즘은, 레인 기반 그래프들의 제한과 동작자들의 우선순위 순서화의 조합이, 일반적인 다중 동작자 계획 문제를 교착들 없이 다중 동작자 계획자에 의해 다항 시간 내에 해가 구해질 수 있는 문제로 감소시키기에 충분하다는 것을 입증한다.
일반적으로, 로드맵 R1은 레인 및 비-레인 에지들 둘 모두를 갖는 연결된 그래프일 수 있다. 동작자가 레인으로부터 떠날 필요가 있을 때마다, 동작자는 하이퍼에지, 또는 상충 결정의 목적들을 위해 전체적으로 처리되는 레인 상에서 끝나는 에지들의 시퀀스를 예비할 수 있다. 레인들 사이의 하이퍼에지들의 일부로서 비-레인 에지들을 고려함으로써, 일반적인 레인-가능 그래프 R1이 레인 전용 그래프로서 처리될 수 있어서, 로드맵 R1에 대한 일반적인 다중 동작자 계획 문제가 또한 교착들 없이 다항 시간 내에 해가 구해질 수 있다.
모든 동작자들에 대한 초기 위치들 및 요구되는 목적지들이 주어지면, 다중 동작자 계획자는 위에 설명된 바와 같이 모든 동작자들에 우선순위들을 배정한다. 이어서, 다중 동작자 계획자는 모든 N개의 동작자에 대한 해들을 구성한다. 해는, 각각의 동작자에 대해, 대응하는 완료 시간들을 갖는 하이퍼에지들의 시퀀스를 특정한다. 해는, 모든 동작자들이 교착들 없이 그리고 다항 제한 시간량 내에 그들의 목적지들에 도달하도록 구성된다. 일부 경우들에서, 더 낮은 우선순위 동작자들은 더 높은 우선순위 동작자들이 통과할 수 있도록 우회할 것을 지시받을 수 있다. 그런 다음, 더 낮은 우선순위 동작자들은 그들의 목표 위치들로 진행할 것을 지시받는다. 일부 경우들에서, 더 높은 우선순위 동작자들은, 더 낮은 우선순위 동작자들이 더 높은 우선순위 동작자들의 경로로부터 벗어나기를 대기할 것을 지시받는다.
일부 예들에서, 다중 동작자 계획자는 N개의 동작자 각각에 대해 우선순위 순서를 계획할 수 있다. 각각의 동작자에 대해, 다중 동작자 계획자는, 모든 이전(더 높은 우선순위) 동작자들의 계획들을 고려하고 가능하게는 다음(더 낮은 우선순위) 동작자들의 위치들을 검토하면서, 동작자의 시작 또는 현재 위치로부터 그의 목적지 위치까지의 루트를 결정할 수 있다. 부분적 계획으로부터 에지들로 시작되는 동작자의 루트의 시작은 커밋될 수 있다. 일단 동작자의 루트가 다음 동작자의 마지막 위치를 넘어 이어지면, 루트는 잠정적이 될 수 있다. 그러므로, 다중 동작자 계획자는, A_HIGHEST_PRI가 모든 다른 동작자들 전에 라우팅되므로, 우선순위 순서가 A_HIGHEST_PRI인 제1 동작자가 자신의 목적지로 라우팅될 수 있음을 보장할 수 있다. A_HIGHEST_PRI에 대한 루트는 3D(2D 평면 + 1D 시간)의 유한한 경로인 것으로 간주될 수 있으며, 그 끝에서, 동작자에 대한 우선순위 A_HIGHEST_PRI가 재설정된다.
다중 동작자 계획자는, 이전 동작자들의 3D 경로들 "하에서" 각각의 다음 동작자에 대한 루트들을 계획한다. 동작자에 대한 루트는, 목적지 위치에서의 대기 및 우선순위 재설정을 비롯하여 이전 동작자들의 경로들 하에서 완전히 적합화될 수 있다. 일부 경우들에서, 동작자에 대한 루트는, 이탈을 위한 라우팅, 또는 더 높은 우선순위 동작자의 경로로부터 벗어나고, 후속하여, 이전에 라우팅된 동작자에 대한 우선순위 재설정을 대기하고, 그런 다음, 이탈을 원상태로 돌리도록 다시 순환시키기 위한 하이퍼에지를 포함할 수 있다. 극단적인 경우에서, 동작자는 제한된 횟수(즉, 더 높은 우선순위 동작자들의 수)를 이탈할 수 있다. 이러한 이탈들이 수행된 후에, 모든 더 높은 우선순위 동작자들이 그들 개개의 우선순위들을 재설정하여, 동작자에게는, 그가 자신의 루트를 따라 자신의 목적지 위치로 진행하는 것을 가능하게 하는 상대적으로 높은 우선순위가 남을 것이다.
동작자는 목적지 위치에서 요구되는 임의의 동작들을 완료하기 위한 시간 기간 동안 상대적으로 높은 우선순위 동작자로서 목적지 위치에 머무를 수 있으며, 그런 다음, 동작자의 우선순위가 재설정될 수 있다. 예컨대, 상대적으로 높은 우선순위 동작자가 계획으로부터 사라질 수 있고, 새로운 가장 낮은 우선순위 동작자가 동일한 위치에 나타날 수 있다. 일부 예들에서, 새로운 가장 낮은 우선순위 동작자에게는 처음에 작업이 배정되지 않으므로, 동작자가 작업을 배정받을 때까지 루트 계획을 겪지 않는다. 그러므로, 새로운 가장 낮은 우선순위 동작자는 상충 확인들에 관해서만 계획되는데, 즉, 새로운 가장 낮은 우선순위 동작자가 더 높은 우선순위 동작자의 루트를 차단하지 않음을 보장하기 위해서만 계획된다. 이러한 경우에서, 새로운 가장 낮은 우선순위 동작자는 더 높은 우선순위 동작자에게서 이탈하는 것으로 가정된다. 일부 예들에서, 모든 동작자들이 동일한 속도로 동작한다고 가정될 수 있는데, 이는, 어떠한 동작자들도 서로를 통과할 수 없음을 암시하며, 따라서, 이탈은 차단 동작자를 피하기 위한 유일한 방식일 수 있다. 다른 예들에서, 이러한 동일한 속도 가정이 완화될 수 있으며, 이는 동작자들이 통과하는 것을 허용할 수 있다.
동작 시, 로드맵에서 하나 이상의 레인이 예컨대, 장애물들, 유지보수가 필요한 동작자들 등에 의해 차단되게 될 수 있다. 레인 차단은 로드맵의 파티셔닝을 유발할 수 있는데, 예컨대, 로드맵의 2개의 부분 P1 및 P2가 하나의 레인 L1에 의해 연결되고 L1이 차단되게 된 경우, 로드맵은 부분들(현재 파티션들) P1 및 P2로 파티셔닝될 것이다. 그러한 차단들(또는 다른 이유들)로 인해 로드맵이 파티셔닝되어 동작자의 A_BLOCK 시작 위치가 그의 목적지 위치로부터 격리되는 경우, 다중 동작자 계획자는, 어떠한 다른 동작자들도 고려되지 않는 경우라 하더라도 동작자 A_BLOCK에 대한 루트가 존재하지 않는다고 결정할 수 있다. 이러한 경우에서, 다중 동작자 계획자는, 동작자 A_BLOCK을 라우팅함에 있어 문제가 있음을 표시하기 위해 예외를 발생시킬 수 있다. 그 예외에 대한 반응으로서, 동작자 A_BLOCK은 로드맵의 연결된 부분 내에 머무르는 새로운 작업에 배정될 수 있고/거나(예컨대, 로드맵이 파티셔닝되었을 때 A_BLOCK이 부분 P2에 있었던 경우, A_BLOCK은 루트가 P2 내에 있는 새로운 작업에 배정될 수 있음), 로드맵의 일부 영역들, 이를테면, 차단된 레인 L1 근처의 영역들이 차단되거나 막힌 것으로 선언될 수 있다. 달리 표시되지 않는 한, 다중 동작자 계획자에 의해 사용되는 로드맵은 연결된 것으로 가정된다.
동작자가 하나 이상의 더 높은 우선순위 동작자의 경로로부터 벗어날 것을 지시받은 경우, 동작자는 하나의 루트 상에서 동일한 위치를 여러 번 재방문할 수 있다. 그러한 거동을 낭비적인 순환 루트와 구별하기 위해, 더 높은 우선순위 동작자 A_HIPRI가 향후에 때때로 레인 L1(에지 E1) 상에서 이동하도록 배정된 경우, 동작자 A_LOPRI는 L1(또는 에지 E1)에 재방문하는 것이 허용된다. 일부 경우들에서, 동작자 A_LOPRI는 더 높은 우선순위 동작자들의 수에 1을 더한 횟수까지 레인 L1(에지 E1)에 방문하는 것이 허용될 수 있는데, 예컨대, A_LOPRI가 열 번째로 가장 높은 우선순위 동작자인 경우, A_LOPRI는 레인 L1(에지 E1)에 이탈들을 위한 9회에 더하여 자신 고유의 목적들을 위해 1회를 방문할 수 있으므로, A_LOPRI는 레인 L1(에지 E1)에 총 10회 방문할 수 있다.
다중 동작자 계획자는 로드맵의 하이퍼에지들을 횡단하는 동작자들에 대한 계획을 제공할 수 있다. 다중 동작자 계획자가 각각의 동작자에 대한 루트를 우선순위 순서로 결정한 후에, 위에 논의된 바와 같이, 하이퍼에지들의 N개의 시간 순서화된 시퀀스의 집합 ― 각각의 동작자 당 하나 ― 이 생성된다. 하이퍼에지들은 그들의 완료 시간들의 순서로 고려될 수 있다. 그런 다음, 각각의 부가된 에지가 다른 동작자들에 대한 계획에 이미 있는 임의의 에지들과 상충하지 않도록 처음 완료된 하이퍼에지로 시작하여 계획이 구축될 수 있다.
일반적으로, 다중 동작자 계획은 건널목 상충 동작자들을 중심으로 동작자들을 순서화할 필요성으로 인해 NP-하드 문제이므로, 교착들을 피하는 최적의 해에 도달하는 것은 다항 시간 내에 가능할 가능성이 낮다. 하지만, 로봇들을 라우팅하는 다중 동작자 계획 알고리즘들은 로봇들 간의 상충들 및/또는 교착들을 피할 수 있다. 추가로, 위에 논의된 바와 같이, 레인들을 수반하는 연결된 그래프들, 및 동작자들에 대한 단조적으로 증가하는 우선순위들, 이를테면, 동작자가 자신의 루트를 따라 이동한 시간량에 기반한 동작자 우선순위들을 활용하는 그러한 다중 동작자 계획 알고리즘들은 계산적으로 다루기 쉬울 수 있다. 따라서, 본원에서 설명된 기법들은, 창고 환경과 같은 환경에서 로봇들을 라우팅하는 것과 같은 다수의 예들에서 운용가능한 레인 관련 제한들을 갖는 로드맵들을 사용하여, 다중 동작자 계획 문제들에 대한 계산적으로 다루기 쉬운 해들을 가능하게 할 수 있다.
교착 없는 다중 동작자 계획을 위한 레인-주석부기 로드맵들의 사용
도 2는 예시적인 실시예에 따른, 4개의 로봇들(214, 224, 234, 244)이 단방향 레인들(Ls)(210, 212, 220, 222, 230, 232, 240, 242)의 교차로(246)에 있는 것을 수반하는 시나리오(200)를 도시한다. 도 2의 상단 부분은, 북쪽에서 남쪽으로 지향되는 레인(210) 상의 로봇(214), 동쪽에서 서쪽으로 지향되는 레인(220) 상의 로봇(224), 남쪽에서 북쪽으로 지향되는 레인(232) 상의 로봇(234), 및 서쪽에서 동쪽으로 지향되는 레인(242) 상의 로봇(244)을 도시한다. 레인(210)은 남쪽에서 북쪽으로 지향되는 레인(212)과 평행하고, 레인(220)은 서쪽에서 동쪽으로 지향되는 레인(222)과 평행하고, 레인(232)은 북쪽에서 남쪽으로 지향되는 레인(230)과 평행하고, 레인(242)은 동쪽에서 서쪽으로 지향되는 레인(220)과 평행하다.
도 2의 하단 부분에 도시된 바와 같이, 시나리오(200)는, 로봇(224)이 이제 상충 구역(CR)(250)을 포함하는 교차로(246) 내로 계속되는 것으로 계속된다. 상충 구역은 레인들, 예컨대 레인 A와 레인 B 사이의 구역일 수 있으며, 여기서, (i) 레인 A와 레인 B 사이의 경로의 시작 또는 (ii) 상충 구역 밖으로의 레인 전용 경로가 존재한다. 이러한 2개의 조건 중 제1 조건의 경우, 도 2의 하단 부분은, 레인(232)으로부터 레인(222)으로의 경로가 상충 구역(250)에서 레인들(232 및 222) 사이의 경로의 시작인 레인(232)을 포함하는 것을 도시한다. 이러한 2개의 조건 중 제2 조건의 경우, 도 2의 하단 부분은, 레인(220)으로부터 레인(240)으로 통과하여 연장되는 레인 전용 경로가 상충 구역(250)을 통해 밖으로 통과하는 것뿐만 아니라 레인(242)으로부터 레인(222)으로 통과하여 연장되는 레인 전용 경로가 상충 구역(250)을 통해 밖으로 통과하는 것을 도시한다. 교차로(246)는 동시에 다수의 상충 구역들을 포함할 수 있는데, 예컨대, 교차로(246)는 상충 구역(250), 및 레인들(210 및 230) 사이의 평행한 상충 구역을 포함할 수 있다는 것을 유의한다. 즉, 교차로는 하나 이상의 상충 구역의 예일 수 있지만, 상충 구역들은 교차로들과 상이할 수 있다. 교차로와 상이한 상충 구역의 다른 예로서, 상충 구역은, 레인들에 의해 주석이 부기되지 않고 몇몇 교차로들을 포함하는 로드맵, 이를테면, 도 7a 내지 도 7d에 도시된 예시적인 로드맵(720)의 부분을 포함할 수 있다. 상충 구역들의 다른 예들이 또한 가능하다.
도 3은 예시적인 실시예에 따른, 2개의 로봇(330, 332)이 레인들의 순환을 사용하는 것을 수반하는 시나리오(300)를 도시한다. 도 3의 최상단 부분은, 교차로(I)들(312 및 314)을 통해 연결된 레인들(320 및 322)을 포함하는 레인 순환(324)을 갖는 로드맵(310)을 도시한다. 로드맵(310)은, 로봇들(330, 332)을 포함하는 현재사용 환경의 로드맵일 수 있다. 레인들(320 및 324) 각각은 개개의 갭들(326 및 328)에 도달하기 전에 정지하며, 여기서, 갭들(326 및 328)은, 로봇이 개개의 교차로들(312 및 314)을 통해 이동하는 로봇들에 간섭하는 것에서 개개의 레인들(320 및 322)의 끝에서 정지할 수 있게 한다.
도 3의 최상단 부분에서 두 번째는, 둘 모두가 다중 동작자 계획자에 의해 레인(320) 상의 동쪽으로부터 서쪽으로 이동하도록 지향되는 2개의 로봇(330, 332)에 의해 부분적으로 점유된 로드맵(310)의 레인 순환(324)을 도시한다. 시나리오(300)에서, 다중 동작자 계획자는, 로봇이 자신의 루트를 따라 이동한 시간량에 기반하여 로봇에 대한 우선순위들을 결정한다. 시나리오(300)의 이러한 스테이지에서, 로봇(330)은 "Pri = 2"로 도 3에 표시된 2의 현재 우선순위를 갖고, 로봇(332)은 "Pri = 3"으로 도 3에 표시된 3의 현재 우선순위를 갖는다. 따라서, 로봇(332)은 로봇(330)보다 더 높은 우선순위를 갖고, 이는, 로봇(332)이 로봇(330)보다 자신의 루트를 따라 더 오래 이동했음을 표시한다.
시나리오(300)의 환경에 2개의 로봇만이 존재하므로, 로봇(332)의 우선순위는 환경 내의 모든 로봇들에 걸쳐 가장 높은 우선순위이다. 그 때, 로봇(332)의 우선순위가 가장 높은 우선순위라고 결정한 후에, 다중 동작자 계획자는, 로봇(332)이 레인(322) 상의 자신의 목적지에 도달할 수 있도록, 로봇(332)이 사용하기 위한 레인(320), 교차로(312), 및 레인(322)을 포함하는 루트를 예비할 수 있다.
도 3의 최상단 부분으로부터 두 번째는 또한, 로봇(330)의 목적지가 레인(320)의 서쪽 끝 근처에 있는 한편, 로봇(332)의 목적지가 레인(322)의 중앙 근처에 있는 것을 도시한다. 즉, 더 낮은 우선순위 로봇(330)은 상대적으로 자신의 목적지에 가까이 있는 반면, 더 높은 우선순위 로봇(332)은 상대적으로 자신의 목적지로부터 멀리 있다. 하지만, 더 낮은 우선순위 로봇(330)이 자신의 목적지에서(또는 로봇(332)이 자신의 목적지에 도달하기 전에 로드맵(310)의 레인 순환(324) 상의 다른 곳에서) 정지하는 경우, 로봇(330)은 레인(320)(또는 아마도 레인(322))을 차단할 것이어서, 더 높은 우선순위 로봇(332)이 자신의 목적지에 도달할 수 없다. 더 높은 우선순위 로봇(332)이 자신의 목적지로 진행할 수 있게 하기 위해서, 다중 동작자 계획자는, 자신의 목적지에서 정지하기 전에 레인 순환(324)을 통해 이동할 것을 더 낮은 우선순위 로봇(330)에 지시하며, 따라서, 로봇(330)이 로봇(332)을 차단하지 않는다.
도 3의 최상단 부분으로부터 두 번째는 또한, 로드맵(310)의 레인 순환(324)이 로봇들(330 및 332) 각각에 대해 충분한 공간에 더하여 적어도 하나의 부가적인 로봇(도 3에 도시되지 않음)에 대해 충분한 공간을 포함하는 것을 도시한다. 추가로, 레인 순환(324)은 로봇들 사이에 최소 추종 거리를 유지하기에 충분한 공간을 포함하며, 이러한 최소 추종 거리는 로봇(330) 주변의 버블(334)에 의해 표현되며, 여기서, 버블(334)은 로봇(330)과 다른 동작자들/로봇들 사이의 충돌들을 방지하기 위해 로봇(330)에 대해 예비된 공간의 구역이다. 다른 시나리오들에서, 유사한 버블 공간이 로봇(332)에 제공될 수 있다.
시나리오(300)는, 도 3의 최하단 부분으로부터 두 번째에 도시된 바와 같이, 더 낮은 우선순위 로봇(330)이 레인(320)을 차단하지 않도록 자신의 목적지를 지나가는 한편, 더 높은 우선순위 로봇(332)이 레인(322) 상에서 자신의 목적지로 진행하는 것으로 진행한다. 로봇들(330 및 332) 둘 모두가 루트 상에서 더 많은 시간을 소비함에 따라, 다중 동작자 계획자는 로봇들 둘 모두의 우선순위들을 각각 3 및 4로 증가시킨다.
도 3의 최하단 부분은, 로봇(332)이 다중 동작자 계획자에 의해 지시받은 바와 같이 자신의 목적지에서 정지하고, 다중 동작자 계획자가 로봇(332)의 우선순위를 그의 목적지에 도달한 후에 0으로 재설정하는 것을 도시한다. 또한, 다중 동작자 계획자는, 로봇(330)에게, 교차로(314)를 통해 레인 순환(324)의 레인들(322 및 320)을 따라 진행하여 자신의 목적지에 접근할 것을 지시했다. 교차로(314)를 통해 레인 순환(324)의 레인들(322 및 320)을 따라 이동하는 동안, 다중 동작자 계획자는 로봇(330)의 우선순위를 5로 증가시켰다. 일단 로봇(330)이 자신의 목적지에 도달하면, 다중 동작자 계획자는 로봇(330)에게 자신의 목적지에서 정지할 것을 지시할 수 있고, 시나리오(300)는 완료될 수 있다.
로봇들은, 장애물들, 이를테면 화물, 허가되지 않은 동작자들, 허가되지 않은 사람들, 및/또는 동작하지 않는 기계류가 루트를 따라 발견될 때 다시 라우팅될 수 있다. 그러한 시나리오들에서, 로봇을 차단하는 장애물이 루트 상에 있다고, 이를테면, 로봇(330 및/또는 332)을 차단하는 장애물이 레인(320) 상에 있다고 다중 동작자 계획자가 결정할 때, 다중 동작자 계획자는, 장애물의 존재를 표시하는 경고 메시지를 생성하고, 루트들이 장애물에 의해 차단된 로봇들에 대한 새로운 루트들을 결정할 수 있다. 예컨대, 시나리오(300) 동안, 로봇(332)이 교차로(314)에 있는 동안에 장애물이 레인(320)을 차단했다고 다중 동작자 계획자가 결정한 경우, 로봇(330)의 루트는 장애물에 의해 영향을 받을 수 있지만, 로봇(332)의 루트는 (로봇(332)이 자신의 목적지에 도달하기 위해서는 단지 교차로(314)를 비우고 레인(332)을 따라 이동하기만 할 필요가 있으므로) 영향을 받지 않을 것이다. 로봇(330)의 루트가 장애물에 의해 영향을 받는 경우, 다중 동작자 계획자는, 로봇(332)을 다시 라우팅하고, 장애물이 레인(320) 상에서 검출되었다는 경고 메시지 및/또는 다른 표시들을 생성하고, 장애물에 대해 레인(320)을 검사하기 위한 요청을 인간 또는 다른 동작자에 대해 전송하고/거나 장애물 주변에서 작업하고/거나 장애물을 치우려 시도하기 위한 다른 동작들을 수행할 수 있다.
도 4a 내지 도 4e는 예시적인 실시예에 따른, 로봇들이 교차로(450)에서 회전하는 것을 수반하는 시나리오(400)를 도시한다. 시나리오(400)는 2개의 단계를 갖는데, 둘 모두가 교차로(450)의 횡단들을 수반한다. 도 4a에 도시된 시나리오(400)의 제1 단계에서, 다중 동작자 계획자는, 교차로(450)를 통해 개개의 우회전들을 행할 것을 로봇들(414, 424, 436, 및 446)에 지시한다. 도 4b, 도 4c, 도 4d, 및 도 4e에 도시된 시나리오(400)의 제2 단계에서, 다중 동작자 계획자는, 교차로(450)를 통해 개개의 좌회전들을 행할 것을 로봇들(470, 472, 474, 및 476)에 지시한다.
도 4a는 8개의 레인, 즉, 북쪽으로부터 교차로(450)에 진입하는 레인(410), 북쪽을 향해 교차로(450)를 벗어나는 레인(412), 동쪽으로부터 교차로(450)에 진입하는 레인(420), 동쪽을 향해 교차로(450)를 벗어나는 레인(422), 남쪽으로부터 교차로(450)에 진입하는 레인(432), 남쪽을 향해 교차로(450)를 벗어나는 레인(430), 서쪽으로부터 교차로(450)에 진입하는 레인(442), 및 서쪽을 향해 교차로(450)를 벗어나는 레인(440)의 교차로(450)를 갖는 로드맵(402)을 도시한다. 시나리오(400)의 제1 단계에 대해 도 4a에서 로드맵(402)에 의해 표현된 환경은, 8개의 로봇, 즉, 레인(410) 상의 로봇(414), 레인(412) 상의 로봇(416), 레인(420) 상의 로봇(424), 레인(422) 상의 로봇(426), 레인(430) 상의 로봇(434), 레인(432) 상의 로봇(436), 레인(440) 상의 로봇(444), 및 레인(442) 상의 로봇(446)을 포함한다.
이러한 8개의 로봇 중 4개의 로봇, 즉, 로봇들(414, 424, 436, 및 446)이 시나리오(400)의 제1 단계 동안 교차로(450)를 통해 회전들을 수행할 것을 다중 동작자 계획자에 의해 지시받는다. 시나리오(400)의 제1 단계에서, 교차로(450)는 4개의 상충 구역: 레인들(410 및 440)을 연결하는 상충 구역(452a), 레인들(420 및 412)을 연결하는 상충 구역(452b), 레인들(442 및 430)을 연결하는 상충 구역(452c), 및 레인들(432 및 422)을 연결하는 상충 구역(452d)으로 분할될 수 있다.
시나리오(400)는, 다중 동작자 계획자가 레인(410)으로부터 레인(440)으로 우회전(418)을 행할 것을 로봇(414)에 지시하는 것으로 진행한다. 이러한 우회전을 수행하기 위해, 다중 동작자 계획자는 로봇(414)에 대해 상충 구역(452a)을 예비하고, 레인(440) 상으로 우회전(418)을 행하기 위해 상충 구역(452a)을 포함하는 교차로(450)의 부분을 통해 진행할 것을 로봇(414)에 지시한다. 교차로(450)가 어떠한 레인들도 포함하지 않으므로, 교차로(450)의 적어도 일부분, 예컨대 상충 구역(452a)은, 다른 로봇들이 레인들(410 및 440) 사이의 교차로(450)의 부분에 진입하는 것을 차단하도록 예비되어야 한다.
유사하게, 로봇들(424, 436, 및 446) 각각은, 다중 동작자 계획자에 의해 지시된 바와 같이, 개개의 레인들(420, 432, 442)로부터 개개의 레인들(412, 422, 430)로 개개의 우회전들(428, 438, 448)을 수행하고 있다. 이러한 우회전들을 수행하기 위해, 다중 동작자 계획자는 로봇(424)에 대해 상충 구역(452b)을 예비하고, 로봇(436)에 대해 상충 구역(452d)을 예비하고, 로봇(446)에 대해 상충 구역(452c)을 예비한다. 위에 언급된 바와 같이, 교차로(450)가 어떠한 레인들도 포함하지 않으므로, 교차로(450)의 적어도 일부분, 예컨대 상충 구역들(452b, 452c, 452d)은, 개개의 레인들(420 및 412), 레인들(432 및 422), 및 레인들(442 및 430) 사이의 회전들(428, 438, 및 448)을 가능하게 하기 위해, 다른 로봇들이 교차로(450)의 부분에 진입하는 것을 차단하도록 예비되어야 한다. 그 때, 로봇들(424, 436, 446)은, 개개의 레인들(412, 422, 430) 상으로의 개개의 우회전들(428, 438, 448)을 행하기 위해, 개개의 상충 구역들(452b, 452d, 452c)을 포함하는 교차로(450)의 개개의 부분들을 통해 진행한다. 상충 구역들(452a, 452b, 452c, 452d) 중 어떠한 상충 구역도 중첩되지 않으므로, 회전들(418, 428, 438, 448) 중 일부 또는 전부가 병렬로 수행될 수 있다.
다른 시나리오들에서, 상충 구역들(452a, 452b, 452c, 452d) 중 일부 또는 전부의 형상들이 도 4a에 도시된 것과 상이할 수 있다. 예컨대, 상충 구역들(452a-452d) 중 일부 또는 전부는, 상충 구역들(452a-452d) 각각이 레인들 사이의 우회전을 허용하지만 교차로(450)의 중앙을 가리지는 않도록 크기가 감소될 수 있다.
시나리오(400)의 제2 단계에서, 로봇들(470, 472, 474, 및 476)은, 도 4b, 도 4c, 도 4d, 및 도 4e에 도시된 바와 같이, 교차로(450)를 통해 좌회전들을 행할 것을 다중 동작자 계획자에 의해 지시받는다. 시나리오(400)의 제2 단계에 대한 환경은, 도 4b 내지 도 4e에서의 로드맵(402)에 의해 표현되며, 4개의 로봇: 로봇(470), 로봇(472), 로봇(474) 및 로봇(476)을 포함한다. 도 4b는, 시나리오(400)의 이러한 스테이지에서, 4개의 로봇이 교차로(450) 바로 밖에 있는데, 레인(410)에 로봇(470)이, 레인(420)에 로봇(472)이, 레인(432)에 로봇(474)이, 그리고 레인(442)에 로봇(476)이 있다는 것을 도시한다. 적어도 시나리오(400)의 제2 단계 동안, 다중 동작자 계획자는, 로봇이 자신의 루트를 따라 이동한 시간량에 기반하여 로봇에 대한 우선순위들을 결정한다. 특히, 다중 동작자 계획자는 다음과 같이 로봇들(470-476)에 우선순위들을 배정하는데, 로봇(470)은 3의 우선순위를 갖고, 로봇(472)은 4의 우선순위를 갖고, 로봇(474)은 2의 우선순위를 갖고, 로봇(476)은 1의 우선순위를 갖는다. 그러므로, 로봇(472)은 이러한 4개의 로봇 중 가장 높은 우선순위를 갖는다.
시나리오(400)는, 다중 동작자 계획자가, 굵은 검은색 선들을 사용하여 도 4b 내지 도 4e에 윤곽이 표시된 상충 구역(454)의 밖에서 정지할 것을 로봇들(470, 472, 및 474)에 지시하는 것으로 계속되며, 여기서, 상충 구역(454)은 교차로(450)를 포함한다. 다중 동작자 계획자는, 로봇들(470, 474, 및 476)을, 그들 개개의 우선순위들 각각이 로봇(472)의 우선순위보다 낮으므로 상충 구역(454) 밖에 정지시키며, 따라서, 로봇들(470, 474, 및 476)은 적어도 로봇(472)이 상충 구역(454)을 횡단할 때까지 대기한다. 로봇(472)이 상충 구역(454)에서의 로봇들 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는 상충 구역(454)을 로봇(472)의 배타적 사용에 대해 예비하고, 이어서, 레인(420)으로부터 상충 구역(454)을 통해 레인(430)으로 좌회전(460)을 행할 것을 로봇(472)에 지시한다. 상충 구역(454)이 어떠한 레인들도 갖지 않으므로, 상충 구역(454)은, 로봇(472)이 레인들(420 및 430) 사이에서 이동하는 동안 로봇들(470, 474, 및 476)이 진입하는 것을 차단하도록 예비되어야 한다.
도 4c에 도시된 바와 같이, 시나리오(400)는, 로봇(472)이 좌회전(460)을 완료하고 레인(430)에서 남쪽으로 계속되는 것으로 계속된다. 다중 동작자 계획자는 로봇들(470, 472, 474, 및 476)의 우선순위들을 4, 5, 3, 및 2의 개개의 값들로 업데이트한다. 로봇(470)이 상충 구역(454)을 사용하기를 대기하는 3개의 로봇(로봇들(470, 474, 및 476) 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는 상충 구역(454)을 로봇(470)의 배타적 사용에 대해 예비하고, 이어서, 레인(410)으로부터 상충 구역(454)을 통해 레인(422)으로 좌회전(462)을 행할 것을 로봇(470)에 지시한다. 상충 구역(454)이 어떠한 레인들도 갖지 않으므로, 상충 구역(454)은, 로봇(470)이 레인들(410 및 422) 사이에서 이동하는 동안 로봇들(474 및 476)이 진입하는 것을 차단하도록 예비되어야 한다.
도 4d를 참조하면, 시나리오(400)는, 로봇(470)이 좌회전(462)을 완료하고 레인(422) 상에서 동쪽으로 계속되는 것으로 계속된다. 다중 동작자 계획자는 적어도 로봇들(470, 474, 및 476)의 우선순위들을 5, 4, 및 3의 개개의 값들로 업데이트한다. 로봇(474)이 상충 구역(454)을 사용하기를 대기하는 2개의 로봇(로봇들(474 및 476) 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는 상충 구역(454)을 로봇(474)의 배타적 사용에 대해 예비하고, 이어서, 레인(432)으로부터 상충 구역(454)을 통해 레인(440)으로 좌회전(464)을 행할 것을 로봇(474)에 지시한다. 상충 구역(454)이 어떠한 레인들도 갖지 않으므로, 상충 구역(454)은, 로봇(474)이 레인들(432 및 440) 사이에서 이동하는 동안 로봇(476)이 진입하는 것을 차단하도록 예비되어야 한다.
도 4e에 도시된 바와 같이, 시나리오(400)는, 로봇(474)이 좌회전(464)을 완료하고 레인(440)에서 서쪽으로 계속되는 것으로 계속된다. 다중 동작자 계획자는 적어도 로봇들(474 및 476)의 우선순위들을 5 및 4의 개개의 값들로 업데이트한다. 로봇(476)이 상충 구역(454)을 사용하기를 대기하는 가장 높은 우선순위 로봇이므로, 다중 동작자 계획자는 상충 구역(454)을 로봇(476)의 배타적 사용에 대해 예비하고, 이어서, 레인(442)으로부터 상충 구역(454)을 통해 레인(412)으로 좌회전(466)을 행할 것을 로봇(476)에 지시한다. 상충 구역(454)이 어떠한 레인들도 갖지 않으므로, 상충 구역(454)은, 로봇(476)이 레인들(442 및 412) 사이에서 이동하는 동안 임의의 다른 로봇들이 진입하는 것을 차단하도록 예비되어야 한다. 좌회전(466)의 완료 시, 다중 동작자 계획자는 로봇(476)에 대한 상충 구역(454)의 예비를 소거할 수 있고, 로봇(476)은 레인(412) 상에서 북쪽으로 진행할 수 있고, 시나리오(400)는 완료될 수 있다.
시나리오(400)의 제2 단계는 시나리오(100)를 미러링하며, 여기서는, 4개의 에지의 교차로에 있는 4개의 로봇이 개개의 좌회전들을 행하려 시도하지만 결국 교착 상태에 이르게 된다. 대조적으로, 시나리오(400)의 제2 단계에서의 로봇들 중 4개의 로봇 전부가 위에 논의된 바와 같은 교착 없이 성공적인 좌회전들을 행한다. 따라서, 시나리오(400)의 제2 단계는, 단방향 에지들의 로드맵에 기반하여 우선순위화된 로봇들에 지시하는 다단계식 계획자가 적어도 일부 이전에 불가피했던 교착들을 피할 수 있다는 것을 예시한다.
일부 다른 시나리오들에서, 차단된 구역은, 동작자가 차단된 구역을 횡단함에 따라 동작자 뒤에서 적어도 부분적으로 해제될 수 있다. 예컨대, 일단 로봇(476)이 회전(466)을 행하면서 레인들(422 및 442)의 북쪽으로 이동했으면, 레인들(440 및 442) 사이의 분할선(및/또는 레인들(420 및 422) 사이의 분할선) 남쪽의 상충 구역(454)의 부분은 해제될 수 있는 반면, 그 분할선 북쪽의 상충 구역(454)의 부분은 차단된 채/로봇(476)에 대해 예비된 채 유지될 수 있다. 분할선 남쪽의 상충 구역(454)의 부분을 해제함에 있어서, 로봇(476)이 좌회전(466)을 행하는 것을 완료하는 동안 교차로(450)의 일부 우회전들 및 횡단들이 발생할 수 있고, 따라서, 하나 이상의 로봇이 레인들 사이를 이동할 때 안전성을 유지하면서 부가적인 트래픽 흐름이 허용된다.
도 5a 내지 도 5f는 예시적인 실시예에 따른, 로봇들이 복수의 레인들을 갖는 환경에서 내비게이팅하는 것을 수반하는 시나리오(500)를 도시한다. 시나리오(500)에서, 로드맵(502)에 의해 표현된 환경은 로봇들(510, 520, 및 530)을 갖고, 이들 각각은, 다중 동작자 계획자에 의해 그들 개개의 목적지들로 라우팅되고, 3, 1, 및 2의 개개의 우선순위들을 갖는다. 로봇(510)이 이러한 3개의 로봇 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는, 도 5a에 도시된 바와 같이, 로봇(510)의 배타적 사용에 대해 상충 구역들(540 및 542) 사이의 레인(504)을 예비한다. 로봇(520)은, 로봇(520)이 로봇(510)보다 더 낮은 우선순위를 갖는다 하더라도, 로봇(510)이 로봇(520)의 위치에 도달할 수 있기 전에 자신의 목적지에 도달하기 위해 레인(504)의 일부분을 활용할 수 있다. 따라서, 다중 동작자 계획자는, 도 5b 및 도 5c에 도시된 바와 같이, 로봇(520)의 상대적으로 낮은 우선순위에 관계없이 로봇(520)이 자신의 목적지로 진행할 수 있게 한다. 특히, 다중 동작자 계획자는 로봇(510)의 배타적 사용에 대한 상충 구역(542)의 예비를 해제하고, 로봇(520)의 배타적 사용에 대해 상충 구역(542)을 예비하고, 레인(508) 상으로 상충 구역(542)을 통과할 것을 로봇(520)에 지시하고, 상충 구역(542)의 예비를 해제한다.
또한 도 5b 및 도 5c에서 보이는 바와 같이, 로봇(530)은, 로봇(510)이 레인(506) 상의 자신의 목적지를 향해 진행함에 따라 로봇(510)에 대해 예비된 레인(504)을 이후 로봇(530)이 차단할 것이므로, 레인(504) 상의 자신의 목적지를 지나갈 것을 다중 동작자 계획자에 의해 지시받는다. 특히, 다중 동작자 계획자는, 로봇(530)의 배타적 사용에 대해 상충 구역(542)을 예비하고, 레인(506) 상으로 상충 구역(542)을 통과할 것을 로봇(530)에 지시하고, 상충 구역(542)의 예비를 해제하고, 로봇(510)의 배타적 사용에 대해 상충 구역(542)을 예비한다. 따라서, 다중 동작자 계획자는, 더 높은 우선순위 로봇에 대한 레인을 차단하는 것을 피하기 위해, 레인(504)과 같은 레인을 로봇들(520 및 530)과 같은 더 낮은 우선순위 로봇들이 벗어날 수 있게 하기 위해, 로봇(510)과 같은 더 높은 우선순위 로봇에 대한 상충 구역, 이를테면 상충 구역(542)의 예비를 해제할 수 있다.
이러한 시나리오에서, 루트는 시작 및 종료 목적지 사이에서의 레인들의 시퀀스 및 레인들 상에서의 대기 시간들을 포함한다. 다중 동작자 계획자는, 더 높은 우선순위 로봇(510) 전에 로봇(520)이 상충 구역(542)을 통해 진행할 수 있게 하여 레인(504) 상에서의 로봇(520)의 대기 시간을 변경함(즉, 대기 시간을 감소시킴)으로써 로봇(510)에 대한 레인(504)을 차단하는 것을 피하도록 로봇(520)의 루트를 변경한다. 또한, 다중 동작자 계획자는, 로봇(530)의 루트에 레인 순환 및 대응하는 대기 시간들을 부가함으로써 로봇(510)에 대한 레인(504)을 차단하는 것을 피하도록 로봇(530)의 루트를 변경하며, 따라서, 로봇(530)은 더 높은 우선순위 로봇(510)이 레인(506) 상의 자신의 목적지에 도달할 수 있게 하도록 레인들(504 및 506)을 횡단할 수 있다. 도 5d, 도 5e, 및 도 5f는, 로봇(530)이 레인(504) 상의 자신의 목적지에 도달하기 전에 레인 순환 주변으로 진행하는 것을 도시한다. 일단 로봇(530)이 자신의 목적지에 도달하면, 시나리오(500)는 종료될 수 있다.
시나리오(500)는, 도 5a에 도시된 바와 같이, 로봇(510)이 상충 구역(540)을 향해 동쪽으로 가고, 로봇들(520 및 530)이 레인(504) 상에서 상충 구역(540)으로부터 상충 구역(542)을 향해 가는 것으로 시작되며, 여기서, 로봇(520)은 로봇(530)보다 상충 구역(542)에 더 가까이 있다. 로봇(510)에 대한 목적지는 상충 구역(542)으로부터 남쪽으로 지향되는 레인(506) 상에 있고, 로봇(520)에 대한 목적지는 상충 구역(542)의 북쪽의 레인(508) 상에 있고, 로봇(530)에 대한 목적지는 상충 구역(542) 바로 서쪽의 레인(504) 상에 있다.
시나리오(500) 동안, 다중 동작자 계획자는, 로봇이 자신의 루트를 따라 이동한 시간량에 기반하여 로봇에 대한 우선순위들을 결정한다. 시나리오(500)의 시작 시, 다중 동작자 계획자는, 각각의 개개의 로봇이 그들 개개의 루트들 상에서 이동하는 동안 소요한 시간량에 기반하여, 로봇(510)에 3의 우선순위를, 로봇(520)에 1의 우선순위를, 그리고 로봇(530)에 2의 우선순위를 배정했다. 로봇(510)이 3개의 로봇 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는, 상충 구역(540), 레인(504), 상충 구역(542), 및 레인(506)을 포함하는 루트를 로봇(510)에 의한 사용에 대해 예비한다. 다중 동작자 계획자는 또한, 로봇(530)에, 레인(504) 상의 자신의 목적지에 도달하기 전에(도달하기 위해) 레인(504) 상의 자신의 목적지를 지나 진행하고 상충 구역들(542, 546, 544, 및 540)을 통해 시계방향 레인 순환을 취할 것을 지시한다. 다중 동작자 계획자는 또한, 로봇(510)이 (레인(504) 상을 통과하는 것이 실현가능하지 않으므로) 상충 구역(542)을 통해 진행할 수 있게 하기 위해 로봇들(520 및 530) 둘 모두가 상충 구역(542)을 통해 진행되어야 한다는 것을 인지하며, 따라서, 상충 구역(542)을 로봇(520)에 대해 일시적으로 예비한다. 다중 동작자 계획자는 레인(508)이 임의의 로봇 또는 다른 동작자에 의해 활용되지 않는다는 것을 추가로 인지하며, 따라서, 로봇(520)에, 자신의 목적지에 도달하기 위해 상충 구역(542)을 통해 레인(508) 상으로 진행할 것을 지시한다. 따라서, 로봇(520)이 로봇들(510, 520, 및 530) 중 가장 낮은 우선순위를 갖는다 하더라도, 로봇(520)은, 로봇(510) 또는 로봇(530)이 상충 구역(542)에 도달할 수 있기 전에 로봇(520)이 상충 구역(542)을 통해(그리고 레인(508) 상으로) 진행할 수 있도록 로봇들(510 및 530)보다 앞선 위치에 있다. 따라서, 낮은 우선순위 로봇(520)이 자신의 목적지에 도달하기 위해 더 높은 우선순위 로봇들(510 및 530) 전에 레인(504) 및 상충 구역(542)을 "몰래 통과(sneak through)"할 수 있다.
도 5b는, 로봇(520)이 상충 구역(542)을 통해 레인(504)으로부터 레인(508)으로 좌회전을 행하고, 로봇(530)이 상충 구역(542)을 향해 레인(504) 상에서 동쪽으로 진행하고, 로봇(510)이 상충 구역(540)을 통해 레인(504)을 향해 직진으로(동쪽으로) 진행하는 것을 도시한다.
도 5c는, 로봇(520)이 레인(508) 상의 자신의 목적지에 도달했고 그의 우선순위가 0으로 재설정된 것을 도시한다. 로봇(520)은 시나리오(500)의 남아 있는 지속기간 동안 자신의 목적지에 머무른다. 도 5c는 또한, 로봇(530)이 레인(504)으로부터 상충 구역(542)을 통해 레인(506) 상으로 우회전을 행했고, 상충 구역(546)을 향해 레인(506) 상에서 남쪽으로 가는 것을 도시한다. 로봇(530)이 자신의 시계방향 레인 순환 상에서 진행할 수 있게 하기 위해, 다중 동작자 계획자는, 상충 구역들(546, 544, 및 540) 및 개개의 연결 레인들을 로봇(530)에 의한 사용에 대해 예비했다. 로봇들(520 및 530)이 상충 구역(542)을 비운 후에, 다중 동작자 계획자는 또한 상충 구역(542)을 로봇(510)에 대해 예비한다.
도 5d를 참조하면, 시나리오(500)는, 로봇(530)이 레인(506)의 끝으로 진행하고, 상충 구역(546)을 통해 우회전하고, 상충 구역(544)을 향해 서쪽으로 진행하는 것으로 계속된다. 일단 로봇(530)이 레인(506) 및 상충 구역(546)을 비우면, 다중 동작자 계획자는 레인(506) 및 상충 구역(546) 상의 로봇(530)에 대한 임의의 관련된 예비들을 소거하고, 로봇(530)이 상충 구역(544)을 향한 서쪽으로 가는 레인 상의 예비를 가짐을 보장한다.
또한, 로봇(510)은 상충 구역(542)을 통해 레인(504)으로부터 레인(506)으로 우회전을 행하도록 진행한다. 일단 로봇(510)이 레인(504)을 비우면, 다중 동작자 계획자는 레인(504) 상의 로봇(510)에 대한 예비를 소거하고, 로봇(510)이 상충 구역(542)의 예비 및 자신의 목적지를 향한 레인(506) 상의 예비를 가짐을 보장한다.
도 5e는, 로봇(510)이 레인(506) 상의 자신의 목적지에 도달했고 그의 우선순위가 0으로 재설정된 것을 도시한다. 로봇(510)은 시나리오(500)의 남아 있는 지속기간 동안 자신의 목적지에 머무른다. 도 5c는 또한, 로봇(530)이 상충 구역(544)을 통해 우회전을 행했고, 상충 구역(540)을 향해 북쪽으로 가는 것을 도시한다. 로봇(530)이 상충 구역(544)을 비운 후에, 다중 동작자 계획자는 로봇(530)에 대한 상충 구역(544)의 예비를 소거할 수 있고, 로봇(530)이 상충 구역(544)으로부터 상충 구역(540)으로의 북쪽으로 가는 레인 상의 예비를 가짐을 보장할 수 있고, 상충 구역(540)을 로봇(530)에 대해 예비할 수 있다. 시나리오(500)의 이러한 스테이지에서, 로봇(550)이 로드맵(502)에 의해 표현되는 환경에 진입하여 상충 구역(540)을 향해 동쪽으로 진행한다. 로봇(550)이 로봇(530)의 6의 현재 우선순위보다 낮은 1의 우선순위를 갖고, 로봇(530)이 상충 구역(540)(로봇(530)의 사용에 대해 예비되어 있음)에 상대적으로 가까이 있으므로, 다중 동작자 계획자는, 상충 구역(540)에 도달하기 전에 정지할 것을 로봇(550)에 지시한다. 즉, 로봇(550)은, 상충 구역(540)에 대한 로봇들(530 및 550)의 상대적인 위치들로 인해, 다중 동작자 계획자에 의해 상충 구역(540)을 몰래 통과하는 것이 허용되지 않는다.
도 5f는, 로봇(530)이 상충 구역(540)을 통해 레인(504) 상으로 우회전을 행했고, 자신의 목적지로 진행했음을 도시한다. 로봇(530)이 상충 구역(540)을 통한 자신의 우회전을 시작하기 전에, 다중 동작자 계획자는, 로봇(530)이 레인(504) 상의 예비를 가짐을 보장하며, 이는, 로봇(530)이 자신의 목적지로 진행할 수 있게 한다. 이어서, 일단 로봇(530)이 상충 구역(540)을 통한 자신의 우회전을 완료하면, 다중 동작자 계획자는 로봇(530)에 대한 상충 구역(540)의 예비를 소거하고, 로봇(550)에 대해 상충 구역(540)을 예비한다. 이어서, 로봇(550)은 상충 구역(540)을 통해 좌회전을 행할 것을 지시받고, 도 5f에 도시된 바와 같이, 상충 구역(544)을 향해 남쪽으로 가게 진행한다. 일단 로봇(530)이 자신의 목적지에 도달하면, 시나리오(500)는 완료될 수 있다.
도 6a 내지 도 6f는 예시적인 실시예에 따른, 2개의 로봇(610, 620)이 상충 구역(630)으로서 표현되는 교차로를 통과하는 것을 수반하는 시나리오(600)를 도시한다. 시나리오(600) 동안, 다중 동작자 계획자는, 로봇이 자신의 루트를 따라 이동한 시간량에 기반하여 로봇에 대한 우선순위들을 결정한다. 도 6a는, 시나리오(600)의 시작 시, 로드맵(602)에 의해 표현되는 환경에서, 다중 동작자 계획자가, 로봇(620)에 배정된 1의 우선순위보다 더 높은 3의 우선순위를 로봇(610)에 배정하는 것을 도시한다.
로드맵(602)은, 상충 구역(630)을 향해 동쪽으로 지향되는 레인(632), 상충 구역(630)으로부터 멀어지게 서쪽으로 지향되는 레인(642), 상충 구역(630)으로부터 멀어지게 동쪽으로 지향되는 레인(634), 상충 구역(630)을 향해 서쪽으로 지향되는 레인(644), 상충 구역(630)을 향해 남쪽으로 지향되는 레인(636), 및 상충 구역(630)으로부터 멀어지게 북쪽으로 지향되는 레인(646)을 포함한다.
로봇(610)이 환경 내의 임의의 동작자 중 가장 높은 우선순위를 가지므로, 다중 동작자 계획자는, 로봇(610)이 레인(646) 상의 자신의 목적지에 도달할 수 있게 하기 위해 로봇(610)에 대해 레인(632), 상충 구역(630) 및 레인(646)을 예비한다. 다중 동작자 계획자는 또한, 레인(644) 상의 자신의 위치에서 정지할 것을 로봇(620)에 지시한다. 시나리오(600)에서, 로봇들(610 및 620) 둘 모두는 레인(646) 상에서 공통 목적지를 갖는다.
도 6b는, 로봇(610)이 레인(646) 상의 공통 목적지로 진행하는 것으로 시나리오(600)가 계속되는 것을 도시한다. 이 시점에, 로봇(620)은, 상충 구역(630)이 여전히 로봇(610)에 대해 예비되어 있으므로, 레인(644) 상에서 대기를 유지한다. 시나리오(600)는, 로봇(610)이 4의 시간 단위 동안 공통 목적지에 있게 된 후 다중 동작자 계획자가 로봇(620)에 대해 상충 구역(630)을 예비하는 것으로 진행한다. 시나리오(600)에서, 다중 동작자 계획자는, 로봇(610)이 공통 목적지에서 작업을 완료하기 위해 적어도 4의 단위를 소요할 것으로 다중 동작자 계획자가 추정하므로, 로봇(610)이 공통 목적지에 있게 된 후 4의 시간 단위를 대기한다. 로봇들(610 및 620) 둘 모두가 레인(646) 상에 공통 목적지를 가지므로, 다중 동작자 계획자는, 로봇(610)이 공통 목적지를 벗어날 때까지 로봇(620)이 로봇(620)의 목적지에 도달하는 것을 로봇(610)이 차단할 것이므로, 로봇(610)이 작업(또는 작업들)을 완료하기 위해 공통 목적지에서 가질 수 있는 약간의 시간(예컨대, 4의 시간 단위)을 로봇(610)에 할당한다. 다른 시나리오들에서, 다중 동작자 계획자는, 로봇(또는 다른 동작자)이 자신의 목적지에 도달한 후 더 많거나 더 적은 시간 단위 후에 상충 구역의 예비를 변경할 수 있다. 도 6c는, 다중 동작자 계획자가, 로봇(620)에 대해 상충 구역(630)을 예비하기 전에, 로봇(610)이 자신의 목적지에 있게 된 후 4의 시간 단위 동안 대기한 후의 로드맵(602)에 의해 표현되는 환경을 도시한다.
도 6d는, 로봇(610)이 레인(646) 상의 공통 목적지에서 자신의 작업을 완료하고 로봇(610)이 레인(646) 상에서 북쪽으로 이동하기 시작함에 따라, 다중 동작자 계획자가 임계 구역(630)을 향해 레인(644)을 따라 진행할 것을 로봇(620)에 지시한 후에 시나리오(600)가 진행하는 것을 도시한다. 다중 동작자 계획자는 또한, 로봇(610)의 공통 목적지에서의 작업의 완료 시에 로봇(610)의 우선순위를 0(즉, 가능한 가장 낮은 우선순위)으로 재설정한다.
도 6e에 의해 예시된 바와 같이, 시나리오(600)는, 로봇(620)이 레인(646) 상의 공통 목적지에 도달하는 것으로 진행한다. 공통 목적지에 도달할 시, 로봇(620)은 공통 목적지에서 피킹 및 배치 동작(들)과 같은 하나 이상의 작업을 수행하기 시작한다.
도 6f에 의해 예시된 바와 같이, 시나리오(600)는, 로봇(620)이 레인(646) 상의 공통 목적지에서 작업(들)을 수행하는 것으로 진행한다. 다중 동작자 계획자는, 로봇(620)의 공통 목적지에서의 작업(들)의 완료 시에 로봇(620)의 우선순위를 0으로 재설정한다. 다중 동작자 계획자가 로봇(620)의 우선순위를 0으로 재설정한 후, 시나리오(600)는 종료될 수 있다.
로드맵은, 위에 표시된 바와 같이, 레인들을 포함할 수 있다. 일부 경우들에서, 로드맵은 어떠한 레인들도 포함하지 않을 수 있다. 그 때, 로드맵에는 레인들을 포함하도록 "주석이 부기"되거나 마킹될 수 있다. 즉, 현재사용 로드맵에 주석이 부기될 수 있어서, 로드맵의 일부 또는 모든 에지들이 레인들로서 마킹될 수 있다. 로드맵의 일부분을 레인으로서 주석을 부기하기 위해, 주석이 부기된 부분/레인은 하나 이상의 레인 배향 요건을 충족할 수 있다. 예시적인 레인 배향 요건들은 다음을 포함하지만 이에 제한되지 않는다:
● 레인이, 레인 상의 동작자가 임의의 다른 레인 상의 임의의 다른 동작자와 상충하지 않도록 다른 레인들로부터 충분히 분리된 그래프의 단방향 에지라는 요건; 예컨대, 잠재적 레인 L_HIT1 상의 로봇 R_HIT1이 가능하게는 잠재적 레인 L_HIT2 상의 로봇 R_HIT2와 충돌할 수 있는 경우; 즉, 잠재적 레인들 L_HIT1 및 L_HIT2의 기하하적 구조가, 가능한 충돌들을 피하기에는 L_HIT1와 L_HIT2가 서로 너무 가깝도록 이루어진 경우, 로봇 R_HIT1이 로봇 R_HIT2와 상충하므로, 잠재적 레인들 L_HIT1 및 L_HIT2는 이러한 레인 배향 요건을 충족하지 않음.
● 레인이 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져 끝난다는 요건; 즉, 레인은 교차로 횡단을 허용할 만큼 교차로들로부터 충분히 멀리서 끝남.
● 로드맵에서의 레인들이 적어도 하나의 레인들의 순환을 형성한다는 요건; 관련된 레인 배향 요건은, 로드맵에서의 모든 각각의 레인이 레인들의 순환의 일부라는 것임.
● 로드맵에서의 모든 레인들의 총 길이가, 로드맵에 의해 표현되는 환경 내의 모든 동작자들에 더하여 적어도 하나의 다른 동작자에 대한 부가적인 공간에 적합화될 만큼 충분히 클 수 있다는 요건; 관련된 레인 배향 요건은, 로드맵에서의 모든 레인들의 총 길이가, 충돌들을 피하기 위해, 로드맵에 의해 표현되는 환경 내의 모든 동작자들에 적어도 하나의 다른 동작자에 대한 부가적인 공간을 더한 것에 동작자들 사이의 "버블들" 또는 공간들에 대한 추가의 부가적인 공간을 더한 것에 적합화될 만큼 충분히 클 수 있다는 것임.
다른 레인 배향 요건들이 또한 가능하다.
일부 실시예들에서, 컴퓨팅 디바이스 상에서 실행되는 사용자 인터페이스 및/또는 다른 소프트웨어가 레인들로 로드맵에 주석을 부기하는 것을 가능하게 할 수 있다. 특히, 사용자 인터페이스 및/또는 다른 소프트웨어는, 로드맵에 주석을 부기할 때, 위에 언급된 레인 배향 요건들 중 일부 또는 전부를 강제할 수 있다.
일부 로드맵들 및 동작자들의 집합들의 경우, 레인 주석부기는 유연할 수 있다. 하나의 극단적인 경우에서, 로드맵에서의 매우 적은 에지들만이 위에 언급된 총 길이 요건을 충족하는 레인들로서 마킹될 수 있다. 하지만, 레인들을 거의 갖지 않는 것은 동작자들이 상대적으로 큰 상충 영역들을 예비하는 것을 유발할 수 있다. 일부 예들에서, 레인은 레인과 중첩되고 아마도 레인과 반대 방향으로 이동하는 비-레인들을 동반할 수 있다. 비-레인들은, 동작자가 다른 레인에 대해 전체 상충 구역을 예비하는 한, 동작자가 목적지 동작자에 대해 더 짧은 비-레인 루트를 취할 수 있게 할 수 있다. 예컨대, 레인들이 로드맵 상에 반시계방향 루프를 형성하는 경우, 동작자는, 동작자가 레인의 안전성으로 돌아갈 만큼 충분히 큰 구역을 예비할 수 있다면, 비-레인들을 사용하여 루프의 부분에 대해 시계방향으로 갈 수 있다. 즉, 동작자는 레인을 따라 증분적인 진행을 할 수 있지만, 비-레인/상충 구역 횡단의 경우, 동작자는 전체 비-레인/상충 구역을 횡단하도록 라우팅되거나 또는 동작자는 전체 비-레인/상충 구역을 피하도록 라우팅될 수 있다.
로드맵에는, 동작자들이 주차 공간들, 딥 레인들 등과 같은 특정 위치들에서 환경의 나머지로 되돌아가기 전에 대기할 수 있게 하는 하나 이상의 대기 레인으로 주석이 부기될 수 있다. 예컨대, 창고에서는, 하역장이 대중적인 목적지 위치일 수 있다. 하역장에서 대기 레인을 갖는 것은, 동작자가 작업을 완료한 후에 재배정받는 프로세스에 있는 동안 대기 레인 상에서 대기할 수 있게 한다. 대기를 위한 레인이 없으면, 동작자는 다른 에지들 및 아마도 에지들 사이의 상충 구역을 예비해야 할 것인데, 이는, 하역장의 적어도 일부를 다른 동작자들로부터 차단하는 것을 유발할 가능성이 있을 것이다. 대기 레인은, 대기 레인이 적어도 하나의 동작자를 수용할 수 있는 한 임의의 길이를 가질 수 있다. 일부 예들에서, 대기 레인은, 하나 이상의 비-레인 에지를 통해 로드맵의 나머지에 연결될 수 있다.
도 7a 내지 도 7d는 예시적인 실시예에 따른, 로드맵 편집기(710)로서 도면들에 도시된 컴퓨팅 디바이스의 사용자 인터페이스가 사용되어 로드맵(720)에 레인들로 주석을 부기하는 시나리오(700)를 도시한다. 시나리오(700) 동안, 사용자 인터페이스는, 레인들로 현재사용 로드맵에 점진적으로 주석을 부기하고 주석이 부기된 로드맵의 레인 배향 요건들에 관한 정보를 제공하는 데 사용된다.
도 7a는 로드맵 편집기(710)로서의 컴퓨팅 디바이스(702)에 의해 제공되는 시나리오(700)의 사용자 인터페이스를 예시한다. 로드맵 편집기(710)는, 메뉴(730), 편집 구역(732), 대화창(dialog)(도 7a에서 734a로 라벨링됨), 및 시스템 바(736)를 포함한다. 메뉴(730)는 편집 구역(732)에 표시된 것으로 도시된 로드맵(720)과 같은 로드맵과 관련된 다수의 선택들을 열거하며, 여기서, 메뉴(730)의 선택은, 택했을 때, 로드맵 편집기(710)로 하여금 택해진 선택과 관련된 하나 이상의 동작을 수행하게 할 수 있다.
도 7a는, 메뉴(730)가 맵 획득 선택(712), 맵 저장 선택(714), 에지 주석부기 모드 선택(716), 및 퇴장 선택(718)을 포함하는 것을 도시한다. 도 7a, 도 7b, 도 7c, 및 도 7d에 도시된 것들 이외의 다른 실시예들에서, 메뉴(730)는 더 많거나, 더 적거나, 그리고/또는 상이한 메뉴 선택들을 제공할 수 있다. 또 다른 실시예들에서, 다른 그래픽 요소들, 이를테면, 풀-다운 메뉴들, 아이콘들, 및/또는 대화창들이 메뉴(730)의 하나 이상의 선택과 함께 사용되고/거나 그를 대체할 수 있다.
맵 획득 선택(712)은, 데이터 저장소로부터 로드맵을 검색하여 검색된 로드맵을 로드맵 편집기(710)에 로딩하는 데 사용될 수 있다. 맵 저장 선택(714)은, 로드맵 편집기(710)에 현재 로딩된 로드맵을 데이터 저장소에 저장하는 데 사용될 수 있다. 예컨대, 로드맵은 비-휘발성 데이터 저장소에 하나 이상의 파일로서 저장될 수 있으며, 비-휘발성 데이터 저장소는 도 14a의 데이터 저장소(1404)의 맥락에서 아래에 논의된다.
에지 주석부기 모드(716)는, 편집 구역(732)이 에지들을 레인들로서 주석을 부기하는 데 사용되고 있는 경우에 인에이블링되거나, 편집 구역(732)이 에지들을 레인들로서 주석을 부기하는 데 사용되고 있지 않은 경우 디스에이블링된다. 도 7a에서, 에지 주석부기 모드(716)에 대한 메뉴 항목은, 에지 주석부기 모드(716)가 인에이블링됨을 표시하기 위해 볼드체로 도시되어 있는데, 예컨대, 편집 구역(732)에 표시된 로드맵의 에지들이 레인들로서 주석이 부기될 수 있다. 예컨대, 로드맵의 에지 E가 로드맵 편집기(710)를 통해 선택될 수 있고, 에지 주석부기 모드(716)가 인에이블링된 경우, 에지 E의 일부 또는 전부가 레인으로서 주석이 부기될 수 있다. 퇴장 선택(718)은 로드맵 편집기(710)의 실행을 종결하는 데, 예컨대, 로드맵 편집기(710)를 위한 애플리케이션을 퇴장하는 데 사용될 수 있다. 다른 시나리오들에서, 에지 주석부기 모드(716)가 디스에이블링될 수 있는데, 이러한 시나리오들에서, 에지 주석부기 모드(716)는 일반(즉, 볼드체가 아닌) 글꼴로 표시될 수 있다. 또 다른 시나리오들에서, 색상, 글꼴 크기, 및/또는 볼드체가 아닌 다른 글꼴 품질들과 같은 다른 그래픽 기법들이 사용되어 인에이블링된 주석부기 글꼴 모드와 디스에이블링된 주석부기 글꼴 모드가 구별될 수 있다.
편집 구역(732)은 로드맵들을 생성, 검토, 및 업데이트하는 데 사용될 수 있다. 예컨대, 로드맵들은, 레인들을 주석을 부기하고/거나 편집 구역(624)에 표시된 로드맵의 에지들, 레인들, 및/또는 교차로들을 생성, 검토, 업데이트, 및/또는 삭제함으로써 업데이트될 수 있다. 로드맵을 생성, 검토, 및/또는 업데이트한 후, 로드맵은, 예컨대, 맵 저장 선택(714)을 선택함으로써 나중의 사용을 위해 데이터 저장소에 저장될 수 있다. 시나리오(700)에서, 맵 저장 선택(714)이 최근에 선택되었고, 따라서, 로드맵(720)이 최근에 데이터 저장소에 저장되었다. 다른 시나리오들에서, 색상, 글꼴 크기, 및/또는 볼드체가 아닌 다른 글꼴 품질들과 같은 다른 그래픽 기법들이 사용되어 최근에 저장된 로드맵과 최근에 저장되지 않은 로드맵이 구별될 수 있다.
대화창(734a)은 편집되고 있는 로드맵에 관한 정보, 이를테면, 이에 제한되진 않지만, 주석이 부기된 로드맵의 레인 배향 요건들에 관한 정보를 제공할 수 있다. 예컨대, 도 7a에 표시된 바와 같은 로드맵(720)은 양방향 비-레인 에지(NLE)(738)를 포함하고, 2개의 레인, 즉, 로드맵(720)의 최상부에 있는 레인(722) 및 로드맵(720)의 최하부에 있는 레인(724)으로 주석이 부기되었다. 이러한 주석부기들에 대한 응답으로, 로드맵 편집기(710)는 로드맵(720)이 위에 논의된 바와 같은 하나 이상의 레인 배향 요건을 충족하는지 여부 및/또는 레인 배향 요건들에 관한 다른 정보를 결정할 수 있고, 그 정보를, 대화창, 이를테면 대화창(734a)을 통해, 또는 다른 사용자 인터페이스 기법들, 예컨대, 팝업, 별개의 정보 창 또는 스크린 등을 통해 제공할 수 있다. 예컨대, 로드맵(720)에 레인을 부가하려고 시도할 때, 로드맵 편집기(710)는, 새로운 레인이 위에 언급된 레인 배향 요건들을 충족한다는 것을, 예컨대, 새로운 레인이 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝나는지 여부를 확인할 수 있다. 도 7a에 도시된 특정 예에서, 대화창(734a)은, "어떠한 레인 순환들도 검출되지 않음", 즉, 레인들(722 및 724)이 순환을 형성하지 않음을, 그리고 레인들(722 및 724)이 "대략적으로 4개의 동작자만을 보유할 수 있음"을 표시한다. 시나리오(700)에서, 대략적으로 12개의 동작자가 로드맵(720)에 의해 표현되는 환경에서 동작할 것으로 예상되므로, 4개의 동작자만을 보유하는 레인들은, 로드맵(720)의 레인들이 최소 12개(예상)의 동작자/로봇에 대해 충분한 공간을 가져야 하는 레인 배향 요건을 위반하는 것으로 간주될 수 있다.
일부 예들에서, 로드맵 편집기(710)는, 새로운 레인들에 적합한 로드맵(720) 상의 하나 이상의 위치를 결정하고, 그런 다음, 컴퓨팅 디바이스를 사용하여 새로운 레인(들)으로 로드맵 상의 위치(들)에 주석을 부기하려고 시도할 수 있다. 예컨대, 로드맵 편집기(710)는, 복도 또는 적어도 하나의 로봇이 이동할 만큼 충분히 넓은 다른 영역인 것으로 보이는 위치를 발견하고, 그런 다음, 그 위치에 하나 이상의 새로운 레인으로 주석을 부기하려고 시도할 수 있다. (잠재적인) 새로운 레인들을 위한 위치들을 발견하기 위한 다른 기법들이 또한 가능하다.
시스템 바(736)는 삼각형, 원형, 및 사각형을 도시하며, 이들은, 삼각형을 선택함으로써 로드맵 편집기(710) 전에 실행된 이전 애플리케이션으로 되돌아가고, 원형을 선택함으로써 홈 스크린으로 되돌아가고, 사각형을 선택함으로써 모든 실행된 애플리케이션들의 목록을 제공하는 데 사용될 수 있다. 그래픽 요소들, 이를테면, 메뉴(732), 편집 구역(732)에 도시된 레인들, 에지들, 교차로들, 및 대화창들, 및 시스템 바(736)의 삼각형, 원형, 및 사각형은 컴퓨팅 디바이스(702)의 사용자 입력 디바이스를 사용하여 선택될 수 있다. 예시적인 사용자 입력 디바이스들은 도 14a에 도시된 사용자 인터페이스 모듈(1401)의 맥락에서 아래에 설명된다.
레인들(722 및 724)로의 로드맵(720)의 주석부기는 로드맵(720)을 3개의 구역: 레인(722)을 포함하는 주석이 부기된 구역, 레인(724)을 포함하는 다른 주석이 부기된 구역, 및 레인(722)과 레인(724) 사이의 주석이 부기되지 않은 구역(UR)(726)으로 분할한다. 다중 동작자 계획자가 로봇들에 지시하기 위해 도 7a에 도시된 바와 같은 로드맵(720)을 사용할 것인 경우, 다중 동작자 계획자는, 주석이 부기되지 않은 구역(726) 전체를 하나의 (큰) 상충 구역으로 간주할 수 있다. 그 때, 주석이 부기되지 않은 구역(726)을 통해 로봇 R_UN을 라우팅하기 위해, 다중 동작자 계획자는, 주석이 부기되지 않은 구역(726) 모두를 로봇 R_UN의 배타적 사용에 대해 예비할 수 있다.
시나리오(700)는, 로드맵(720)에 부가적인 레인들로 주석이 부기되고 그런 다음 로드맵(720)이 저장되는 것으로 계속된다. 도 7b는, 이전에 레인들(722 및 724)로만 주석이 부기되었던 로드맵(720)에 레인들(740, 742, 및 744)로 주석이 부기된 것을 도시한다.
이러한 주석부기들에 대한 응답으로, 로드맵 편집기(710)는 로드맵(720)이 위에 논의된 바와 같은 하나 이상의 레인 배향 요건을 충족하는지 여부 및/또는 레인 배향 요건들에 관한 다른 정보를 결정할 수 있고, 그 정보를, 대화창, 이를테면 대화창(734b)을 통해, 또는 도 7a의 맥락에서 언급된 바와 같은 다른 사용자 인터페이스 기법들을 통해 제공할 수 있다. 도 7b에 도시된 특정 예에서, 대화창(734b)은, "어떠한 레인 순환들도 검출되지 않음", 즉, 레인들(722, 724, 740, 742, 및 744)이 순환을 형성하지 않음을, 그리고 레인들(722, 724, 740, 742, 및 744)이 총괄적으로 "대략적으로 10개의 동작자만을 보유할 수 있음"을 표시한다. 시나리오(700)에서, 대략적으로 12개의 동작자가 로드맵(720)에 의해 표현되는 환경에서 동작할 것으로 예상되므로, 4개의 동작자만을 보유하는 레인들은, 로드맵(720)의 레인들이 최소 12개(예상)의 동작자/로봇에 대해 충분한 공간을 가져야 하는 레인 배향 요건을 위반하는 것으로 간주될 수 있다.
레인들(740, 742, 및 744)로의 로드맵(720)의 주석부기는, 로드맵(720)을 6개의 구역: (1) 레인(722)에 대한 주석이 부기된 구역, (2) 레인(724)에 대한 주석이 부기된 구역, (3) 레인(744)에 대한 주석이 부기된 구역, (4) 레인(740), 레인(742), 및 비-레인 에지(738)를 포함하는 부분적으로 주석이 부기된 구역, (5) 레인(722)과 레인(724) 사이의 주석이 부기되지 않은 구역(746), 및 (6) 레인들(740 및 742) 우측으로의 주석이 부기되지 않은 구역(748)으로 분할하는 것으로 간주될 수 있다. 다중 동작자 계획자가 로봇들에 지시하기 위해 도 7b에 도시된 바와 같은 로드맵(720)을 사용할 것인 경우, 다중 동작자 계획자는, 주석이 부기되지 않은 구역(746) 전체를 하나의 (큰) 상충 구역으로 그리고 주석이 부기되지 않은 구역(748) 전체를 레인들(740 및 742)을 포함하는 부분적으로 주석이 부기된 구역에 의해 주석이 부기되지 않은 구역으로부터 분리된 다른 (큰) 상충 구역으로 간주할 수 있다. 일부 예들에서, 다중 동작자 계획자는, 주석이 부기되지 않은 구역(746)으로부터 주석이 부기되지 않은 구역(748)으로 가기 위해 레인들(740 및 742)을 사용함으로써 부분적으로 주석이 부기된 구역을 통해 로봇들을 라우팅할 수 있고, 주석이 부기되지 않은 구역(748)으로부터 주석이 부기되지 않은 구역(746)으로 라우팅하기 위해 (비-레인 에지(738)가 양방향 에지라 하더라도) 단방향 방식으로 비-레인 에지(738)를 사용할 수 있다.
시나리오(700)는, 로드맵(720)에 부가적인 레인들로 주석이 부기되고 그런 다음 로드맵(720)이 저장되는 것으로 계속된다. 도 7c는, 레인들(722, 724, 740, 742, 및 744)로 이전에 주석이 부기되었던 로드맵(720)에 이제 부가적인 레인들(750a, 752a, 754a, 756a, 758a, 및 760a)로 주석이 부기된 것을 도시한다. 레인들(750a, 752a, 754a, 756a, 758a, 및 760a)은, 상충 구역들로서 처리될 수 있는 중간 비-레인 구역들과 함께 레인 순환(754)을 형성할 수 있다. 또한, 레인들(750a, 752a, 754a, 756a, 758a, 및 760a)의 부가는, (도 7b에 도시된) 주석이 부기되지 않은 구역(746)의 크기를, 에지들(754a, 756a, 740, 742, 및 724) 사이에 놓이는 더 작은 주석이 부기되지 않은 구역(760)으로 감소시킨다. 추가로, 대화창들(734a 및 734b)과 비교하여, 대화창(734c)은, 어떠한 레인 순환들도 검출되지 않는다는 경고 또는 12개의 동작자보다 적은 동작자가 로드맵(720)의 레인들에 의해 보유될 수 있다는 경고를 더 이상 포함하지 않으며, 오히려, 대화창(734c)은, 로드맵(720)의 레인들이 이제 "대략적으로 16개의 동작자의 보유"를 "할 수 있음"을 언급한다. 시나리오(700)에서, 주석이 부기된 로드맵의 레인 배향 요건은 각각의 에지가 레인 순환의 일부라는 것이며, 따라서, 대화창(734c)은, "모든 레인들이 레인 순환에 있지는 않음"이라는 "경고"를 언급하는데, 예컨대, 적어도 레인들(740, 742, 및 744)이 레인 순환의 일부가 아니다.
다중 동작자 계획자가 로봇들에 지시하기 위해 도 7c에 도시된 바와 같은 로드맵(720)을 사용할 것인 경우, 다중 동작자 계획자는, 주석이 부기되지 않은 구역(760) 전체를 하나의 (큰) 상충 구역으로 그리고 주석이 부기되지 않은 구역(748) 전체를 레인들(740 및 742)을 포함하는 부분적으로 주석이 부기된 구역에 의해 주석이 부기되지 않은 구역으로부터 분리된 다른 (큰) 상충 구역으로 간주할 수 있다. 다중 동작자 계획자는 또한, 레인 순환(754)을 포함하는 로드맵(720)의 상단 부분에서의 교착들 없이 로봇들/동작자들이 진행할 수 있게 하기 위해, 중간 상충 구역들/비-레인 에지들을 차단 및 차단해제하는 것을 포함하여, 레인 순환(754) 주변으로 로봇들/동작자들을 라우팅할 수 있다.
시나리오(700)는, 로드맵(720)에 부가적인 레인들로 주석이 부기되고 그런 다음 로드맵(720)이 저장되는 것으로 계속된다. 도 7d는, 로드맵(720)에 부가적인 레인들로 주석이 부기되어서 레인 순환(754)이 하나의 양방향 레인 순환 또는 한 쌍의 레인 순환들로 간주될 수 있게 된 것을 도시하며, 제1 순환의 레인들은 시계 방향으로의 이동을 허용하는 레인들(754a 및 756a) 및 중간 비-레인 구역들(위에 언급된 바와 같이 상충 구역으로 간주될 수 있음)을 포함하고, 제2 순환의 레인들은 반시계 방향으로의 이동을 허용하는 레인들(754b 및 756b) 및 중간 비-레인 구역들(위에 언급된 바와 같이 상충 구역으로 간주될 수 있음)을 포함한다. 대화창(734d)은, 로드맵(720)의 레인들이 이제 "대략적으로 24개의 동작자의 보유"를 "할 수 있음"을 언급하고, "모든 레인들이 레인 순환에 있지는 않음"이라는 "경고"를 재송출하는데, 예컨대, 레인들(740, 742, 및 744)이 여전히 레인 순환의 일부가 아니다.
다중 동작자 계획자는, 도 7d에 도시된 것과 같은 로드맵(720)을 사용하여 도 7c에 도시된 것과 같은 로드맵(720)과 유사한 방식으로 로봇들에 지시할 수 있다. 하지만, 도 7d에 도시된 바와 같은 로드맵(720)은 레인들 상의 동작자들에 대한 부가적인 공간, 및 레인 순환(754)을 포함하는 로드맵(720)의 상단 부분에서 로봇들을 라우팅하는 부가적인 유연성을 제공한다. 도 7d에 도시된 바와 같은 로드맵(720)이 저장된 후에, 시나리오(700)가 완료될 수 있다.
레인들, 상충 구역들, 주석이 부기된 구역들, 주석이 부기되지 않은 구역들, 부분적으로 주석이 부기된 구역들, 에지들, 및 로드맵들의 다른 모델들이 또한 가능하다. 일부 실시예들에서, 로봇의 모델, 이를테면 운동학적 모델이 사용되어, 로봇식 디바이스가 레인의 끝에 도달하기 전에 정지하기보다는 정지해야 하는 하나 이상의 위치를 결정할 수 있다.
동작자가 목적지 위치에서 동작을 시작할 때, 다중 동작자 계획자는, 목적지 위치 주변 영역이 얼마나 오래 차단된 채 유지되는지를 결정하기 위해 동작자가 목적지 위치에 얼마나 오래 머무를 것인지를 추정할 수 있다. 목적지 위치가 차단되는 동안, 다중 동작자 계획자는, 차단된 목적지 위치를 피하기 위해 다른 동작자들을 다시 라우팅할 수 있으며, 이는 아마도 다른 동작자들이 더 긴 루트들을 취하게 한다. 이어서, 일단 목적지 위치가 다시 이용가능하게 되면, 이를테면, 동작자가 목적지 위치를 활용하는 하나 이상의 동작을 완료할 때, 다중 동작자 계획자는, 목적지 위치 주변 영역에 대한 차단을 해제할 수 있으며, 따라서, 목적지 위치 주변 영역이 차단해제될 수 있다. 목적지 위치가 차단해제되게 될 때, 다중 동작자 계획자는, 차단된 목적지 위치 영역을 사용하도록 다른 동작자들을 다시 라우팅할 수 있으며, 이는 아마도 다른 동작자들이 목적지 위치 영역에 대한 더 짧은 루트들을 취하게 한다.
도 8은 예시적인 실시예에 따른, 위치들을 차단 및 차단해제하기 위한 방법(800)의 흐름도이다. 방법(800)은, 적어도 도 14a의 맥락에서 아래에서 설명되는 컴퓨팅 디바이스(1400)와 같은 컴퓨팅 디바이스에 의해 수행될 수 있다. 특히, 컴퓨팅 디바이스(1400)는, 본원에서 설명된 다중 동작자 계획자를 구현하는 소프트웨어를 실행하여 방법(800)을 수행할 수 있다. 방법(800)이 로봇들을 수반하는 동작들의 관점에서 설명되지만, 방법(800)의 기법들은 일반적인 동작자들에 적용가능하다.
블록(810)에서, 다중 동작자 계획자는, 로봇 R을 포함하는 복수의 동작자들을 갖는 환경의 위치 L에 로봇 R이 접근하고 있다고 결정할 수 있다.
블록(820)에서, 다중 동작자 계획자는 위치 L을 로봇 R의 사용에 대해 예비할 수 있고, 위치 L을 사용할 것을 로봇 R에 지시할 수 있다. 예컨대, 로봇 R은 상대적으로 높은 우선순위 동작자일 수 있다. 위치 L을 로봇 R에 대해 예비함으로써, 다중 동작자 계획자는, 다른 더 낮은 우선순위 로봇이 로봇 R이 위치 L에 있는 동안 로봇 R을 차단하거나 그에 다른 방식으로 간섭하지 않음을 보장할 수 있다.
블록(830)에서, 다중 동작자 계획자는, 로봇 R이 위치 L에 있는 동안 임의의 다른 로봇들이 위치 L을 사용하려고 계획 중인지 여부를 결정할 수 있다. 다중 동작자 계획자는, 로봇 R이 위치 L에 얼마나 오래 머무를 것인지의 추정에 기반하여 이러한 결정을 행할 수 있고, 그 추정에 기반하여, 다중 동작자 계획자는 위치 L이 얼마나 오래 차단될 것인지의 추정을 결정할 수 있다. 예컨대, 로봇 R이 60 초 동안 위치 L에 있을 것으로 추정되고, 로봇 R은 위치 L에 정지하고 재시작하여 그로부터 벗어나는 데 5 초를 소요할 것으로 추정되는 경우, 다중 동작자 계획자는 위치 L이 (대략적으로) 65 초 동안 차단될 것으로 추정할 수 있다. 위치가 얼마나 오래 차단될 수 있는지를 추정하기 위한 다른 기법들이 또한 가능하다.
로봇 R이 위치 L에 있는 동안 로봇 R 이외의 하나 이상의 로봇이 위치 L을 사용하려고 계획 중이라고 다중 동작자 계획자가 결정하는 경우, 다중 동작자 계획자는 블록(840)으로 진행할 수 있다. 그렇지 않으면, 다중 동작자 계획자는, 로봇 R이 위치 L에 있는 동안 로봇 R만이 위치 L을 사용하려고 계획 중이라고 결정할 수 있고, 블록(850)으로 진행할 수 있다.
블록(840)에서, 다중 동작자 계획자는, 블록(830)에서 논의된, 로봇 R이 위치 L에 있는 동안 위치 L을 사용하려고 계획 중인 로봇 R 이외의 하나 이상의 로봇인 로봇 R1, R2 ..., Rn을 위치 L로부터 멀어지게 다시 라우팅할 수 있다.
블록(850)에서, 다중 동작자 계획자는, 위치 L을 사용할 것을 로봇 R에 지시할 수 있다. 위치 L에 도달할 시, 로봇 R은 위치 L에서 동작 OP를 수행할 수 있다. 동작 OP의 예들은, 위치 L의 횡단, 위치 L에 있는 동안 상충 구역 및/또는 레인에 대한 예비를 대기하는 것, 및 위치 L에서의 피킹 및 배치 동작 중 하나 이상을 포함하지만 이에 제한되지 않는다. 일부 예들에서, 더 많거나, 더 적거나, 그리고/또는 상이한 동작들이 위치 L에서의 동작 OP로서 수반될 수 있다. 이어서, 다중 동작자 계획자는, 로봇 R이 위치 L에서 동작 OP를 완료했다고 결정할 수 있는데, 예컨대, 동작 OP가 완료되었다는 것을 로봇 R이 다중 동작자 계획자에 통지할 수 있고/거나 로봇 R이 위치 L에서 동작 OP를 완료하기 위한 시간량을 다중 동작자 계획자가 추정할 수 있고, 추정 시간량이 만료되었을 수 있다.
블록(860)에서, 다중 동작자 계획자는, 위치 L에 있는 동안 로봇 R에 의해 동작 OP가 완료되었다고 결정한 후에, 위치 L을 벗어날 것을 로봇 R에 지시할 수 있다. 로봇 R이 위치 L을 벗어났다고 결정할 시, 다중 동작자 계획자는, 로봇 R의 사용에 대한 위치 L 상의 예비를 소거할 수 있다.
블록(870)에서, 위치 L의 예비를 소거한 후에, 다중 동작자 계획자는, 임의의 로봇들의 임의의 루트들이 위치 L을 통해 다시 라우팅함으로써 개선될 수 있는지 여부를 결정할 수 있다. 다중 동작자 계획자는, 위치 L을 사용하는 루트 R_WITH_L에 대한 추정 시간 T_WITH_L을 결정하고, 그 추정 시간을 위치 L을 사용하지 않는 대응하는 루트 R_WITHOUT_L에 대한 추정 시간 T_WITHOUT_L과 비교하는 것에 기반하여 이러한 결정을 행할 수 있다. T_WITH_L이 T_WITHOUT_L 미만인 경우, 다중 동작자 계획자는, 루트 R_WITH_L을 사용하도록 로봇을 다시 라우팅하는 것이 대응하는 루트 R_WITHOUT_L에 비해 개선될 것이라고 결정할 수 있다. 로봇들의 루트들이 개선될 수 있는지 여부를 결정하기 위한 다른 기법들, 예컨대, 시간 이외의 다른 기준 및/또는 부가적인 기준에 기반하여 개선을 결정하는 기법들이 또한 가능하다.
로봇 R이 위치 L에 있는 동안 로봇 R 이외의 하나 이상의 로봇이 위치 L을 사용하려고 계획 중이라고 다중 동작자 계획자가 결정하는 경우, 다중 동작자 계획자는 블록(880)으로 진행할 수 있다. 그렇지 않으면, 다중 동작자 계획자는 임의의 로봇들을 위치 L을 사용하도록 다시 라우팅하지 않기로 결정할 수 있고, 방법(800)은 완료될 수 있다.
블록(880)에서, 다중 동작자 계획자는 대응하는 로봇들 R3, R4 ..., Rm에 대한 하나 이상의 루트를 위치 L을 사용하도록 업데이트할 수 있는데, 그 이유는, 블록(870)에서, 이러한 업데이트된 루트들이 개선되는 것으로 결정되었기 때문이다. 다중 동작자 계획자는, 위치 L을 사용하도록 라우팅된 로봇들 R3, R4 ..., Rm 중 가장 높은 우선순위 로봇 R_HIPRI를 결정하고 로봇 R_HIPRI의 사용에 대해 위치 L을 예비할 수 있다. 블록(880)의 절차들의 완료 시, 방법(800)은 완료될 수 있다.
도 9는 예시적인 실시예에 따른, 동작자에 대한 우선순위 순환(900)을 도시한다. 우선순위 순환(900)은, 도 9에서 로봇 R1로 표시된 동작자, 및 R1을 포함하는 복수의 동작자들을 갖는 환경에서 동작하는 로봇 R1에 지시하는 다중 동작자 계획자에 의해 수행될 수 있다. 우선순위 순환(900)이 로봇들을 수반하는 동작들의 관점에서 설명되지만, 우선순위 순환(900)의 기법들은 일반적인 동작자들에 적용가능하다. 일부 예들에서, 다중 동작자 계획자 및 환경 내의 동작자들 중 일부 또는 전부가 우선순위 순환(900)과 같은 우선순위 순환들을 수행할 수 있다.
우선순위 순환(900)은, 다중 동작자 계획자가 새로운 루트로 시작할 것으로 R1에 지시할 때 시작될 수 있다. 이 시점에, R1에는 예컨대 0의 우선순위 값인 최소 우선순위가 배정되며, 여기서, 우선순위들은, 도 3 내지 도 6f의 맥락에서 위에 논의된 우선순위들과 같이, 음이 아닌 숫자들을 사용하여 표시되고, 더 큰 우선순위 값은 더 높은 우선순위를 표시하는데, 이를테면, 12의 우선순위 값은 10보다 더 높은 우선순위 값을 표현한다. 로봇은, 예컨대 로봇 R1이 자신의 제1 루트에 대해 스케줄링될 때, 초기 우선순위로서 최소 우선순위를 배정받을 수 있거나, 동작자가 자신의 루트를 완료할 때 발생하는 우선순위 재설정의 일부로서 배정받을 수 있다.
로봇 R1이 자신의 루트를 따라 진행함에 따라, 로봇 R1의 우선순위 값은 단조적으로 증가할 수 있는데, 이를테면, R1의 우선순위 값은, 적어도 도 3 및 도 4b 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 로봇이 자신의 루트 상에서 소비한 시간량에 기반한다. 루트 도중에 있는 동안, 로봇 R1은, 적어도 도 3 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 더 높은 우선순위 로봇(들)이 자신들의 루트들을 따라 진행할 수 있게 하기 위해, 하나 이상의 더 높은 우선순위 로봇 R2 ... Rn의 경로로부터 벗어나 있고/거나 그 경로 밖에서 대기할 것을 다중 동작자 계획자에 의해 지시받을 수 있다. 로봇 R1이 자신의 루트를 따라 진행함에 따라, R1의 우선순위가 증가해서, R1은 상대적으로 높은 우선순위 로봇이 되고, 하나 이상의 더 낮은 우선순위 로봇 R3 ... Rm은 R1의 루트의 경로로부터 벗어나 있고/거나 경로 밖에서 대기할 것을 지시받을 수 있다. 일단 R1이 자신의 목적지에 도달하면, R1의 우선순위는 재설정될 수 있고, 우선순위 순환(900)의 반복이 완료될 수 있다.
도 9는, 우선순위 순환(900)의 반복이 블록(910)에서 시작될 수 있음을 도시하며, 여기서, 다중 동작자 계획자는 로봇 R1에 새로운 루트를 배정할 수 있다. 로봇 R1은, 예컨대, 로봇 R1이 처음 서비스를 시작할 때, 또는 이전 루트의 완료 시, 초기 요소로서 새로운 루트를 배정받을 수 있다. 로봇 R1이 자신의 루트를 시작할 때, 그의 우선순위 P1은 최소 우선순위 값, 예컨대 도 9에 도시된 바와 같이 0으로 설정될 수 있다. R1이 자신의 루트를 따라 이동함에 따라, P1은 증가할 수 있는데, R1이 처음에 자신의 루트를 시작할 때, P1은 0의 최소 우선순위 값보다 큰 LowPri1의 우선순위 값으로 증가할 수 있다.
블록(920)에서, 다중 동작자 계획자는, 우선순위 P1 = LowPri1을 갖는 R1에, LowPri1보다 큰 우선순위 P2를 갖는 더 높은 우선순위 로봇 R2의 경로 밖에서 대기하고/거나 그 경로 밖으로 이동할 것을 지시할 수 있다. 로봇 R1이 로봇 R2의 경로 밖에서 대기하고/거나 그 경로 밖으로 이동함에 따라, 우선순위 P1은 LowPri1보다 큰 LowPri2의 값으로 증가한다.
블록(930)에서, 로봇 R1은 자신의 루트 상에서 계속된다. 로봇 R1이 루트 도중에 있음에 따라 우선순위 P1은 LowPri2보다 큰 MediumPri의 우선순위 값으로 증가한다.
블록(940)에서, 다중 동작자 계획자는, 우선순위 P1 = MediumPri를 갖는 R1에, MediumPri보다 작은 우선순위 P3을 갖는 더 낮은 우선순위 로봇 R3이 로봇 R1의 경로 밖에서 대기하고/거나 그 경로 밖으로 이동하는 동안, 자신의 루트를 따라 진행할 것을 지시할 수 있다. R1이 자신의 루트를 따라 진행함에 따라, 우선순위 P1은 MediumPri보다 큰 HiPri1의 값으로 증가한다.
블록(950)에서, 로봇 R1은 자신의 루트 상에서 계속된다. 로봇 R1이 루트 도중에 있음에 따라 우선순위 P1은 HiPri1보다 큰 HiPri2의 우선순위 값으로 증가한다. 일부 예들에서, 로봇 R1은 환경 내의 가장 높은 우선순위 로봇일 수 있으며, 그 때, 환경 내의 모든 다른 로봇들은 로봇 R1의 경로 밖에서 대기하고/거나 그 경로 밖으로 이동할 것을 다중 동작자 계획자에 의해 지시받을 수 있다.
블록(960)에서, 로봇 R1은 루트의 목적지 위치에 도달함으로써 자신의 루트를 완료한다. 일부 예들에서, 로봇 R1은, 루트 도중에 그리고/또는 목적지 위치에서 하나 이상의 피킹 및 배치 동작과 같은 하나 이상의 동작의 부분 또는 전부를 수행할 수 있다. 특정 예들에서, 로봇 R1과 같은 동작자의 루트는, 동작자가 루트의 목적지 위치에 도달할 때 완료된 것으로 간주될 수 있다. 다른 예들에서, 동작자의 루트는, 동작자가 목적지 위치에서 모든 동작들을 완료했을 때 완료된 것으로 간주될 수 있는데, 즉, 루트는 동작자가 새로운 루트에 대해 준비가 될 때 완료된다. 또 다른 예들에서, 동작자의 루트는, 동작자가 목적지 위치에 도달하여 목적지 위치를 벗어날 준비가 되거나 적어도 일정 시간량 동안 목적지 위치에 있었을 때 완료된 것으로 간주될 수 있다. 시간량은, 동작자가 목적지 위치에서 모든 동작들을 완료하기 위해 시간을 얼마나 요구하는지의 추정에 기반한 미리 결정된 시간량(예컨대, 5 초, 60 초, 3 분)일 수 있고/거나 다른 방식으로 결정될 수 있는데, 예컨대, 다른 루트가 이용가능할 때까지 대기한 시간량일 수 있다. 루트의 완료 시, 로봇 R1에 대한 우선순위 P1은 최소 우선순위 값으로 재설정될 수 있다.
블록(970)에서, 다중 동작자 계획자는, 로봇 R1에 대해 새로운 루트가 이용가능한지 여부를 결정할 수 있다. R1에 대해 새로운 루트가 이용가능한 경우, 다중 동작자 계획자 및 R1은 블록(910)으로 진행하여 우선순위 순환(900)의 다른 반복을 시작할 수 있다. R1에 대해 어떠한 새로운 루트도 이용가능하지 않은 경우, 다중 동작자 계획자는, 루트 상에서의 진행과 관련되지 않은 하나 이상의 동작을 수행할 것을 R1에 지시할 수 있는데, 예컨대, 셧다운하고, 진단들/유지보수를 수행하고, 대기 영역으로 이동함으로써, 우선순위 순환(900)을 퇴장한다. 다른 예들에서, 다중 동작자 계획자 및/또는 R1은 블록(970)에서 표시된 바와 같은 어떠한 새로운 루트들도 이용가능하지 않다는 것과 다른 이유들, 예컨대, R1에 유지보수가 스케줄링되고, 환경에서의 장애물들의 존재가 다중 동작자 계획자에 의해 지시받는 동작자들의 수를 감소시키고, 피킹 및 배치 동작들에 대해 자재들이 이용가능하지 않는 등으로 인해 우선순위 순환(900)을 퇴장할 수 있다.
로봇식 디바이스들을 위한 시스템 설계
도 10은 예시적인 실시예에 따른 시스템(1000)의 블록도이다. 시스템(1000)은 계획 시스템(1010) 및 로봇식 디바이스(1020)를 포함한다. 계획 시스템(1010)은, 환경에서 동작하는 하나 이상의 로봇식 디바이스의 움직임을 조정할 수 있는 오프보드(offboard) 계획자(1012)를 포함할 수 있다. 오프보드 계획자(1012)는 로드맵 계획자(1014)를 포함할 수 있다. 오프보드 계획자(1012) 및/또는 로드맵 계획자(1014)는, 로봇식 디바이스(1020)와 같은 로봇식 디바이스가 환경에서 동작하는 동안 따르기 위한 하나 이상의 비동기식 경로(1016)를 생성할 수 있다.
환경을 표현하는 로드맵 그래프, 기본형(prototype) 그래프, 또는 다른 로드맵, 이를테면, 도 12의 맥락에서 아래에 논의되는 기본형 그래프(1200)가 수신되거나, 결정되거나, 또는 다른 방식으로 계획 시스템(1010), 오프보드 계획자(1012), 및/또는 로드맵 계획자(1014)에 제공된다. 비동기식 경로들(1016)은 로드맵 그래프, 기본형 그래프, 또는 다른 로드맵에 기반한 하나 이상의 경로일 수 있다. 예컨대, 로드맵 그래프, 기본형 그래프, 또는 다른 로드맵이 복수의 교차로들을 연결하는 복수의 에지들을 갖는 경우, 비동기식 경로들(1016)은 복수의 에지들 및/또는 복수의 교차로들의 관점에서 특정될 수 있다.
일부 예들에서, 오프보드 계획자(1012) 및/또는 로드맵 계획자(1014)는 다중 동작자 계획자의 본원에서 설명된 기능성 중 일부 또는 전부를 포함할 수 있다. 이러한 예들에서, 로드맵 그래프, 기본형 그래프, 또는 다른 로드맵은 복수의 교차로들을 연결하는 복수의 에지들 및/또는 복수의 레인들을 가질 수 있는데, 예컨대, 오프보드 계획자(1012) 및/또는 로드맵 계획자(1014)는 로드맵들(310, 402, 502, 602, 및 720) 중 하나 이상을 활용하는 다중 동작자 계획자로서 동작할 수 있다. 특히 이러한 예들에서, 비동기식 경로들(1016) 중 하나 이상은 하나 이상의 레인, 비-레인 에지, 및/또는 하이퍼에지를 포함할 수 있으며, 여기서, 하이퍼에지들은 적어도 위의 도 1의 맥락에서 위에 논의된다. 보다 특히 이러한 예들에서, 비동기식 경로들(1016) 중 하나 이상은 하나의 동작자에 대한 하이퍼에지들의 시간 순서화된 시퀀스를 포함할 수 있으며, 여기서, 하이퍼에지들의 시간 순서화된 시퀀스에서의 하이퍼에지들은 그들의 완료 시간들의 순서로 고려될 수 있다. 다른 예들에서, 하나 이상의 로봇식 디바이스(1020)는 로봇들(110, 120, 130, 140, 214, 224, 234, 244, 330, 332, 414, 416, 424, 426, 434, 436, 444, 446, 470, 472, 474, 476, 510, 520, 530, 550, 610, 620) 중 하나 이상의 로봇의 본원에서 설명된 기능들을 수행할 수 있는데, 즉, 로봇들(110-620) 중 하나 이상이 로봇식 디바이스(1020)로서 구현될 수 있다.
로봇식 디바이스(들)(1020)는 온보드 소프트웨어(1030) 및/또는 하드웨어(1050)를 포함할 수 있다. 온보드 소프트웨어(1030)는: 로컬라이제이션 서브시스템(1032), 장애물 검출 서브시스템(1034), 주행 거리 측정 서브시스템(1036), 경로 추종 서브시스템(1038), 및 궤적 추종 서브시스템(1042) 중 하나 이상을 포함할 수 있다. 로컬라이제이션 서브시스템(1032)은 로봇식 디바이스를 로컬라이징하는 데, 즉, 환경 내의 로봇식 디바이스의 위치를 결정하는 데 사용될 수 있다. 로컬라이제이션 서브시스템(1032)은, 로봇식 디바이스 및/또는 로봇식 디바이스를 로컬라이징하는 데 사용될 수 있는 다른 객체들의 위치 추정치들을 생성하고, 로봇식 디바이스가 비동기식 경로들(1016)과 같은 경로를 따르는 것을 보조하고/거나 로봇식 디바이스가 궤적들(1040)과 같은 궤적을 따르는 것을 보조할 수 있다. 일단 위치 추정치들이 생성되면, 로컬라이제이션 서브시스템(1032)은 위치 추정치들을 경로 추종 서브시스템(1038)에 제공할 수 있다.
비동기식 경로 또는 줄여서 경로는, 로봇식 디바이스(1020)가 시작점 SP로부터 종료점 EP까지 어떻게 이동할 수 있는지를 표시하는 시불변 계획 또는 다른 정보일 수 있는데, 즉, (비동기식) 경로는 시간을 고려하지 않는다. 대조적으로, 궤적은 로봇식 디바이스(1020)가 계획 시간 인터벌 동안 따를 수 있는 조향각 및 견인 모터 속도의 값들을 포함할 수 있다.
계획 시간 인터벌은, 로봇식 디바이스가 안내되거나 경로, 루트를 따르도록 계획되고/거나 이동하는 데 사용되는 시간 지속기간일 수 있다. 일부 실시예들에서, 계획 시간 인터벌은 미리 결정된 시간량, 예컨대, 5 초, 1 초, 0.2 초, 0.1 초일 수 있다. 특히, 미리 결정된 계획 시간 인터벌은, 계획 시간 인터벌에 대한 값을 특정하는 사용자 입력에 기반하여 결정될 수 있다. 다른 실시예들에서, 계획 시간 인터벌은 하나 이상의 다른 값, 예컨대, 스티치(stitch) 시간, 균일한 에지(또는 경로) 비용과 연관된 시간, 궤적을 따라 이동하기 위한 추정 시간에 기반하여 결정될 수 있다. 계획 시간 인터벌 및 계획 시간 인터벌에 대한 값들을 결정하기 위한 다른 기법들이 또한 가능하다.
이어서, 로봇식 디바이스(1020)가 시변 방식으로 시작점 SP로부터 종료점 EP까지 어떻게 이동할 수 있는지를 설명하기 위해 하나 이상의 궤적이 사용될 수 있다. 일부 실시예들에서, 궤적은 또한, 계획 시간 인터벌에 대한 조향각 및 견인 모터 속도 이외의 다른 변수들의 값들, 이를테면, 이에 제한되진 않지만, 로봇식 디바이스(1020)의 다른 운동학적 변수들(예컨대, 속도 및 가속도) 및 로봇식 디바이스(1020)의 액추에이터 위치들의 값들에 관한 정보를 제공할 수 있다.
예로서, 위치 "집"으로부터 위치 "직장"까지 자동차를 운전하기 위한 경로는, 제어 개체, 이를테면 사람 또는 자율 주행 차량의 제어 디바이스가 집으로부터 직장까지 자동차를 운전하기 위해 사용할 수 있는 도로들의 순서화된 목록을 포함할 수 있다. 이러한 예에서, 집으로부터 직장까지의 궤적은, 제어 개체가 집으로부터 직장까지 자동차를 운전하기 위해 사용할 수 있는 속도 및/또는 가속도를 특정하는 하나 이상의 명령어를 수반할 수 있다. 일부 예들에서, 궤적은, 교통, 장애물들, 날씨 및 다른 시간에 민감한 조건들을 고려할 수 있는데, 예컨대, 집으로부터 직장까지 가기 위한 궤적은 제어 개체가 "20 MPH 이하에서 10초 동안 우회전"하고, "55 MPH로 가속하여 3분 동안 직진으로 운전"하고, "30초 내에 20 MPH까지 감속"하고, "20 MPH 이하에서 10초 동안 좌회전"하는 등을 표시할 수 있다. 일부 실시예들에서, 궤적은, 예컨대, 장애물들, 경로에서의 변화들 등을 고려하기 위해 도중에 변경될 수 있다.
장애물 검출 서브시스템(1034)은, 하나 이상의 장애물이 로봇식 디바이스(1020)의 경로 및/또는 궤적을 차단하는지 여부를 결정할 수 있다. 이러한 장애물들의 예들은, 팔레트들, 팔레트에서 떨어졌을 수 있는 객체들, 로봇식 디바이스들, 및 환경에서 작업하는 인간 운영자들을 포함할 수 있지만 이에 제한되지 않는다. 장애물이 검출되는 경우, 장애물 검출 서브시스템(1034)은, 장애물 검출을 표시하는 하나 이상의 통신을 경로 추종 서브시스템(1038)에 제공할 수 있다. 장애물 검출을 표시하는 하나 이상의 통신은, 장애물 검출 서브시스템(1034)에 의해 검출된 하나 이상의 장애물의 하나 이상의 위치에 관한 위치 정보 및/또는 장애물 검출 서브시스템(1034)에 의해 검출된 하나 이상의 장애물에 관한 식별 정보를 포함할 수 있다. 주행 거리 측정 서브시스템(1036)은, 시간 경과에 따른 로봇식 디바이스(1020)의 위치에서의 하나 이상의 변화를 추정하기 위해 서보 드라이브들(1052)로부터의 데이터와 같은 데이터를 사용할 수 있다.
경로 추종 서브시스템(1038) 및/또는 궤적 추종 서브시스템(1042)은 로봇식 디바이스(1020)에 탑재된 계획자로서 동작할 수 있다. 이러한 온보드 계획자는, 로컬라이제이션 서브시스템(1032)에 의해 제공된 위치 추정치들에 기반하여, 비동기식 경로들(1016)과 같은 하나 이상의 경로를 따를 수 있다.
경로 추종 서브시스템(1038)은, 비동기식 경로들(1016), 로컬라이제이션 서브시스템(1032)으로부터의 위치 추정치 입력들, 장애물 검출 서브시스템(1034)으로부터의 하나 이상의 장애물의 하나 이상의 위치에 관한 위치 정보, 및/또는 주행 거리 측정 서브시스템(1036)으로부터의 위치에서의 하나 이상의 변화에 관한 정보를 수신하여, 출력들로서 하나 이상의 궤적(1040)을 생성할 수 있다.
하드웨어(1050)는 서보 드라이브들(1052) 및/또는 모터들(1054)을 포함할 수 있다. 서보 드라이브들(1052)은 하나 이상의 서보 드라이브를 포함할 수 있다. 서보 드라이브들(1052)은 하나 이상의 서보메커니즘에 전력을 공급하는 데 사용되는 전자 증폭기를 포함할 수 있고/거나 서보메커니즘(들)으로부터의 피드백 신호들을 모니터링할 수 있다. 서보 드라이브들(1052)은 온보드 소프트웨어(1030)로부터 궤적들(1044)과 같은 제어 신호들을 수신할 수 있고, 제어 신호들에 비례하는 움직임을 생성하기 위해 전류를 서보메커니즘(들)에 제공할 수 있다. 일부 실시예들에서, 서보 드라이브들(1052)은 서보메커니즘(들)으로부터 수신된 상태 정보를 궤적들(1044)에 의해 명령된 바와 같은 예상 상태와 비교할 수 있다. 이어서, 서보 드라이브들(1052)은 수신된 상태 정보와 예상 상태 사이의 편차들을 정정하기 위해, 제공된 전류의 펄스 폭 또는 전압 주파수를 조정할 수 있다. 다른 실시예들에서, 서보 드라이브들(1052)은 피드백 신호들 및/또는 위치 관련 정보와 같은 정보를 온보드 소프트웨어(1030)에 제공할 수 있다.
하나 이상의 모터(1054)는 서보 드라이브들(1052)에 의해 전력이 공급되는 서보메커니즘(들) 중 일부 또는 전부일 수 있다. 예컨대, 모터들(1054)은 로봇식 디바이스(1020)의 일부 또는 전부를 구동하기 위한 기계적 힘을 생성하기 위해 서보 드라이브들(1052)에 의해 제공되는 전류를 사용할 수 있는데, 예컨대, 모터들(1054)이 로봇식 디바이스(1020)를 추진시키고/거나 로봇식 디바이스(1020)의 하나 이상의 이펙터를 구동하기 위한 힘을 제공할 수 있다.
창고, 사무실 건물, 또는 집과 같은 실내 환경들 및/또는 공원, 주차장, 또는 운동장과 같은 실외 환경들을 포함하는 환경과 같은 환경 내에서의 로봇식 디바이스들의 경로 계획은, 로봇식 디바이스들(로봇들)과 같은 동작자들이 따를 수 있는 경로들 및/또는 레인들의 연결된 그래프인 로드맵 그래프에 대해 수행될 수 있다. 환경 내에서의 동작자 라우팅을 계획하기 위해 자유 공간 접근법을 취하기보다 로드맵 그래프들을 사용하는 것은 총 계획 상태 공간을 감소시킬 수 있고, 따라서, 큰 규모의 다중 동작자 조정을 다루기 쉽게 만들 수 있다. 추가로, 로드맵 그래프들의 사용은, 운영자들이, 로봇식 디바이스들이 내비게이팅하도록 허용되는 영역들을 직관적으로 제어할 수 있게 할 수 있다. 그러한 경로 계획은 본원에서 설명된 다중 동작자 계획자에 의해 적어도 부분적으로 수행될 수 있다.
로드맵 그래프 생성은 먼저 기본형 그래프의 생성을 수반할 수 있으며, 이는, 레인들의 대강의 위치 및 이동 방향들을 표시한다. 일부 예들에서, 기본형 그래프는, 레인들 및 로봇식 디바이스들의 이동 방향들을 표시하는 방향성 그래프일 수 있다. 다른 예들에서, 기본형 그래프는, 환경의 맵 또는 도면에 기반하여 수동으로 생성될 수 있다. 추가적인 예들에서, 기본형 그래프는, 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같은, 하나 이상의 레인으로 주석이 부기된 로드맵일 수 있다.
도 11은 예시적인 실시예에 따른, 하나 이상의 창고를 운영하기 위한 시스템(1100)을 도시한다. 시스템(1100)은 창고 관리 시스템(1110), 계획 시스템(1010), 및 로봇식 디바이스(1020)를 포함한다. 창고 관리 시스템(1110)은, 창고와 연관된 하나 이상의 물류 요청(1112), 예컨대, 창고에 하나 이상의 품목을 저장하기 위한 요청들 및/또는 창고로부터 하나 이상 품목을 선적하기 위한 요청들을 수신할 수 있다. 창고 관리 시스템(1110)은 물류 요청들(1112)을 하나 이상의 동작(1114)으로 변환할 수 있으며, 여기서, 동작들(1114)은, 하나 이상의 지정된 동작자를 하나 이상의 지정된 위치로 이동시키기 위한 "위치 이동" 동작, 및 하나 이상의 품목을 하나 이상의 지정된 위치로 운반하기 위한 "운송" 동작을 포함할 수 있지만 이에 제한되지 않는다. 일부 예들에서, 동작들(1114)은 {동작자 ID, 목적지} 형태의 위치 이동 명령들일 수 있지만, "팔레트 이동"과 같은 다른 동작들이 가능하다. 하지만, 이들은 전형적으로 위치 이동 명령들(피킹 위치로 이동, 배치 위치로 이동)로 분해가능하다.
계획 시스템(1010)은 오프보드 계획자(1012) 및 실행자(1120)를 포함한다. 오프보드 계획자(1012)는 동작들(1114)을 입력들로서 수신하고, 동작들(1114)을 수행하기 위해, 창고에서 동작하는 하나 이상의 동작자, 예컨대 다수의 로봇식 디바이스들에 대한 하나 이상의 조정된 경로(1116)를 생성할 수 있다. 조정된 경로들(1116)은, 물류 요청들(1112)을 이행하기 위한 창고 내의 모든 동작자들에 대한 조정된 동작 계획의 일부일 수 있다. 조정된 동작 계획은 동작자들의 우선권을 고려할 수 있는데, 예컨대, 로봇식 디바이스들 RD1 및 RD2 둘 모두가 대략적으로 동시에 일 지점에 도달할 것으로 예상되는 경우, 로봇식 디바이스들 중 하나는 다른 하나에 비해 우선권 또는 우선순위를 가질 수 있으며, 이를테면, 로봇식 디바이스 RD1은 로봇식 디바이스 RD2가 그 지점을 통과하기를 대기한다(그 반대가 또한 가능함). 실행자(1120)는 조정된 경로들(1116)을 수신할 수 있고, 동작들(1114)을 수행하여 물류 요청들(1112)을 이행하기 위해, 조정된 동작 계획의 그의 부분을 달성함에 있어 비-상충 부-경로들(1122)을 생성하여 로봇식 디바이스(1020)에 지시할 수 있다.
일부 예들에서, 오프보드 계획자(1012)는 다중 동작자 계획자로서 동작할 수 있고, 창고에서 동작하는 하나 이상의 동작자에 대한 조정된 동작 계획을 생성할 수 있다. 이러한 예들에서, 오프보드 계획자(1012)는, 적어도 하나 이상의 동작자 각각에 대한 루트를 포함하는 조정된 동작 계획을 결정하고, 예컨대, 적어도 도 3, 도 4b 내지 도 6f, 및 도 9의 맥락에서 위에 논의된 바와 같이, 동작자가 자신의 루트 상에서 소비한 시간량인 단조적으로 증가하는 우선순위 값을 각각의 동작자에 배정할 수 있다. 또한, 오프보드 계획자(1012)는, 적어도 도 3 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 하나 이상의 레인을 포함하는 로드맵에 기반하여, 조정된 동작 계획을 결정할 수 있다. 그런 다음, 하나 이상의 레인을 포함하는 로드맵을 사용하고 단조적으로 증가하는 우선순위 값들을 갖는 동작자들에 대한 루트들을 결정함으로써, 오프보드 계획자(1012)는, 도 2 내지 도 9의 맥락에서 위에 설명된 기법들을 사용하여 하나 이상의 동작자 간의 교착들을 피하는 조정된 동작 계획을 결정할 수 있다.
도 11에서 위에 예시된 바와 같이, 오프보드 계획자(1012) 및 실행자(1120)를 포함하는 계획 시스템(1010)은 로봇식 디바이스(1020)와 통신할 수 있다. 일부 실시예들에서, 로봇식 디바이스는, 예컨대, 임의의 직업 안전 보건국(OSHA) 부류 1 또는 부류 3 산업용 동력 트럭과 같은 지게차일 수 있다. 다른 실시예들에서, 계획 시스템(1010)은, "클라우드"(예컨대, 하나 이상의 네크워킹된 컴퓨팅 디바이스)에 위치되고/거나 로봇식 디바이스(1020)와 함께 위치된 구내 상의 어딘가에 위치된 하나 이상의 네트워킹된 컴퓨팅 디바이스를 사용하여 실행되는 소프트웨어를 포함할 수 있다.
도 12는 예시적인 실시예에 따른, 네트워크(1218)를 사용하여 연결된, 물류 인터페이스(1210), 창고 관리 시스템(1110), 및 하나 이상의 로봇식 디바이스(1020)를 포함하는 시스템(1200)을 예시한다. 물류 인터페이스(1210)는, 창고 관리 시스템(1110)에 대한 팔레트들 및/또는 로봇식 디바이스들과 같은 객체들의 이동에 관한 재고 작업 명령어들을 네트워크(1218)를 통해 창고 관리 시스템(1110)에 제공할 수 있다. 예시적인 재고 작업은 유형 B의 품목들을 포함하는 팔레트 A를 위치 C로 가져오는 것일 수 있다.
창고 관리 시스템(1110)은 물류 인터페이스(1210)로부터 재고 작업 명령어들을 수신하고, 재고 작업 명령어들을 수행하도록 로봇식 디바이스(들)(1020)를 제어하기 위한 하나 이상의 작업/임무 명령어(예컨대, 로봇식 디바이스 A가 팔레트 B를 위치 C로부터 위치 D로 이동시키기 위한 명령어) 및/또는 계획을 생성할 수 있다. 작업/임무 명령어들 및/또는 계획들은 하나 이상의 경로 및/또는 하나 이상의 궤적에 관한 정보를 포함할 수 있으며, 여기서, 작업/임무 명령어(들), 계획(들), 경로(들) 및 궤적/궤적들은 도 10 및 도 11의 맥락에서 논의된 기법들을 사용하여 창고 관리 시스템(1110)의 계획 시스템(1010)에 의해 생성된다.
예컨대, 창고 관리 시스템(1110)은, 하나 이상의 컴퓨팅 디바이스, 예컨대 서버 컴퓨팅 디바이스를 사용하여 데이터를 실행 및 저장하는 중앙집중식 제어 서비스일 수 있다. 이러한 작업들을 수행하기 위해, 창고 관리 시스템(1110)은 WMS 미들웨어를 포함할 수 있고, 사용자 인터페이스를 제공하여 시스템(1200)을 모니터링 및 관리하기 위한 도구에 대한 액세스를 제공할 수 있다. 창고 관리 시스템(1110)의 WMS 미들웨어 및/또는 다른 구성요소들은 하나 이상의 애플리케이션 프로그래밍 인터페이스(API), 이를테면, 작업/임무 명령어들(예컨대, 로봇식 디바이스 A가 팔레트 B를 위치 C로부터 위치 D로 이동시키기 위한 명령어)의, 로봇식 디바이스 경로들, 포즈들, 및/또는 궤적들로의 변환; 재고 작업들과 작업/임무 명령어들 간의 변환; 및 API들 간의 변환을 위한 프로토콜 변환 API들을 사용할 수 있다.
창고 관리 시스템(1110)에 의해 제공되는 사용자 인터페이스는, 로봇식 디바이스(들)(1020)를 모니터링하는 것, 예컨대, 하나 이상의 로봇식 디바이스의 위치, 배터리 상태, 충전 상태 등과 관련된 데이터를 제시하는 것; 재고 작업 명령어(들), 작업/임무 명령어(들), 계획(들), 경로(들), 및/또는 궤적/궤적들의 생성을 가능하게 하고 이들을 로봇식 디바이스(들)(1020) 중 하나 이상에 전송하는 것; 및 하나 이상의 창고 맵, 팔레트, 네트워크, 및/또는 계획 시스템(예컨대, 계획 시스템(1010), 창고 관리 시스템(1110), 및/또는 물류 인터페이스(1210))과 관련된 데이터의 검토, 업데이트, 삭제, 및/또는 삽입을 포함하지만 이에 제한되지 않는 하나 이상의 사용자 인터페이스 기능을 시스템(1200)에 제공할 수 있다.
일부 실시예들에서, 창고 관리 시스템(1110)은, 물류 인터페이스(1210)와 로봇식 디바이스(들)(1020) 사이 및 로봇식 디바이스(들)(1020) 중 2개 이상 사이의 통신들을 라우팅할 수 있고, 로봇식 디바이스(들)(1020) 중 하나 이상에 탑재된 온보드 시스템(1220)과 같은 하나 이상의 온보드 시스템을 관리할 수 있다. 다른 실시예들에서, 창고 관리 시스템(1110)은, 시스템(1200)과 관련된 데이터, 이를테면, 이에 제한되진 않지만: 로봇식 디바이스(들)(1020) 중 하나 이상에 의한 작업/임무 명령어의 완료에 관한 데이터; 로봇식 디바이스가 초기화/부팅된 위치를 표시하는 데이터를 포함하는, 로봇식 디바이스(들)(1020) 중 일부 또는 전부의 위치들 및/또는 포즈들에 관한 데이터; 인간 행동들, 사태 분석, 및/또는 디버깅에 대한 하나 이상의 감사 추적과 관련된 데이터; 및 상태 추적을 위한 데이터를 저장, 생성, 판독, 기입, 업데이트, 및/또는 삭제할 수 있다. 다른 실시예들에서, 창고 관리 시스템(1110)은, 로봇식 디바이스(들)(1020) 및 하나 이상의 어댑터와 통신하는 중앙 메시지 라우터/지속성 관리자를 포함할 수 있다. 하나 이상의 어댑터 각각은 창고 관리 시스템(1110)이 이용가능한 시스템(1200)의 데이터 및/또는 통신들에 대한 액세스를 제공할 수 있고, 위에 언급된 사용자 인터페이스를 위한 사용자 인터페이스 서비스 어댑터, 시스템(1200)에 관한 정보에 대한 월드 와이드 웹(WWW)/인터넷 액세스를 가능하게 하는 웹 콘텐츠 서비스 어댑터, 메시지 프록시 어댑터, 및/또는 API들 및/또는 WMS 간의 통신들 사이의 중개자들로서 동작하는 WMS 어댑터를 포함할 수 있지만 이에 제한되지 않는다.
또 다른 실시예들에서, 계획 시스템(1010) 및/또는 창고 관리 시스템(1110)은, 도 7a 내지 도 7d의 맥락에서 위에 논의된 로드맵 편집기(710)와 같은 로드맵 편집기의 기능성 중 일부 또는 전부를 포함할 수 있다.
도 12는, 하나 이상의 로봇식 디바이스(1020) 각각이, 온보드 시스템(1220), 네트워크 스위치(1230), 차량 제어기(1232), 프로그래밍가능 논리 제어기(PLC)(1234), 차량 마스터(1236), 하나 이상의 디바이스 센서(1238), 및 하나 이상의 드라이브(1240) 중 하나 이상을 포함할 수 있음을 도시한다.
온보드 시스템(1220)은, 로봇식 디바이스(1020)에 설치되고 그와 함께 사용하도록 구성되는 로봇 계획을 위한 계산 및 센서 패키지일 수 있으며, 여기서, 온보드 시스템(1220)은 온보드 센서들(1222) 및 하나 이상의 계획/실행 프로세서(1224)를 포함할 수 있다. 도 12는 또한, 네트워크 스위치(1230)를 사용하여 적어도 (네트워크(1218)를 통해) 계획 시스템(1010)과, 디바이스 센서들(1238)과, 그리고/또는 로봇식 디바이스(1020)의 하나 이상의 액추에이터와 통신하도록 구성되는 온보드 시스템(1220)을 도시한다.
온보드 시스템(1220)은: 로봇식 디바이스(1020)의 로컬라이제이션, 창고 관리 시스템(1110)에 의해 제공되는 경로들 및/또는 궤적들에 따라 계획들을 수행하고/거나 이동하기 위한 국부적 궤적들의 생성, 드라이브들(1240)이 하나 이상의 (국부적) 궤적들을 따르기 위한 명령들의 생성, 로봇식 디바이스(1020)의 액추에이터(들)를 제어하기 위한 명령들의 생성, 창고 관리 시스템(1110)에 포즈, 상태, 및/또는 다른 정보를 보고하는 것 중 하나 이상을 담당할 수 있다.
온보드 센서들(1222)은 하나 이상의 내비게이션 레이저, 레이저 스캐너, 카메라, 및/또는 온보드 시스템(1220)을 내비게이팅 및/또는 제어하기 위한 다른 센서를 포함할 수 있다. 예컨대, 로봇식 디바이스(들)(1020)의 로봇식 디바이스는 하나 이상의 레이저 스캐너, 이를테면, 독일 발트키르히의 SICK AG, 일본 오사카의 호쿠요 오토매틱 주식회사(HOKUYO AUTOMATIC CO. LTD), 및/또는 일본 오사카의 키엔스 코포레이션(KEYENCE CORPORATION)에 의해 제공되는 하나 이상의 레이저 스캐너를 포함할 수 있다. 레이저 스캐너들은 로봇식 디바이스들의 이동 방향뿐만 아니라 로봇식 디바이스의 측면들, 코너들 및/또는 후방을 따른 장애물 검출 및/또는 회피에 사용될 수 있다. 레이저 스캐너들은 또한 반사기 기반 로컬라이제이션을 사용하여 로봇식 디바이스를 로컬라이징하는 데 사용될 수 있다. 일부 실시예들에서, 카메라들 및/또는 다른 센서들이 레이저 스캐너들 대신 또는 그와 함께 장애물 검출, 장애물 회피, 및/또는 로컬라이제이션을 위해 사용될 수 있다.
계획/실행 프로세서(들)(1224)는 적어도 온보드 센서들(1222)에 연결된 하나 이상의 컴퓨터 프로세서를 포함할 수 있다. 계획/실행 프로세서(들)(1224)는 온보드 센서들(1222)로부터 데이터를 판독하고, 로봇식 디바이스(1020)를 이동시키기 위해 드라이브(들)(1240)에 대한 국부적 궤적들 및/또는 명령들을 생성하고, 창고 관리 시스템(1110)과 통신할 수 있다. 국부적 궤적은, 로봇식 디바이스(1020)가 시작 포즈에서 시작하여 일정 시점에 종료 포즈에 도달하는 궤적일 수 있다. 일부 예들에서, 시작 포즈는 암시적으로 특정될 수 있는데, 예컨대, 시작 포즈는 로봇식 디바이스(1020)의 현재 포즈일 수 있고, 따라서, 국부적 궤적은, 그 시작 포즈가 로봇식 디바이스(1020)의 현재 포즈라는 가정에 기반한다.
계획/실행 프로세서(들)(1224)는 구성요소 프레임워크를 활용할 수 있다. 구성요소 프레임워크는 로봇식 디바이스(1020)의 일관된 비동기식 모델을 제공하도록 구성되는 입력/출력(I/O) 및 시그널링을 위한 소프트웨어 라이브러리들, 이를테면, 버지니아 주 오난콕의 boost.org에 의해 제공되는 "boost::asio" 및 "boost::signals2" 소프트웨어 라이브러리들 상에 구축된 다중-스레드 작업 스케줄링 및 메시지 전달 시스템일 수 있다. 구성요소 프레임워크는 소프트웨어 구성요소들(또는 모듈들)이 스레드 안전 방식으로 병렬로 실행될 수 있도록 소프트웨어 구성요소들 간의 통신을 가능하게 할 수 있다.
구성요소 프레임워크는: 상태 기계 구성요소, 로컬라이제이션 구성요소, 계획 구성요소, 및 궤적 추종 구성요소 중 하나 이상을 포함할 수 있다. 상태 기계 구성요소는 차량 초기화, 차량 명령 및 고장 처리를 위해 로봇식 디바이스(1020)의 상태를 관리할 수 있다. 상태 기계 구성요소는 결정론적 유한 오토마톤(automaton) 또는 다른 상태 기계를 사용하여 로봇식 디바이스의 상태를 관리할 수 있다.
로컬라이제이션 구성요소는 차량 센서들로부터 데이터를 판독하고 로봇식 디바이스(1020)의 이전 상태 정보를 통합하여 로봇식 디바이스(1020)의 포즈를 결정할 수 있다. 차량 센서 데이터는 차량 센서들에 의해 검출된 하나 이상의 지표(landmark)/관심 지점을 표시할 수 있다. 대안적으로, 차량 센서들로부터의 데이터는, 로컬라이제이션 구성요소가 차량 센서 데이터에 기반하여 하나 이상의 지표/관심 지점을 검출하게 되는 처리를 요구할 수 있다. 포즈는 팔레트들 또는 다른 객체들과 같은, 하나 이상의 검출된 지표/관심 지점에 대해 결정될 수 있다. 계획 구성요소는 창고 관리 시스템(1110)으로부터 하나 이상의 목표를 수신하고 그 목표들을 달성하기 위해 로봇식 디바이스(1020)에 대한 국부적 궤적을 결정할 수 있다. 일부 실시예들에서, 국부적 궤적은, 로봇식 디바이스(1020)가 미리 결정된 시간량, 예컨대, 100 밀리초, 200 밀리초, 500 밀리초, 1 초, 5 초 동안 따라야 하는 단기 궤적일 수 있다. 궤적 추종 구성요소는 계획 구성요소에 의해 생성된 국부적 궤적을 수신하고, 국부적 궤적을 따라 이동하기 위한 드라이브 제어 명령어들을 생성할 수 있다. 그런 다음, 드라이브 제어 명령어들은, 로봇식 디바이스(1020)에 대한 견인 모터 및 다른 액추에이터들을 제어하는 드라이브들(1240)로 중계된다.
네트워크 스위치(1230)는 로봇식 디바이스(들)(1020)에 대한 통신들을 가능하게 할 수 있다. 이러한 통신들은, 온보드 시스템(1220)과 로봇식 디바이스(1020)의 나머지, 예컨대, 디바이스 센서들(1238) 및 드라이브들(1240) 간의 통신들, 및 네트워크(1218)를 통한 창고 관리 시스템(1110)과의 통신들을 포함할 수 있지만 이에 제한되지 않는다. 예컨대, 네트워크 스위치(1230)는 이더넷 및/또는 유선 네트워크에 대한 다른 유선 통신 인터페이스(들)를 통한, 그리고/또는 와이파이(Wi-Fi™) 및/또는 무선 네트워크에 대한 다른 무선 통신 인터페이스(들), 이를테면, 대만 신베이 시의 플래닛 테크놀로지 코포레이션(PLANET Technology Corporation)에 의한 플래닛 이더넷 스위치를 통한 송신 제어 프로토콜/인터넷 프로토콜(TCP/IP) 기반 통신들을 가능하게 할 수 있다.
일부 실시예들에서, 로봇식 디바이스(들)(1020)와 계획 시스템(1010) 간의 통신들은 원격 절차 호출(RPC)들을 포함할 수 있다. 원격 절차 호출들은, 계획 시스템(1010)의 소프트웨어에 의한 로봇식 디바이스(들)(1020) 중 하나 이상 상에 상주하는 소프트웨어 절차들, 방법들, 및/또는 기능들의 호출을 허용할 수 있으며, 그 반대가 또한 가능하다. 원격 절차 호출들은 TCP/IP, 하이퍼텍스트 전송 프로토콜(HTTP), 이를테면, HTTP 1.0 및/또는 HTTP 2.0 및/또는 다른 통신 프로토콜과 같은 통신 프로토콜에 기반할 수 있다. 원격 절차 호출들 중 일부 또는 전부는 암호화된 데이터를 포함할 수 있으며, 그러한 데이터는 보안 소켓 계층(SSL), 전송 계층 보안(TLS), 및/또는 하나 이상의 다른 암호화 알고리즘 및/또는 프로토콜을 사용하여 암호화될 수 있다. 암호화된 데이터가 사용되는 실시예들에서, 개인 인증 기관과 같은 하나 이상의 인증 기관이 암호화된 데이터를 암호화 및/또는 복호화하는 데 사용되는 하나 이상의 인증서를 인증할 수 있다. 인증 기관은 액세스 제어 목록(ACL)을 사용하여 하나 이상의 인증서에 대한 액세스를 제어할 수 있다. 원격 절차 호출들은 RPC 관련 통신들을 위해 요청/응답 프로토콜 및/또는 양방향 스트리밍 프로토콜을 사용할 수 있다. 양방향 스트리밍 프로토콜이 RPC 관련 통신들을 위해 사용되는 실시예들에서, 양방향 스트리밍 프로토콜을 구현하기 위해 단일 장기-지속(single long-lived) RPC가 사용될 수 있다.
차량 제어기(1232) 및/또는 프로그래밍가능 논리 제어기(1234)는 로봇식 디바이스(들)(1020)에 대한 전기 및 센서 관리 기능성을 제공할 수 있다. 전기 및 센서 관리 기능성은, 전기 부하 제어, 조명 제어, 센서 제어, 센서 및/또는 스위치 신호 처리, 및 전력 관리를 위한 기능성을 포함할 수 있지만 이에 제한되지 않는다. 차량 마스터(1236)는 로봇식 디바이스(들)(1020)의 하나 이상의 액추에이터, 이를테면 인양 디바이스들을 제어하기 위한 기능성을 제공할 수 있다.
디바이스 센서(들)(1238)는, 로봇식 디바이스(들)(1020)를 제어하고/거나 동작시키는 것과 관련된 데이터를 제공할 수 있는 하나 이상의 센서를 포함할 수 있다. 데이터는, 로봇식 디바이스(들)(1020)에 관한 환경에 관한 정보, 이를테면, 이에 제한되진 않지만, 로컬라이제이션 정보, 위치 추정치들, 및 맵핑 데이터를 제공할 수 있다. 예컨대, 디바이스 센서(들)(1238)는, 하나 이상의 레이저(예컨대, 2차원(2D) 레이저들, 안전 레이저들, 레이저 스캐너들), 카메라(예컨대, 비행 시간(ToF; Time-of-Flight) 카메라들, 적녹청(RGB) 카메라들, 열 카메라들), 전기 센서, 근접 센서, 내비게이션 디바이스, 및 위치 센서를 포함할 수 있다.
드라이브(들)(1240)는, 하나 이상의 드라이브 제어기, 및/또는 로봇식 디바이스(들)(1020)를 이동시키기 위한 기능성을 제공하는 액추에이터를 포함할 수 있다. 드라이브 제어기들은 로봇식 디바이스(들)(1020)의 이동을 제어할 것을 드라이브 액추에이터들에 지시할 수 있다. 드라이브 액추에이터들은 하나 이상의 견인 모터, 전기식 드라이브, 유압식 드라이브, 및 공압식 드라이브를 포함할 수 있다.
도 13은 예시적인 실시예에 따른, 로봇식 디바이스(들)(1020)의 로봇식 디바이스 아키텍처(1300)를 예시한다. 로봇식 디바이스(들)(1020)의 로봇식 디바이스 아키텍처(1300)는 소프트웨어를 포함할 수 있다. 소프트웨어는, 로컬라이제이션(1310)을 위한 소프트웨어, 팔레트 포즈 추정기(1312)를 위한 소프트웨어, 상태 기계(1314)와 관련된 소프트웨어, 계획자 추종기(1316)를 위한 소프트웨어, 구성요소 프레임워크(1320)를 위한 소프트웨어, 및 운영 체제(1330)를 위한 소프트웨어를 포함할 수 있다. 소프트웨어는, 하나 이상의 하드웨어 계획/실행 프로세서(1224)에 의해 실행될 수 있다. 로봇식 디바이스(들)(1020)와 다른 디바이스들 간의 통신들은, 네트워크 게이트웨이(1340) 및/또는 네트워크 스위치(1230)를 사용하여 수행될 수 있다. 예컨대, 네트워크 게이트웨이(1340)는 로봇식 디바이스(들)(1020)의 로봇식 디바이스와의 그리고 그 내에서의 무선 통신들에 사용될 수 있고, 네트워크 스위치(1230)는 로봇식 디바이스(들)(1020)의 로봇식 디바이스와의 그리고 그 내에서의 유선 통신들에 사용될 수 있다. 로봇식 디바이스 아키텍처(1300)는 또한, 도 12의 맥락에서 위에 논의된 디바이스 센서(들)(1238) 및 드라이브(들)(1240)와 같은 부가적인 하드웨어를 포함한다. 일부 실시예들에서, 로봇식 디바이스 아키텍처(1300)는, ToF 카메라(1350) 및 RGB 카메라(1352)를 포함하지만 이에 제한되지 않는 하나 이상의 카메라를 포함할 수 있으며, 여기서, 하나 이상의 카메라는 하나 이상의 정지화상 카메라 및/또는 하나 이상의 비디오 카메라를 포함할 수 있다.
컴퓨팅 디바이스 아키텍처
도 14a는 예시적인 실시예에 따른 예시적인 컴퓨팅 디바이스(1400)의 기능 블록도이다. 특히, 도 14a에 도시된 컴퓨팅 디바이스(1400)는, 본원에서 설명된 다중 동작자 계획자, 다중 동작자 계획자에 대한 소프트웨어, 로봇들(110, 120, 130, 140, 214, 224, 234, 244, 330, 332, 414, 416, 424, 426, 434, 436, 444, 446, 470, 472, 474, 476, 510, 520, 530, 550, 610, 620), 컴퓨팅 디바이스(702), 로드맵 편집기(710), 시스템(1000), 계획 시스템(1010), 오프보드 계획자(1012), 로드맵 계획자(1014), 로봇식 디바이스(1020), 시스템(1100), 창고 관리 시스템(1110), 실행자(1120), 시스템(1200), 물류 인터페이스(1210), 네트워크(1218, 1414), 온보드 시스템(1220), 네트워크 스위치(1230), 차량 제어기(1232), 프로그래밍가능 논리 제어기(1234), 차량 마스터(1236), 디바이스 센서(들)(1238), 드라이브(들)(1240), 로봇식 디바이스 아키텍처(1300)의 적어도 하나의 기능 및/또는 로드맵들(310, 402, 502, 602, 720), 시나리오들(100, 200, 300, 400, 500, 600, 700), 방법들(800, 1500), 및 우선순위 순환(900)과 관련된 적어도 하나의 기능을 수행하도록 구성될 수 있다. 컴퓨팅 디바이스(1400)는, 사용자 인터페이스 모듈(1401), 네트워크 통신 인터페이스 모듈(1402), 하나 이상의 프로세서(1403), 데이터 저장소(1404), 하나 이상의 센서(1420), 및 하나 이상의 액추에이터(1430)를 포함할 수 있으며, 이들 모두는 시스템 버스, 네트워크, 또는 다른 연결 메커니즘(1405)을 통해 함께 연결될 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(1400)는 다중 동작자 계획자의 일부 또는 전부로서 동작하도록 구성될 수 있다.
사용자 인터페이스 모듈(1401)은 외부 사용자 입력/출력 디바이스들에 데이터를 전송하고/거나 그로부터 데이터를 수신하도록 동작가능할 수 있다. 예컨대, 사용자 인터페이스 모듈(1401)은, 키보드, 키패드, 터치 스크린, 컴퓨터 마우스, 트랙 볼, 조이스틱, 카메라, 음성 인식 모듈, 및/또는 다른 유사한 디바이스들과 같은 사용자 입력 디바이스들로 그리고/또는 그들로부터 데이터를 전송 및/또는 수신하도록 구성될 수 있다. 사용자 인터페이스 모듈(1401)은 또한, 사용자 디스플레이 디바이스들, 이를테면, 하나 이상의 음극선관(CRT), 액정 디스플레이, 발광 다이오드(LED), 디지털 광 처리(DLP) 기술을 사용하는 디스플레이, 프린터, 전구, 및/또는 현재 알려져 있거나 나중에 개발될 다른 유사한 디바이스에 출력을 제공하도록 구성될 수 있다. 사용자 인터페이스 모듈(1401)은 또한, 스피커, 스피커 잭, 오디오 출력 포트, 오디오 출력 디바이스, 이어폰들, 및/또는 다른 유사한 디바이스들과 같은 가청 출력(들)을 생성하도록 구성될 수 있다.
네트워크 통신 인터페이스 모듈(1402)은, 네트워크를 통해 통신하도록 구성가능한, 하나 이상의 무선 인터페이스(1407) 및/또는 하나 이상의 유선 인터페이스(1408)를 포함할 수 있다. 무선 인터페이스들(1407)은, 하나 이상의 무선 송신기, 수신기, 및/또는 송수신기, 이를테면, 블루투스(Bluetooth) 송수신기, 지그비(Zigbee) 송수신기, 와이파이 송수신기, 와이맥스(WiMAX) 송수신기, 및/또는 무선 네트워크를 통해 통신하도록 구성가능한 다른 유사한 유형의 무선 송수신기를 포함할 수 있다. 유선 인터페이스들(1408)은, 하나 이상의 유선 송신기, 수신기, 및/또는 송수신기, 이를테면, 이더넷 송수신기, 범용 직렬 버스(USB) 송수신기, 또는 연선, 동축 케이블, 광섬유 연결, 또는 유선 네트워크에 대한 유사한 물리적 연결을 통해 통신하도록 구성가능한 유사한 송수신기를 포함할 수 있다.
일부 실시예들에서, 네트워크 통신 인터페이스 모듈(1402)은, 신뢰가능하고, 보안되고/거나 인증된 통신들을 제공하도록 구성될 수 있다. 본원에서 설명된 각각의 통신에 대해, 신뢰가능한 통신들(즉, 보증된 메시지 전달)을 보장하기 위한 정보가 아마도 메시지 헤더 및/또는 푸터(footer)(예컨대, 패킷/메시지 시퀀싱 정보, 캡슐화 헤더(들) 및/또는 푸터(들), 크기/시간 정보, 및 송신 검증 정보, 이를테면, CRC 및/또는 패리티 검사 값들)의 일부로서 제공될 수 있다. 통신들은, 이에 제한되진 않지만, DES, AES, RSA, 디피-헬만(Diffie-Hellman), 및/또는 DSA와 같은 하나 이상의 암호화 프로토콜 및/또는 알고리즘을 사용하여 보안(예컨대, 인코딩 또는 암호화)되고/거나 복호화/디코딩될 수 있다. 통신들을 보안(및 이어서 복호화/디코딩)하기 위해 본원에서 열거된 것들과 함께 또는 그에 더하여 다른 암호화 프로토콜들 및/또는 알고리즘들이 사용될 수 있다.
프로세서들(1403)은 하나 이상의 범용 프로세서 및/또는 하나 이상의 특수 목적 프로세서(예컨대, 디지털 신호 프로세서들, 그래픽 처리 유닛들, 주문형 집적 회로들 등)를 포함할 수 있다. 프로세서들(1403)은, 데이터 저장소(1404)에 포함된 컴퓨터 판독가능 프로그램 명령어들(1406) 및/또는 본원에서 설명된 바와 같은 다른 명령어들을 실행하도록 구성될 수 있다. 일부 실시예들에서, 컴퓨터 판독가능 프로그램 명령어들(1406)은 다중 동작자 계획자(1406a)에 대한 명령어들을 포함할 수 있으며, 이는, 본원에서 설명된 다중 동작자 계획자의 기능성 중 일부 또는 전부를 수행할 수 있다.
데이터 저장소(1404)는, 프로세서들(1403) 중 적어도 하나에 의해 판독 및/또는 액세스될 수 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 하나 이상의 컴퓨터 판독가능 저장 매체는, 프로세서들(1403) 중 적어도 하나와 전체적으로 또는 부분적으로 통합될 수 있는, 휘발성 및/또는 비-휘발성 저장 구성요소들, 이를테면, 광학, 자기, 유기, 또는 다른 메모리 또는 디스크 저장소를 포함할 수 있다. 일부 실시예들에서, 데이터 저장소(1404)는 단일 물리적 디바이스(예컨대, 하나의 광학, 자기, 유기, 또는 다른 메모리 또는 디스크 저장 유닛)를 사용하여 구현될 수 있는 한편, 다른 실시예들에서는, 데이터 저장소(1404)는 2개 이상의 물리적 디바이스를 사용하여 구현될 수 있다.
데이터 저장소(1404)는 컴퓨터 판독가능 프로그램 명령어들(1406) 및 아마도 부가적인 데이터를 포함할 수 있다. 일부 실시예들에서, 데이터 저장소(1404)는 부가적으로, 본원에서 설명된 방법들 및 기법들 중 적어도 일부 및/또는 디바이스들 및 네트워크들의 기능성 중 적어도 일부를 수행하도록 요구되는 저장소를 포함할 수 있다.
일부 실시예들에서 컴퓨팅 디바이스(1400)는 하나 이상의 센서(1420)를 포함할 수 있다. 센서(들)(1420)는, 컴퓨팅 디바이스(1400)에 대한 환경에서의 조건들을 측정하고 그 환경, 예컨대 본원에서 설명된 로드맵에 의해 표현되는 환경에 관한 데이터를 제공하도록 구성될 수 있다. 예컨대, 센서(들)(1420)는: (i) 다른 객체들 및/또는 디바이스들을 식별하기 위한 식별 센서, 이를테면, 이에 제한되진 않지만, RFID 판독기, 근접 센서, 1차원 바코드 판독기, 2차원 바코드(예컨대, 빠른 응답(QR) 코드) 판독기, 및 레이저 트래커 ― 식별 센서(들)는 식별자들, 이를테면, RFID 태그들, 바코드들, QR 코드들, 및/또는 판독되어 적어도 식별 정보를 제공하도록 구성되는 다른 디바이스들 및/또는 객체를 판독하도록 구성될 수 있음 ―; (ii) 컴퓨팅 디바이스(1400)의 위치들 및/또는 이동들을 측정하기 위한 위치 센서, 이를테면, 이에 제한되진 않지만, 자이로스코프, 가속도계, 도플러 센서, 위성 항법 시스템(GPS) 디바이스, 소나 센서, 레이더 디바이스, 레이저 변위 센서, 및 나침반; (iii) 컴퓨팅 디바이스(1400)의 환경을 표시하는 데이터를 획득하기 위한 환경 센서, 이를테면, 이에 제한되진 않지만, 적외선 센서, 광학 센서, 광 센서, 카메라, 바이오센서, 용량성 센서, 터치 센서, 온도 센서, 무선 센서, 라디오 센서, 움직임 센서, 마이크로폰, 음향 센서, 초음파 센서, 및/또는 연기 센서; 및 (iv) 컴퓨팅 디바이스(1400)에 대해 작용하는 하나 이상의 힘(예컨대, 관성력들 및/또는 중력(G-force)들)을 측정하기 위한 힘 센서, 이를테면, 이에 제한되진 않지만, 하나 이상의 차원, 토크, 지면 반력(ground force), 마찰에서의 힘들을 측정하는 하나 이상의 센서, 및/또는 영모멘트 점(ZMP)들 및/또는 ZMP들의 위치들을 식별하는 ZMP 센서 중 하나 이상을 포함할 수 있다. 센서(들)(1420)의 많은 다른 예들이 또한 가능하다.
컴퓨팅 디바이스(1400)는, 컴퓨팅 디바이스(1400)가 이동을 개시할 수 있게 하는 하나 이상의 액추에이터(1430)를 포함할 수 있다. 예컨대, 액추에이터(들)(1430)는, 로봇 팔다리들을 로봇 몸체에 연결하는 로봇 관절들을 포함하거나 그와 통합될 수 있다. 예컨대, 액추에이터(들)(1430)는, 개개의 로봇 다리들 및 팔들을 로봇 몸체에 연결하는 개개의 로봇 골반부 및 로봇 어깨 관절들을 포함할 수 있다. 추가로, 액추에이터(들)(1430)는, 로봇 다리들의 개개의 부분들(예컨대, 로봇 대퇴부들 및 로봇 종아리들)을 연결하는 개개의 로봇 무릎 관절들, 및 로봇 팔들의 부분들(예컨대, 로봇 전완부들 및 상완부들)을 연결하는 팔꿈치 관절들을 포함할 수 있다. 더 추가로, 액추에이터(들)(1430)는, 로봇 다리들을 로봇 발에 연결하는 개개의 로봇 발목 관절들, 및 로봇 팔들을 로봇 손들에 연결하는 개개의 로봇 손목 관절들을 포함할 수 있다. 게다가, 액추에이터(들)(1430)는 로봇 팔다리들을 이동시키기 위한 모터들을 포함할 수 있다. 그러므로, 액추에이터(들)(1430)는 컴퓨팅 디바이스(1400)의 이동성을 가능하게 할 수 있다. 액추에이터(들)(1430)의 많은 다른 예들이 또한 가능하다.
클라우드 기반 서버들
도 14b는 예시적인 실시예에 따른, 클라우드 기반 서버 시스템으로서 배열된 컴퓨팅 클러스터들(1409a, 1409b, 1409c)의 네트워크(1414)를 도시한다. 컴퓨팅 클러스터들(1409a, 1409b, 1409c)은, 클라우드 기반 애플리케이션들 및/또는 서비스들의 프로그램 논리 및/또는 데이터를 저장하는, 예컨대, 본원에서 설명된 다중 동작자 계획자, 다중 동작자 계획자에 대한 소프트웨어, 로봇들(110, 120, 130, 140, 214, 224, 234, 244, 330, 332, 414, 416, 424, 426, 434, 436, 444, 446, 470, 472, 474, 476, 510, 520, 530, 550, 610, 620), 컴퓨팅 디바이스(702), 로드맵 편집기(710), 시스템(1000), 계획 시스템(1010), 오프보드 계획자(1012), 로드맵 계획자(1014), 로봇식 디바이스(1020), 시스템(1100), 창고 관리 시스템(1110), 실행자(1120), 시스템(1200), 물류 인터페이스(1210), 네트워크(1218, 1414), 온보드 시스템(1220), 네트워크 스위치(1230), 차량 제어기(1232), 프로그래밍가능 논리 제어기(1234), 차량 마스터(1236), 디바이스 센서(들)(1238), 드라이브(들)(1240), 로봇식 디바이스 아키텍처(1300)의 적어도 하나의 기능 및/또는 로드맵들(310, 402, 502, 602, 720), 시나리오들(100, 200, 300, 400, 500, 600, 700), 방법들(800, 1500), 및 우선순위 순환(900)과 관련된 적어도 하나의 기능을 수행하는 클라우드 기반 디바이스들일 수 있다.
일부 실시예들에서, 컴퓨팅 클러스터들(1409a, 1409b, 1409c)은 단일 컴퓨팅 센터에 상주하는 단일 컴퓨팅 디바이스일 수 있다. 다른 실시예들에서, 컴퓨팅 클러스터들(1409a, 1409b, 1409c)은, 단일 컴퓨팅 센터 내의 다수의 컴퓨팅 디바이스들, 또는 심지어, 다양한 지리적 위치들에 위치된 다수의 컴퓨팅 센터들에 위치된 다수의 컴퓨팅 디바이스들을 포함할 수 있다. 예컨대, 도 14b는, 컴퓨팅 클러스터들(1409a, 1409b, 1409c) 각각이 상이한 물리적 위치들에 상주하는 것을 도시한다.
일부 실시예들에서, 컴퓨팅 클러스터들(1409a, 1409b, 1409c)에서의 데이터 및 서비스들은 비-일시적인 유형의 컴퓨터 판독가능 매체(또는 컴퓨터 판독가능 저장 매체)에 저장되고 다른 컴퓨팅 디바이스들에 의해 액세스가능한 컴퓨터 판독가능 정보로서 인코딩될 수 있다. 일부 실시예들에서, 컴퓨팅 클러스터들(1409a, 1409b, 1409c)은 단일 디스크 드라이브 또는 다른 유형의 저장 매체 상에 저장될 수 있거나, 하나 이상의 다양한 지리적 위치들에 위치된 다수의 디스크 드라이브들 또는 다른 유형의 저장 매체들 상에 구현될 수 있다.
도 14b는 예시적인 실시예에 따른 클라우드 기반 서버 시스템을 도시한다. 도 14b에서, 안전 시스템의 기능성이 3개의 컴퓨팅 클러스터(1409a, 1409b, 및 1409c) 간에 분산될 수 있다. 컴퓨팅 클러스터(1409a)는, 하나 이상의 컴퓨팅 디바이스(1400a), 클러스터 저장 어레이(1410a), 및 근거리 클러스터 네트워크(1412a)에 의해 연결되는 클러스터 라우터(1411a)를 포함할 수 있다. 유사하게, 컴퓨팅 클러스터(1409b)는, 하나 이상의 컴퓨팅 디바이스(1400b), 클러스터 저장 어레이(1410b), 및 근거리 클러스터 네트워크(1412b)에 의해 연결되는 클러스터 라우터(1411b)를 포함할 수 있다. 마찬가지로, 컴퓨팅 클러스터(1409c)는, 하나 이상의 컴퓨팅 디바이스(1400c), 클러스터 저장 어레이(1410c), 및 근거리 클러스터 네트워크(1412c)에 의해 연결되는 클러스터 라우터(1411c)를 포함할 수 있다.
일부 실시예들에서, 컴퓨팅 클러스터들(1409a, 1409b, 및 1409c) 각각은 동일한 수의 컴퓨팅 디바이스, 동일한 수의 클러스터 저장 어레이, 및 동일한 수의 클러스터 라우터를 가질 수 있다. 하지만, 다른 실시예들에서, 각각의 컴퓨팅 클러스터는 상이한 수의 컴퓨팅 디바이스, 상이한 수의 클러스터 저장 어레이, 및 상이한 수의 클러스터 라우터를 가질 수 있다. 각각의 컴퓨팅 클러스터에 있는 컴퓨팅 디바이스, 클러스터 저장 어레이, 및 클러스터 라우터의 수는 각각의 컴퓨팅 클러스터에 배정된 컴퓨팅 작업 또는 작업들에 의존할 수 있다.
컴퓨팅 클러스터(1409a)에서, 예컨대, 컴퓨팅 디바이스들(1400a)은, 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 다양한 컴퓨팅 작업들을 수행하도록 구성될 수 있다. 일 실시예에서, 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 다양한 기능성들은 하나 이상의 컴퓨팅 디바이스(1400a, 1400b, 및 1400c) 간에 분산될 수 있다. 개개의 컴퓨팅 클러스터들(1409b 및 1409c)에서의 컴퓨팅 디바이스들(1400b 및 1400c)은 컴퓨팅 클러스터(1409a)에서의 컴퓨팅 디바이스들(1400a)과 유사하게 구성될 수 있다. 반면에, 일부 실시예들에서, 컴퓨팅 디바이스들(1400a, 1400b, 및 1400c)은 상이한 기능들을 수행하도록 구성될 수 있다.
일부 실시예들에서, 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스와 연관된 컴퓨팅 작업들 및 저장된 데이터는, 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 처리 요건들, 컴퓨팅 디바이스들(1400a, 1400b, 및 1400c)의 처리 능력들, 각각의 컴퓨팅 클러스터에서의 컴퓨팅 디바이스들 사이의 그리고 컴퓨팅 클러스터들 그들 자체 사이의 네트워크 연결들의 레이턴시, 및/또는 전체 시스템 아키텍처의 비용, 속도, 고장 허용 한계, 복원력, 효율성, 및/또는 다른 설계 목표들에 기여할 수 있는 다른 인자들에 적어도 부분적으로 기반하여 컴퓨팅 디바이스들(1400a, 1400b, 및 1400c)에 걸쳐 분산될 수 있다.
컴퓨팅 클러스터들(1409a, 1409b, 및 1409c)의 클러스터 저장 어레이들(1410a, 1410b, 및 1410c)은, 하드 디스크 드라이브들의 그룹들에 대한 판독 및 기입 액세스를 관리하도록 구성되는 디스크 어레이 제어기들을 포함하는 데이터 저장 어레이들일 수 있다. 디스크 어레이 제어기들은 또한, 단독으로 또는 그들 개개의 컴퓨팅 디바이스들과 함께, 하나 이상의 컴퓨팅 디바이스가 하나 이상의 클러스터 저장 어레이에 액세스하지 못하게 하는 디스크 드라이브 또는 다른 클러스터 저장 어레이 장애들 및/또는 네트워크 장애들로부터 보호하기 위해, 클러스터 저장 어레이들에 저장된 데이터의 백업 또는 중복적 사본들을 관리하도록 구성될 수 있다.
다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 기능들이 컴퓨팅 클러스터들(1409a, 1409b, 및 1409c)의 컴퓨팅 디바이스들(1400a, 1400b, 및 1400c)에 걸쳐 분산될 수 있는 방식과 유사하게, 이러한 구성요소들의 다양한 능동 부분들 및/또는 백업 부분들이 클러스터 저장 어레이들(1410a, 1410b, 및 1410c)에 걸쳐 분산될 수 있다. 예컨대, 일부 클러스터 저장 어레이들은 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 데이터의 일 부분을 저장하도록 구성될 수 있는 한편, 다른 클러스터 저장 어레이들은 다중 동작자 계획자, 로봇, 로드맵 편집기, 및/또는 컴퓨팅 디바이스의 데이터의 다른 부분(들)을 저장할 수 있다. 부가적으로, 일부 클러스터 저장 어레이들은 다른 클러스터 저장 어레이들에 저장된 데이터의 백업 버전들을 저장하도록 구성될 수 있다.
컴퓨팅 클러스터들(1409a, 1409b, 및 1409c)의 클러스터 라우터들(1411a, 1411b, 및 1411c)은, 컴퓨팅 클러스터들에 대한 내부 및 외부 통신들을 제공하도록 구성되는 네트워킹 장비를 포함할 수 있다. 예컨대, 컴퓨팅 클러스터(1409a)의 클러스터 라우터들(1411a)은, (i) 근거리 클러스터 네트워크(1412a)를 통한 컴퓨팅 디바이스들(1400a)과 클러스터 저장 어레이들(1410a) 간의 근거리 영역 네트워크 통신들, 및 (ii) 네트워크(1414)에 대한 광역 네트워크 연결(1413a)을 통한 컴퓨팅 클러스터(1409a)와 컴퓨팅 클러스터들(1409b 및 1409c) 간의 광역 네트워크 통신들을 제공하도록 구성되는 하나 이상의 인터넷 스위칭 및 라우팅 디바이스를 포함할 수 있다. 클러스터 라우터들(1411b 및 1411c)은 클러스터 라우터들(1411a)과 유사한 네트워크 장비를 포함할 수 있고, 클러스터 라우터들(1411b 및 1411c)은, 클러스터 라우터들(1411a)이 컴퓨팅 클러스터(1409a)에 대해 수행하는 것과 유사한 네트워킹 기능들을 컴퓨팅 클러스터들(1409b 및 1409b)에 대해 수행할 수 있다.
일부 실시예들에서, 클러스터 라우터들(1411a, 1411b, 및 1411c)의 구성은, 컴퓨팅 디바이스들 및 클러스터 저장 어레이들의 데이터 통신 요건들, 클러스터 라우터들(1411a, 1411b, 및 1411c)의 네트워크 장비의 데이터 통신 능력들, 근거리 네트워크들(1412a, 1412b, 1412c)의 레이턴시 및 처리량, 광역 네트워크 연결들(1413a, 1413b, 및 1413c)의 레이턴시, 처리량, 및 비용, 및/또는 중용적(moderation) 시스템 아키텍처의 비용, 속도, 고장 허용 한계, 복원력, 효율성, 및/또는 다른 설계 기준들에 기여할 수 있는 다른 인자들에 적어도 부분적으로 기반할 수 있다.
예시적인 동작 방법들
도 15는 예시적인 실시예에 따른 방법(1500)의 흐름도이다. 방법(1500)은, 컴퓨팅 디바이스(1400)와 같은 컴퓨팅 디바이스에 의해 수행될 수 있다. 특히, 컴퓨팅 디바이스(1400)는, 본원에서 설명된 다중 동작자 계획자를 구현하는 소프트웨어를 실행하여 방법(1500)을 수행할 수 있다.
방법(1500)은 블록(1510)에서 시작될 수 있으며, 여기서, 컴퓨팅 디바이스는, 적어도 도 3 및 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신할 수 있다.
블록(1520)에서, 컴퓨팅 디바이스는, 적어도 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 복수의 상충 구역들을 연결하는 복수의 레인들로 로드맵에 주석을 부기할 수 있고, 여기서, 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝난다. 일부 실시예들에서, 복수의 레인들로 로드맵에 주석을 부기하는 것은: 적어도 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 컴퓨팅 디바이스를 사용하여, 새로운 레인으로 로드맵에 주석을 부기하려고 시도하는 것; 컴퓨팅 디바이스를 사용하여, 새로운 레인이 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝나는지 여부를 결정하는 것; 및 새로운 레인이 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상충 구역으로부터 충분히 멀리 떨어져서 끝난다고 결정한 후에, 새로운 레인으로 로드맵에 주석을 부기하는 것을 포함할 수 있다. 특히 이러한 실시예들에서, 새로운 레인으로 로드맵에 주석을 부기하려고 시도하는 것은: 적어도 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 컴퓨팅 디바이스를 사용하여, 새로운 레인에 대한 로드맵 상의 위치를 결정하는 것; 및 컴퓨팅 디바이스를 사용하여, 새로운 레인으로 로드맵 상의 그 위치에 주석을 부기하려고 시도하는 것을 포함할 수 있다. 다른 실시예들에서, 복수의 레인들로 로드맵에 주석을 부기하는 것은: 적어도 도 7a 내지 도 7d의 맥락에서 위에 논의된 바와 같이, 하나 이상의 레인으로부터 제1 쌍형성(paired) 레인 및 제2 쌍형성 레인을 선택하는 것; 제1 쌍형성 레인 상의 로봇이 제2 쌍형성 레인 상의 로봇과 충돌하는지 여부를 결정하는 것; 및 제1 쌍형성 레인 상의 로봇이 제2 쌍형성 레인 상의 로봇과 충돌한다고 결정한 후에, 제1 쌍형성 레인 및/또는 제2 쌍형성 레인이 레인이 아니라고 결정하는 것을 포함할 수 있다.
블록(1530)에서, 적어도 도 3 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 제1 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제1 루트 및 제2 로봇에 의한 사용을 위한 로드맵을 따른 환경을 통한 제2 루트가 결정될 수 있으며, 여기서, 제1 루트 및 제2 루트 둘 모두는 제1 레인을 포함하고, 제1 레인은 제1 상충 구역에 연결된다. 일부 실시예들에서, 제1 루트는, 적어도 도 5a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 제1 로봇을 시작 위치로부터 목적지 위치로 이끄는 레인들의 시퀀스 및 대응하는 대기 시간들을 포함할 수 있다. 다른 실시예들에서, 환경을 통한 제1 루트를 결정하는 것은, 적어도 도 4a 내지 도 5f 및 도 8의 맥락에서 위에 논의된 바와 같이, 제1 로봇에 의한 배타적 사용에 대해 제1 루트에 따른 제2 상충 구역을 예비하는 것을 포함할 수 있으며, 여기서, 제2 상충 구역은 2개 이상의 레인 사이에 놓인다. 특히 이러한 실시예들에서, 제2 상충 구역은, 적어도 도 4a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 2개의 레인 사이의 교차로를 포함할 수 있다. 그 밖에 특히 이러한 실시예들에서, 적어도 도 7a 내지 도 7f의 맥락에서 위에 논의된 바와 같이, 로드맵의 주석이 부기되지 않은 부분은 하나 이상의 레인에 의해 주석이 부기되지 않고, 제2 상충 구역은 로드맵의 주석이 부기되지 않은 부분을 포함한다.
블록(1540)에서, 적어도 도 3 내지 도 6f, 도 8 및 도 9의 맥락에서 위에 논의된 바와 같이, 제1 로봇에 제1 우선순위가 그리고 제2 로봇에 제2 우선순위가 배정될 수 있으며, 제1 우선순위는 제2 우선순위보다 높다. 일부 실시예들에서, 제1 우선순위 및 제2 우선순위 둘 모두는, 적어도 도 3, 도 4b 내지 도 6f, 도 9, 및 도 10의 맥락에서 위에 논의된 바와 같이, 단조적으로 증가하는 함수에 기반할 수 있다. 특히 이러한 실시예들에서, 단조적으로 증가하는 함수는: 적어도 도 3, 도 4b 내지 도 6f, 도 9, 및 도 10의 맥락에서 위에 논의된 바와 같이, 로봇이 자신의 루트 상에서 이동하는 동안 소요한 시간량, 및 로봇이 루트를 시작한 이후에 자신들의 루트를 시작한 로봇들의 수를 표시하는 루트 시작 값 중 하나 이상을 결정할 수 있다.
블록(1550)에서, 제2 루트를 따르는 제2 로봇은, 적어도 도 3 및 도 5a 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 제1 로봇이 제1 상충 구역에 도달하기 전에 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 야기할 것임이 결정될 수 있다.
블록(1560)에서, 적어도 도 3 및 도 5a 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 제2 루트는, 제1 우선순위가 제2 우선순위보다 높은 것에 기반하여, 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 방지하도록 변경될 수 있다.
일부 실시예들에서, 제1 상충 구역은 제1 로봇에 의한 배타적 사용에 대해 예비될 수 있고, 그 때, 제2 로봇이 제1 레인 상에서 제1 로봇을 차단하는 것을 방지하도록 제2 루트를 변경하는 것은: 적어도 도 5a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 제1 로봇에 의한 배타적 사용에 대한 제1 상충 구역의 제1 예비를 해제하는 것; 제1 상충 구역의 제1 예비를 해제한 후에, 제2 로봇에 의한 배타적 사용에 대한 제1 상충 구역의 제2 예비를 획득하는 것; 제2 예비를 획득한 후에, 제1 에지를 벗어나 제1 상충 구역에 진입할 것을 제2 로봇에 지시하는 것; 및 제2 로봇이 제1 상충 구역을 횡단한 후에, 제2 예비를 해제하는 것, 및 제1 로봇에 의한 배타적 사용에 대한 제1 상충 구역의 제3 예비를 획득하는 것을 포함할 수 있다. 특정 실시예들에서, 방법(1500)은: 적어도 도 5a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 제2 로봇이 제1 상충 구역을 횡단한 후에, 제2 루트를 통해 목적지 위치로 계속 진행할 것을 제2 로봇에 지시하는 것을 더 포함할 수 있다. 다른 실시예들에서, 로드맵에는 레인의 순환으로 주석이 부기될 수 있고, 그 때, 제1 레인 상에서 제1 로봇을 차단하는 것을 피하도록 제2 루트를 변경하는 것은, 적어도 도 5a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 레인들의 순환을 통해 이동하도록 제2 루트를 변경하는 것을 포함할 수 있다. 또 다른 실시예들에서, 제1 레인을 차단하는 것을 피하도록 제2 로봇에 대한 제2 루트를 변경하는 것은, 적어도 도 4a 내지 도 4e의 맥락에서 위에 논의된 바와 같이, 하나 이상의 레인 중 특정 레인 상에서 대기할 것을 제2 로봇에 지시하는 것을 포함할 수 있다.
일부 실시예들에서, 방법(1500)은: 적어도 도 3 및 도 5a 내지 도 6f의 맥락에서 위에 논의된 바와 같이, 제1 로봇이 제1 루트를 완료한 후에 제1 우선순위를 재설정하는 것을 더 포함할 수 있다.
다른 실시예들에서, 방법(1500)은: 적어도 도 3의 맥락에서 위에 논의된 바와 같이, 제1 로봇을 차단하는 제1 루트 상의 장애물의 존재를 결정하는 것; 제1 로봇을 차단하는 제1 루트 상의 장애물의 존재를 결정한 후에, 장애물의 존재를 표시하는 경고 메시지를 생성하는 것; 및 장애물을 피하는 제1 로봇에 대한 새로운 루트를 결정하는 것을 더 포함할 수 있다.
또 다른 실시예들에서, 제3 로봇의 제3 루트가 제1 로봇에 대해 예비되어 있던 루트의 중첩 부분과 중첩될 수 있고, 그 때, 방법(1500)은: 적어도 도 5a 내지 도 5f의 맥락에서 위에 논의된 바와 같이, 제3 로봇의 제3 우선순위가 제1 우선순위보다 작은지 여부를 결정하는 것; 제3 우선순위가 제1 우선순위보다 작다고 결정한 후에, 제1 로봇이 중첩 부분에 도달하기 전에 제3 로봇이 중첩 부분을 횡단하기 위한 위치에 있는지 여부를 결정하는 것; 및 제1 로봇이 중첩 부분에 도달하기 전에 제3 로봇이 중첩 부분을 횡단하기 위한 위치에 있다고 결정한 후에, 제1 로봇이 중첩 부분에 도달하기 전에 중첩 부분을 횡단할 것을 제3 로봇에 지시하는 것을 더 포함할 수 있다.
본 개시내용은, 다양한 양상들의 예시들로서 의도되는 본 출원에서 설명된 특정 실시예들의 관점에서 제한되지 않아야 한다. 본원에서 개시된 기법들 중 일부가 로봇들을 수반하는 동작들의 관점에서 설명되지만, 그러한 본원에서 개시된 기법들은 명시적으로 달리 언급되지 않는 한 일반적인 동작자들에 적용가능하다. 관련 기술분야의 통상의 기술자들에게 명백할 바와 같이, 그 사상 및 범위를 벗어나지 않으면서 많은 수정들 및 변형들이 이루어질 수 있다. 본원에서 열거된 것들에 더하여, 본 개시내용의 범위 내의 기능적으로 동등한 방법들 및 장치들이 전술한 설명들로부터 관련 기술분야의 통상의 기술자들에게 명백할 것이다. 그러한 수정들 및 변형들은 첨부된 청구항들의 범위 내에 속하는 것으로 의도된다.
위의 상세한 설명은 개시된 시스템들, 디바이스들, 및 방법들의 다양한 특징들 및 기능들을 첨부된 도면들을 참조하여 설명하였다. 도면들에서, 맥락이 달리 지시하지 않는 한, 유사한 기호들은 전형적으로 유사한 구성요소들을 식별한다. 상세한 설명, 도면들 및 청구항들에 설명된 예시적인 실시예들은 제한하기 위한 것이 아니다. 본원에 제시된 주제의 사상 또는 범위를 벗어나지 않으면서, 다른 실시예들이 활용될 수 있고 다른 변경들이 이루어질 수 있다. 본원에서 일반적으로 설명되고 도면들에서 예시되는 본 개시내용의 양상들은 광범위하게 다양한 상이한 구성들로 배열, 치환, 조합, 분리, 및 설계될 수 있으며, 이들 전부가 본원에서 명시적으로 고려된다는 것이 용이하게 이해될 것이다.
도면들에서의 그리고 본원에서 논의된 바와 같은 래더도(ladder diagram)들, 시나리오들, 및 흐름도들 중 임의의 것 또는 전부에 대해, 각각의 블록 및/또는 통신은 예시적인 실시예들에 따른 정보의 처리 및/또는 정보의 송신을 표현할 수 있다. 대안적인 실시예들이 이러한 예시적인 실시예들의 범위 내에 포함된다. 이러한 대안적인 실시예에서, 예컨대, 블록들로서 설명된 기능들, 송신들, 통신들, 요청들, 응답들, 및/또는 메시지들은 수반되는 기능성에 따라, 실질적으로 동시에 또는 역순으로 이루어지는 것을 포함하여, 도시되거나 논의된 것과 다른 순서로 실행될 수 있다. 추가로, 본원에서 논의된 래더도들, 시나리오들, 및 흐름도들 중 임의의 것과 함께 더 많거나 더 적은 블록들 및/또는 기능들이 사용될 수 있고, 이러한 래더도들, 시나리오들, 및 흐름도들은 부분적으로 또는 전체적으로 서로 조합될 수 있다.
정보의 처리를 표현하는 블록은 본원에서 설명된 방법 또는 기법의 특정 논리적 기능들을 수행하도록 구성될 수 있는 회로에 대응할 수 있다. 대안적으로 또는 부가적으로, 정보의 처리를 표현하는 블록은 (관련 데이터를 포함하는) 프로그램 코드의 모듈, 세그먼트, 또는 일부분에 대응할 수 있다. 프로그램 코드는 방법 또는 기법에서의 특정 논리적 기능들 또는 동작들을 구현하기 위해 프로세서에 의해 실행가능한 하나 이상의 명령어를 포함할 수 있다. 프로그램 코드 및/또는 관련 데이터는, 디스크 또는 하드 드라이브 또는 다른 저장 매체를 포함하는 저장 디바이스와 같은 임의의 유형의 컴퓨터 판독가능 매체 상에 저장될 수 있다.
컴퓨터 판독가능 매체는 또한, 레지스터 메모리, 프로세서 캐시, 및 랜덤 액세스 메모리(RAM)와 같이 짧은 시간 기간들 동안 데이터를 저장하는 비-일시적인 컴퓨터 판독가능 매체와 같은 비-일시적인 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독가능 매체는 또한, 예컨대, 판독 전용 메모리(ROM), 광학 또는 자기 디스크들, 콤팩트 디스크 판독 전용 메모리(CD-ROM)와 같은, 프로그램 코드 및/또는 데이터를 더 긴 시간 기간들 동안 저장하는 비-일시적인 컴퓨터 판독가능 매체, 이를테면 보조 또는 영구적 장기 저장소를 포함할 수 있다. 컴퓨터 판독가능 매체는 또한 임의의 다른 휘발성 또는 비-휘발성 저장 시스템들일 수 있다. 컴퓨터 판독가능 매체는, 예컨대, 컴퓨터 판독가능 저장 매체 또는 유형의 저장 디바이스로 간주될 수 있다.
더욱이, 하나 이상의 정보 송신을 표현하는 블록은 동일한 물리적 디바이스에서의 소프트웨어 및/또는 하드웨어 모듈들 간의 정보 송신들에 대응할 수 있다. 하지만, 다른 정보 송신들은 상이한 물리적 디바이스들에서의 소프트웨어 모듈들 및/또는 하드웨어 모듈들 간에 이루어질 수 있다.
본원에서 다양한 양상들 및 실시예들이 개시되었지만, 다른 양상들 및 실시예들이 관련 기술분야의 통상의 기술자들에게 명백할 것이다. 본원에서 개시된 다양한 양상들 및 실시예들은 설명의 목적들을 위해 제공되고, 제한적인 것으로 의도되지 않으며, 실제 범위는 다음의 청구항들에 의해 나타내어진다.

Claims (20)

  1. 방법으로서,
    컴퓨팅 디바이스에서, 제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신하는 단계;
    상기 컴퓨팅 디바이스를 사용하여, 복수의 상충 구역들을 연결하는 복수의 레인들로 상기 로드맵에 주석을 부기하는 단계 ― 각각의 레인은 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상기 상충 구역으로부터 충분히 멀리 떨어져서 끝남 ―;
    상기 제1 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제1 루트 및 상기 제2 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제2 루트를 결정하는 단계 ― 상기 제1 루트 및 상기 제2 루트 둘 모두는 제1 레인을 포함하고, 상기 제1 레인은 제1 상충 구역에 연결됨 ―;
    상기 제1 로봇에 제1 우선순위를 그리고 상기 제2 로봇에 제2 우선순위를 배정하는 단계 ― 상기 제1 우선순위는 상기 제2 우선순위보다 높음 ―;
    상기 제2 루트를 따르는 상기 제2 로봇이, 상기 제1 로봇이 상기 제1 상충 구역에 도달하기 전에 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 야기할 것임을 결정하는 단계; 및
    상기 제1 우선순위가 상기 제2 우선순위보다 높은 것에 기반하여, 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 방지하도록 상기 제2 루트를 변경하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 레인들로 상기 로드맵에 주석을 부기하는 단계는,
    상기 컴퓨팅 디바이스를 사용하여, 새로운 레인으로 상기 로드맵에 주석을 부기하려고 시도하는 단계;
    상기 컴퓨팅 디바이스를 사용하여, 상기 새로운 레인이 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상기 상충 구역으로부터 충분히 멀리 떨어져서 끝나는지 여부를 결정하는 단계; 및
    상기 새로운 레인이 단방향이고 상충 구역을 차단하는 것을 피하기 위해 상기 상충 구역으로부터 충분히 멀리 떨어져서 끝난다고 결정한 후에, 상기 새로운 레인으로 상기 로드맵에 주석을 부기하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 새로운 레인으로 상기 로드맵에 주석을 부기하려고 시도하는 단계는,
    상기 컴퓨팅 디바이스를 사용하여, 상기 새로운 레인에 대한 상기 로드맵 상의 위치를 결정하는 단계; 및
    상기 컴퓨팅 디바이스를 사용하여, 상기 새로운 레인으로 상기 로드맵 상의 상기 위치에 주석을 부기하려고 시도하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 복수의 레인들로 상기 로드맵에 주석을 부기하는 단계는,
    상기 복수의 레인들로부터 제1 쌍형성(paired) 레인 및 제2 쌍형성 레인을 선택하는 단계;
    상기 제1 쌍형성 레인 상의 로봇이 상기 제2 쌍형성 레인 상의 로봇과 충돌하는지 여부를 결정하는 단계; 및
    상기 제1 쌍형성 레인 상의 로봇이 상기 제2 쌍형성 레인 상의 로봇과 충돌한다고 결정한 후에, 상기 제1 쌍형성 레인 및/또는 상기 제2 쌍형성 레인이 레인이 아니라고 결정하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 제1 우선순위 및 상기 제2 우선순위 둘 모두는 단조적으로 증가하는 함수에 기반하는, 방법.
  6. 제5항에 있어서,
    상기 단조적으로 증가하는 함수는, 로봇이 자신의 루트 상에서 이동하는 동안 소요한 시간량, 및 로봇이 자신의 루트를 시작한 이후에 자신들의 루트를 시작한 로봇들의 수를 표시하는 루트 시작 값 중 하나 이상을 결정하는, 방법.
  7. 제1항에 있어서,
    상기 제1 로봇이 상기 제1 루트를 완료한 후에 상기 제1 우선순위를 재설정하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 제1 루트는, 상기 제1 로봇을 시작 위치로부터 목적지 위치로 이끄는 레인들의 시퀀스 및 대응하는 대기 시간들을 포함하는, 방법.
  9. 제1항에 있어서,
    상기 제1 로봇을 차단하는 상기 제1 루트 상의 장애물의 존재를 결정하는 단계; 및
    상기 제1 로봇을 차단하는 상기 제1 루트 상의 장애물의 존재를 결정한 후에,
    상기 장애물의 존재를 표시하는 경고 메시지를 생성하는 단계, 및
    상기 장애물을 피하는 상기 제1 로봇에 대한 새로운 루트를 결정하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서,
    상기 제1 로봇에 대해 예비되어 있던 루트의 중첩 부분과 제3 로봇의 제3 루트가 중첩되고,
    상기 방법은,
    상기 제3 로봇의 제3 우선순위가 상기 제1 우선순위보다 작은지 여부를 결정하는 단계;
    상기 제3 우선순위가 상기 제1 우선순위보다 작다고 결정한 후에, 상기 제1 로봇이 상기 중첩 부분에 도달하기 전에 상기 제3 로봇이 상기 중첩 부분을 횡단하기 위한 위치에 있는지 여부를 결정하는 단계; 및
    상기 제1 로봇이 상기 중첩 부분에 도달하기 전에 상기 제3 로봇이 상기 중첩 부분을 횡단하기 위한 위치에 있다고 결정한 후에, 상기 제1 로봇이 상기 중첩 부분에 도달하기 전에 상기 중첩 부분을 횡단할 것을 상기 제3 로봇에 지시하는 단계를 더 포함하는, 방법.
  11. 제1항에 있어서,
    상기 제1 상충 구역은 상기 제1 로봇에 의한 배타적 사용에 대해 예비되고,
    상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 방지하도록 상기 제2 루트를 변경하는 단계는,
    상기 제1 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제1 예비를 해제하는 단계;
    상기 제1 상충 구역의 상기 제1 예비를 해제한 후에, 상기 제2 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제2 예비를 획득하는 단계;
    상기 제2 예비를 획득한 후에, 제1 에지를 벗어나 상기 제1 상충 구역에 진입할 것을 상기 제2 로봇에 지시하는 단계; 및
    상기 제2 로봇이 상기 제1 상충 구역을 횡단한 후에,
    상기 제2 예비를 해제하는 단계, 및
    상기 제1 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제3 예비를 획득하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제2 로봇이 상기 제1 상충 구역을 횡단한 후에, 상기 제2 루트를 통해 목적지 위치로 계속 진행할 것을 상기 제2 로봇에 지시하는 단계를 더 포함하는, 방법.
  13. 제1항에 있어서,
    상기 로드맵에는 레인들의 순환으로 주석이 부기되고, 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 피하도록 상기 제2 루트를 변경하는 단계는, 상기 레인들의 순환을 통해 이동하도록 상기 제2 루트를 변경하는 단계를 포함하는, 방법.
  14. 제1항에 있어서,
    상기 제1 레인을 차단하는 것을 피하도록 상기 제2 로봇에 대한 상기 제2 루트를 변경하는 것은, 상기 복수의 레인들 중 특정 레인 상에서 대기할 것을 상기 제2 로봇에 지시하는 것을 포함하는, 방법.
  15. 제1항에 있어서,
    상기 환경을 통한 상기 제1 루트를 결정하는 것은, 상기 제1 로봇에 의한 배타적 사용에 대해 상기 제1 루트에 따른 제2 상충 구역을 예비하는 것을 포함하며, 상기 제2 상충 구역은 2개 이상의 레인 사이에 놓이는, 방법.
  16. 제15항에 있어서,
    상기 제2 상충 구역은 2개의 레인 사이의 교차로를 포함하는, 방법.
  17. 제15항에 있어서,
    상기 로드맵의 주석이 부기되지 않은 부분은 상기 복수의 레인들에 의해 주석이 부기되지 않고, 상기 제2 상충 구역은 상기 로드맵의 주석이 부기되지 않은 부분을 포함하는, 방법.
  18. 컴퓨팅 디바이스로서,
    하나 이상의 프로세서; 및
    적어도 컴퓨터 실행가능 명령어들이 저장된 데이터 저장소를 포함하며,
    상기 컴퓨터 실행가능 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금,
    제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신하게 하고,
    복수의 상충 구역들을 연결하는 복수의 레인들로 상기 로드맵에 주석을 부기하게 하고 ― 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상기 상충 구역으로부터 충분히 멀리 떨어져서 끝남 ―,
    상기 제1 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제1 루트 및 상기 제2 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제2 루트를 결정하게 하고 ― 상기 제1 루트 및 상기 제2 루트 둘 모두는 제1 레인을 포함하고, 상기 제1 레인은 제1 상충 구역에 연결됨 ―,
    상기 제1 로봇에 제1 우선순위를 그리고 상기 제2 로봇에 제2 우선순위를 배정하게 하고 ― 상기 제1 우선순위는 상기 제2 우선순위보다 높음 ―,
    상기 제2 루트를 따르는 상기 제2 로봇이, 상기 제1 로봇이 상기 제1 상충 구역에 도달하기 전에 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 야기할 것임을 결정하게 하고;
    상기 제1 우선순위가 상기 제2 우선순위보다 높은 것에 기반하여, 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 방지하도록 상기 제2 루트를 변경하게 하는, 컴퓨팅 디바이스.
  19. 제18항에 있어서,
    상기 제1 상충 구역은 상기 제1 로봇에 의한 배타적 사용에 대해 예비되고,
    상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 방지하도록 상기 제2 루트를 변경하는 것은,
    상기 제1 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제1 예비를 해제하는 것;
    상기 제1 상충 구역의 상기 제1 예비를 해제한 후에, 상기 제2 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제2 예비를 획득하는 것;
    상기 제2 예비를 획득한 후에, 제1 에지를 벗어나 상기 제1 상충 구역에 진입할 것을 상기 제2 로봇에 지시하는 것; 및
    상기 제2 로봇이 상기 제1 상충 구역을 횡단한 후에,
    상기 제2 예비를 해제하는 것, 및
    상기 제1 로봇에 의한 배타적 사용에 대한 상기 제1 상충 구역의 제3 예비를 획득하는 것을 포함하는, 컴퓨팅 디바이스.
  20. 명령어들이 저장된 컴퓨터 판독가능 매체로서,
    상기 명령어들은, 컴퓨팅 디바이스의 하나 이상의 프로세서 프로세서에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금,
    제1 로봇 및 제2 로봇을 포함하는 현재사용 환경의 로드맵을 수신하게 하고,
    복수의 상충 구역들을 연결하는 복수의 레인들로 상기 로드맵에 주석을 부기하게 하고 ― 각각의 레인은 단방향이고, 상충 구역을 차단하는 것을 피하기 위해 상기 상충 구역으로부터 충분히 멀리 떨어져서 끝남 ―,
    상기 제1 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제1 루트 및 상기 제2 로봇에 의한 사용을 위한 상기 로드맵을 따른 상기 환경을 통한 제2 루트를 결정하게 하고 ― 상기 제1 루트 및 상기 제2 루트 둘 모두는 제1 레인을 포함하고, 상기 제1 레인은 제1 상충 구역에 연결됨 ―,
    상기 제1 로봇에 제1 우선순위를 그리고 상기 제2 로봇에 제2 우선순위를 배정하게 하고 ― 상기 제1 우선순위는 상기 제2 우선순위보다 높음 ―,
    상기 제2 루트를 따르는 상기 제2 로봇이, 상기 제1 로봇이 상기 제1 상충 구역에 도달하기 전에 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 야기할 것임을 결정하게 하고;
    상기 제1 우선순위가 상기 제2 우선순위보다 높은 것에 기반하여, 상기 제2 로봇이 상기 제1 레인 상에서 상기 제1 로봇을 차단하는 것을 방지하도록 상기 제2 루트를 변경하게 하는, 컴퓨터 판독가능 매체.
KR1020197032896A 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기 KR102291434B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217025623A KR102415096B1 (ko) 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/486,219 2017-04-12
US15/486,219 US10642282B2 (en) 2017-04-12 2017-04-12 Roadmap annotation for deadlock-free multi-agent navigation
PCT/US2018/019780 WO2018190960A1 (en) 2017-04-12 2018-02-26 Roadmap annotation for deadlock-free multi-agent navigation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025623A Division KR102415096B1 (ko) 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기

Publications (2)

Publication Number Publication Date
KR20190134750A KR20190134750A (ko) 2019-12-04
KR102291434B1 true KR102291434B1 (ko) 2021-08-20

Family

ID=61692066

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217025623A KR102415096B1 (ko) 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기
KR1020197032896A KR102291434B1 (ko) 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217025623A KR102415096B1 (ko) 2017-04-12 2018-02-26 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기

Country Status (6)

Country Link
US (2) US10642282B2 (ko)
EP (1) EP3610340B1 (ko)
JP (2) JP2020518890A (ko)
KR (2) KR102415096B1 (ko)
CN (1) CN110730931A (ko)
WO (1) WO2018190960A1 (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842815B2 (en) 2016-02-26 2017-12-12 Taiwan Semiconductor Manufacturing Company, Ltd. Semiconductor device and method of manufacture
US11422565B1 (en) * 2017-08-18 2022-08-23 Amazon Technologies, Inc. System for robot movement that is informed by cultural conventions
US11300963B1 (en) 2017-08-18 2022-04-12 Amazon Technologies, Inc. Robot movement constraint system
US10773381B2 (en) * 2017-11-30 2020-09-15 Skygrid, Llc Secure distributed system using blockchain for self-policing of autonomous agents
CN110262471B (zh) * 2018-05-10 2022-09-06 北京京东乾石科技有限公司 机器人调度方法和装置、机器人及机器人调度系统
WO2019233593A1 (en) * 2018-06-08 2019-12-12 Cpac Systems Ab A method for controlling vehicles
EP3591487B1 (en) * 2018-07-02 2021-05-26 Kollmorgen Automation AB An agv system and a method of controlling an agv system
JP7178061B2 (ja) * 2018-10-10 2022-11-25 霊動科技(北京)有限公司 人間相互作用無人搬送車
USD950574S1 (en) * 2018-10-23 2022-05-03 Capital One Services, Llc Scanning device or portion thereof with a scanning user interface
JP7064429B2 (ja) * 2018-11-06 2022-05-10 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム
CN112088344B (zh) 2018-12-04 2024-02-02 深圳市大疆创新科技有限公司 控制可移动装置的移动的方法及系统
CN111830952A (zh) * 2019-03-29 2020-10-27 阿里巴巴集团控股有限公司 实体店铺内的运输车调度方法及装置
TWI699636B (zh) * 2019-05-21 2020-07-21 華邦電子股份有限公司 協同型機器人控制系統和方法
JP7303027B2 (ja) * 2019-06-03 2023-07-04 株式会社小松製作所 作業機械を制御するためのシステムおよび方法
CN110209485B (zh) * 2019-06-05 2020-06-02 青岛海通胜行智能科技有限公司 一种协同作业时多机器人的动态避让方法
CN112060072B (zh) * 2019-06-11 2023-06-20 华邦电子股份有限公司 一种协同型机器人控制系统和方法
US11762393B2 (en) * 2019-08-01 2023-09-19 Dvw Holdings, Llc Shipping system and control system for secure package delivery
CN112388624B (zh) * 2019-08-15 2022-07-12 纳恩博(北京)科技有限公司 机器人的控制方法和装置、存储介质及电子装置
CN110531773A (zh) * 2019-09-12 2019-12-03 北京极智嘉科技有限公司 机器人路径调度方法、装置、服务器及存储介质
US11958183B2 (en) 2019-09-19 2024-04-16 The Research Foundation For The State University Of New York Negotiation-based human-robot collaboration via augmented reality
CN112631209A (zh) * 2019-10-08 2021-04-09 北京京东乾石科技有限公司 用于控制无人搬运车的方法和装置
DE102019128617B3 (de) * 2019-10-23 2020-12-10 Audi Ag Verfahren zum Betreiben eines fahrerlosen Transportsystems und fahrerloses Transportsystem
JP7204631B2 (ja) * 2019-10-29 2023-01-16 株式会社東芝 走行制御装置、方法及びコンピュータプログラム
JP7237799B2 (ja) * 2019-10-29 2023-03-13 株式会社東芝 走行制御装置及び運行システム
US11960281B1 (en) * 2019-12-12 2024-04-16 Tp Lab, Inc. Resource sharing among autonomous devices
BR112022017921A2 (pt) * 2020-03-13 2022-10-18 Inventio Ag Sistema de elevador com função de enfileiramento para tráfego de robôs
JP2022018855A (ja) * 2020-07-16 2022-01-27 株式会社東芝 走行制御装置、走行制御方法及びコンピュータプログラム
CN113589822A (zh) * 2020-08-20 2021-11-02 深圳市海柔创新科技有限公司 仓库机器人导航路线预约
NO20200927A1 (en) * 2020-08-26 2022-02-28 Autostore Tech As Routing of container handling vehicles operating an automated storage system
KR20220057895A (ko) * 2020-10-30 2022-05-09 삼성에스디에스 주식회사 무인 운반 장치 제어 방법 및 그 장치
CN112525196B (zh) * 2020-11-23 2023-04-28 山东亚历山大智能科技有限公司 一种基于多维数据的agv路线规划调度方法及系统
WO2022124004A1 (ja) * 2020-12-09 2022-06-16 ソニーグループ株式会社 経路計画装置
CN112985414A (zh) * 2021-04-09 2021-06-18 北京猎户星空科技有限公司 一种多智能体导航方法、装置、设备和介质
CN113671965B (zh) * 2021-08-24 2024-03-12 同济大学 路径规划方法及装置
EP4198670A1 (en) * 2021-10-29 2023-06-21 Volvo Autonomous Solutions AB Method and device for coordinating vehicle routes in confined areas
CN114115292A (zh) * 2021-12-21 2022-03-01 上海智蕙林医疗科技有限公司 行驶控制方法、系统、存储介质和计算机设备
US20230195119A1 (en) * 2021-12-22 2023-06-22 Ford Global Technologies, Llc Systems and methods for controlling autonomous mobile robots in a manufacturing environment
CN114347019B (zh) * 2021-12-22 2023-09-08 深圳优地科技有限公司 机器人控制方法、机器人及控制系统
CN114454162B (zh) * 2022-01-10 2023-05-26 广东技术师范大学 一种移动机器人复杂路口防碰撞方法及系统
CN114067569B (zh) * 2022-01-14 2022-06-10 华砺智行(武汉)科技有限公司 V2x车联网环境下车辆左转辅助预警方法
JP2023142245A (ja) * 2022-03-24 2023-10-05 三菱重工業株式会社 情報処理方法、情報処理装置及びプログラム
CN115167410A (zh) * 2022-07-01 2022-10-11 安徽机电职业技术学院 一种多机器人运动的冲突路径纠正方法及其系统
KR20240039826A (ko) * 2022-09-20 2024-03-27 현대자동차주식회사 이기종 물류로봇 통합 운용 시스템 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101286815B1 (ko) * 2012-01-31 2013-07-17 부산대학교 산학협력단 무인운반 하역차의 교통제어 시스템 및 이의 운영방법

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618523B1 (en) 1993-04-02 1998-12-09 Shinko Electric Co. Ltd. Transport management control apparatus and method for unmanned vehicle system
JP3364021B2 (ja) 1993-12-10 2003-01-08 神鋼電機株式会社 運行管理制御装置およびその方法
JP2881683B2 (ja) * 1995-07-07 1999-04-12 東急車輛製造株式会社 自動走行車の障害物検知方法及び装置
JPH11143533A (ja) * 1997-11-10 1999-05-28 Meidensha Corp 搬送車制御システム
JP3715420B2 (ja) * 1997-11-12 2005-11-09 マツダエース株式会社 無人搬送車の走行プログラム作成装置
JP3857402B2 (ja) * 1997-12-05 2006-12-13 富士通株式会社 交差点衝突防止方法及びシステム及び交差点衝突防止プログラムを格納した記憶媒体及び交差点装置
JPH11202938A (ja) * 1998-01-12 1999-07-30 Omron Corp 車両走行制御システムおよびこのシステムに用いられる車両
JP2003182809A (ja) * 2001-12-14 2003-07-03 Daifuku Co Ltd 物品搬送設備
JP4348276B2 (ja) * 2004-11-02 2009-10-21 本田技研工業株式会社 ロボット制御装置
JP2006293588A (ja) 2005-04-08 2006-10-26 Toyota Industries Corp 無人車両の走行制御方法及び無人車両の走行制御システム
JP4306723B2 (ja) * 2006-12-15 2009-08-05 村田機械株式会社 搬送台車システム
CA2790713C (en) 2009-11-09 2014-09-30 Komatsu Ltd. Apparatus and method for controlling travel of vehicles
JP2011135570A (ja) * 2009-11-27 2011-07-07 Sanyo Electric Co Ltd 端末装置
WO2011070869A1 (ja) 2009-12-07 2011-06-16 国立大学法人東京大学 移動体システム
US8554456B2 (en) * 2011-07-05 2013-10-08 International Business Machines Corporation Intelligent traffic control mesh
JP5754604B2 (ja) 2011-07-07 2015-07-29 村田機械株式会社 搬送車システムと搬送車の制御方法
KR20130007754A (ko) * 2011-07-11 2013-01-21 한국전자통신연구원 자율주행 교차로에서 차량 제어 장치 및 그 방법
US20150019731A1 (en) * 2012-04-23 2015-01-15 Google Inc. Fair Hierarchical Arbitration Of a Shared Resource With Varying Traffic Intensity
KR102074811B1 (ko) * 2012-07-17 2020-02-10 한국전자통신연구원 교차로 운행 정보 제공 장치 및 방법
US8983647B1 (en) * 2012-12-13 2015-03-17 Amazon Technologies, Inc. Inventory system with climate-controlled inventory
US8965561B2 (en) * 2013-03-15 2015-02-24 Cybernet Systems Corporation Automated warehousing using robotic forklifts
DE102013207899A1 (de) 2013-04-30 2014-10-30 Kuka Laboratories Gmbh Fahrerloses Transportfahrzeug, System mit einem Rechner und einem fahrerlosen Transportfahrzeug, Verfahren zum Planen einer virtuellen Spur und Verfahren zum Betreiben eines fahrerlosen Transportfahrzeugs
KR20150137166A (ko) 2014-05-28 2015-12-09 고려대학교 산학협력단 복수의 이동 로봇 간의 충돌 회피를 위한 경로 생성 방법
JP6247622B2 (ja) 2014-09-29 2017-12-13 日立建機株式会社 管制制御装置
US10539084B2 (en) * 2014-11-18 2020-01-21 Carl M. Clark Vehicle rollover safety device utilizing a circular arc level
JP5984986B1 (ja) * 2015-03-12 2016-09-06 株式会社シンテックホズミ 搬送車システム
KR102366402B1 (ko) * 2015-05-21 2022-02-22 엘지전자 주식회사 운전자 보조 장치 및 그 제어방법
KR101695557B1 (ko) * 2015-07-17 2017-01-24 고려대학교 산학협력단 자율 주행 기반 무인 운반차 시스템 및 이의 제어 방법
KR101708657B1 (ko) * 2015-09-01 2017-02-21 엘지전자 주식회사 차량 및 그 제어방법
JP6304220B2 (ja) * 2015-12-08 2018-04-04 トヨタ自動車株式会社 運転支援装置
US9740207B2 (en) * 2015-12-23 2017-08-22 Intel Corporation Navigating semi-autonomous mobile robots
CN105652838B (zh) * 2016-01-29 2018-04-03 哈尔滨工大服务机器人有限公司 一种基于时间窗的多机器人路径规划方法
US9858819B2 (en) * 2016-02-03 2018-01-02 Caterpillar Inc. Traffic control system having deadlock avoidance functionality
JP6347262B2 (ja) * 2016-02-12 2018-06-27 マツダ株式会社 車両の制御装置
US9513627B1 (en) * 2016-04-25 2016-12-06 inVia Robotics, LLC Autonomous coordination of resources amongst robots
US10725462B2 (en) * 2016-04-25 2020-07-28 Invia Robotics, Inc. Optimizing robotic movements based on an autonomous coordination of resources amongst robots
CN106041931B (zh) * 2016-06-30 2018-03-13 广东工业大学 一种多障碍空间多agv机器人协作防碰撞路径优化方法
KR101824998B1 (ko) * 2016-07-13 2018-02-02 엘지전자 주식회사 이동 단말기
CN106251016B (zh) * 2016-08-01 2019-05-07 江苏海事职业技术学院 一种基于动态时间窗的泊车系统路径规划方法
US10037029B1 (en) * 2016-08-08 2018-07-31 X Development Llc Roadmap segmentation for robotic device coordination
CA3070947A1 (en) * 2017-07-28 2019-01-31 Crown Equipment Corporation Traffic management for materials handling vehicles in a warehouse environment
CN108806115A (zh) * 2018-08-21 2018-11-13 北京极智嘉科技有限公司 无人的自助式操作系统、方法和操作门

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101286815B1 (ko) * 2012-01-31 2013-07-17 부산대학교 산학협력단 무인운반 하역차의 교통제어 시스템 및 이의 운영방법

Also Published As

Publication number Publication date
CN110730931A (zh) 2020-01-24
JP2020518890A (ja) 2020-06-25
US20200233435A1 (en) 2020-07-23
JP2022037191A (ja) 2022-03-08
US20180299882A1 (en) 2018-10-18
EP3610340A1 (en) 2020-02-19
EP3610340B1 (en) 2023-12-27
KR20210104925A (ko) 2021-08-25
US10642282B2 (en) 2020-05-05
US11709502B2 (en) 2023-07-25
KR102415096B1 (ko) 2022-06-29
WO2018190960A1 (en) 2018-10-18
KR20190134750A (ko) 2019-12-04

Similar Documents

Publication Publication Date Title
KR102291434B1 (ko) 교착 없는 다중 동작자 내비게이션을 위한 로드맵 주석부기
US11262200B2 (en) Boolean satisfiability (SAT) reduction for geometry and kinematics agnostic multi-agent planning
US10926410B2 (en) Layered multi-agent coordination
US10296012B2 (en) Pre-computation of kinematically feasible roadmaps
US10994418B2 (en) Dynamically adjusting roadmaps for robots based on sensed environmental data
US10260890B2 (en) Aisle-based roadmap generation
US11016493B2 (en) Planning robot stopping points to avoid collisions
CN109154827B (zh) 机器人车辆的定位
US11161238B2 (en) Multi-agent coordination under sparse networking
US10037029B1 (en) Roadmap segmentation for robotic device coordination
JP5984986B1 (ja) 搬送車システム
JP2021071891A (ja) 走行制御装置、走行制御方法、及びコンピュータプログラム
US11468770B2 (en) Travel control apparatus, travel control method, and computer program
US20210123766A1 (en) Travel control apparatus, mobile body, and operation system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right