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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-28
(45)【発行日】2023-08-07
(54)【発明の名称】脚の揺動軌道
(51)【国際特許分類】
   G05D 1/02 20200101AFI20230731BHJP
   B25J 5/00 20060101ALI20230731BHJP
   B62D 57/032 20060101ALI20230731BHJP
【FI】
G05D1/02 H
B25J5/00 E
B62D57/032 P
【請求項の数】 20
(21)【出願番号】P 2022502160
(86)(22)【出願日】2019-09-13
(65)【公表番号】
(43)【公表日】2022-10-13
(86)【国際出願番号】 US2019051058
(87)【国際公開番号】W WO2021025706
(87)【国際公開日】2021-02-11
【審査請求日】2022-03-10
(31)【優先権主張番号】62/883,502
(32)【優先日】2019-08-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/570,152
(32)【優先日】2019-09-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホイットマン,エリック
【審査官】影山 直洋
(56)【参考文献】
【文献】特開2013-141715(JP,A)
【文献】特開2019-113992(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
B25J 5/00
B62D 57/032
(57)【特許請求の範囲】
【請求項1】
ロボット(10)のデータ処理ハードウェア(36)により、前記ロボット(10)の脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記データ処理ハードウェア(36)により、前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記データ処理ハードウェア(36)により、前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記データ処理ハードウェア(36)により、前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)に前記初期位置(50)から前記着地場所(62)まで揺動させることと、
を含
前記データ処理ハードウェア(36)により、前記垂直運動ポリシセットのうちの第一の垂直運動ポリシ(610)を決定することであって、前記第一の垂直運動ポリシ(610)は、前記脚(12)の垂直加速度を前記脚(12)の垂直加速度限界以内で最大化し、前記脚(12)の垂直速度を前記脚(12)の垂直速度限界以内で最大化する、前記第一の垂直運動ポリシ(610)を決定することをさらに含み、
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、前記水平運動ポリシセットの各水平運動ポリシ(210)を、前記第一の垂直運動ポリシ(610)で評価することを含む、方法(1700)。
【請求項2】
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、
前記水平運動ポリシセットの各水平運動ポリシ(210)に複数のティア(300)のうちのあるティア(300)を割り当てることであって、各ティア(300)は、それぞれの前記ティア(300)を選択するための選好量に関連付けられ、各ティア(300)は、前記水平運動ポリシセットの各水平運動ポリシ(210)に関連付けられるパラメータ(302)を含む、前記ティア(300)を割り当てることと、
前記割り当てられたティア(300)及び前記パラメータ(302)に基づいて、前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択すること
を含む、請求項1に記載の方法(1700)。
【請求項3】
記パラメータ(302)は、前記水平運動ポリシセットの各水平運動ポリシ(210)に関連付けられた水平パラメータと、前記垂直運動ポリシセットの各垂直運動ポリシ(610)に関連付けられた垂直パラメータの合計に基づく総合的パラメータを含む、請求項に記載の方法(1700)。
【請求項4】
ロボット(10)のデータ処理ハードウェア(36)により、前記ロボット(10)の脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記データ処理ハードウェア(36)により、前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記データ処理ハードウェア(36)により、前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記データ処理ハードウェア(36)により、前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)に前記初期位置(50)から前記着地場所(62)まで揺動させることと、
を含み、
前記垂直運動ポリシセットから前記垂直運動ポリシ(610)を選択することは、前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することの後に行われる、方法(1700)。
【請求項5】
前記垂直運動ポリシセットから前記垂直運動ポリシ(610)を選択することは、前記垂直運動ポリシセットから、前記垂直運動成分を満たす最小加速度及び最小速度に関連付けられる前記垂直運動ポリシ(610)を選択することを含む、請求項に記載の方法(1700)。
【請求項6】
方法であって、
ロボット(10)のデータ処理ハードウェア(36)により、前記ロボット(10)の脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記データ処理ハードウェア(36)により、前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記データ処理ハードウェア(36)により、前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記データ処理ハードウェア(36)により、前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)に前記初期位置(50)から前記着地場所(62)まで揺動させることと、
を含み、
前記方法は、
前記データ処理ハードウェア(36)において、前記ロボット(10)によるトリップの表示を受信することと、
前記データ処理ハードウェア(36)により、
第二の水平運動ポリシセットからの水平運動ポリシ(210)であって、前記第二の水平運動ポリシセットはトリッピングに関連付けられる、水平運動ポリシ(210)又は、
第二の垂直運動ポリシセットからの垂直運動ポリシ(610)であって、前記第二の垂直運動ポリシセットはトリッピングに関連付けられる、垂直運動ポリシ(610)
のうちの一方を選択すること
をさらに含む、方法(1700)。
【請求項7】
ロボット(10)のデータ処理ハードウェア(36)により、前記ロボット(10)の脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記データ処理ハードウェア(36)により、前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記データ処理ハードウェア(36)により、前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記データ処理ハードウェア(36)により、前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)に前記初期位置(50)から前記着地場所(62)まで揺動させることと、
を含み、
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、
前記水平運動ポリシセットの各水平運動ポリシ(210)を第一の分析で評価することと、
前記水平運動ポリシセットのサブセットを前記第一の分析に基づく第二の分析で評価することと、
を含む、方法(1700)。
【請求項8】
方法であって、
ロボット(10)のデータ処理ハードウェア(36)により、前記ロボット(10)の脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記データ処理ハードウェア(36)により、前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記データ処理ハードウェア(36)により、前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記データ処理ハードウェア(36)により、前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)に前記初期位置(50)から前記着地場所(62)まで揺動させることと、
を含み、
前記方法は、
前記データ処理ハードウェア(36)において、前記ロボットの複数の脚(12)の各々の前記着地目標時間(64)を受信することと、
前記データ処理ハードウェア(36)において、前記脚(12)の着地順序を、前記ロボットの前記複数の脚(12)の各々の前記着地目標時間(64)に基づいて決定することと、
前記データ処理ハードウェア(36)により、各脚(12)の前記水平運動ポリシ(210)及び前記垂直運動ポリシ(610)を前記着地順序に基づいて選択することと、
をさらに含む、方法(1700)。
【請求項9】
前記垂直運動ポリシセットの各垂直運動ポリシ(610)は、最大速度、最大加速度、及び揺動高さを含む、請求項1~の何れか1項に記載の方法(1700)。
【請求項10】
前記水平運動ポリシセットの少なくとも1つの水平運動ポリシ(210)は、横運動ポリシと縦運動ポリシを含む、請求項1~の何れか1項に記載の方法(1700)。
【請求項11】
ロボット(10)であって、
胴部(11)と、
前記胴部(11)に連結され、環境(8)内で前記ロボット(10)を操縦するように構成された複数の脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)により実行されると、前記データ処理ハードウェア(36)に
前記複数の脚(12)のうちのある脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)において前記初期位置(50)から前記着地場所(62)へと揺動させること
を含む動作を実行させる命令を記憶したメモリハードウェア(38)と、
を含み、
前記垂直運動ポリシセットのうちの第一の垂直運動ポリシ(610)を決定することであって、前記第一の垂直運動ポリシ(610)は、前記脚(12)の垂直加速度を前記脚(12)の垂直加速度限界以内で最大化し、前記脚(12)の垂直速度を前記脚(12)の垂直速度限界以内で最大化する、前記垂直運動ポリシ(610)を決定することをさらに含み、
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、前記水平運動ポリシセットの各水平運動ポリシ(210)を、前記第一の垂直運動ポリシ(610)で評価することを含む、ロボット(10)。
【請求項12】
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、
前記水平運動ポリシセットの各水平運動ポリシ(210)に複数のティア(300)のうちのあるティア(300)を割り当てることであって、各ティアは、それぞれの前記ティア(300)を選択するための選好量に関連付けられ、各ティア(300)は、前記水平運動ポリシセットの各水平運動ポリシ(210)に関連付けられるパラメータ(302)を含む、前記ティア(300)を割り当てることと、
前記水平運動ポリシセットから前記水平運動ポリシ(210)を、前記割り当てられたティア(300)及び前記パラメータ(302)に基づいて選択すること
を含む、請求項11に記載のロボット(10)。
【請求項13】
記パラメータ(302)は、前記水平運動ポリシセットの各水平運動ポリシ(210)に関連付けられた水平パラメータと、前記垂直運動ポリシセットの各垂直運動ポリシ(610)に関連付けられた垂直パラメータの合計に基づく総合的パラメータを含む、請求項12に記載のロボット(10)。
【請求項14】
ロボット(10)であって、
胴部(11)と、
前記胴部(11)に連結され、環境(8)内で前記ロボット(10)を操縦するように構成された複数の脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)により実行されると、前記データ処理ハードウェア(36)に
前記複数の脚(12)のうちのある脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)において前記初期位置(50)から前記着地場所(62)へと揺動させること
を含む動作を実行させる命令を記憶したメモリハードウェア(38)と、
を含み、
前記垂直運動ポリシセットから前記垂直運動ポリシ(610)を選択することは、前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することの後に行われる、ロボット(10)。
【請求項15】
前記垂直運動ポリシセットから前記垂直運動ポリシ(610)を選択することは、前記垂直運動ポリシセットから、前記垂直運動成分を満たす最小加速度及び最小速度に関連付けられる前記垂直運動ポリシ(610)を選択することを含む、請求項14に記載のロボット(10)。
【請求項16】
ロボット(10)であって、
胴部(11)と、
前記胴部(11)に連結され、環境(8)内で前記ロボット(10)を操縦するように構成された複数の脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)により実行されると、前記データ処理ハードウェア(36)に
前記複数の脚(12)のうちのある脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)において前記初期位置(50)から前記着地場所(62)へと揺動させること
を含む動作を実行させる命令を記憶したメモリハードウェア(38)と、
を含み、
前記動作は、
前記ロボット(10)によるトリップの表示を受信することと、
第二の水平運動ポリシセットからの水平運動ポリシ(210)であって、前記第二の水平運動ポリシセットはトリッピングに関連付けられる、水平運動ポリシ(210)又は、
第二の垂直運動ポリシセットからの垂直運動ポリシ(610)であって、前記第二の垂直運動ポリシセットはトリッピングに関連付けられる、垂直運動ポリシ(610)
のうちの一方を選択すること
をさらに含む、ロボット(10)。
【請求項17】
ロボット(10)であって、
胴部(11)と、
前記胴部(11)に連結され、環境(8)内で前記ロボット(10)を操縦するように構成された複数の脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)により実行されると、前記データ処理ハードウェア(36)に
前記複数の脚(12)のうちのある脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)において前記初期位置(50)から前記着地場所(62)へと揺動させること
を含む動作を実行させる命令を記憶したメモリハードウェア(38)と、
を含み、
前記動作は、
前記水平運動ポリシセットから前記水平運動ポリシ(210)を選択することは、
前記水平運動ポリシセットの各水平運動ポリシ(210)を第一の分析で評価することと、
前記水平運動ポリシセットのサブセットを前記第一の分析に基づく第二の分析で評価することと、
を含む、ロボット(10)。
【請求項18】
ロボット(10)であって、
胴部(11)と、
前記胴部(11)に連結され、環境(8)内で前記ロボット(10)を操縦するように構成された複数の脚(12)と、
前記脚(12)と通信するデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信するメモリハードウェア(38)であって、前記データ処理ハードウェア(36)により実行されると、前記データ処理ハードウェア(36)に
前記複数の脚(12)のうちのある脚(12)の初期位置(50)と前記脚(12)の着地場所(62)との差を水平運動成分と垂直運動成分に分離することと、
前記水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ(210)を選択することであって、各水平運動ポリシ(210)は、前記脚(12)の前記初期位置(50)、前記脚(12)の初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の着地目標時間(64)に応じて水平軌道を生成する、前記水平運動ポリシ(210)を選択することと、
前記垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ(610)を選択することであって、各垂直運動ポリシ(610)は、前記脚(12)の前記初期位置(50)、前記脚(12)の前記初期速度、前記脚(12)の前記着地場所(62)、及び前記脚(12)の前記着地目標時間(64)に応じて垂直軌道を生成する、前記垂直運動ポリシ(610)を選択することと、
前記選択された水平運動ポリシ(210)と前記選択された垂直運動ポリシ(610)を実行して、前記ロボットの前記脚(12)を前記着地目標時間(64)において前記初期位置(50)から前記着地場所(62)へと揺動させること
を含む動作を実行させる命令を記憶したメモリハードウェア(38)と、
を含み、
前記動作は、
前記ロボットの前記複数の脚(12)の各々の前記着地目標時間(64)を受信することと、
前記複数の脚(12)の着地順序を、前記ロボットの前記複数の脚(12)の各々の前記着地目標時間(64)に基づいて決定することと、
各脚(12)の前記水平運動ポリシ(210)及び前記垂直運動ポリシ(610)を前記着地順序に基づいて選択することと、
をさらに含む、ロボット(10)。
【請求項19】
前記垂直運動ポリシセットの各垂直運動ポリシ(610)は、最大速度、最大加速度、及び揺動高さを含む、請求項1118の何れか1項に記載のロボット(10)。
【請求項20】
前記水平運動ポリシセットの少なくとも1つの水平運動ポリシ(210)は、横運動ポリシと縦運動ポリシを含む、請求項1118の何れか1項に記載のロボット(10)。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
[0001] 本開示は、ロボットの脚揺動軌道に関する。
【背景技術】
【0002】
背景
[0002] ロボット装置は、制約された、又はそれ以外に制限された環境内で様々な作業や又は機能を果たすために、ますます利用されている。これらのロボット装置は多くの場合、このような制約された環境内で障害物を踏んだり又はぶつかったりしないように、効率的にナビゲートする必要がある。こうしたロボット装置がさらに普及する中で、バランスと速度を保持しながら、障害物との接触を回避するリアルタイムでのナビゲーション及びステップ計画が求められている。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
[0003] 本開示の1つの態様は、ロボットの脚のための揺動軌道の計画方法を提供する。方法は、データ処理ハードウェアにおいて、ロボットの脚の初期位置とその脚の着地場所を受信することを含む。方法はまた、データ処理ハードウェアにより、脚の初期位置と着地場所との差を決定することと、データ処理ハードウェアにより、脚の初期位置と着地場所との差を水平運動成分と垂直運動成分に分離することも含む。方法はまた、データ処理ハードウェアにより、水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシを選択することも含む。方法はまた、データ処理ハードウェアにより、垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシを選択することも含む。方法はまた、データ処理ハードウェアにより、選択された水平運動ポリシと選択された垂直運動ポリシを実行して、着地目標時間においてロボットの脚を初期位置から着地場所へと揺動させることも含む。
【0004】
[0004] 本開示の他の態様は、ロボットの脚のための揺動軌道の計画方法を提供する。方法は、ロボットのデータ処理ハードウェアにおいて、ロボットの脚の初期位置とロボットのその脚の初期速度を受信することを含む。方法はまた、データ処理ハードウェアにおいて、その脚の着地場所とその脚の着地目標時間を受信することも含む。着地目標時間は、ロボットの脚が着地場所に着地すべき時点までの時間量を表す。方法はまた、データ処理ハードウェアにより、脚の初期位置と着地場所との差を決定することと、データ処理ハードウェアにより、脚の初期位置と着地場所との差を水平運動成分と垂直運動成分に分離することも含む。方法はまた、データ処理ハードウェアにより、水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシを選択することも含む。各水平運動ポリシは、脚の初期位置、脚の初期速度、脚の着地場所、及び脚の着地目標時間に応じて水平軌道を生成する。方法はまた、データ処理ハードウェアにより、垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシを選択することも含む。各垂直運動ポリシは、脚の初期位置、脚の初期速度、脚の着地場所、及び脚の着地目標時間に応じて垂直軌道を生成する。方法はまた、データ処理ハードウェアにより、選択された水平運動ポリシと選択された垂直運動ポリシを実行して、ロボットの脚を着地目標時間に初期位置から着地場所まで揺動させることも含む。
【0005】
[0005] 本開示の実装形態は、以下の任意選択的特徴の1つ又は複数を含み得る。幾つかの実装形態において、方法は、データ処理ハードウェアにより、垂直運動ポリシセットのうちの最も積極的な垂直運動ポリシを決定することを含む。最も積極的な垂直ポリシは、脚の垂直加速度を脚の垂直加速度限界以内で最大化し、脚の垂直速度を脚の垂直速度限界以内で最大化する。水平運動ポリシセットから水平運動ポリシを選択することは、幾つかの例において、水平運動ポリシセットの各水平運動ポリシを、最も積極的な垂直運動ポリシで評価することを含む。任意選択により、水平運動ポリシセットから水平運動ポリシを選択することは、水平運動ポリシセットの各水平運動ポリシに複数のティアのうちのあるティアを割り当てることを含む。各ティアは、それぞれのティアを選択するための選好量に関連付けられ、各ティアはタイブレーキングパラメータを含む。タイブレーキングパラメータは、水平運動ポリシセットの各水平運動ポリシに関連付けられる。水平運動ポリシセットから水平運動ポリシを選択することはまた、水平運動ポリシセットから水平運動ポリシを、割り当てられたティア及びタイブレーキングパラメータに基づいて選択することも含み得る。
【0006】
[0006] タイブレーキングパラメータは、幾つかの実装形態において、水平アンディザイラビリティと垂直アンディザイラビリティの合計に基づく総合的アンディザイラビリティを含む。垂直運動ポリシセットから垂直運動ポリシを選択することは、水平運動ポリシセットから水平運動ポリシを選択することの後に行い得る。幾つかの例において、垂直運動ポリシセットから垂直運動ポリシを選択することは、垂直運動ポリシセットから、垂直運動成分を満たす最小加速度及び最小速度に関連付けられる垂直運動ポリシを選択することを含む。
【0007】
[0007] 方法は、任意選択により、データ処理ハードウェアにおいて、ロボットによるトリップの表示を受信することを含む。ロボットによるトリップの表示を受信したことに応答して、方法は、データ処理ハードウェアにより、第二の水平運動ポリシセットからの水平運動ポリシ又は第二の垂直運動ポリシセットからの垂直運動ポリシのうちの一方を選択することを含み得る。第二の水平運動ポリシセットはトリッピングに関連付けられ、第二の垂直運動ポリシセットもトリッピングに関連付けられる。水平運動ポリシセットから水平運動ポリシを選択することは、水平運動ポリシセットの各水平運動ポリシを簡易分析で評価することと、水平運動ポリシセットのサブセットを簡易分析に基づく詳細分析で評価することを含み得る。
【0008】
[0008] 幾つかの実装形態において、方法は、データ処理ハードウェアにおいて、ロボットの複数の脚の各々の着地目標時間を受信することと、データ処理ハードウェアにおいて、脚の着地順序を、ロボットの複数の脚の各々の着地目標時間に基づいて決定することと、データ処理ハードウェアにより、計画順序における各脚の水平運動ポリシ及び垂直運動ポリシを着地順序に基づいて選択することと、をさらに含む。任意選択により、垂直運動ポリシセットの各垂直運動ポリシは、最大速度、最大加速度、及び揺動高さを含む。水平運動ポリシセットの少なくとも1つの水平運動ポリシは、横運動ポリシと縦運動ポリシを含み得る。
【0009】
[0009] 本開示の他の態様は、胴部と、胴部に連結され、環境内でロボットを操縦するように構成された脚と、を含むロボットを提供する。ロボットはまた、脚と通信するデータ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアも含む。メモリハードウェアは、データ処理ハードウェアにより実行されると、データ処理ハードウェアに動作を実行させる命令を記憶する。動作は、ロボットの脚の初期位置と、ロボットのその脚の初期速度を受信することを含む。動作はまた、データ処理ハードウェアにおいて、脚の着地場所と脚の着地目標時間を受信することも含む。着地目標時間は、ロボットの脚が着地場所に着地すべき時点までの時間量を表す。動作はまた、脚の初期位置と着地場所との差を決定することと、脚の初期位置と着地場所との差を水平運動成分と垂直運動成分に分離することも含む。動作はまた、水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシを選択することを含む。各水平運動ポリシは、脚の初期位置、脚の初期速度、脚の着地場所、及び脚の着地目標時間に応じて水平軌道を生成する。動作はまた、垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシを選択することも含む。各垂直運動ポリシは、脚の初期位置、脚の初期速度、脚の着地場所、及び脚の着地目標時間に応じて垂直軌道を生成する。動作はまた、選択された水平運動ポリシと選択された垂直運動ポリシを実行して、ロボットの脚を着地目標時間において初期位置から着地場所へと揺動させることも含む。
【0010】
[0010] 本開示の実装形態は、以下の任意選択的な特徴の1つ又は複数を含み得る。幾つかの実装形態において、動作は、垂直運動ポリシセットのうちの最も積極的な垂直運動ポリシを決定することを含む。最も積極的な垂直ポリシは、脚の垂直加速度を脚の垂直加速度限界以内で最大化し、脚の垂直速度を脚の垂直速度限界以内で最大化する。水平運動ポリシセットから水平運動ポリシを選択することは、幾つかの例において、水平運動ポリシセットの各水平運動ポリシを最も積極的な垂直運動ポリシで評価することを含む。任意選択により、水平運動ポリシセットから水平運動ポリシを選択することは、水平運動ポリシセットの各水平運動ポリシに複数のティアのうちのあるティアを割り当てることを含む。各ティアはそれぞれのティアを選択する選好量に関連付けられ、各ティアはタイブレーキングパラメータを含む。タイブレーキングパラメータは、水平運動ポリシセットの各水平運動ポリシに関連付けられる。水平運動ポリシセットから水平運動ポリシを選択することはまた、割り当てられたティア及びタイブレーキングパラメータに基づいて、水平運動ポリシセットから水平運動ポリシを選択することを含み得る。
【0011】
[0011] タイブレーキングパラメータは、幾つかの実装形態において、水平アンディザイラビリティと垂直アンディザイラビリティの合計に基づく総合的アンディザイラビリティを含む。垂直運動ポリシセットから垂直運動ポリシを選択することは、水平運動ポリシセットから水平運動ポリシを選択することの後に行われ得る。幾つかの例において、垂直運動ポリシセットから垂直運動ポリシを選択することは、垂直運動ポリシセットから、垂直運動成分を満たす最小加速度及び最小速度に関連付けられる垂直運動ポリシを選択することを含む。
【0012】
[0012] 動作は、任意選択により、ロボットによるトリップの表示を受信することを含む。ロボットによるトリップの表示を受信したことに応答して、動作は、第二の水平運動ポリシセットからの水平運動ポリシ又は第二の垂直運動ポリシセットからの垂直運動ポリシのうちの一方を選択することを含み得る。第二の水平運動ポリシセットはトリッピングに関連付けられ、第二の垂直運動ポリシセットもトリッピングに関連付けられる。水平運動ポリシセットから水平運動ポリシを選択することは、水平運動ポリシセットの各水平運動ポリシを簡易分析で評価することと、水平運動ポリシセットのサブセットを簡易分析に基づく詳細分析で評価することを含み得る。
【0013】
[0013] 幾つかの実装形態において、動作は、ロボットの複数の脚の各々の着地目標時間を受信することと、脚の着地順序をロボットの複数の脚の各々の着地目標時間に基づいて決定することと、計画順序において各脚の水平運動ポリシ及び垂直運動ポリシを着地順序に基づいて選択することと、をさらに含む。任意選択により、垂直運動ポリシセットの各垂直運動ポリシは、最大速度、最大加速度、及び揺動高さを含む。水平運動ポリシセットの少なくとも1つの水平運動ポリシは、横運動ポリシと縦運動ポリシを含み得る。
【図面の簡単な説明】
【0014】
図面の簡単な説明
図1】[0014]ロボットの脚の揺動軌道を計画するための揺動軌道プランナを実行する例示的なロボットの概略図である。
図2】[0015]図1のロボットの例示的な水平運動ポリシ選択装置の概略図である。
図3】[0016]ポリシティア及びタイブレーカの例示的な表である。
図4】[0017]複数の異なる水平運動ポリシの例示的な軌道プロットである。
図5A】[0018]クリフスクレイピングに分類される軌道の例示的プロットである。
図5B】[0018]クリフスクレイピングに分類される軌道の例示的プロットである。
図6】[0019]図1のロボットの例示的な垂直運動ポリシセレクタの概略図である。
図7】[0020]開始位置と速度を変えた複数の垂直軌道の例示的なプロットである。
図8】[0021]複数の異なるポリシと障害物との相互作用の例示的なプロットである。
図9】[0022]衝突検出器及び脚計画変更器を含む図1のロボットの例示的なコンポーネントの概略図である。
図10】[0023]ロボットの他の脚の例示的な進入禁止領域の概略図である。
図11A】[0024]ロボットの他の脚の周囲での揺動のための例示的な迂回揺動ポリシの概略図である。
図11B】[0024]ロボットの他の脚の周囲での揺動のための例示的な迂回揺動ポリシの概略図である。
図11C】[0024]ロボットの他の脚の周囲での揺動のための例示的な迂回揺動ポリシの概略図である。
図12】[0025]迂回揺動ポリシの例示的な水平軌道の概略図である。
図13】[0026]迂回揺動ポリシの他の例示的な水平軌道の概略図である。
図14】[0027]各種の開始位置から始まる複数の迂回揺動軌道の例示的なプロットである。
図15】[0028]ロボットの他の複数の脚を操縦するための例示的なWiggleポリシの概略図である。
図16】[0029]トリップの種類と適当なポリシ応答の例示的な表である。
図17】[0030]ロボットの脚の揺動軌道の計画方法のための例示的な動作配列のフローチャートである。
図18】[0031]本明細書に記載のシステム及び方法を実施するために使用され得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0015】
[0032] 各種の図面中の同様の参照記号は同様の要素を示す。
【0016】
詳細な説明
[0033] 脚式ロボット装置(「ロボット」とも呼ぶ)が主流となりつつあるのに伴い、ロボットを様々な制約のある環境中でナビゲートする必要性が増している。例えば、ロボットは、床の上に大小の物体が乱雑に置かれた散乱した部屋を横断する必要があり得る。或いは、他の例として、ロボットは階段を昇降する必要があり得る。典型的に、このような種類の環境でのナビゲートはこれまで、時間のかかる困難なプロセスであり、その結果、脚式ロボットは頻繁に停止したり、物体と衝突したり、及び/又はバランスを崩したりする。本明細書における実装形態は、脚揺動軌道をリアルタイムで生成し、それゆえ脚式ロボット装置を制約された環境中で素早く効率的にナビゲートしながら、円滑さとバランスを保持するのを助ける脚揺動軌道計画のためのシステム及び方法に関する。
【0017】
[0034] 図1を参照すると、ロボット又はロボット装置10は、胴部11と、2つ以上の脚12を含む。ロボット10は、ロボット10を制約された環境8中でナビゲートすることを可能にするための揺動脚軌道プランナ100を実行するように構成される。各脚12は胴部11に連結され、脚ジョイント18により分離される上部分14と下部分16を有し得る。各脚12の下部分16は足19で終わる。各脚の足19は任意選択的であり、脚12のうちの1つ又は複数の下部分の終端は車輪に連結され得、又は各脚12の先端は地表面9に直接接触し得る。ロボット10は、重力方向に沿った垂直重力軸Vgと、質量中心CMを有し、これはロボット10の分散した質量の加重相対位置の合計がゼロになる点である。ロボット10は、ロボット10がとる特定の姿勢又はスタンスを定義するための、垂直重力軸Vg(すなわち、重力に関する固定参照フレーム)に関するCMに基づくポーズPをさらに有する。ロボット10の姿勢は、空間内のロボット10の姿勢角度又は角度位置により定義できる。脚12の胴部11に関する移動により、ロボット10のポーズP(すなわち、ロボットのCMの位置とロボット10の姿勢又は姿勢角度との組合せ)が変わる。
【0018】
[0035] 幾つかの実装形態において、ロボット10は1つ又は複数の付属物をさらに含み、これは例えば胴部11上に配置され、胴部11に関して移動するように構成された関節腕20である。関節腕20は、5又はそれ以上の自由度を有し得る。さらに、関節腕20は、マニピュレーションアーム又は単に付属物と互換的に呼ばれ得る。図の例において、関節腕20は、相互に関して、及び胴部11にも関して回転可能な2つの部分22、24を含むが、関節腕20はそれより多い、又は少ない部分を含んでもよく、これらも本開示の範囲から逸脱しない。第一の部分22は、第二の部分24から関節腕ジョイント26により分離され得る。エンドエフェクタ28は、マニピュレータヘッド28と互換的に呼ばれ得、関節腕20の第二の部分24の先端に連結され得、物体を握り/把持するための1つ又は複数のアクチュエータ29を含み得る。
【0019】
[0036] ロボット10はまた、少なくとも1つのイメージングセンサ又はカメラ31を備えるビジョンシステム30も含み、各センサ又はカメラ31はロボット10を取り巻く環境8の画像データ又はセンサデータ17を視野角32及び視野34で捕捉する。ビジョンシステム30は、視野角32を調整することによって、又は視野34を何れかの方向に移動させるために(ロボット10とは独立して、又はロボット10を介して)カメラ31をパンニング及び/又はチルティングすることによって、視野34を移動させるように構成され得る。代替的に、ビジョンシステム30は複数のセンサ又はカメラ31を含み得て、ビジョンシステム30はロボット10の周囲の概して360度の視野を捕捉する。ビジョンシステム30のカメラ31は、幾つかの実装形態において、1つ又は複数のステレオカメラ(例えば、1つ又は複数のRGBDステレオカメラ)を含む。他の例では、ビジョンシステム30は、走査型光検知測距(LIDAR)センサ若しくは走査型レーザ検出測距(LADAR)センサ等の1つ又は複数のレーダセンサ、光スキャナ、飛行時間センサ、又は他の3次元(3D)体積イメージセンサ(又はセンサのあらゆるこのような組合せ)を含む。ビジョンシステム30は、カメラ又はセンサ31により捕捉された画像データから得られた画像データ又はセンサデータ17をロボット10のデータ処理ハードウェア36に提供する。データ処理ハードウェア36は、メモリハードウェア38とデジタル通信し、幾つかの実装形態において、リモートシステムであり得る。リモートシステムは、単一のコンピュータ、複数のコンピュータ、又はスケーラブル/エラスティックコンピューテングリソース及び/又は記憶リソースを有する分散システム(例えば、クラウド環境)であり得る。
【0020】
[0037] ロボット10は、データ処理ハードウェア36上で揺動脚軌道プランナ100を実行する。脚揺動軌道プランナ100は、ロボット10の脚12の初期又は現在位置若しくは場所50と初期又は現在速度52を(例えば、対応する脚12をモニタするセンサから)受信する。揺動脚軌道プランナ100はまた、脚12の着地データ60も受信する。着地データ60は、着地場所62と着地目標時間64を含む。着地場所62は、地表面9上の、脚がステップを完了するために接触すべき場所を表す。着地目標時間64は、ロボット10の脚12が着地場所62において着地すべき時点までの時間量を表す。すなわち、着地目標時間64は、脚12が、歩容、バランス、タイミング等を保持するために着地場所62において地表面9と接触すべき時点(又は時間ウィンドウ)を表す。
【0021】
[0038] 脚揺動軌道プランナ100は、幾つかの実装形態において、脚12の初期又は現在位置と着地場所62との差を決定する。すなわち、脚揺動軌道プランナ100は、脚12が着地場所62に到達するためにその初期又は現在場所50からどこまで移動しなければならないかを決定する。幾つかの実施位において、プランナ100は、初期場所50(例えば、足の離陸場所)のみを使用し、揺動中の脚のリアルタイムの位置測定に依存しない。その他の実装形態は、プランナ100は脚から(例えば、測定を介して)現在場所50を連続的に受信する。本明細書で使用されるかぎり、初期場所及び現在場所は互換的である。同様に、初期速度52及び現在速度52もまた互換的である。脚揺動軌道プランナ100は、脚12の現在位位置と着地場所62との差を水平運動成分と垂直運動成分に切り離し、又は分離する。言い換えれば、脚揺動軌道プランナ100は、脚揺動軌道の決定を、着地目標時間64までに着地場所62に到達するために、脚12が必要とする水平移動(例えば、水平運動成分)と脚12が必要とする垂直移動(例えば、垂直運動成分)に分離する。少なくとも一部にこの差に基づいて、水平運動ポリシセレクタ200は、水平運動ポリシセットから(例えば、水平運動ポリシデータストア212から)水平運動ポリシ210を選択し得て、垂直運動ポリシセレクタ600は、垂直運動ポリシセット610から(例えば、垂直運動ポリシデータストア612から)垂直運動ポリシ610を選択し得る。選択された水平運動ポリシ210と選択された垂直運動ポリシ610は共同で揺動軌道132を形成するための選択ポリシセット130を提供し、これは、ロボット10のデータ処理ハードウェア36により実行されると、ロボット10の脚12を着地目標時間64内に現在場所50から着地場所62に揺動させる。プランナ100のそれぞれのセレクタ200、600により選択された各ポリシ210、610は、ロボット10のデータ処理ハードウェア36上で実行され、脚の現在位置50及び速度52並びに着地場所62及び着地目標時間64に応じて脚12の揺動軌道を生成する。
【0022】
[0039] 幾つかの実装形態において、揺動脚軌道プランナ100の少なくとも一部は、ロボット10と通信するリモートデバイス上で実行される。例えば、水平運動ポリシセレクタ200及び/又は垂直運動ポリシセレクタ600はリモートデバイス上で実行されて、それぞれのポリシ210、610(例えば、選択されたポリシセット130)を選択し得、ロボット10上で実行される制御システムはポリシセット130を受信して実行し、ロボット10の脚12を着地目標時間64において現在位置50から着地場所62へと揺動させ得る。任意選択により、揺動軌道プランナ100の全体がリモートデバイス上で実行され得、リモートデバイスはロボット10を、脚12を選択されたポリシセット130に基づいて揺動させるように制御/命令し得る。
【0023】
[0040] 次に図2を参照すると、幾つかの実装形態において、水平運動ポリシセレクタ200は、簡易分析器220、詳細分析器230、及びティア評価器240を含む。簡易分析器220は、最も積極的な垂直運動ポリシ610Aと、データストア212に保存された水平運動ポリシセットの各水平運動ポリシ210、210a~nを受信し得る。幾つかの例において、簡易分析器220は、最も積極的な垂直運動ポリシ610Aを水平運動ポリシ210の各々と素早く分析する。これは、一般に最も積極的な垂直運動ポリシ610Aが失敗すれば、垂直運動ポリシ610の全部が失敗するからである。最も積極的な垂直運動ポリシ610は、制約内で最大の加速度及び速度を利用し、したがって、ポリシ610Aが着地目標時間64に間に合わせることができないか、又は障害物を回避できなければ、おそらく他の何れのポリシ610もできない。最も積極的な垂直運動ポリシ610Aは、ロボット10に、脚12の速度、加速度、及び揺動高さを何れの適用可能な制約232内でもできるだけ高く保持するように命令する垂直運動ポリシ610と定義される。例えば、最も積極的な垂直運動ポリシ610Aは、みかけ上、脚12を上方に加速させて(すなわち、垂直加速)、上方又は垂直速度限界に到達したら、上方又は垂直定速で(すなわち、上方速度限界で)上方に堕走させ得る。ポリシ610Aはすると、脚12の上方移動が所望の揺動高さ(すなわち、最大揺動高さ)で停止するまで下方に加速させ得る。ポリシ610Aは、依然として着地場所62に時間通りに到達しながら、できるだけ長い時間にわたり、所望の揺動高さを保持し得る。最も積極的な垂直運動ポリシ610Aは、下方に加速させて、下方速度限界(これは、上方速度限界と同じでも違ってもよい)に到達したら、下方に下方定速(すなわち、下方速度限界)で、脚12が着地場所62での着地を実現するまで惰走させ得る。
【0024】
[0041] 各水平運動ポリシ210を最も積極的な垂直運動ポリシ610Aで分析する際、簡易分析器220は、水平運動ポリシセット210a~nから不満足な水平運動ポリシ210を素早く排除し得る。具体的には、不満足な水平運動ポリシ210を排除することは、水平運動ポリシセレクタ200による選択のための候補としてこれらのポリシ210を排除することを指す。例えば、簡易分析器220は、各水平運動ポリシ210を、それぞれのポリシ210に関するベストケースシナリオの下で評価して、総合的アンディザイラビリティの量を測定し得る。総合的アンディザイラビリティは、水平アンディザイラビリティと垂直アンディザイラビリティの合計とし得る。水平アンディザイラビリティと垂直アンディザイラビリティは、選択されたポリシによる望ましくない効果の尺度である。例えば、ポリシ210、610のピーク加速度(すなわち、垂直ピーク加速度と水平ピーク加速度)が高いほど、そのポリシのアンディザイラビリティは大きい。アンディザイラビリティは、ポリシ610、210のその他の特性(例えば、ピーク速度、着地速度、着地時間、揺動高さ、マージン等)にも基づいて測定され得る。任意選択により、幾つかのポリシでは、関連付けられたアンディザイラビリティを変更し得る。例えば、好ましいポリシ(例えば、後でより詳しく述べるCubicポリシ)は、全体的なアンディザイラビリティを下げるために変更子により重み付けされ得る。その他の、これほどは望ましくないポリシは、アンディザイラビリティを高める変更子を有し得る。
【0025】
[0042] 各水平運動ポリシ210を最も積極的な垂直運動ポリシ610Aで分析した後、簡易分析器220は、簡易分析を通過した水平運動ポリシ210Sのセット(すなわち、全水平運動ポリシ610の当初のセットのサブセット)を詳細分析器230に送信する。例えば、その総合的アンディザイラビリティが閾値量より低いポリシ210Sが詳細分析器に送信され得る。任意選択により、簡易分析器220がそれぞれのポリシ210を詳細分析器へと通過させるか否か(すなわち、ポリシ210がセット210Sに含められるか否か)は、その他のポリシ210に依存する。例えば、簡易分析器220が、それぞれのポリシ210はすでに分析されたポリシ210より高い性能を示すことができないと判断した場合、簡易分析器220はそのそれぞれのポリシ210を詳細分析器230へと通過させないようにし得る。幾つかの実装形態において、簡易分析器220は、ポリシ210を、最善である可能性が最も高いポリシ210を最初に分析して、評価されるポリシ210の数をおそらく減らすことによって評価ポリシを最適化するように考案された順序で分析する。順序は、地面又はその他の制約に基づいて静的でも動的でもあり得る。
【0026】
[0043] 引き続き図2を参照すると、詳細分析器230は簡易分析器220より綿密な分析を行う。幾つかの実装形態において、詳細分析器230はポリシ210Sのセットの各ポリシ210にティア300、300a~n(図3)を割り当てる。各ティア300は、幾つかの例において、それぞれのティアを選択するための選好量に関連付けられる。すなわち、各ティアは、選択ディザイラビリティの量を有する。ティア300を割り当てるために、詳細分析器230は、例えば着地場所62、着地目標時間64、現在位置50、現在速度52、及び何れかの適用可能な制約232(例えば、最大加速度の制約、最大速度の制約、障害物の制約等)を使って、複数の計算を実行する。詳細分析器は、ポリシ210Sのセットと割り当てられたティア300をティア評価器240へと通過させる。ティア評価器240は、ティア300を(したがって、ティア300に割り当てられたポリシ210)を最も望ましいものから最も望ましくないものへと(すなわち、そのティアを選択するための選好量により)順序付けし、その後、最も望ましいティア300に割り当てられたポリシ210Hを選択する。ティア評価器240は、ティアの順序を所定の命令に基づいて静的に、又は現在の環境若しくは制約232に基づいて動的に決定し得る。
【0027】
[0044] 次に図3を参照すると、各ティア300は関連付けられたタイブレーカ又はタイブレーキングパラメータ302、302a~nを有し得る。ティア評価器240は、複数のポリシ210が最も望ましいティア300を共有する場合、タイブレーカを使用する。例えば、最も望ましいティア300が「成功」であり、そのタイブレーカ302は総合的アンディザイラビリティであり得る。すなわち、最も望ましいティア300は、ロボット10の脚12の足19を着地目標時間64に着地場所62に到達させるポリシ210のためのティアであり得る。複数のポリシ210が「成功」ティア300に割り当てられた場合、ティア評価器240は成功ティア300に割り当てられたポリシ210の中から、総合的アンディザイラビリティが最も低いポリシ210を選択し得る。幾つかの例において、特定のポリシ210(例えば、Cubicポリシ210又はその他の好ましいポリシ210)が「成功」ティア300が割り当てられた場合、この特定のポリシ210は、他の何れのポリシ210も評価せずに選択され得る。この状況では、選択ポリシ210よりよいポリシは他になく、ポリシ210を選択するために必要な計算全体が大幅に削減される。他の例では、2番目に望ましいティア300は「XY成功;Z不可能」であり得る。ティア評価器240は、このティア300に、水平次元(すなわち、XY)には着地目標時間64に着地場所62に成功裏に到達するポリシ210を割り当て得るが、着地目標時間64に着地場所62に成功裏に到達する垂直運動ポリシは610がない。例えば、足は、現在位置50及び/又は現在速度52並びに制約232では、所望の着地高さ(例えば、着地場所62の高さ成分)に到達できない可能性がある。このティア300に関して、タイブレーカ302は何れかの衝突の重大度と総合的アンディザイラビリティの組合せであり得る。例えば、何れのポリシ210も成功ティア300に割り当てられず、2以上のポリシ210が「XY成功;Z不可能」ティア300に割り当てられた場合、ティア評価器240はタイブレーカ302を使ってポリシ210を選択し得る。
【0028】
[0045] 次に図4を参照すると、水平軌道410a~cがプロット400に示されており、y軸は位置(例えば、メートルの単位)を表し、x軸は時間(例えば、秒の単位)を表す。水平軌道は、脚が水平面内で(すなわち、横及び/又は前後に)現在場所から着地場所62まで移動しなければならない距離である。例えば、軌道410aは、Cubic水平運動ポリシ210を表し得て、軌道410bはBangBangWait(BBW)水平運動ポリシ210を表し得て、軌道410cはWaitBangBang(WBB)水平運動ポリシ210を表し得る。Cubic水平運動ポリシ210は、三次多項式の経路をたどる。BBW水平運動ポリシ210は、できるだけ早く最大速度に到達するためにできるだけ迅速に(制約232内で)加速し、その後、減速が必要となるまで惰走する。WBB水平運動ポリシ210は、BBW水平運動ポリシ210の反対であり、WBB水平運動ポリシはできるだけ長く現在速度52で惰走し、その後、依然として着地目標時間64までに着地場所62に到達するために必要になると、できるだけ迅速に最大速度まで加速させる。
【0029】
[0046] 詳細分析器230は、ポリシ210を何れの数のティア300にも割り当て得る。幾つかの例において、ティア300はクリフスクレイピングを含み、そのタイブレーカは水平マージンである。例えば、ティア300は「膝地面衝突」及び「膝自己衝突」を含み得て、そのタイブレーカ302は衝突重大度、アンディザイラビリティ、及び/又はミスディスタンス(例えば、ロボットの脚が他の脚/物体を見失うまでにどれだけ近いか)である。任意選択により、プランナ100は、予測されたヒップ位置及び計画された足位置に基づいて、ロボット10の現在及び将来の膝位置を計算し、予測し得る。計算された膝位置に基づいて、システム100は選択されたポリシの軌道を比較し、それをロボット10の付近の地面と比較し得る。
【0030】
[0047] その他のティア300は、タイブレーカが衝突重大度及び/又はアンディザイラビリティである「地面衝突」、タイブレーカ302がミスディスタンスである「XY標的到達不可」(すなわち、脚12が着地場所62に到達できない)を含み得る。このミスディスタンスは、ヒステリシスを含み得る。任意選択により、詳細分析器230は「自己衝突」ティア300を含み、そのタイブレーカ302は衝突重大度及び/又はミスディスタンスである。幾つかの実装形態において、詳細分析器230は「デフォルト」ティア300及び「制約侵害」ティア300を含む。「制約侵害」は、選択されないポリシのためのティア300であり得る。例えば、ポリシ210が加速度の制約(すなわち、最大加速度)を侵害した場合、詳細分析器230はポリシ210を「制約侵害」ティア300に割り当て得る。タイブレーカは必要なく、それは、これらのポリシは選択されないからである。「デフォルト」ティア300は、他の全てのポリシ210に「制約侵害」ティアが割り当てられた場合にティア評価器240が選択する1つのデフォルトポリシ210を含み得る。任意選択により、デフォルトポリシはBBW水平運動ポリシである。
【0031】
[0048] 次に図5Aを参照すると、他の例において、軌道500aは、脚の軌道500aが現在位置50から着地場所62へと移動する間に軌道500aが障害物502に非常に近付くか、実際にそれを擦る場合に「クリフスクレイピング」に分類され得る。軌道は、障害物502が実際に擦られる場合、又は脚12と障害物502との間の水平マージン510が閾値距離より短い場合(障害物と擦れたり、それと衝突したりすることがなくても)、「クリフスクレイピング」に分類され得る。例えば、図5Bの軌道500bもまた、水平マージン510が閾値距離より小さければ、クリフスクレイピングに分類され得る。このよう状況では、軌道500bは軌道500aより選択され、それは、タイブレーカ(すなわち、水平マージン510)が軌道500bの方が大きいからである。
【0032】
[0049] 次に図6を参照すると、幾つかの実装形態において、水平運動ポリシ210Hが選択された後(図2及び3)、垂直運動ポリシセレクタ600は選択された水平運動ポリシ210Hと、垂直運動ポリシデータストア612からの各垂直運動ポリシ610、610a~nを受信する。垂直運動ポリシセレクタ600は、ポリシ610の穏和性(又は、代替的にポリシの積極性)に基づいて垂直運動ポリシ610を整理又は分類し得る。例えば、垂直運動ポリシセレクタ600は、より低いピーク加速度を有する垂直運動ポリシ610を、より高いピーク加速度を有するポリシ610より穏和であると分類し得る。垂直運動ポリシセレクタ600は、垂直運動ポリシ610を選択された水平運動ポリシ210Hと共に評価又は分析する垂直ポリシ評価器620を含み得る。幾つかの例において、垂直ポリシ評価器620は、ロボット10の足19を十分なマージン(すなわち、軌道と地面との間の距離)が十分な状態で着地目標時間64に着地場所62まで成功裏にナビゲートする、最も穏和な垂直運動ポリシ610を決定する。すなわち、垂直ポリシ評価器620は、脚揺動軌道の垂直運動成分を満たす最小加速度及び最小速度に関連付けられる垂直運動ポリシ610Vを選択し得る。垂直運動成分を満たすことは、障害物の衝突からの閾値量のマージンで着地目標時間64に着地場所62に到達することと定義され得る。幾つかの例において、垂直ポリシ評価器620は、垂直運動成分を満たすポリシ610が評価されるまで、まだ評価されていない最も穏和なポリシ610を評価する。この点以降のポリシ610は、評価する必要がない。代替的に、垂直ポリシ評価器は、ポリシ610が垂直運動成分を満たさなくなるまで、まだ評価されていない最も穏和でないポリシ610を評価する。再び、この点以降のポリシ610は評価する必要がない。
【0033】
[0050] 幾つかの例において、垂直運動ポリシセレクタ600は、異常な状況に基づいて特殊ポリシを選択する。例えば、着地の遅延中(すなわち、ロボット10は脚が着地することを予想したが、脚はまた着地していない)、セレクタ600は着地が行われるまで、下降を一定の速度で加速又は減速させる特殊遅延着地ポリシを選択し得る。ポリシセレクタ600は、その他の異常な状況が発生した場合、その他の特殊ポリシを選択し(及び標準的選択シーケンスを迂回し)得る。
【0034】
[0051] それゆえ、揺動脚軌道の水平及び垂直運動成分を分離することによって、且つ最も積極的な垂直運動ポリシ610Aで簡易分析を行うことによって、システム100は評価されるポリシの組合せ数を大幅に減らす。例えば、M個の水平運動ポリシ210とN個の垂直運動ポリシ610がある場合、より洗練されていないシステムはM×N回の評価を行い得て、これでは計算コストが高くつく。それに対して、本明細書に記載の実装形態は、理想的な水平運動ポリシ210及び垂直運動ポリシ610を選択する前に最大でM+N個のポリシ(一般にはそれよりはるかに少ない)を評価し得る。
【0035】
[0052] 図7は、7つの異なる開始地点からの幾つかの垂直成分揺動軌道710のプロット700を示しており、各開始位置が5種類の開始速度を示している。プロットのy軸はロボット10の足19の高さ(メートル(m))を表し、x軸は時間(秒(s))を表す。高さの異なる障害物720もまた示されている。各軌道710は、この例において、制約232により可能な最大高さに設定される。図7から明らかであるように、幾つかの地形状況での幾つかの開始場所(例えば、図7では-0.3、-0.2、-0.1)の結果、どの垂直運動ポリシ610が選択されても、衝突が生じる。しかしながら、この例では、軌道710と障害物720との間に十分なマージンがあれば、垂直運動ポリシセレクタ600は、穏和な加速を提供し、依然として着地場所62に成功裏に到達する(すなわち、障害物720とぶつからない)を提供するポリシ610を選択し得る。
【0036】
[0053] 次に図8を参照すると、3種類の垂直運動ポリシ610に関する3つの垂直軌道810a~cのプロット800が示されている。y軸はロボット10の足19の高さ(メートル(m))を表し、x軸はロボット10の足19の水平位置(メートル(m))を示す。軌道810aは、少なくとも部分的にCubic垂直運動ポリシ610に追従する軌道を表し、軌道810bは、少なくとも部分的にWBB垂直運動ポリシ610に追従する軌道を表し(すなわち、このポリシは足が前方に動く前に上昇するのを待つ)、軌道810cは、少なくとも部分的にBBW垂直ポリシ610に追従する軌道を表す(すなわち、このポリシはかなりの高さに到達する前に足を前方に加速させ始める)。2つの異なる障害物820a、820bも示されている。この例では、Cubic垂直運動ポリシの軌道810aは、障害物820a、820bを通過できない。それに対して、WBB垂直運動ポリシの軌道810bは、障害物820aを成功裏に通過するが、障害物820bとはぶつかり、BBW垂直運動ポリシの軌道810cは、障害物820aにはぶつかるが、障害物820bは成功裏に通過する。それゆえ、障害物820aのみが提示される場合、垂直運動ポリシセレクタ600はWBB垂直運動ポリシ610を選択し得て、障害物820bだけが提示される場合、垂直運動ポリシセレクタ600はBBW垂直運動ポリシ610を選択し得る。両方の障害物820a、820bが存在する場合、垂直運動ポリシセレクタ600は、軌道810a、810b、810cに関連付けられる垂直運動ポリシ610の何れも選択しない。垂直運動ポリシセレクタ600がマージンの可変量(すなわち、脚が障害物にどれだけ接近して通過し得るか)によって制約され得る。ここで、必要なマージンはゼロであり、軌道810b、810cはそれぞれの障害物820a、820bの隅に触れた。
【0037】
[0054] 次に図9を参照すると、幾つかの実装形態において、脚揺動軌道プランナ100は、着地までの残り時間が最も小さい、ロボット10の脚12の揺動軌道を計画する。すなわち、プランナ100は、ロボット10の、次に地面に当たる脚12の計画を立て、その後、第一の脚12の後に地面に次に当たる第二の脚の計画を立て、等々である。これは、着地までの時間が最も少ない脚12が、軌道を調整するための自由量が最も小さいため、有利である。すなわち、着地までの時間がより長い脚は、他の脚と衝突を回避するように軌道を調整するための自由度がより大きい。幾つかの例において、脚揺動軌道プランナ100は、着地順序904を各脚12からの脚データ902(例えば、現在位置50、現在速度52、着地場所62、着地目標時間64等)に基づいて決定する。着地順序に基づき、システム100は計画順序において各脚のポリシ210、610を着地順序に基づいて選択し得る。
【0038】
[0055] 脚揺動軌道プランナ100は、衝突検出器910を含み得る。衝突検出器910は、ポリシセレクタ200、600からの初期選択ポリシ210Hi、610Viを受信し、それ以前に計画された脚との衝突をチェックする。例えば、脚揺動軌道プランナは、脚「A」について最初に計画し得る(それが次に着地するものであるからである)。その後、脚「B」の計画を立てている間に(この例では、それが脚「A」の次に着地するものであるからである)、衝突検出器910は、脚「B」のために選択されたポリシ210H、610Vによって脚「B」が脚「A」と衝突することになるか否かを決定し得る。衝突が検出されると、脚揺動軌道プランナ100は、衝突する脚(この例では、脚「B」)のための新しいポリシの選択を試み得、それは、衝突する脚のほうが着地までの時間が長く、したがって、ポリシ210、610に関する柔軟性もより高いからである。衝突を回避できない場合(すなわち、新しいポリシを選択しても衝突が回避されない)場合、衝突検出器910は、幾つかの例において、衝突の回避を試みる中で以前に計画された脚(すなわち、脚「A」)の計画を変更するために、脚計画変更器920に計画変更信号912を送信する。脚計画変更器920は、最終選択ポリシ210Hf、610Hfを出力し、これは初期選択ポリシ210Hi、610Viと同じであっても異なっていても(計画変更による)よい。
【0039】
[0056] 脚揺動軌道プランナ100は、幾つかの実装形態において、自己衝突の回避を支援するために、各脚の周囲に「進入禁止」領域を予測する。次に図10を参照すると、脚揺動軌道プランナは、他の脚1030の着地場所及びそれに対応する進入禁止領域1020を回避しながら、着地場所62に到達するポリシ210、610を選択し得る。
【0040】
[0057] 次に、図11A~Cを参照すると、幾つかの実装形態において、水平運動ポリシ210はさらにx座標ポリシ(例えば、前後又は長さ方向運動ポリシ)とy座標ポリシ(例えば、横運動ポリシ)にさらに分けられる。図11Aに示されるように、幾つかの状況で、水平運動ポリシセレクタ200は、ロボット10の他の脚12と交差する脚軌道を計画する必要があり得る(例えば、ターン、又はトリップからの回復中)。すなわち、水平運動ポリシセレクタ200は、現在位置50から、ロボット10の他の脚12の進入禁止領域1020を横切る着地場所62への計画を立てる必要があり得る(図11A)。このような状況において、現在位置50から着地場所62までの直接の軌道を計画すると、進入禁止領域1020を横切り、おそらく、他の脚12との衝突を起こし得る。その代わりに、水平運動ポリシセレクタ200は、脚12を進入禁止領域1020の周囲で操縦するための「迂回揺動」ポリシ210を実行し得る。水平運動ポリシセレクタ200は、幾つかの例において、進入禁止領域1020を表す多角形の角1110の位置を決定する。プランナ100は、ウェイポイント1120a、1120bを角1110から閾値距離(すなわち、マージン)に設置し得る(図11B)。
【0041】
[0058] 図11Cに示されるように、水平運動ポリシセレクタ200は着地場所62に到達するのに必要なx及びy移動を分離し得る。例えば、セレクタ200は、脚12を現在場所50からウェイポイント1120aを越える点まで操縦するためのBBW水平運動ポリシ210を計画し得る。水平運動ポリシセレクタ200は、脚12がy軸のウェイポイント1120aに到達するまでの時間量tを決定し得る。水平運動ポリシセレクタ200は、少なくともt時間が経過するまで、ウェイポイント1120a、1120bに向かってx方向に移動しないことを確実にし得る。幾つかの例において、プランナ100は可能であれば脚12を進入禁止領域1020をまたいで揺動させる。例えば、反対側の脚が傾斜している場合、反対側の脚に衝突することなく、進入禁止領域1020の一部をまたいで揺動するチャンスがあり得る。この状況で、プランナ100は垂直運動ポリシ610を選択する際の将来の評価の可能性にフラッグを立て得る。
【0042】
[0059] 図12は、「迂回揺動」ポリシ210のx位置対時間のプロットを示す。図のように、水平運動ポリシセレクタ200は、速度限界に到達するか、さらに加速して着地場所62を通り越すか、又は現在の速度を保持することで進入禁止領域1020に入る、の何れかまで加速するポリシ210を選択し得る。図の例において、ポリシ210は、惰走(すなわち、現在の速度を保持すること)により進入禁止領域1020の角に当たるか、触れるまで、わずかに脚を加速させる。この点から、脚12は時間tまで惰走し(すなわち、脚は進入禁止領域1020を通り過ぎる)、その後、着地場所62の方向に加速する(例えば、BBWポリシ210による)。
【0043】
[0060] 幾つかの状況において、水平運動ポリシセレクタ200は、必要な軌道の運動成分をさらに分離し得る。図13に示されるように、幾つかの状況では、現在場所50は着地場所62から進入禁止領域1020の反対側にある。この状況では、水平運動ポリシセレクタ200はBBWポリシを行って(図13の左側へ)ウェイポイント1120dを通過し得る。水平運動ポリシセレクタ200は、図11A~Cに関して説明したように、ウェイポイント1120dを通過するまでの時間(tc1)を決定し、その後、他のBBWポリシ210を実行し(図13の上方へ)、その後、残りの動作を実行し得る。
【0044】
[0061] 次に図14を参照すると、各種の開始場所からの幾つかの「迂回揺動」軌道1410、1410a~nがプロット1400上に示され、各々が着地場所62に到達しようとしている。プロット1400のx軸はx次元における脚12の位置を表し、プロット1400のy軸はy次元における脚12の位置を表す。「迂回揺動」ポリシ210は、進入禁止領域1020及び(進入禁止領域1020のもとになる脚12a)を避けようとしている。
【0045】
[0062] 「迂回揺動」ポリシの図の例は、着地場所62に到達するために複数の同じポリシ(例えば、BBW)を組み合わせているが、ポリシセレクタ200は、幾つかの実装形態において、異なる水平運動ポリシ210を組み合わせる。水平運動ポリシセレクタ200は、軸によって異なるポリシ210を組み合わせ得る。例えば、セレクタ200は、x次元においてBBW水平運動ポリシ210を、y次元においてCubic水平ポリシ210を選択し得る。水平運動ポリシセレクタ200はまた、時間によってポリシ210を組み合わせ得る。例えば、水平運動ポリシセレクタ200は、揺動の最初の10%(又は、選択された秒数)にわたりBBW水平運動ポリシ210を選択し、その後、揺動の残りについてCubic水平ポリシ210に切り替え得る。複合的なポリシは、他の例では(例えば、人間のオペレータにより)事前に決定され、水平運動ポリシセレクタ200は所定の複合的ポリシを選択し得る。
【0046】
[0063] 次に図15を参照すると、1つの水平運動ポリシ210(例えば、Wiggleポリシ210W)は、着地場所62に到達するために個々の水平運動ポリシ(cubic、BBW、WBB等)の何れの組合せも含み得る。図15に示されるように、幾つかの状況では、水平運動ポリシセレクタ200は、脚12をロボット10の複数の他の脚12a、12b、及びそれに関連する進入禁止領域1020の周囲で操縦するためのポリシ210を選択する必要があり得る。
【0047】
[0064] 次に図16を参照すると、幾つかの実装形態において、脚揺動軌道プランナ100は、ロボット10の周囲の環境に応答して、又は決定され、若しくは検出された挙動に応答して、特定のポリシ210、610を選択する。例えば、プランナ100が、ロボットは平坦で障害物のない地面内で操縦されると判断した場合、プランナ100は詳細分析器230による詳細分析を必要とせずに、デフォルトで選択ポリシ210、610を選択する。他の例において、プランナ100は、ロボット10によるトリップの表示を受信し、トリッピングに関連付けられるデフォルトのポリシ210、610で反応し得る。トリップポリシは、水平運動ポリシ210及び垂直運動ポリシ610、又は代替的に、水平運動ポリシ210のみを含み得る。図16に示されるように、プランナ100は正常トリップ、最近の正常トリップ、膝トリップ、脚が交差する自己衝突、脚が交差しない自己衝突に反応し得る。例えば、膝トリップに応答して、プランナ100は膝をゆっくりと前方に移動させて回復させ得る。正常トリップ中、プランナ100は揺動脚12の長さ方向の前方移動を停止し、足19を上昇させ得る。交差する自己衝突中、プランナ100は揺動脚のもつれをほどくように試みることができ、他方で交差しない自己衝突中、プランナ100は立脚から横方向に移動して、着地場所62に向かう動きを継続し得る。
【0048】
[0065] このように、揺動脚軌道プランナ100は、ロボット10の脚12の揺動軌道を水平及び垂直成分に切り離す。最初に水平及び垂直成分を切り離すことによって、プランナ100は全体的な複雑さを軽減させ、処理要求を低減させる。これによって、プランナ100は高頻度で揺動脚軌道を計画及び計画変更できる。例えば、プランナ100は、揺動脚軌道を100マイクロ秒以下で計画して、ロボット10が環境の変化又はロボット10との衝突に素早く反応することができるようにし得る。脚揺動は典型的に、200ミリ秒~600ミリ秒超の範囲で継続するため、プランナ100は脚を着地までに何度も計画変更し得る。幾つかの例において、プランナ100は、このようなに脚を3ミリ秒ごとに計画する。プランナ100は、全ての制約232が満たされ、他方で障害物との衝突及び自己衝突を回避するのを確実にしようとする。必ずしも全ての制約を満たせるとはかぎらない場合及び/又は着地場所62又は着地時間64を実現できない場合、プランナ100はどの制約/要求事項が満たされるかの優先順位を(例えば、ティア評価器240を介して)決めることにより、グレースフルデグラデーションを提供し得る。プランナはまた、例えば揺動中に脚の持ち上げを最小化して揺動軌道を平滑に保つことにより、審美性とバランスも改善し得る。
【0049】
[0066] 図17は、ロボット10の揺動脚軌道を計画する方法1700のための動作の例示的な配列のフローチャートである。動作1602で、方法1700は、データ処理ハードウェア36において、ロボット10の脚12の初期位置50とロボット10の脚12の初期速度52を受信することを含む。ここで、データ処理ハードウェア36は、脚揺動軌道プランナ100を実行し、ロボット10、ロボット10と通信するリモートシステム/デバイス、又はそれらの組合せ上にあってよい。動作1704で、方法1700は、データ処理ハードウェア36で、脚12の着地場所62と脚12の着地目標時間64を受信することを含む。着地目標時間64は、ロボット10の脚12が着地場所62に着地すべき地点までの時間量を表す。
【0050】
[0067] 動作1706で、方法1700は、データ処理ハードウェア36により、脚の初期位置50と着地場所62との差を決定することと、動作1708で、方法1700は、データ処理ハードウェア36により、脚12の初期位置50と着地場所62との差を水平運動成分と垂直運動成分に分離することを含む。
【0051】
[0068] 動作1710で、方法1700は、データ処理ハードウェア36により、水平運動成分を満たすために水平運動ポリシセットから水平運動ポリシ210を選択することを含む。各水平運動ポリシは、脚12の初期位置50、脚12の初期速度52、脚12の着地場所62、及び脚12の着地目標時間64に応じて水平軌道を生成する。方法1700はまた、動作1712で、データ処理ハードウェア36により、垂直運動成分を満たすために垂直運動ポリシセットから垂直運動ポリシ610を選択することも含む。各垂直運動ポリシ610は、脚12の初期位置50、脚12の初期速度52、脚12の着地場所62、及び脚12の着地目標時間64に応じた垂直軌道を生成する。動作1714で、方法1700は、データ処理ハードウェア36により、選択された水平運動ポリシ210と選択された垂直運動ポリシ610を実行して、ロボット10の脚12を着地目標時間64において初期位置50から着地場所62へと揺動させることを含む。
【0052】
[0069] 図18は、本明細書に記載されたシステムと方法を実施するために使用され得る例示的なコンピューティングデバイス1800(例えば、データ処理ハードウェア36及びメモリハードウェア20)の概略図である。ここに示されるコンポーネント、それらの接続及び関係、並びにそれらの機能は、例に過ぎないものとし、本明細書に記載され、及び/又は特許請求される本発明の実施を限定するものではない。
【0053】
[0070] コンピューティングデバイス1800は、プロセッサ1810(例えば、データ処理ハードウェア36)、メモリ1820(例えば、メモリハードウェア38)、記憶装置1830、メモリ1820と高速拡張ポート1850に接続される高速インタフェース/コントローラ1840、及び低速バス1870と記憶装置1830に接続される低速インタフェース/コントローラ1860を含む。コンポーネント1810、1820、1830、1840、1850、及び1860の各々は、各種のバスを使って相互接続され、共通のマザボード上に、又はその他の適当な方法で実装され得る。プロセッサ1810は、コンピューティングデバイス1800内で実行されるための命令を処理することができ、これにはメモリ1820内又は記憶装置1830上に記憶される、高速インタフェース1840に連結されたディスプレイ1880等の外部入力/出力デバイス上にグラフィカルユーザインタフェース(GUI)のためのグラフィック情報を表示させる命令が含まれる。他の実装形態において、複数のプロセッサ及び/又は複数のバスが、複数のメモリ及びメモリタイプと共に適切に使用され得る。また、複数のコンピューティングデバイス1800が接続され得て、各デバイスが必要な動作の一部を(例えば、サーババンク、ブレードサーバ群、又はマルチプロセッサシステムとして)提供する。
【0054】
[0071] メモリ1820は、コンピューティングデバイス1800内に非一時的に情報を保存する。メモリ1820は、コンピュータ可読媒体、揮発性メモリユニット、又は不揮発性メモリユニットであり得る。不揮発性メモリ1820は、プログラム(例えば、命令のシーケンス)又はデータ(例えば、プログラム状態情報)をコンピューティングデバイス1800により使用されるために一時的又は永久的に記憶するために使用される物理デバイスであり得る。不揮発性メモリの例には、フラッシュメモリ及びリードオンリメモリ(ROM)/プログラマブルリードオリメモリ(PROM)/イレーサブルプログラマブルリードオンリメモリ(EPROM)/エレクトロニカルイレーサブルプログラマブルリードオンリメモリ(EEPROM)(例えば、典型的に、ブートプログラム等、ファームウェアのために使用される)が含まれるが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、及びディス又はテープが含まれるが、これらに限定されない。
【0055】
[0072] 記憶装置1830は、コンピューティングデバイス1800のための大量記憶を提供できる。幾つかの実装形態において、記憶装置1830は、コンピュータ可読媒体である。各種の異なる実装形態において、記憶装置1830はフロッピディスクデバイス、ハードディスクデバイス、光ディスクデバイス、又はテープデバイス、フラッシュメモリ若しくはその他同様のソリッドステートメモリデバイス又は、記憶エリアネットワーク若しくはその他の構成のデバイスを含むデバイスのアレイであり得る。追加的な実装形態において、コンピュータプログラム製品は、情報キャリア内で有形の状態に具現化される。コンピュータプログラム製品は、実行されると、1つ又は複数の方法、例えば前述の方法を実行する命令を含む。情報キャリアは、コンピュータ又は機械可読媒体、例えばメモリ1820、記憶装置1830、又はプロセッサ1810上のメモリである。
【0056】
[0073] 高速コントローラ1840は、コンピューティングデバイス1800のためのバンド幅集約動作を管理し、他方で、低速コントローラ1860は、よりバンド幅集約性の低い動作を管理する。このような担当作業の割り当ては例示にすぎない。幾つかの実装形態において、高速コントローラ1840は、メモリ1820及び、各種の拡張カード(図示せず)を受け入れ得る高速拡張ポート1850に連結される。幾つかの実装形態において、低速コントローラ1860は、記憶装置1830及び低速拡張ポート1890に連結される。低速拡張ポート1890は、各種の通信ポート(例えば、USB、Bluetooth、イーサネット、無線イーサネット)を含み得て、1つ又は複数の入力/出力デバイス、例えばキーボード、ポインティングデバイス、スキャナ、又はスイッチや又はルータ等のネットワークデバイスに、例えばネットワークアダプタを通じて連結され得る。
【0057】
[0074] 本明細書の記載のシステム及び技術の各種の実装形態は、デジタル電子機器及び/又は光回路構成、集積回路、特別に設計されたASIC(特定用途集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組合せで実現できる。これらの各種の実装形態は、特定目的用でも汎用でもよい、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、そこにデータ及び命令を送信するために連結された少なくとも1つのプログラマブルプロセッサを含むプログラム可能システム上で実行可能及び/又は解釈可能な1つ又は複数のコンピュータプログラムでの実装を含むことができる。
【0058】
[0075] これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られる)は、プログラム可能プロセッサのための機械命令を含み、高レベル手続き型及び/又はオブジェクト指向プログラミング言語及び/又はアセンブリ/機械言語で実装できる。本明細書で使用されるかぎり、「機械可読媒体」及び「コンピュータ可読媒体」という用語は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用されるあらゆるコンピュータプログラム製品、非一時的コンピュータ可読媒体、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLDs))を指し、機械可読信号として機械命令を受け取る機械可読媒体も含まれる。「機械可読信号」という用語は、機械命令及び/又はデータをプログラム可能プロセッサに提供するために使用されるあらゆる信号を指す。
【0059】
[0076] 本明細書に記載されるプロセッサ及びロジックフローは、入力データを処理し、出力を生成することによって機能を果たすために1つ又は複数のコンピュータプログラムを実行する、データ処理ハードウェアとも呼ばれる1つ又は複数のプログラム可能プロセッサにより実行可能である。プロセッサ及びロジックフローはまた、特殊用途の論理回路構成、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途集積回路)等によっても実行可能である。コンピュータプログラムの実行に適したプロセッサには、例えば汎用及び特殊用途のマイクロプロセッサ、あらゆる種類のデジタルコンピュータの1つ又は複数のプロセッサが含まれる。一般に、プロセッサはリードオンリメモリ若しくはランダムアクセスメモリ又はその両方から命令及びデータを受信する。コンピュータの基本要素は、命令を実行するためのプロセッサと、命令及びデータを記憶するための1つ又は複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つ又は複数の大量記憶装置、例えば磁気、磁気光ディスク、又は光ディスクを含むか、これらからデータを受信し、又はそれらにデータを送信するために動作的に連結される。しかしながら、コンピュータは、このようなデバイスを含んでいなくてもよい。コンピュータプログラム命令及びデータを記憶するのに適したコンピュータ可読媒体には、あらゆる形態の不揮発性メモリ、媒体、及びメモリデバイスが含まれ、これらには例えば、半導体メモリデバイス、例えばEPROM、EEPROM、及びフラッシュメモリデバイス、磁気ディスク、例えば内蔵ハードディスク若しくはリムーバブルディスク、磁気光ディスク、並びにCD ROM及びDVD-ROMディスクが含まれる。プロセッサとメモリは、特殊用途の論理回路構成により補足され、又はその中に組み込まれることも可能である。
【0060】
[0077] 様々な実施形態を説明した。しかしながら、本開示の主旨と範囲から逸脱することなく、各種の改良が加えられてよいと理解されたい。したがって、その他の実装形態も以下の特許請求の範囲に含まれる。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
図11A
図11B
図11C
図12
図13
図14
図15
図16
図17
図18