(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-19
(45)【発行日】2023-09-27
(54)【発明の名称】方法及びロボット
(51)【国際特許分類】
G05D 1/02 20200101AFI20230920BHJP
B25J 13/08 20060101ALI20230920BHJP
G06T 7/00 20170101ALI20230920BHJP
【FI】
G05D1/02 K
B25J13/08 A
G06T7/00 Z
(21)【出願番号】P 2021553786
(86)(22)【出願日】2019-08-23
(86)【国際出願番号】 US2019047928
(87)【国際公開番号】W WO2020209888
(87)【国際公開日】2020-10-15
【審査請求日】2021-11-08
(32)【優先日】2019-04-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホイットマン,エリック
(72)【発明者】
【氏名】フェイ,ジーナ,クリスティーン
(72)【発明者】
【氏名】スウィリング,ベンジャミン
【審査官】影山 直洋
(56)【参考文献】
【文献】特開2015-051483(JP,A)
【文献】特開2015-054391(JP,A)
【文献】特開2014-100767(JP,A)
【文献】特開2003-236781(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
B25J 13/08
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
方法(500)であって、
データ処理ハードウェア(172)で
、ロボット(100
)の1つ以上のセンサーからセンサーデータ(164)を受信することであって、
前記センサーデータは、段(20)を有する環境(10)に対応し、前記ロボット(100)は
4つの脚(104)を備える、前記
センサーデータを受信することと、
前記ロボット(100)が前記段(20)を昇降する前に、
前記データ処理ハードウェア(172)によって、受信した前記
センサーデータ(164)に基づいて
前記段(20)の対応するステップ領域(220)を決定することであって、前記
対応するステップ領域(220)が、前記ロボット(100)の対応する遊脚(104
SW)の遠位端の
配置のための
前記段(20)
の領域を特定する、前記ステップ領域を決定することと、
前記データ処理ハードウェア(172)によって、前記ロボット(100)の重量分布を
、前記ロボット(100)の
昇降方向に面するロボットの部分に向かってシフトさせることと、
前記シフトした重量分布を有する前記ロボット(100)が前記段(20)を昇降するように、前記データ処理ハードウェア(172)によって
、前記対応する遊脚(104
SW)の前記遠位端(106)を
、前記対応するステップ領域(220)内の目標ステップ場所に移動させる
ように指示することと、を含む、方法。
【請求項2】
前記ロボット(100)が前記段(20)を昇降する前に、前記データ処理ハードウェア(172)によって
、前記段(20)を昇降する
ために前記
4つの脚(104)が回避すべき
、前記段(20)の対応する衝突領域(230)を特定することをさらに含む、請求項1に記載の方法。
【請求項3】
前記データ処理ハードウェア(172)によって、
前記段(20)の表面に対する前記ロボット(100)
の高さ、および
前記ロボット(100)
のボディ(102)に沿って定義された縦軸を中心とした前記ロボット(100)のピッチ
を調整することをさらに含み、前
記高さおよび前記ピッチの前記調整が
、前記対応する衝突領域(230)に基づく、請求項2に記載の方法。
【請求項4】
前記データ処理ハードウェア(172)によって、
前記4つの脚(104)の各脚(104)についての対応する脚の運動学を特定することと、
前記データ処理ハードウェア(172)によって、
前記段(20)の表面に対する前記ロボット(100)
の高さ、および
前記ロボット(100)
のボディ(102)に沿って定義された縦軸を中心とした前記ロボット(100)のピッチ
を調整することと、をさらに含み、
前
記高さおよび前記ピッチの前記調整が
、前記対応する衝突領域(230)および前記
4つの脚(104)の各脚(104)について
特定された前記対応する脚の運動学に基づく、請求項2に記載の方法。
【請求項5】
前記データ処理ハードウェア(172)によって
、前記対応する遊脚(104
SW)の前記遠位端(106)が、前記目標ステップ場所
に対応する
前記段(20)に接触していることを検出することと、
前記検出に基づいて、前記データ処理ハードウェア(172)によって
、前記対応する遊脚(104
SW)を立脚(104
ST)として分類することと、をさらに含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記データ処理ハードウェア(172)によって、前記ロボット(100)の後続脚(104
T)の膝関節(J
K)が、前記ロボット(100)のボディ(102)の後ろの物体に接触していることを検出することと、
前記検出に基づいて、前記データ処理ハードウェア(172)によって、前記後続脚(104
T)の前記膝関節(J
K)
を前記ボディ(102)の下で前方に移動させる
ように指示することと、をさらに含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記データ処理ハードウェア(172)によって、前記ロボット(100)の前記対応する遊脚(104
SW)
と反対側の立脚(104
C)との間の衝撃(310)を検出することと、
検出された前記衝撃(310)に基づいて、前記データ処理ハードウェア(172)によって
、前記対応する遊脚(104
SW)の前記遠位端(106)を
、前記反対側の立脚(104
C)から離れて調整されたステップ場所にシフトさせることと、をさらに含み、
前記調整されたステップ場所が、前記段
(20)の前記対応するステップ領域(220)内にあり、前記目標ステップ場所に対してシフトされる、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記データ処理ハードウェア(172)によって、前記ロボット(100)の不安定性を引き起こ
す前記対応する遊脚(104
SW)のトリップ状態を検出することと、
検出された前記トリップ状態に基づいて、前記データ処理ハードウェア(172)によって、前記対応する遊脚
(104
SW
)の前記遠位端(106)を持ち上げることと、をさらに含む、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記ロボット(100)が前記段(20)を昇降する前に、前記データ処理ハードウェア(172)によって、固定ケイデンスで前記段(20)を昇降するための移動コントローラ(120)を選択することをさらに含み、前記固定ケイデンスが
、前記対応するステップ領域(220)に基づく、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記データ処理ハードウェア(172)によって、
前記ロボット(100)の立脚(104
ST)の遠位端(106)を後続段(20)に
移動させるように指示することをさらに含み、前記後続段(20)が、
前記段(20)の下方、または、
前記段(20)の上方、のうちの1つに位置する、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記対応する遊脚(104
SW)の前記遠位端(106)による前記移動およ
び前記立脚(104
ST)の前記遠位端(106)による
前記移動が、固定ケイデンスで発生する、請求項10に記載の方法。
【請求項12】
前記対応するステップ領域(220)が、前
記段(20)の踏面部分(22)に関連付けられている、請求項1~11のいずれか一項に記載の方法。
【請求項13】
ロボット(100)であって、
ボディ(102)と、
前記ボディ(102)に結合され、段(20)を有する環境(10)を昇降するように構成された
4つの脚(104)と、
前記
4つの脚(104)と通信する移動コントローラ(120)と、を備え、前記移動コントローラ(120)が、データ処理ハードウェア(172)および前記データ処理ハードウェア(172)と通信するメモリハードウェア(174)を備え、前記メモリハードウェア(174)が、前記データ処理ハードウェア(172)上で実行されるとき、前記データ処理ハードウェア(172)に、
前記ロボット(100)
の1つ以上のセンサーからセンサーデータ(164)を受信すること
であって、前記センサーデータは前記環境(10)に対応する、前記センサーデータを受信することと、
前記ロボット(100)が前記段(20)を昇降する前に、
受信した前記
センサーデータ(164)に基づいて
前記段(20)の対応するステップ領域(220)を決定することであって、前記
対応するステップ領域(220)が、前記ロボット(100)の対応する遊脚(104
SW)の遠位端(106)の
配置のための
前記段(20)
の領域を特定する、前記ステップ領域を決定することと、
前記ロボット(100)の重量分布を
、前記ロボット(100)の
昇降方向に面するロボットの部分に向かってシフトさせることと、
前記シフトした重量分布を有する前記ロボット(100)が前記段(20)を昇降するように、前記対応する遊脚(104
SW)の前記遠位端(106)を
、前記対応するステップ領域(220)内の目標ステップ場所に移動させる
ように指示することと、を含む動作を実行させる命令を格納する、ロボット。
【請求項14】
前記動作が、前記ロボット(100)が前記段(20)を昇降する前に
、前記段(20)を昇降する
ために前記
4つの脚(104)が回避すべき
、前記段(20)の対応する衝突領域(230)を特定することをさらに含む、請求項13に記載のロボット。
【請求項15】
前記動作が
、
前記段(20)の表面に対する前記ロボット(100)
の高さ、および
前記ボディ(102)に沿って定義された縦軸を中心とした前記ロボット(100)のピッチ
を調整することをさらに含み、前
記高さおよび前記ピッチの前記調整が
、前記対応する衝突領域(230)に基づく、請求項14に記載のロボット。
【請求項16】
前記動作が
、
前記4つの脚(104)の各脚(104)についての対応する脚の運動学を特定することと、
前記段(20)の表面に対する前記ロボット(100)
の高さ、および
前記ボディ(102)に沿って定義された縦軸を中心とした前記ロボット(100)のピッチ
を調整することと、をさらに含み、
前
記高さおよび前記ピッチの前記調
整が、前記対応する衝突領域(230)および
前記4つの脚(104)の各脚(104)について
特定された前記対応する脚の運動学に基づく、請求項14に記載のロボット。
【請求項17】
前記動作が
、
前記対応する遊脚(104
SW)の前記遠位端(106)が
、前記段(20)に接触していることを検出することと、
前記検出に基づいて
、前記対応する遊脚(104
SW)を立脚(104
ST)として分類することと、をさらに含む、請求項13~16のいずれか一項に記載のロボット。
【請求項18】
前記動作が
、
前記ロボット(100)の後続脚(104
T)の膝関節(J
K)が、
前記ボディ(102)の後ろの物体に接触していることを検出することと、
前記検出に基づいて、前記後続脚(104
T)の前記膝関節(J
K)
を前記ボディ(102)の下で前方に移動させる
ように指示することと、をさらに含む、請求項13~17のいずれか一項に記載のロボット。
【請求項19】
前記動作が
、
前記ロボット(100)の前記対応する遊脚(104
SW)
と反対側の立脚(104
C)との間の衝撃(310)を検出することと、
検出された前記衝撃(310)に基づいて
、前記対応する遊脚(104
SW)の前記遠位端(106)を
、前記反対側の立脚(104
C)から離れて調整されたステップ場所にシフトさせることと、をさらに含み、
前記調整されたステップ場所が
、前記対応するステップ領域(220)内にあり、前記目標ステップ場所に対してシフトされる、請求項13~18のいずれか一項に記載のロボット。
【請求項20】
前記動作が
、
前記ロボット(100)の不安定性を引き起こ
す前記対応する遊脚(104
SW)のトリップ状態を検出することと、
検出された前記トリップ状態に基づいて、前記対応する遊脚
(104
SW
)の前記遠位端(106)を持ち上げることと、をさらに含む、請求項13~19のいずれか一項に記載のロボット。
【請求項21】
前記動作が、前記ロボット(100)が前記段(20)を昇降する前に、固定ケイデンスで前記段(20)を昇降するための移動コントローラ(120)を選択することをさらに含み、前記固定ケイデンスが
、前記対応するステップ領域(220)に基づく、請求項13~20のいずれか一項に記載のロボット。
【請求項22】
前記動作が、
前記ロボット(100)の立脚(104
ST)の遠位端(106)を後続段(20
)に移動させるように指示することをさらに含み、前記後続段(20)が、
前記段(20)の下方、または、
前記段(20)の上方、のうちの1つに位置する、請求項13~21のいずれか一項に記載のロボット。
【請求項23】
前記対応する遊脚(104
SW)の前記遠位端(106)による前記移動およ
び前記立脚(104
ST)の前記遠位端(106)による
前記移動が、固定ケイデンスで発生する、請求項22に記載のロボット。
【請求項24】
前記対応するステップ領域(220)が、前
記段(20)の踏面部分(22)に関連付けられている、請求項13~23のいずれか一項に記載のロボット。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、段を通り抜けるロボットに関する。
【背景技術】
【0002】
ロボットは、一般に、タスクを実行するために、可変のプログラムされた動作を介して材料、部品、ツール、または特殊なデバイスを移動するように設計された再プログラム可能な多機能マニピュレータとして定義される。ロボットは、物理的に固定されたマニピュレータ(例えば、産業用ロボットアーム)、(例えば、脚、車輪、もしくは牽引ベースのメカニズムを使用して)環境全体を移動する移動ロボット、またはマニピュレータと移動ロボットとの何らかの組み合わせであり得る。ロボットは、例えば、製造、輸送、危険な環境、探査、およびヘルスケアを含む、様々な産業で利用される。このように、調整された脚の動きの様々な手段を必要とする障害物または特徴を備えた環境を昇降するロボットの能力は、そのような産業に追加の利益を提供する。
【発明の概要】
【0003】
本開示の一態様は、段を通り抜けるための方法を提供する。本方法は、データ処理ハードウェアで、段を有する環境内で動くロボットについての画像データを受信することを含む。ここで、ロボットは、2つ以上の脚を含む。ロボットが段を昇降する前に、各段について、本方法は、データ処理ハードウェアによって、受信した画像データに基づいて対応するステップ領域を決定することをさらに含む。ステップ領域は、ロボットの対応する遊脚の遠位端に対して対応する段上の安全な配置エリアを特定する。また、ロボットが段を昇降する前に、本方法は、データ処理ハードウェアによって、ロボットの重量分布をロボットの前部に向かってシフトすることを含む。ロボットが段を昇降するとき、本方法は、各段について、データ処理ハードウェアによって、ロボットの対応する遊脚の遠位端を、目標ステップ場所が段の対応するステップ領域内にある目標ステップ場所に移動することを追加的に含む。
【0004】
本開示の実装例は、以下の任意選択の特徴のうちの1つ以上を含み得る。いくつかの実装例では、ロボットが段を昇降する前に、本方法は、データ処理ハードウェアによって、各段に対応する衝突領域を特定することをさらに含む。ここで、衝突領域は、ロボットが段を昇降するときにロボットの脚が回避すべき対応する段の領域に対応する。これらの実装例のいくつかでは、ロボットが段を昇降するときに、本方法は、データ処理ハードウェアによって、段の表面に対するロボットの重心のボディ高さ、およびロボットのボディに沿って定義された縦軸を中心としたロボットのピッチを調整することを含み得、ボディ高さおよびピッチの調整は、各段について特定された対応する衝突領域に基づく。他のこれらの実装例では、ロボットが段を昇降するとき、本方法は、データ処理ハードウェアによって、ロボットの各脚についての対応する脚の運動学を特定することと、データ処理ハードウェアによって、段の表面に対するロボットの重心のボディ高さ、およびロボットのボディに沿って定義された縦軸を中心としたロボットのピッチを調整することとを含み得、ボディ高さおよびピッチの調整は、各段について特定された対応する衝突領域およびロボットの各脚についての対応する脚の運動学に基づいている。
【0005】
いくつかの実施例では、対応する遊脚の遠位端を目標場所に移動させながら、本方法は、データ処理ハードウェアによって、ロボットの対応する遊脚の遠位端が目標ステップ場所で対応する段に接触していることを検出すること、および検出に基づいて、データ処理ハードウェアによって、ロボットの対応する遊脚を立脚として分類することを含む。
【0006】
いくつかの構成では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、本方法は、データ処理ハードウェアによって、ロボットの後続脚の膝関節がロボットのボディの後ろの物体に接触していることを検出することを含む。検出に基づいて、本方法は、データ処理ハードウェアによって、後続脚の膝関節をロボットのボディの下で前方に移動させることを含む。
【0007】
いくつかの実装例では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、本方法は、データ処理ハードウェアによって、ロボットの対応する遊脚とロボットの反対側の立脚との間の衝撃を検出することを含む。これらの実装例では、検出された衝撃に基づいて、本方法は、データ処理ハードウェアによって、ロボットの対応する遊脚の遠位端を、ロボットの反対側の立脚から離れて調整されたステップ場所にシフトすることをさらに含み、調整されたステップ場所は、段の対応するステップ領域内にあり、目標ステップ場所に対してシフトされる。
【0008】
いくつかの構成では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、本方法は、データ処理ハードウェアによって、ロボットの不安定性を引き起こすロボットの対応する遊脚のトリップ状態を検出することを含む。これらの構成では、検出されたトリップ状態に基づいて、本方法は、データ処理ハードウェアによって、対応する遊脚の遠位端を持ち上げることをさらに含む。
【0009】
任意選択で、ロボットが段を昇降する前に、本方法はまた、データ処理ハードウェアによって、固定ケイデンスで段を昇降するための移動コントローラを選択することを含み、固定ケイデンスは、各段について決定された対応するステップ領域に基づいている。各段について決定された対応するステップ領域は、対応する段の踏面部分に関連付けられ得る。いくつかの実施例では、ロボットの対応する遊脚の遠位端を目標ステップ場所に移動させるとき、本方法は、データ処理ハードウェアによって、立脚の遠位端を後続段に位置決めすることを含み得、後続段は、ロボットが段を上っているときは対応する遊脚のための目標ステップ場所に関連付けられた段の下方、または、ロボットが段を下降しているときは対応する遊脚のための目標ステップ場所に関連付けられた段の上方、のうちの1つに位置する。ここで、ロボットの対応する遊脚の遠位端による移動およびロボットの後続脚の遠位端による移動は、固定ケイデンスで発生し得る。
【0010】
本開示の別の態様は、段を通り抜けるためのロボットを提供する。ロボットは、ボディ、ボディに結合され、段を有する環境を昇降するように構成された2つ以上の脚、および2つ以上の脚と通信する移動コントローラを含む。移動コントローラは、データ処理ハードウェアおよびデータ処理ハードウェアと通信するメモリハードウェアを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる命令を格納する。動作は、段を有する環境内で動くロボットについての画像データを受信することを含む。ロボットが段を昇降する前に、各段について、動作は、受信した画像データに基づいて対応するステップ領域を決定することをさらに含む。ステップ領域は、ロボットの対応する遊脚の遠位端に対して対応する段上の安全な配置エリアを特定する。また、ロボットが段を昇降する前に、動作は、ロボットの重量分布をロボットの前部に向かってシフトすることを含む。ロボットが段を昇降するとき、動作は、各段について、ロボットの対応する遊脚の遠位端を、目標ステップ場所が段の対応するステップ領域内にある目標ステップ場所に移動することを追加的に含む。
【0011】
本態様は、以下の任意選択の機能のうちの1つ以上を含んでもよい。いくつかの実装例では、ロボットが段を昇降する前に、動作は、各段に対応する衝突領域を特定することをさらに含む。ここで、衝突領域は、ロボットが段を昇降するときにロボットの脚が回避すべき対応する段の領域に対応する。これらの実装例では、ロボットが段を昇降するとき、動作は、段の表面に対するロボットの重心のボディ高さおよびロボットのボディに沿って定義された縦軸を中心としたロボットのピッチを調整することを含み得、ボディ高さおよびピッチの調整は、各段について特定された対応する衝突領域に基づく。他のこれらの実装例では、ロボットが段を昇降するとき、動作は、ロボットの各脚についての対応する脚の運動学を特定することと、段の表面に対するロボットの重心のボディ高さおよびロボットのボディに沿って定義された縦軸を中心としたロボットのピッチを調整することとを含み得、ボディ高さおよびピッチの調整は、各段で特定された対応する衝突領域と、ロボットの各脚についての対応する脚の運動学とに基づいている。
【0012】
いくつかの実施例では、対応する遊脚の遠位端を目標場所に移動させながら、動作は、ロボットの対応する遊脚の遠位端が目標ステップ場所で対応する段に接触していることを検出すること、および検出に基づいて、ロボットの対応する遊脚を立脚として分類することを含む。
【0013】
いくつかの構成では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、動作は、ロボットの後続脚の膝関節がロボットのボディの後ろの物体に接触していることを検出することを含む。検出に基づいて、動作は、後続脚の膝関節をロボットボディの下で前方に移動させることを含む。
【0014】
いくつかの実装例では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、動作は、ロボットの対応する遊脚とロボットの反対側の立脚との間の衝撃を検出することを含む。これらの実装例では、検出された衝撃に基づいて、動作は、ロボットの対応する遊脚の遠位端を、ロボットの反対側の立脚から離れて調整されたステップ場所にシフトすることさらに含み、調整されたステップ場所は、段の対応するステップ領域内にあり、目標のステップ場所に対してシフトされる。
【0015】
いくつかの構成では、対応する遊脚の遠位端を目標ステップ場所に移動させながら、動作は、ロボットの不安定性を引き起こすロボットの対応する遊脚のトリップ状態を検出することを含む。これらの構成では、検出されたトリップ状態に基づいて、動作は、対応する遊脚の遠位端を持ち上げることをさらに含む。
【0016】
任意選択で、ロボットが段を昇降する前に、動作はまた、固定ケイデンスで段を昇降するための移動コントローラを選択することを含み、固定ケイデンスは、各段について決定された対応するステップ領域に基づく。各段について決定された対応するステップ領域は、対応する段の踏面部分に関連付けられ得る。いくつかの実施例では、ロボットの対応する遊脚の遠位端を目標ステップ場所に移動させるとき、動作は、立脚の遠位端を後続段に位置決めすることを含み得、後続段は、ロボットが段を上っているときは対応する遊脚のための目標ステップ場所に関連付けられた段の下方、または、ロボットが段を下降しているときは対応する遊脚のための目標ステップ場所に関連付けられた段の上方、のうちの1つに位置する。ここで、ロボットの対応する遊脚の遠位端による移動およびロボットの後続脚の遠位端による移動は、固定ケイデンスで発生し得る。
【0017】
本開示の1つ以上の実装例の詳細が、添付図面および以下の説明において記述される。他の態様、特徴、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0018】
【
図1A】ロボット環境内の例示的なロボットの斜視図である。
【
図1B】
図1Aのロボットのシステムの例示的な構成の概略図である。
【
図1C】
図1Aのロボット環境内のロボットの例示的なセンサーシステムの概略図である。
【
図2A】ロボットがロボット環境内の地形を昇降するときの例示的なボディプランナの概略図である。
【
図2B】ロボットがロボット環境内の地形を昇降するときの例示的なボディプランナの概略図である。
【
図3A】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3A】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3B】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3C】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3D】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3E】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3F】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3G】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3H】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3I】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3J】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図3K】ロボットがロボット環境において段を昇降するときの
図1Aのロボットの例の斜視図である。
【
図4】
図1Aのロボットがロボット環境を昇降する間の段トラッカの概略図である。
【
図5】ロボットがロボット環境を昇降するための動作の例示的な構成である。
【
図6】本明細書に記載のシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイスの概略図である。
【0019】
様々な図面中の同様の参照符号は、同様の要素を示す。
【発明を実施するための形態】
【0020】
脚付きロボットが環境の周りで動くとき、ロボットは、正確な脚の動きと足配置(つまり、遠位端の配置)とを必要とする地形(例えば、人工の構造物)に遭遇することがある。正確な脚の動きと足配置とを提供するために、ロボットのシステムが異なるタイプの地形を認識すると、ロボットの動き制御システムは、小さなミスでも、ロボットにとって壊滅的な問題を引き起こし得るミスを防ぐために地形を昇降するためのロボットの動きを制限し得る。例えば、人間が段を昇降する場合、このタスクにはある程度の調整が必要である(例えば、目と足の調整)。調整がないと、人間は段を踏み外したり、滑ったり、つまずいたり、転んだりすることがある。ロボットは同じ不幸に遭遇しても、自然な調整を欠くことがある。したがって、ロボットには、正確な脚の動きを調整するためのシステムと方法とが必要である。
【0021】
図1Aは、ロボット100に対する環境10の一例である。環境10は、概して、昇降システム110に従ってロボット100によって昇降され得る段20、20a~nまたは段状の地形を含む、何らかのタイプの地形に関連付けられた空間エリアを指す。昇降システム110は、環境10の周りでロボット100を調整および/または移動させる責任がある。ロボット100が段20または段状の地形を昇降し、環境10の周りを移動するとき、昇降システム110は、地形を分析し、ロボット100についての運動軌道を計画し(例えば、パスジェネレータ130、ステッププランナ140、ボディプランナ150を用いて)、および/またはロボット100に様々な動きを実行するように指示し得る(例えば、コントローラ120を用いて)。昇降システム110は、ロボット100の様々なシステムを使用して、衝突Cおよび/またはロボット100もしくはロボットの環境10への損傷を回避しながら、環境10を首尾よく昇降するように試みることができる。
【0022】
段20、20a~nは、概して、垂直距離を橋渡しするように設計された1つを超える段20のグループ(すなわち、n個の段20のグループ)を指す。垂直距離を橋渡しするために、段20a~nは、通常、ピッチ(またはピッチ線)にわたって垂直高さの所与の上昇を伴う水平距離を走る。各段20は、伝統的に、踏面22および蹴上げ24を含む。段20の踏面22は、踏まれた段20の水平部分を指し、一方、蹴上げ24は、各踏面22の間の段20の垂直部分を指す。各段20の踏面22は、段20の外縁から段20の間の蹴上げ24までを測定する踏面深さ「d」にまたがっている。住宅用、商業用、または工業用の構造物の場合、一部の段20はまた、安全上の目的で建築基準法の一部として段鼻26も含む。
図1Aに示されるように、段鼻26は、踏面22の下の蹴上げ24を越えて突出する踏面22の一部である。例えば、段鼻26aは、踏面22aの一部であり、蹴上げ24aを越えて突出している。
【0023】
段状の地形とは、より一般的には、ある距離にわたって高さが変化する地形を指す。段状の地形は、高度の変化という点で段に似ている場合がある(例えば、高度が上がる傾斜したピッチ、または高度が下がる傾斜したピッチ)。しかしながら、段状の地形では、踏面22および蹴上げ24の線引きはそれほど明白ではない。むしろ、段状の地形とは、ロボットが立脚肢を据えるのに十分な静止摩擦を有し、連続的または同時に先導肢を使用して地形内の隣接する垂直障害物(蹴上げに似ている)を越えて上ることまたは下降することを可能にする踏面のような部分を有する地形を指す場合がある。例えば、段状の地形には、がれき、傾斜した岩のスクランブリング、損傷した、または劣化した従来の段などがあり得る。
【0024】
ロボット100は、ロボット100がロボット環境10の周りを移動することを可能にするボディ102に結合された脚104a~dなどの歩行運動ベースの構造体を備えたボディ102を含む。
図1Aは、4つの脚104a~dを有する四足歩行ロボットを示すが、ロボット100は、環境10内の地形を昇降するための手段を提供する任意の数の脚または歩行運動ベースの構造体(例えば、2つの脚を有する二足歩行もしくはヒト型ロボット)を含み得る。地形を昇降するために、各脚104は、地形の表面に接触している遠位端106を有する。言い換えれば、脚104の遠位端106は、ロボット100の移動中に枢動、据え付け、または概して静止摩擦を提供するためにロボット100によって使用される脚104の端部である。例えば、脚104の遠位端106は、ロボット100の足に対応する。
【0025】
いくつかの実装例では、
図1Bに示されるように、昇降システム110は、少なくとも1つのコントローラ120、パスジェネレータ130、ステップロケータ140、およびボディプランナ150を含む。昇降システム110は、少なくとも1つのセンサーシステム160および知覚システム200と通信するように構成される。昇降システム110は、データ処理ハードウェア172および/またはメモリハードウェア174などの、ロボット100のハードウェア170を使用して、動作および他の機能を実行する。いくつかの実施例では、ハードウェア170は、ロボット100の様々なシステム(例えば、昇降システム110、センサーシステム160、知覚システム200、および/または衝撃検出器300)がハードウェア170の使用において共有し得るように、ロボット100の中心である。いくつかの構成では、ロボット100の1つ以上のシステム(例えば、昇降システム110、コントローラ120、センサーシステム160、知覚システム200、および/または衝撃検出器300など)は、独自の専用ハードウェアを有する(例えば、ロボット100のハードウェア170と通信して)。コントローラ120は、ロボット100のシステム(例えば、昇降システム110、知覚システム200、衝撃検出器300など)からの入力またはフィードバックに基づいて、環境10の周りを昇降するようにロボット100の動きを制御するように構成される。これは、ロボット100のポーズおよび/または挙動の間の動きを含み得る。例えば、コントローラ120は、異なった足跡パターン、脚パターン、ボディ動きパターン、または視覚システム感知パターンを制御する。ここで、コントローラ120は、ロボット100のデータ処理ハードウェア172および/またはメモリハードウェア174と通信して、ロボット100のシステム(例えば、昇降システム110、知覚システム200、衝撃検出器300など)から提供される動きを実行するように構成される。
【0026】
いくつかの実施例では、コントローラ120は、コントローラ120の各々が固定ケイデンスを有する複数のコントローラ120を含む。固定ケイデンスは、脚104のステップまたは遊脚相の固定タイミングを指す。例えば、コントローラ120は、ロボット100に、特定の周波数(例えば、250ミリ秒、350ミリ秒ごとのステップなど)で脚104を動かす(例えば、ステップを踏む)ように命令する。各コントローラ120が固定ケイデンスを有する複数のコントローラ120を用いて、ロボット100は、コントローラ120間で切り替えることによって可変タイミングを経験することができる。いくつかの実装例では、ロボット100は、ロボット100が環境10を昇降するときに、固定ケイデンスコントローラ120を連続的に切り替え/選択する(例えば、3ミリ秒ごとにコントローラ120を再選択する)。
【0027】
昇降システム110は、コントローラ120のステッププランに基づいてコントローラ120を選択し得る。昇降システム110は、ケイデンス(すなわち、所与のコントローラに対してプログラムされた動きのペース)および環境10の周りでロボット100を移動させるための少なくとも1つのステアリングコマンドに基づいて、各コントローラ120のステッププランを生成し得る。ステッププランは、コントローラ120のケイデンスに基づいて、環境10の周りの地形に衝突領域220が存在しなかった場合、ロボット100がステップする場所(すなわち、脚104の遠位端106のための配置場所)に対応する、非制約の足配置のマップ(非制約マップと呼ばれる)を指す。ステッププランが与えられると、昇降システム110は、ステッププランを、知覚システム200によって生成された制約付きマップ202と比較する。比較に基づいて、昇降システム110は、そのステッププランが制約付きマップ202内で特定された最小量の制約に違反しているコントローラ120(すなわち、制約付きマップ202を達成するために最小量の偏差を必要とするステッププラン)を選択する。最小の偏差を有するコントローラ120を選択することによって、昇降システム110は、ロボット100が衝突領域220(または目標ステップ領域220)を回避するために最小の調整を必要とすることを確実にし得る。
【0028】
いくつかの実装例では、昇降システム110は、ステッププランと制約付きマップ202との間の関係に基づいて各コントローラ120にスコアを付け、最適なスコアを有するコントローラ120を選択する。例えば、昇降システム110は、制約付きマップ202を達成するために、最小の偏差を有するステッププランを備えたコントローラ120に対応する最低スコアを有するコントローラ120を選択する。いくつかの実施例では、スコアは、ステッププランと制約付きマップ202との間の関係に加えて、コントローラ120に対するソフト制約または条件に基づくコスト関数に対応する。昇降システム110はまた、スコアリングおよび/または選択の前に特定のコントローラ120を除外する条件で構成され得る。条件のいくつかの例には、遊足の場所に基づいて地形との望ましい接触が達成可能かどうか、または昇降中に特定のステップ高さが必要かどうかが含まれる。いくつかの構成では、コスト関数は、ステッププランと制約付きマップとの間の偏差が最も重要な条件である異なる条件に重みを適用する。
【0029】
いくつかの実施例では、メモリハードウェア174は、昇降システム110の動きまたは動きの制約をロボット100上に局所的に格納する。他の例では、これらの動きまたは制約は、昇降システム110によって遠隔的に格納および/またはアクセスされる。例えば、昇降システム110は、ネットワーク180を介して、リモートシステム190と通信する。リモートシステム190は、リモートデータ処理ハードウェア194およびリモートメモリハードウェア196などのリモートリソース192を含むサーバまたはクラウドベースの環境であり得る。いくつかの実装例では、動きまたは昇降制約は、リモートリソース192を使用してリモートシステム190上で格納および/または処理され、ネットワーク180を介してロボット100の昇降システム110および/またはコントローラ120に伝達される。さらに他の実施例では、昇降システム110に関連する異なる出力が、リモートで(例えば、リモートシステム190を介して)およびローカルで(例えば、メモリハードウェア174を介して)処理および/または格納される。
【0030】
センサーシステム160は、1つ以上のセンサー162、162a~nを含む。センサー162は、視覚/画像センサー、慣性センサー(例えば、慣性測定ユニット(IMU))、力センサー、および/または運動学的センサーを含み得る。センサー162のいくつかの例としては、ステレオカメラなどのカメラ、走査光検出と測距(LIDAR)センサー、または走査レーザー検出と測距(LADAR)センサーが挙げられる。いくつかの実施例では、センサー162は、センサー162に対応する感知範囲または領域を定義する、対応する視野F
vを有する。例えば、
図1Aは、ロボット100の視野F
Vを示す。各センサー162は、センサー162が、例えば、1つ以上の軸(例えば、グランドプレーンGに関するx軸、y軸、またはz軸)周りの視野F
Vを変更し得るように、枢動可能および/または回転可能であり得る。
【0031】
センサー162を用いて視野FVを調査するときに、センサーシステム160は、視野FVに対応するセンサーデータ164(画像データとも呼ばれる)を生成する。いくつかの実施例では、センサーデータ164は、三次元体積画像センサー162によって生成された三次元体積点群に対応する画像データである。追加的または代替的に、ロボット100が環境10の周りで動いているとき、センサーシステム160は、慣性測定データ(例えば、IMUによって測定された)を含む、ロボット100についてのポーズデータを収集する。いくつかの実施例では、ポーズデータは、ロボット100に関する運動学的データおよび/または向きデータを含む。センサーデータ164を用いて、知覚システム200は、環境10の周りの地形についてのマップ212(または制約付きマップ202)を生成し得る。
【0032】
環境10に関する画像データ、ポーズデータ、慣性データ、運動学的データなどの、センサーシステム160によって収集されたセンサーデータ164は、ロボット100の昇降システム110(例えば、データ処理ハードウェア172およびメモリハードウェア172)に伝達され得る。いくつかの実施例では、センサーシステム160は、センサーデータ164を収集および格納する(例えば、メモリハードウェア174、またはリモートリソース192のメモリハードウェア196内に)。他の実施例では、センサーシステム160は、センサーデータ164をリアルタイムで収集し、生の(すなわち、未処理の)センサーデータ164を格納することなく、センサーデータ164を処理する。さらに他の実施例では、昇降システム110および/またはリモートリソース162が、処理されたセンサーデータ164および生のセンサーデータ164の両方を格納する。
【0033】
ロボット100が環境10の周りで動くとき、センサーシステム160は、環境10の地形に関連するセンサーデータ164を収集する。例えば、
図1Aは、ロボット100が段20の踊り場の頂上に立っているときに、段20に関するセンサーデータ164を収集しているセンサーシステム160を示している。
図1Cに示されるように、段20の構造は、センサーデータ164の妨害(すなわち、不完全なセンサーデータ164)につながる場合がある。例えば、段20を見上げるまたは見下ろすとき、センサーシステム160は、段20全体を詳細に視覚化することができない。従来の段20の場合、これはしばしば、踏面22の前または後の蹴上げ24が、段20の踏面22の部分を視覚的に遮るためである。これらの障害物があると、センサーシステム160は、遮られたエリアの実際のセンサーデータ164を収集することができない。これは次に、遮られたエリアについてセンサーデータ164にギャップをもたらす。
【0034】
図1Bを参照すると、パスジェネレータ130は、ロボット100の水平方向の動きを決定するように構成される。例えば、水平方向の動きは、ロボット100の並進および/または偏揺れを指す。パスジェネレータ130は、センサーデータ164に基づいて、ロボット100に関する環境10内の障害物を決定する。パスジェネレータ130は、ステッププランナ140がロボット100の脚104の足配置(例えば、ロボット100の脚104の遠位端106を配置する場所)を特定し得るように、障害物をステッププランナ140に伝達する。ステッププランナ140は、知覚システム200からの入力(例えば、領域220、230)を使用して、足配置(すなわち、ロボット100がステップするべき場所)を生成する。
【0035】
いくつかの実施例では、知覚システム200は、環境10に関する地形のセンサーデータ164に基づいてマップ212を生成するマップジェネレータ210を含む。いくつかの実装例では、マップジェネレータ210は、不完全なマップ212を生成し、センサーデータ164の性質に基づいて、センサーデータ164のギャップを埋めるように構成される。言い換えれば、知覚システム200のマップジェネレータ210は、可視地形T
Vについて収集されたセンサーデータ164から、遮られた地形(推定地形T
Iとも呼ばれる)についての詳細を推定する。センサーデータ164に基づいて、マップジェネレータ210は、欠落しているセンサーデータ164が滑らかな地形または平坦な地形のいずれかに対応すると仮定するようにプログラムされる。センサーデータ164が遠方物体に隣接する近方物体を示す場合、マップジェネレータ210は、環境10内のセンサーシステム160の妨害が原因でこの近遠コントラストが発生すると仮定する。マップジェネレータ210が、妨害が発生したと仮定するとき、マップジェネレータ210は、これらのギャップを平坦な地形としてマッピングすることによって、センサーデータ164のギャップを埋める。対照的に、センサーデータ164が近遠コントラストを示さないとき、マップジェネレータ210は、欠落したセンサーデータ164がセンサーシステム160による視覚不良によるものであると仮定し、欠落したセンサーデータ164を滑らかな地形としてマッピングする。一般的に言えば、段20によって引き起こされる妨害は、マップジェネレータ210が段20の遮られた地形を平坦としてマッピングするように、近遠コントラストを示すセンサーデータ164を有する。
図1Cを参照すると、マップジェネレータ210は、蹴上げ24a~cによって引き起こされた段20a~gの遮られた詳細を、踏面22a~cの平坦な部分としてマッピングする(すなわち、妨害のために平坦な推定地形T
Iを生成する)。
【0036】
図2Aを参照すると、センサーデータ164からマップジェネレータ210によって生成されたマップ212に基づいて、知覚システム200は、ロボット100についての制約付きマップ202を生成する(例えば、ロボット100の昇降システム110が実行する)。知覚システム200は、概して、制約付きマップ202または制約付きマップ202の一部(例えば、衝突/非衝突領域220、230)を昇降システム110と(例えば、昇降システム110のステップロケータ140と)通信させる。ステップロケータ140は、環境10を昇降する間に衝突を回避する運動の軌道を計画するように構成されたロボット100についての軌道プランナ(運動計画とも呼ばれる)を指す。マップ212を用いて、知覚システム200は、ロボット100に対する段20上の安全な配置エリアを特定するステップ領域220を決定する。脚104の遠位端106は、ステップ領域220内に配置され得、脚104の一部と段20の構造との間の干渉の可能性を低減および/または排除し得る。例えば、
図2Aは、7つの段20a~gについてのステップ領域220、220a~gを例示している。ステップ領域220の外側では、ロボット100の脚104の一部は、段20の構造との衝突Cのリスクがある。いくつかの実装例では、ロボット100が蹴上げ24に近づきすぎると、ロボット100は、段20を上るまたは下降するときに段20の一部(例えば、蹴上げ24または踏面22の段鼻)に脚104の一部を当てるリスクがある。例えば、
図2Aは、そのすねに対応するエリアで衝突Cを起こすロボット100の脚104dを示している。ここで、衝突Cは、ロボット100が段20を下降し、ロボット100の後脚104dの関節Jを曲げるときに、段20の蹴上げ24に対して発生している。
【0037】
いくつかの実施例では、ステップ領域220の外側が段20の縁に近すぎて、その結果、このエリアに脚104の遠位端106を配置すると、ロボット100の脚104が段20から滑り落ちる原因となる。センサーデータ164に基づいてステップ領域220を決定することによって、感知システム200は、ロボット100が段20または段状の地形を首尾よく昇降するのを助ける(例えば、最小限の問題または衝突なしで)。ロボット100による衝突Cは、一般に問題であり、なぜなら、衝突Cは、ロボット100が段20または段状の地形を昇降することを妨げ得、ロボット100がタスクを実行しているとき、または目的地に走行しているときにタイミングの問題を引き起こし得、段20を損傷、および/または走行中にロボット100を損傷し得る(例えば、ロボット100が段20から落下する)からである。
【0038】
いくつかの実装例では、知覚システム200は、各段20について少なくとも1つの衝突領域230(例えば、衝突領域230、230a~f)を決定する。衝突領域230は、ロボット100が段20、20a~nを昇降するときにロボット100の脚104が回避すべき段20の領域を指す。言い換えれば、衝突領域230において、ロボット100の脚104の一部は、段20の構造と衝突Cを起こす可能性が高いか、または必然的に衝突Cを起こすことになる。いくつかの実施例では、知覚システム200は、ステップ領域220の代わりに衝突領域230(すなわち、ステップなし領域)を決定し、ロボット100は、段20を昇降するために衝突領域230を回避するように命令を受け取る。他の実施例では、知覚システム200は、ステップ領域220および衝突領域230の両方(すなわち、領域220、230)を決定する。
【0039】
いくつかの構成では、知覚システム200は、段20を昇降する前に、ステップ領域220および/または衝突領域230を決定する。追加的または代替的に、知覚システム200は、段20を昇降しながらステップ領域220および/または衝突領域230を決定し得る(例えば、リアルタイムで連続的に)。例えば、知覚システム200は、ロボット100が段20に遭遇して昇降するときに、ステップ領域220および/または衝突領域230を連続的に決定する。知覚システム200が、走行前または走行中のステップ領域220および/または衝突領域230を決定するかどうかは、ロボット100のセンサーシステム160および/または他のシステム(例えば、昇降システム110)の設計能力および/または処理能力に依存し得る。
【0040】
いくつかの実施例では、知覚システム200は、段20を昇降する前に、ロボット100のポーズおよび/または姿勢を考慮に入れる。例えば、ロボット100は、前方に(すなわち、センサーシステム160の前部センサーが昇降方向TDに面するかまたはそれを感知する)または後方に(すなわち、センサーシステム160の前部センサーが昇降方向TDの反対側に面する)段20を上るまたは下降することができる。ここで、知覚システム200は、ステップ領域220および/または衝突領域230を決定するために、ロボット100が段20を前方または後方に昇降しているかどうかを認識する。段20を前方に下降するとき、ロボット100の脚104の構造(例えば、脚104の関節Jの屈曲)のために、各段20の縁の近くに狭いステップ領域220が存在し得る。前進と後退との間の対照的な例として、ロボット100が段20を後退して昇降するとき、知覚システム200は、ロボット100の脚104の構造に基づいて、ステップ領域220が踏面22の中央50~70%に対応することを決定する。言い換えれば、知覚システム200がロボットの向き(例えば、ポーズおよび/または姿勢)を認識するとき、ステップ領域220および/または衝突領域230は、決定された向きにおける段20の構造に関連するロボット100の向きおよび制限を考慮に入れるために変化し得る。
【0041】
知覚システム200は、センサーデータ164および/またはロボット100の運動学からの地形マップ212に基づいて、ステップ領域220および/または衝突領域230(領域220、230とも呼ばれる)を決定し得る。いくつかの実施例では、知覚システム200は、マップ212内の高さの不連続性が、地面が急勾配であるエリア(例えば、蹴上げ24または踏面22の縁)に対応すると決定する。これらのエリアは、衝突領域230として指定され得る。知覚システム200はまた、運動学を使用して、領域220、230を決定し得る。例えば、知覚システム200は、ロボット100の走行速度(例えば、ロボット100の重心の速度)および/または領域220、230を決定するためにロボット100についての昇降方向TD(すなわち、走行の方向)を計算に入れる。追加的または代替的に、知覚システム200は、不十分なセンサーデータ164のエリアを衝突領域230として指定し得る。
【0042】
いくつかの実施例では、段20を昇降する前または昇降している間に、ロボット100は、ロボット100の重量分布をロボット100の前部に向かって(例えば、前脚104a~bに向かって)シフトする。ロボット100が段20を昇降しているとき、ロボット100の重量を脚104の遠位端106に対して前方にシフトさせることは、脚104と段20との潜在的な衝突Cを低減し得る。例えば、
図2Aは、段20a~gを下降するロボット100を示している。ここで、
図2Bは、ロボット100の重量を前方にシフトすることにより、下肢(例えば、脚104a~b)がより垂直にまたは直立し、上肢(例えば、後脚104c~d)がより水平になることを可能にすることを例示している。言い換えれば、運動学的には、脚104の遠位端106(例えば、足)に対して前方にシフトされたときのロボット100の重心COMは、ロボット100の後脚104c~dよりもロボット100の前脚104a~b上により重量がかかる結果となる。言い換えれば、ロボット100の質量分布はロボット100の前方に向かっており、前脚104a~bは、それぞれの遠位端106a~bで垂直力の増加を経験する。
図2Bは、重心COMが、初期位置COM
初期からシフトされた位置COM
シフトに、昇降方向T
Dに向かってシフトされたことを例示している。このシフトにより、
図2Bは、点線によれば、後脚のうちの1つ104dが段20との衝突Cを回避することを示している。いくつかの実施例では、ロボット100のコントローラ120は、重心ダイナミクスの観点から機能する。ここで、このタイプの機能を用いて、ボディプランナ150は、
図2Bに示されるように、段20を昇降するために重心COMを遠位端106に対して前方にシフトするようにロボット100のコントローラ120に命令する。
【0043】
いくつかの実施例では、ボディプランナ150は、昇降システム110によるロボット100の制御の一部として、ロボット100についての高さH
COMおよびピッチP
COMを決定するように構成される。ここで、ロボット100の高さH
COMは、ロボット100の重心COMと段20(例えば、
図2Aに示すように、重心COMの下の踏面22の表面)との間の距離に対応する。ロボット100のピッチP
COMは、概して、(例えば、
図2Aに示すように)ロボット100のボディ102の縦軸A
Lに沿ったボディ102の中心に対するロボット100の回転を指す。言い換えれば、ロボット100のピッチを調整することは、ロボット100のボディ102の前部(またはボディ102の後部)を、ロボット100のボディ102の中心の周りに、段20に向かって、または段20から離れるように回転的に移動させる。ロボット100が段20を昇降するとき、ボディプランナ150および/またはコントローラ120は、1つ以上の段20について特定された対応する衝突領域230に基づいて、ロボット100の高さおよびピッチを調整し得る。ボディプランナ150は、地形マップ212(または制約付きマップ202)およびステッププランナ140からの足跡場所(例えば、各段20について特定された領域220、230)などの入力、および一連の制約240に基づいて、ロボット100についての高さH
COMおよびピッチP
COMを決定し得る。いくつかの実装例では、ロボット100についての高さH
COMおよびピッチP
COMを決定するために、ボディプランナ150は、入力に基づいて制約240を満たすロボット100についての最適軌道を決定するように構成された二次計画法軌道プランナである。例えば、ボディプランナ150は、後退ホライズンコントローラである。いくつかの構成では、制約240は、ロボット100および/または段地形の物理的状態に関連している。例えば、ボディプランナ150は、高さ制約などの制約240を受け取る。高さ制約のそのような例の1つは、ロボット100(例えば、ロボット100のボディ)が、ロボット100がロボット100の下の表面に接触するのを妨げる(すなわち、ロボット100の遠位端106が段20に接触するのを妨げる)高さになることができないこと示す制約240である。ボディプランナ150によって受け取られる高さ制約の別の例は、ロボット100(例えば、ロボット100の脚104)と段20との衝突Cを防止するための最小高さである。言い換えれば、ロボット100のボディ102は、段20とロボット100との間で衝突Cが発生するほど段20に接近(例えば、低く)することはできない。いずれの場合も、制約240は、ロボット100の運動学に基づいて決定され得る。例えば、ボディプランナ150は、運動学(例えば、脚104に対応する運動学)に基づいて、ロボット100の脚104の1つ以上の遠位端106がそれぞれの段20の表面積に接触していることを決定し得る。同様に、ボディプランナ150が、衝突Cを防止するためにボディ102の最小高さについての制約240を決定するとき、最小高さは、ロボット100の運動学によって決定され得る。
【0044】
説明のために、ロボット100が段20を昇降するとき、ボディプランナ150は、ロボット100の各脚104についての運動学を特定し得る。各脚104についてのこれらの運動学(例えば、脚104の関節Jに対する脚104の屈曲または伸長)は、ボディプランナ150が、脚104に関連付けられ得る各段20(例えば、各脚104の下にある、または脚104の遠位端106が接触している対応する段20)に対するボディ102の高さを決定することを可能にする。脚104の運動学を特定することによって、ボディプランナ150は、ボディ102についての高さ調整および/またはピッチ調整が、1つ以上の脚104が段20に接触するのを防ぐ(すなわち、ロボット100についての高さ制約を満たす)かどうかを決定し得る。例えば、高さ調整またはピッチ調整が、脚104が段20に接触するのを防ぐ場合、段20に到達することができない脚104は、段20との衝突Cのリスクが高くなるか、またはロボット100に不均衡を引き起こすリスクが高くなることがある。いくつかの実施例では、ロボット100についての高さ調整またはピッチ調整が高さ制約を満たすかどうかを決定することに加えて、ボディプランナ150は、ボディプランナ150がボディ102の高さHCOMおよび/またはロボット100のピッチPCOMを調整するとき、脚104が依然として安全領域に位置する(例えば、遠位端106の場所が、衝突領域230ではなくステップ領域220に位置する)ことを保証する。言い換えれば、ボディプランナ150は、ロボット100の脚104が位置する領域220、230(例えば、ステップ領域220または衝突領域230)に基づいて、およびロボット100の各脚104についての運動学に基づいて、ボディ102の高さHCOMおよび/またはロボット100のピッチPCOMを調整し得る。
【0045】
追加的または代替的に、ボディプランナ150は、ボディプランナ150が満たそうとする等式制約に対応するコストを受け取り得るが、他の制約とのトレードオフで満たすことができない場合がある。ここで、例えば、ボディプランナ150は、脚104の1つ以上の遠位端106に対して(例えば、ロボット100の足に対して)、ボディ102の股関節の所望の高さを受け取る。ボディプランナ150の他の制約は、最小または最大加速度などのロボット100についての加速度を含み得る。いくつかの実装例では、ボディプランナ150は、ロボット100の設計制約または構造制約を満たす軌道を計画する。例えば、ボディプランナ150は、ロボット100の強度またはロボット100の動作速度を考慮に入れた軌道を計画する。いくつかの実施例では、ボディプランナ150は、ロボット100の速度、重心COMの位置、および/または加速度パラメータと一致する軌道を計画する。ボディプランナ150が軌道を決定すると、ボディプランナ150は、実行のために軌道をコントローラ120に伝達し得る。いくつかの構成では、ボディプランナ150は、ロボット100が環境10を通過するときに、コントローラ120に対して軌道を絶えず伝達し、および/または軌道を更新する。
【0046】
図3A~
図3Iを参照すると、ロボット100はまた、衝撃検出器300を含み得る。衝撃検出器300は、ロボット100と環境10との(例えば、段20との衝突C)、またはロボット100自体との(例えば、前脚104aと後脚104cとの間の衝突C)衝撃310(例えば、衝突C)を検出するように構成されている。衝撃310に基づいて、衝撃検出器300は、昇降システム110(例えば、コントローラ120)および/またはボディプランナ150に対して応答320を生成し得る。いくつかの実装例では、衝撃検出器300は、衝撃310を検出し、ロボット100の昇降システム110(例えば、コントローラ120)による衝撃に対する応答320を伝達する。いくつかの実施例では、応答320は、ロボット100に、特定の動きで衝撃310に反応するように命令する。他の例では、応答320は、ロボット100に、特定の動き反応なしに環境10を昇降することを続行する(例えば、動きを続ける)ように命令する。これらの応答320の間の違いは、衝撃検出器300が検出する衝撃310のタイプに依存する。
【0047】
衝撃310を感知するために、衝撃検出器300は、ロボット100のセンサーシステム160を利用し得る。衝撃検出器300は、近接センサー、視覚/画像センサー、慣性センサー、力センサー、運動学的センサーなどのような、衝撃310を検出するためのセンサーシステム160のセンサー162の任意の組み合わせを使用し得る。いくつかの実施例では、衝撃検出器300は、ロボット100の運動学とともにセンサーデータ164を使用して、ロボット100の運動中に衝撃310が発生するかどうかを決定する。
【0048】
ロボット100が脚104の遠位端106をステップ領域220内の(すなわち、同じく衝突領域230の外側の)目標ステップ場所に移動させる間、衝撃検出器300は、衝撃310を感知するように構成される。いくつかの実施例では、衝撃検出器300は、脚104の遠位端106が段20の対応する目標ステップ場所に接触していること(すなわち、目標ステップ場所での達成されたタッチダウン)を検出する。例えば、遠位端106は、段20の目標ステップ場所として、踏面22の一部(例えば、ステップ領域220内)に接触している。この検出された衝撃310に基づいて、衝撃検出器300は、応答320を生成して、対応する目標ステップ場所で段20と接触している脚104を立脚104
STとして分類する。言い換えれば、目標ステップ場所に向かって移動していた脚104(すなわち、遊脚)は、首尾よくタッチダウンが発生したときに立脚104
STとなる。説明のために、
図3Aおよび
図3Bは、段20を昇降するロボット100のシーケンスを示している。シーケンスの第1のフレームでは、ロボット100(
図3Aにロボット100aとして示されている)は、遊脚104
SWとしての前脚104aと、立脚104
STとしての反対側の前脚104bとを有する。遊脚104a、104
SWが着地して衝撃310を生成すると(
図3Bでロボット100bを有する第2のフレームに示されるように)、衝撃検出器300は、元の立脚104b、104
STの分類を遊脚104b、104
SWに変更する。
【0049】
遊脚104SWは、環境10の表面と接触していない間に動いている(すなわち、スイングしている)脚104を指す。対照的に、立脚104STは、バランスを取り、遊脚104SWの動きを支持するために、環境10の表面上に据えられた(すなわち、接触している)脚104を指す。ロボット100が遊脚104SWを移動させるとき、概して、コントローラ120は、遊脚104SWが妨げられない運動経路に沿って目標ステップ場所まで移動することを意図し、ロボット100が環境10を昇降するのを可能にする。遊脚104SWが、遊脚104SWの動きを妨げる障害物に遭遇する場合、障害物は、計画された動きにおける逸脱を引き起こし得、それは、例えば、ロボット100がバランスを失うこと(すなわち、トリップおよび/または落下)を引き起こし得るので、問題が発生することがある。
【0050】
いくつかの実施例では、コントローラ120は、遊脚相または立脚相がそれぞれ完了する前に、遊脚104SWおよび/または立脚104STの分類を変更する。その相が完了する前に脚104の分類を変更することによって、コントローラ120は、遅延を補償するか、またはコマンド遅延(または動き遅延)を防止して、ロボット100の滑らかな動きを提供し得る。言い換えれば、コントローラ120は、立脚104STのリフトオフおよび遊脚104SWのタッチダウンを同期させるように試みることができる。例えば、コントローラ120は、タッチダウンの前に、遊脚104SWを立脚104STとして分類する。同様に、コントローラ120は、そのそれぞれの脚104のいずれかの動きに先立って、現在の立脚104STを遊脚104SWに分類し得る。いくつかの実施例では、コントローラ120は、ロボット100の両方の遊脚104SWがタッチダウンするのを待ってから、前の立脚104STの両方を同時にリフトオフする。これらの実施例では、これは、ロボット100がバランスを維持するのを助けるために発生する場合がある(例えば、ロボット100が速歩のようなペース/ケイデンスで段20を昇降するとき)。
【0051】
図3Cなどのいくつかの実装例では、ロボット100が、遊脚相中に移動のために脚104(例えば、後脚104d、104
SWとして示されている)を上げるとき、脚104の膝関節J
Kは、股関節J
H(すなわち、脚104がロボット100のボディ102に結合する場所)に対して後方に移動する。例えば、遊脚相は、脚104が、ロボット100のボディ102に向かって引っ張られるかまたは持ち上げられる偏心運動と、脚104が、ロボット100のボディ102から離れてタッチダウンに向かって(例えば、段20の踏面22などの表面に対して)伸ばされる同心運動とを含む。膝関節J
Kが後方に移動するとき(例えば、偏心運動中に)、脚104は、ロボット100の後ろの物体と衝突Cを起こすリスクがあり得る。言い換えれば、膝関節J
Kが後方に移動するとき、脚104は(例えば、膝関節J
Kで)、壁のような垂直物体または段20の蹴上げ24などのロボット100の後ろの物体との衝撃310を有し得る。例えば、ロボット100が、ロボット100の後ろに壁を有する段20の踊り場に立っており、後脚104c~dのスイング運動が壁に衝撃を与える。ここで、衝撃検出器300は、ロボット100の後ろの地形との衝撃310を検出し、応答320を生成して、膝(すなわち、膝関節J
K)をロボット100の後ろの地形から離れて前方に移動させる。そうでなければ、ロボット100が脚104を上げ続けた場合、膝関節J
Kは、ロボット100の後ろの物体に対してより大きな力を示すことがある。ロボット100の後ろに物体として壁がある場合、脚104を上げ続けることで、膝関節J
Kをロボット100の後ろの壁に埋め込んで、壁またはロボット100に損傷を引き起こすことさえあり得る。
【0052】
いくつかの構成では、ロボット100が移動している間に、ロボット100の脚104が、対側脚104Cに衝撃310を有する。例えば、遊脚相中に、遊脚104SWが、対側立脚104Cに当たる。対側脚104Cは、ロボット100の矢状面PSの周りのロボット100のボディ102の反対側の脚104を指す。矢状面PSは、ボディ102を左右半分に分割する解剖学的平面である。四足歩行ロボット100に関して、2つの前脚104a-bは、ロボット100の矢状面PSに関して互いに反対(すなわち、対側)にあり、一方、同様に、後ろの2つの脚104c~dは、ロボット100の矢状面PSに関して互いに反対(すなわち、対側)にある。二足歩行ロボット100の場合、2つの脚104は、常に対側の関係にある。
【0053】
図3Dおよび
図3Eに示すように、脚104が対側脚104
Cとの衝撃310を有するとき、衝撃検出器300は、この衝撃310を検出し、衝撃310のタイプに応じてその応答320を変え得る。いくつかの実施例では、検出された衝撃310に基づいて、衝撃検出器300は、応答320を生成して、遊脚104
SWまたは遊脚104
SWの遠位端106を対側立脚104
Cから離れてシフトさせる。言い換えれば、遊脚104
SWが目標ステップ場所において遠位端106のタッチダウンを目指す代わりに、応答320は、遊脚104
SWを調整されたステップ場所にシフトする。ここで、調整されたステップ場所は、段20のステップ領域220内(すなわち、衝突領域230の外側)にあるが、対側脚104
Cとの衝撃310を打ち消すために、元の目標ステップ場所に対してシフトされる。いくつかの構成では、調整されたステップ場所は、まったく新しい目標ステップ場所である。
【0054】
いくつかの実施例では、衝撃310のために、ステップ領域220に対応する、または衝突領域230の外側のステップ場所は、応答320に対する調整されたステップ場所として利用できない場合がある。これらの状況では、衝撃検出器300および/または知覚システム200は、地形またはロボット自体とのさらなる衝撃310の可能性を最小限に抑える調整されたステップ場所を決定し得る。例えば、調整されたステップ場所は、衝突領域230内であり得るが、衝突領域230の他の部分よりも衝突Cの確率が低い衝突領域230のエリア内(例えば、衝突領域230の縁の近く)であり得る。いくつかの実装例では、知覚システム200は、衝突領域230についての衝突確率分布を前もって決定するか、または衝撃310の時に決定し得、それにより、衝撃検出器300は、衝突確率分布に基づいてさらなる衝撃を最小化する調整されたステップ場所を有する応答320を生成する。いくつかの実施例では、確率分布を使用して、調整されたステップ場所が、衝突Cに対する許容可能な確率または信頼水準に対応する閾値に基づいて選択される。言い換えれば、閾値は、修復状況に対して許容可能であり得る衝突領域230のいくつかのエリア(例えば、サブ領域)がある一方で、修復状況に対してさえ危険すぎる衝突領域230の他の領域があることを表し得る。例えば、いくつかの修復状況では、衝撃310は、衝突領域230のより危険の少ないエリア内の調整されたステップ場所に移動する脚104の遠位端106よりもロボット100に対してより大きなリスクを有する場合がある。より具体的には、かすめる衝撃を引き起こす可能性のある衝突領域230のエリアは、修復状況に許容可能であり得る一方で、ロボット100が段20を完全に踏み外すことを引き起こす衝突領域230のエリアは決して許容可能でない。追加的または代替的に、知覚システム200は、特定のエリアで発生する可能性のあるタイプの衝撃310に対するロボット100へのリスクによって、衝突領域230のエリアに重みを付けるか、または分類することができる。これは、ロボット100が、リスクが高いが衝撃310の可能性が低い衝突領域230のエリアを考慮に入れることを可能にし得る。
【0055】
図3Dに示されるようにいくつかの実装例では、衝撃310により、脚104がその対側脚104
Cと交差する結果となる場合(例えば、前脚104aが他の対側前脚104b
Cと交差するように示されている)、衝撃検出器300は、交差した脚104を解くための応答320を生成する。例えば、応答320は、遊脚104
SWに、その運動経路を逆転させて、交差した脚104を解きほぐし、対側脚104
Cとのさらなる接触を回避するように命令し得る。いくつかの構成では、応答320は、衝撃検出器300が最初に衝撃310を検出し、遊脚104
SWに前方または後方に移動するように命令し(例えば、遊脚104
SWが立脚104
STの前で交差するか、または立脚104
STの後ろで交差するかに応じて)、次に、遊脚104
SWに、脚104を交差させず横方向に移動するように命令するような2つの部分からなる応答である。応答320が、遊脚104
SWに別の運動経路をとる(例えば、最初に脚104をロボット100のボディ102を横切って横方向に動かして交差を打ち消そうとする)ように命令した場合、遊脚104
SWはロボット100をトリップさせることがあるか、または対側立脚104
C、104
STとさらに衝突することがある。さらに、応答320が調整されたステップ場所を生成しなかった場合、遊脚104
SWは、立脚104
STが遊脚104
SWになるときに、立脚104
STのその後の動きをブロックする位置でタッチダウンし得る。
【0056】
他の実装例では、
図3Eによって示されるように、衝撃310により、脚104(例えば、前部遊脚104a、104
SW)が、その対側脚104
Cに当たるが、交差しないとき、衝撃検出器300は、遊脚104
SWが対側脚104
Cから離れて移動するための応答320を生成する。ここで、衝撃検出器300は、衝撃310が、対側脚104
Cとの交差をもたらさない(例えば、遊脚104
SWが対側脚104
Cの内側に当たる)ことを決定する。対側脚104
C(例えば、対側脚104b
C)との衝撃310が交差をもたらさないとき、衝撃検出器300は、衝撃310を打ち消すための調整された目標場所として遊脚104
SWをどこに動かすかについてのより多くの応答オプションを有する。例えば、ここでは、遊脚104
SWをロボット100のボディ102を横切って横方向に動かすことは、脚104間のさらなる衝撃をもたらさない可能性が高い。いくつかの構成では、応答320は、遊脚104
SWが、対側脚104
Cの位置から矢状面P
Sの遊脚の側の調整された目標場所領域220に移動することをもたらす。
【0057】
いくつかの実施例では、
図3Fは、遊脚104
SWが、その昇降経路を継続するために上に超えてスイングする必要がある物体Oとの衝撃310(すなわち、ロボット100をトリップさせ得る衝撃310)を有する遊脚104
SW(例えば、前脚104bとして示されている)を示す。言い換えれば、衝撃310は、ロボット100に不安定をもたらし得るトリップ状態を示す。衝撃検出器300がこの衝撃310を検出するとき、衝撃検出器300は、遊脚104
SWの遊脚相の段階に基づいて、異なる応答320を生成し得る。衝撃検出器300が、遊脚104
SWが遊脚相の初期である(例えば、遊脚がロボット100のボディ102に向かって同心運動している)と判断するとき、衝撃検出器300は、応答320を生成して、遊脚104
SWの遠位端106をさらに上昇させる(すなわち、元のリフトオフ面または平面からの遠位端106の高さを増加させる)。衝撃検出器300が、遊脚104
SWが遊脚相の後期にある(例えば、遊脚104
SWがタッチダウン場所に向かって偏心運動をしている)と判断するとき、衝撃検出器300は、応答320を生成して、遊脚104
SWの遠位端106を即座にタッチダウンさせる。これらの応答320は、ロボット100が実際に落下するか、またはトリップ状態を示す衝撃310からバランスが崩れる可能性を最小限に抑える。
【0058】
いくつかの実施例では、衝撃検出器300は、衝撃310を検出するが、計画外の動き(すなわち、衝撃310に基づく反応運動)をもたらす応答320を生成しない。言い換えれば、ロボット100の少なくとも1つの脚104が衝撃310を経験したとしても、衝撃検出器300は、(a)この衝撃310に対して応答320を生成しないか、または(b)元の移動経路を続行するために応答320を生成するか、のいずれかである。いくつかの実施例では、衝撃310の後、昇降システム110(例えば、コントローラ120)が閾値期間内に応答320を受信しない場合、昇降システム110は、衝撃310が発生しなかったかのように動きを続行する。他の実施例では、衝撃310の後、昇降システム110は、さらなる動きを続行する前に応答320を待つように構成され、それにより、衝撃検出器300は、「応答なし」などのプレースホルダ応答320、またはロボット100に元の移動経路を続行するように明示的に命令する応答320を生成する。
【0059】
図3Gは、衝撃検出器300が、ロボット100のボディ102に対する脚104の上部(例えば、脚104の大腿部に対応する)の衝撃310を検出する例である。例えば、
図3Gは、ロボット100のボディ102に対して衝撃310を生成する前脚104bを例示している。ここで、ロボット100のボディ102に対する大腿部の衝撃310があったとしても、衝撃310は、衝撃310に基づく反応運動を引き起こす応答320をもたらさない。
【0060】
別の例として、
図3Hは、衝撃検出器300が、脚104が表面(例えば、段20の踏面22)をリフトオフするときに、脚104の遠位端106(例えば、前脚104aの遠位端106a)の衝撃310を検出することを示している。例えば、脚104が遊脚相の早期に立脚104
STから遊脚104
SWに移行するとき、脚104(例えば、遊脚104a、104
SW)のリフトオフは、衝撃310(例えば、表面に対するロボット100の遠位端106aまたは足のスカッフィング)を生成する。リフトオフスカッフィングはまた、立脚104
STの遠位端106が段状の地形に少なくとも部分的に埋め込まれるようになるときに、段状の地形上に発生することがあり、それにより、立脚104
STが続いて遊脚相を開始するとき、部分的な埋め込みからそれぞれの脚104を外す上向きの動きが衝撃310を引き起こす。衝撃検出器300が、衝撃310が脚104の遠位端106のリフトオフスカッフィングに対応することを検出するとき、衝撃検出器300は、衝撃310に基づく反応運動の応答320を生成しない。ここで、衝撃検出器300は、リフトオフスカッフィング後、遊脚104
SWが上方に動き続け、衝撃310を引き起こす障害物を自然に乗り越える可能性があるため、反応運動を生成しない場合がある。
【0061】
さらに別の実施例では、
図3Iに示されるように、衝撃検出器300は、ロボット100の下の地形に対するロボット100の脚104(例えば、後脚104d)の膝関節J
Kの衝撃310を検出する。ここで、衝撃検出器300は、このタイプの衝撃310が多くの場合、かすめる衝撃であるので、衝撃310に基づく反応運動の応答320を生成しない。例えば、ロボット100が段20を下降しており、ロボット100のボディ102が低すぎる間、遊脚104
SWは、走行方向T
Dにおいて前方にスイングし、膝関節J
Kは、遊脚104
SWがスイングして越えようとしている段20(段20aとして示されている)をクリップする。これは多くの場合、かすめる衝撃310であり、遊脚104
SWは、かすめる衝撃に続いてスイングし続けるので、ロボット100が段20を首尾よく昇降するために反応運動の応答320は多くの場合必要ではない。これは、ロボット100のボディ102の高さと脚104の運動学との組み合わせのために発生することがある。言い換えれば、脚104は、膝関節J
Kがそれぞれの脚104についての遊脚相の位置の間に真っ直ぐ下に突き刺さるように構成され得る。遊脚相中のこの膝関節J
Kの位置によって、膝関節J
Kは、段20の角(例えば、踏面22の角または段20の段鼻26)をクリップすることができる。
【0062】
いくつかの実施例では、ロボット100が段20または段状の地形を昇降するのを助けるために、ボディプランナ150は、コントローラ120に、遊脚104
SWの膝関節J
Kをロボット100の矢状面P
Sから離れて位置決めするように命令する。例えば、
図3Jは、ロボット100の矢状面P
Sから離れて、脚104の中立位置から離れて(例えば、第1の軸A
1の横方向外側に)位置決めされた膝関節J
Kを例示している。言い換えれば、多くの場合、ロボット100の脚104の中立位置は、ロボット100の脚104が概してグランドプレーン(例えば、段20の踏面22の表面)に垂直であるときに発生し、それにより、膝関節J
Kは、概して、股関節J
Hの下に整列されて、遠位端106で脚104にかかる任意の力を均等に分散させ、関節J
K、J
Hにかかるトルクを最小限に抑えるように試みる。ここで、
図3Jは、股関節J
Hおよび膝関節J
Kが第2の軸A
2に沿って整列するときの中立位置としての前立脚104b、104
STを示す。遊脚104
SWの膝関節J
Kをロボット100の矢状面P
Sから離れて位置決めすることによって、遊脚104
SWに関連付けられた膝関節J
Kは、衝突検出器300による応答320をもたらす衝突Cおよび段20または段状の地形を昇降するための移動経路からの潜在的な逸脱を引き起こす可能性が低く成り得る。
【0063】
いくつかの実施例では、
図3Kによって示されるように、段20を昇降している間のロボット100は、先導脚104
Lおよび後続脚104
Tを有する。これらの実施例では、ロボット100は、四足歩行ロボットの場合、前脚104a~bのうちの1つおよび後脚104c~dのうちの1つが実質的に互いに一致して動くように、段20を上下に這って進むことができる。例えば、前脚104a~bは、ロボット100のボディ102の反対側にある後脚104c~dと同様の時間に移動し、それにより、ロボット100は、這うように移動して段20を昇降する。いくつかの実施例では、先導脚104
Lは、段20を上るまたは下降するために最初に移動する脚104を指し、一方、後続脚104
Tは、ロボット100が段20を昇降するタイミングで先導脚104
Lに続く脚104を指す。前脚104a~bと後脚104c~dとは一致して動くことができるので、脚104の各セット(例えば、フロントセットおよびバックセット)は、先導脚104
Lおよび後続脚104
Tを有する。いくつかの実施例では、先導脚104
Lは、ロボット100が段20を昇降するときに、最初の遊脚104
SWによって決定され、一方、後続脚104
Tは、最初の立脚104
STに対応する。いくつかの構成では、先導脚104
L(または遊脚104
SW)の遠位端106を段20の目標ステップ場所に移動するとき、ロボット100は、後続脚104
Tの遠位端106を、先導脚104
Lに対する段20の下方(上る場合)または上方(下降する場合)に位置する後続段20の対応するステップ領域220内に位置する後続ステップ場所に位置決めする。例えば、
図3Kは、ロボットが段20を上っているときの、第1の段20aにおける先導脚104a、104
Lと、第1の段20aの下方の第2の段20bにおける後続脚104b、104
Tとを示している。図示の実施例では、後続脚104
Tが位置決めされている後続段20に関連付けられた第2の段20bは、先導脚104
Lのための目標ステップ場所に関連付けられた第1の段20aに隣接している。しかしながら、他の実施例では、一つ以上の中間段20が、先導脚104
Lのための目標ステップ場所に関連付けられた先導段20と、後続脚104
Tのための後続ステップ場所に関連付けられた後続段20との間に存在してもよい。例えば、
図1Aを参照して、より浅い深さdを有する踏面22および/またはより短い高さhを有する蹴上げ24を有する段20は、目標ステップ場所に移動するときに、先導脚104
L(または遊脚104
SW)が1つ以上の段を通り過ぎることを可能にし得、それにより、1つ以上の中間段20が、先導脚104
Lのための目標ステップ場所に関連付けられた先導段20と、後続脚104
Tのための後続ステップ場所に関連付けられた後続段20との間に存在する。
【0064】
一般的に言えば、ロボット100は、環境10内の地形の構造に関する多くの仮定を含まなくてもよい。仮定なしで、ロボット100のシステムは、センサーデータ164を分析して、環境10内の地形のタイプを決定する。このアプローチには、ノイズの多いセンサーデータ164に対して、またはより広義には多数の地形の可能性があるため、問題があることが判明することがある。段20の場合、段20は、例えば、建築基準法、人間工学的原理、または他の建設の伝統に基づく、踏面22、蹴上げ24、および段鼻26などの既知の形状を含むことが多い。いくつかの構成では、ロボット100は、段20の既知の形状を利用し、
図4に示されるような段トラッカ400を含む。段トラッカ400は、段20が一貫した構造を提示するという仮定を利用するロボット100のシステムである。段20についての構造的仮定に基づいて、段トラッカ400は、センサーデータ164を受信し、段20についてのその仮定をセンサーデータ164に適合させようとするように構成される。段20についての構造的仮定がセンサーデータ164に適合するとき、段トラッカ400は、センサーデータ164に対応する地形を段20として特定する。いくつかの実施例では、段トラッカ400がセンサーデータ164内の段20を特定するとき、段トラッカ400は、センサーデータ164から段20についてのさらなる詳細を決定することに進む。これらの詳細は、段20の正確な向き(例えば、ロボット100に対して)、各段20の深さ「d」、各段20の高さ「h」などを含み得る。
図4は、段20のセットがセンサーデータ164上に課せられた(例えば、ステレオカメラからの)センサーデータ164の点群を示す。ここで、段トラッカ400は、段20がセンサーデータ164内に存在するという仮定を使用することによって、センサーデータ164が段構造のピッチに類似する点群パターンを有することを特定する。この例は、段トラッカ400が、環境10についてノイズの多いセンサーデータ164があっても、段20を特定するのに有利であり得ることを例示している。
【0065】
図5は、段20を通り抜ける方法500の実施例である。動作502において、方法500は、段20を有する環境10内で動くロボット100についての画像データ164を受信する。ロボット100は、2つ以上の脚104を含む。動作504において、方法500は、ロボット100が段20を昇降する前に、動作504aおよび動作504bを実行する。動作504aにおいて、方法500は、各段20について、受信した画像データ164に基づいて対応するステップ領域220を決定する。ステップ領域220は、ロボット100の対応する遊脚104
SWの遠位端106のための対応する段20上の安全な配置エリアを特定する。動作504bにおいて、方法500は、ロボット100の重量分布をロボット100の前部に向かってシフトさせる。動作506において、ロボット100が段20を昇降するとき、各段20について、方法500は、ロボット100の対応する遊脚104
SWの遠位端106を目標ステップ場所に移動させる。目標ステップ場所は、段20の対応するステップ領域220内にある。
【0066】
図6は、本文献に記載されているロボット100のシステム(例えば、昇降システム110、コントローラ120、知覚システム200、衝撃検出器300、段トラッカ400など)および方法(例えば、方法500)を実装するために使用され得る例示的なコンピューティングデバイス600の概略図である。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図される。ここに示されている構成要素、それらの接続および関係、ならびにそれらの機能は、例示のみを意図しており、本文献で説明および/または特許請求されている本発明の実装を制限することを意味するものではない。
【0067】
コンピューティングデバイス600は、プロセッサ610と、メモリ620と、ストレージデバイス630と、メモリ620および高速拡張ポート650に接続する高速インターフェース/コントローラ640と、低速バス670およびストレージデバイス630に接続する低速インターフェース/コントローラ660と、を含む。構成要素610、620、630、640、650、および660の各々は、様々なバスを使用して相互接続されており、共通のマザーボード上に、または必要に応じて他の様態で取り付けられ得る。プロセッサ610は、グラフィカルユーザインターフェース(GUI)のためのグラフィカル情報を、高速インターフェース640に結合されたディスプレイ680などの外部入力/出力デバイス上に表示するために、メモリ620内またはストレージデバイス630上に格納された命令を含む、コンピューティングデバイス600内で実行するための命令を処理し得る。他の実装例では、必要に応じて、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに使用され得る。また、複数のコンピューティングデバイス600が、各デバイスが必要な動作の一部を提供する状態で(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)、接続され得る。
【0068】
メモリ620は、コンピューティングデバイス600内に非一時的に情報を格納する。メモリ620は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ620は、コンピューティングデバイス600で使用するために、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的または永続的に格納するために使用される物理デバイスであり得る。不揮発性メモリの例としては、以下に限定されないが、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能な読み取り専用メモリ(PROM)/消去可能なプログラム可能な読み取り専用メモリ(EPROM)/電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が挙げられる。揮発性メモリの例としては、以下に限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、ならびにディスクまたはテープが挙げられる。
【0069】
ストレージデバイス630は、コンピューティングデバイス600に大容量ストレージを提供することができる。いくつかの実装例では、ストレージデバイス630は、コンピュータ可読媒体である。様々な異なる実装例では、ストレージデバイス630は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成のデバイスを含むデバイスのアレイであり得る。追加の実装例では、コンピュータプログラム製品は、情報担体内に実体的に具体化される。コンピュータプログラム製品は、実行されると、上記のような1つ以上の方法を実行する命令を含む。情報担体は、メモリ620、ストレージデバイス630、またはプロセッサ610上のメモリなどの、コンピュータ可読媒体または機械可読媒体である。
【0070】
高速コントローラ640が、コンピューティングデバイス600の帯域幅集中動作を管理する一方で、低速コントローラ660は、より低い帯域幅集中動作を管理する。そのようなデューティの割り当ては、例示にすぎない。いくつかの実装例では、高速コントローラ640は、メモリ620と、ディスプレイ680(例えば、グラフィックプロセッサまたはアクセラレータを介して)と、様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート650と、に結合されている。いくつかの実装例では、低速コントローラ660は、ストレージデバイス630と、低速拡張ポート690と、に結合されている。様々な通信ポート(例えば、USB、Bluetooth、イーサネット、ワイヤレスイーサネット)を含み得る低速拡張ポート690は、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入力/出力デバイスに、または、例えば、ネットワークアダプタを介して、スイッチもしくはルータなどのネットワーキングデバイスに結合され得る。
【0071】
コンピューティングデバイス600は、図に示すように、いくつかの異なる形態で実装され得る。例えば、それは、標準サーバ600aとして、もしくはそのようなサーバ600aのグループ内で複数回、ラップトップコンピューター600bとして、またはラックサーバシステム600cの一部として実装され得る。
【0072】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/もしくは光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組み合わせで実現され得る。これらの様々な実装は、データおよび命令をストレージシステムから受信するため、かつデータおよび命令をストレージシステムに送信するために結合された、専用または汎用であってもよい、少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスと、を含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラム内での実装を含み得る。
【0073】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラマブルプロセッサ用の機械命令を含み、高レベル手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械語で実装され得る。本明細書で使用される場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受け取る機械可読媒体を含む。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0074】
本明細書で説明されるプロセスおよびロジックフローは、入力データを操作して出力を生成することによって機能を実行するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行され得る。プロセスおよびロジックフローはまた、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)の専用論理回路によっても実行され得る。コンピュータプログラムの実行に好適なプロセッサには、例として、汎用および専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータのうちの任意の1つ以上のプロセッサが含まれる。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令および/またはデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。概して、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または大容量ストレージデバイスからデータを受信、もしくはデータを転送、もしくはその両方を行うように動作可能に結合される。しかしながら、コンピュータは必ずしもそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するための好適なコンピュータ可読媒体には、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスが含まれ、例としては、例えば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば、内蔵ハードディスクまたは取り外し可能ディスクなどの磁気ディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクが挙げられる。プロセッサおよびメモリは、専用論理回路によって補足されるか、または専用論理回路に組み込まれ得る。
【0075】
ユーザとの相互作用を提供するために、本開示の1つ以上の態様は、ユーザに情報を表示するための、例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、もしくはタッチスクリーンなどの表示デバイス、ならびに任意選択で、ユーザがコンピュータに入力を提供できるキーボード、および、例えば、マウスもしくはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装され得る。他の種類のデバイスを使用して、ユーザとの相互作用を提供することもでき、例えば、ユーザに提供されるフィードバックは、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受け取ることができる。さらに、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、当該デバイスからドキュメントを受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。
【0076】
多数の実装例が説明されてきた。それでもなお、本発明の趣旨および範囲から逸脱することなく、様々な修正が行われ得ることが理解されよう。したがって、他の実装は、以下の特許請求の範囲内にある。