IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ボストン ダイナミクス,インコーポレイテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-02
(45)【発行日】2023-08-10
(54)【発明の名称】動的計画コントローラ
(51)【国際特許分類】
   B25J 5/00 20060101AFI20230803BHJP
   B25J 13/00 20060101ALI20230803BHJP
   G06F 17/10 20060101ALI20230803BHJP
【FI】
B25J5/00 E
B25J13/00 Z
G06F17/10 Z
【請求項の数】 20
(21)【出願番号】P 2022504722
(86)(22)【出願日】2020-10-12
(65)【公表番号】
(43)【公表日】2022-12-08
(86)【国際出願番号】 US2020055269
(87)【国際公開番号】W WO2021076453
(87)【国際公開日】2021-04-22
【審査請求日】2022-03-30
(31)【優先権主張番号】16/601,035
(32)【優先日】2019-10-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホイットマン,エリック
(72)【発明者】
【氏名】クリピン,アレックス
【審査官】牧 初
(56)【参考文献】
【文献】特開2013-180384(JP,A)
【文献】特開2007-185756(JP,A)
【文献】米国特許出願公開第2007/0016329(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
(57)【特許請求の範囲】
【請求項1】
方法(300)であって、
データ処理ハードウェアにおいて、脚付きロボット(100)用のマニューバ(210)及び前記脚付きロボット(100)の現時点の状態(202)を受け取ることであって、前記マニューバ(210)は、前記脚付きロボット(100)が実行するための1つ又は複数の運動イベント(212)を有する、受け取ることと、
前記データ処理ハードウェアにより、前記脚付きロボット(100)用の前記マニューバ(210)及び前記脚付きロボット(100)の前記現時点の状態(202)を非線形最適化問題(222)に変換することと、
前記非線形最適化問題(222)の線形化推定として第1線形最適化問題(222、222a)に対する第1解(232、232a)を使用して、前記非線形最適化問題(222)を第2線形最適化問題(222、222b)に線形化することと、
前記データ処理ハードウェアにより、前記第2線形最適化問題(222、222b)に対する第2解(232、232b)を判定することと、
前記データ処理ハードウェアにより、前記第2解(232、232b)に基づいて前記マニューバ(210)を実行するためのコマンド(204)を生成することと、
を含む方法(300)。
【請求項2】
前記データ処理ハードウェアにより、前記第2解(232、232b)及び前記脚付きロボット(100)用の順動力学に基づいて統合された解(232i)を判定することと、
前記データ処理ハードウェアにより、前記統合された解(232i)と前記第2解(232、232b)の間の比較が最適化閾値を充足していることを判定することであって、前記最適化閾値は、前記コマンド(204)を生成するための個々の解(232)の精度の程度を通知している、判定することと、
を更に含む、請求項1に記載の方法(300)。
【請求項3】
前記データ処理ハードウェアにより、前記第2解(232、232b)が非線形制約(240、240nl)を充足することに失敗していると判定することと、
前記データ処理ハードウェアにより、前記第2線形最適化問題(222、222b)用の反復制約(240、240i)を生成することであって、前記反復制約(240、240i)は、前記非線形制約(240、240nl)を充足するための前記第2解(232、232b)の失敗に基づいた線形制約(240)を有する、生成することと、
前記データ処理ハードウェアにより、前記反復制約(240、240i)を使用して前記第2解(232、232b)を更新することと、
を更に含む、請求項1に記載の方法(300)。
【請求項4】
前記非線形最適化問題は、前記脚付きロボット(100)による前記マニューバ(210)の実行に基づいた前記脚付きロボット(100)の足(124)における力(236)を最適化するように構成されている、請求項1~3のいずれか1項に記載の方法(300)。
【請求項5】
前記非線形最適化問題は、位置ベクトルを最適化するように構成され、前記位置ベクトルは、前記脚付きロボット(100)による前記マニューバ(210)の実行に基づいた前記脚付きロボット(100)の足(124)との関係における前記脚付きロボット(100)のボディ(110)の場所に対応している、請求項1~4のいずれか1項に記載の方法(300)。
【請求項6】
前記第1解(232、232a)及び前記第2解(232、232b)のそれぞれは、表面に圧接状態の前記脚付きロボット(100)の1つ又は複数の脚(120)の接触力(236)、前記脚付きロボット(100)の前記1つ又は複数の脚(120)のタッチダウン位置、前記脚付きロボット(100)の前記1つ又は複数の脚(120)のタッチダウン時間、又は前記脚付きロボット(100)の前記1つ又は複数の脚(120)のリフトオフ時間、のうちの少なくとも1つを有する、請求項1~5のいずれか1項に記載の方法(300)。
【請求項7】
前記データ処理ハードウェアにより、前記コマンド(204)に基づいて前記脚付きロボット(100)の少なくとも1つのスタンス脚(120、120ST)の関節(J)に命令することを更に含み、前記コマンド(204)は、前記少なくとも1つのスタンス脚(120、120ST)の前記関節(J)の関節トルク(TJ)を有する、請求項1~6のいずれか1項に記載の方法(300)。
【請求項8】
前記データ処理ハードウェアにより、前記少なくとも1つのスタンス脚(120、120ST)に対応する前記第2解(232、232b)の接触力(236)が前記少なくとも1つのスタンス脚(120、120ST)のトルク限度制約(240、240t)及び前記少なくとも1つのスタンス脚(120、120ST)の摩擦制約(240、240f)を充足していることを判定することにより、前記少なくとも1つのスタンス脚(120、120ST)の前記関節(J)の前記関節トルク(TJ)を生成することを更に含む、請求項7に記載の方法(300)。
【請求項9】
前記脚付きロボット(100)は、4足ロボットに対応している、請求項1~8のいずれか1項に記載の方法(300)。
【請求項10】
前記マニューバ(210)を受け取ることは、前記データ処理ハードウェアとの通信状態にあるユーザー装置(20)から前記マニューバ(210)を受け取ることを有し、前記マニューバ(210)は、前記ユーザー装置(20)上において稼働しているユーザーインターフェイスにおいて前記ユーザー装置(20)のユーザー(10)によって定義されている、請求項1~9のいずれか1項に記載の方法(300)。
【請求項11】
ロボット(100)であって、
ボディ(110)と、
前記ボディ(110)に結合された2つ以上の脚(120)と、
前記ボディ(110)及び前記2つ以上の脚(120)との通信状態にある制御システム(170)と、
を有し、前記制御システム(170)は、データ処理ハードウェア(410)と、前記データ処理ハードウェア(410)との通信状態にあるメモリハードウェア(420)と、を有し、前記メモリハードウェア(420)は、前記データ処理ハードウェア(410)上において実行された際に前記データ処理ハードウェア(410)が、
脚付きロボット(100)用のマニューバ(210)及び前記脚付きロボット(100)の現時点の状態(202)を受け取ることであって、前記マニューバ(210)は、前記脚付きロボット(100)が実行するための1つ又は複数の運動イベント(212)を有する、受け取ることと、
前記脚付きロボット(100)用の前記マニューバ(210)及び前記脚付きロボット(100)の前記現時点の状態(202)を非線形最適化問題(222)に変換することと、
前記非線形最適化問題(222)の線形化推定として第1線形最適化問題(222、222a)に対する第1解(232、232a)を使用して、前記非線形最適化問題(222)を第2線形最適化問題(222、222b)に線形化することと、
前記第2線形最適化問題(222、222b)に対する第2解(232、232b)を判定することと、
前記第2解(232、232b)に基づいて前記マニューバ(210)を実行するべくコマンド(204)を生成することと、
を含む動作を実行する命令を保存している、ロボット(100)。
【請求項12】
前記動作は、
前記第2解(232、232b)及び前記脚付きロボット(100)用の順動力学に基づいて統合された解(232i)を判定することと、
前記統合された解(232i)と前記第2解(232、232b)の間の比較が最適化閾値を充足していることを判定することであって、前記最適化閾値は、前記コマンド(204)を生成するための個々の解(232)の精度の程度を通知している、判定することと、
を更に含む、請求項11に記載のロボット(100)。
【請求項13】
前記動作は、
前記第2解(232、232b)が非線形制約(240、240nl)を充足することに失敗していると判定することと、
前記第2線形最適化問題(222、222b)用の反復制約(240、240i)を生成することであって、前記反復制約(240、240i)は、前記非線形制約(240、240nl)を充足するための前記第2解(232、232b)の失敗に基づいた線形制約(240)を有する、生成することと、
前記反復制約(240、240i)を使用して前記第2解(232、232b)を更新することと、
を更に含む、請求項11に記載のロボット(100)。
【請求項14】
前記非線形最適化問題は、前記脚付きロボットによる前記マニューバ(210)の実行に基づいた前記脚付きロボットの足(124)における力(236)を最適化するように構成されている、請求項11~13のいずれか1項に記載のロボット(100)。
【請求項15】
前記非線形最適化問題は、位置ベクトルを最適化するように構成され、前記位置ベクトルは、前記脚付きロボット(100)による前記マニューバ(210)の実行に基づいた前記脚付きロボット(100)の足(124)との関係における前記脚付きロボット(100)のボディ(110)の場所に対応している、請求項11~14のいずれか1項に記載のロボット(100)。
【請求項16】
前記第1解(232、232a)及び前記第2解(232、232b)のそれぞれは、表面に圧接状態の前記脚付きロボット(100)の1つ又は複数の脚(120)の接触力(236)、前記脚付きロボット(100)の前記1つ又は複数の脚(120)のタッチダウン位置、前記脚付きロボット(100)の前記1つ又は複数の脚(120)のタッチダウン時間、又は前記脚付きロボット(100)の前記1つ又は複数の脚(120)のリフトオフ時間、のうちの少なくとも1つを有する、請求項11~15のいずれか1項に記載のロボット(100)。
【請求項17】
前記動作は、前記コマンド(204)に基づいて前記脚付きロボット(100)の少なくとも1つのスタンス脚(120、120ST)の関節(J)に命令することを更に含み、前記コマンド(204)は、前記少なくとも1つのスタンス脚(120、120ST)の前記関節(J)の関節トルク(TJ)を有する、請求項11~16のいずれか1項に記載のロボット(100)。
【請求項18】
前記動作は、前記少なくとも1つのスタンス脚(120、120ST)に対応する前記第2解(232、232b)の接触力(236)が前記少なくとも1つのスタンス脚(120、120ST)のトルク限度制約(240、240t)及び前記少なくとも1つのスタンス脚(120、120ST)の摩擦制約(240、240f)を充足していることを判定することにより、前記少なくとも1つのスタンス脚(120、120ST)の前記関節(J)の前記関節トルク(TJ)を生成することを更に含む、請求項17に記載のロボット(100)。
【請求項19】
前記2つ以上の脚(120)は、少なくとも4つの脚(120)を有する、請求項11~18のいずれか1項に記載のロボット(100)。
【請求項20】
前記マニューバ(210)を受け取ることは、前記データ処理ハードウェアとの通信状態にあるユーザー装置(20)から前記マニューバ(210)を受け取ることを有し、前記マニューバ(210)は、前記ユーザー装置(20)上において稼働しているユーザーインターフェイスにおいて前記ユーザー装置(20)のユーザー(10)によって定義されている、請求項11~19のいずれか1項に記載のロボット(100)。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
[0001] 本開示は、動的計画コントローラに関する。
【背景技術】
【0002】
背景
[0002] ロボットは、一般に、タスクの実行のために可変のプログラミング済みのモーションを通じて材料、部品、ツール、又は専用装置を運動させるように設計された再プログラミング可能且つ多機能のマニピュレータとして定義されている。ロボットは、物理的に固定されたマニピュレータ(例えば、産業用ロボットアーム)であってもよく、(例えば、脚、車輪、又は牽引に基づいたメカニズムを使用して)環境の全体を通じて運動する可動式ロボットであってもよく、或いは、マニピュレータ及び可動式ロボットのなんらかの組合せであってもよい。ロボットは、例えば、製造、輸送、危険な環境、探検、及び健康管理を含む様々な産業において利用されている。従って、様々な振る舞いのために迅速且つ効率的な方式でロボットをプログラミングする能力は、このような産業に更なる利益を提供する。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
[0003] 本開示の一態様は、動的計画コントローラ用の方法を提供している。方法は、データ処理ハードウェアにおいて、脚付きロボット用のマニューバ及び脚付きロボットの現時点の状態を受け取ることを含む。マニューバは、脚付きロボットが実行するべき1つ又は複数の運動イベントを含む。また、方法は、データ処理ハードウェアにより、マニューバ及び脚付きロボットの現時点の状態を非線形最適化問題に変換することを含む。非線形最適化問題は、未知の力及び未知の位置ベクトルを最適化するように構成されている。第1時間インスタンスにおいて、方法は、データ処理ハードウェアにより、非線形最適化問題を第1線形最適化問題に線形化することと、データ処理ハードウェアにより、二次計画法を使用して第1線形最適化問題に対する第1解を判定することと、を含む。第1時間インスタンスに後続する第2時間インスタンスにおいて、方法は、データ処理ハードウェアにより、第1時間インスタンスにおける第1解に基づいて非線形最適化問題を第2線形最適化問題に線形化することと、二次計画法を使用して第1解に基づいて第2線形最適化問題に対する第2解を判定することと、を含む。方法は、データ処理ハードウェアにより、第2解に基づいてマニューバにおいて脚付きロボットのモーションを制御するための関節コマンドを生成することを更に含む。
【0004】
[0004] 本開示の実装形態は、以下の任意選択の特徴の1つ又は複数を含みうる。いくつかの実装形態において、方法は、データ処理ハードウェアにより、第2解及び脚付きロボット用の順動力学に基づいて統合された解を判定することと、データ処理ハードウェアにより、統合された解と第2解の間の比較が最適化閾値を充足していることを判定することと、を含む。この実装形態において、最適化閾値は、関節コマンドを生成するための個々の解の精度の程度を通知している。統合された解と第2解(即ち、最適化された解)を比較することは、線形化の精度の計測値、即ち、線形化された問題に対する解がオリジナルの非線形問題の解でもあるのかどうか、を提供している。
【0005】
[0005] いくつかの例において、第2時間インスタンスにおいて、方法は、データ処理ハードウェアにより、第2解が非線形制約を充足することに失敗していると判定することと、第2線形最適化問題用の反復制約を生成することと、を含む。この例において、反復制約は、非線形制約を充足するための第2解の失敗に基づいた線形制約を含む。また、ここで、第2時間インスタンスにおいて、方法は、データ処理ハードウェアにより、二次計画法を使用して第2線形最適化問題に対する第2解を更新することを含んでおり、この場合に、二次計画法は、反復制約を有する。
【0006】
[0006] いくつかの構成において、未知の力は、脚付きロボットがマニューバを実行する際に脚付きロボットの足における力に対応している。未知の位置ベクトルは、脚付きロボットがマニューバを実行する際の脚付きロボットの足との関係における脚付きロボットのボディの場所に対応しうる。第1解及び第2解のそれぞれは、表面に圧接した状態の脚付きロボットの1つ又は複数の脚の接触力、脚付きロボットの1つ又は複数の脚のタッチダウン位置、脚付きロボットの1つ又は複数の脚のタッチダウン場所、脚付きロボットの1つ又は複数の脚のタッチダウン時間、又は脚付きロボットの1つ又は複数の脚のリフトオフ時間を含みうる。
【0007】
[0007] いくつかの実装形態において、方法は、データ処理ハードウェアにより、関節コマンドに基づいて脚付きロボットの少なくとも1つのスタンス脚の関節に命令することを含み、この場合に、関節コマンドは、少なくとも1つのスタンス脚の関節の関節トルクを有する。ここで、方法は、データ処理ハードウェアにより、少なくとも1つのスタンス脚に対応する第2解の接触力が少なくとも1つのスタンス脚のトルク限度制約及び少なくとも1つのスタンス脚の摩擦制約を充足していることを判定することにより、少なくとも1つのスタンス脚の関節の関節トルクを生成することを含みうる。
【0008】
[0008] いくつかの例において、脚付きロボットは、4足ロボットに対応している。マニューバを受け取ることは、データ処理ハードウェアとの通信状態にあるユーザー装置からマニューバを受け取ることを含みうると共に、マニューバは、ユーザー装置上において稼働しているユーザーインターフェイスにおいてユーザー装置のユーザーによって定義されてもよい。
【0009】
[0009] 本開示の別の態様は、ロボットを提供している。ロボットは、ボディと、ボディに結合された2つ以上の脚と、ボディ及び2つ以上の脚との通信状態にある制御システムと、を含む。制御システムは、データ処理ハードウェアと、データ処理ハードウェアとの通信状態にあるメモリハードウェアと、を含む。メモリハードウェアは、データ処理ハードウェア上において稼働した際にデータ処理ハードウェアが動作を実行するようにする命令を保存している。動作は、ロボット用のマニューバ及びロボットの現時点の状態を受け取ることを含み、マニューバは、ロボットが実行するべき1つ又は複数の運動イベントを含む。また、動作は、マニューバ及びロボットの現時点の状態を非線形最適化問題に変換することを含む。非線形最適化問題は、未知の力及び未知の位置ベクトルを最適化するように構成されている。第1時間インスタンスにおいて、動作は、非線形最適化問題を第1線形最適化問題に線形化することと、二次計画法を使用して第1線形最適化問題に対する第1解を判定することと、を含む。第1時間インスタンスに後続する第2時間インスタンスにおいて、動作は、非線形最適化問題を第1時間インスタンスにおける第1解に基づいて第2線形最適化問題に線形化することを含む。また、第1時間インスタンスに後続する第2時間インスタンスにおいて、動作は、二次計画法を使用して第1解に基づいて第2線形最適化問題に対する第2解を判定することと、第2解に基づいてマニューバにおいてロボットのモーションを制御するための関節コマンドを生成することと、を含む。
【0010】
[0010] この態様は、以下の任意選択の特徴の1つ又は複数を含みうる。いくつかの構成において、動作は、第2解及びロボット用の順動力学に基づいて統合された解を判定することと、統合された解と第2解の間の比較が最適化閾値を充足していることを判定することと、を含む。この構成において、最適化閾値は、個々の解が関節コマンドを生成する精度の程度を通知している。
【0011】
[0011] いくつかの実装形態において、第2時間インスタンスにおいて、動作は、第2解が非線形制約を充足することに失敗していると判定することと、第2線形最適化問題用の反復制約を生成することと、を含む。ここで、反復制約は、非線形制約を充足するための第2解の失敗に基づいた線形制約を含む。また、この実装形態において、第2時間インスタンスにおいて、動作は、二次計画法を使用して第2線形最適化問題に対する第2解を更新することを含み、この場合に、二次計画法は、反復制約を有する。
【0012】
[0012] いくつかの例において、未知の力は、ロボットがマニューバを実行する際のロボットの足における力に対応している。未知の位置ベクトルは、ロボットがマニューバを実行する際のロボットの足との関係におけるロボットのボディの場所に対応しうる。第1解及び第2解のそれぞれは、表面に圧接状態における脚付きロボットの1つ又は複数の脚の接触力、脚付きロボットの1つ又は複数の脚のタッチダウン位置、脚付きロボットの1つ又は複数の脚のタッチダウン場所、脚付きロボットの1つ又は複数の脚のタッチダウン時間、又は脚付きロボットの1つ又は複数の脚のリフトオフ時間を含みうる。
【0013】
[0013] いくつかの構成において、動作は、関節コマンドに基づいてロボットの2つ以上の脚の少なくとも1つのスタンス脚の関節に命令することを含み、この場合に、関節コマンドは、少なくとも1つのスタンス脚の関節の関節トルクを含む。ここで、動作は、少なくとも1つのスタンス脚に対応する第2解の接触力が少なくとも1つのスタンス脚のトルク限度制約及び少なくとも1つのスタンス脚の摩擦制約を充足していることを判定することにより、少なくとも1つのスタンス脚の関節の関節トルクを生成することを含みうる。
【0014】
[0014] いくつかの実装形態において、ロボットは、4足ロボットに対応している。ロボットは、マニューバを受け取る際に、データ処理ハードウェアとの通信状態にあるユーザー装置からマニューバを受け取ることを含みうると共に、マニューバは、ユーザー装置上において稼働するユーザーインターフェイスにおいてユーザー装置のユーザーによって定義されてもよい。
【0015】
[0015] 添付図面及び以下の説明には、本開示の1つ又は複数の実装形態の詳細について記述されている。その他の態様、特徴、及び利点については、説明及び図面から並びに請求項から明らかとなろう。
【図面の簡単な説明】
【0016】
図面の説明
図1A】[0016]ロボット環境における例示用のロボットの斜視図である。
図1B】[0017]図1Aのロボットの例示用のシステムの概略図である。
図2A】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2B】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2C】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2D】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2E】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2F】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図2G】[0018]図1Aのロボット用の例示用のマニューバコントローラの概略図である。
図3】[0019]ロボットがマニューバコントローラを使用してマニューバを実行するための動作の例示用の構成である。
図4】[0020]本明細書において記述されているシステム及び方法を実装するべく使用されうる例示用の演算装置の概略図である。
【発明を実施するための形態】
【0017】
[0021] 様々な図面における同一の参照符号は、同一の要素を示している。
【0018】
詳細な説明
[0022] ロボットを所有又は制御しているエンティティは、反復可能な運動ルーチンなどのロボット用の運動を事前プログラミングすることを所望する場合がある。残念ながら、事前プログラミングされた運動は、望ましい運動を生成するべくハードコーディングを必要としうる。ハードコーディングは、一般に、時間を所要し、制限された数の人々(例えば、コーダ)しかロボット用の運動をコーディング可能となりえないというボトルネックをもたらしうる。更には、コーディングされた運動に対する変更又はコーディングされた運動のデバッグは、運動ルーチンを実装するための長いフィードバックループをもたらしうる。換言すれば、ロボットは、しばしば、ロボット振る舞いを迅速に記述するための手段を欠いている。
【0019】
[0023] 事前プログラミングされた運動に伴う別の潜在的な課題は、これが、ロボットの周りの環境及び/又はロボット自体の物理学を解明している場合もあり或いは解明していない場合もあるという点にある。換言すれば、事前プログラミングされた運動をコーディングする者が、事前プログラミングされた運動の際にロボットに対するその他の制約が存在しうることを認識していない場合がある。これらのその他の制約を解明することなしには、事前プログラミングされたルーチンは、実行の際に失敗する場合があり、或いは、ロボット又はロボットの周りの環境を損傷する場合もある。例えば、事前プログラミングされた運動ルーチンのコーダは、ロボットがルーチンの際に更なる25ポンドの負荷を搬送することになる、或いはルーチンが静的又は動的障害物を有する動的環境内において稼働しうることを認識していない場合がある。これは、明らかに、奏功する運動ルーチンを実現するべく、運動ルーチンの際にロボットが経験することになる状態のすべて又は過半を解明しておくという重荷をエンティティ又はコーダに対して課している。
【0020】
[0024] これらの課題のいくつかを克服するべく、ロボット100は、大規模なハードコーディングを伴うことなしにロボット100用の運動を構築する能力を有するマニューバコントローラ200を含む。換言すれば、マニューバコントローラ200は、最小限のユーザー入力によって動的なロボット振る舞いを生成するための柔軟なフレームワークを提供するコントローラである。この柔軟なフレームワークによれば、マニューバコントローラ200は、ユーザー(例えば、ロボット操作者又はロボット所有者)が低減されたプログラミング及び/又はエンジニアリング労力によって新しいロボット振る舞い(例えば、運動ルーチン又は運動パターン)を生成することを許容する、ある種の迅速なプロトタイピングパイプラインとして機能している。ここでは、マニューバコントローラ200は、ユーザー可読/書込み可能入力を受け取り、これらの入力をモーションコマンドに変換している。
【0021】
[0025] いくつかの例において、ユーザー10は、ユーザー装置20上におけるマニューバコントローラ200用のマニューバ210を生成している。ここで、ユーザー装置20は、ユーザー10がデータ処理ハードウェア22及びデータ処理ハードウェア22との通信状態にあるメモリハードウェア24などの演算リソース22、24を使用してマニューバ210を定義することを許容するインターフェイスを実行している。ユーザー装置20のいくつかの例は、モバイル装置(例えば、携帯電話機、タブレット、ラップトップ、など)、パーソナルコンピュータ(PC)、ワークステーション、端末、又はマニューバ210を生成するための演算能力を有する任意のその他の演算装置を含む。ユーザー装置20においてアクセス可能であるインターフェイスは、ウェブに基づいたもの(例えば、ウェブブラウザから起動されたウェブに基づいたアプリケーション)であってもよく、ユーザー装置20にローカルなもの(例えば、ユーザー装置20の演算リソース22、24上において稼働するようにインストール及び/又は構成されているもの)であってもよく、或いは、これらの両方のなんらかの組合せであってもよい。いくつかの実装形態において、ユーザー装置20は、有線又は無線接続を使用してマニューバ210をロボット100に伝達するためのインターフェイスを使用している。例えば、インターフェイスは、ネットワーク(例えば、図1Bに示されているネットワーク150)上において、マニューバ210をロボット100に伝達している。
【0022】
[0026] 図1Aを参照すれば、ロボット100は、ロボット100が環境30内において運動することを可能にするボディ110に結合された脚120a~dなどの歩行に基づいた構造を有するボディ110を含む。いくつかの例において、それぞれの脚120は、1つ又は複数の関節Jが脚120の部材122が運動することを許容するように関節接続可能な構造である。例えば、それぞれの脚120は、脚120の上部部材122、122をボディ110に結合する股関節Jと、脚120の上部部材122を脚120の下部部材122に結合する膝関節Jと、を含む。図1Aは、4つの脚120a~dを有する4足ロボットを描いているが、ロボット100は、環境30内の地形を横断するための手段を提供する任意の数の脚又は歩行に基づいた構造(例えば、2つの脚を有する二足歩行の又は人間型のロボット)を含みうる。
【0023】
[0027] 地形を横断するべく、それぞれの脚120は、地形の表面(即ち、牽引表面)に接触する遠端124を有する。換言すれば、脚120の遠端124は、ロボット100の運動の際に回動するべく、立脚するべく、或いは、牽引を一般的に提供するべくロボット100によって使用される脚120の端部である。例えば、脚120の遠端124は、ロボット100の足に対応している。いくつかの例においては、図示されてはいないが、脚120の遠端124は、遠端124が脚120の下部部材122との関係において関節接続可能となるように、足首関節Jを含む。
【0024】
[0028] いくつかの例において、ロボット100は、ロボットマニピュレータとして機能する腕126を含む。腕126は、環境30の要素(例えば、環境30内の物体)に係合するべく複数の自由度を中心として運動するように構成することができる。いくつかの例において、腕126は、1つ又は複数の部材128を含み、この場合に、部材128は、腕126が1つ又は複数の関節Jを中心として回動又は回転しうるように、関節Jによって結合されている。例えば、複数の部材128によれば、腕126は、延伸又は退却するように構成することができる。一例を示せば、図1Aは、下部部材128L、上部部材128、及び手部材128に対応する3つの部材128を有する腕126を描いている。ここで、下部部材128は、ボディ110に隣接して配置された第1腕関節JA1(例えば、腕126がロボット100のボディ110に接続している場所)を中心として回転又は回動しうる。下部部材128は、第2腕関節JA2において上部部材128に結合されており、上部部材128は、第3腕関節JA3において手部材128に結合されている。いくつかの例において、手部材128は、異なるタイプの把持を可能にするべく更なる部材を含む。これらの更なる部材は、単純な2部材爪様の手部材128から人間の手の指をシミュレートした更に複雑な手部材128までの範囲をとりうる。いくつかの実装形態において、腕126は、ロボット100のボディ110上のソケットにおいてロボット100に接続している。いくつかの構成において、ソケットは、腕126が動作のために必要とされているかどうかに応じて腕126がロボット100に装着されうる又はそれから取り外されうるように、コネクタとして構成されている。
【0025】
[0029] ロボット100は、重力の方向に沿った(例えば、Z方向軸Aとして示される)垂直方向重力軸と、ロボット100のすべての部品の平均位置に対応する位置である質量の中心CM(即ち、ロボット100の分散した質量の重み付けされた相対位置が合計するとゼロになる地点)と、を有し、この場合に、これらの部品は、その質量に従って重み付けされている。ロボット100は、ロボット100がとる特定の姿勢又はスタンスを定義するべく垂直方向重力軸A(即ち、重力との関係における固定された基準フレーム)との関係においてCMに基づいたポーズPを更に有する。ロボット100の姿勢は、空間内のロボット100の向き又は角度位置によって定義することができる。ボディ110との関係における脚120による運動は、ロボット100のポーズP(即ち、ロボットのCMの位置とロボット100の姿勢又は向きの組合せ)を変更する。ここで、高さは、一般に、z方向に沿った距離を意味している。ロボット100の矢状面は、y方向軸A及びz方向軸Aの方向において延在するY-Zプレーンに対応している。換言すれば、矢状面は、ロボット100を左及び右側に二等分している。矢状面に対してほぼ垂直の状態において、グラウンドプレーン(横断方向プレーンとも呼称される)は、x方向軸A及びy方向軸Aの方向において延在することにより、X-Yプレーンに跨っている。グラウンドプレーンは、ロボット100の脚120の遠端124がロボット100の環境30内における運動を支援するための牽引を生成しうるグラウンド表面12を意味している。ロボット100の別の解剖学的プレーンは、ロボット100のボディ110に跨って(例えば、第1脚120aを有するロボット100の左側から第2脚120bを有するロボット100の右側まで)延在する前頭面である。前頭面は、x方向軸A及びz方向軸Aの方向において延在することにより、X-Zプレーンに跨っている。
【0026】
[0030] 脚付きロボットが環境30内において運動する際に、ロボット100のそれぞれの脚120は、グラウンド表面12との接触状態にある場合もあり或いはグラウンド表面12との接触状態にない場合もある。脚120がグラウンド表面12との接触状態にある際には、脚120は、スタンス脚120STと呼称される。脚120がグラウンド表面12との接触状態にない際には、脚120は、スイング脚120SWと呼称される。脚120は、脚120がグラウンド表面12からリフトオフ(LO)した際にスタンス脚120STからスイング脚120SWに遷移している。従って、スイング脚120SWも、スイング脚がグラウンド表面12との接触状態にない後にグラウンド表面12に圧接状態においてタッチダウン(TD)した際に、スタンス脚120STに遷移しうる。ここで、脚120がスイング脚120SWとして機能している間には、ロボット100の別の脚120は、(例えば、ロボット100のバランスを維持するべく)スタンス脚120STとして機能しうる。
【0027】
[0031] 環境30内において移動するべく、ロボット100は、(例えば、第1センサ132、132a及び第2センサ132、132bとして示されている)1つ又は複数のセンサ132、132a~nを有するセンサシステム130を含む。センサ132は、ビジョン/画像センサ、慣性センサ(例えば、慣性計測ユニット(IMU))、フォースセンサ、及び/又はキネマティックセンサを含みうる。センサ132のいくつかの例は、立体カメラ、スキャニング光検出及びレンジング(LIDAR)センサ、又はスキャニングレーザー検出及びレンジング(LADAR)センサをなどのカメラを含む。いくつかの例において、センサ132は、センサ132に対応する検知レンジ又は領域を定義する対応する1つ又は複数の視野Fを有する。例えば、図1Aは、ロボット100の視野Fvを描いている。それぞれのセンサ132は、センサ132が、例えば、1つ又は複数の軸(例えば、グラウンドプレーンとの関係におけるx軸、y軸、又はz軸)を中心として視野Fvを変更しうるように、回動可能及び/又は回転可能であってよい。
【0028】
[0032] センサ132によって視野Fvを調査した際に、センサシステム130は、視野Fvに対応するセンサデータ134(画像データとも呼称される)を生成している。いくつかの例において、センサデータ134は、三次元容積計測画像センサ132によって生成される三次元容積計測ポイントクラウドに対応する画像データである。これに加えて、又はこの代わりに、ロボット100が環境30内において移動している際に、センサシステム130は、(例えば、IMUによって計測された)慣性計測データを含むロボット100のポーズデータを収集している。いくつかの例において、ポーズデータは、例えば、ロボット100の関節J又は脚120のその他の部分に関する運動学データ及び/又は向きデータなどのロボット100の運動学データ及び/又は向きデータを含む。センサデータ134によれば、ロボット100の様々なシステムは、(例えば、ロボット100の運動学の)ロボット100の現時点の状態及び/又はロボット100の周りの環境30の現時点の状態を定義するべく、センサデータ134を使用することができる。
【0029】
[0033] いくつかの実装形態において、センサシステム130は、関節Jに結合された1つ又は複数のセンサ132を含む。いくつかの例において、これらのセンサ132(例えば、センサ132、132a~b)は、ロボット100の関節Jを動作させるモーターMに結合している。ここで、これらのセンサ132は、関節に基づいたセンサデータ134の形態において関節力学を生成している。関節に基づいたセンサデータ134として収集された関節力学は、関節角度(例えば、下部部材122との関係における上部部材122)、関節速度(例えば、関節角速度又は関節角加速度)、及び/又は関節Jにおいて経験されている力(関節力とも呼称される)を含みうる。ここで、1つ又は複数のセンサ132によって生成される関節に基づいたセンサデータ134は、未加工センサデータ、異なるタイプの関節力学134JDを形成するべく更に処理されるデータ、或いは、これらの両方のなんらかの組合せであってよい。例えば、センサ132は、関節位置(或いは、関節Jにおいて結合された1つ又は複数の部材122の位置)を計測し、ロボット100のシステムは、位置データから速度及び/又は加速度を導出するべく更なる処理を実行している。その他の例において、センサ132は、速度及び/又は加速度を直接的に計測するように構成されている。
【0030】
[0034] センサシステム130がセンサデータ134を収集するのに伴って、演算システム140は、センサデータ134を保存し、処理し、及び/又は、ロボット100の様々なシステム(例えば、制御システム170及び/又はマニューバシステム300)に伝達するように構成されている。センサデータ134に関係する演算タスクを実行するべく、ロボット100の演算システム140は、データ処理ハードウェア142及びメモリハードウェア144を含む。データ処理ハードウェア142は、ロボット100の活動(例えば、運動及び/又は運動に基づいた活動)に関係する演算タスクを実行するべく、メモリハードウェア144内において保存されている命令を実行するように構成されている。一般的に言えば、演算システム140は、データ処理ハードウェア142及び/又はメモリハードウェア144の1つ又は複数の場所を意味している。
【0031】
[0035] いくつかの例において、演算システム140は、ロボット100上において配置されたローカルシステムである。ロボット100上において配置される際に、演算システム140は、中央集中化されていてもよく(即ち、例えば、ロボット100のボディ110などのロボット100上の単一の場所/エリア内において配置されている)、分散化されていてもよく(即ち、ロボット100の周りの様々な場所において配置されている)、或いは、これらの両方のハイブリッドな組合せであってもよい(例えば、ハードウェアの過半が中央集中化されており、ハードウェアの残りの部分が分散されている)。いくつかの相違点を例示すれば、分散化された演算システム140は、処理が活動場所において(例えば、脚120の関節を運動させるモーターにおいて)発生することを許容しうる一方で、中央集中化された演算システム140は、中央処理ハブが(例えば、脚120の関節を運動させるモーターに通信するなどのように)ロボット100上の様々な位置において配置されているシステムに通信することを許容しうる。
【0032】
[0036] これに加えて、又はこの代わりに、演算システム140は、ロボット100から離れたところに配置されている演算リソースを含む。例えば、演算システム140は、ネットワーク150を介してリモートシステム160と通信している(例えば、リモートサーバー又はクラウドに基づいた環境)。演算システム140と同様に、リモートシステム160も、リモートデータ処理ハードウェア162及びリモートメモリハードウェア164などのリモート演算リソースを含む。ここで、センサデータ134又はその他の処理済みのデータ(例えば、演算システム140によるローカルのデータ処理)は、リモートシステム160内において保存されてもよく、演算システム140からアクセス可能であってもよい。いくつかの例において、演算システム140は、演算システム140のリソースがリモートシステム160のリソース上において存在しうるように、演算リソース142、144の延長としてリモートリソース162、164を利用するように構成されている。
【0033】
[0037] いくつかの実装形態において、図1A及び図1Bに示されているように、ロボット100は、制御システム170を含む。制御システム170は、少なくとも1つのセンサシステム130などのロボット100のシステムと通信するように構成することができる。制御システム170は、ハードウェア140を使用して動作及びその他の機能を実行することができる。制御システム170は、ロボット100を制御するように構成された少なくとも1つのコントローラ172を含む。例えば、コントローラ172は、ロボット100のシステム(例えば、センサシステム130及び/又は制御システム170)からの入力又はフィードバックに基づいて環境30内において横断するようにロボット100の運動を制御している。いくつかの実装形態において、コントローラ172は、ロボット100のポーズ及び/又は振る舞いの間において運動を制御している。
【0034】
[0038] いくつかの例において、コントローラ172は、ロボット100の1つ又は複数の関節Jを中心とした運動を制御することにより、ロボット100を制御している。いくつかの構成において、コントローラ172は、少なくとも1つの関節J又は関節Jを動作させている又はこれに結合されているモーターMを制御するプログラミングロジックを有するソフトウェアである。例えば、コントローラ172は、関節Jに印加される力の量(例えば、関節Jにおけるトルク)を制御している。プログラム可能なコントローラ172として、コントローラ172が制御している関節Jの数は、特定の制御目的についてスケーラブルであり及び/又はカスタマイズ可能である。コントローラ172は、単一の関節Jを制御してもよく(例えば、単一の関節Jにおけるトルクを制御する)、或いは、ロボット100の複数の関節Jを制御してもよい。複数の関節Jを制御している際には、コントローラ172は、同一又は異なるトルクをコントローラ172によって制御されているそれぞれの関節Jに印加することができる。複数の関節Jを制御することにより、コントローラ172は、ロボット100の更に大きな構造(例えば、ボディ110、1つ又は複数の脚120、腕126)の運動を調整することができる。換言すれば、いくつかのマニューバ210の場合に、コントローラ172は、例えば、2つの脚120a~b、4つの脚120a~d、或いは、腕126と組み合わせられた2つの脚120a~bなどのロボット100の複数の部分の運動を制御するように構成することができる。
【0035】
[0039] いくつかの実装形態において、制御システム170の1つ又は複数のコントローラ172は、マニューバコントローラ200を含む。マニューバコントローラ200は、制御システム170のその他のコントローラ172と同様に機能しうるが、これに加えて、マニューバ210と呼称される入力用の制御を提供する能力も有する。換言すれば、マニューバコントローラ200は、マニューバ210を動的に計画する能力を有するコントローラ172である。マニューバ210は、1つ又は複数の運動イベント212をまばらに定義する制御仕様である。いくつかの例において、マニューバ210は、ユーザー10がマニューバ210を(例えば、なんらかの基本的コーディングを伴って)定義する制御仕様を記述するように、ユーザーを対象としている。制御仕様は、なんらかの程度のコーディングを含みうるが、マニューバ210は、一般に、最小限の仕様を有するように設計されている。最小限の仕様を有することにより、ユーザー10は、ロボット100用の新しい振る舞いを迅速及び/又は効率的に生成可能となりえ、及び/又は、古い振る舞いを変更可能となりうる。仕様の一部として、ユーザー10は、ロボット100が1つ又は複数の運動イベント212、212a~nに基づいて実行することをユーザー10が所望している振る舞いを記述している。例えば、脚付きロボット100の場合には、しばしば、マニューバ210は、主に脚のモーションに影響を及ぼしている。ここで、脚付きロボット100用のいくつかの運動イベント212は、足124のタッチダウン及び/又は足124のリフトオフを含む。いくつかの例において、運動イベント212は、ロボットが振る舞いにおいて実行することをユーザー10が所望している内容を時系列で記述している。換言すれば、運動イベント212は、運動(或いは、その欠如)及び運動の持続時間を含む。この観点において、運動イベント212は、ロボット100がなんらの運動も実行していない運動休止を含みうる。例えば、ロボット100がマニューバ210として逆立ちを実行することをユーザー10が所望している場合に、逆立ちマニューバ210の運動イベント212は、ロボット100の2つの前脚120のタッチダウンと、これに後続するロボット100の2つの後ろ脚120のリフトオフと、(例えば、逆立ち位置を保持するための)なんらかの規定された持続時間の休止/待期期間の後の終了と、を記述しうる。マニューバコントローラ200がマニューバ210を解釈する際には、マニューバコントローラ200は、マニューバ210自体が実行の際に劇的に変化しないように、マニューバ210の開始時点からマニューバ210の終了時点まで時系列でマニューバ210を分析するように構成されている。
【0036】
[0040] いくつかの実装形態において、マニューバ210は、状態なしである。換言すれば、マニューバ210は、ロボット100が現時点において実行している内容ではなく、ロボット100が振る舞いのために実行することをユーザー10が所望している内容にのみ関係している。また、この状態なし方式は、ユーザー10によるマニューバ生成を単純化しうるが、その理由は、ユーザー10が、ロボット100の潜在的に相対的に複雑な現時点の力学及び/又はロボット100の周りの環境30の力学について心配する必要がないからである。
【0037】
[0041] いくつかの例において、マニューバコントローラ200は、複数のマニューバ210を受け取っている。例えば、ユーザー10は、複数のマニューバ210を生成し、ロボット100が同時に2つ以上のマニューバ210を実行することを要求している。いくつかの実装形態において、ロボット100は、ロボット100が実行するようにユーザー10が選択しうる事前プログラミングされた又はハードコーディングされたマニューバ210のリストを含むインターフェイスと通信している。ここで、インターフェイスは、有限数のマニューバ210を含んでいるが、インターフェイスは、ユーザー10が相対的に大規模なカスタマイズのために様々な方法でマニューバ210を組み合わせることを許容することができる。このタイプの制御されたカスタマイズは、ほとんど又はまったくコーディング能力を有していないユーザー10の場合には、或いは、ロボット100が受け取るマニューバ210のタイプを制御することをロボット所有者が所望している際には、好適でありうる。
【0038】
[0042] いくつかのマニューバ210は、ロボット100の一部分(例えば、ロボット100の関節J)を受動的に制御しうる一方で、その他のマニューバ210は、ロボット100の一部分(例えば、ロボット100の関節J)を能動的に制御している。換言すれば、受動型マニューバ210は、主要な振る舞いを変更する振る舞いを意味している。関節制御との関係において、2つのマニューバ210は、類似の関節Jに影響を及ぼしうる。例えば、実際的に言えば、ボディ110の運動は、ロボット100の少なくとも1つの脚120の少なくとも1つの関節Jに対して変更を実施することにより、発生する。その一方で、脚120の関節Jがマニューバ210に既に割り当てられている際(例えば、歩行マニューバ210又は脚マニューバの場合)には、ボディ110の運動が関節制御干渉をもたらす場合がある。換言すれば、ボディマニューバ210は、例えば、脚マニューバ210と干渉することにならない際に関節制御に影響を及ぼしうる二次的な考慮事項である。いくつかの例において、関節干渉によってもたらされる課題を防止するべく、特定のマニューバ210は、生成の際に、受動型マニューバ210又は主要マニューバ210として指定されている。いくつかの実装形態において、マニューバコントローラ200は、マニューバ210が受動型マニューバ210であるかどうかを判定し、マニューバ210が受動型マニューバ210である際に、主要振る舞い又は主要振る舞いと関連するマニューバ210に対する振る舞い変更を示唆している。ここで、振る舞いを変更しうるマニューバ210は、ヒントと呼称される。ヒントが特定の時間インスタンスにおいて発生した際には、それぞれのその他の能動的コントローラ172(例えば、マニューバコントローラ200)は、ヒントを検討する。コントローラ172がヒントを解釈した際に、コントローラ172は、ヒントがコントローラ172が制御する関節Jとは異なる関節Jに対応していると判定する場合があり、従って、ヒント用のそのコントローラ振る舞いの変更を無視することができる。ヒントが同一の関節Jに対応している際には、コントローラ172は、ヒントの振る舞い変更をその独自の振る舞いに内蔵することができる。
【0039】
[0043] 図2A図2Gを参照すれば、マニューバコントローラ200は、問題生成器220と、ソルバ230と、を含む。問題生成器220は、マニューバコントローラ200が受け取るマニューバ210をマニューバ210を実行する又は実行するべく試みる運動制御をマニューバシステム200が実行することを可能にするフォーマットに変換するように構成されている。いくつかの例において、1つ又は複数のマニューバ210を実行するべく、マニューバシステム200は、ロボット100の現時点の状態202を解明している。更に具体的には、ロボット100の現時点の状態202を解明することなしに孤立状態においてマニューバ210を実行することは、マニューバ210を成功裏に実行するロボット100の能力を大幅に低減させうる。マニューバ210は、状態なしであることから、問題生成器220は、マニューバ210をロボット100の現時点の状態202と組み合わせることにより、ソルバ230用の問題222を形成している。ここで、問題生成器220によって形成される問題222は、ソルバを対象としている。ソルバを対象とする状態において、いくつかの例において、問題222は、人間可読フォーマットになる必要がなく、その代わりに、機械可読フォーマットとなりうる。更には、問題222は、ロボット100の現時点の状態202を含んでいることから、問題222は、状態ありである。
【0040】
[0044] いくつかの実装形態において、問題生成器220は、時間の分割を含む問題222を生成している。これらの時間の分割は、時間ステップ224と呼称される。マニューバ210を問題222と比較する際に、マニューバ210は、運動イベント212において動作しており、これらの運動イベント212は、問題222が時間ステップ224において実行するべき内容を記述している一方で、一般的に、運動が変化した時点を通知している。いくつかの構成において、時間ステップ224は、固定されたサイズ(例えば、50ミリ秒)である。時間ステップ224のサイズは、マニューバ210の運動イベント212の間におけるタイミングに対応しうる。例えば、問題生成器220は、それぞれの規定された運動イベント212の間の時間を判定することにより、時間ステップ224のサイズを判定している。問題生成器220がそれぞれの隣接する運動イベント212の間における時間を判定したら、運動イベント212の間における最低量の時間が時間ステップ224の固定されたサイズとなってもよく、或いは、これは、時間ステップ224用の固定されたサイズの倍数に対応しうる。一般的に言えば、問題生成器220は、運動イベント212が時間ステップ224の境界224bにおいて発生するように、マニューバ210を分割している。
【0041】
[0045] マニューバ210を時間ステップ224に分割する際に、問題生成器220は、過剰に多い時間ステップ224が演算的に費用を消費することを認識するように構成することができる。これらの支出に起因して、いくつかの例において、問題生成器220は、時間ステップ224を組み合わせている。時間ステップ224を組み合わせるための1つの方式において、問題生成器220は、時間ステップ224が、マニューバ210において将来に向かって更にサイズにおいて増大するように、時間ステップ224を生成している。換言すれば、時間ステップ224は、将来に向かって更に持続時間において相対的に長くなっている。いくつかの実装形態において、時間ステップ224が相対的に長くなるのに伴って、相対的に長い時間ステップ224は、初期時間ステップ224の整数倍である(即ち、最短基本時間ステップ単位)。この方式は、マニューバ210が、直近の将来において最短基本時間ステップ単位を有する細粒度時間命令と、1つ又は複数のマニューバ210の将来に向かって更に益々粗い粒度の時間命令と、を有することを許容する。いくつかの構成において、問題生成器220は、最大数の時間ステップ224をソルバ230に伝達している。ここで、時間ステップ224の最大数は、(例えば、ソルバ230の演算速度を維持するべく)既定されていてもよい。問題生成器220は最大数超の時間ステップ224を生成してもよく、ソルバ230は依然として機能することになるが、最大数は、ソルバ230が、例えば、演算効率及びタイムリーなスループットを維持することを許容している。
【0042】
[0046] 例示を目的として、図2Aは、時間ステップ224に分割されたマニューバ210を描いている。また、ここで、マニューバ210は、4つのイベント212、212a~dを含み、この場合に、第1イベント212、212aは、第1脚120、120aのリフトオフであり、第2イベント212、212bは、第1脚120、120aのタッチダウンであり、第3イベント212、212cは、第2脚120、120bのリフトオフであり、第4イベント212、212dは、第2脚120、120bのタッチダウンである。この例において、(クロックによって示されている)現時点に近接した状態において、時間ステップ224は、4つの時間ステップ224、224a~dについては、長さにおいて単一時間ステップ単位であり、次いで、次の2つの時間ステップ224、224e~fが(例えば、点線によって示されるように)単一時間ステップ224として組み合わせられている。組み合わせられた2つの時間ステップ224e~fの後には、別の単一時間ステップ224、224gと、これに後続する、時間ステップの第1の組224、224h~i及び時間ステップの第2の組224、224j~kである、2つの時間ステップの更なる2つの組み合わせられた組が存在している。時間ステップの第2の組224j~kの後に、別の単一時間ステップ224、224lと、これに後続する3つの時間ステップの組224、224m~oと、が存在している。3つの時間ステップの組224m~oに後続して、マニューバ210は、2つの時間ステップの組224、224p~qによって終了している。この例において、時間ステップ224の組合せは、一般に、基本時間ステップ長の4つの組と、これに後続する基本時間ステップ長の2倍の4つの組と、これに後続する基本時間ステップ長の3倍の4つの組と、が存在するパターンを踏襲している。ここで、このパターンは、運動イベント212によってわずかに混乱させられている。時間ステップ224は、組み合わせられうるが、問題生成器220は、運動イベント212において時間ステップ境界が存在することを維持している。換言すれば、図2Aに示されているように、単一時間ステップ224gは、一般に、第2運動イベント212b及び第3運動イベント212cが単一時間ステップ224gに対する境界224bを形成しているという点を除いて、更に大きな時間ステップ224の一部分となろう。このシナリオにおいては、単一時間ステップ224gが更に大きな時間ステップ224内に組み合わせられた場合に、マニューバ210の1つ又は両方の運動イベント212b~cは、重要な時間詳細(例えば、マニューバ210の成功にとって重要でありうるもの)を欠く場合がある。
【0043】
[0047] いくつかの例において、マニューバ210とは異なり、問題222は、1つ又は複数のマニューバ210の全体を通じて変化している。例えば、問題222は、時間ステップ224ごとに変化している。図2Bは、マニューバ210において新しい問題222を生成する問題生成器220を描いた一例である。ここで、問題生成器220は、マニューバ210全体の第1問題222、222aを生成している。次いで、マニューバ210の途中において、問題生成器220は、マニューバ210の第2の半分用の第2問題222、222bを生成している。ソルバ230がマニューバ210の工程の大部分(例えば、マニューバ210の90%)を構成している際には、問題生成器220は、マニューバ210の残りの部分(例えば、残りの10%)用の第3問題222、222cを生成している。問題222を時間ステップ224におけるすべての変化に適合させることにより、問題生成器220は、ソルバ230が最も最近の問題222に対処することを保証している。
【0044】
[0048] 図2Cなどのいくつかの実装形態においては、問題生成器220は、マニューバコントローラ200において受け取られたヒントに基づいて1つ又は複数のマニューバ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を識別している。ここで、仕様は、マニューバ210を代表する関節Jを識別することができる。
【0045】
[0049] いくつかの例において、問題生成器220は、ロボット100の現時点の状態202とロボット100の意図された状態の間の不一致の解決を支援している。換言すれば、ロボット100の現時点の状態202がロボット100の意図された状態から変化し、これにより、ソルバ230がマニューバコントローラ200用の振る舞い制御を正確に識別するための課題をこの不一致が生成しうる場合がある。例えば、マニューバ210及びロボット100のクロックに従って、ロボット100は、グラウンド表面12上において2つの脚120、120a~bを有することを要しているが、計測された状態(即ち、現時点の状態202)が、ロボット100が依然としていまだタッチダウンしていない(例えば、スイング脚120SWとしての)第1脚120、120aを空中において有すること(即ち、遅いタッチダウン)を反映している。ここで、問題生成器220は、ロボット100の現時点の状態202を内蔵することにより、現時点の状態202が識別している遅いタッチダウンを考慮していない解232をソルバ230が誤って判定しないことを保証している。また、遅いタッチダウンと同様に、問題生成器220は、(例えば、現時点の状態202により)脚120が早期のタッチダウンを有していることを識別することもできる。
【0046】
[0050] 図2A図2Fを継続して参照すれば、ソルバ230は、問題生成器220から問題222を受け取り、問題222に対する解232を出力している。いくつかの例において、ソルバ230は、問題222に内蔵されている現時点の状態202に基づいてロボット100の初期状態234を識別している。例えば、マニューバコントローラ200が脚付きロボット100の運動を主に取り扱っている際には、初期状態234は、現時点においてグラウンド表面12との接触状態にある足124と、これらの足124がグラウンド表面との接触状態にある場所と、を含む。また、初期状態234は、ボディ110の位置、ボディ110の速度、及び/又はボディ110の向きなどのロボット100のボディ110の初期力学を含みうる。いくつかの例において、問題222に内蔵されているマニューバ210から、問題222は、公称リフトオフ及び/又はタッチダウン時間のみならず、(例えば、TD/Lox,tとして示されている)公称リフトオフ及び/又はタッチダウン場所も含む。ここで、公称という用語は、リフトオフ/タッチダウン時間及びリフトオフ/タッチダウン場所が、(例えば、マニューバ210を記述したユーザー10からの)マニューバ210によって規定されたターゲットであることを意味している。また、これらの例において、マニューバ210は、接触表面の方向を定義する接触法線(例えば、グラウンド表面12)を規定することもできる。ここで、接触法線によれば、ロボット100は、(例えば、ソルバ230において)、スリップを伴うことなしに或いはスリップの閾値リスクを有する状態において、異なる力が接触表面に印加されうる方式を識別する摩擦円錐を判定可能となりうる。また、ソルバ230は、問題222の一部として(例えば、マニューバ210によって規定された)費用関数214を受け取っている。費用関数214は、マニューバ210用の最終的なポーズPの識別及び/又はこの最終的なポーズPの重要性を示す値を意味している。いくつかの例において、費用関数214は、マニューバ210がソルバ230用の問題222に内蔵されているマニューバ210内において異なる時点において異なる重要性の複数のポーズPを有するように、相対的に複雑である。
【0047】
[0051] これらの入力に基づいて、ソルバ230は、解232を生成している。解232の一部として、ソルバ230は、マニューバ210を実行するための接触力236を判定している。いくつかの例において、接触力236に加えて、解232は、実際のタッチダウン/リフトオフタイミング及び/又は実際のタッチダウン/リフトオフ場所を含む。ここで、タッチダウン/リフトオフタイミング及びタッチダウン/リフトオフ場所は、実際のものとされているが、その理由は、ソルバ230がソルバ230の最適化に基づいて公称リフトオフ/タッチダウン時間及びリフトオフ/タッチダウン場所を調節しうるからである。いくつかのインスタンスにおいては、解232は、タッチダウン/リフトオフタイミングを含んでいる一方で、タッチダウン場所しか含んでいない。公称入力を調節可能であることにより、ロボット100は、相対的に安定しうるが、その理由は、ロボット100が環境30からのフィードバック(例えば、なにかがロボット100にぶつかる)又は振る舞いにおける妨害(例えば、よろめき又はつまずき)に適合しうるからである。これに加えて、又はこの代わりに、タッチダウンのタイミング及び/又は場所を調節可能であることは、タイミング又は場所に関する正確な入力の懸念を伴うことなしに、(例えば、ロボット100の脚120用の)マニューバ210の運動イベント212が相対的に容易に記述されることを許容している。換言すれば、ユーザー10は、ほぼ実現可能である振る舞いのみを記述すればよく(即ち、マニューバ210を生成すればよく)、ソルバ230が、実際に実現可能である解232を判定することができる。また、間接的に言えば、ソルバ230は、ロボット100用のCOMと、ロボット100用の向き軌跡と、を判定することができる。ここで、ソルバ230は、COM及び向き軌跡を間接的に判定しており、その理由は、これらの値が、解の接触力236及び順動力学から導出されうるからである。順動力学は、一般に、ボディのそれぞれの部分ごとに向きを予測するべくボディの力(或いは、トルク)を使用することを意味している。換言すれば、ロボット100の構造的関係を知りマニューバ210を実行するための接触力236を判定することにより、順動力学は、マニューバ210におけるロボット100の力学及び/又は運動学を予測しうる。或いは、この代わりに、ソルバ230は、ロボットボディ110を単一部分を有するものとしてモデル化することもできる。
【0048】
[0052] ソルバ230は、ロボット100の向きを判定するべく試みており、この場合に、向きは、問題222用のトルクに基づいた解232である。トルクに基づいた解を求めることにより、ソルバ230は、位置ベクトルによって乗算された力として計測されるロボット100のトルクに合焦している。ここで、ソルバ230がこれらの項(例えば、力又は位置ベクトルのいずれか)の1つを判定するべく試みている場合に、ソルバ230は、二次問題(QP)を利用可能となり、この場合に、解プロセスは線形となろう。残念ながら、ソルバ230は、未知の力項及び未知の位置ベクトル項の両方(即ち、二次項)を最適化するべく試みていることから、ソルバ230は、その基本的形態において従来のQPに依存することができない。その代わりに、ソルバ230は、問題を線形化している。
【0049】
[0053] いくつかの実装形態において、ソルバ230は、足124との関係におけるボディ110の場所(即ち、位置ベクトル項)の及び更には足124における力(即ち、力項)の解を同時に判定するべく試みている。ここで、ソルバ230は、これらの変数の両方について解くべく試みていることから、問題222は、線形最適化問題ではなく、非線形最適化問題(例えば、二次問題)である。通常、これは、ソルバ230がQPによっては最適化されえないことを意味している。その一方で、その他の相対的に一般的な最適化方法は、QPほどには効果的ではなく、その理由は、相対的に一般的なソルバ(例えば、逐次二次問題)は、格段に多くの量の時間を所要しており、従って、ロボット100が、ロボット100がマニューバ210を実行する際にバランス又はロボット物理学の観点において反応性の又は場合によっては積極的なものになることを許容する速度要件の充足を可能にしないからである。この問題を克服するべく、ソルバ230は、問題222を非線形最適化問題222(例えば、二次問題)から線形最適化問題222に変換するべく、いくつかの仮定を実施することにより、力学を線形化している。変換を説明すれば、ソルバ230は、実際に変数を1つに乗算しうることなしに、2つの変数(即ち、力と位置ベクトル)の積であるモーメントを判定することを所望している。いくつかの例において、ソルバ230は、これらの2つの変数の積を不正確である線形表現として表している。その一方で、ソルバ230は、それぞれの変数ごとに推測又は推定が誤っている程度の積により、この不正確性を表している。従って、それぞれの変数の推測が改善されるのに伴って、固有の誤差(即ち、線形化の不正確性)が縮小している。
【0050】
[0054] いくつかの実装形態において、ソルバ230は、それぞれの時間ステップ224においてグラウンド表面12との接触状態にあるそれぞれの脚120ごとに接触力236を判定するように構成されている。ここで、接触力236は、三次元の力である(例えば、x、y、及び/又はz方向における力成分を含みうる)。それぞれの時間ステップ224ごとに、ソルバ230は、接触力236が区分的定数であるものと仮定しうる。換言すれば、ソルバ230は、接触力236が特定の時間ステップ224において変化しないものと仮定することができる。いくつかの構成において、ソルバ230は、ロボット100のボディ状態238をロボット100のCOM位置、ロボット100のCOM速度、(例えば、オイラー角又は四元数に基づいた)ロボット100の向き、及びワールド基準フレーム内のロボット100の角速度として定義している。ソルバ230は、接触力236を判定するのに伴って、順動力学を使用してマニューバ210のそれぞれの時間ステップ224におけるボディ状態238を判定することができる。
【0051】
[0055] いくつかの例において、ソルバ230によって定義されているロボット100のボディ状態238は、ロボット100の単純な剛性ボディモデルである。換言すれば、ソルバ230は、ロボット100が、ロボット100のボディ110に結合した関節接続可能な関節を有する脚120を有する脚付きロボット100となることを考慮してはいない。ロボット100を単純な剛性ボディとしてモデル化することにより、ソルバ230によって判定されるボディ状態238は、いくつかの不正確性を有しうる。例えば、ロボット100は、単純な剛性ボディよりも複雑であることから、ロボット100のボディ状態238から導出されるロボット100の力学は、ある程度の不正確性を有する可能性が高い一方で、ロボット100の運動学は、かなり正確なものになりうる。いくつかの例において、剛性ボディの観点におけるボディ状態238におけるロボット100の向きを定義する代わりに、ロボット100の向きは、ロボット100の自然な姿勢の観点において定義されており、この場合に、自然な姿勢は、ロボット100の更なる慣性体(例えば、関節を有する脚120、腕126、部材128、など)を解明している。ここで、自然な姿勢を使用することにより、ロボット100の力学(例えば、脚120のモーション)の精度の程度の向上とロボット100の運動学との関係における精度(例えば、股関節Jがロボット100上において配置されている場所に関する精度)の程度の低下の間には、トレードオフが存在している。いくつかの構成において、ソルバ230は、それぞれの方式の利点をブレンドするべく、機械学習(例えば、ニューラルネットワーク)を使用している。例えば、ソルバ230は、自然な姿勢の観点においてロボット100のボディ状態238の向きを定義しているが、ロボット100の力学が依然として正確なものになるように及び自然な姿勢を使用したロボット100の運動学の精度が向上するように、運動学に対するオフセットを判定するべく機械学習を使用している。
【0052】
[0056] いくつかの例において、ソルバ230からの解232は、タッチダウンのタイミングの調節及び/又はタッチダウンの場所の調節を含む。例えば、マニューバ210において、ユーザー10は、タッチダウンのタイミング及び/又はタッチダウンの場所が調節可能であるかどうかを規定している。ユーザー10が、タッチダウンのタイミング及び/又はタッチダウンの場所が調節されうると規定している際には、ソルバ230は、(例えば、最適化が調節を通知している場合には)解232の一部分としてこれらの調節を判定することができる。
【0053】
[0057] 図2Dを参照すれば、いくつかの例において、ソルバ230は、1つ又は複数の解232を反復的に生成している。ここでは、ソルバ230が解232を反復的に生成するのに伴って、問題222がそれぞれの反復Iごとに変化している。この方式は、逐次QPなどの相対的に一般的なソルバと対照的である。逐次QPがQPを解く際に、逐次QPは、同一のQPを再線形化し解くべく、その解を使用している。これは、反復に基づいた方式であるが、逐次QPは、最適化問題が解の間において変化することを許容していない。ソルバ230のケースにおいては、ソルバ230がまず第1反復I、IにおいてQPを解いた際に、第1解232、232aは、問題222を非線形最適化問題222(例えば、二次問題)から線形最適化問題222に変換するべく実施された仮定に起因して、正確な解232に対応してはいない。但し、非線形最適化問題222(例えば、二次問題)から線形最適化問題222への変換に起因して、第1解232aを不正確な解232にしている線形化誤差は、誤差が正確な解232に収束するべく反復的に低減されうるように二次のものである。従って、第1解232aよりも正確な解232を生成するべく、第1解232aが問題222の次の反復I、Iにおいて線形化するための推測としてソルバ230にフィードバックされている。ここで、問題は、それぞれの反復Iにおいて変化しており222、その理由は、問題222がロボット100の現時点の状態202を解明しており、現時点の状態202が任意の時間の通過について更新されているからである。換言すれば、問題222の反復Iの間にわずかな量の時間が存在しうる(例えば、問題222がロボット100について時計の刻みtごとに解かれるべく試みられている)際にも、問題222は、ソルバ230について変化している。以前の反復Iの解232を現時点の反復Iの線形化推定として使用することにより、ソルバ230は、正確な解232において収束するべく、それぞれの反復Iごとに誤差を縮小させている。解232の品質は、解232を(例えば、それぞれの反復Iにおいて)統合された解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による振る舞い制御のために更に正確である。
【0054】
[0058] いくつかの実装形態において、ソルバ230は、力学を線形化しており、これが、ソルバ230がQPとして定式化しうる及びQPソルバによって解くことができる二次費用関数に伴う問題を生成している。ソルバ230が力学を線形化できなかった場合には、費用関数は、相対的に複雑であった、即ち、二次よりも高次であった、ということになろう。これは、QPとして定式化することが可能ではなく、従って、QPソルバによって解くことができない。このような問題を解くことができる相対的に一般的なソルバの一例は、逐次二次計画法(SQP)と呼称されている。SQPは、QPを解くこと及び新しいQPを再線形化するべく解を使用することに似たものを実行している。従って、いくつかのインスタンスにおいて、ソルバ230は、また、非線形問題がQP反復の間において変化することを許容しつつ、オリジナルの非線形問題についてSQPソルバを実行している。更には、再線形化された解は、一旦終了したら再開するのではなく、変化を維持している。
【0055】
[0059] 任意選択により、ソルバ230は、統合された解232iと任意の個々の解232の間の比較が最適化閾値を充足していることを判定することにより、マニューバ210用の運動を制御するべく十分な正確性を提供する解反復を判定するように構成することができる。ここで、最適化閾値は、解232がマニューバ210を実行するための成功の尤度を有することになることを通知する程度の既定の精度である。いくつかの例において、比較は、異なる比較である。その他の例においては、比較は、(例えば、収量百分率に非常に類似した)比率比較である。
【0056】
[0060] いくつかの実装形態において、ソルバ230のQPは、費用関数及びいくつかの線形制約である。ソルバ230は、問題222の最適化を実現するべくこれらの費用制約を充足するべく試みている。これらの費用制約は、マニューバ210においてユーザー規定されてもよく、ソルバ230にとってユニバーサルなものであってもよく、及び/又は、エンティティ(例えば、ユーザー10)によって制御可能なその他の設定であってもよい。いくつかの例において、ソルバ230は、接触力236を極小化するべく費用項240を含む。費用項240の別の例は、ソルバ230がターゲットポーズPを実現するべく試みるというものであり、この場合に、ターゲットポーズPは、関連する値(例えば、割り当てられた重要性の費用)を有する。ターゲットポーズPは、マニューバ210の運動軌跡の末尾においてのみ(即ち、最終的ポーズPとして)発生してもよく、或いは、ターゲットポーズPは、マニューバ210内のその他の時点において(例えば、それぞれの時間ステップ224又は1つ又は複数の指定された時間ステップ224において)発生してもよい。ソルバ230用のその他の潜在的な費用項240は、公称タッチダウンタイミング及び/又は公称タッチダウン場所からの最大及び/又は最小逸脱を含む。ここで、これらの費用項240は、ユーザー10にとってのタッチダウンの場所及びタイミングの重要性の程度を決定しうる。これに加えて、又はこの代わりに、ユーザー10は、足124との関係において臀部の位置を規定する費用項240を含むことができる。また、問題222は、ユーザー10がカスタム費用項240(例えば、カスタム運動)を含みうるように構成することもできる。例えば、ユーザー10は、ロボット100が可能な限り高くジャンプする又は特定の方向に可能な限り遠くまで傾斜することを要することを通知する費用項240を規定している。いくつかの構成において、ソルバ230は、マニューバ210のために使用される関節Jの関節トルクを極小化するための(又は、関節トルクを極大化するための)費用項240を含む。これらの費用項240は、それぞれ、別個に記述されているが、ソルバ230には、これらの費用項240の1つ又は複数を(例えば、任意の組合せにおいて)適用することができる。
【0057】
[0061] 制約は、不等性又は等性制約であってよい。いくつかの例において、ソルバ230は、摩擦制約240fを(例えば、不等性として)含む。接触力236は、ソルバ230用の最適化変数であることから、摩擦制約240fは、これらの最適化変数に依存するように直接的に記述することができる。ここで、摩擦制約240fの構成は、一般に、円錐形状又はピラミッド形状(例えば、4つの側部を有する三次元ピラミッド)を有する関数に似ている。摩擦制約240fを円錐として実装するべく、ソルバ230は、反復制約(例えば、脚長さ制約)を使用することができる。これらの例のいくつかにおいて、摩擦制約240fの関数は、関数の最小値が正の非ゼロ値となるようにすることにより、(例えば、小さな力値において)わずかな非正確性を有するコントローラ172に対応している。
【0058】
[0062] いくつかの実装形態において、ソルバ230は、反復制約240、240iを使用している。反復制約240iは、ソルバ230の特徴を活用する制約240を意味しており、この場合に、ソルバ230は、更なる制約240を追加してもよく、解くことを継続してもよく、或いは、問題222を再開することなしに迅速解232を実行してもよい。反復制約240iは、制約240が非線形関数として一般的に最良に表現されることになる際に有用となりうるが、このタイプの制約240は、ソルバ230のQPと互換性を有してはいない。非線形関数をいくつかの個々の線形制約240の近似として表すべく試みる代わりに、ソルバ230は、まず、反復制約240iを伴うことなしに解232を生成している。次いで、解232がターゲット非線形制約240に違反することになるかどうかを判定するべく、この解232が検査されている。解232がターゲット非線形制約240に違反することになるとソルバ230が識別した際には、ソルバ230は、反復制約240iを生成することができる。ここで、反復制約240iは、ソルバ230が問題222を解くのに伴って、解232をソルバ230と互換性を有する線形制約として更に制約している。まず、非線形制約を伴なうことなしに問題を解くことにより、ソルバ230は、最も正確となる非線形制約の線形近似を相対的に良好に判定することができる。
【0059】
[0063] 例えば、図2Eは、ロボット100の脚120の長さがロボット100の臀部(例えば、股関節J)の位置の関数として制約されうる脚長さ制約240を表す点線円を示している。換言すれば、股関節Jの位置が点線円内にある限り、ロボット100は、脚長さ制約240を充足することになろう。残念ながら、点線円は、非線形制約240、240nlとなろう。ここで、ソルバ230は、ロボット100のために(例えば、第1ボックスとして示されている)第1解232、232aを生成しており、この第1解232aがロボット100の臀部の位置を表す点線円の非線形制約240nlに違反することになることを識別している。この違反に起因して、ソルバ230は、第1解232aの近傍の円上の地点に接するラインとして示されている反復制約240iを生成している。反復制約240iによれば、ソルバ230は、第2解232、232bのなんらかの部分が点線円の非線形制約240nl内にある状態において、(例えば、第2ボックスとして示された)第2解232、232bを生成している。ここで、第1解232a及び第2解232bは、ソルバ230が問題222を再線形化しないように(即ち、解232a~bが同一の時間刻みtにおいて発生するように)、同一のQP反復I、tにおいて発生している。反復制約240iは、線形化反復Iにおいて、アドオン制約240として機能している。換言すれば、反復制約240iは、所与の問題222内において反復において発生している一方で、線形化反復は、ソルバ230が新しい又は後続の将来時点において(例えば、後続の時間刻みtにおいて)問題222を解いた際に発生している。ソルバ230は、最大脚長さ又は最小脚長さについての制約240を含みうる。
【0060】
[0064] ソルバ230用の制約240の別の例は、臀部制約240、240hである。ここで、臀部制約240hは、それぞれの脚120の上部部材128がX-Z前頭面(ボディプレーンとも呼称される)内においてy方向軸Aを中心として股関節Jにおいて回転するべく限られたモーションの範囲を有することを表している。上部部材128の過回転は、ロボット100のボディ110に対する影響又はこれとの間の干渉を生成することになろう。いくつかの実装形態において、臀部制約240hは、上部部材128を有する脚120に対応するロボット100の足124の足位置を制約するX-Z前頭面内におけるラインとして表されている。足位置のX-Z位置を制約することにより、上部部材128は、過回転の課題を生成しないであろう。
【0061】
[0065] いくつかの例において、リフトオフ/タッチダウンのタイミング及び/又は位置に関する制約240が存在している。ユーザー10は、ソルバ230がタッチダウン/リフトオフのタイミング及び/又はタッチダウン/リフトオフの場所を調節しうると規定してもよいが、これらの調節は、これらの調節の範囲又は程度を識別する制約240を含みうる。例えば、タッチダウン場所の制約240は、多角形領域として表され、この場合に、多角形領域は、正当なタッチダウンエリアを表している。
【0062】
[0066] 解232によれば、マニューバコントローラ200は、問題222のマニューバ210に対応する振る舞い(例えば、振る舞いの最適化されたバージョン)を実行するように構成されている。換言すれば、マニューバコントローラ200は、マニューバ200を実行するために、解232を1つ又は複数のコマンド204に実際に変換しなければならない。例えば、マニューバコントローラ200は、マニューバ210を実行するべく、マニューバ210に対応する1つ又は複数の関節Jを制御するコマンド204(例えば、関節コマンド204と呼称される)を生成している。ここで、コマンド204は、ソルバ230からの解232に基づいて関節トルクTを関節Jに割り当てることができる。これに加えて、又はこの代わりに、コマンド204は、望ましい位置/速度を関節Jに割り当てることができる。一般に、スタンス脚は、トルク制御されているが、スイング脚は、位置制御されている。
【0063】
[0067] いくつかの実装形態において、脚付きロボット100の場合には、マニューバコントローラ200は、スタンス脚120ST及び/又はスイング脚120SWを操作することにより、振る舞いを実行している。脚120の操作を実行するべく、マニューバコントローラ200は、解232をスタンス脚120ST及び/又はスイング脚120SWに適用するべく異なるプロトコルを有することができる。また、図2F図2Gなどのいくつかの構成において、ソルバ230から解232を実際の運動制御に変換するべく、マニューバコントローラ200は、ハンドラ250も含む。いくつかの例において、ハンドラ250は、一般に、解232から1つ又は複数の接触力236、1つ又は複数のタッチダウン場所、及び/又はタッチダウンタイミングを識別するように、及びスタンス脚120ST及び/又はスイング脚120SWを制御するべく解232のこれらの部分を実装するように構成されている。これらの構成において、ハンドラ250は、スタンス脚120ST用のターゲット力としての解232からの接触力236、スタンス脚120STの関節Jのトルク限度制約240、240t、及び摩擦制約240fを入力として受け取っている。これらの入力に基づいて、ハンドラ250は、スタンス脚120STの関節Jにおいて印加するべき関節トルクTを判定している。いくつかの構成において、ハンドラ250が解232に基づいてロボット100の1つ又は複数のスタンス脚120STを制御するために、ハンドラ250は、(例えば、図2Gにおいて示されているように)入力を受け取り、スタンス脚120STの関節Jにおいて印加するべき関節トルクTを判定するQPなどの最適化モデル252を含むことができる。ハンドラ250を使用することにより、マニューバコントローラ200は、(例えば、ソルバ230におけるトレードオフにより)ソルバ230において違反された状態でありうる又は部分的に違反された状態でありうる制約240が1つ又は複数のスタンス脚120STを制御する際に実際に解明されることを保証することができる。さもなければ、マニューバ210を実現するべく及び/又はマニューバ210においてバランスを維持するべく、実際の制御が問題となりうる。例えば、ソルバ230は、摩擦制約240を遵守しているがトルク限度制約240tを遵守してはいない接触力236を判定することができる。この例において、ハンドラ250が摩擦制約240fではなくトルク限度制約240tを考慮した場合には、ハンドラ250は、トルク限度制約240tを遵守するべく関節トルクTを変更しうると共に、スタンス脚120STの実際の制御の際に摩擦制約240fに違反しうる。これらの課題を克服するべく、ハンドラ250は、ロボット100用の最適な実際の制御を保証するべく、制約240を複製するように構成されている。ハンドラ250は、ロボット100のそれぞれの脚120用の個々の最適化モデルを含んでいてもよく、或いは、(例えば、脚120の間における不足について補償するべく)複数の脚120の間において関節制御を割り当てる能力を有する複数の脚120用の相対的に大規模な最適化モデルを含んでいてもよい。
【0064】
[0068] スイング脚120SWは、ソルバ230からの解232に基づいて(例えば、解232のタッチダウン位置及び/又はタッチダウンタイミングに基づいて)様々な方法においてマニューバコントローラ210によって(例えば、ハンドラ250によって)制御することができる。いくつかの例において、マニューバコントローラ210は、マニューバ210の仕様に従ってスイング脚120SWを制御している。例えば、ユーザー10は、マニューバ210において、スイング脚120がタッチダウンについて狙っているウェイポイントを規定している。ここで、マニューバ210によって規定されているウェイポイントは、時間に従って又は位置に従って規定することができる。ユーザー10が位置の観点においてウェイポイントを規定しているケースにおいては、マニューバコントローラ200は、その位置に対応するタイミングを判定することができる。いくつかの特別な状況において、マニューバコントローラ200は、スイング脚120SWが相対的に水平方向の表面(例えば、グラウンド表面12)ではなく垂直方向の表面(即ち、実質的に非垂直方向法線を有する表面)上においてタッチダウンするようなスイング脚運動を命じるべく解232を使用するように構成されている。いくつかの構成において、マニューバコントローラ200は、ソルバ230からの解232に基づいてロボット100の1つ又は複数のスイング脚120SWを制御するべく、引用によって本明細書に包含される「Leg Swing Trajectories」という名称を有する2019年8月6日付けで出願された米国特許出願第62/883,502号において記述されているスイング脚制御技法を利用している。
【0065】
[0069] いくつかの実装形態において、ソルバ230は、完了するために可変量の時間を所要しうる。更には、ソルバは、多くの能動的制約240が存在している場合には、特に長時間を所要する場合があり、これは、なにか難しいことを実行していることを一般に意味している。マニューバコントローラ200は、解232用のソルバ230の実行をキャンセルすることにより、及び、相対的に短い実行時間を有する部分的にのみ最適化された解232を使用することにより、これを処理することができる。更には、ソルバ230は、以前の解の周りにおける線形化に依存しうることから、ソルバ230は、収束するべく、不良な解232が発生しうるいくつかの反復を実行しうる。但し、ソルバ230は、線形化が良好に稼働している程度の尺度を使用することにより、これが発生している時点を認知している。これに応答して、制御システム170は、非常に最適ではありえないが望ましいコントローラ172、200が収束するべく必要とされている数時間ステップ(例えば、通常は、<10ms)について受け入れ可能であるバックアップコントローラ172、200を規定することができる。制御システム170は、コントローラ172をバックアップコントローラ172として規定することにより、以前に実行していたものの実行を継続することができる。
【0066】
[0070] 図3は、少なくとも1つのマニューバ210を動的に計画する方法300の動作の例示用の構成である。動作302において、方法300は、ロボット100のマニューバ210及びロボット100の現時点の状態202を受け取っており、この場合に、マニューバ210は、ロボット100が実行するべき1つ又は複数の運動イベント212を含む。動作304において、方法300は、ロボット100のマニューバ210及び現時点の状態202を非線形最適化問題222に変換しており、この場合に、非線形最適化問題222は、未知の力及び未知の位置ベクトルを最適化するように構成されている。動作306において、方法300は、第1時間インスタンスI、tにおいて2つのサブ動作306、306a~bを実行している。サブ動作306aにおいて、方法300は、非線形最適化問題222を第1線形最適化問題222、222aに線形化している。サブ動作306bにおいて、方法300は、二次計画法を使用して第1線形最適化問題222aに対する第1解232、232aを判定している。動作308において、方法300は、第2時間インスタンスI、tにおいて2つのサブ動作308、308a~bを実行しており、この場合に、第2時間インスタンスI、tは、第1時間インスタンスI、tに後続している。サブ動作308aにおいて、方法300は、第1時間インスタンスtにおいて第1解232aに基づいて非線形最適化問題222を第2線形最適化問題222、222bに線形化している。サブ動作308bにおいて、方法300は、二次計画法を使用して第1解232aに基づいて第2線形最適化問題222bに対する第2解232、232bを判定している。動作310において、方法300は、第2解232bに基づいてマニューバ210においてロボット100のモーションを制御するべく関節コマンド204を生成している。
【0067】
[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を含む。
【0068】
[0072] 図4は、本明細書において記述されているシステム(例えば、マニューバコントローラ200)及び方法(例えば、方法300)を実装するべく使用されうる例示用の演算装置400の概略図である。演算装置400は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバー、ブレードサーバー、メインフレーム、及びその他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを意図したものである。ここで示されているコンポーネント、その接続及び関係、並びに、その機能は、例示を目的としたものに過ぎず、本明細書において記述されている及び/又は特許請求されている本発明の実装形態を限定することを意図したものではない。
【0069】
[0073] 演算装置400は、プロセッサ410(例えば、データ処理ハードウェア)、メモリ420(例えば、メモリハードウェア)、ストレージ装置430、メモリ420及び高速拡張ポート450に接続している高速インターフェイス/コントローラ440、並びに低速バス470及びストレージ装置430に接続している低速インターフェイス/コントローラ460を含む。コンポーネント410、420、430、440、450、及び460のそれぞれは、様々なバスを使用して相互接続されており、共通マザーボード上において又は適宜その他の方式によって取り付けることができる。プロセッサ410は、高速インターフェイス440に結合されたディスプレイ480などのグラフィカルユーザーインターフェイス(GUI)用のグラフィカル情報を外部入出力装置上において表示するべく、演算装置400内における実行のために、メモリ420内において又はストレージ装置430上において保存されている命令を含む命令を処理することができる。その他の実装形態においては、適宜、複数のメモリ及び複数のタイプのメモリと共に、複数のプロセッサ及び/又は複数のバスを使用することができる。また、それぞれの装置が必要な動作の一部分を提供している状態において、(例えば、サーバーバンク、ブレードサーバーのグループ、又はマルチプロセッサシステムとして)複数の演算装置400を接続することもできる。
【0070】
[0074] メモリ420は、一時的ではない情報を演算装置400内において保存している。メモリ420は、コンピュータ可読媒体、1つ又は複数の揮発性メモリユニット、又は1つ又は複数の不揮発性メモリユニットであってよい。一時的ではないメモリ420は、演算装置400による使用のために、一時的な又は永久的な方式でプログラム(例えば、命令のシーケンス)又はデータ(例えば、プログラム状態情報)を保存するべく使用される物理的な装置であってよい。不揮発性メモリの例は、限定を伴うことなしに、フラッシュメモリ及び読み出し専用メモリ(ROM)/プログラム可能な読み出し専用メモリ(PROM)/消去可能なプログラム可能な読み出し専用メモリ(EPROM)/電子的に消去可能なプログラム可能な読み出し専用メモリ(EEPROM)(例えば、ブートプログラムなどのファームウェア用に通常使用されているもの)を含む。揮発性メモリの例は、限定を伴うことなしに、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)のみならず、ディスク又はテープを含む。
【0071】
[0075] ストレージ装置430は、演算装置400用のマスストレージを提供する能力を有する。いくつか実装形態において、ストレージ装置430は、コンピュータ可読媒体である。様々な異なる実装形態において、ストレージ装置430は、フロッピーディスク装置、ハードディスク装置、光ディスク装置、又はテープ装置、フラッシュメモリ又はその他の類似の半導体メモリ装置、或いは、ストレージエリアネットワーク又はその他の構成における装置を含む装置のアレイであってよい。更なる実装形態において、コンピュータプログラムプロダクトは、情報担持体内において有体的に実施されている。コンピュータプログラムプロダクトは、実行された際に上述のものなどの1つ又は複数の方法を実行する命令を収容している。情報担持体は、メモリ420、ストレージ装置430、又はプロセッサ410上のメモリなどのコンピュータ又は機械可読媒体である。
【0072】
[0076] 高速コントローラ440は、演算装置400用の帯域幅集約的動作を管理している一方で、低速コントローラ460は、相対的に低帯域幅集約的動作を管理している。このような役割の割当は、例示を目的としたものに過ぎない。いくつかの実装形態において、高速コントローラ440は、メモリ420に、(例えば、グラフィクスプロセッサ又はアクセレレータを通じて)ディスプレイ480に、及び、様々な拡張カード(図示されてはいない)を受け入れうる高速拡張ポート450に、結合されている。いくつかの実装形態において、低速コントローラ460は、ストレージ装置430及び低速拡張ポート490に結合されている。様々な通信ポート(例えば、USB、Bluetooth、Ethernet、無線Ethernet)を含みうる低速拡張ポート490は、キーボード、ポインティング装置、及びスキャナなどの1つ又は複数の入出力装置に、或いは、例えば、ネットワークアダプタを通じて、スイッチ又はルーターなどのネットワーキング装置に、結合することができる。
【0073】
[0077] 演算装置400は、図示されているように、いくつかの異なる形態において実装することができる。例えば、これは、スタンダードサーバー400aとして実装されてもよく、或いは、多数回にわたってこのようなサーバー400aのグループにおいて実装されてもよく、ラップトップコンピュータ400bとして実装されてもよく、ラックサーバーシステム400cの一部として実装されてもよく、或いは、ロボット100の一部として実装されてもよい。
【0074】
[0078] 本明細書において記述されているシステム及び技法の様々な実装形態は、デジタル電子及び/又は光回路、集積回路、特別に設計されたASIC(用途固有の集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組合せにおいて実現することができる。これらの様々な実装形態は、ストレージシステム、少なくとも1つの入力装置、及び少なくとも1つの出力装置との間においてデータ及び命令を受信及び送信するべく結合された特殊目的又は汎用でありうる少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上において実行可能及び/又は解釈可能である1つ又は複数のコンピュータプログラムにおける実装形態を含みうる。
【0075】
[0079] これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼称される)は、プログラム可能なプロセッサ用の機械命令を含み、ハイレベルな手続き型及び/又はオブジェクト指向のプログラミング言語において及び/又はアセンブリ/機械言語において実装することができる。本明細書において使用されている「機械可読媒体」及び「コンピュータ可読媒体」という用語は、任意のコンピュータプログラムプロダクト、一時的ではないコンピュータ可読媒体、機械可読信号として機械命令を受け取る機械可読媒体を含む、プログラム可能なプロセッサに機械命令及び/又はデータを提供するべく使用される、装置及び/又は機器(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能な論理装置(PLD))を意味している。「機械可読信号」という用語は、機械命令及び/又はデータをプログラム可能なプロセッサに提供するべく使用される任意の信号を意味している。
【0076】
[0080] 本明細書において記述されているプロセス及び論理フローは、入力データに対して動作し出力を生成することによって機能を実行するべく1つ又は複数のコンピュータプログラムを実行する1つ又は複数のプログラム可能なプロセッサによって実行することができる。また、プロセス及び論理フローは、例えば、FPGA(フィールドプログラム可能なゲートアレイ)又はASIC(用途固有の集積回路)などの特殊目的論理回路によって実行することができる。コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び特殊目的マイクロプロセッサの両方と、任意の種類のデジタルコンピュータの任意の1つ又は複数のプロセッサと、を含む。一般に、プロセッサは、読み出し専用メモリ又はランダムアクセスメモリ又は両方から命令及びデータを受け取ることになる。コンピュータの基本的な要素は、命令を実行するためのプロセッサと、命令及びデータを保存するための1つ又は複数のメモリ装置と、である。また、一般に、コンピュータは、例えば、磁気ディスク、磁気光ディスク、又は光ディスクなどのデータを保存するための1つ又は複数のマスストレージ装置を含むことになるか、或いは、これらとの間においてデータを受信又は送信するべく動作自在に結合されることになるか、或いは、これらの両方である。但し、コンピュータにとって、このような装置は、必須のものではない。コンピュータプログラム命令及びデータを保存するのに適したコンピュータ可読媒体は、例として、例えば、EPROM、EEPROM、及びフラッシュメモリ装置などの半導体メモリ装置、例えば、内部ハードディスク又は着脱自在のディスクなどの磁気ディスク、磁気光ディスク、並びに、CD-ROM及びDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、及びメモリ装置を含む。プロセッサ及びメモリは、特殊目的論理回路によって補完することが可能であり、或いは、これらの内部において内蔵することもできる。
【0077】
[0081] ユーザーとの間のやり取りを提供するために、本開示の1つ又は複数の態様は、情報をユーザーに対して表示するべく、例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、又はタッチスクリーンなどの表示装置と、任意選択により、ユーザー入力をコンピュータに対して提供しうる、例えば、マウス又はトラックボールなどのキーボード及びポインティング装置と、を有するコンピュータ上において実装することができる。同様に、ユーザーとの間のやり取りを提供するべく、その他の種類の装置を使用することも可能であり、例えば、ユーザーに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなどの任意の形態の感覚フィードバックであることが可能であり、ユーザーからの入力も、音響、発話、又は触覚入力を含む任意の形態において受け取ることができる。これに加えて、コンピュータは、例えば、ウェブブラウザから受け取られた要求に応答してユーザーのクライアント装置上のウェブブラウザにウェブページを送信するなどにより、ユーザーによって使用されている装置との間において文書を送信及び受信することにより、ユーザーとやり取りすることができる。
【0078】
[0082] 以上、いくつかの実装形態について記述した。但し、本開示の精神及び範囲を逸脱することなしに、様々な変更が実施されうることを理解されたい。従って、その他の実装形態も添付の請求項の範囲に含まれている。
図1A
図1B
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図3
図4