KR20220080080A - 동적 계획 제어기 - Google Patents

동적 계획 제어기 Download PDF

Info

Publication number
KR20220080080A
KR20220080080A KR1020227009973A KR20227009973A KR20220080080A KR 20220080080 A KR20220080080 A KR 20220080080A KR 1020227009973 A KR1020227009973 A KR 1020227009973A KR 20227009973 A KR20227009973 A KR 20227009973A KR 20220080080 A KR20220080080 A KR 20220080080A
Authority
KR
South Korea
Prior art keywords
robot
solution
maneuver
optimization problem
data processing
Prior art date
Application number
KR1020227009973A
Other languages
English (en)
Inventor
에릭 휘트먼
알렉스 크리핀
Original Assignee
보스턴 다이나믹스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 보스턴 다이나믹스, 인크. filed Critical 보스턴 다이나믹스, 인크.
Publication of KR20220080080A publication Critical patent/KR20220080080A/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1615Programme controls characterised by special kind of manipulator, e.g. planar, scara, gantry, cantilever, space, closed chain, passive/active joints and tendon driven manipulators
    • B25J9/162Mobile manipulator, movable base with manipulator arm mounted on it
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/163Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/1653Programme controls characterised by the control loop parameters identification, estimation, stiffness, accuracy, error analysis
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1689Teleoperation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • 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
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/04Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators
    • G05B13/042Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric involving the use of models or simulators in which a parameter or coefficient is automatically adjusted to optimise the performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • 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/40Robotics, robotics mapping to robotics vision
    • G05B2219/40298Manipulator on vehicle, wheels, mobile
    • 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/40Robotics, robotics mapping to robotics vision
    • G05B2219/40444Hierarchical planning, in levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Automation & Control Theory (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Transportation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • General Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Manipulator (AREA)
  • Complex Calculations (AREA)

Abstract

동적 계획 제어기(200)는 기동(210) 및 현재 상태(202)를 수신하고, 기동 및 현재 상태를 비선형 최적화 문제(222)로 변환한다. 비선형 최적화 문제는 미지의 힘 및 미지의 포지션 벡터를 최적화하도록 구성된다. 제1 시간 인스턴스(I1, t0)에서, 제어기는 비선형 최적화 문제를 제1 선형 최적화 문제로 선형화하고, 이차 계획법을 사용하여 제1 선형 최적화 문제에 대한 제1 솔루션(232)을 결정한다. 제2 시간 인스턴스(I2, t1)에서, 제어기는 제1 솔루션에 기초하여 비선형 최적화 문제를 제2 선형 최적화 문제로 선형화하고, 이차 계획법을 사용하여 제1 솔루션에 기초하여 제2 선형 최적화 문제에 대한 제2 솔루션을 결정한다. 제어기는 또한 제2 솔루션에 기초하여 기동 동안의 로봇의 모션을 제어하기 위한 관절 커맨드(204)를 생성한다.

Description

동적 계획 제어기
[0001] 본 개시는 동적 계획 제어기(dynamic planning controller)에 관한 것이다.
[0002] 로봇은 일반적으로 작업들의 수행을 위한 프로그래밍된 가변 모션들을 통해 재료, 부품들, 도구들 또는 특수 디바이스들을 이동시키도록 설계된 재프로그램 가능한 다기능 매니퓰레이터(manipulator)로서 정의된다. 로봇들은 물리적으로 고정된 매니퓰레이터들(예를 들어, 산업용 로봇 팔들), 환경 전체에 걸쳐 이동하는 이동 로봇들(예를 들어, 다리들(legs), 휠들(wheels) 또는 트랙션 기반 메커니즘들(traction based mechanisms)을 사용함), 또는 매니퓰레이터와 이동 로봇의 일부 조합일 수 있다. 로봇들은 예를 들어 제조, 수송, 위험한 환경들, 탐사 및 의료를 포함하는 다양한 산업들에서 이용되고 있다. 이와 같이, 다양한 거동들에 대해 신속하고 효율적인 방식으로 로봇들을 프로그래밍하는 능력은 그러한 산업들에 추가적인 이점들을 제공한다.
[0003] 본 개시의 일 양태는 동적 계획 제어기를 위한 방법을 제공한다. 상기 방법은, 데이터 처리 하드웨어에서, 보행 로봇에 대한 기동 및 보행 로봇의 현재 상태를 수신하는 단계를 포함한다. 기동은 보행 로봇이 수행할 하나 이상의 이동 이벤트들을 포함한다. 상기 방법은 또한, 데이터 처리 하드웨어에 의해, 보행 로봇의 기동 및 현재 상태를 비선형 최적화 문제로 변환하는 단계를 포함한다. 비선형 최적화 문제는 미지의 힘 및 미지의 포지션 벡터를 최적화하도록 구성된다. 제1 시간 인스턴스에서, 상기 방법은, 데이터 처리 하드웨어에 의해, 비선형 최적화 문제를 제1 선형 최적화 문제로 선형화하는 단계, 및 데이터 처리 하드웨어에 의해, 이차 계획법을 사용하여 제1 선형 최적화 문제에 대한 제1 솔루션을 결정하는 단계를 포함한다. 제1 시간 인스턴스에 후속하는 제2 시간 인스턴스에서, 상기 방법은, 데이터 처리 하드웨어에 의해, 제1 시간 인스턴스에서의 제1 솔루션에 기초하여 비선형 최적화 문제를 제2 선형 최적화 문제로 선형화하는 단계, 및 데이터 처리 하드웨어에 의해, 이차 계획법을 사용하여 제1 솔루션에 기초하여 제2 선형 최적화 문제에 대한 제2 솔루션을 결정하는 단계를 포함한다. 상기 방법은, 데이터 처리 하드웨어에 의해, 제2 솔루션에 기초하여 기동 동안의 보행 로봇의 모션을 제어하기 위한 관절 커맨드를 생성하는 단계를 더 포함한다.
[0004] 본 개시의 구현예들은 하기의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현예들에서, 상기 방법은, 데이터 처리 하드웨어에 의해, 제2 솔루션 및 보행 로봇에 대한 정동역학에 기초하여 통합 솔루션을 결정하는 단계, 및 데이터 처리 하드웨어에 의해, 통합 솔루션과 제2 솔루션 사이의 비교가 최적화 임계치를 충족한다고 결정하는 단계를 포함한다. 이러한 구현예에서, 최적화 임계치는 관절 커맨드를 생성하기 위한 각각의 솔루션에 대한 정확도의 정도를 나타낸다. 통합 솔루션과 제2 솔루션(즉, 최적화된 솔루션)의 비교는 선형화의 정확도의 측정을 제공할 수 있다. 즉, 선형화된 문제에 대한 솔루션이 원래의 비선형 문제의 솔루션인지 여부를 제공한다.
[0005] 일부 예들에서, 제2 시간 인스턴스에서, 상기 방법은, 데이터 처리 하드웨어에 의해, 제2 솔루션이 비선형 제약조건을 충족하는 데 실패한다고 결정하는 단계, 및 제2 선형 최적화 문제에 대한 반복 제약조건을 생성하는 단계를 포함한다. 이러한 예에서, 반복 제약조건은 비선형 제약조건을 충족하는 것에 대한 제2 솔루션의 실패에 기초하는 선형 제약조건을 포함한다. 여기서, 제2 시간 인스턴스에서, 상기 방법은 또한, 데이터 처리 하드웨어에 의해, 이차 계획법을 사용하여 제 2 선형 최적화 문제에 대한 제 2 솔루션을 업데이트하는 단계를 포함하며, 이차 계획법은 반복 제약조건을 포함한다.
[0006] 일부 구성들에서, 미지의 힘은 보행 로봇이 기동을 수행할 때 보행 로봇의 발에서의 힘에 대응한다. 미지의 포지션 벡터는 보행 로봇이 기동을 수행할 때 보행 로봇의 발에 대한 보행 로봇의 몸체의 위치에 대응할 수 있다. 제1 솔루션 및 제2 솔루션 각각은 보행 로봇의 하나 이상의 다리들의 표면에 대한 접촉력들, 보행 로봇의 하나 이상의 다리들에 대한 착지 위치들, 보행 로봇의 하나 이상의 다리들에 대한 착지 시간들, 또는 보행 로봇의 하나 이상의 다리들에 대한 리프트오프 시간들을 포함할 수 있다.
[0007] 일부 구현예들에서, 상기 방법은, 데이터 처리 하드웨어에 의해, 관절 커맨드에 기초하여 보행 로봇의 적어도 하나의 스탠스 다리의 관절들에 명령하는 단계를 포함하며, 관절 커맨드는 적어도 하나의 스탠스 다리의 관절들에 대한 관절 토크들을 포함한다. 여기서, 상기 방법은, 데이터 처리 하드웨어에 의해, 적어도 하나의 스탠스 다리에 대응하는 제2 솔루션의 접촉력들이 적어도 하나의 스탠스 다리에 대한 토크 제한 제약조건들 및 적어도 하나의 스탠스 다리에 대한 마찰 제약조건들을 충족한다고 결정함으로써, 적어도 하나의 스탠스 다리의 관절들에 대한 관절 토크들을 생성하는 단계를 포함할 수 있다.
[0008] 일부 예들에서, 보행 로봇은 4족 보행 로봇에 대응한다. 기동을 수신하는 단계는 데이터 처리 하드웨어와 통신하는 사용자 디바이스로부터 기동을 수신하는 단계를 포함할 수 있으며, 기동은 사용자 디바이스 상에서 실행되는 사용자 인터페이스에서 사용자 디바이스의 사용자에 의해 규정될 수 있다.
[0009] 본 개시의 다른 양태는 로봇을 제공한다. 로봇은 몸체, 몸체에 결합된 2 개 이상의 다리들, 및 몸체 및 2 개 이상의 다리들과 통신하는 제어 시스템을 포함한다. 제어 시스템은 데이터 처리 하드웨어 및 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는, 데이터 처리 하드웨어 상에서 실행될 때, 데이터 처리 하드웨어가 동작들을 수행하게 하는 명령들을 저장한다. 상기 동작들은 로봇에 대한 기동 및 로봇의 현재 상태를 수신하는 동작을 포함하며, 기동은 로봇이 수행할 하나 이상의 이동 이벤트들을 포함한다. 상기 동작들은 또한 로봇의 기동 및 현재 상태를 비선형 최적화 문제로 변환하는 동작을 포함한다. 비선형 최적화 문제는 미지의 힘 및 미지의 포지션 벡터를 최적화하도록 구성된다. 제1 시간 인스턴스에서, 상기 동작들은 비선형 최적화 문제를 제1 선형 최적화 문제로 선형화하는 동작, 및 이차 계획법을 사용하여 제1 선형 최적화 문제에 대한 제1 솔루션을 결정하는 동작을 포함한다. 제1 시간 인스턴스에 후속하는 제2 시간 인스턴스에서, 상기 동작들은 제1 시간 인스턴스에서의 제1 솔루션에 기초하여 비선형 최적화 문제를 제2 선형 최적화 문제로 선형화하는 동작을 포함한다. 제1 시간 인스턴스에 후속하는 제2 시간 인스턴스에서, 상기 동작들은 또한 이차 계획법을 사용하여 제1 솔루션에 기초하여 제2 선형 최적화 문제에 대한 제2 솔루션을 결정하는 동작, 및 제2 솔루션에 기초하여 기동 동안의 보행 로봇의 모션을 제어하기 위한 관절 커맨드를 생성하는 동작을 포함한다.
[0010] 이러한 양태는 하기의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구성들에서, 상기 동작들은 제2 솔루션 및 로봇에 대한 정동역학에 기초하여 통합 솔루션을 결정하는 동작, 및 통합 솔루션과 제2 솔루션 사이의 비교가 최적화 임계치를 충족한다고 결정하는 동작을 포함한다. 이러한 구성에서, 최적화 임계치는 관절 커맨드를 생성하기 위한 각각의 솔루션에 대한 정확도의 정도를 나타낸다.
[0011] 일부 구현예들에서, 제2 시간 인스턴스에서, 상기 동작들은 제2 솔루션이 비선형 제약조건을 충족하는 데 실패한다고 결정하는 동작, 및 제2 선형 최적화 문제에 대한 반복 제약조건을 생성하는 동작을 포함한다. 여기서, 반복 제약조건은 비선형 제약조건을 충족하는 것에 대한 제2 솔루션의 실패에 기초하는 선형 제약조건을 포함한다. 이러한 구현예에서, 제2 시간 인스턴스에서, 상기 동작들은 또한 이차 계획법을 사용하여 제 2 선형 최적화 문제에 대한 제 2 솔루션을 업데이트하는 동작을 포함하며, 이차 계획법은 반복 제약조건을 포함한다.
[0012] 일부 예들에서, 미지의 힘은 로봇이 기동을 수행할 때 로봇의 발에서의 힘에 대응한다. 미지의 포지션 벡터는 로봇이 기동을 수행할 때 로봇의 발에 대한 로봇의 몸체의 위치에 대응할 수 있다. 제1 솔루션 및 제2 솔루션 각각은 보행 로봇의 하나 이상의 다리들의 표면에 대한 접촉력들, 보행 로봇의 하나 이상의 다리들에 대한 착지 위치들, 보행 로봇의 하나 이상의 다리들에 대한 착지 시간들, 또는 보행 로봇의 하나 이상의 다리들에 대한 리프트오프 시간들을 포함할 수 있다.
[0013] 일부 구성들에서, 상기 동작들은 관절 커맨드에 기초하여 로봇의 적어도 하나의 스탠스 다리의 관절들에 명령하는 동작을 포함하며, 관절 커맨드는 적어도 하나의 스탠스 다리의 관절들에 대한 관절 토크들을 포함한다. 여기서, 상기 동작들은, 적어도 하나의 스탠스 다리에 대응하는 제2 솔루션의 접촉력들이 적어도 하나의 스탠스 다리에 대한 토크 제한 제약조건들 및 적어도 하나의 스탠스 다리에 대한 마찰 제약조건들을 충족한다고 결정함으로써, 적어도 하나의 스탠스 다리의 관절들에 대한 관절 토크들을 생성하는 동작을 포함할 수 있다.
[0014] 일부 구현예들에서, 로봇은 4족 보행 로봇에 대응한다. 로봇은, 기동을 수신할 때, 데이터 처리 하드웨어와 통신하는 사용자 디바이스로부터 기동을 수신하는 것을 포함할 수 있으며, 기동은 사용자 디바이스 상에서 실행되는 사용자 인터페이스에서 사용자 디바이스의 사용자에 의해 규정될 수 있다.
[0015] 본 개시의 하나 이상의 구현예들의 세부사항들은 첨부 도면들 및 하기의 설명에 기재되어 있다. 다른 양태들, 특징들 및 이점들은 이 설명 및 도면들, 그리고 청구범위로부터 명백할 것이다.
[0016] 도 1a는 로봇 환경 내의 예시적인 로봇의 사시도이다.
[0017] 도 1b는 도 1a의 로봇의 예시적인 시스템의 개략도이다.
[0018] 도 2a 내지 도 2g는 도 1의 로봇을 위한 예시적인 기동 제어기들의 개략도들이다.
[0019] 도 3은 로봇이 기동 제어기를 사용하여 기동을 수행하기 위한 동작들의 예시적인 배열이다.
[0020] 도 4는 본원에 설명된 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0021] 다양한 도면들에서 유사한 참조 부호들은 유사한 요소들을 나타낸다.
[0022] 로봇을 소유하거나 제어하는 엔티티(entity)는 반복 가능한 이동 루틴과 같은 로봇에 대한 이동을 사전 프로그래밍하기를 원할 수 있다. 불행하게도, 사전 프로그래밍된 이동들은 원하는 이동들을 생성하기 위해 하드코딩(hardcoding)을 필요로 할 수 있다. 하드코딩은 일반적으로 시간 소모적이고, 제한된 수의 사람들(예를 들어, 코더들(coders))만이 로봇에 대한 이동들을 코딩 가능할 수 있도록 하는 장애들(bottlenecks)을 야기할 수 있다. 또한, 코딩된 이동들에 대한 수정들 또는 코딩된 이동들의 디버깅(debugging)은 이동 루틴을 구현하기 위한 너무 긴 피드백 루프들을 야기할 수 있다. 달리 말하면, 로봇들은 로봇 거동을 신속하게 작성하는 수단이 종종 부족하다.
[0023] 사전 프로그래밍된 이동의 다른 잠재적인 이슈(issue)는 로봇 주위의 환경 및/또는 로봇 자체의 물리학을 고려할 수도 있고 고려하지 않을 수도 있다는 것이다. 다시 말해서, 사전 프로그래밍된 이동들을 코딩하는 사람은 사전 프로그래밍된 이동들 동안에 로봇에 대한 다른 제약조건들이 있을 수 있다는 것을 인식하지 못할 수 있다. 이러한 다른 제약조건들의 고려 없이는, 사전 프로그래밍된 루틴은 실패하거나 실행 동안에 로봇 또는 로봇 주위의 환경에 손상을 줄 수 있다. 예를 들어, 사전 프로그래밍된 이동 루틴의 코더는 로봇이 루틴 동안에 추가적인 25 파운드의 하중을 운반할 것이라는 것, 또는 루틴이 정적 또는 동적 장애물들을 갖는 동적 환경에서 일어날 수 있다는 것을 인식하지 못할 수 있다. 이것은 성공적인 이동 루틴을 달성하기 위해 이동 루틴 동안에 로봇이 경험하는 모든 또는 대부분의 조건들을 고려하는 책임을 엔티티 또는 코더에게 명확하게 부과한다.
[0024] 이러한 이슈들 중 일부를 극복하기 위해, 로봇(100)은 상당한 하드코딩 없이 로봇(100)에 대한 이동들을 구축할 수 있는 기동 제어기(200)를 포함한다. 다시 말해서, 기동 제어기(200)는 최소한의 사용자 입력으로 동적 로봇 거동을 생성하기 위한 유연한 프레임워크(framework)를 제공하는 제어기이다. 이러한 유연한 프레임워크를 통해, 기동 제어기(200)는 사용자(예를 들어, 로봇 조작자 또는 로봇 소유자)가 프로그래밍 및/또는 엔지니어링 노동의 감소된 비용으로 새로운 로봇 거동들(예를 들어, 이동 루틴들 또는 이동 패턴들)을 생성할 수 있게 하는 일종의 신속한 프로토타이핑 파이프라인(prototyping pipeline)으로서 기능한다. 여기서, 기동 제어기(200)는 사용자-판독 가능/기록 가능 입력들을 수신하고, 이러한 입력들을 모션 커맨드들(commands)로 변환한다.
[0025] 일부 예들에서, 사용자(10)는 사용자 디바이스(20) 상의 기동 제어기(200)를 위한 기동(210)을 생성한다. 여기서, 사용자 디바이스(20)는 데이터 처리 하드웨어(22) 및 데이터 처리 하드웨어(22)와 통신하는 메모리 하드웨어(24)와 같은 컴퓨팅 리소스들(computing resources)(22, 24)을 사용하여 사용자(10)가 기동(210)을 규정할 수 있게 하는 인터페이스(interface)를 실행한다. 사용자 디바이스(20)에 대한 일부 예들은 모바일 디바이스(예를 들어, 휴대폰, 태블릿, 랩탑 등), 개인용 컴퓨터(PC), 워크스테이션, 단말기(terminal), 또는 기동(210)을 생성하는 컴퓨팅 능력들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함한다. 사용자 디바이스(20)에서 액세스 가능한 인터페이스는 웹-기반(예를 들어, 웹 브라우저에서 시작되는 웹-기반 애플리케이션)이거나, 사용자 디바이스(20)에 로컬이거나(예를 들어, 사용자 디바이스(20)의 컴퓨팅 리소스들(22, 24) 상에 설치되고 그리고/또는 실행하도록 구성됨), 또는 둘 모두의 일부 조합일 수 있다. 일부 구현예들에서, 사용자 디바이스(20)는 유선 또는 무선 연결을 사용하여 로봇(100)에 기동(210)을 전달하기 위해 인터페이스를 사용한다. 예를 들어, 인터페이스는 네트워크(예를 들어, 도 1b에 도시된 네트워크(150))를 통해 로봇(100)에 기동(210)을 전달한다.
[0026] 도 1a를 참조하면, 로봇(100)은 몸체(110)를 포함하며, 몸체(110)는 몸체(110)에 결합되고 로봇(100)이 환경(30)에 대해 이동할 수 있게 하는 로코모션-기반 구조물들(locomotion-based structures)을 갖는다. 일부 예들에서, 각각의 다리(120)는 하나 이상의 관절들(J)이 다리(120)의 부재들(122)이 이동할 수 있게 하도록 하는 관절연결형 구조물이다. 예를 들어, 각각의 다리(120)는 다리(120)의 상부 부재(122, 122U)를 몸체(110)에 결합하는 고관절(hip joint)(JH), 및 다리(120)의 상부 부재(122U)를 다리(120)의 하부 부재(122L)에 결합하는 무릎 관절(knee joint)(JK)을 포함한다. 도 1a는 4 개의 다리들(120a 내지 120d)을 갖는 4족 보행 로봇(quadruped robot)을 도시하지만, 로봇(100)은 환경(30) 내의 지형을 횡단하기 위한 수단을 제공하는 임의의 수의 다리들 또는 로코모션-기반 구조물들(예를 들어, 2 개의 다리들을 갖는 2족 보행 또는 인간형 로봇)을 포함할 수 있다.
[0027] 지형을 횡단하기 위해, 각각의 다리(120)는 지형의 표면(즉, 트랙션 표면)과 접촉하는 원위 단부(124)를 갖는다. 다시 말해서, 다리(120)의 원위 단부(124)는 로봇(100)의 이동 동안에 피봇하거나, 자리잡거나 또는 일반적으로 트랙션을 제공하기 위해 로봇(100)에 의해 사용되는 다리(120)의 단부이다. 예를 들어, 다리(120)의 원위 단부(124)는 로봇(100)의 발에 대응한다. 일부 예들에서, 도시되지는 않았지만, 다리(120)의 원위 단부(124)는 원위 단부(124)가 다리(120)의 하부 부재(122L)에 대해 관절연결 가능하도록 하는 발목 관절(ankle joint)(JA)을 포함한다.
[0028] 일부 예들에서, 로봇(100)은 로봇 매니퓰레이터의 기능을 하는 팔(126)을 포함한다. 팔(126)은 환경(30)의 요소들(예를 들어, 환경(30) 내의 물체들)과 결합하기 위해 다수의 자유도로 이동하도록 구성될 수 있다. 일부 예들에서, 팔(126)은 하나 이상의 부재들(128)을 포함하며, 부재들(128)은 팔(126)이 관절(들)(J)을 중심으로 피봇하거나 회전할 수 있도록 관절들(J)에 의해 결합된다. 예를 들어, 하나 초과의 부재(128)에 의해, 팔(126)은 신장하거나 수축하도록 구성될 수 있다. 일 예를 예시하기 위해, 도 1a는 하부 부재(128L), 상부 부재(128U) 및 손 부재(hand member)(128H)에 대응하는 3 개의 부재(128)를 갖는 팔(126)을 도시한다. 여기서, 하부 부재(128L)는 몸체(110)에 인접하게(예를 들어, 팔(126)이 로봇(100)의 몸체(110)에 연결되는 곳에) 위치된 제1 팔 관절(JA1)을 중심으로 회전 또는 피봇할 수 있다. 하부 부재(128L)는 제2 팔 관절(JA2)에서 상부 부재(128U)에 결합되고, 상부 부재(128U)는 제3 팔 관절(JA3)에서 손 부재(128H)에 결합된다. 일부 예들에서, 손 부재(128H)는 상이한 유형들의 파지를 가능하게 하는 추가 부재들을 포함한다. 이러한 추가 부재들은 단순한 2 개 부재 클로형(claw-like) 손 부재(128H)로부터 사람 손의 손가락들을 시뮬레이션하는 보다 복잡한 손 부재(128H)에 이르기까지 다양할 수 있다. 일부 구현예들에서, 팔(126)은 로봇(100)의 몸체(110) 상의 소켓(socket)에서 로봇(100)에 연결된다. 일부 구성들에서 소켓은 팔(126)이 작동에 필요한지 여부에 따라 팔(126)이 로봇(100)에 부착되거나 분리될 수 있도록 커넥터로서 구성된다.
[0029] 로봇(100)은 중력 방향을 따른 수직 중력 축(예를 들어, Z-방향 축(AZ)으로 도시됨)과, 그 질량들에 따라 가중되는 로봇(100)의 모든 부분들의 평균 포지션에 대응하는 포지션(즉, 로봇(100)의 분포된 질량의 가중된 상대 포지션의 합계가 0(zero)이 되는 포인트)인 질량 중심(CM)을 갖는다. 로봇(100)은 로봇(100)에 의해 취해지는 특정 자세(attitude) 또는 스탠스(stance)를 규정하기 위해 수직 중력 축(AZ)(즉, 중력에 대한 고정 기준 프레임(fixed reference frame))에 대한 CM에 기초하는 포즈(pose)(P)를 더 갖는다. 로봇(100)의 자세는 공간에서의 로봇(100)의 배향 또는 각도 포지션에 의해 규정될 수 있다. 몸체(110)에 대한 다리(120)의 이동들은 로봇(100)의 포즈(P)(즉, 로봇의 CM 포지션과 로봇(100)의 자세 또는 배향의 조합)를 변경한다. 여기서, 높이는 일반적으로 z-방향을 따른 거리를 지칭한다. 로봇(100)의 시상면(sagittal plane)은 y-방향 축(AY) 및 z-방향 축(AZ)의 방향들로 연장되는 Y-Z 평면에 대응한다. 다시 말해서, 시상면은 로봇(100)을 좌측 및 우측으로 이등분한다. 일반적으로 시상면에 수직인 지평면(횡방향 평면으로도 지칭됨)은 x-방향 축(AX) 및 y-방향 축(AY)의 방향들로 연장됨으로써 X-Y 평면에 걸쳐 있다. 지평면은 로봇(100)의 다리들(120)의 원위 단부들(124)이 트랙션을 생성하여 로봇(100)이 환경(30)에 대해 이동하는 것을 도울 수 있는 지면(12)을 지칭한다. 로봇(100)의 다른 해부학적 평면은 로봇(100)의 몸체(110)를 가로질러(예를 들어, 제1 다리(120a)를 갖는 로봇(100)의 좌측으로부터 제2 다리(120b)를 갖는 로봇(100)의 우측까지) 연장되는 관상면(frontal plane)이다. 관상면은 x-방향 축(AX) 및 z-방향 축(AZ)의 방향들로 연장됨으로써 X-Z 평면에 걸쳐 있다.
[0030] 보행 로봇이 환경(30)에 대해 이동하는 경우, 로봇(100)의 각 다리(120)는 지면(12)과 접촉하거나 지면(12)과 접촉하지 않을 수 있다. 다리(120)가 지면(12)과 접촉하는 경우, 이 다리(120)는 스탠스 다리(stance leg)(120ST)로 지칭된다. 다리(120)가 지면(12)과 접촉하지 않는 경우, 이 다리(120)는 스윙 다리(swing leg)(120SW)로 지칭된다. 다리(120)가 지면(12)으로부터 리프트오프(lift-off; LO)할 때, 다리(120)는 스탠스 다리(120ST)로부터 스윙 다리(120SW)로 전환된다. 따라서, 스윙 다리가 지면(12)과 접촉하지 않은 후에 지면(12)에 대해 착지(touch down; TD)할 때, 스윙 다리(120SW)는 또한 스탠스 다리(120ST)로 전환될 수 있다. 여기서, 다리(120)가 스윙 다리(120SW)로서 기능하고 있는 동안, 로봇(100)의 다른 다리(120)는 (예를 들어, 로봇(100)의 균형을 유지하기 위해) 스탠스 다리(120ST)로서 기능하고 있을 수 있다.
[0031] 환경(30)에 대해 기동하기 위해, 로봇(100)은 하나 이상의 센서들(132, 132a 내지 132n)(예를 들어, 제1 센서(132, 132a) 및 제2 센서(132, 132b)로서 도시됨)을 갖는 센서 시스템(130)을 포함한다. 센서들(132)은 비전/이미지 센서들, 관성 센서들(예를 들어, 관성 측정 유닛(inertial measurement unit; IMU)), 힘 센서들, 및/또는 운동학적 센서들을 포함할 수 있다. 센서들(132)의 일부 예들은 스테레오 카메라와 같은 카메라, 스캐닝 광-검출 및 거리 측정(light-detection and ranging; LIDAR) 센서, 또는 스캐닝 레이저-검출 및 거리 측정(laser-detection and ranging; LADAR) 센서를 포함한다. 일부 예들에서, 센서(132)는 센서(132)에 대응하는 감지 범위 또는 영역을 한정하는 대응하는 시야(들)(FV)를 갖는다. 예를 들어, 도 1a는 로봇(100)에 대한 시야(FV)를 도시한다. 각각의 센서(132)는, 예를 들어 센서(132)가 하나 이상의 축(예를 들어, 지면과 관련하여 x-축, y-축, 또는 z-축)을 중심으로 시야(FV)를 변경할 수 있도록 피봇 가능 및/또는 회전 가능할 수 있다.
[0032] 센서(132)로 시야(FV)를 조사할 때, 센서 시스템(130)은 시야(FV)에 대응하는 센서 데이터(134)(이미지 데이터로도 지칭됨)를 생성한다. 일부 예들에서, 센서 데이터(134)는 3차원 체적형 이미지 센서(132)에 의해 생성된 3차원 체적형 포인트 클라우드(three-dimensional volumetric point cloud)에 대응하는 이미지 데이터이다. 추가적으로 또는 대안적으로, 로봇(100)이 환경(30)에 대해 기동할 때, 센서 시스템(130)은 관성 측정 데이터(예를 들어, IMU에 의해 측정됨)를 포함하는 로봇(100)에 대한 포즈 데이터를 수집한다. 일부 예들에서, 포즈 데이터는 로봇(100)에 대한 운동학적 데이터 및/또는 배향 데이터, 예를 들어 로봇(100)의 다리(120)의 관절들(J) 또는 다른 부분들에 대한 운동학적 데이터 및/또는 배향 데이터를 포함한다. 센서 데이터(134)에 의해, 로봇(100)의 다양한 시스템들은 센서 데이터(134)를 사용하여 로봇(100)의 현재 상태(예를 들어, 로봇(100)의 운동학) 및/또는 로봇(100) 주위의 환경(30)의 현재 상태를 한정할 수 있다.
[0033] 일부 구현예들에서, 센서 시스템(130)은 관절(J)에 결합된 센서(들)(132)를 포함한다. 일부 예들에서, 이러한 센서들(132)은 로봇(100)의 관절(J)을 작동시키는 모터(M)에 결합된다(예를 들어, 센서들(132, 132a, 132b)). 여기서, 이러한 센서들(132)은 관절-기반 센서 데이터(134)의 형태로 관절 역학을 생성한다. 관절-기반 센서 데이터(134)로서 수집된 관절 역학은 관절 각도들(예를 들어, 하부 부재(122L)에 대한 상부 부재(122U)), 관절 속도(예를 들어, 관절 각속도 또는 관절 각가속도), 및/또는 관절(J)에서 받는 힘들(또한 관절력들(joint forces)로도 지칭됨)을 포함할 수 있다. 여기서, 하나 이상의 센서들(132)에 의해 생성된 관절-기반 센서 데이터(134)는 원시 센서 데이터, 상이한 유형들의 관절 역학(134JD)을 형성하도록 추가로 처리되는 데이터, 또는 이들 둘의 일부 조합일 수 있다. 예를 들어, 센서(132)는 관절 포지션(또는 관절(J)에 결합된 부재(들)(122)의 포지션)을 측정하고, 로봇(100)의 시스템들은 포지션 데이터로부터 속도 및/또는 가속도를 도출하도록 추가 처리를 수행한다. 다른 예들에서, 센서(132)는 속도 및/또는 가속도를 직접 측정하도록 구성된다.
[0034] 센서 시스템(130)이 센서 데이터(134)를 수집할 때, 컴퓨팅 시스템(140)은 센서 데이터(134)를 로봇(100)의 다양한 시스템들(예를 들어, 제어 시스템(170) 및/또는 기동 시스템(300))에 저장, 처리 및/또는 통신하도록 구성된다. 센서 데이터(134)와 관련된 컴퓨팅 작업들을 수행하기 위해, 로봇(100)의 컴퓨팅 시스템(140)은 데이터 처리 하드웨어(142) 및 메모리 하드웨어(144)를 포함한다. 데이터 처리 하드웨어(142)는 로봇(100)에 대한 활동들(예를 들어, 이동 및/또는 이동 기반 활동들)과 관련된 컴퓨팅 작업들을 수행하기 위해 메모리 하드웨어(144)에 저장된 명령들을 실행하도록 구성된다. 일반적으로 말하면, 컴퓨팅 시스템(140)은 데이터 처리 하드웨어(142) 및/또는 메모리 하드웨어(144)의 하나 이상의 위치들을 지칭한다.
[0035] 일부 예들에서, 컴퓨팅 시스템(140)은 로봇(100) 상에 위치된 로컬 시스템이다. 로봇(100) 상에 위치되는 경우, 컴퓨팅 시스템(140)은 중앙 집중형(즉, 로봇(100) 상의 단일 위치/영역, 예를 들어 로봇(100)의 몸체(110)에 있음), 분산형(즉, 로봇(100) 주위의 다양한 위치들에 위치됨), 또는 이들 둘의 하이브리드 조합(예를 들어, 다수의 중앙 집중형 하드웨어 및 소수의 분산형 하드웨어의 경우)일 수 있다. 일부 차이점들을 예시하기 위해, 분산형 컴퓨팅 시스템(140)은 활동 위치(예를 들어, 다리(120)의 관절을 이동시키는 모터)에서 처리가 일어나게 할 수 있는 반면, 중앙 집중형 컴퓨팅 시스템(140)은 로봇(100) 상의 다양한 포지션들에 위치된 시스템들과 통신하는(예를 들어, 다리(120)의 관절을 이동시키는 모터와 통신하는) 중앙 처리 허브를 허용할 수 있다.
[0036] 추가적으로 또는 대안적으로, 컴퓨팅 시스템(140)은 로봇(100)으로부터 원격으로 위치되는 컴퓨팅 리소스들을 포함한다. 예를 들어, 컴퓨팅 시스템(140)은 네트워크(150)를 통해 원격 시스템(160)(예를 들어, 원격 서버 또는 클라우드-기반 환경)과 통신한다. 컴퓨팅 시스템(140)과 매우 유사하게, 원격 시스템(160)은 원격 데이터 처리 하드웨어(162) 및 원격 메모리 하드웨어(164)와 같은 원격 컴퓨팅 리소스들을 포함한다. 여기서, 센서 데이터(134) 또는 다른 처리된 데이터(예를 들어, 컴퓨팅 시스템(140)에 의해 로컬로 처리되는 데이터)는 원격 시스템(160)에 저장될 수 있고, 컴퓨팅 시스템(140)에 액세스 가능할 수 있다. 일부 예들에서, 컴퓨팅 시스템(140)은 컴퓨팅 시스템(140)의 리소스들이 원격 시스템(160)의 리소스들에 상주할 수 있도록 컴퓨팅 리소스들(142, 144)의 확장들로서 원격 리소스들(162, 164)을 이용하도록 구성된다.
[0037] 일부 구현예들에서, 도 1a 및 도 1b에 도시된 바와 같이, 로봇(100)은 제어 시스템(170)을 포함한다. 제어 시스템(170)은 적어도 하나의 센서 시스템(130)과 같은 로봇(100)의 시스템과 통신하도록 구성될 수 있다. 제어 시스템(170)은 하드웨어(140)를 사용하여 동작들 및 다른 기능들을 수행할 수 있다. 제어 시스템(170)은 로봇(100)을 제어하도록 구성된 적어도 하나의 제어기(172)를 포함한다. 예를 들어, 제어기(172)는 로봇(100)의 시스템들(예를 들어, 센서 시스템(130) 및/또는 제어 시스템(170))로부터의 입력 또는 피드백에 기초하여 환경(30)에 대해 횡단하도록 로봇(100)의 이동을 제어한다. 일부 구현예들에서, 제어기(172)는 로봇(100)의 포즈들 및/또는 거동들 사이의 이동을 제어한다.
[0038] 일부 예들에서, 제어기(172)는 로봇(100)의 하나 이상의 관절들(J)에 대한 이동을 제어함으로써 로봇(100)을 제어한다. 일부 구성들에서, 제어기(172)는 적어도 하나의 관절(J), 또는 관절(J)을 작동하거나 관절(J)에 결합되는 모터(M)를 제어하는 프로그래밍 로직(programming logic)을 갖는 소프트웨어이다. 예를 들어, 제어기(172)는 관절(J)에 인가되는 힘의 양(예를 들어, 관절(J)에서의 토크)을 제어한다. 프로그램 가능 제어기들(172)로서, 제어기(172)가 제어하는 관절들(J)의 수는 특정 제어 목적을 위해 스케일링 가능 및/또는 맞춤화 가능할 수 있다. 제어기(172)는 로봇(100)의 단일 관절(J)을 제어하거나(예를 들어, 단일 관절(J)에서의 토크를 제어함), 다수의 관절들(J)을 제어할 수 있다. 다수의 관절들(J)을 제어하는 경우, 제어부(172)는 제어부(172)에 의해 제어되는 각각의 관절(J)에 동일하거나 상이한 토크들을 인가할 수 있다. 다수의 관절들(J)을 제어함으로써, 제어기(172)는 로봇(100)의 보다 큰 구조물(예를 들어, 몸체(110), 하나 이상의 다리들(120), 팔(126))에 대한 이동을 조화시킬 수 있다. 다시 말해서, 일부 기동들(210)의 경우, 제어기(172)는, 예를 들어 2 개의 다리들(120a, 120b), 4 개의 다리들(120a 내지 120d) 또는 팔(126)과 조합된 2 개의 다리들(120a, 120b)과 같은 로봇(100)의 다수의 부분들의 이동을 제어하도록 구성될 수 있다.
[0039] 일부 구현예들에서, 제어 시스템(170)의 하나 이상의 제어기들(172)은 기동 제어기(200)를 포함한다. 기동 제어기(200)는 제어 시스템(170)의 다른 제어기들(172)과 같이 기능할 수 있지만, 추가적으로 기동들(210)로 지칭되는 입력들에 대한 제어를 제공할 수 있다. 다시 말해서, 기동 제어기(200)는 기동(210)을 동적으로 계획할 수 있는 제어기(172)이다. 기동(210)은 하나 이상의 이동 이벤트들(212)을 희박하게 규정하는 제어 사양이다. 일부 예들에서, 기동(210)은 사용자(10)가 기동(210)을 규정하는 제어 사양을 (예를 들어, 일부 기본 코딩으로) 기록하도록 사용자-대상(user-facing)이다. 제어 사양이 어느 정도의 코딩을 포함할 수 있지만, 기동(210)은 일반적으로 최소 사양을 갖도록 설계된다. 최소 사양을 가짐으로써, 사용자(10)는 로봇(100)에 대한 새로운 거동들을 신속하게 및/또는 효율적으로 생성하고, 그리고/또는 오래된 거동들을 수정 가능할 수 있다. 사양의 일부로서, 사용자(10)는 사용자(10)가 하나 이상의 이동 이벤트들(212, 212a 내지 212n)에 기초하여 로봇(100)이 수행하기를 원하는 거동을 기술한다. 예를 들어, 보행 로봇(100)의 경우, 종종 기동(210)은 다리 모션에 주로 영향을 미친다. 여기서, 보행 로봇(100)에 대한 일부 이동 이벤트들(212)은 발(124)의 착지 및/또는 발(124)의 리프트오프를 포함한다. 일부 예들에서, 이동 이벤트들(212)은 사용자(10)가 거동에서 로봇(100)이 실행하기를 원하는 것을 시간순으로 기술한다. 다시 말해서, 이동 이벤트(212)는 이동(또는 이동의 결여) 및 이동에 대한 지속시간을 포함한다. 이와 관련하여, 이동 이벤트들(212)은 로봇(100)이 어떠한 이동도 수행하고 있지 않는 이동 일시정지들(pauses)을 포함할 수 있다. 예를 들어, 사용자(10)가 로봇(100)이 기동(210)으로서 물구나무서기(handstand)를 수행하기를 원하는 경우, 물구나무서기 기동(210)의 이동 이벤트들(212)은 로봇(100)의 2 개의 앞다리들(120)에 대한 착지에 이은 로봇(100)의 2 개의 뒷다리들(120)에 대한 리프트오프 및 (예를 들어, 물구나무서기 포지션을 유지하기 위한) 일부 지정된 지속시간의 일시정지/대기 기간으로의 종료를 기술할 수 있다. 기동 제어기(200)가 기동(210)을 해석할 때, 기동 제어기(200)는 기동(210) 자체가 실행 동안 동적으로 변경되지 않도록 기동(210)의 시작부터 기동(210)의 종료까지 시간순으로 기동(210)을 분석하도록 구성된다.
[0040] 일부 구현예들에서, 기동(210)은 무상태성(stateless)이다. 다시 말해서, 기동(210)은 로봇(100)이 현재 실행하고 있는 것이 아니라, 사용자(10)가 거동에 대해 로봇(100)이 실행하기를 원하는 것에만 관심을 갖는다. 이러한 무상태성 접근법은 또한, 사용자(10)가 로봇(100)의 잠재적으로 더 복잡한 현재 역학 및/또는 로봇(100) 주위의 환경(30)의 역학에 대해 걱정할 필요가 없기 때문에, 사용자(10)에 의한 기동 생성을 단순화할 수 있다.
[0041] 일부 예들에서, 기동 제어기(200)는 하나 초과의 기동들(210)을 수신한다. 예를 들어, 사용자(10)는 하나 초과의 기동(210)을 생성하고, 로봇(100)이 2 개 이상의 기동들(210)을 동시에 수행하도록 요청한다. 일부 구현예들에서, 로봇(100)은 사용자(10)가 로봇(100)이 수행할 것을 선택할 수 있는 기동들(210)의 사전 프로그래밍되거나 하드코딩된 리스트를 포함하는 인터페이스와 통신한다. 여기서, 인터페이스가 한정된 수의 기동들(210)을 포함하지만, 인터페이스는 사용자(10)가 보다 큰 맞춤화를 위해 다양한 방식들로 기동들(210)을 조합하게 할 수 있다. 이러한 유형의 제어된 맞춤화는 코딩 능력들이 거의 또는 전혀 없는 사용자들(10)에게 바람직하거나, 로봇 소유자가 로봇(100)이 수신하는 유형들의 기동들(210)을 제어하기를 원하는 경우에 바람직할 수 있다.
[0042] 일부 기동들(210)은 로봇(100)의 일부분들(예를 들어, 로봇(100)의 관절들(J))을 수동적으로 제어할 수 있는 반면, 다른 기동들(210)은 로봇(100)의 일부분들(예를 들어, 로봇(100)의 관절들(J))을 능동적으로 제어할 수 있다. 달리 말하면, 수동적 기동(210)은 일차 거동을 수정하는 거동을 지칭한다. 관절 제어와 관련하여, 2 개의 기동들(210)은 유사한 관절들(J)에 영향을 미칠 수 있다. 예를 들어, 실제로 말하면, 몸체(110)의 이동은 로봇(100)의 적어도 하나의 다리(120)의 적어도 하나의 관절(J)을 변경함으로써 일어난다. 그렇지만, 다리(120)의 관절들(J)이 이미 기동(210)에 할당된 경우(예를 들어, 발자국 기동들(210) 또는 다리 기동들의 경우), 몸체(110)의 이동은 관절 제어 간섭을 유발할 수 있다. 다시 말해서, 몸체 기동(210)은 예를 들어 다리 기동(210)과 간섭하지 않을 때 관절 제어에 영향을 미칠 수 있는 이차 고려사항이다. 일부 예들에서, 관절 간섭에 의해 유발되는 이슈들을 방지하기 위해, 특정 기동들(210)은 생성 동안에 수동적 기동들(210) 또는 일차 기동들(210)로서 지정된다. 일부 구현예들에서, 기동 제어기(200)는 기동(210)이 수동적 기동(210)인지 여부를 결정하고, 기동(210)이 수동적 기동(210)인 경우에 일차 거동 또는 일차 거동과 연관된 기동(210)에 대한 거동 수정을 제안한다. 여기서, 거동을 수정할 수 있는 기동(210)은 힌트(hint)로 지칭된다. 특정 시간 인스턴스에서 힌트가 발생하는 경우, 각각의 다른 능동적 제어기(172)(예를 들어, 기동 제어기(200))는 힌트를 고려한다. 제어기(172)가 힌트를 해석할 때, 제어기(172)는 힌트가 제어기(172)가 제어하는 관절들(J)과 상이한 관절들(J)에 대응한다고 결정하고, 힌트에 대한 제어기 거동을 수정하는 것을 무시할 수 있다. 힌트가 동일한 관절들(J)에 대응하는 경우, 제어부(172)는 힌트의 거동 수정을 자신의 거동에 통합할 수 있다.
[0043] 도 2a 내지 도 2g를 참조하면, 기동 제어기(200)는 문제 생성기(problem generator)(220) 및 솔버(solver)(230)를 포함한다. 문제 생성기(220)는 기동 제어기(200)가 수신하는 기동(210)을 기동 시스템(200)이 기동(210)을 실행하거나 실행하려고 시도하는 이동 제어들을 수행할 수 있게 하는 포맷(format)으로 변환하도록 구성된다. 일부 예들에서, 하나 이상의 기동들(210)을 실행하기 위해, 기동 시스템(200)은 로봇(100)의 현재 상태(202)를 고려한다. 보다 구체적으로, 로봇(100)의 현재 상태(202)에 대한 고려 없이 외부와 단절된 상태에서 기동(210)을 실행하는 것은 로봇(100)이 기동(210)을 성공적으로 실행하는 능력을 상당히 감소시킬 수 있다. 기동(210)이 무상태성이기 때문에, 문제 생성기(220)는 로봇(100)의 현재 상태(202)와 기동(210)을 조합함으로써 솔버(230)에 대한 문제(222)를 형성한다. 여기서, 문제 생성기(220)에 의해 형성된 문제(222)는 솔버-대상(solver-facing)이다. 솔버-대상으로서, 일부 예들에서, 문제(222)는 인간 판독 가능 포맷일 필요는 없으며, 대신에 기계 판독 가능 포맷일 수 있다. 또한, 문제(222)는 로봇(100)의 현재 상태(202)를 포함하기 때문에, 문제(222)는 상태유지성(stateful)이다.
[0044] 일부 구현예들에서, 문제 생성기(220)는 시간 분할들을 포함하는 문제(222)를 생성한다. 이러한 시간 분할들은 시간 단계들(time steps)(224)로 지칭된다. 기동(210)을 문제(222)와 비교함에 있어서, 기동(210)은 일반적으로 이동이 변화할 때를 말하는 이동 이벤트들(212)에서 작동하는 반면, 문제(222)는 시간 단계들(224) 동안 무엇을 실행할지를 기술한다. 일부 구성들에서, 시간 단계들(224)은 고정 크기(예를 들어, 50 밀리초)이다. 시간 단계들(224)의 크기는 기동(210)의 이동 이벤트들(212) 사이의 타이밍에 대응할 수 있다. 예를 들어, 문제 생성기(220)는 각각의 지정된 이동 이벤트(212) 사이의 시간을 결정함으로써 시간 단계들(224)의 크기를 결정한다. 문제 생성기(220)가 각각의 인접한 이동 이벤트(212) 사이의 시간을 결정하면, 이동 이벤트들(212) 사이의 최소 시간은 시간 단계(224)의 고정 크기가 되거나 시간 단계(224)의 고정 크기의 배수에 대응할 수 있다. 일반적으로 말하면, 문제 생성기(220)는 이동 이벤트들(212)이 시간 단계(224)의 경계(224b)에서 발생하도록 기동(210)을 분할한다.
[0045] 기동(210)을 시간 단계들(224)로 분할하는 경우, 문제 생성기(220)는 너무 많은 시간 단계들(224)은 계산적으로 비싸다는 것을 인식하도록 구성될 수 있다. 이러한 비용들로 인해, 일부 예들에서, 문제 생성기(220)는 시간 단계들(224)을 조합한다. 시간 단계들(224)을 조합하기 위한 하나의 접근법에서, 문제 생성기(220)는 시간 단계들(224)이 기동(210)의 먼 미래로 갈수록 크기가 증가하도록 시간 단계들(224)을 생성한다. 다시 말해서, 시간 단계들(224)은 먼 미래로 갈수록 지속시간이 더 길어진다. 일부 구현예들에서, 시간 단계들(224)이 더 길어지더라도, 보다 긴 시간 단계들(224)은 초기 시간 단계(224)(즉, 가장 짧은 기본 시간 단계 단위)의 정수배들이다. 이러한 접근법은 기동(210)이 가까운 미래에 가장 짧은 기본 시간 단계 단위로 미세한 그레인(fine grain) 시간 명령을 가질 수 있게 하고 기동(들)(210)의 먼 미래로 갈수록 점점 더 조대한 그레인(coarse grain) 시간 명령을 가질 수 있게 한다. 일부 구성들에서, 문제 생성기(220)는 시간 단계들(224)의 최대 수를 솔버(230)에 전달한다. 여기서, 시간 단계들(224)의 최대 수는 (예를 들어, 솔버(230)의 계산 속도들을 유지하기 위해) 사전결정될 수 있다. 문제 생성기(220)는 최대 수 초과의 시간 단계들(224)을 생성할 수 있고, 솔버(230)는 여전히 기능할 것이지만, 최대 수는 솔버(230)가 예를 들어 계산 효율성 및 시기적절한 스루풋(throughput)을 유지할 수 있게 한다.
[0046] 예시하기 위해, 도 2a는 시간 단계들(224)로 분할된 기동(210)을 도시한다. 여기서, 기동(210)은 또한 4 개의 이벤트들(212, 212a 내지 212d)을 포함하며, 제1 이벤트(212, 212a)는 제1 다리(120, 120a)의 리프트오프이고, 제2 이벤트(212, 212b)는 제1 다리(120, 120a)의 착지이고, 제3 이벤트(212, 212c)는 제2 다리(120, 120b)의 리프트오프이며, 제4 이벤트(212, 212d)는 제2 다리(120, 120b)의 착지이다. 이러한 예에서, (클록(clock)으로 도시된 바와 같이) 현재 시간에 근접한 시간 단계들(224)은 4 개의 시간 단계들(224, 224a 내지 224d)에 대해 길이가 단일 시간 단계 단위이고, 이후에 다음 2 개의 시간 단계들(224, 224e, 224f)은 (예를 들어, 점선으로 도시된 바와 같이) 단일 시간 단계(224)로 조합된다. 조합된 2 개의 시간 단계들(224e, 224f) 후에, 다른 단일 시간 단계(224, 224g)에 이어서 2 개의 추가 조합된 세트들의 2 개의 시간 단계들, 즉 제1 세트의 시간 단계들(224, 224h, 224i) 및 제2 세트의 시간 단계들(224, 224j, 224k)이 있다. 제2 세트의 시간 단계들(224j, 224k) 후에, 다른 단일 시간 단계(224, 224l)에 이어서 일 세트의 3 개의 시간 단계들(224, 224m 내지 224o)이 있다. 3 개의 시간 단계들(224m 내지 224o) 세트에 이어서, 기동(210)은 일 세트의 2 개의 시간 단계들(224, 224p, 224q)로 종료된다. 이러한 예에서, 시간 단계들(224)의 조합은 일반적으로, 기본 시간 단계 길이의 4 개 세트들에 이어서, 기본 시간 단계 길이의 2배인 4 개 세트들 후에, 기본 시간 단계 길이의 3배인 4 개 세트들이 있는 패턴을 따른다. 여기서, 이러한 패턴들은 이동 이벤트들(212)에 의해 약간 혼란된다. 시간 단계들(224)이 조합될 수 있더라도, 문제 생성기(220)는 이동 이벤트들(212)에 시간 단계 경계들이 있는 것을 유지한다. 다시 말해서, 도 2a에 도시된 바와 같이, 단일 시간 단계(224g)는 일반적으로 제2 이동 이벤트(212b) 및 제3 이동 이벤트(212c)가 단일 시간 단계(224g)에 대한 경계들(224b)을 형성한다는 점을 제외하고는 보다 큰 시간 단계(224)의 일부일 것이다. 이러한 시나리오에서, 단일 시간 단계(224g)가 보다 큰 시간 단계(224)로 조합되는 경우, 기동(210)의 하나 또는 둘 모두의 이동 이벤트들(212b, 212c)에는 중요한 시간 세부사항(예를 들어, 기동(210)의 성공에 중요할 수 있음)이 결여될 수 있다.
[0047] 일부 예들에서, 기동(210)과 달리, 문제(222)는 기동(들)(210) 전체에 걸쳐 변경된다. 예를 들어, 문제(222)는 시간 단계(224)마다 변경된다. 도 2b는 기동(210) 동안에 새로운 문제들(222)을 생성하는 문제 생성기(220)를 도시하는 일 예이다. 여기서, 문제 생성기(220)는 전체 기동(210)에 대한 제1 문제(222, 222a)를 생성한다. 다음에, 기동(210)의 중간에, 문제 생성기(220)는 기동(210)의 후반부에 대한 제2 문제(222, 222b)를 생성한다. 솔버(230)가 모든 기동(210)의 대부분(예를 들어, 기동(210)의 90%)에 이른 경우, 문제 생성기(220)는 기동(210)의 나머지 부분(예를 들어, 나머지 10%)에 대한 제3 문제(222, 222c)를 생성한다. 시간 단계(224)의 모든 변화에 대해 문제(222)를 적합화시킴으로써, 문제 생성기(220)는 솔버(230)가 가장 최근의 문제(222)를 처리하는 것을 보장한다.
[0048] 도 2c와 같은 일부 구현예들에서, 문제 생성기(220)는 기동 제어기(200)에서 수신된 힌트들에 기초하여 기동(들)(210)을 수정할지 여부를 결정하도록 구성된다. 예를 들어, 기동 제어기(200)가 제1 기동(210, 210a)으로서의 힌트 및 비힌트의 제2 기동(210, 210b)을 수신하는 경우, 문제 생성기(220)는 힌트(210a)가 기동 제어기(200)가 제어하는 관절들(J)과 상이한 관절들(J)에 대응하는지 여부를 결정한다. 힌트(210a)가 기동 제어기(200)가 제어하는 관절들(J)과 상이한 관절들(J)에 대응하는 경우, 기동 제어기(200)는 비힌트의 제2 기동(210, 210b)(도시되지 않음)의 이동 거동을 수정하는 것을 무시한다. 그렇지만, 힌트가 동일한 관절들(J)에 대응하는 경우, 문제 생성기(220)는 힌트(210a)의 거동 수정을 제2 기동(210b)(예를 들어, 수정된 기동(210ab)으로서 도시됨)의 거동에 통합할 수 있다. 일부 예들에서, 문제 생성기(220)는 각각의 기동(210)의 사양에 기초하여 기동(210)의 관절들(J)을 식별한다. 여기서, 사양은 어떤 관절들(J)이 기동(210)에 위임되었는지를 식별할 수 있다.
[0049] 일부 예들에서, 문제 생성기(220)는 로봇(100)의 현재 상태(202)와 로봇(100)의 의도된 상태 사이의 불일치들을 해결하는 것을 돕는다. 달리 말하면, 로봇(100)의 현재 상태(202)는 로봇(100)의 의도된 상태로부터 변동될 수 있으며, 그에 따라 이러한 변동은 솔버(230)가 기동 제어기(200)에 대한 거동 제어들을 정확하게 식별하는 이슈들을 유발할 수 있다. 예를 들어, 로봇(100)의 클록 및 기동(210)에 따르면, 로봇(100)은 지면(12) 상에 2 개의 다리들(120, 120a, 120b)을 가져야 하지만, 측정된 상태(즉, 현재 상태(202))는 로봇(100)이 아직 착지되지 않은(즉, 늦은 착지) 제1 다리(120, 120a)를 (예를 들어, 스윙 다리(120SW)로서) 공중에 여전히 갖는다는 것을 나타낸다. 여기서, 문제 생성기(220)는, 로봇(100)의 현재 상태(202)를 통합함으로써, 솔버(230)가 현재 상태(202)가 식별하는 늦은 착지를 고려하지 않는 솔루션(solution)(232)을 잘못 결정하지 않는 것을 보장한다. 늦은 착지와 유사하게, 문제 생성기(220)는 또한 (예를 들어, 현재 상태(202)에 의해) 다리(120)가 조기 착지를 갖는다고 식별할 수 있다.
[0050] 계속해서 도 2a 내지 도 2f를 참조하면, 솔버(230)는 문제 생성기(220)로부터 문제(222)를 수신하고, 문제(222)에 대한 솔루션(232)을 출력한다. 일부 예들에서, 솔버(230)는 문제(222)에 통합된 현재 상태(202)에 기초하여 로봇(100)의 초기 상태(234)를 식별한다. 예를 들어, 기동 제어기(200)가 보행 로봇(100)에 대한 이동들을 주로 핸들링하고 있는 경우, 초기 상태(234)는 어떤 발들(124)이 현재 지면(12)과 접촉하고 있는지와, 이러한 발들(124)이 지면과 접촉하고 있는 곳을 포함한다. 초기 상태(234)는 또한 몸체(110)의 포지션, 몸체(110)의 속도, 및/또는 몸체(110)의 배향과 같은 로봇(100)의 몸체(110)의 초기 역학을 포함할 수 있다. 일부 예들에서, 문제(222)에 통합된 기동(210)으로부터, 문제(222)는 공칭 리프트오프 및/또는 착지 시간들뿐만 아니라, 공칭 리프트오프 및/또는 착지 위치들(예를 들어, TD/Lox,t로서 도시됨)을 포함한다. 여기서, 용어 공칭(nominal)은 리프트오프/착지 시간들 및 리프트오프/착지 위치들이 (예를 들어, 기동(210)을 작성한 사용자(10)로부터) 기동(210)에 의해 지정된 목표들임을 나타낸다. 이러한 예들에서, 기동(210)은 또한 접촉면(예를 들어, 지면(12))의 방향을 규정하는 접촉 법선을 지정할 수 있다. 여기서, 접촉 법선에 의해, 로봇(100)은 (예를 들어, 솔버(230)에서) 미끄러짐(slipping) 또는 미끄러짐의 임계 위험을 갖지 않고 접촉면에 상이한 힘들이 인가될 수 있는 방법을 식별하는 마찰 원뿔(friction cone)을 결정 가능할 수 있다. 솔버(230)는 또한, 문제(222)의 일부로서, 비용 함수(214)(예를 들어, 기동(210)에 의해 지정됨)를 수신한다. 비용 함수(214)는 기동(210)에 대한 최종 포즈(PF)의 식별 및/또는 이러한 최종 포즈(PF)의 중요도를 지정하는 값을 지칭한다. 일부 예들에서, 비용 함수(214)는 솔버(230)에 대한 문제(222)에 통합되는, 기동(210) 내의 상이한 시간들에서의 상이한 중요도의 다수의 포즈들(P)을 기동(210)이 갖도록 보다 복잡하다.
[0051] 이러한 입력들에 기초하여, 솔버(230)는 솔루션(232)을 생성한다. 솔루션(232)의 일부로서, 솔버(230)는 기동(210)을 수행하기 위한 접촉력들(236)을 결정한다. 일부 예들에서, 접촉력들(236)에 부가하여, 솔루션(232)은 실제 착지/리프트오프 타이밍 및/또는 실제 착지/리프트오프 위치들을 포함한다. 여기서, 솔버(230)가 솔버(230)의 최적화에 기초하여 공칭 리프트오프/착지 시간들 및 리프트오프/착지 위치들을 조정할 수 있기 때문에, 착지/리프트오프 타이밍 및 착지/리프트오프 위치들은 실제로서 지칭된다. 일부 경우들에서, 솔루션(232)은 착지/리프트오프 타이밍을 포함하지만, 착지 위치들만을 포함한다. 공칭 입력들을 조정할 수 있음으로써, 로봇(100)이 환경(30)으로부터의 피드백(예를 들어, 어떤 것이 로봇(100)에 부딪힘) 또는 거동의 교란들(예를 들어, 걸림(stumbling) 또는 헛디딤(tripping))에 적합화할 수 있기 때문에, 로봇(100)은 보다 강인할 수 있다. 추가적으로 또는 대안적으로, 착지의 타이밍 및/또는 위치를 조정할 수 있다는 것은 (예를 들어, 로봇(100)의 다리들(120)에 대한) 타이밍 또는 위치에 관한 정확한 입력들에 대한 염려 없이 기동(210)의 이동 이벤트들(212)이 보다 용이하게 작성될 수 있게 한다. 달리 말하면, 사용자(10)는 대략적으로 실행 가능한 거동을 작성하기만(즉, 기동(210)을 생성하기만) 하면 되며, 솔버(230)는 실제로 실행 가능한 솔루션(232)을 결정할 수 있다. 간접적으로 말하면, 솔버(230)는 또한 로봇(100)에 대한 COM 및 로봇(100)에 대한 배향 궤적을 결정할 수 있다. 여기서, 솔버(230)는 COM 및 배향 궤적을 간접적으로 결정하며, 이는 이러한 값들이 솔루션의 접촉력들(236) 및 정동역학(forward dynamics)으로부터 도출될 수 있기 때문이다. 정동역학은 일반적으로 몸체의 각 부분에 대한 배향들을 예측하기 위해 몸체의 힘들(또는 토크들)을 사용하는 것을 지칭한다. 다시 말해서, 로봇(100)의 구조적 관계들을 알고 기동(210)을 수행하기 위한 접촉력들(236)을 결정함으로써, 정동역학은 기동(210) 동안의 로봇(100)에 대한 역학 및/또는 운동학을 예측할 수 있다. 대안적으로, 솔버(230)는 단일 부분을 갖는 것으로 로봇 몸체(110)를 모델링할 수 있다.
[0052] 솔버(230)는 로봇(100)에 대한 배향들을 결정하려고 시도하며, 여기서 배향들은 문제(222)에 대한 토크 기반 솔루션들(232)이다. 토크 기반 솔루션을 찾음으로써, 솔버(230)는 포지션 벡터(position vector)에 의해 곱해진 힘으로서 측정된 로봇(100)에 대한 토크들에 초점을 맞춘다. 여기서, 솔버(230)가 이러한 항들(예를 들어, 힘 또는 포지션 벡터) 중 하나를 결정하려고 한 경우, 솔버(230)는 솔루션 프로세스가 선형인 이차 계획법(quadratic programming; QP)을 이용할 수 있을 것이다. 불행하게도, 솔버(230)는 미지의 힘 항 및 미지의 포지션 벡터 항(즉, 이차 항)을 모두 최적화하려고 시도하고 있기 때문에, 솔버(230)는 그 기본 형태에서 전통적인 QP에 의존할 수 없다. 대신에, 솔버(230)는 문제를 선형화한다.
[0053] 일부 구현예들에서, 솔버(230)는 발(124)에 대한 몸체(110)의 위치(즉, 포지션 벡터 항)와, 또한 발(124)에서의 힘들(즉, 힘 항)에 대한 솔루션을 동시에 결정하려고 시도하고 있다. 여기서, 솔버(230)는 이러한 변수들 모두에 대한 솔루션을 구하려고 하기 때문에, 문제(222)는 선형 최적화 문제가 아니라 비선형 최적화 문제(예를 들어, 이차 문제)이다. 통상적으로, 이것은 솔버(230)가 QP로 최적화할 수 없음을 의미한다. 또 다른, 보다 일반적인 최적화 방법들은 QP만큼 효과적이지 않으며, 이는 보다 일반적인 솔버들(예를 들어, 순차 이차 계획법)이, 상당히 더 많은 시간이 들고, 따라서 로봇(100)이 기동(210)을 수행할 때 균형 또는 로봇 물리학의 관점에서 반작용적이거나 심지어 선제적일 수 있게 하는 속도 요구사항들을 로봇(100)이 만족시킬 수 없게 하기 때문이다. 이러한 문제를 극복하기 위해, 솔버(230)는 문제(222)를 비선형 최적화 문제(222)(예를 들어, 이차 문제)로부터 선형 최적화 문제(222)로 변환하도록 일부 가정들을 함으로써 역학을 선형화한다. 변환을 설명하기 위해, 솔버(230)는 실제로 변수들을 함께 곱할 수 없는 2 개의 변수들(즉, 힘 및 포지션 벡터)의 곱인 모멘트를 결정하기를 원한다. 일부 예들에서, 솔버(230)는 부정확한 선형 표현으로서 이러한 2 개의 변수들의 곱을 나타낸다. 그렇지만, 솔버(230)는 각각의 변수에 대한 추측치 또는 추정치가 얼마나 잘못되었는지를 곱함으로써 이러한 부정확도를 나타낸다. 따라서, 각각의 변수에 대한 추측치들이 개선됨에 따라, 고유한 오차(즉, 선형화의 부정확도)가 줄어든다.
[0054] 일부 구현예들에서, 솔버(230)는 각각의 시간 단계(224)에서 지면(12)과 접촉하는 각각의 다리(120)에 대한 접촉력들(236)을 결정하도록 구성된다. 여기서, 접촉력(236)은 3차원 힘(예를 들어, x, y 및/또는 z 방향의 힘 성분들을 포함할 수 있음)이다. 각각의 시간 단계(224)에 대해, 솔버(230)는 접촉력들(236)이 구간 상수(Piecewise Constant)라고 가정할 수 있다. 다시 말해서, 솔버(230)는 접촉력들(236)이 특정 시간 단계(224) 동안에 변경되지 않는다고 가정할 수 있다. 일부 구성들에서, 솔버(230)는 로봇(100)의 몸체 상태(238)를, 세계 기준 프레임(world reference frame)에서 로봇(100)의 COM 포지션, 로봇(100)의 COM 속도, 로봇(100)의 배향(예를 들어, 오일러(Euler) 각도들 또는 쿼터니언들(quaternions)에 기초함), 및 로봇(100)의 각속도로서 규정한다. 솔버(230)가 접촉력들(236)을 결정함에 따라, 솔버(230)는 정동역학을 사용하여 기동(210)의 각 시간 단계(224)에서 몸체 상태(238)가 무엇인지를 결정할 수 있다.
[0055] 일부 예들에서, 솔버(230)에 의해 규정된 로봇(100)의 몸체 상태(238)는 로봇(100)에 대한 단순 강체 모델(rigid body model)이다. 다시 말해서, 솔버(230)는 로봇(100)이 로봇(100)의 몸체(110)에 결합되는 관절연결형 관절 다리들(120)을 갖는 보행 로봇(100)인 것으로 간주하지 않는다. 로봇(100)을 단순 강체로서 모델링함으로써, 솔버(230)에 의해 결정된 몸체 상태(238)는 약간의 부정확도들을 가질 수 있다. 예를 들어, 로봇(100)은 단순한 강체보다 복잡하기 때문에, 로봇(100)의 몸체 상태(238)로부터 도출된 로봇(100)의 역학은 어느 정도의 부정확도를 가질 가능성이 있는 반면, 로봇(100)의 운동학은 상당히 정확할 수 있다. 일부 예들에서, 강체의 관점에서 몸체 상태(238)에 대한 로봇(100)의 배향을 규정하는 대신에, 로봇(100)의 배향은 로봇(100)에 대한 자연스러운 자세의 관점에서 규정되며, 자연스러운 자세는 로봇(100)의 추가적인 관성체들(inertial bodies)(예를 들어, 관절 다리들(120), 팔들(126), 부재들(128) 등)을 고려한다. 여기서, 자연스러운 자세를 사용함으로써, 로봇(100)의 역학(예를 들어, 다리들(120)의 모션)에 대한 증가된 정도의 정확도와, 로봇(100)의 운동학에 대한 감소된 정도의 정확도(예를 들어, 로봇(100)에서 고관절들(JH)이 위치되는 곳에 관한 정확도) 사이에 트레이드오프(tradeoff)가 존재한다. 일부 구성들에서, 솔버(230)는 머신 러닝(machine learning)(예를 들어, 신경 네트워크)을 사용하여 각 접근법의 이점들을 혼합한다. 예를 들어, 솔버(230)는 자연스러운 자세의 관점에서 로봇(100)의 몸체 상태(238)에 대한 배향을 규정하지만, 로봇(100)의 역학이 여전히 정확하고 자연스러운 자세를 사용하는 로봇(100)에 대한 운동학의 정확도가 증가하도록 운동학에 대한 오프셋들(offsets)을 결정하기 위해 머신 러닝을 사용한다.
[0056] 일부 예들에서, 솔버(230)로부터의 솔루션(232)은 착지의 타이밍에 대한 조정들 및/또는 착지의 위치에 대한 조정들을 포함한다. 예를 들어, 기동(210)에서, 사용자(10)는 착지의 타이밍 및/또는 착지의 위치가 조정 가능한지 여부를 지정한다. 사용자(10)가 착지의 타이밍 및/또는 착지의 위치가 조정될 수 있다고 지정하는 경우, 솔버(230)는 솔루션(232)의 일부로서 이러한 조정들(예를 들어, 최적화가 조정들을 나타내는 경우)을 결정할 수 있다.
[0057] 도 2d를 참조하면, 일부 예들에서, 솔버(230)는 하나 이상의 솔루션들(232)을 반복적으로 생성한다. 여기서, 솔버(230)가 솔루션들(232)을 반복적으로 생성함에 따라, 문제(222)는 각각의 반복(I)에 대해 변경된다. 이러한 접근법은 순차 QP와 같은 보다 일반적인 솔버와 대조적이다. 순차 QP가 QP의 솔루션을 구하는 경우, 순차 QP는 그 솔루션을 사용하여 재선형화하고 동일한 QP의 솔루션을 구한다. 이것은 반복 기반 접근법이지만, 순차 QP는 최적화 문제가 재-솔루션들 사이에서 변경될 수 없게 한다. 솔버(230)의 경우에, 솔버(230)가 처음에 제1 반복(I, I1)에서 QP의 솔루션을 구하는 경우, 제1 솔루션(232, 232a)은 문제(222)를 비선형 최적화 문제(222)(예를 들어, 이차 문제)로부터 선형 최적화 문제(222)로 변환하도록 만들어진 가정들 때문에 정확한 솔루션(232)에 대응하지 않는다. 그러나, 비선형 최적화 문제(222)(예를 들어, 이차 문제)로부터 선형 최적화 문제(222)로의 변환으로 인해, 제1 솔루션(232a)을 부정확한 솔루션(232)으로 만드는 선형화 오차는 이차식이며, 그에 따라 이 오차는 정확한 솔루션(232)에 수렴하도록 반복적으로 감소될 수 있다. 따라서, 제1 솔루션(232a)보다 정확한 솔루션(232)을 생성하기 위해, 제1 솔루션(232a)은 문제(222)의 다음 반복(I, I2)에 대해 선형화하기 위한 추측치로서 솔버(230)로 피드백된다. 여기서, 문제(222)는 로봇(100)의 현재 상태(202)를 고려하고 현재 상태(202)는 임의의 시간 경과에 대해 업데이트되기 때문에, 문제(222)는 각각의 반복(I)에서 변경된다. 다시 말해서, 문제(222)의 반복들(I) 사이에 적은 시간이 있을 수 있는 경우에도(예를 들어, 문제(222)는 로봇(100)에 대한 타임 클록(time clock)의 매 틱(tick)(t)마다 솔루션이 구해지도록 시도됨), 문제(222)는 솔버(230)에 대해 변경된다. 현재 반복(I)에 대한 선형화 추정치로서 이전 반복(I)의 솔루션(232)을 사용함으로써, 솔버(230)는 정확한 솔루션(232)에 수렴하도록 각각의 반복(I)에 걸쳐 오차를 축소시킨다. 솔루션(232)의 품질은 (예를 들어, 각각의 반복(I)에서) 솔루션(232)을 통합 솔루션(232i)과 비교함으로써 측정될 수 있다. 솔버(230)는 로봇(100)에 대한 정동역학을 통해 솔루션(232)을 실행함으로써 통합 솔루션(232i)을 생성한다. 예시하기 위해, 종종, 솔버(230)로부터의 제1 솔루션(232a)은 초기 포인트가 솔버(230)에 제공하는 솔루션(232)의 정확도에 관한 지식이 최소이거나 전혀 없는 초기 포인트 주위에서 선형화가 발생했기 때문에 불량한 솔루션이 된다. 다음에, 제2 솔루션(232, 232b)은 알려진 정확도를 갖는 제1 솔루션(232a) 주위에서 선형화가 발생하기 때문에 보다 정확해진다. 종종, 제2 솔루션(232b)은 기동 제어기(200)에 의한 거동 제어에 사용 가능한 정확도를 갖지만, 제3 솔루션(232, 232c) 또는 제4 솔루션(232, 232d)과 같은 후속 솔루션들은 일반적으로 기동 제어기(200)에 의한 거동 제어에 대해 훨씬 더 정확하다.
[0058] 일부 구현예들에서, 솔버(230)는 역학을 선형화하여, 솔버(230)가 QP로서 공식화하고 QP 솔버로 솔루션을 구할 수 있는 이차 비용 함수로 문제를 생성한다. 솔버(230)가 역학을 선형화할 수 없었다면, 비용 함수는 이차식보다 복잡해지거나 높은 차수가 되었을 것이다. 그것은 QP로서 공식화될 수 없고, 따라서 QP 솔버에 의해 솔루션이 구해질 수 없다. 그러한 문제들의 솔루션을 구할 수 있는 보다 일반적인 솔버의 일 예는 순차 이차 계획법(Sequential quadratic programming; SQP)으로 불린다. SQP는 QP의 솔루션을 구하고 솔루션을 사용하여 새로운 QP를 재선형화하는 것과 유사한 것을 실행한다. 그래서, 일부 경우들에서, 솔버(230)는 원래의 비선형 문제에 대한 SQP 솔버를 실행하면서, 또한 비선형 문제가 QP 반복들 사이에서 변경될 수 있게 한다. 또한, 재선형화된 솔루션들은 일단 완료되면 다시 시작하기보다는, 계속 변경된다.
[0059] 선택적으로, 솔버(230)는 통합 솔루션(232i)과 임의의 개별 솔루션(232) 사이의 비교가 최적화 임계치를 충족한다고 결정함으로써 어떤 솔루션 반복이 기동(210)에 대한 이동을 제어하기에 충분한 정확도를 제공하는지를 결정하도록 구성될 수 있다. 여기서, 최적화 임계치는 솔루션(232)이 기동(210)을 수행하는 데 성공할 가능성이 있음을 나타내는 정확도의 사전결정된 정도이다. 일부 예들에서, 비교는 상이 비교이다. 다른 예들에서, 비교는 비율 비교(예를 들어, 퍼센트 수율과 매우 유사)이다.
[0060] 일부 구현예들에서, 솔버(230)의 QP는 비용 함수 및 일부 선형 제약조건들이다. 솔버(230)는 문제(222)에 대한 최적화를 달성하기 위해 이러한 비용 제약조건들을 충족시키려고 시도한다. 이러한 비용 제약조건들은 솔버(230)에 보편적인 기동(210)에서 사용자 지정될 수 있고, 그리고/또는 엔티티(예를 들어, 사용자(10))에 의해 제어 가능한 다른 설정들일 수 있다. 일부 예들에서, 솔버(230)는 접촉력들(236)을 최소화하기 위한 비용 항(240)을 포함한다. 비용 항(240)의 다른 예는 솔버(230)가 목표 포즈(PT)를 달성하려고 시도하는 것이며, 여기서 목표 포즈(PT)는 관련 값(예를 들어, 중요도의 할당된 비용)을 갖는다. 목표 포즈(PT)는 기동(210)의 이동 궤적의 종료 시에만 (즉, 최종 포즈(PF)로서) 발생할 수 있거나, 목표 포즈(PT)는 기동(210) 내의 다른 시간들(예를 들어, 각각의 시간 단계(224) 또는 하나 이상의 지정된 시간 단계들(224))에서 발생할 수 있다. 솔버(230)에 대한 다른 잠재적인 비용 항들(240)은 공칭 착지 타이밍 및/또는 공칭 착지 위치들로부터의 최대 및/또는 최소 편차를 포함한다. 여기서, 이러한 비용 항들(240)은 착지의 위치 및 타이밍이 사용자(10)에게 얼마나 중요한지를 지시할 수 있다. 추가적으로 또는 대안적으로, 사용자(10)는 발(124)에 대한 히프 포지션을 지정하는 비용 항(240)을 포함할 수 있다. 문제(222)는 또한 사용자(10)가 맞춤 비용 항들(240)(예를 들어, 맞춤 이동들)을 포함할 수 있도록 구성될 수 있다. 예를 들어, 사용자(10)는 로봇(100)이 가능한 한 높게 점프하거나 특정 방향으로 가능한 한 멀리 기울어져야 한다는 것을 나타내는 비용 항(240)을 지시한다. 일부 구성들에서, 솔버(230)는 기동(210)에 사용되는 관절들(J)에 대한 관절 토크들을 최소화하기(또는 관절 토크들을 최대화하기) 위한 비용 항(240)을 포함한다. 이러한 비용 항들(240)이 각각 별도로 설명되지만, 솔버(230)는 (예를 들어, 임의의 조합으로) 이러한 비용 항들(240) 중 하나 이상을 대상으로 할 수 있다.
[0061] 제약조건들은 부등식 또는 등식 제약조건들일 수 있다. 일부 예들에서, 솔버(230)는 마찰 제약조건들(240f)을 (예를 들어, 부등식들로서) 포함한다. 접촉력들(236)이 솔버(230)에 대한 최적화 변수들이기 때문에, 마찰 제약조건들(240f)은 이러한 최적화 변수들에 의존하도록 직접 기록될 수 있다. 여기서, 마찰 제약조건들(240f)의 구성은 일반적으로 원뿔 형상 또는 각뿔 형상(예를 들어, 4면 3차원 각뿔)을 갖는 함수와 유사하다. 마찰 제약조건들(240f)을 원뿔로서 구현하기 위해, 솔버(230)는 반복 제약조건들(예를 들어, 다리 길이 제약조건들)을 사용할 수 있다. 이러한 예들 중 일부에서, 마찰 제약조건들(240f)의 함수는 함수의 최소값이 0이 아닌 양의 수치가 되게 함으로써 (예를 들어, 작은 힘 값에서) 약간의 부정확도들을 갖는 제어기들(172)을 수용한다.
[0062] 일부 구현예들에서, 솔버(230)는 반복 제약조건들(240, 240i)을 사용한다. 반복 제약조건들(240i)은 솔버(230)의 특징을 활용하는 제약조건들(240)을 지칭하며, 여기서 솔버(230)는, 문제(222)를 다시 시작하지 않고, 추가적인 제약조건들(240)을 추가하고 계속해서 솔루션을 구하거나 빠른 솔루션(232)을 수행할 수 있다. 반복 제약조건들(240i)은 제약조건들(240)이 일반적으로 비선형 함수로서 가장 잘 표현되는 경우에 유용할 수 있지만, 이러한 유형의 제약조건(240)은 솔버(230)의 QP와 호환되지 않는다. 비선형 함수를 몇몇의 개별 선형 제약조건들(240)의 근사로서 표현하려고 하는 대신에, 솔버(230)는 먼저 반복 제약조건들(240i) 없이 솔루션(232)을 생성한다. 다음에, 이러한 솔루션(232)은 솔루션(232)이 목표 비선형 제약조건(240)을 위반하는지 여부를 결정하도록 검사된다. 솔버(230)가 솔루션(232)이 목표 비선형 제약조건(240)을 위반한다고 식별하는 경우, 솔버(230)는 반복 제약조건(240i)을 생성할 수 있다. 여기서, 반복 제약조건(240i)은 솔버(230)가 문제(222)의 솔루션을 구할 때 솔버(230)와 호환하는 선형 제약조건으로서 솔루션(232)을 추가로 제약한다. 먼저 비선형 제약조건 없이 문제의 솔루션을 구함으로써, 솔버(230)는 비선형 제약의 어떤 선형 근사가 가장 정확할지를 보다 양호하게 결정할 수 있다.
[0063] 예를 들어, 도 2e는 다리 길이 제약조건(240)을 나타내는 점선 원을 도시하며, 로봇(100)의 다리(120)의 길이는 로봇(100)의 히프(예를 들어, 고관절(JH))의 포지션의 함수로서 제약될 수 있다. 다시 말해서, 고관절(JH)의 포지션이 점선 원 내에 있는 한, 로봇(100)은 다리 길이 제약조건(240)을 충족할 것이다. 불행하게도, 점선 원은 비선형 제약조건(240, 240nl)일 것이다. 여기서, 솔버(230)는 로봇(100)에 대한 제1 솔루션(232, 232a)(예를 들어, 제1 상자로 도시됨)을 생성하고, 이러한 제1 솔루션(232a)이 로봇(100)의 히프의 포지션을 나타내는 점선 원의 비선형 제약조건(240nl)을 위반한다고 식별한다. 이러한 위반으로 인해, 솔버(230)는 제1 솔루션(232a) 근처의 원 상의 점에 접하는 선으로서 도시된 반복 제약조건(240i)을 생성한다. 반복 제약조건(240i)에 의해, 솔버(230)는 제2 솔루션(232, 232b)(예를 들어, 제2 상자로 도시됨)을 생성하며, 제2 솔루션(232, 232b)의 일부분은 점선 원의 비선형 제약조건(240nl) 내에 있다. 여기서, 제1 솔루션(232a) 및 제2 솔루션(232b)은 솔버(230)가 문제(222)를 재선형화하지 않도록 동일한 QP 반복(I1, t0) 동안에 발생한다(즉, 솔루션(232a, 232b)이 동일한 틱(t0)에서 발생함). 반복 제약조건(240i)은 선형화 반복(I) 동안에 추가 제약조건(240)으로서 기능한다. 다시 말해서, 반복 제약조건(240i)은 주어진 문제(222) 내의 반복에서 발생하는 반면, 선형화 반복은 솔버(230)가 새로운 또는 후속 미래 시간(예를 들어, 후속 틱(t1))에서 문제(222)의 솔루션을 구할 때 발생한다. 솔버(230)는 최대 다리 길이 또는 최소 다리 길이에 관한 제약조건들(240)을 포함할 수 있다.
[0064] 솔버(230)에 대한 제약조건(240)의 다른 예는 히프 제약조건(240, 240h)이다. 여기서, 히프 제약조건(240h)은 각각의 다리(120)의 상부 부재(128U)가 X-Z 관상면(몸체 평면으로도 지칭됨)에서 y-방향 축(AY)을 중심으로 고관절(JH)에서 회전하기 위한 제한된 모션 범위를 갖는다는 것을 나타낸다. 상부 부재(128U)의 과회전은 로봇(100)의 몸체(110)와의 충돌 또는 간섭을 야기할 것이다. 일부 구현예들에서, 히프 제약조건(240h)은 상부 부재(128U)를 갖는 다리(120)에 대응하는 로봇(100)의 발(124)에 대한 발 포지션을 제약하는 X-Z 관상면의 선으로 표현된다. 발 포지션의 X-Z 포지션을 제약함으로써, 상부 부재(128U)는 과회전 이슈들을 유발하지 않아야 한다.
[0065] 일부 예들에서, 리프트오프/착지의 타이밍 및/또는 포지션에 대한 제약조건들(240)이 있다. 사용자(10)는 솔버(230)가 착지/리프트오프의 타이밍 및/또는 착지/리프트오프의 위치를 조정할 수 있음을 지정할 수 있지만, 이러한 조정들은 이러한 조정들을 위한 범위 또는 정도를 식별하는 제약조건들(240)을 포함할 수 있다. 예를 들어, 착지 위치에 대한 제약조건(240)은 다각형 영역으로서 표현되며, 여기서 다각형 영역은 정당한 착지 영역을 나타낸다.
[0066] 솔루션(232)에 의해, 기동 제어기(200)는 문제(222)의 기동(210)에 대응하는 거동(예를 들어, 거동의 최적화된 버전)을 수행하도록 구성된다. 다시 말해서, 기동 제어기(200)는 실제로 솔루션(232)을 기동(200)을 수행하기 위한 하나 이상의 커맨드(204)로 변환해야 한다. 예를 들어, 기동 제어기(200)는 기동(210)을 수행하도록 기동(210)에 대응하는 하나 이상의 관절들(J)을 제어하는 커맨드(204)(예를 들어, 관절 커맨드(204)로 지칭됨)를 생성한다. 여기서, 커맨드(204)는 솔버(230)로부터의 솔루션(232)에 기초하여 관절들(J)에 관절 토크들(TJ)을 할당할 수 있다. 추가적으로 또는 대안적으로, 커맨드(204)는 관절들(J)에 원하는 포지션들/속도들을 할당할 수 있다. 일반적으로, 스탠스 다리들은 토크-제어되지만, 스윙 다리들은 포지션-제어된다.
[0067] 일부 구현예들에서, 보행 로봇(100)의 경우, 기동 제어기(200)는 스탠스 다리들(120ST) 및/또는 스윙 다리들(120SW)을 핸들링함으로써 거동을 수행한다. 다리들(120)의 핸들링을 수행하기 위해, 기동 제어기(200)는 솔루션(232)을 스탠스 다리(120ST) 및/또는 스윙 다리(120SW)에 적용하기 위한 상이한 프로토콜들을 가질 수 있다. 도 2f 및 도 2g와 같은 일부 구성들에서, 솔버(230)로부터의 솔루션(232)을 실제 이동 제어로 변환하기 위해, 기동 제어기(200)는 또한 핸들러(handler)(250)를 포함한다. 일부 예들에서, 핸들러(250)는 일반적으로 솔루션(232)으로부터의 접촉력(들)(236), 착지 위치(들), 및/또는 착지 타이밍을 식별하고, 스탠스 다리들(120ST) 및/또는 스윙 다리들(120SW)을 제어하기 위해 솔루션(232)의 이러한 부분들을 구현하도록 구성된다. 이러한 구성들에서, 핸들러(250)는 하기를 입력들로서 수신한다: 스탠스 다리(120ST)에 대한 목표 힘들로서 솔루션(232)으로부터의 접촉력들(236); 스탠스 다리(120ST)의 관절들(J)에 대한 토크 제한 제약조건들(240, 240t); 및 마찰 제약조건들(240f). 이러한 입력들에 기초하여, 핸들러(250)는 스탠스 다리(120ST)의 관절들(J)에 인가하기 위한 관절 토크들(TJ)을 결정한다. 일부 구성들에서, 핸들러(250)가 솔루션(232)에 기초하여 로봇(100)의 하나 이상의 스탠스 다리들(120ST)을 제어하기 위해, 핸들러(250)는 (예를 들어, 도 2g에 도시된 바와 같이) 입력들을 수신하고 스탠스 다리(120ST)의 관절들(J)에 인가하기 위한 관절 토크들(TJ)을 결정하는 QP와 같은 최적화 모델(252)을 포함할 수 있다. 핸들러(250)를 사용함으로써, 기동 제어기(200)는 솔버(230)에서 (예를 들어, 솔버(230)에서의 트레이드오프들에 의해) 위반되거나 부분적으로 위반되었을 수 있는 제약조건들(240)이 하나 이상의 스탠스 다리들(120ST)을 제어할 때 실제로 고려되는 것을 보장할 수 있다. 그렇지 않으면, 실제 제어는 기동(210)을 달성하고 그리고/또는 기동(210) 동안에 균형을 유지하는 데 문제가 될 수 있다. 예시하기 위해, 솔버(230)는 마찰 제약조건들(240)을 따르지만 토크 제한 제약조건들(240t)을 따르지 않는 접촉력(236)을 결정할 수 있다. 이러한 예에서, 핸들러(250)가 마찰 제약조건들(240f)이 아닌 토크 제한 제약조건들(240t)을 고려했다면, 핸들러(250)는 스탠스 다리(120ST)의 실제 제어 동안에 토크 제한 제약조건들(240t)을 준수하고 마찰 제약조건들(240f)을 위반하도록 관절 토크(TJ)를 수정할 수 있다. 이러한 이슈들을 극복하기 위해, 핸들러(250)는 로봇(100)에 대한 최적의 실제 제어를 보장하기 위해 제약조건들(240)을 이중으로 하도록 구성된다. 핸들러(250)는 로봇(100)의 각 다리(120)에 대한 개별 최적화 모델을 포함할 수 있거나, (예를 들어, 다리들(120) 사이의 결함들을 보상하기 위해) 하나 초과의 다리(120) 사이에서 관절 제어를 할당할 수 있는 다수의 다리들(120)에 대한 보다 큰 최적화 모델을 포함할 수 있다.
[0068] 스윙 다리들(120SW)은 솔버(230)로부터의 솔루션(232)에 기초하여(예를 들어, 솔루션(232)의 착지 포지션 및/또는 착지 타이밍에 기초하여) 다양한 방식들로 기동 제어기(210)에 의해(예를 들어, 핸들러(250)에 의해) 제어될 수 있다. 일부 예들에서, 기동 제어기(210)는 기동(210)의 사양에 따라 스윙 다리들(120SW)을 제어한다. 예를 들어, 사용자(10)는 스윙 다리(120)가 착지를 목표로 하는 기동(210)에서의 웨이포인트들(waypoints)을 지정한다. 여기서, 기동(210)에 의해 지정되는 웨이포인트들은 시간 또는 포지션에 따라 지정될 수 있다. 사용자(10)가 포지션의 관점에서 웨이포인트를 지정하는 경우에, 기동 제어기(200)는 해당 포지션에 대응하는 타이밍을 결정할 수 있다. 일부 특별한 상황들에서, 기동 제어기(200)는 스윙 다리(120SW)가 비교적 수평면(예를 들어, 지면(12))이 아닌 수직면(즉, 상당한 비수직 법선을 갖는 표면)에 착지하도록 스윙 다리 이동을 커맨드하기 위해 솔루션(232)을 사용하도록 구성된다. 일부 구성들에서, 기동 제어기(200)는, 솔버(230)로부터의 솔루션(232)에 기초하여 로봇(100)의 하나 이상의 스윙 다리들(120SW)을 제어하기 위해, 2019년 8월 6일자로 출원되고 명칭이 "Leg Swing Trajectories"인 미국 출원 제62/883,502호에 개시된 바와 같은 스윙 다리 제어 기술들을 이용하며, 상기 문헌은 본원에 참조로 포함된다.
[0069] 일부 구현예들에서, 솔버(230)는 완료하는 데 가변 시간이 걸릴 수 있다. 또한, 솔버는 많은 능동 제약조건들(240)이 있는 경우에 특히 오래 걸릴 수 있으며, 이는 일반적으로 어려운 것을 실행하고 있음을 의미한다. 기동 제어기(200)는 솔루션(232)에 대한 솔버(230)의 실행을 취소하고 실행 시간이 보다 짧은 부분적으로 최적화된 솔루션(232)만을 사용함으로써 그것을 핸들링할 수 있다. 더욱이, 솔버(230)는 이전 솔루션 주위에서 선형화하는 것에 의존할 수 있기 때문에, 솔버(230)는 수렴하도록 수회의 반복들을 취할 수 있으며, 이 시간 동안에 불량한 솔루션들(232)이 발생할 수 있다. 그러나, 솔버(230)는 선형화가 얼마나 잘 실행되고 있는지의 척도를 사용함으로써 이것이 언제 일어나는지를 알고 있다. 이에 응답하여, 제어 시스템(170)은 완전히 최적은 아닐 수 있지만 원하는 제어기(172, 200)가 수렴하는 데 필요한 몇 개의 시간 단계들(예를 들어, 전형적으로 < 10 ms)에 대해 허용 가능한 백업 제어기(172, 200)를 지정할 수 있다. 제어 시스템(170)은 해당 제어기(172)를 백업 제어기(172)로서 지정함으로써 이전에 실행하던 것을 계속 실행할 수 있다.
[0070] 도 3은 적어도 하나의 기동(210)을 동적으로 계획하는 방법(300)에 대한 동작들의 예시적인 배열이다. 동작(302)에서, 방법(300)은 로봇(100)에 대한 기동(210) 및 로봇(100)의 현재 상태(202)를 수신하며, 기동(210)은 로봇(100)이 수행할 하나 이상의 이동 이벤트들(212)을 포함한다. 동작(304)에서, 방법(300)은 로봇(100)의 기동(210) 및 현재 상태(202)를 비선형 최적화 문제(222)로 변환하며, 비선형 최적화 문제(222)는 미지의 힘 및 미지의 포지션 벡터를 최적화하도록 구성된다. 동작(306)에서, 방법(300)은 제1 시간 인스턴스(I1, t0)에서 2 개의 서브-동작들(306, 306a, 306b)을 수행한다. 서브-동작(306a)에서, 방법(300)은 비선형 최적화 문제(222)를 제1 선형 최적화 문제(222, 222a)로 선형화한다. 서브-동작(306b)에서, 방법(300)은 이차 계획법을 사용하여 제1 선형 최적화 문제(222a)에 대한 제1 솔루션(232, 232a)을 결정한다. 동작(308)에서, 방법(300)은 제2 시간 인스턴스(I2, t1)에서 2 개의 서브-동작들(308, 308a, 308b)을 수행하고, 여기서 제2 시간 인스턴스(I2, t1)는 제1 시간 인스턴스(I1, t0)에 후속한다. 서브-동작(308a)에서, 방법(300)은 제1 시간 인스턴스(t0)에서의 제1 솔루션(232a)에 기초하여 비선형 최적화 문제(222)를 제2 선형 최적화 문제(222, 222b)로 선형화한다. 서브-동작(308b)에서, 방법(300)은 이차 계획법을 사용하여 제1 솔루션(232a)에 기초하여 제2 선형 최적화 문제(222b)에 대한 제2 솔루션(232, 232b)을 결정한다. 동작(310)에서, 방법(300)은 제2 솔루션(232b)에 기초하여 기동(210) 동안의 로봇(100)의 모션을 제어하기 위한 관절 커맨드(204)를 생성한다.
[0071] 일부 예들에서, 방법(300)은 또한 제2 솔루션(232b) 및 로봇(100)에 대한 정동역학에 기초하여 통합 솔루션(232i)을 결정하고, 통합 솔루션(232i)과 제2 솔루션(232b) 사이의 비교가 최적화 임계치를 충족한다고 결정하며, 여기서 최적화 임계치는 관절 커맨드(204)를 생성하기 위한 각각의 솔루션(232)에 대한 정확도의 정도를 나타낸다. 일부 구현예들에서, 방법(300)은 제2 솔루션(232b)이 비선형 제약조건(240, 240nl)을 충족하는 데 실패하고 제2 선형 최적화 문제(222b)에 대한 반복 제약조건(240, 240i)을 생성한다고 추가로 결정하며, 여기서 반복 제약조건(240i)은 비선형 제약조건(240nl)을 충족하는 것에 대한 제2 솔루션(232b)의 실패에 기초하는 선형 제약조건을 포함한다. 여기서, 방법(300)은 또한 이차 계획법을 사용하여 제2 선형 최적화 문제(222b)에 대한 제2 솔루션(232b)을 업데이트하며, 여기서 이차 계획법은 반복 제약조건(240i)을 포함한다.
[0072] 도 4는 본 명세서에 설명된 시스템들(예를 들어, 기동 제어기(200)) 및 방법들(예를 들어, 방법(300))을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(400)의 개략도이다. 컴퓨팅 디바이스(400)는 랩탑들, 데스크탑들, 워크스테이션들, 개인용 정보 단말기들, 서버들, 블레이드 서버들(blade servers), 메인프레임들(mainframes) 및 다른 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내도록 의도된다. 본원에 나타낸 구성요소들, 이들의 연결들 및 관계들, 및 이들의 기능들은 단지 예시적인 것이며, 본 명세서에서 설명 및/또는 청구된 발명들의 구현예들을 제한하려는 것은 아니다.
[0073] 컴퓨팅 디바이스(400)는 프로세서(410)(예를 들어, 데이터 처리 하드웨어), 메모리(420)(예를 들어, 메모리 하드웨어), 저장 디바이스(430), 메모리(420) 및 고속 확장 포트들(450)에 연결되는 고속 인터페이스/제어기(440), 저속 버스(470) 및 저장 디바이스(430)에 연결되는 저속 인터페이스/제어기(460)를 포함한다. 구성요소들(410, 420, 430, 440, 450 및 460) 각각은 다양한 버스들을 사용하여 상호 연결되며, 공통 마더보드 상에 장착되거나 적절하게 다른 방식들로 장착될 수 있다. 프로세서(410)는, 고속 인터페이스(440)에 연결된 디스플레이(480)와 같은 외부 입/출력 디바이스 상에 그래픽 사용자 인터페이스(GUI)를 위한 그래픽 정보를 표시하기 위해, 메모리(420) 또는 저장 디바이스(430)에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(400) 내에서 실행하기 위한 명령들을 처리할 수 있다. 다른 구현예들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 메모리 유형들과 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(400)이 연결될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크(server bank), 블레이드 서버들의 그룹, 또는 다중 프로세서 시스템으로서) 필요한 동작들의 일부들을 제공한다.
[0074] 메모리(420)는 컴퓨팅 디바이스(400) 내에 비일시적으로 정보를 저장한다. 메모리(420)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비휘발성 메모리 유닛(들)일 수 있다. 비일시적 메모리(420)는 컴퓨팅 디바이스(400)에 의한 사용을 위해 임시적 또는 영구적으로 프로그램들(예를 들어, 명령들의 시퀀스들) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비휘발성 메모리의 예들은 플래시 메모리 및 판독 전용 메모리(ROM)/프로그램 가능 판독 전용 메모리(PROM)/소거 가능한 프로그램 가능 판독 전용 메모리(EPROM)/전자적으로 소거 가능한 프로그램 가능 판독 전용 메모리(EEPROM)(예를 들어, 전형적으로 부팅 프로그램들과 같은 펌웨어에 사용됨)를 포함하지만 이에 제한되지 않는다. 휘발성 메모리의 예들은 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 상변화 메모리(PCM)뿐만 아니라, 디스크들 또는 테이프들을 포함하지만 이에 제한되지 않는다.
[0075] 저장 디바이스(430)는 컴퓨팅 디바이스(400)를 위한 대용량 스토리지를 제공할 수 있다. 일부 구현예들에서, 저장 디바이스(430)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현예들에서, 저장 디바이스(430)는, 스토리지 영역 네트워크(storage area network) 내의 디바이스들 또는 다른 구성들을 포함하는, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 디바이스들의 어레이일 수 있다. 추가 구현예들에서, 컴퓨터 프로그램 제품은 정보 캐리어(information carrier)에 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때 전술한 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 메모리(420), 저장 디바이스(430), 또는 프로세서(410) 상의 메모리와 같은 컴퓨터 또는 기계 판독 가능 매체이다.
[0076] 고속 제어기(440)는 컴퓨팅 디바이스(400)에 대한 대역폭 집약적 동작들(bandwidth-intensive operations)을 관리하는 한편, 저속 제어기(460)는 보다 낮은 대역폭 집약적 동작들을 관리한다. 임무들(duties)의 그러한 할당은 단지 예시적인 것일 뿐이다. 일부 구현예들에서, 고속 제어기(440)는 메모리(420)에, (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(480)에, 그리고 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(450)에 연결된다. 일부 구현예들에서, 저속 제어기(460)는 저장 디바이스(430) 및 저속 확장 포트(490)에 결합된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(490)는 하나 이상의 입/출력 디바이스들, 예컨대 키보드, 포인팅 디바이스, 스캐너, 또는, 예를 들어 네트워크 어댑터를 통해, 스위치 또는 라우터(router)와 같은 네트워킹 디바이스에 결합될 수 있다.
[0077] 컴퓨팅 디바이스(400)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(400)는 표준 서버(400a)로서 또는 그러한 서버들(400a)의 그룹에 여러 번 구현되거나, 랩톱 컴퓨터(400b)로서, 랙 서버 시스템(rack server system)(400c)의 일부로서, 또는 로봇(100)의 일부로서 구현될 수 있다.
[0078] 본원에 설명된 시스템들 및 기술들의 다양한 구현예들은 디지털 전자 및/또는 광 회로, 집적 회로, 특수 설계된 ASIC들(application specific integrated circuits), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현예들은, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들로부터 데이터 및 명령들을 송신하도록 결합된, 특수 목적 또는 범용일 수 있는 적어도 하나의 프로그램 가능한 프로세서를 포함하는 프로그램 가능한 시스템에서 실행 가능 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램에서의 구현예를 포함할 수 있다.
[0079] 이러한 컴퓨터 프로그램들(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드로도 알려짐)은 프로그램 가능한 프로세서에 대한 기계 명령들을 포함하고, 고급 절차 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에 사용된 바와 같이, 용어 "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 기계 판독 가능 신호로서 기계 명령들을 수신하는 기계 판독 가능 매체를 포함하는 프로그램 가능 프로세서에 기계 명령들 및/또는 데이터를 제공하는 데 사용되는 임의의 컴퓨터 프로그램 제품, 비일시적 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, 프로그램 가능 논리 디바이스들(PLDs))를 지칭한다. 용어 "기계 판독 가능 신호"는 기계 명령들 및/또는 데이터를 프로그램 가능한 프로세서에 제공하는 데 사용되는 임의의 신호를 지칭한다.
[0080] 본 명세서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램 가능한 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수도 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들 모두를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령들을 수행하기 위한 프로세서, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어 자기 디스크들, 광자기 디스크들 또는 광 디스크들을 포함하거나, 또는 이들로부터 데이터를 수신하거나 이들에 데이터를 전송하거나, 또는 둘 모두를 수행하도록 작동적으로 결합된다. 그러나, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은, 예로서, 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어 내부 하드 디스크들 또는 이동식 디스크들; 광자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 포함하여, 모든 형태들의 비휘발성 메모리, 매체들 및 메모리 디바이스를 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 그에 통합될 수 있다.
[0081] 사용자와의 상호 작용을 제공하기 위해, 본 개시의 하나 이상의 양태들은 디스플레이 디바이스, 예를 들어, CRT(cathode ray tube), LCD(liquid crystal display) 모니터, 또는 정보를 사용자에게 표시하기 위한 터치 스크린, 및 선택적으로, 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예를 들어 마우스 또는 트랙볼(trackball)을 갖는 컴퓨터에서 구현될 수 있다. 사용자와 상호 작용을 또한 제공하기 위해 다른 종류들의 디바이스들이 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백, 예를 들어 시각적 피드백, 청각적 피드백 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성(speech) 또는 촉각 입력을 포함하여, 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는, 사용자가 사용하는 디바이스로 문서들을 전송하고 디바이스로부터 문서를 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 사용자 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 사용자와 상호 작용할 수 있다.
[0082] 다수의 구현예들이 설명되었다. 그럼에도 불구하고, 본 개시의 사상 및 범위로부터 벗어남이 없이 다양한 변형들이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현예들은 하기의 청구범위의 범위 내에 있다.

Claims (20)

  1. 방법(300)으로서,
    데이터 처리 하드웨어(data processing hardware)에서, 보행 로봇(legged robot)(100)에 대한 기동(maneuver)(210) 및 상기 보행 로봇(100)의 현재 상태(202)를 수신하는 단계 ― 상기 기동(210)은 상기 보행 로봇(100)이 수행할 하나 이상의 이동 이벤트들(movement events)(212)을 포함함 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 보행 로봇(100)의 기동(210) 및 현재 상태(202)를 비선형 최적화 문제(nonlinear optimization problem)(222)로 변환하는 단계 ― 상기 비선형 최적화 문제(222)는 미지의 힘(unknown force) 및 미지의 포지션 벡터(unknown position vector)를 최적화하도록 구성됨 ―;
    제1 시간 인스턴스(time instance)(I1, t0)에서,
    상기 데이터 처리 하드웨어에 의해, 상기 비선형 최적화 문제(222)를 제1 선형 최적화 문제(linear optimization problem)(222, 222a)로 선형화하는 단계; 및
    상기 데이터 처리 하드웨어에 의해, 이차 계획법(quadratic programming)을 사용하여 상기 제1 선형 최적화 문제(222, 222a)에 대한 제1 솔루션(solution)(232, 232a)을 결정하는 단계;
    상기 제1 시간 인스턴스(I1, t0)에 후속하는 제2 시간 인스턴스(I2, t1)에서,
    상기 데이터 처리 하드웨어에 의해, 제1 시간 인스턴스(I1, t0)에서의 제1 솔루션(232, 232a)에 기초하여 상기 비선형 최적화 문제(222)를 제2 선형 최적화 문제(222, 222b)로 선형화하는 단계; 및
    상기 데이터 처리 하드웨어에 의해, 상기 이차 계획법을 사용하여 상기 제1 솔루션(232, 232a)에 기초하여 상기 제2 선형 최적화 문제(222, 222b)에 대한 제2 솔루션(232, 232b)을 결정하는 단계; 및
    상기 데이터 처리 하드웨어에 의해, 상기 제2 솔루션(232, 232b)에 기초하여 상기 기동(210) 동안의 상기 보행 로봇(100)의 모션을 제어하기 위한 관절 커맨드(joint command)(204)를 생성하는 단계를 포함하는,
    방법(300).
  2. 제1 항에 있어서,
    상기 데이터 처리 하드웨어에 의해, 상기 제2 솔루션(232, 232b) 및 상기 보행 로봇(100)에 대한 정동역학(forward dynamics)에 기초하여 통합 솔루션(integrated solution)(232i)을 결정하는 단계; 및
    상기 데이터 처리 하드웨어에 의해, 상기 통합 솔루션(232i)과 상기 제2 솔루션(232, 232b) 사이의 비교가 최적화 임계치를 충족한다고 결정하는 단계 ― 상기 최적화 임계치는 관절 커맨드(204)를 생성하기 위한 각각의 솔루션(232)에 대한 정확도의 정도를 나타냄 ―;를 더 포함하는,
    방법(300).
  3. 제1 항에 있어서,
    상기 제2 시간 인스턴스(I2, t1)에서,
    상기 데이터 처리 하드웨어에 의해, 상기 제2 솔루션(232, 232b)이 비선형 제약조건(nonlinear constraint)(240, 240nl)을 충족하는 데 실패한다고 결정하는 단계;
    상기 데이터 처리 하드웨어에 의해, 상기 제2 선형 최적화 문제(222, 222b)에 대한 반복 제약조건(iterative constraint)(240, 240i)을 생성하는 단계 ― 상기 반복 제약조건(240, 240i)은 상기 비선형 제약조건(240, 240nl)을 충족하는 것에 대한 상기 제2 솔루션(232, 232b)의 실패에 기초하는 선형 제약조건(240)을 포함함 ―; 및
    상기 데이터 처리 하드웨어에 의해, 상기 이차 계획법을 사용하여 상기 제 2 선형 최적화 문제(222, 222b)에 대한 상기 제 2 솔루션(232, 232b)을 업데이트하는 단계 ― 상기 이차 계획법은 상기 반복 제약조건(240, 240i)을 포함함 ―;를 더 포함하는,
    방법(300).
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 미지의 힘은 상기 보행 로봇(100)이 상기 기동(210)을 수행할 때 상기 보행 로봇(100)의 발(124)에서의 힘(236)에 대응하는,
    방법(300).
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상기 미지의 포지션 벡터는 상기 보행 로봇(100)이 상기 기동(210)을 수행할 때 상기 보행 로봇(100)의 발(124)에 대한 상기 보행 로봇(100)의 몸체(110)의 위치에 대응하는,
    방법(300).
  6. 제1 항 내지 제5 항 중 어느 한 항에 있어서,
    상기 제1 솔루션(232, 232a) 및 상기 제2 솔루션(232, 232b) 각각은 상기 보행 로봇(100)의 하나 이상의 다리들(120)의 표면에 대한 접촉력들(236), 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 착지 포지션들, 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 착지 시간들, 또는 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 리프트오프(liftoff) 시간들을 포함하는,
    방법(300).
  7. 제1 항 내지 제6 항 중 어느 한 항에 있어서,
    상기 데이터 처리 하드웨어에 의해, 상기 관절 커맨드(204)에 기초하여 상기 보행 로봇(100)의 적어도 하나의 스탠스 다리(stance leg)(120, 120ST)의 관절들(J)에 명령하는 단계를 더 포함하며, 상기 관절 커맨드(204)는 상기 적어도 하나의 스탠스 다리(120, 120ST)의 관절들(J)에 대한 관절 토크들(TJ)을 포함하는,
    방법(300).
  8. 제7 항에 있어서,
    상기 데이터 처리 하드웨어에 의해, 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대응하는 상기 제2 솔루션(232, 232b)의 접촉력들(236)이 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대한 토크 제한 제약조건들(240, 240t) 및 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대한 마찰 제약조건들(240, 240f)을 충족한다고 결정함으로써, 상기 적어도 하나의 스탠스 다리(120, 120ST)의 관절들(J)에 대한 상기 관절 토크들(TJ)을 생성하는 단계를 더 포함하는,
    방법(300).
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 보행 로봇(100)은 4족 보행 로봇(quadruped robot)에 대응하는,
    방법(300).
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 기동(210)을 수신하는 단계는 상기 데이터 처리 하드웨어와 통신하는 사용자 디바이스(20)로부터 상기 기동(210)을 수신하는 단계를 포함하며, 상기 기동(210)은 상기 사용자 디바이스(20) 상에서 실행되는 사용자 인터페이스에서 상기 사용자 디바이스(20)의 사용자(10)에 의해 규정되는,
    방법(300).
  11. 로봇(100)으로서,
    몸체(110);
    상기 몸체(110)에 결합된 2 개 이상의 다리들(120); 및
    상기 몸체(110) 및 상기 2 개 이상의 다리들(120)과 통신하는 제어 시스템(170)을 포함하며, 상기 제어 시스템(170)은 데이터 처리 하드웨어(410) 및 상기 데이터 처리 하드웨어(410)와 통신하는 메모리 하드웨어(420)를 포함하고, 상기 메모리 하드웨어(420)는, 상기 데이터 처리 하드웨어(410) 상에서 실행될 때, 상기 데이터 처리 하드웨어(410)가 동작들을 수행하게 하는 명령들을 저장하고, 상기 동작들은,
    보행 로봇(100)에 대한 기동(210) 및 상기 보행 로봇(100)의 현재 상태(202)를 수신하는 동작 ― 상기 기동(210)은 상기 보행 로봇(100)이 수행할 하나 이상의 이동 이벤트들(212)을 포함함 ―;
    상기 보행 로봇(100)의 기동(210) 및 현재 상태(202)를 비선형 최적화 문제(222)로 변환하는 동작 ― 상기 비선형 최적화 문제(222)는 미지의 힘 및 미지의 포지션 벡터를 최적화하도록 구성됨 ―;
    제1 시간 인스턴스(I1, t0)에서,
    상기 비선형 최적화 문제(222)를 제1 선형 최적화 문제(222, 222a)로 선형화하는 동작; 및
    이차 계획법을 사용하여 상기 제1 선형 최적화 문제(222, 222a)에 대한 제1 솔루션(232, 232a)을 결정하는 동작;
    상기 제1 시간 인스턴스(I1, t0)에 후속하는 제2 시간 인스턴스(I2, t1)에서,
    제1 시간 인스턴스(I1, t0)에서의 제1 솔루션(232, 232a)에 기초하여 상기 비선형 최적화 문제(222)를 제2 선형 최적화 문제(222, 222b)로 선형화하는 동작; 및
    상기 이차 계획법을 사용하여 상기 제1 솔루션(232, 232a)에 기초하여 상기 제2 선형 최적화 문제(222, 222b)에 대한 제2 솔루션(232, 232b)을 결정하는 동작; 및
    상기 제2 솔루션(232, 232b)에 기초하여 상기 기동(210) 동안의 상기 보행 로봇(100)의 모션을 제어하기 위한 관절 커맨드(204)를 생성하는 동작을 포함하는,
    로봇(100).
  12. 제11 항에 있어서,
    상기 동작들은,
    상기 제2 솔루션(232, 232b) 및 상기 보행 로봇(100)에 대한 정동역학에 기초하여 통합 솔루션(232i)을 결정하는 동작; 및
    상기 통합 솔루션(232i)과 상기 제2 솔루션(232, 232b) 사이의 비교가 최적화 임계치를 충족한다고 결정하는 동작 ― 상기 최적화 임계치는 관절 커맨드(204)를 생성하기 위한 각각의 솔루션(232)에 대한 정확도의 정도를 나타냄 ―;을 더 포함하는,
    로봇(100).
  13. 제11 항에 있어서,
    상기 동작들은, 상기 제2 시간 인스턴스(I2, t1)에서,
    상기 제2 솔루션(232, 232b)이 비선형 제약조건(240, 240nl)을 충족하는 데 실패한다고 결정하는 동작;
    상기 제2 선형 최적화 문제(222, 222b)에 대한 반복 제약조건(240, 240i)을 생성하는 동작 ― 상기 반복 제약조건(240, 240i)은 상기 비선형 제약조건(240, 240nl)을 충족하는 것에 대한 상기 제2 솔루션(232, 232b)의 실패에 기초하는 선형 제약조건(240)을 포함함 ―; 및
    상기 이차 계획법을 사용하여 상기 제 2 선형 최적화 문제(222, 222b)에 대한 상기 제 2 솔루션(232, 232b)을 업데이트하는 동작 ― 상기 이차 계획법은 상기 반복 제약조건(240, 240i)을 포함함 ―;을 더 포함하는,
    로봇(100).
  14. 제11 항 내지 제13 항 중 어느 한 항에 있어서,
    상기 미지의 힘은 상기 보행 로봇(100)이 상기 기동(210)을 수행할 때 상기 보행 로봇(100)의 발(124)에서의 힘(236)에 대응하는,
    로봇(100).
  15. 제11 항 내지 제14 항 중 어느 한 항에 있어서,
    상기 미지의 포지션 벡터는 상기 보행 로봇(100)이 상기 기동(210)을 수행할 때 상기 보행 로봇(100)의 발(124)에 대한 상기 보행 로봇(100)의 몸체(110)의 위치에 대응하는,
    로봇(100).
  16. 제11 항 내지 제15 항 중 어느 한 항에 있어서,
    상기 제1 솔루션(232, 232a) 및 상기 제2 솔루션(232, 232b) 각각은 상기 보행 로봇(100)의 하나 이상의 다리들(120)의 표면에 대한 접촉력들(236), 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 착지 포지션들, 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 착지 시간들, 또는 상기 보행 로봇(100)의 하나 이상의 다리들(120)에 대한 리프트오프 시간들을 포함하는,
    로봇(100).
  17. 제11 항 내지 제16 항 중 어느 한 항에 있어서,
    상기 동작들은 상기 관절 커맨드(204)에 기초하여 상기 보행 로봇(100)의 적어도 하나의 스탠스 다리(120, 120ST)의 관절들(J)에 명령하는 동작을 더 포함하며, 상기 관절 커맨드(204)는 상기 적어도 하나의 스탠스 다리(120, 120ST)의 관절들(J)에 대한 관절 토크들(TJ)을 포함하는,
    로봇(100).
  18. 제17 항에 있어서,
    상기 동작들은, 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대응하는 상기 제2 솔루션(232, 232b)의 접촉력들(236)이 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대한 토크 제한 제약조건들(240, 240t) 및 상기 적어도 하나의 스탠스 다리(120, 120ST)에 대한 마찰 제약조건들(240, 240f)을 충족한다고 결정함으로써, 상기 적어도 하나의 스탠스 다리(120, 120ST)의 관절들(J)에 대한 상기 관절 토크들(TJ)을 생성하는 동작을 더 포함하는,
    로봇(100).
  19. 제11 항 내지 제18 항 중 어느 한 항에 있어서,
    상기 로봇(100)은 4족 보행 로봇에 대응하는,
    로봇(100).
  20. 제11 항 내지 제19 항 중 어느 한 항에 있어서,
    상기 기동(210)을 수신하는 동작은 상기 데이터 처리 하드웨어와 통신하는 사용자 디바이스(20)로부터 상기 기동(210)을 수신하는 동작을 포함하며, 상기 기동(210)은 상기 사용자 디바이스(20) 상에서 실행되는 사용자 인터페이스에서 상기 사용자 디바이스(20)의 사용자(10)에 의해 규정되는,
    로봇(100).
KR1020227009973A 2019-10-14 2020-10-12 동적 계획 제어기 KR20220080080A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/601,035 US11465281B2 (en) 2019-10-14 2019-10-14 Dynamic planning controller
US16/601,035 2019-10-14
PCT/US2020/055269 WO2021076453A1 (en) 2019-10-14 2020-10-12 Dynamic planning controller

Publications (1)

Publication Number Publication Date
KR20220080080A true KR20220080080A (ko) 2022-06-14

Family

ID=73198439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009973A KR20220080080A (ko) 2019-10-14 2020-10-12 동적 계획 제어기

Country Status (6)

Country Link
US (2) US11465281B2 (ko)
EP (1) EP4045390B1 (ko)
JP (1) JP7324932B2 (ko)
KR (1) KR20220080080A (ko)
CN (1) CN114641375A (ko)
WO (1) WO2021076453A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9259838B1 (en) * 2014-07-24 2016-02-16 Google Inc. Systems and methods for ground plane estimation
US11548151B2 (en) * 2019-04-12 2023-01-10 Boston Dynamics, Inc. Robotically negotiating stairs
DE102019129338B3 (de) * 2019-10-30 2021-02-18 Pilz Gmbh & Co. Kg Modellprädiktive Interaktionsregelung
US11494710B1 (en) * 2019-12-19 2022-11-08 Kalibrate Technologies Limited Optimization constraint adaptation for long-term target achievement
US11833680B2 (en) 2021-06-25 2023-12-05 Boston Dynamics, Inc. Robot movement and online trajectory optimization
CN114407008B (zh) * 2021-12-29 2023-06-09 广州极飞科技股份有限公司 机器人运动控制方法、装置、设备及存储介质
CN114954728A (zh) * 2022-06-17 2022-08-30 武汉科技大学 一种仿生陪伴机器人

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313463B2 (en) 2005-03-31 2007-12-25 Massachusetts Institute Of Technology Biomimetic motion and balance controllers for use in prosthetics, orthotics and robotics
JP5034235B2 (ja) 2006-01-16 2012-09-26 ソニー株式会社 制御システム及び制御方法、並びにコンピュータ・プログラム
JP5692122B2 (ja) 2012-03-05 2015-04-01 トヨタ自動車株式会社 重心高さ軌道生成装置、その生成方法及びプログラム
KR101428328B1 (ko) * 2012-12-27 2014-08-08 현대자동차주식회사 로봇의 보행제어방법 및 시스템
US9120227B2 (en) * 2013-08-15 2015-09-01 Disney Enterprises, Inc. Human motion tracking control with strict contact force constraints for floating-base humanoid robots
US9868210B1 (en) 2015-12-30 2018-01-16 Google Inc. Methods and systems for planning a body position of a robotic device

Also Published As

Publication number Publication date
EP4045390B1 (en) 2024-04-24
JP2022551218A (ja) 2022-12-08
CN114641375A (zh) 2022-06-17
EP4045390A1 (en) 2022-08-24
WO2021076453A1 (en) 2021-04-22
US20220410390A1 (en) 2022-12-29
JP7324932B2 (ja) 2023-08-10
US20210107150A1 (en) 2021-04-15
US11465281B2 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
KR20220080080A (ko) 동적 계획 제어기
Chignoli et al. Variational-based optimal control of underactuated balancing for dynamic quadrupeds
Jiang et al. State-of-the-Art control strategies for robotic PiH assembly
Koolen et al. Summary of team IHMC's virtual robotics challenge entry
Nishiwaki et al. The experimental humanoid robot H7: a research platform for autonomous behaviour
Kagami et al. Online 3D vision, motion planning and bipedal locomotion control coupling system of humanoid robot: H7
Kim et al. Computationally-robust and efficient prioritized whole-body controller with contact constraints
Sleiman et al. Contact-implicit trajectory optimization for dynamic object manipulation
JP2007185756A (ja) 制御システム及び制御方法、並びにコンピュータ・プログラム
US20220193894A1 (en) Supervised Autonomous Grasping
JP2022543926A (ja) ロボットシステムのためのデリバティブフリーモデル学習のシステムおよび設計
US20240051122A1 (en) Robot movement and online trajectory optimization
CN115351780A (zh) 用于控制机器人设备的方法
Mazare et al. Adaptive variable impedance control for a modular soft robot manipulator in configuration space
US11685049B2 (en) Robot localization using variance sampling
US20230286167A1 (en) Robot choreographer
US20220193906A1 (en) User Interface for Supervised Autonomous Grasping
Fang et al. Learning from wearable-based teleoperation demonstration
Long et al. Template-based human supervised robot task programming
Fukumoto et al. Hand-centered whole-body motion control for a humanoid robot
JP4457617B2 (ja) モーション生成システム及びロボットのモーション評価方法
US20240116178A1 (en) Predictive control method for torque-rate control and vibration suppression
Erez et al. Receding-horizon online optimization for dexterous object manipulation
Mitrovic Learning motor control for simulated robot arms
Liu Walking control for a bipedal model with exoskeleton applications

Legal Events

Date Code Title Description
E902 Notification of reason for refusal