KR20210068446A - 지형 인식 스텝 플래닝 시스템 - Google Patents

지형 인식 스텝 플래닝 시스템 Download PDF

Info

Publication number
KR20210068446A
KR20210068446A KR1020217010325A KR20217010325A KR20210068446A KR 20210068446 A KR20210068446 A KR 20210068446A KR 1020217010325 A KR1020217010325 A KR 1020217010325A KR 20217010325 A KR20217010325 A KR 20217010325A KR 20210068446 A KR20210068446 A KR 20210068446A
Authority
KR
South Korea
Prior art keywords
map
robot
obstacle
generating
path
Prior art date
Application number
KR1020217010325A
Other languages
English (en)
Other versions
KR102492242B1 (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 KR1020237002441A priority Critical patent/KR102533690B1/ko
Publication of KR20210068446A publication Critical patent/KR20210068446A/ko
Application granted granted Critical
Publication of KR102492242B1 publication Critical patent/KR102492242B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0248Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means in combination with a laser
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62DMOTOR VEHICLES; TRAILERS
    • B62D57/00Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track
    • B62D57/02Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members
    • B62D57/032Vehicles characterised by having other propulsion or other ground- engaging means than wheels or endless track, alone or in addition to wheels or endless track with ground-engaging propulsion means, e.g. walking members with alternately or sequentially lifted supporting base and legs; with alternately or sequentially lifted feet or skid
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0238Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
    • G05D1/024Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0251Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means extracting 3D information from a plurality of images taken from different locations, e.g. stereo vision
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G05D2201/0217
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Automation & Control Theory (AREA)
  • Remote Sensing (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Theoretical Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Electromagnetism (AREA)
  • Robotics (AREA)
  • Optics & Photonics (AREA)
  • Multimedia (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Manipulator (AREA)

Abstract

스텝 플랜에 대한 지형 및 제약 플래닝을 위한 방법은, 로봇(10)의 데이터 프로세싱 하드웨어(36)에서, 적어도 하나의 이미지 센서(31)로부터 로봇 주위 환경(8)의 이미지 데이터(17)를 수신하는 단계를 포함한다. 로봇은 바디(11) 및 레그들(12)을 포함한다. 방법은 또한, 데이터 프로세싱 하드웨어에 의해, 이미지 데이터에 기반하여 바디-장애물 맵(112), 지면 높이 맵(116), 및 스텝-장애물 맵(114)을 생성하는 단계, 및 데이터 프로세싱 하드웨어에 의해, 바디-장애물 맵에 기반하여 환경내에서 기동하는 동안 로봇의 바디의 이동을 위한 바디 경로(510)를 생성하는 단계를 포함한다. 방법은 또한, 데이터 프로세싱 하드웨어에 의해, 바디 경로, 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물에 기반하여 환경내에서 기동하는 동안 로봇의 레그들을 위한 스텝 경로(350)를 생성하는 단계를 포함한다.

Description

지형 인식 스텝 플래닝 시스템
[0001] 본 개시내용은 제약(constraint)들, 특히 지형(terrain)에 따라 부과되는 제약들의 존재 하에 일련의 스텝들을 플래닝(planning)하는 것에 관한 것이다.
[0002] 로봇 디바이스들은, 다양한 업무들 또는 기능들을 수행하기 위해, 제약된 아니면 어수선한(cluttered) 환경들에서 점점 더 많이 사용되고 있다. 이러한 로봇 디바이스들은 장애물들에 스테핑(stepping)하거나 부딪치지 않으면서 이러한 제약된 환경들을 탐색(navigate)할 필요가 있을 수 있다. 이러한 로봇 디바이스들이 더 보편화됨에 따라, 균형 및 스피드를 유지하면서 장애물들과의 접촉을 피하는 실시간 탐색 및 스텝 플래닝이 필요하다.
[0003] 본 개시내용의 일 양상은 제약들의 존재 하에 일련의 스텝들을 플래닝하기 위한 방법을 제공한다. 방법은, 로봇의 데이터 프로세싱 하드웨어에서, 적어도 하나의 이미지 센서로부터 로봇 주위 환경의 이미지 데이터를 수신하는 단계를 포함한다. 로봇은 바디 및 레그들을 포함한다. 방법은 또한, 데이터 프로세싱 하드웨어에 의해, 이미지 데이터에 기반하여 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵을 생성하는 단계를 포함한다. 방법은, 데이터 프로세싱 하드웨어에 의해, 바디-장애물 맵에 기반하여, 환경내에서 기동(maneuver)하는 동안 로봇의 바디의 이동을 위한 바디 경로를 생성하는 단계, 및 데이터 프로세싱 하드웨어에 의해, 바디 경로, 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵에 기반하여, 환경내에서 기동하는 동안 로봇의 레그들을 위한 스텝 경로를 생성하는 단계를 더 포함한다.
[0004] 본 개시내용의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 이미지 데이터는 3차원 볼류메트릭(volumetric) 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함한다. 적어도 하나의 이미지 센서는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함할 수 있다.
[0005] 일부 예들에서, 방법은, 데이터 프로세싱 하드웨어에 의해, 이미지 데이터에 기반하여 환경내 공간의 점유물(occupancy)들을 식별하는 단계, 및 데이터 프로세싱 하드웨어에 의해, 환경내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵을 생성하는 단계를 포함한다. 이미지 데이터에 기반하여 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵을 생성하는 단계는 3차원 공간 점유 맵에 기반하여 바디-장애물 맵을 생성하는 단계, 3차원 공간 점유 맵에 기반하여 지면 높이 맵을 생성하는 단계, 및 지면 높이 맵에 기반하여 스텝-장애물 맵을 생성하는 단계를 포함할 수 있다. 지면 높이 맵은 로봇 근처의 각각의 위치에서 지표면(ground surface)의 높이를 식별하고, 스텝-장애물 맵은 로봇이 스테핑하지 않아야 하는, 환경내 비-스텝(no-step) 영역들을 식별한다. 선택적으로, 바디-장애물 맵을 생성하는 단계는 3차원 공간 점유 맵에 기반하여 2차원 바디-장애물 맵을 생성하는 단계를 포함한다.
[0006] 일부 예들에서, 3차원 공간 점유 맵은 복셀(voxel)들을 갖는 복셀 맵을 포함할 수 있으며, 각각의 복셀은 환경의 3차원 공간을 표현한다. 각각의 복셀은 지표면, 장애물 또는 기타(other)로 분류될 수 있다. 부가적으로, 방법은, 데이터 프로세싱 하드웨어에 의해, 바디-장애물 맵을 생성하기 위해 3차원 공간 점유 맵을 필터링하는 단계를 포함할 수 있다. 일부 구현들에서, 바디 경로를 생성하는 단계는 바디-장애물 맵에서 지정된 비-바디(no-body) 영역들에 기반한다. 일부 예들에서, 스텝 경로를 생성하는 단계는 로봇 및 스텝 제약들에 대한 명목 보행(nominal gait)의 명목 스텝 패턴을 조정하는 것에 기반한다. 스텝 제약들은 다음의 것들 중 적어도 하나를 포함할 수 있다: 지표면과 접촉하는 각각의 레그에 대한 압력 중심 오프셋(center of pressure offset)의 임계 범위 ―압력 중심 오프셋은, 각각의 스텝에서 각각의 레그에 대한 로봇 무게 분포의 허용가능한 양을 나타냄―; 스텝 경로가 레그로 하여금 스텝-장애물 맵의 비-스텝 영역으로 스테핑하게 하는지 여부; 스텝 경로가 로봇의 바디로 하여금 바디 장애물에 진입하게 하는지 여부; 스텝 경로가 로봇의 자체 충돌(self-collision)을 유발하는지 여부; 또는 스텝-장애물 맵의 임의의 비-스텝 영역에 대한 공간 마진(margin of space) 중 적어도 하나를 포함할 수 있다. 부가적으로, 스텝 제약들은 연성적 제약(soft constraint)들 또는 강성적 제약(hard constraint)들을 포함할 수 있다. 일부 구현들에서, 로봇의 레그들을 위한 스텝 경로를 생성하는 단계는 생성된 바디 경로를 정제하는(refining) 단계를 포함한다.
[0007] 본 개시내용의 다른 양상은 로봇을 제공한다. 로봇은 바디, 바디에 커플링되며 환경 주위에서 로봇을 기동시키도록 구성된 레그들, 레그들과 통신하는 데이터 프로세싱 하드웨어, 및 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는, 데이터 프로세싱 하드웨어 상에서 실행될 때 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 동작들은 적어도 하나의 이미지 센서로부터 로봇 주위 환경의 이미지 데이터를 수신하는 것을 포함한다. 동작들은 또한, 환경내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵을 그리고 3차원 공간 점유 맵에 기반하여 2차원 바디-장애물 맵을 생성하는 것을 포함한다. 동작들은 또한, 이미지 데이터에 기반하여 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵을 생성하는 것을 포함한다. 동작은 또한, 바디-장애물 맵에 기반하여, 환경내에서 기동하는 동안 로봇의 바디의 이동을 위한 바디 경로를 생성하는 것 및 바디 경로, 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵에 기반하여, 환경내에서 기동하는 동안 로봇의 레그들을 위한 스텝 경로를 생성하는 것을 포함한다.
[0008] 이 양상은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 이미지 데이터는 3차원 볼류메트릭 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함한다. 일부 예들에서, 적어도 하나의 이미지 센서는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함한다.
[0009] 일부 예들에서, 동작들은, 이미지 데이터에 기반하여 환경내 공간의 점유물들을 식별하는 것 및 환경내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵을 생성하는 것을 포함한다. 이미지 데이터에 기반하여 바디-장애물 맵, 지면 높이 맵 및 스텝-장애물 맵을 생성하는 것은, 3차원 공간 점유 맵에 기반하여 바디-장애물 맵을 생성하는 것, 3차원 공간 점유 맵에 기반하여 지면 높이 맵을 생성하는 것 및 지면 높이 맵에 기반하여 스텝-장애물 맵을 생성하는 것을 포함한다. 지면 높이 맵은 로봇 근처의 각각의 위치에서 지표면의 높이를 식별하고, 스텝-장애물 맵은 로봇이 스테핑하지 않아야 하는, 환경내 비-스텝 영역들을 식별한다. 선택적으로, 바디-장애물 맵을 생성하는 것은 3차원 공간 점유 맵에 기반하여 2차원 바디-장애물 맵을 생성하는 것을 포함한다.
[0010] 3차원 공간 점유 맵은 복셀들을 갖는 복셀 맵을 포함할 수 있으며, 각각의 복셀은 환경의 3차원 공간을 표현한다. 각각의 복셀은 지표면, 장애물 또는 기타로 분류될 수 있다. 동작들은, 일부 예들에서, 바디-장애물 맵을 생성하기 위해 3차원 공간 점유 맵을 필터링하는 것을 더 포함한다. 바디 경로는 바디-장애물 맵에서 지정된 비-바디 영역들에 기반할 수 있고, 스텝 경로는 로봇 및 스텝 제약들에 대한 명목 보행의 명목 스텝 패턴을 조정하는 것에 기반할 수 있다. 일부 구현들에서, 스텝 제약들은, 지표면과 접촉하는 각각의 레그에 대한 압력 중심 오프셋의 임계 범위 ―압력 중심 오프셋은, 각각의 스텝에서 각각의 레그에 대한 로봇 무게 분포의 허용가능한 양을 나타냄―; 스텝 경로가 레그로 하여금 스텝-장애물 맵의 비-스텝 영역으로 스테핑하게 하는지 여부; 스텝 경로가 로봇의 바디로 하여금 바디 장애물에 진입하게 하는지 여부; 스텝 경로가 로봇의 자체 충돌을 유발하는지 여부; 또는 스텝-장애물 맵의 임의의 비-스텝 영역에 대한 공간 마진 중 적어도 하나를 포함한다. 스텝 제약들은 연성적 제약들 또는 강성적 제약들을 포함할 수 있다. 일부 구현들에서, 로봇의 레그들을 위한 스텝 경로를 생성하는 것은 생성된 바디 경로를 정제하는 것을 포함한다.
[0011] 본 개시내용의 하나 이상의 구현들의 세부사항들은 첨부된 도면들 및 아래의 설명에서 제시된다. 다른 양상들, 특징들 및 이점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
[0012] 도 1은 제약들의 존재 하에 일련의 스텝들을 플래닝하기 위한 예시적인 시스템의 개략도이다.
[0013] 도 2a는 복셀들의 볼류메트릭 3차원 맵의 등각도이다.
[0014] 도 2b는 계단을 포함하는 환경의 사시도이다.
[0015] 도 2c는 도 2a의 환경의 예시적인 바디-장애물 맵이다.
[0016] 도 2d는 도 2a의 환경의 예시적인 비-스텝 맵이다.
[0017] 도 3은 도 1의 시스템의 제어 시스템의 예시적인 컴포넌트들의 개략도이다.
[0018] 도 4는 최종 스텝 플랜을 생성하기 위한 예시적인 방법의 흐름도이다.
[0019] 도 5는 예시적인 바디-장애물 맵 상에 오버레이된 예시적인 바디 경로의 개략도이다.
[0020] 도 6은 예시적인 비-스텝 맵 상에 오버레이된 바디 경로를 따르기 위한 빠른 케이던스(fast cadence)와 연관된 스텝 위치들의 개략도이다.
[0021] 도 7은 예시적인 비-스텝 맵 상에 오버레이된 느린 케이던스(slow cadence)와 연관된 스텝 위치들의 개략도이다.
[0022] 도 8은 예시적인 비-스텝 맵 상에 오버레이된 중간 케이던스(medium cadence)와 연관된 스텝 위치들의 개략도이다.
[0023] 도 9는 예시적인 비-스텝 맵 상에 오버레이된 선택된 보행과 연관된 스텝 위치들에 대한 최종 스텝 플랜이다.
[0024] 도 10은 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 예시적인 방법의 흐름도이다.
[0025] 도 11은 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 다른 예시적인 방법의 흐름도이다.
[0026] 도 12는 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 다른 예시적인 방법의 흐름도이다.
[0027] 도 13은 본원에서 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0028] 다양한 도면들에서 유사한 참조 부호들은 유사한 엘리먼트들을 나타낸다.
[0029] 레그형 로봇 디바이스들(또한 "로봇들"로 지칭됨)이 널리 보급됨에 따라, 로봇들이, 여러 방식들로 제약되는 환경들을 탐색해야 할 필요성이 증가하고 있다. 예를 들어, 로봇은 크고 작은 물체들이 바닥 주위에 흩어져 있는 어수선한 방(cluttered room)을 주행할 필요가 있을 수 있다. 혹은, 다른 예로서, 로봇이 계단을 넘어가야(negotiate)할 필요가 있을 수 있다. 통상적으로, 이러한 종류의 환경들을 탐색하는 것은, 레그형 로봇이 자주 정지하고, 물체들과 충돌하고 그리고/또는 균형을 잃게 되는 결과를 산출하는 느리고 힘든 프로세스였다. 본원에서의 구현들은, 실시간으로 스텝 플랜을 생성하여, 레그형 로봇 디바이스가 평활성 및 균형을 유지하면서 제약된 환경을 신속하고 효율적으로 탐색할 수 있게 하기 위한, 지형 및 제약 플래닝을 위한 시스템들 및 방법들에 관한 것이다.
[0030] 도 1을 참조하면, 로봇 또는 로봇 디바이스(10)는 2개 이상의 레그들(12)을 갖는 바디(11)를 포함하며, 로봇(10)이 제한된 환경(8)을 탐색할 수 있게 하기 위한 스텝 플래닝 시스템(100)을 실행한다. 각각의 레그(12)는 바디(11)에 커플링되며, 레그 조인트(18)에 의해 분리되는 상부 부분(14) 및 하부 부분(16)을 가질 수 있다. 각각의 레그(12)의 하부 부분(16)은 발(19)에서 끝난다. 각각의 레그의 발(19)은 선택적이며, 레그들(12) 중 하나 이상의 레그의 하부 부분의 말단부는 바퀴에 커플링될 수 있다. 로봇(10)은 중력 방향을 따른 수직 중력 축(Vg), 및 질량 중심(CM: center of mass)을 가지며, 이 질량 중심(CM)은 로봇(10)의 분산된 질량의 가중 상대 포지션의 합이 0이 되는 지점이다. 로봇(10)은 추가로, 로봇(10)이 취하는 특정 자세 또는 스탠스(stance)를 정의하기 위해, 수직 중력 축(Vg)(즉, 중력에 대한 고정된 기준 프레임)에 대한 CM에 기반한 포즈(P)를 갖는다. 로봇(10)의 자세는 공간에서의 로봇(10)의 배향 또는 각도 포지션에 의해 정의될 수 있다. 바디(11)에 대한 레그들(12)의 움직임은 로봇(10)의 포즈(P)(즉, 로봇(10)의 자세 또는 배향과 로봇의 CM의 포지션의 조합)를 변경한다.
[0031] 일부 구현들에서, 로봇(10)은, 바디(11)에 배치되고 바디(11)에 대해 움직이도록 구성된 하나 이상의 부속물(appendage)들, 이를테면 관절식 아암(articulated arm)(20)을 더 포함한다. 관절식 아암(20)은 5 이상의 자유도(five-degrees or more of freedom)를 가질 수 있다. 더욱이, 관절식 아암(20)은 조작기 아암 또는 간단히 부속물로 상호교환 가능하게 지칭될 수 있다. 도시된 예에서, 관절식 아암(20)은, 서로에 대해 그리고 또한 바디(11)에 대해 회전가능한 2개의 부분들(22, 24)을 포함하지만; 관절식 아암(20)은 본 개시내용의 범위를 벗어나지 않으면서 더 많은 또는 더 적은 부분들을 포함할 수 있다. 제 1부분(22)은 관절식 아암 조인트(26)에 의해 제2 부분(24)으로부터 분리될 수 있다. 조작기 헤드(28)로 상호교환 가능하게 지칭될 수 있는 엔드 이펙터(28)는, 관절식 아암(20)의 제2 부분(24)의 원위 단부에 커플링될 수 있으며, 물체들을 잡기/파지하기 위한 하나 이상의 액추에이터들(29)을 포함할 수 있다.
[0032] 로봇(10)은 또한, 적어도 하나의 이미징 센서 또는 카메라(31)를 갖는 비전 시스템(30)을 포함하며, 각각의 센서 또는 카메라(31)는 시야각(angle of view)(32)으로 그리고 시야(field of view)(34) 내에서 로봇(10)을 둘러싸는 환경(8)의 이미지 데이터 또는 센서 데이터를 캡처한다. 비전 시스템(30)은, 시야각(32)을 조정함으로써 시야(34)를 이동시키도록 또는 (독립적으로 또는 로봇(10)을 통해) 카메라(31)를 틸팅 및/또는 플래닝함으로써 시야(34)를 임의의 방향으로 이동시키기도록 구성될 수 있다. 대안적으로, 비전 시스템(30)은, 비전 시스템(30)이 로봇(10) 주위의 일반적으로 360도 시야를 캡처하도록, 다수의 센서들 또는 카메라들(31)을 포함할 수 있다. 비전 시스템(30)은 카메라들 또는 센서들(31)에 의해 캡처된 이미지 데이터로부터 도출되는 이미지 데이터 또는 센서 데이터(17)를 로봇(10)의 데이터 프로세싱 하드웨어(36)에 제공한다. 데이터 프로세싱 하드웨어(36)는 메모리 하드웨어(38)와 디지털 통신하며, 일부 구현들에서는 원격 시스템일 수 있다. 원격 시스템은 단일 컴퓨터, 다수의 컴퓨터들, 또는 스케일러블/탄력적 컴퓨팅 자원들 및/또는 저장 자원들을 갖는 분산형 시스템(예를 들어, 클라우드 환경)일 수 있다. 로봇(10)의 스텝 플래닝 시스템(100)은 데이터 프로세싱 하드웨어(36) 상에서 실행된다. 도시된 예에서, 스텝 플래닝 시스템(100)은, 비전 시스템(30)으로부터 이미지 또는 센서 데이터(17)를 수신하고 그리고 주변 환경(8)에 있는 장애물들을 나타내는 하나 이상의 맵들(112, 114, 116)을 생성하는 지각 시스템(110)을 포함한다. 스텝 플래닝 시스템(100)은 또한, 지각 시스템(110)에 의해 생성된 맵들(112, 114, 116)을 수신하고 바디 경로 또는 궤적(510)(도 5)을 생성하고 그리고 바디 경로(510)를 사용으로써, 스텝 경로 또는 스텝 플랜(350)을 생성하는 제어 시스템(300)을 포함한다. 스텝 플랜(350)을 사용하여, 로봇(10)은 스텝 플랜(350)이 나타내는 위치들에 레그(12)의 원위 단부들 또는 발들(19)을 배치함으로써 스텝 플랜(350)을 따라 환경(8)을 지나게 기동한다. 일부 구현들에서, 스텝 플래닝 시스템(100)의 적어도 일부는 로봇(10)과 통신하는 원격 디바이스상에서 실행된다. 예컨대, 지각 시스템(110)은 맵들(112, 114, 116) 중 하나 이상을 생성하기 위해 원격 디바이스 상에서 실행될 수 있고, 로봇(10)상에서 실행되는 제어 시스템(300)은 원격 디바이스로부터 맵들(112, 114, 116)을 수신할 수 있다. 여기서, 제어 시스템(300)은 바디 경로(510) 및 스텝 경로(350)를 생성할 수 있다. 선택적으로, 전체 스텝 플래닝 시스템(100)은 원격 디바이스 상에서 실행될 수 있고, 원격 디바이스는 바디 경로(510) 및 스텝 경로(350)에 기반하여 환경(8)을 기동하도록 로봇(10)을 제어/로봇(10)에게 지시할 수 있다.
[0033] 일부 구현들에서, 비전 시스템(30)의 카메라(들)(31)는 하나 이상의 스테레오 카메라들(예를 들어, 하나 이상의 RGBD 스테레오 카메라들)을 포함한다. 다른 예들에서, 비전 시스템(30)은 하나 이상의 레이더 센서들, 이를테면 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서, 광 스캐너, 비행시간(time-of-flight) 센서, 또는 임의의 다른 3차원(3D) 볼류메트릭 이미지 센서(또는 센서들의 임의의 그러한 조합)을 포함한다. 일부 구현들에서, 비전 시스템(30)은 캡처된 이미지 또는 센서 데이터(17)에 기반하여 환경(8)내 공간의 점유물들을 식별한다. 지각 시스템(110)은, 3D 포인트 클라우드를 생성하기 위해, 비전 시스템(30)에 의해 캡처된 이미지 데이터(17)를 사용할 수 있다. 포인트 클라우드는 로봇(10)을 둘러싸는 환경(8)에 있는 물체들의 표면들을 표현하는 데이터 포인트들의 세트이다. 이 포인트 클라우드로부터, 지각 시스템(110)은 환경(8)내 공간의 이전에 식별된 점유물들에 기반하여 3D 공간 점유 맵(200)(도 2a)을 생성할 수 있다. 일부 예들에서, 지각 시스템(110)은 복셀들(210, 212)(도 2a)의 3D 볼류메트릭 맵(200, 200a)을 생성한다. 각각의 복셀(210, 212)(즉, 큐브)은 환경의 3D 공간을 표현한다. 각각의 복셀(210, 212)의 사이즈는 지각 시스템(110)의 충실도 및 비전 시스템(30) 및 데이터 프로세싱 하드웨어(36)의 프로세싱 능력들에 의존한다. 예를 들어, 로봇(10)은 로봇(10)을 둘러싸는 환경(8)(예를 들어, 각각의 방향으로 수 미터)의 복셀 맵(200)(즉, 3D 점유 맵) 생성할 수 있으며, 여기서 각각의 복셀(210, 212)은 3cm 큐브이다. 각각의 복셀에 대해, 지각 시스템(110)은 다양한 통계들을 저장할 수 있다.
[0034] 일부 구현들에서, 지각 시스템(110)은, 물체를 포함하는 각각의 복셀(210, 212)을 지표면(9), 장애물 또는 기타로 (예를 들어, 분류 알고리즘, 예를 들어, 선형 분류기들, 판정 트리들, 뉴럴 네트워크들, 특수 목적 로직 등을 사용하여) 분류한다. 복셀(210, 212)이 표현하는 포인트 또는 공간에 로봇(10)이 스테핑할 수 있다는 것을 지각 시스템(110)이 결정할 때, 지각 시스템(110)은 복셀들(210)을 지표면(9)으로 분류한다. 예를 들어, 로봇(10)은 스텝의 표면 또는 인도를 지표면(9)으로 분류할 수 있다. 복셀(210, 212)이 표현하는 포인트 또는 공간에 로봇(10)이 스테핑할 수 없다는 것을 지각 시스템(110)이 결정할 때, 지각 시스템(110)은 복셀들(212)을 장애물들로 분류한다. 예를 들어, 지각 시스템(110)은, 로봇의 레그가 닿기에는 너무 높은 물체를, 또는 만약 스테핑하는 경우, 로봇(10)의 안정성(즉, 균형)을 잃게 할 물체를 장애물로 분류한다. 로봇(10)이 안전하게 경시하거나 무시할 수 있는 복셀들(210, 212)에 대해서는 제3 분류인 기타(other)가 사용될 수 있다. 예를 들어, 지각 시스템(110)은 로봇(10)보다 훨씬 위에 있는 물체들 또는 로봇(10)으로부터 멀리 떨어져 있는 물체들을 기타로 분류한다. 도 2a는, 장애물 복셀들(212, 212a-n)(즉, 의자)의 그룹 및 지표면 복셀들(210, 210a-n)의 평면을 포함하는 간단한 복셀 맵(200, 200a)의 예를 예시한다.
[0035] 분류된 복셀들(210, 212)을 포함하는 볼류메트릭 3D 맵(200)을 사용하여, 지각 시스템(110)은 바디-장애물 맵(112)을 생성한다. 일부 구현들에서 바디-장애물 맵(112)은, 로봇(10)의 바디(11)에 대한 "킵-아웃 구역들" 또는 "비-바디 영역들"에 주석을 달거나 이를 예시하는 2차원(2D) 맵을 표현한다. 즉, 바디-장애물 맵(112)은, 각각의 위치(즉, 맵(112)의 픽셀, 각각의 픽셀은 로봇(10)의 환경(8)내 공간의 컬럼(column)을 표현함)를 로봇(10)의 바디(11)가 주행하기에 안전하거나 또는 로봇(10)의 바디(11)가 주행하기에 안전하지 않은 위치로서 마킹하는 2D 맵이다. 바디-장애물 맵(112)은 셀들(예를 들어, 픽셀들)의 그리드를 포함할 수 있고, 여기서 그리드의 각각의 셀은 불(Boolean) 값(예를 들어, 바디가 진입할 수 있음 또는 바디가 진입할 수 없음)을 포함한다. 예를 들어, 도 2b를 참조하면, 뷰(201)는 난간들을 갖는 계단을 포함하는 환경(8)을 도시한다. 로봇(10)이 계단들을 올라가거나 내려갈 때, 난간들은 로봇(10)의 바디(11)에 대한 장벽으로서의 역할을 할 것이다(즉, 난간들은 바디(11)와 접촉하게 될 높이에 있음). 도 2c는 도 2b의 계단의 2D 이미지(즉, 계단의 평면도)를 표현하는 바디-장애물 맵(112)을 예시한다. 도 2c에서, 허용되지 않은(illegal) 바디 영역들(예를 들어, 장애물 복셀들)(212)(즉, 킵-아웃 구역들)은, 로봇(10)의 바디가 진입할 수 없거나 진입하지 않아야 하는 구역들(예를 들어, 계단 난간들, 벽들, 큰 장애물들 등)을 표현한다.
[0036] 도 1 및 도 2d를 참조하면, 지각 시스템(110)은 또한 스텝-장애물 맵(114)을 생성하기 위해 볼류메트릭 3D 맵(200)(또는, 아래에서 더 상세히 논의되는 바와 같은, 지면 높이 맵(116))을 사용한다. 일부 예들에서, 스텝-장애물 맵(114)은 로봇(10)의 레그들(12)에 의한 스텝들에 대한 킵-아웃 또는 "비-스텝" 영역들(213)을 예시하는 2D 평면도 맵을 표현한다. 즉, 스텝-장애물 맵(114)은 바디-장애물 맵(112)과 유사하지만, 킵-아웃 구역들(213)은 대신, 로봇(10)의 스텝들(즉, 레그들(12)의 발들(19) 또는 원위 단부들)이 "착지(touch down)하지" 않아야 하는 구역들을 표현한다. 즉, 레그들(12)의 발들(19) 또는 원위 단부들이 킵-아웃 영역들(213)을 넘어갈(pass over) 수 있지만, 발들(19)은 영역(213) 내에서 스텝을 완료하지 않을 수 있다. 스텝-장애물 맵(114)은 셀들(예를 들어, 픽셀들)의 그리드를 포함할 수 있으며, 여기서 그리드의 각각의 셀은 불 값(예를 들어, 스텝 또는 비-스텝)을 포함한다.
[0037] 바디-장애물 맵(112)에 대한 스텝-장애물 맵(114)을 생성하기 위해 상이한 고려 사항들이 사용될 수 있으며, 이는 일부 장애물들이 바디 장애물, 스텝 장애물, 바디 및 스텝 장애물로 분류되게 또는 이 어느쪽으로도 분류되지 않게 할 수 있다. 예를 들어, 로봇(10)의 레그들(12)은 지표면(9) 위로 일정 거리에서 바디(11)를 지지하며, 따라서 바디(11)는 지표면(9) 근처에 있는 장애물들을 안전하게 회피할 수 있다. 스텝-장애물 맵(114)은 또한, 로봇(10)이 레그들(12)을 통해 스테핑할 수 있는 높이가 얼마인지와 같은 양상들을 고려할 수 있다. 추가로, 일부 예들에서, 로봇(10)의 무릎들(즉, 레그 조인트들(18))은 발들(19)의 전방 또는 후방 밖으로 연장될 수 있고, 이로써 발들(19)이 배치될 수 있는 곳을 제한할 수 있다(예를 들어, 발(19)이 들어 올려져 장애물에 놓일 수 있기 전에, 무릎들이 충분히 높은 장애물에 부딪힐 수 있다). 이에 따라, 킵-아웃 구역들(213)은, 달리 장애물들이 없는 지표면(9) 상의 구역을 포함할 수 있지만, 로봇(10)의 기하학적 구조 및 포즈로 인해, 킵-아웃 구역(213) 내로의 로봇(10)의 주행은 로봇(10)의 바디(11)로 하여금 지표면(9) 위의 장애물에 접촉하게 할 수 있다.
[0038] 일반적으로, 바디 장애물들로 분류되는 장애물들이 또한 스텝 장애물들로 분류되지만, 그 역이 사실일 필요는 없는데, 왜냐하면, 스텝 장애물들은 바디 장애물들(예를 들어, 장애물이 스테핑에 문제들을 야기할 정도로 충분히 높지만, 로봇(10)의 바디(11)가 그 장애물과 접촉하지 않을 정도로 충분히 낮음)로 분류되지 않을 수 있기 때문이다. 일부 상황들에서, 바디 장애물들은 스텝 장애물들로 분류되지 않을 수 있다. 예를 들어, 테이블은 바디 장애물일 수 있지만, 로봇(10)은 테이블 아래에 스테핑할 수 있다. 지각 시스템(110)은, 바디 장애물 바로 옆에 발을 배치하는 것(즉, 바디 장애물의 사이즈를 확대하는 것)이 실행 가능하지 않을 수 있기 때문에, 바디 장애물들을 더 큰 스텝 장애물로 분류할 수 있다.
[0039] 일부 구현들에서, 지각 시스템(110)은 스텝 장애물들의 큰 구역들을 바디 장애물로 분류한다. 예를 들어, 환경(8)의 구역이 특히 조밀한 수의 스텝 장애물들을 포함하여 구역을 주행하는 것이 어려울 경우, 지각 시스템(110)은, 더 나은 최종 스텝 플랜(350)(아래에서 더 자세히 논의됨)을 얻기 위해, 장애물들이 로봇(10)의 바디에 충돌할 높이가 아니더라도, 전체 구역을 바디 장애물로 분류할 수 있다. 일부 구현들에서, 지각 시스템(110)은, 특정 물체들과 충돌하는 어떤 다른 이유로 로봇(10)이 진입하지 않게 것을 보장하기 위해 구역들을 바디 장애물들로 분류한다. 예를 들어, 사용자는, 로봇(10)을 특정 방향으로 또는 특정 경로를 따르게 지시하길 원할 수 있다.
[0040] 도 2d의 스텝-장애물 맵(114)은 도 2b의 계단을 표현한다. 도 2c의 바디-장애물 맵(112)에서와 같이, 바디-장애물 맵(114)은, 로봇(10)이 스테핑하기 안전하지 않거나 유효하지 않다고 지각 시스템(110)이 결정하는 구역들(213) 및 안전하거나 유효한 구역들(210)을 약술한다. 예를 들어, 계단 앞쪽의 지표면(9) 및 각각의 개별 스텝은 스텝-장애물 맵(114)에서 유효한 것으로 마킹된다.
[0041] 도 1을 다시 참조하면, 일부 구현들에서, 지각 시스템(110)은 또한 3D 볼류메트릭 맵(200)으로부터 지면 높이 맵(116)을 생성한다. 지면 높이 맵(116)은 로봇(10) 근처의 각각의 위치에서 지표면(9)의 높이를 식별한다. 즉, 지형 맵과 유사한 지면 높이 맵(116)은, 기준 포인트 또는 높이에 대해 수평 평면의 각각의 위치에서 지표면(9)의 높이를 지시하는(note) 2D 맵이다. 일부 예들에서, 지면 높이 맵(116)은 지표면(9) 위의 임의의 표면이 아닌, 지표면(9)의 높이만을 예시한다. 즉, 지면 높이 맵(116)은 테이블의 표면의 높이가 아니라 테이블 밑 지표면(9)의 높이를 라벨링할 수 있다. 지면 높이 맵(116)은 스텝-장애물 맵(114)을 생성하는 것을 돕기 위해 사용될 수 있다(예를 들어, 지표면이 너무 높거나 너무 가파라서 안전하게 주행할 수 없고, 따라서 스텝 장애물로 마킹되어야 한다는 것을 결정). 지각 시스템(110)은, 예를 들어, 3D 맵의 각각의 컬럼에서 지표면(9)으로 분류된 복셀(210)의 높이를 결정함으로써 지면 높이 맵(116)을 생성한다. 스텝-장애물 맵(114)은 결국 지면 높이 맵(116)으로부터 생성될 수 있다. 선택적으로, 지각 시스템은 바디-장애물 맵(112) 및 스텝-장애물 맵(114) 둘 모두를 부호가 있는 거리 필드들로 (즉, 부호가 있는 거리 함수들을 사용하여) 프로세싱한다.
[0042] 이제 도 3을 참조하면, 스텝 플래닝 시스템(100)의 제어 시스템(300)은 지각 시스템(110)으로부터 맵들(바디-장애물 맵(112), 스텝-장애물 맵(114) 및 지면 높이 맵(116))을 수신하고, 로봇(10)이 환경(8)을 탐색하기 위해 사용할 스텝 플랜(350)(즉, 로봇(10)이 발들(19)을 배치시킬 위치들의 맵)을 생성한다. 일부 구현들에서, 제어 시스템(300)은 바디 경로 생성기(310) 및 제약된 스텝 플래너(320)를 포함한다.
[0043] 바디 경로 생성기(310)는 지각 시스템(110)으로부터 바디-장애물 맵(112)을 그리고 로봇(10)이 탐색할 포지션(311)(즉, 로봇(10)이 가고자하는 곳)을 수신한다. 그런 다음, 바디 경로 생성기(310)는, 로봇(10)이 환경내에서 기동하는 동안, 바디-장애물 맵(112)(도 5)에서 주석이 달린 바디 장애물들(520)(도 5)을 회피하는 바디 궤적(510)(즉, 로봇(10)의 바디(11)가 따를 경로)을 생성한다. 바디 경로 생성기(310)는 자원 집약적이지 않은 방법 또는 알고리즘(예를 들어, 포텐셜 필드 방법(potential field method), RRT(rapidly-exploring random tree) 및/또는 궤적 최적화기)을 이용하여 바디 궤적 또는 바디 경로(510)를 생성한다. 예를 들어, 포텐셜 필드 방법을 사용하여, 로봇이 주행할 대략적 경로(510)를 표현하는 평면 궤적을 신속하게 생성하기 위해, 바디(11)의 단순화된 모델(예를 들어, 운동량은 고려되지 않고, 포지션들에 대해서만 고려하여 속도 플래닝)이 사용된다. 평면 궤적은 로봇(10)의 요(yaw) 및 CM의 수평 모션을 포함할 수 있다. 반드시 최적인 것은 아니지만, 바디 궤적(510)은 추가적인 경로 최적화를 위한 이상적인 시작점을 제공하는 경로의 양호한 근사치를 신속하게 제공한다. 특히, 제어 시스템(300)은 스텝-장애물 맵(114)을 사용하지 않고 바디 궤적(510)을 생성하고, 따라서 바디 경로(510)는, 바디 궤적(510)을 따를 때 로봇(10)이 스테핑해야 하는 곳을 제공하지 않는다.
[0044] 도 3을 계속 참조하면, 제약된 스텝 플래너(320)는 최종 제약된 스텝 위치들(예를 들어, 스텝 플랜)(350)을 생성하기 위한 시작점으로서, 바디 경로 생성기(310)로부터 바디 궤적(510)을 수신한다. 일부 예들에서, 제한된 스텝 플래너(320)는 로봇(10)의 명목 스텝 위치들을 제공하는 보행 타이밍(332)을 먼저 결정하는 보행 결정기(330)를 포함한다. 즉, 보행 결정기(330)는 스텝-장애물 맵(114)(도 6)에 제공되는 스텝 장애물들(620)(도 6)에 대해 가장 최적의 스텝 위치들을 제공하는 보행(예를 들어, 느리게 걷기, 빨리 걷기, 빠른 걸음 등)을 결정한다. 보행 결정기(330)는 선택적으로, 제약된 스텝 플래너(320)와 별개이다. 일부 구현들에서, 보행 결정기(330)는 결정된 보행 타이밍(332)을 스텝 솔버(step solver)(340)에 제공한다. 아래에서 더 상세히 설명되는 바와 같이, 스텝 솔버(340)는 보행 타이밍(332) 및 하나 이상의 제약들(342, 342a-n)을 받는다. 스텝 솔버(340)는 결정된 보행 타이밍(332)의 명목 스텝 위치들에 제약들(342)을 적용하고 최적화된 스텝 플랜(350)에 대해 해석한다(solve). 아래에서 더 상세히 설명되는 바와 같이, 일부 구현들에서, 제약들(342), 342는 CoP(center of pressure) 오프셋 제약(342a), 바디 킵-아웃 제약(342b), 스텝 킵-아웃 제약(342c), 자기-충돌 제약(342d), 킵-아웃 마진 제약(342e), 및 균형 제약(342f)을 포함한다. 제약들(342)은, 제약들(342a-342f) 중 하나 이상에 부가하여 또는 그 대신에, 하나 이상의 다른 제약들을 포함할 수 있다.
[0045] 일부 구현들에서, 제약된 스텝 플래너(320)는 다양한 다른 정보를 수신한다. 예를 들어, 제약된 스텝 플래너(320)는 로봇(10)의 CM의 현재 포지션 및 속도, 발들 착지 및 들어올리기(liftoff) 정보(예를 들어, 타이밍), 및 흔들리는 발(swing foot) 포지션 및/또는 속도를 수신할 수 있다. 제약된 스텝 플래너(320)는 또한 바디-장애물 맵(112)을 수신할 수 있다. 일부 구현들에서, 제약된 스텝 플래너(320)는 바디 경로 궤적(510)을 조정 또는 정제한다. 조정은 사소할 수 있다. 예를 들어, 제약된 스텝 플래너(320)는, 환경(8)을 지나 스테핑하는 동안 바디(11)의 흔들림을 고려할 수 있다(이는 단순화된 바디 경로 궤적(510)에서는 고려되지 않음). 일부 경우들에서, 조정은 중요할 수 있다. 예를 들어, 단순화된 바디 궤적(510)은 물리적으로 불가능할 수 있거나(예를 들어, 무한 가속들을 포함함), 또는 일단 보행 타이밍(332)이 결정되면 해석하기 어려울 수 있다. 일부 구현들에서, 제약된 스텝 플래너(320)는 로봇(10)의 바디(11)의 요 궤적이 아닌 병진만을 조정하고, 다른 구현들에서는, 바디(11)의 병진 및 요 둘 다를 조정한다.
[0046] 도 4는 스텝 플래닝 시스템(100)에 대한 프로세스 흐름을 도시하는 예시적인 흐름도(400)를 예시한다. 단계(402)에서, 지각 시스템(110)은 바디-장애물 맵(112)을 생성하고, 단계(404)에서, 제어 시스템(300)은, 바디 궤적 또는 바디 경로(510)를 생성하기 위해 바디-장애물 맵(112)을 사용한다. 지각 시스템(110)은 또한, 단계(406)에서 스텝-장애물 맵(114)을 생성하고, 그리고 단계(408)에서, 제어 시스템(300)은, 제약된 스텝 플래너(320)의 보행 결정기(330)를 통해, 보행 타이밍(332)을 선택하기 위해 평면 바디 경로(510) 및 스텝-장애물 맵(114)을 사용한다. (410)에서, 제약된 스텝 플래너(320)의 스텝 솔버(340)는 선정된 보행 타이밍(332), 바디-장애물 맵(112) 및 스텝-장애물 맵(114)을 사용하여 최종 스텝 플랜(350)(즉, 로봇(10)이 자신의 발들(19)을 배치할 위치들)에 대해 해석한다.
[0047] 도 5는 바디 장애물들(520) 주위를 탐색하기 위한 바디 경로(510)를 도시하는 개략도(500)를 도시한다. 예컨대, 흐름도(400)는, 단계(404)에서 바디 경로(510)를 생성하기 위해, 단계(402)에서 생성된 바디-장애물 맵(112)을 사용하는 제어 시스템(300)을 도시한다. 예를 들어, 포텐셜 필드 방법을 사용하여, 제어 시스템(300)의 바디 경로 생성기(310)는, 하나 이상의 바디 장애물들(520) 주위를 탐색하기 위해 포인트 A로부터 포인트 B로의 바디 경로(510)를 플로팅한다. 바디 장애물들(520)은 또한, 바디-장애물 존들(520)로 지칭될 수 있으며, 이 바디-장애물 존들(520)에서, 로봇(10)의 바디(11)가 바디-장애물 존(520)에 교차/진입하면, 바디(11)는 하나 이상의 장애물들과 접촉할 것이다. 즉, 바디-장애물 존(520)에 의해 정의된 구역은 그것 자체로 바디 장애물을 나타내는 것이 아니라, 오히려 (로봇(10)의 바디(11)가 하나 이상의 장애물들과 접촉하게 될 것이기 때문에) 바디(11)가 진입하도록 허용되지 않은 구역을 나타낸다. 바디 경로 생성기(310)는 경로(510)를 따라 주행하는 로봇(10)의 시뮬레이팅된 바디(530)를 생성함으로써 바디 경로(510)의 유효성을 보장한다. 유효 경로는, 예를 들어, 시뮬레이팅된 바디(530)가 바디-장애물 존들(520) 중 어느 것과도 접촉하지 않을 때 발생한다.
[0048] 이전에 논의된 바와 같이, 지각 시스템(110)으로부터 스텝-장애물 맵(114)을 수신한 후에, 보행 결정기는 명목 스텝 위치들을 생성하는 보행을 선택한다. 이제 도 6-8을 참조하면, 일부 구현들에서, 제약된 스텝 플래너(320)의 보행 결정기(330)는 최적의 명목 스텝 위치들을 찾기 위해 다수의 잠재적인 보행들을 분석한다. 도 6은 스텝-장애물 맵(114) 상에 플로팅된 바디 경로(510)를 따르기 위한 빠른 케이던스와 연관된 스텝 위치들(630)을 도시하는 개략도(600)를 도시한다. 예컨대, 흐름도(400)는, 제약된 스텝 플래너(320)의 보행 결정기(330)를 통해, 단계(408)에서의 스텝 위치(630)에 대한 빠른 케이던스를 갖는 보행 타이밍(332)을 선택하기 위해, 단계(404)에서 생성된 평면 바디 경로(510) 및 단계(406)에서 생성된 스텝-장애물 맵(114)을 사용하는 제어 시스템(300)을 도시한다. 본원에서 사용되는 바와 같이, "발들 위치(들)", "발 위치(들)" 및 "스텝 위치(들)"라는 용어들은 상호교환가능하게 사용된다.
[0049] 보행 결정기(330)는 스텝-장애물 맵(114) 상에 플로팅된 바디 경로(510)로부터 시작하고, 선택된 케이던스를 오버레이한다(즉, 바디(11)가 바디 경로(510)를 따르고 레그들(12)이 선택된 케이던스로 이동했다면, 로봇(10)은 스테핑할 것이다). 도시된 예에서, 바디 경로(510)는 하나 이상의 스텝 장애물들(620)과는 교차할 수 있지만, 바디 장애물들(520)과는 교차하지 않을 수 있다(이는 바디 경로 생성기(310)에 의해 이전에 보장됨). 각각의 스텝 위치(630, 630a-n)가 플롯팅되고 평가된다. 일부 구현들에서, 보행 결정기(330)는 현재 시뮬레이팅된 보행 타이밍의 스텝 위치들(630)의 품질을 반영하는 스코어를 생성한다. 도 6의 빠른 케이던스에 대한 스코어는, 스텝 위치들(630)과 스텝 장애물들(620) 간의 사소한 충돌들(예를 들어, 스텝 위치들(630)이 스텝 장애물들(620)과 중첩하는 위치들)의 수로 인해 비교적 낮을 수 있다. 스코어는 스텝 장애물들(620)과의 충돌들의 수 및 충돌들의 심각성에 의해 영향을 받을 수 있다. 보행 결정기(330)는 장애물들(620)을 회피하기 위해 스텝 위치들(630)이 시프트되어야 하는 거리를 강조할 수 있다. 예를 들어, 3개의 장애물들(620)과 약하게 충돌하는 스텝 위치들(630)이 단일 장애물(620)과 심하게 충돌하는 스텝 위치들(630)보다 바람직할 수 있다.
[0050] 도 7은 스텝-장애물 맵(114) 상에 플로팅된 바디 경로(510)를 따르기 위한 느린 케이던스와 연관된 스텝 위치들(630)을 도시하는 개략도(700)를 도시한다. 도 6의 빠른 케이던스와 연관된 스텝 위치들(630)과 유사하게, 도 7의 느린 케이던스는, 비-이상적인 스코어로 이어지는, 스텝 장애물들(620) 내의 또는 스텝 장애물들(620)과 접촉하는 다수의 스텝 위치들(630)을 나타낸다. 한편, 도 8의 개략도(800)는, 스텝-장애물 맵(114) 상에 플로팅된 바디 경로(510)를 따르기 위한 중간 케이던스(즉, 도 6의 빠른 케이던스보다는 느리지만 도 7의 느린 케이던스보다는 빠름)와 현재 연관된 스텝 위치들(630)을 도시한다. 중간 케이던스는 스텝 위치들(630)과 스텝 장애물들(620) 사이에서 가장 낮은 수의 충돌들을 갖고, 따라서 느린, 중간 및 빠른 케이던스들 중 가장 높은 스코어를 수신할 수 있다. 3개의 케이던스들만이 예시되지만, 보행 결정기(330)는 특정 케이던스를 선택하기 전에 임의의 수의 보행 타이밍들을 평가할 수 있다는 것이 이해된다. 각각의 분석된 보행 타이밍에 할당된 스코어는 주어진 제약들을 충족시키기 위해 요구되는 최적화의 양을 반영할 수 있다. 명목 스텝 위치들(630)이 위반하는(예를 들어, 스텝 장애물들(620)과 충돌) 제약들이 많을수록, 더 많은 최적화가 요구될 수 있다. 스텝 장애물 및 바디 장애물 제약들에 부가하여, 스코어는 기타 제약들(예를 들어, 스피드 제약)을 반영할 수 있다. 예를 들어, 일부 업무들 또는 환경들에 대해, 빠른 케이던스보다, 더 느린 케이던스에 더 많은 가중치가 부여될 수 있다.
[0051] 이제 도 9를 참조하면, 일단 보행 결정기가 보행 타이밍(332) 및 명목 스텝 위치들(630)을 선택하면, 제약된 스텝 플래너(320)의 스텝 솔버(340)는 최종 스텝 플랜(350)(예를 들어, 흐름도(400)의 단계(410))을 해석한다. 도 9는 장애물 맵(114) 상에 플로팅된 바디 경로(510)를 따르기 위한 선택된 보행 타이밍(332)(예를 들어, 케이던스)와 연관된 최종 스텝 위치들(630)을 도시하는 개략도(900)를 도시한다. 스텝 솔버(340)는 스텝 솔버(340)가 해석하는 동안 고려하는 다수의 제약들(342)(즉, 변수들)을 받는다. 일부 예들에서, 각각의 제약(342)은 "강성적(hard)" 제약 또는 "연성적(soft)" 제약이다. 강성적 제약은, 스텝 솔버(340)가 위반할 수 없고 그리고 여전히 성공적인 스텝 플랜(350)을 갖는 제약(342)이다. 예를 들어, 스텝 장애물(620)(예를 들어, 낙하(drop off) 에지)을 회피하는 것이 강성적 제약으로서 라벨링될 수 있는데, 그 이유는 특정 스텝 장애물(620)에 스테핑하는 것은 치명적인 결과들(예를 들어, 에지로부터 떨어짐)을 초래할 수 있기 때문이다. 연성적 제약은, 스텝 솔버(340)가 충족하려고 시도할 것이지만, 필요한 경우 성공적인 스텝 플랜(350)을 달성하기 위해 위반할 수 있는 제약(342)이다. 예를 들어, 스텝 솔버(340)는 스텝 장애물(620)의 임계 거리 내에 가지 않는 제약(342)(즉, "마진" 제약(342e))을 가질 수 있다. 임계 거리를 유지하는 것이 이상적이지만, 스텝 솔버(340)는, 필요한 경우, (예를 들어, 강성적 제약 준수를 보장하기 위해) 경계를 침범할 수 있다. 연성적 제약들에 가중치가 부여될 수 있다. 즉, 각각의 제약(342)에는, 모든 제약들이 충족될 수 없는 경우 어느 제약을 먼저 위반할지를 스텝 솔버(340)가 결정할 수 있게 하는 특정 가중치 또는 "유연성(softness)"이 부여될 수 있다. 예를 들어, 스텝 솔버(340)가 마진 제약(342e) 및 균형 제약(342f)(즉, 로봇(10)의 균형을 유지하기 위한 요건)을 갖는 경우, 균형 제약(342f)은 마진 제약(342e)보다 더 많은 가중치가 부여될 수 있는데(예를 들어, "더 강성적"일 수 있음), 이는 스텝 장애물(620)로부터 마진을 유지하는 것보다 균형을 유지하는 것이 더 중요하기 때문이다. 따라서, 스텝 솔버(340)는 마진 제약(342e)을 먼저 위반하도록 또는 균형 제약(342f)보다 더 큰 정도로 위반하도록 선정할 수 있다.
[0052] 제약(342)은 (강성적 또는 연성적) 등식 제약(예를 들어, x = 5) 또는 부등식 제약(예를 들어, x <= 5) 일 수 있다. 일부 구현들에서, 스텝 솔버(340)는 또한 제약들(342)을 지키면서(또는 지키려고 시도하면서) 비용들을 최소화하도록 노력한다. 비용은 연성적 등식 제약과 동등할 수 있다. 즉, 일부 예시들에서, 연성적 제약은 솔버(340)에 의해 최소화될 비용으로 간주될 수 있다. 일부 제약들(예를 들어, 균형 제약(342f))은 비용 또는 연성적 제약으로서 취급될 수 있다. 예를 들어, x가 5보다 큰 제약이 없는 경우, 예시적인 부등식 제약 및 예시적인 비용을 부가하는 것은 동일한 효과를 가질 것이다(동등한 가중치를 취함). 그러나, x가 5 미만인 제약이 없는 경우, 비용(또는 등식 제약)을 부가하는 것은 x가 5에 더 가까워지게 할 것이지만, 부등식 제약은 효과가 없을 것이다. 일부 구현들에서, 스텝 솔버(340)는 비용들 및 연성적 부등식 제약들을 사용하고, 강성적 제약들 또는 등식 제약들을 사용하지 않는다.
[0053] 스텝 솔버(340)는 임의의 수의 제약들(342)에 대해 해석할 수 있다. 이전에 논의된 바와 같이(도 3), 스텝 솔버(340)는 스텝/바디 장애물 구역들을 킵 아웃하게 하기 위한 제약들(342b, 342c), 스텝 장애물들(620)로부터 임계 거리를 유지하기 위한 마진 제약(342e), 및 균형 및/또는 안정성을 유지하기 위한 균형 제약(342f)을 가질 수 있다. 다른 예들에서, 스텝 솔버(340)는, 지면(9)과 접촉하는 레그(들)(12)에 대한 압력 중심 오프셋의 임계 범위를 포함하는 압력 중심 오프셋 제약(342a)을 수신할 수 있다. 압력 중심 오프셋은 각각의 스텝에서 각각의 레그(12)에 대한 로봇(10) 무게 분포(즉, 지면(9)과 접촉하는 레그(들)(12) 사이의 무게 분포)의 허용가능한 양을 나타낼 수 있다. 즉, 압력 중심 오프셋 제약(342a)은, 로봇의 스텝에 적용되는 로봇(10)의 무게의 퍼센티지가 유효한 것을 보장한다. 예를 들어, 2개의 발들이 지표면(9)과 접촉할 때, 스텝 솔버(340)는 첫번째 발에 120%(예를 들어, 로봇(10)의 전체 무게보다 20% 더 많은)의 그리고 두번째 발에 -20%의 수직 힘이 가해지지 않게 제한될 수 있는데, 왜냐하면 이러한 성과(feat)는 불가능하기 때문이다. 다른 예에서, 스텝 솔버(340)는 자기-충돌 제약(342d)을 수신할 수 있다. 즉, 로봇(10)이 자신과 충돌(즉, 두 번째 발(19)이 이미 위치된 곳에 첫 번째 발(19)을 배치)하지 않도록 스텝 솔버(340)가 시도하는 것을 보장하기 위한 제약(342d)을 수신할 수 있다. 제약들(342)은 탐색 이전에 미리 결정될 수 있다. 제약들(342)은 또한 탐색 동안 수정, 추가 또는 제거될 수 있다. 일부 예들에서, 제약들(342)은, 제어 시스템 외부의 소스(예를 들어, 로봇(10)의 사용자 또는 제조자)로부터 수신되는 반면, 다른 예들에서, 스텝 플래닝 시스템(100)은 로봇(10)의 센서들로부터 수신된 데이터에 기반하여 자율적으로 제약들(342)을 생성한다.
[0054] 스텝 솔버(340)에 할당된 제약들(342)을 충족시키려는 시도에서, 스텝 솔버(340)는 각각의 스텝 위치(630)를 조정할 수 있다. 도 9를 계속 참조하면, 스텝 장애물 회피 제약(342c)은 장애물로부터 멀어지게 스텝 위치들(630)을 "밀처두거나(shove)" 아니면 조정할 수 있다. 예컨대, 스텝 위치(630a)는 예를 들어, 킵 아웃 경계(620)(이는 킵-아웃 제약(342c)에 대한 응답으로 생성됨)로 인해 스텝 위치(630b)로 이동된다. 스텝 솔버(340)가 원래의 명목 스텝 위치로부터의 스텝 위치(630)의 위치를 수정할 때, 조정은 다른 스텝 위치들(630)에 대한 변화들로 캐스케이드 또는 리플(ripple)될 수 있다. 예를 들어, 도 9에 예시된 바와 같이, 스텝 위치(630c)는, 로봇(10)이 바디 궤적(510)을 따라 이동할 때 균형을 유지하기 위해 스텝 솔버(340)가 스텝 위치(630a)를 이전에 조정한 것에 대한 응답으로, 스텝 위치(630d)로 이동될 수 있다. 스텝 솔버(340)가 최종 제약된 스텝 위치 플랜(350)을 완료하면, 로봇(10)은, 결정된 스텝 위치들(630)에 대해 자신의 발들을 배치하면서, 주행을 시작할 수 있다. 주행 동안, 로봇(10)은 (동일한 또는 업데이트된 제약들(342)을 갖는) 지각 시스템(110)으로부터 수신된 가장 최근의 맵들(112, 114, 116)에 기반하여 스텝 플랜(350)을 연속적으로 재실행 또는 재생성할 수 있고, 응답으로 스텝 플랜을 적응 또는 변경할 수 있다.
[0055] 이상적으로, 스텝 솔버(340)는 스텝 솔버(340)가 실시간으로 스텝 플랜(350)을 해석할 수 있도록 2차 계획법(quadratic programming)을 사용한다. 2차 계획법은 선형 제약들을 사용하여 최적화 문제를 신속하게 해석한다. 즉, 일부 예들에서, 스텝 솔버(340)는 선형으로 제약되는 여러 변수들의 2차 함수를 최소화하거나 최대화한다. 계속 도 9를 참조하면, 무정형(amorphous) 형상들의 장애물 영역들을 선형으로 제약하기 위해, 스텝 솔버(340)는 장애물의 형상에 매우 근접하게 일련의 직선들(920)을 드로잉할 수 있다. 일부 예들에서, 스텝 솔버(340)는 장애물의 관련 부분들에만 선형 제약들을 적용한다. 다른 예들에서, 스텝 솔버(340)는 처음에 임의의 제약들(342) 없이 스텝 플랜(350)에 대해 해석한 다음, 스텝 솔버(340)가 최적화된 최종 스텝 플랜(350)을 달성할 때까지, 제약들(342)을 반복적으로 추가하고 중간 스텝 플랜들을 재생성한다.
[0056] 스텝 솔버(340)는 컨벡스(convex) 제약들을 해석하는 것으로 시작할 수 있다. 그런 다음, 솔버(340)는 컨벡스 제약들로부터의 솔루션을 사용하여 비-컨벡스(non-convex) 제약들의 최상의 선형 근사치를 반복적으로 결정할 수 있다. 예를 들어, 스윙하는 발(19)의 현재 포지션 및 속도, 착지(즉, 발(19)과 지면(9) 사이)까지의 알려진 시간, 및 발(19)의 최대 가속도에 기반하여, 솔버(340)는 발(19)이 착지할 수 있는 직사각형 형상 영역을 결정할 수 있다. 유사하게, 다른 형상들이 다른 영역들과 근사할 수 있다. 예를 들어, 각각의 레그(12)가 최대 길이를 갖기 때문에, 발(19) 착지는 엉덩이에서 별로 멀지 않게 발생할 수 있다. 이 구역은 팔각형으로 표현될 수 있다. 발(19) 들어올리기는 발(19) 착지와 유사하게 근사할 수 있지만, 대신에 (팔각형과 대조적으로) 직사각형을 사용할 수 있다. 스탠스 레그들(12)은 자기-충돌에 대해 보호하기 위해 사다리꼴 경계를 가질 수 있다.
[0057] 따라서, 로봇(10)의 스텝 플래닝 시스템(100)은 정확한 스텝 플랜(350)을 결정하는 것에서 바디 경로(510)를 근사화하고 결정하는 것을 분리한다(decouple). 먼저 바디 궤적(510)을 신속하게 근사화함으로써, 제어 시스템(300)은, 정확한 최종 스텝 플랜(350)을 신속하게 최적화(신속하게 최적화되지 않으면, 계산적으로 비효율적일 수 있음)하기 위해 사용될 수 있는 합리적인 퍼스트-패스 솔루션(reasonable first-pass solution)을 생성한다. 이 때문에, 스텝 플랜(350)은 로봇(10)이 환경(8)내에서 기동하는 동안 실시간 탐색을 가능하게 하기 위해 높은 주파수(예를 들어, 300Hz)에서 재생성될 수 있다. 지각 시스템(110)은 제어 시스템과 상이한 주파수에서 동작할 수 있다. 즉, 제어 시스템(300)이 스텝 플랜(350)을 결정하는 레이트와 상이한(예를 들어, 더 느린) 레이트로 새로운 맵들이 제어 시스템(300)에 제공될 수 있다. 제어 시스템(300)에 의한 높은 주파수의 재생성은, 로봇(10)이, 새로운 지각 데이터(예를 들어, 새로운 검출된 물체)에 신속하게 적응하게, (예를 들어, 푸시되거나 부딪힌 후에 균형을 유지하는) 놀라운 역학에 신속하게 반응하게, 또는 새로운 요건들(예를 들어, 스피드 증가 또는 감소)에 응답하게 허용한다.
[0058] 도 10은 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 예시적인 방법의 흐름도이다. 흐름도는, 동작(1002)에서, 로봇(10)의 데이터 프로세싱 하드웨어(36)에서, 적어도 하나의 이미지 센서(31)로부터 로봇(10) 주위 환경(8)의 이미지 데이터(17)를 수신함으로써 시작된다. 이미지 센서(31)는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 이미지 데이터(17)는 3차원 볼류메트릭 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함한다. 로봇(10)은 바디(11) 및 레그들(12)을 포함한다. 단계(1004)에서, 방법(1000)은, 데이터 프로세싱 하드웨어(36)에 의해, 이미지 데이터(17)에 기반하여 바디-장애물 맵(112), 스텝-장애물 맵(114) 및 지면 높이 맵(116)을 생성하는 단계를 포함한다.
[0059] 단계(1006)에서, 방법(1000)은, 데이터 프로세싱 하드웨어(36)에 의해, 바디-장애물 맵(112)에 기반하여 환경(8)내에서 기동하는 동안 로봇(10)의 바디(11)의 이동을 위한 바디 경로(510)를 생성하는 단계를 포함한다. 단계(1008)에서, 방법(1000)은, 데이터 프로세싱 하드웨어(36)에 의해, 바디 경로(510), 바디-장애물 맵(112), 스텝-장애물 맵(114) 및 지면 높이 맵(116)에 기반하여 환경(8)내에서 기동하는 동안, 로봇(10)의 레그들(12)을 위한 스텝 경로(350)를 생성하는 단계를 포함한다.
[0060] 도 11은 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 다른 예시적인 방법(1100)의 흐름도이다. 흐름도는, 동작(1102)에서, 로봇(10)의 데이터 프로세싱 하드웨어(36)에서, 적어도 하나의 이미지 센서(31)로부터 로봇(10) 주위 환경(8)의 이미지 데이터(17)를 수신함으로써 시작된다. 이미지 센서(31)는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 이미지 데이터(17)는 3차원 볼류메트릭 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함한다. 로봇(10)은 바디(11) 및 레그들(12)을 포함한다. 방법(1100)은, 단계(1104)에서, 데이터 프로세싱 하드웨어(36)에 의해, 이미지 데이터(17)에 기반하여 환경(8)내 공간의 점유물들을 식별하는 단계를 포함한다. 단계(1106)에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 환경(8)내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵(200)을 생성하는 단계를 포함한다. 일부 예들에서, 3차원 공간 점유 맵(200)은 복셀들(212)을 갖는 복셀 맵(200, 200a)을 포함하며, 각각의 복셀(212)은 환경(8)의 3차원 공간을 표현한다. 각각의 복셀(212)은 지표면(9), 장애물, 또는 기타로 분류될 수 있다. 단계(1108)에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 3차원 공간 점유 맵(200)에 기반하여 2차원 바디-장애물 맵(112)을 생성하는 단계를 포함한다. 단계(1110)에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 3차원 공간 점유 맵(200)에 기반하여 지면 높이 맵(116)을 생성하는 단계를 포함한다. 지면 높이 맵(116)은 로봇(10) 근처의 각각의 위치에서 지표면(9)의 높이를 식별한다.
[0061] 방법(1100)은, 단계(1112)에서, 데이터 프로세싱 하드웨어(36)에 의해, 지면 높이 맵(116)에 기반하여 스텝-장애물 맵(114)을 생성하는 단계를 포함하며, 스텝-장애물 맵(114)은 환경(8)에서, 로봇(10)이 스테핑하지 않아야 하는 비-스텝 영역들(213)을 식별한다. 단계(1114)에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 2차원 바디-장애물 맵(112)에 기반하여 로봇(10)이 환경(8)내에서 기동할 때 로봇(10)의 바디(11)의 이동을 위한 바디 경로(510)를 생성하는 단계를 포함한다. 일부 예들에서, 바디 경로(510)는 2차원 바디-장애물 맵(112)에 지정된 비-바디 영역들에 기반한다. 단계(1116)에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 바디 경로(510), 바디-장애물 맵(112), 스텝-장애물 맵(114) 및 지면 높이 맵(116)에 기반하여 로봇(10)이 환경(8)내에서 기동할 때, 로봇(10)의 레그들(12)의 이동을 위한 스텝 경로(350)를 생성하는 단계를 포함한다. 스텝 경로(350)는 로봇(10)에 대한 명목 보행의 명목 스텝 패턴 및 스텝 제약들(342)에 기반할 수 있다. 일부 구현들에서, 로봇(10)의 레그들(12)을 위한 스텝 경로(350)를 생성하는 단계는 생성된 바디 경로(510)를 정제하는 단계를 포함한다. 일부 구현들에서, 스텝 제약들(342)은, 지표면과 접촉하는 각각의 레그(12)에 대한 압력 중심 오프셋의 임계 범위 ―압력 중심 오프셋은, 각각의 스텝에서 각각의 레그에 대한 로봇 무게 분포의 허용가능한 양을 나타냄―; 스텝 경로(350)가 레그(12)로 하여금 스텝-장애물 맵(114)의 비-스텝 영역(213)으로 스테핑하게 하는지 여부; 스텝 경로(350)가 로봇(10)의 바디(11)로 하여금 바디 장애물에 진입하게 하는지 여부; 스텝 경로(350)가 로봇(10)의 자체 충돌을 유발하는지 여부; 또는 스텝-장애물 맵(114)의 임의의 비-스텝 영역(213)에 대한 공간 마진 중 적어도 하나를 포함한다. 선택적으로, 스텝 제약들(342)은 연성적 제약들 또는 가중 제약(weighted constraint)들을 포함한다.
[0062] 일부 구현들에서, 방법(1100)은, 데이터 프로세싱 하드웨어(36)에 의해, 2차원 바디-장애물 맵(112)을 생성하기 위해 3차원 공간 점유 맵(200)을 필터링하는 단계를 포함한다. 필터링은 불완전하게 관측된 장애물들 주위의 갭들을 채우고 그리고/또는 맵(112)으로부터 위조(spurious) 데이터를 제거할 수 있다.
[0063] 도 12는 스텝 플랜에 대한 지형 및 제약 플래닝을 위한 다른 예시적인 방법(1200)의 흐름도이다. 흐름도는 동작(1202)에서, 로봇(10)의 데이터 프로세싱 하드웨어(36)에서, 2차원 바디-장애물 맵(112), 스텝-장애물 맵(114) 및 지면 높이 맵(116)을 수신함으로써 시작된다. 여기서, 로봇(10)의 데이터 프로세싱 하드웨어(36)는 데이터 프로세싱 하드웨어와 통신하는 원격 디바이스로부터 맵들(112, 114, 116)을 획득할 수 있다. 예컨대, 원격 디바이스는, 도 1을 참조로 위에서 논의된 바와 같이, 로봇(10)의 비전 시스템(30)(도 1)으로부터 이미지 데이터(17)(도 1)를 수신하고, 이미지 데이터(17)에 기반하여 맵들(112, 114, 116)을 생성할 수 있다. 지면 높이 맵(116)은 로봇(10) 근처의 각각의 위치에서 지표면(9)의 높이를 식별한다. 스텝-장애물 맵(114)은 환경(8)에서 로봇(10)이 스테핑하지 않아야 하는 곳을 식별한다. 방법(1200)은, 단계(1204)에서, 데이터 프로세싱 하드웨어(36)에 의해, 2차원 바디-장애물 맵(112)에 기반하여 로봇(10)이 환경(8)내에서 기동할 때 로봇(10)의 바디(11)의 이동을 위한 바디 경로(510)를 생성하는 단계를 포함한다. 방법(1200)은, 단계(1206)에서, 데이터 프로세싱 하드웨어(36)에 의해, 바디 경로(510), 바디-장애물 맵(112), 지면 높이 맵(116) 및 스텝-장애물 맵(114)에 기반하여 로봇(10)이 환경(8)내에서 기동할 때, 로봇(10)의 레그들(12)의 이동을 위한 스텝 경로(350)를 생성하는 단계를 포함한다.
[0064] 도 13은 본 문서에서 설명되는 시스템들 및 방법들(예를 들어, 데이터 프로세싱 하드웨어(36) 및 메모리 하드웨어(38))을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(1300)의 개략도이다. 본원에 도시된 컴포넌트들, 이들의 연결들 및 관계들, 및 이들의 기능들은 단지 예시적인 것으로 의도되며, 본 문서에서 설명되고 그리고/또는 청구되는 발명들의 구현들을 제한하는 것으로 의도되지 않는다.
[0065] 컴퓨팅 디바이스(1300)는 프로세서(1310)(예를 들어, 데이터 프로세싱 하드웨어(36)), 메모리(1320)(예를 들어, 메모리 하드웨어(38)), 저장 디바이스(1330), 고속 확장 포트들(1350) 및 메모리(1320)에 연결되는 고속 인터페이스/제어기(1340), 및 저장 디바이스(1330) 및 저속 버스(1370)에 연결되는 저속 인터페이스/제어기(1360)를 포함한다. 컴포넌트들(1310, 1320, 1330, 1340, 1350, 및 1360) 각각은 다양한 버스들을 사용하여 상호연결되며, 공통 마더보드 상에 또는 적절한 다른 방식들로 탑재될 수 있다. 프로세서(1310)는, 고속 인터페이스(1340)에 커플링된 디스플레이(1380)와 같은 외부 입/출력 디바이스 상의 그래픽 사용자 인터페이스(GUI)에 대한 그래픽 정보를 디스플레이하기 위해 메모리(1320) 내에 또는 저장 디바이스(1330) 상에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(1300) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 메모리들 및 다수의 타입들의 메모리와 함께, 다수의 프로세서들 및/또는 다수의 버스들이 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(1300)은 연결될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 한 그룹의 블레이드 서버들, 또는 멀티-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0066] 메모리(1320)는 컴퓨팅 디바이스(1300) 내에 비-일시적으로 정보를 저장한다. 메모리(1320)는 컴퓨터- 판독가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(1320)는, 컴퓨팅 디바이스(1300)에 의한 사용을 위해 일시적으로 또는 영구적 기반으로 프로그램들(예를 들어, 명령들의 시퀀스들) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리의 예들은, 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예를 들어, 부스트 프로그램들과 같이 펌에어에 통상적으로 사용됨)을 포함(그러나 이로 제한되지 않음)한다. 휘발성 메모리의 예들은 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함(그러나 이에 제한되지 않음)한다.
[0067] 저장 디바이스(1330)는 컴퓨팅 디바이스(1300)에 대한 대용량 저장을 제공할 수 있다. 일부 구현들에서, 저장 디바이스(1330)는 컴퓨터-판독가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(1330)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 구역 네트워크 또는 다른 구성들의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 추가 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어에 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 때, 위에서 설명된 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 메모리(1320), 저장 디바이스(1330), 또는 프로세서(1310) 상의 메모리와 같은 컴퓨터- 또는 머신-판독가능 매체이다.
[0068] 고속 제어기(1340)는 컴퓨팅 디바이스(1300)에 대한 대역폭-집약적 동작들을 관리하는 반면, 저속 제어기(1360)는 더 낮은 대역폭-집약적 동작들을 관리한다. 그러한 임무들의 할당은 단지 예시적이다. 일부 구현들에서, 고속 제어기(1340)는 메모리(1320)에 그리고 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(1350)에 커플링된다. 일부 구현들에서, 저속 제어기(1360)는 저장 디바이스(1330) 및 저속 확장 포트(1390)에 커플링된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(1390)는, 예를 들어, 네트워크 어댑터를 통해, 하나 이상의 입/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스 이를테면 스위치 또는 라우터에 커플링될 수 있다.
[0069] 본원에 설명된 시스템들 및 기법들의 다양한 구현들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특수하게 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하도록 그리고 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스에 데이터 및 명령들을 송신하도록 커플링되는 적어도 하나의 프로그램가능 프로세서(특수 목적용 또는 범용성일 수 있음)를 포함하는 프로그램가능 시스템에서 실행가능한 그리고/또는 해석가능한 하나 이상의 컴퓨터 프로그램들의 구현을 포함할 수 있다.
[0070] 이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려짐)은 프로그램가능 프로세서에 대한 머신 명령들을 포함하며, 고레벨 절차적 및/또는 객체-지향 프로그래밍 언어로 그리고/또는 어셈블리/머신 언어로 구현될 수 있다. 본원에서 사용되는 바와 같이, "머신-판독가능 매체" 및 "컴퓨터-판독가능 매체"라는 용어들은, 머신-판독가능 신호로서 머신 명령들을 수신하는 머신-판독가능 매체를 포함하여, 머신 명령들 및/또는 데이터를 프로그램가능 프로세서에 제공하는 데 사용되는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독가능 매체, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들을 지칭한다. "머신-판독가능 신호"라는 용어는, 프로그램가능 프로세서에 머신 명령들 및/또는 데이터를 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0071] 본 명세서에서 설명된 프로세스들 및 로직 흐름들은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍 가능 프로세서들(데이터 프로세싱 하드웨어로 또한 지칭됨)에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용성 마이크로프로세서 및 특수 목적 마이크로프로세서 둘 다, 그리고 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어, 자기, 광 자기 디스크들, 또는 광 디스크들로부터 데이터를 수신하도록 또는 이들에게 데이터를 전달하도록 또는 이 둘 모두를 위해 동작 가능하게 커플링될 것이다. 그러나, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체들은, 예로서, 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스들을 포함하는, 모든 형태들의 비-휘발성 메모리, 매체들 및 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들; 광 자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
[0072] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 이에 따라, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (26)

  1. 로봇(10)의 데이터 프로세싱 하드웨어(36)에서, 적어도 하나의 이미지 센서(31)로부터 상기 로봇(10) 주위 환경(8)의 이미지 데이터(17)를 수신하는 단계 ― 상기 로봇(10)은 바디(11) 및 레그들(12)을 포함함―;
    상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 이미지 데이터(17)에 기반하여 바디-장애물 맵(112), 지면 높이 맵(116) 및 스텝-장애물 맵(114)을 생성하는 단계;
    상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 바디-장애물 맵(112)에 기반하여 상기 환경(8)내에서 기동(maneuver)하는 동안 상기 로봇(10)의 바디(11)의 이동을 위한 바디 경로(510)를 생성하는 단계; 및
    상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 바디 경로(510), 상기 바디-장애물 맵(112), 상기 지면 높이 맵(116) 및 상기 스텝-장애물 맵(114)에 기반하여 상기 환경(8)내에서 기동하는 동안 상기 로봇(10)의 상기 레그들(12)을 위한 스텝 경로(350)를 생성하는 단계
    를 포함하는, 방법(1000).
  2. 제1 항에 있어서,
    상기 이미지 데이터(17)는 3차원 볼류메트릭(volumetric) 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함하는, 방법(1000).
  3. 제1 항 또는 제2 항에 있어서,
    상기 적어도 하나의 이미지 센서(31)는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함하는, 방법(1000).
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 이미지 데이터(17)에 기반하여 상기 환경(8)내 공간의 점유물(occupancy)들을 식별하는 단계; 및
    상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 환경(8)내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵(200)을 생성하는 단계
    를 더 포함하며, 상기 이미지 데이터(17)에 기반하여 바디-장애물 맵(112), 지면 높이 맵(116) 및 스텝-장애물 맵(114)을 생성하는 단계는:
    상기 3차원 공간 점유 맵(200)에 기반하여 상기 바디-장애물 맵(112)을 생성하는 단계;
    상기 3차원 공간 점유 맵(200)에 기반하여 상기 지면 높이 맵(116)을 생성하는 단계 ―상기 지면 높이 맵(116)은 상기 로봇(10) 근처의 각각의 위치에서 지표면(9)의 높이를 식별함―; 및
    상기 지면 높이 맵(116)에 기반하여 상기 스텝-장애물 맵(114)을 생성하는 단계 ―상기 스텝-장애물 맵(114)은 상기 환경(8)에서 상기 로봇(10)이 스테핑하지 않아야 할 비-스텝 영역들(213)을 식별함―
    를 포함하는, 방법(1000).
  5. 제4 항에 있어서,
    상기 바디-장애물 맵(112)을 생성하는 단계는 상기 3차원 공간 점유 맵(200)에 기반하여 2차원 바디-장애물 맵(112)을 생성하는 단계를 포함하는, 방법(1000).
  6. 제4 항 또는 제5 항에 있어서,
    상기 3차원 공간 점유 맵(200)은 복셀(voxel)들(212)을 갖는 복셀 맵(200)을 포함하고, 각각의 복셀(212)은 상기 환경(8)의 3차원 공간을 표현하는, 방법(1000).
  7. 제6 항에 있어서,
    상기 각각의 복셀(212)은 지표면(9), 장애물 또는 기타(other)로 분류되는, 방법(1000).
  8. 제4 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 바디-장애물 맵(112)을 생성하기 위해, 상기 데이터 프로세싱 하드웨어(36)에 의해, 상기 3차원 공간 점유 맵(200)을 필터링하는 단계를 더 포함하는, 방법(1000).
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 바디 경로(510)를 생성하는 단계는 상기 바디-장애물 맵(112)에서 지정된 비-바디 영역들에 기반하는, 방법(1000).
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 스텝 경로(350)를 생성하는 단계는 상기 로봇(10)에 대한 명목 보행(nominal gait)의 명목 스텝 패턴 및 스텝 제약들을 조정하는 것에 기반하는, 방법(1000).
  11. 제10 항에 있어서,
    상기 스텝 제약들(342)은,
    지표면(9)과 접촉하는 각각의 레그(12)에 대한 압력 중심 오프셋(center of pressure offset)의 임계 범위 ―상기 압력 중심 오프셋은 각각의 스텝에서 각각의 레그(12)에 대한 로봇(10) 무게 분포의 허용가능한 양을 나타냄―;
    상기 스텝 경로(350)가 레그로 하여금 상기 스텝-장애물 맵(114)의 비-스텝 영역(213)으로 스테핑하게 하는지 여부;
    상기 스텝 경로(350)가 상기 로봇(10)의 바디(11)로 하여금 바디 장애물(520)에 진입하게 하는지 여부;
    상기 스텝 경로(350)가 상기 로봇(10)의 자체 충돌(self-collision)을 야기하는지 여부; 또는
    상기 스텝-장애물 맵(114)의 임의의 비-스텝 영역(213)에 대한 공간 마진(margin of space)
    중 적어도 하나를 포함하는, 방법(1000).
  12. 제11 항에 있어서,
    상기 스텝 제약들(342)은 연성적 제약(soft constraint)들 또는 강성적 제약(hard constraint)들을 포함하는, 방법(1000).
  13. 제1 항 내지 제12 항 중 어느 한 항에 있어서,
    상기 로봇(10)의 레그들(12)을 위한 스텝 경로(350)를 생성하는 단계는 상기 생성된 바디 경로(510)를 정제하는(refining) 단계를 포함하는, 방법(1000).
  14. 로봇(10)으로서,
    바디(11);
    상기 바디(11)에 커플링되며, 환경(8) 주위에서 상기 로봇(10)을 기동시키도록 구성된 레그들(12);
    상기 레그들(12)과 통신하는 데이터 프로세싱 하드웨어(36); 및
    상기 데이터 프로세싱 하드웨어(36)와 통신하는 메모리 하드웨어(38)
    를 포함하며, 상기 메모리 하드웨어(38)는, 상기 데이터 프로세싱 하드웨어(36)상에서 실행될 때, 상기 데이터 프로세싱 하드웨어(36)로 하여금 동작들을 수행하게 하는 명령들을 저장하며,
    상기 동작들은,
    적어도 하나의 이미지 센서(31)로부터 상기 로봇(10) 주위 환경(8)의 이미지 데이터(17)를 수신하는 동작;
    상기 이미지 데이터(17)에 기반하여 바디-장애물 맵(112), 지면 높이 맵(116), 및 스텝-장애물 맵(114)을 생성하는 동작;
    상기 바디-장애물 맵(112)에 기반하여 상기 환경(8)내에서 기동하는 동안 상기 로봇(10)의 바디(11)의 이동을 위한 바디 경로(510)를 생성하는 동작; 및
    상기 바디 경로(510), 상기 바디-장애물 맵(112), 상기 지면 높이 맵(116) 및 상기 스텝-장애물 맵(114)에 기반하여 상기 환경(8)에서 기동하는 동안 상기 로봇(10)의 레그들(12)을 위한 스텝 경로(350)를 생성하는 동작
    을 포함하는, 로봇(10).
  15. 제14 항에 있어서,
    상기 이미지 데이터(17)는 3차원 볼류메트릭 이미지 센서에 의해 캡처된 3차원 포인트 클라우드 데이터를 포함하는, 로봇(10).
  16. 제14 항 또는 제15 항에 있어서,
    상기 적어도 하나의 이미지 센서(31)는 스테레오 카메라, 스캐닝 LIDAR(light-detection and ranging) 센서, 또는 스캐닝 LADAR(laser-detection and ranging) 센서 중 하나 이상을 포함하는, 로봇(10).
  17. 제14 항 내지 제16 항 중 어느 한 항에 있어서,
    상기 동작들은,
    상기 이미지 데이터(17)에 기반하여 상기 환경(8)내 공간의 점유물들을 식별하는 동작; 및
    상기 환경(8)내 공간의 점유물들의 식별에 기반하여 3차원 공간 점유 맵(200)을 생성하는 동작
    을 더 포함하며, 상기 이미지 데이터(17)에 기반하여 바디-장애물 맵(112), 지면 높이 맵(116) 및 스텝-장애물 맵(114)을 생성하는 동작은 :
    상기 3차원 공간 점유 맵(200)에 기반하여 상기 바디-장애물 맵(112)을 생성하는 동작;
    상기 3차원 공간 점유 맵(200)에 기반하여 상기 지면 높이 맵(116)을 생성하는 동작 ―상기 지면 높이 맵(116)은 상기 로봇(10) 근처의 각각의 위치에서 지표면(9)의 높이를 식별함 ―; 및
    상기 지면 높이 맵(116)에 기반하여 상기 스텝-장애물 맵(114)을 생성하는 동작 ―상기 스텝-장애물 맵(114)은 상기 환경(8)에서 상기 로봇(10)이 스테핑하지 않아야 할 비-스텝 영역들(213)을 식별함―
    을 포함하는, 로봇(10).
  18. 제17 항에 있어서,
    상기 바디-장애물 맵(112)을 생성하는 동작은 상기 3차원 공간 점유 맵(200)에 기반하여 2차원 바디-장애물 맵(112)을 생성하는 동작을 포함하는, 로봇(10).
  19. 제17 항 또는 제18 항에 있어서,
    상기 3차원 공간 점유 맵(200)은 복셀들(212)을 갖는 복셀 맵(200)을 포함하고, 각각의 복셀(212)은 상기 환경(8)의 3차원 공간을 표현하는, 로봇(10).
  20. 제19 항에 있어서,
    상기 각각의 복셀(212)은 지표면(9), 장애물 또는 기타로 분류되는, 로봇(10).
  21. 제17 항 내지 제20 항 중 어느 한 항에 있어서,
    상기 동작들은 상기 바디-장애물 맵(112)을 생성하기 위해 상기 3차원 공간 점유 맵(200)을 필터링하는 동작을 더 포함하는, 로봇(10).
  22. 제14 항 내지 제21 항 중 어느 한 항에 있어서,
    상기 바디 경로(510)를 생성하는 동작은 상기 바디-장애물 맵(112)에서 지정된 비-바디 영역들에 기반하는, 로봇(10).
  23. 제14 항 내지 제22 항 중 어느 한 항에 있어서,
    상기 스텝 경로(350)를 생성하는 동작은 상기 로봇(10)에 대한 명목 보행의 명목 스텝 패턴 및 스텝 제약들을 조정하는 것에 기반하는, 로봇(10).
  24. 제23 항에 있어서,
    상기 스텝 제약들(342)은,
    지표면(9)과 접촉하는 각각의 레그(12)에 대한 압력 중심 오프셋(center of pressure offset)의 임계 범위 ―상기 압력 중심 오프셋은 각각의 스텝에서 각각의 레그(12)에 대한 로봇(10) 무게 분포의 허용가능한 양을 나타냄―;
    상기 스텝 경로(350)가 레그로 하여금 상기 스텝-장애물 맵(114)의 비-스텝 영역(213)으로 스테핑하게 하는지 여부;
    상기 스텝 경로(350)가 상기 로봇(10)의 바디(11)로 하여금 바디 장애물(520)에 진입하게 하는지 여부;
    상기 스텝 경로(350)가 상기 로봇(10)의 자체 충돌을 야기하는지 여부; 또는
    상기 스텝-장애물 맵(114)의 임의의 비-스텝 영역(213)에 대한 공간 마진
    중 적어도 하나를 포함하는, 로봇(10).
  25. 제24 항에 있어서,
    상기 스텝 제약들(342)은 연성적 제약들 또는 강성적 제약들을 포함하는, 로봇(10).
  26. 제14 항 내지 제25 항 중 어느 한 항에 있어서,
    상기 로봇(10)의 레그들(12)에 대한 스텝 경로(350)를 생성하는 동작은 상기 생성된 바디 경로(510)를 정제하는는 동작을 포함하는, 로봇(10).
KR1020217010325A 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템 KR102492242B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237002441A KR102533690B1 (ko) 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862744954P 2018-10-12 2018-10-12
US62/744,954 2018-10-12
US16/288,205 US11287826B2 (en) 2018-10-12 2019-02-28 Terrain aware step planning system
US16/288,205 2019-02-28
PCT/US2019/046646 WO2020076418A1 (en) 2018-10-12 2019-08-15 Terrain aware step planing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237002441A Division KR102533690B1 (ko) 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템

Publications (2)

Publication Number Publication Date
KR20210068446A true KR20210068446A (ko) 2021-06-09
KR102492242B1 KR102492242B1 (ko) 2023-01-26

Family

ID=70160091

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217010325A KR102492242B1 (ko) 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템
KR1020237002441A KR102533690B1 (ko) 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237002441A KR102533690B1 (ko) 2018-10-12 2019-08-15 지형 인식 스텝 플래닝 시스템

Country Status (6)

Country Link
US (2) US11287826B2 (ko)
EP (1) EP3864483B1 (ko)
JP (1) JP7219812B2 (ko)
KR (2) KR102492242B1 (ko)
CN (1) CN113168184B (ko)
WO (1) WO2020076418A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594377B1 (en) * 2015-05-12 2017-03-14 Google Inc. Auto-height swing adjustment
JP2020154764A (ja) * 2019-03-20 2020-09-24 東芝テック株式会社 情報処理装置及び読取システム
US11599128B2 (en) 2020-04-22 2023-03-07 Boston Dynamics, Inc. Perception and fitting for a stair tracker
US11548151B2 (en) * 2019-04-12 2023-01-10 Boston Dynamics, Inc. Robotically negotiating stairs
US11741336B2 (en) * 2019-12-19 2023-08-29 Google Llc Generating and/or using training instances that include previously captured robot vision data and drivability labels
US12094195B2 (en) 2020-04-20 2024-09-17 Boston Dynamics, Inc. Identifying stairs from footfalls
US12077229B2 (en) * 2020-04-22 2024-09-03 Boston Dynamics, Inc. Stair tracking for modeled and perceived terrain
CN112034847B (zh) * 2020-08-13 2021-04-13 广州仿真机器人有限公司 具有双行走模式的分体式仿真机器人的避障方法和装置
CN112009591A (zh) * 2020-09-07 2020-12-01 德鲁动力科技(海南)有限公司 足式机器人
CN112373596B (zh) * 2020-11-12 2024-04-19 腾讯科技(深圳)有限公司 一种仿生机械足部装置及仿生机械
KR20220072146A (ko) * 2020-11-25 2022-06-02 삼성전자주식회사 전자 장치 및 그 제어 방법
CN112561941B (zh) * 2020-12-07 2024-08-20 深圳银星智能集团股份有限公司 一种悬崖检测方法、装置和机器人
CN112587378B (zh) * 2020-12-11 2022-06-07 中国科学院深圳先进技术研究院 基于视觉的外骨骼机器人足迹规划系统、方法及存储介质
CN112847356B (zh) * 2020-12-31 2022-05-20 国网智能科技股份有限公司 一种变电站足式巡检机器人安全控制方法及系统
CN114911221B (zh) * 2021-02-09 2023-11-28 北京小米机器人技术有限公司 机器人的控制方法、装置及机器人
CN113253724B (zh) * 2021-04-30 2024-05-21 深圳市优必选科技股份有限公司 一种步态规划方法、装置、计算机可读存储介质及机器人
US20220390952A1 (en) * 2021-06-04 2022-12-08 Boston Dynamics, Inc. Detecting negative obstacles
CN113524190B (zh) * 2021-07-26 2022-07-29 深圳市优必选科技股份有限公司 机器人足端碰撞稳定控制方法、装置和足式机器人
CN117940258A (zh) * 2021-09-15 2024-04-26 索尼集团公司 机器人装置和机器人控制方法
CN113960566A (zh) * 2021-10-15 2022-01-21 杭州宇树科技有限公司 一种3d激光雷达及足式机器人
DE102021131129A1 (de) 2021-11-26 2023-06-01 Navvis Gmbh Mobile vorrichtung und verfahren zum erfassen eines objektraums
CN116787450B (zh) * 2023-08-28 2023-10-31 南方电网电力科技股份有限公司 一种多足机器人楼梯行走的控制方法、装置和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011880A (ja) * 2004-06-25 2006-01-12 Sony Corp 環境地図作成方法、環境地図作成装置、及び移動型ロボット装置
KR101121763B1 (ko) * 2003-09-19 2012-03-23 소니 주식회사 환경 인식 장치 및 방법
US9975245B1 (en) * 2015-12-30 2018-05-22 Boston Dynamics, Inc. Methods and systems for planning a body position of a robotic device
US20180173242A1 (en) * 2016-12-21 2018-06-21 X Development Llc Pre-Computation of Kinematically Feasible Roadmaps

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3176701B2 (ja) * 1992-04-15 2001-06-18 本田技研工業株式会社 移動体の現在位置認識処理装置
JP4583098B2 (ja) 2003-08-11 2010-11-17 学校法人早稲田大学 ロボットの運動パターン作成用プログラム、並びに運動パターン作成装置及びそれを用いたロボット。
CN101068662B (zh) * 2004-12-14 2012-03-28 本田技研工业株式会社 腿式移动机器人及其控制方法
JP2006239844A (ja) 2005-03-04 2006-09-14 Sony Corp 障害物回避装置、障害物回避方法及び障害物回避プログラム並びに移動型ロボット装置
JP5067215B2 (ja) 2008-03-17 2012-11-07 トヨタ自動車株式会社 移動ロボット及び環境地図生成方法
JP4998506B2 (ja) 2009-04-22 2012-08-15 トヨタ自動車株式会社 ロボット制御装置、ロボット制御方法、及び脚式ロボット
KR101772977B1 (ko) * 2010-10-07 2017-08-31 삼성전자주식회사 이동 로봇 및 그 지도 작성 방법
JP6015474B2 (ja) 2013-02-05 2016-10-26 トヨタ自動車株式会社 脚式ロボットの制御方法および脚式ロボット
CN103413313B (zh) * 2013-08-19 2016-08-10 国家电网公司 基于电力机器人的双目视觉导航系统及方法
US9594377B1 (en) * 2015-05-12 2017-03-14 Google Inc. Auto-height swing adjustment
US9561592B1 (en) * 2015-05-15 2017-02-07 Google Inc. Ground plane compensation for legged robots
US9586316B1 (en) 2015-09-15 2017-03-07 Google Inc. Determination of robotic step path
US9789607B1 (en) 2015-11-03 2017-10-17 Google Inc. Achieving a target gait in a legged robot based on steering commands
CN108088445A (zh) * 2016-11-22 2018-05-29 广州映博智能科技有限公司 基于八叉树表示的三维栅格地图路径规划系统及方法
CN107167141B (zh) * 2017-06-15 2020-08-14 同济大学 基于双一线激光雷达的机器人自主导航系统
JP7156305B2 (ja) * 2017-11-20 2022-10-19 ソニーグループ株式会社 制御装置、および制御方法、プログラム、並びに移動体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101121763B1 (ko) * 2003-09-19 2012-03-23 소니 주식회사 환경 인식 장치 및 방법
JP2006011880A (ja) * 2004-06-25 2006-01-12 Sony Corp 環境地図作成方法、環境地図作成装置、及び移動型ロボット装置
US9975245B1 (en) * 2015-12-30 2018-05-22 Boston Dynamics, Inc. Methods and systems for planning a body position of a robotic device
US20180173242A1 (en) * 2016-12-21 2018-06-21 X Development Llc Pre-Computation of Kinematically Feasible Roadmaps

Also Published As

Publication number Publication date
EP3864483B1 (en) 2024-04-03
KR102533690B1 (ko) 2023-05-17
US20200117198A1 (en) 2020-04-16
WO2020076418A8 (en) 2021-04-22
KR102492242B1 (ko) 2023-01-26
WO2020076418A1 (en) 2020-04-16
JP7219812B2 (ja) 2023-02-08
JP2022504039A (ja) 2022-01-13
US20220179420A1 (en) 2022-06-09
KR20230019497A (ko) 2023-02-08
CN113168184A (zh) 2021-07-23
CN113168184B (zh) 2024-08-02
US11287826B2 (en) 2022-03-29
EP3864483A1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
KR102492242B1 (ko) 지형 인식 스텝 플래닝 시스템
JP7425854B2 (ja) 制約された移動度マッピング
KR102714127B1 (ko) 로봇으로 계단들을 오르내리기
US10102429B2 (en) Systems and methods for capturing images and annotating the captured images with information
JP7322276B2 (ja) 脚の揺動軌道
US11712802B2 (en) Construction constrained motion primitives from robot maps
US20230143315A1 (en) Perception and fitting for a stair tracker
JP2006205348A (ja) 障害物回避装置、障害物回避方法及び障害物回避プログラム並びに移動型ロボット装置
CN115309164B (zh) 基于生成对抗网络的人机共融移动机器人路径规划方法
WO2021177043A1 (ja) 情報処理装置、情報処理方法、およびプログラム
JP2022181105A (ja) 移動体、制御装置及びそのプログラム
US11927961B2 (en) Constrained robot autonomy language
WO2023021734A1 (ja) 移動装置、および移動装置制御方法、並びにプログラム
US20240316762A1 (en) Environmental feature-specific actions for robot navigation
Castro et al. Learning footstep planning on irregular surfaces with partial placements
Saka Real-time Autonomous Robot Navigation System with Collision Avoidance for NAO Robot
Rosales Obstacle avoidance for mobile robots using lidar sensors

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant