(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-31
(45)【発行日】2023-02-08
(54)【発明の名称】地形を意識したステッププランニングシステム
(51)【国際特許分類】
G05D 1/02 20200101AFI20230201BHJP
B25J 5/00 20060101ALI20230201BHJP
【FI】
G05D1/02 K
B25J5/00 E
(21)【出願番号】P 2021517959
(86)(22)【出願日】2019-08-15
(86)【国際出願番号】 US2019046646
(87)【国際公開番号】W WO2020076418
(87)【国際公開日】2020-04-16
【審査請求日】2021-05-25
(32)【優先日】2018-10-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-02-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホイットマン,エリック
(72)【発明者】
【氏名】フェイ,ジーナ,クリスティーン
【審査官】今井 貞雄
(56)【参考文献】
【文献】特開2009-223628(JP,A)
【文献】特開2006-239844(JP,A)
【文献】特開2006-011880(JP,A)
【文献】特開2010-253585(JP,A)
【文献】特開2005-088189(JP,A)
【文献】特開2014-151370(JP,A)
【文献】米国特許第09594377(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/02
B25J 5/00
(57)【特許請求の範囲】
【請求項1】
方法(1000)であって、
少なくとも1つの画像センサ(31)から、ボディ(11)と脚部(12)とを備えるロボット(10)
の環境(8)の画像データ(17)を、前記ロボット(10)のデータ処理ハードウェア(36)で受信することと、
前記データ処理ハードウェア(36)によって、前記画像データ(17)に基づいて、
ボディ障害物を含むボディ-障害物マップ(112)、地上高さマップ(116)、および
ステップ障害物を含むステップ-障害物マップ(114)を生成することと、
前記データ処理ハードウェア(36)によって、
前記ステップ-障害物マップを使用せずに、前記ボディ-障害物マップ(112)
の前記ボディ障害物に基づいて、
スタート場所からターゲット場所までの前記ロボット(10)の前記ボディ(11)の動きのためのボディ経路(510)を生成することと、
前記データ処理ハードウェア(36)によって、前記ボディ経路(510)、前記ボディ-障害物マップ(112)、前記地上高さマップ(116)、および前記ステップ-障害物マップ(114)に基づいて、
前記スタート場所から前記ターゲット場所までの前記ロボット(10)の前記脚部(12)の
動きのためのステップ経路(350)を生成することと、を含
み、
前記ステップ経路は前記ロボットの前記脚部のためのステップを識別して、前記ステップ-障害物マップの前記ステップ障害物を回避する、方法(1000)。
【請求項2】
前記画像データ(17)は、3次元体積画像センサによって捕捉された3次元点群データを含む、請求項1に記載の方法(1000)。
【請求項3】
前記少なくとも1つの画像センサ(31)は、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含む、請求項1または2に記載の方法(1000)。
【請求項4】
前記データ処理ハードウェア(36)によって、前記画像データ(17)に基づいて、前記環境(8)内の空間の占有を識別することと、
前記データ処理ハードウェア(36)によって、前記環境(8)内の空間の占有の識別に基づいて、3次元空間占有マップ(200)を生成することと、をさらに含み、
前記画像データ(17)に基づいて、前記ボディ-障害物マップ(112)、前記地上高さマップ(116)、および前記ステップ-障害物マップ(114)を生成することは、
前記3次元空間占有マップ(200)に基づいて、前記ボディ-障害物マップ(112)を生成することと、
前記3次元空間占有マップ(200)に基づいて、前記地上高さマップ(116)を生成することであって、前記地上高さマップ(116)は、前記ロボット(10)の近くの各場所における地面(9)の高さを識別することと、
前記地上高さマップ(116)に基づいて、前記ステップ-障害物マップ(114)を生成することであって、前記ステップ-障害物マップ(114)は、前記ロボット(10)が踏むべきでない前記環境(8)におけるステップ不可領域(213)を識別することと、を含む、請求項1~3のいずれか一項に記載の方法(1000)。
【請求項5】
前記ボディ-障害物マップ(112)を生成することは、前記3次元空間占有マップ(200)に基づいて、2次元ボディ-障害物マップ(112)を生成することを含む、請求項4に記載の方法(1000)。
【請求項6】
前記3次元空間占有マップ(200)は、ボクセル(212)を有するボクセルマップ(200)を含み、各ボクセル(212)は、前記環境(8)の3次元空間を表す、請求項4または5に記載の方法(1000)。
【請求項7】
各ボクセル(212)は、地面(9)、障害物、またはその他のいずれかに分類される、請求項6に記載の方法(1000)。
【請求項8】
前記データ処理ハードウェア(36)によって、前記3次元空間占有マップ(200)をフィルタ処理して、前記ボディ-障害物マップ(112)を生成することをさらに含む、請求項4~7のいずれか一項に記載の方法(1000)。
【請求項9】
前記ボディ経路(510)を生成することは、前記ボディ-障害物マップ(112)において指定されたボディ不可領域に基づく、請求項1~8のいずれか一項に記載の方法(1000)。
【請求項10】
前記ステップ経路(350)を生成することは、前記ロボット(10)に対する公称歩行の公称ステップパターンおよびステップ制約を調整することに基づく、請求項1~9のいずれか一項に記載の方法(1000)。
【請求項11】
前記ステップ制約(342)は、
地面(9)と接触している各脚部(12)に対する圧力中心オフセットの閾値範囲であって、前記圧力中心オフセットが各ステップにおける各脚部(12)に対するロボット(10)の重量配分の許容量を示す、閾値範囲、
前記ステップ経路(350)が、前記ステップ-障害物マップ(114)のステップ不可領域(213)に脚部を踏み込ませるかどうか、
前記ステップ経路(350)が、前記ロボット(10)の前記ボディ(11)をボディ障害物(520)に入らせるかどうか、
前記ステップ経路(350)が前記ロボット(10)の自己衝突を引き起こすかどうか、または
前記ステップ-障害物マップ(114)の任意のステップ不可領域(213)の周囲の空間のマージン、のうちの少なくとも1つを含む、請求項10に記載の方法(1000)。
【請求項12】
前記ステップ制約(342)は、ソフト制約またはハード制約を含む、請求項11に記載の方法(1000)。
【請求項13】
前記ロボット(10)の前記脚部(12)のために前記ステップ経路(350)を生成することは、前記生成されたボディ経路(510)を改良することを含む、請求項1~12のいずれか一項に記載の方法(1000)。
【請求項14】
ロボット(10)であって、
ボディ(11)と、
前記ボディ(11)に連結され、
前記ロボットの環境(8)の周囲で
前記ロボット(10)を操縦するよう構成されている脚部(12)と、
前記脚部(12)と通信しているデータ処理ハードウェア(36)と、
前記データ処理ハードウェア(36)と通信しているメモリハードウェア(38)であって、前記データ処理ハードウェア(36)上で実行されると、前記データ処理ハードウェア(36)に動作を実施させる命令を格納するメモリハードウェア(38)と、を備え、前記動作は、
少なくとも1つの画像センサ(31)から
前記環境(8)の画像データ(17)を受信することと、
前記画像データ(17)に基づいて
、ボディ障害物を含むボディ-障害物マップ(112)、地上高さマップ(116)、および
ステップ障害物を含むステップ-障害物マップ(114)を生成することと、
前記ステップ-障害物マップを使用せずに、前記ボディ-障害物マップ(112)
の前記ボディ障害物に基づいて、
スタート場所からターゲット場所までの前記ロボット(10)の前記ボディ(11)の動きのためのボディ経路(510)を生成することと、
前記ボディ経路(510)、前記ボディ-障害物マップ(112)、前記地上高さマップ(116)、および前記ステップ-障害物マップ(114)に基づいて、
前記スタート場所から前記ターゲット場所までの前記ロボット(10)の前記脚部(12)の
動きのためのステップ経路(350)を生成することと、を含み、
前記ステップ経路は前記ロボットの前記脚部のためのステップを識別して、前記ステップ-障害物マップの前記ステップ障害物を回避する、ロボット(10)。
【請求項15】
前記画像データ(17)は、3次元体積画像センサによって捕捉される3次元点群データを含む、請求項14に記載のロボット(10)。
【請求項16】
前記少なくとも1つの画像センサ(31)は、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含む、請求項14または15に記載のロボット(10)。
【請求項17】
前記動作は、
前記画像データ(17)に基づいて前記環境(8)内の空間の占有を識別することと、
前記環境(8)内の空間の占有の識別に基づいて3次元空間占有マップ(200)を生成することと、をさらに含み、
前記画像データ(17)に基づいて、前記ボディ-障害物マップ(112)、前記地上高さマップ(116)、および前記ステップ-障害物マップ(114)を生成することは、
前記3次元空間占有マップ(200)に基づいて、前記ボディ-障害物マップ(112)を生成することと、
前記3次元空間占有マップ(200)に基づいて、前記地上高さマップ(116)を生成することであって、前記地上高さマップ(116)が前記ロボット(10)の近くの各場所において地面(9)の高さを識別することと、
前記地上高さマップ(116)に基づいて、前記ステップ-障害物マップ(114)を生成することであって、前記ステップ-障害物マップ(114)は、前記ロボット(10)が踏むべきでない前記環境(8)におけるステップ不可領域(213)を識別することと、を含む、請求項14~16のいずれか一項に記載のロボット(10)。
【請求項18】
前記ボディ-障害物マップ(112)を生成することは、前記3次元空間占有マップ(200)に基づいて、2次元ボディ-障害物マップ(112)を生成することを含む、請求項17に記載のロボット(10)。
【請求項19】
前記3次元空間占有マップ(200)は、ボクセル(212)を有するボクセルマップ(200)を含み、各ボクセル(212)は、前記環境(8)の3次元空間を表す、請求項17~18のいずれか一項に記載のロボット(10)。
【請求項20】
各ボクセル(212)は、地面(9)、障害物、またはその他のいずれかに分類される、請求項19に記載のロボット(10)。
【請求項21】
前記動作は、前記3次元空間占有マップ(200)をフィルタ処理して、前記ボディ-障害物マップ(112)を生成することをさらに含む、請求項17~20のいずれか一項に記載のロボット(10)。
【請求項22】
前記ボディ経路(510)を生成することは、前記ボディ-障害物マップ(112)において指定されるボディ不可領域に基づく、請求項14~21のいずれか一項に記載のロボット(10)。
【請求項23】
前記ステップ経路(350)を生成することは、前記ロボット(10)に対する公称歩行の公称ステップパターンおよびステップ制約を調整することに基づく、請求項14~22のいずれか一項に記載のロボット(10)。
【請求項24】
前記ステップ制約(342)は、
地面(9)と接触する各脚部(12)に対する圧力中心オフセットの閾値範囲であって、前記圧力中心オフセットは、各ステップにおける各脚部(12)に対するロボット(10)の重量配分の許容量を示す、閾値範囲、
前記ステップ経路(350)が、前記ステップ-障害物マップ(114)のステップ不可領域(213)に脚部を踏み込ませるかどうか、
前記ステップ経路(350)が、前記ロボット(10)の前記ボディ(11)をボディ障害物(520)に入らせるかどうか、
前記ステップ経路(350)が前記ロボット(10)の自己衝突を引き起こすかどうか、または
前記ステップ-障害物マップ(114)の任意のステップ不可領域(213)の周囲の空間のマージン、のうちの少なくとも1つを含む、請求項23に記載のロボット(10)。
【請求項25】
前記ステップ制約(342)は、ソフト制約またはハード制約を含む、請求項24に記載のロボット(10)。
【請求項26】
前記ロボット(10)の前記脚部(12)のために前記ステップ経路(350)を生成することは、前記生成されたボディ経路(510)を改良することを含む、請求項14~25のいずれか一項に記載のロボット(10)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制約、特に、地形によって課せられる制約がある場合に一連のステップをプランニングすることに関する。
【背景技術】
【0002】
ロボットデバイスは、さまざまなタスクまたは機能を実施するために、制約された環境、または別様に雑然とした環境においてますます使用されている。これらのロボットデバイスは、障害物を踏む、または障害物にぶつかることなく、これらの制約された環境内をナビゲートすることが必要となり得る。これらのロボットデバイスが普及するにつれて、バランスとスピードを維持しながら障害物との接触を回避するリアルタイムなナビゲーションおよびステッププランニングが必要となる。
【発明の概要】
【0003】
本開示の一態様は、制約がある場合に一連のステップをプランニングする方法を提供する。この方法は、ロボットのデータ処理ハードウェアで、少なくとも1つの画像センサからロボットの周囲の環境の画像データを受信することを含む。ロボットはボディと脚部とを含む。この方法はまた、画像データに基づいて、ボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップをデータ処理ハードウェアによって生成することを含む。この方法はさらに、ボディ-障害物マップに基づいて、環境内を移動しているロボットのボディの動きのためのボディ経路をデータ処理ハードウェアによって生成すること、ならびにボディ経路、ボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップに基づいて、環境内を移動しているロボットの脚部のためのステップ経路をデータ処理ハードウェアによって生成することを含む。
【0004】
本開示の実装形態は、以下の任意選択的な機能のうちの1つ以上を含み得る。いくつかの実装形態では、画像データは、3次元体積画像センサによって捕捉された3次元点群データを含む。少なくとも1つの画像センサは、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含み得る。
【0005】
いくつかの例では、この方法は、データ処理ハードウェアによって、画像データに基づいて、環境内の空間の占有を、データ処理ハードウェアによって識別し、環境内の空間の占有の識別に基づいて3次元空間占有マップを生成することを含む。画像データに基づいてボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップを生成することは、3次元空間占有マップに基づいて、ボディ-障害物マップを生成することと、3次元空間占有マップに基づいて地上高さマップを生成することと、地上高さマップに基づいてステップ-障害物マップを生成することと、を含んでもよい。地上高さマップは、ロボットの近くの各場所での地面の高さを識別し、ステップ-障害物マップは、ロボットが踏むべきでない環境内のステップ不可領域を識別する。任意選択的に、ボディ-障害物マップを生成することは、3次元空間占有マップに基づいて、2次元ボディ-障害物マップを生成することを含む。
【0006】
いくつかの例では、3次元空間占有マップは、ボクセルを有するボクセルマップを含み得、各ボクセルは、環境の3次元空間を表す。各ボクセルは、地上、障害物、またはその他のいずれかに分類され得る。加えて、デバイスは、3次元空間占有率マップをデータ処理ハードウェアによってフィルタ処理して、ボディ-障害物マップを生成することをさらに含み得る。いくつかの実装形態では、ボディ経路を生成することは、ボディ-障害物マップにおいて指定されたボディ不可領域に基づく。いくつかの例では、ステップ経路を生成することは、ロボットに対する公称歩行の公称ステップパターンおよびステップ制約を調整することに基づく。ステップ制約は、地上と接触している各脚部の圧力中心オフセットの閾値範囲であって、圧力中心オフセットが、各ステップにおける各脚部に対するロボットの重量配分の許容量を示す、閾値範囲、ステップ経路が、ステップ-障害物マップのステップ不可領域に脚部を踏み込ませるかどうか、ステップ経路が、ロボットのボディをボディ障害物に入らせるかどうか、ステップ経路がロボットの自己衝突を引き起こすかどうか、または、ステップ-障害物マップの任意のステップ不可領域の周囲の空間のマージン、のうちの少なくとも1つを含み得る。加えて、ステップ制約は、ソフト制約またはハード制約を含み得る。いくつかの実装形態では、ロボットの脚部のためにステップ経路を生成することは、生成されたボディ経路を改良することを含む。
【0007】
本開示の別の態様は、ロボットを提供する。ロボットは、ボディと、ボディに連結され、環境の周囲でロボットを操縦するように構成されている脚部と、脚部と通信しているデータ処理ハードウェアと、データ処理ハードウェアと通信しているメモリハードウェアとを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる命令を格納している。動作は、少なくとも1つの画像センサからロボットの周囲の環境の画像データを受信することを含む。動作は、環境内の空間の占有の識別に基づいて3次元空間占有マップを、および3次元空間占有マップに基づいて2次元ボディ-障害物マップを生成することも含む。動作は、画像データに基づいて、ボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップを生成することも含む。動作は、ボディ-障害物マップに基づいて環境内を移動しているロボットのボディの動きのためのボディ経路を生成すること、およびボディ経路、ボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップに基づいて環境内を移動しているロボットの脚部のためのステップ経路を生成することも含む。
【0008】
本態様は、以下の任意選択的な機能のうちの1つ以上を含んでもよい。いくつかの実装形態では、画像データは、3次元体積画像センサによって捕捉された3次元点群データを含む。いくつかの例では、少なくとも1つの画像センサは、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含む。
【0009】
いくつかの例では、動作は、画像データに基づいて環境内の空間の占有を識別することと、環境内の空間の占有の識別に基づいて3次元空間占有マップを生成することと、を含む。画像データに基づいて、ボディ-障害物マップ、地上高さマップ、およびステップ-障害物マップを生成することは、3次元空間占有マップに基づいてボディ-障害物マップを生成することと、3次元空間占有マップに基づいて地上高さマップを生成することと、地上高さマップに基づいてステップ-障害物マップを生成することと、を含み得る。地上高さマップは、ロボットの近くの各場所における地面の高さを識別し、ステップ-障害物マップは、ロボットが踏むべきでない環境におけるステップ不可領域を識別する。任意選択的に、ボディ-障害物マップを生成することは、3次元空間占有マップに基づいて、2次元ボディ-障害物マップを生成することを含む。
【0010】
3次元空間占有マップは、ボクセルを有するボクセルマップを含み得、各ボクセルは、環境の3次元空間を表す。各ボクセルは、地面、障害物、またはその他のいずれかに分類され得る。いくつかの例において、動作は、3次元空間占有マップをフィルタ処理してボディ-障害物マップを生成することをさらに含む。ボディ経路は、ボディ-障害物マップにおいて指定されるボディ不可領域に基づいてもよく、ステップ経路は、ロボットに対する公称歩行の公称ステップパターンおよびステップ制約を調整することに基づいてもよい。いくつかの実装形態では、ステップ制約は、地面と接触する各脚部の圧力中心オフセットの閾値範囲であって、圧力中心オフセットが各ステップにおける各脚部に対するロボットの重量配分の許容量を示す、閾値範囲、ステップ経路が、ステップ-障害物マップのステップ不可領域に脚部を踏み込ませるかどうか、ステップ経路がロボットのボディをボディ障害物に入らせるかどうか、ステップ経路がロボットの自己衝突を引き起こすかどうか、またはステップ-障害物マップの任意のステップ不可領域の周囲の空間のマージン、のうちの少なくとも1つを含む。ステップ制約は、ソフト制約またはハード制約を含み得る。いくつかの実装形態では、ロボットの脚部のためにステップ経路を生成することは、生成されたボディ経路を改良することを含む。
【0011】
本開示の1つ以上の実装形態の詳細は、添付図面および以下の説明において記述される。他の態様、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0012】
【
図1】制約がある場合に一連のステップをプランニングする例示的なシステムの概略図である。
【
図2A】ボクセルの体積3次元マップの等角図である。
【
図2C】
図2Aの環境の例示的なボディ-障害物マップである。
【
図3】
図1のシステムの制御システムの例示的な構成要素の概略図である。
【
図4】最終的なステッププランを生成するための例示的な方法のフローチャートである。
【
図5】例示的なボディ-障害物マップ上に重ねられた例示的なボディ経路の概略図である。
【
図6】例示的なステップ不可マップ上に重ねられたボディ経路をたどるための速いケイデンスに関連付けられるステップ場所の概略図である。
【
図7】例示的なステップ不可マップ上に重ねられた遅いケイデンスに関連付けられるステップ場所の概略図である。
【
図8】例示的なステップ不可マップ上に重ねられた中間のケイデンスに関連付けられるステップ場所の概略図である。
【
図9】例示的なステップ不可マップ上に重ねられた選択された歩行に関連付けられるステップ場所の最終的なステッププランである。
【
図10】ステッププランのための地形および制約プランニングの例示的な方法のフローチャートである。
【
図11】ステッププランのための地形および制約プランニングの別の例示的な方法のフローチャートである。
【
図12】ステッププランのための地形および制約プランニングの別の例示的な方法のフローチャートである。
【
図13】本明細書に記載のシステムおよび方法を実装するために使用することができる例示的なコンピューティングデバイスの概略図である。
【0013】
各種図面中の同様の参照記号は、同様の要素を示す。
【発明を実施するための形態】
【0014】
脚型ロボットデバイス(「ロボット」とも称される)が普及するにつれて、多くの点で制約されている環境内をロボットがナビゲートする必要性が高まっている。例えば、ロボットは、床に大小の物体が散らばっている雑然とした部屋を横断する必要がある場合もある。または、別の例として、ロボットは階段を迂回する必要がある場合もある。典型的には、このような種類の環境をナビゲートすることは、遅くて骨の折れるプロセスであり、脚型ロボットが頻繁に停止する、物体と衝突する、および/またはバランスを崩す結果となる。本明細書の実装形態は、リアルタイムでステッププランを生成するための地形および制約プランニングのためのシステムおよび方法を対象としており、それにより、脚型ロボットデバイスは、滑らかさとバランスを維持しながら、迅速かつ効率的に制約された環境内をナビゲートすることが可能となる。
【0015】
図1を参照するに、ロボットまたはロボットデバイス10は、2本以上の脚部12を有するボディ11を含み、ロボット10が制約された環境8内をナビゲートすることを可能にするためのステッププランニングシステム100を実行する。各脚部12は、ボディ11に連結され、脚関節部18によって分離されている上部分14および下部分16を有し得る。各脚部12の下部分16は、足部19で終端する。各脚部の足部19は、任意選択的であり、1本以上の脚部12の下部分の終端部は、車輪に連結されてもよい。ロボット10は、重力の方向に沿った垂直方向の重力軸Vgと、ロボット10の分布質量の重み付けされた相対位置が合計してゼロとなる点である質量の中心CMと、を有する。さらに、ロボット10は、垂直方向の重力軸Vg(すなわち、重力に対して固定された基準フレーム)に対するCMに基づいたポーズPを有し、ロボット10によって採られる特定の姿勢またはスタンスを定義する。ロボット10の姿勢は、空間におけるロボット10の配向または角度位置によって定義され得る。ボディ11に対する脚部12による動きにより、ロボット10のポーズP(すなわち、ロボットのCMの位置とロボット10の姿勢または配向の組み合わせ)が変更される。
【0016】
いくつかの実装形態では、ロボット10は、ボディ11上に配置され、かつボディ11に対して動くように構成された多関節アーム20などの1つ以上の付属物をさらに含む。多関節アーム20は、5自由度以上の自由度を有してもよい。さらに、多関節アーム20は、マニピュレータアームまたは単に付属物と言い換えられてもよい。図示する例では、多関節アーム20は、互いに対しておよびボディ11に対しても回転可能な2つの部分22、24を含むが、多関節アーム20は本開示の範囲から逸脱することなくその部分をより多くまたはより少なく含んでもよい。第1の部分22は、多関節アーム関節部26によって第2の部分24から分離されてもよい。マニピュレータヘッド28と言い換えてもよいエンドエフェクタ28は、多関節アーム20の第2の部分24の遠位端に連結され得、物体を握る/掴むために1つ以上のアクチュエータ29を含み得る。
【0017】
ロボット10はまた、少なくとも1つの撮像センサまたはカメラ31を備えた視覚システム30を含み、各センサまたはカメラ31は画角32および視野34内でロボット10を囲む環境8の画像データまたはセンサデータを捕捉する。視覚システム30は、画角32を調節することによって視野34を動かすか、または、カメラ31をパンおよび/またはチルト(独立してまたはロボット10を介して)させることで視野34を任意の方向に動かすように構成されてもよい。代替的に、視覚システム30は、視覚システム30がロボット10の周囲の大体360度の視野を捕捉するよう、多数のセンサまたはカメラ31を含んでもよい。視覚システム30は、カメラまたはセンサ31によって捕捉された画像データから導出された画像データまたはセンサデータ17をロボット10のデータ処理ハードウェア36に提供する。データ処理ハードウェア36は、メモリハードウェア38とデジタル通信しており、いくつかの実装形態では、リモートシステムでもよい。リモートシステムは、単一のコンピュータ、多数のコンピュータ、または、スケーラブル/エラスティックコンピューティングリソースおよび/もしくはストレージリソースを有する分散型システム(例えば、クラウド環境)でもよい。ロボット10のステッププランニングシステム100は、データ処理ハードウェア36上で実行される。図示される例では、ステッププランニングシステム100は、視覚システム30から画像またはセンサデータ17を受信し、かつ周囲の環境8における障害物を示す1つ以上のマップ112、114、116を生成する知覚システム110を含む。ステッププランニングシステム100はまた、知覚システム110によって生成されたマップ112、114、116を受信し、かつボディ経路または軌道510(
図5)を生成し、かつボディ経路510を用いてステップ経路またはステッププラン350を生成する制御システム300を含む。ロボット10は、ステッププラン350を用いて、ステッププラン350によって示される場所に足部19または脚部12の遠位端を置くことによってステッププラン350に従って環境8内を移動する。いくつかの実装形態では、ステッププランニングシステム100の少なくとも一部分は、ロボット10と通信しているリモートデバイス上で実行される。例えば、知覚システム110はリモートデバイス上で実行されて1つ以上のマップ112、114、116を生成することができ、ロボット10上で実行される制御システム300はリモートデバイスからマップ112、114、116を受信することができる。ここで、制御システム300は、ボディ経路510およびステップ経路350を生成してもよい。任意選択的に、ステッププランニングシステム100全体がリモートデバイス上で実行されてもよく、リモートデバイスがボディ経路510およびステップ経路350に基づいて環境8内を移動するようにロボット10を制御/指示してもよい。
【0018】
いくつかの実装形態では、視覚システム30のカメラ(複数可)31は、1つ以上のステレオカメラ(例えば、1つ以上のRGBDステレオカメラ)を含む。他の例では、視覚システム30は、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサなどの1つ以上のレーダセンサ、光スキャナ、飛行時間センサ、または、任意の他の3次元(3D)体積画像センサ(またはそのようなセンサの任意の組み合わせ)を含む。いくつかの実装形態では、視覚システム30は、捕捉された画像またはセンサデータ17に基づいて、環境8内の空間の占有を識別する。知覚システム110は、視覚システム30によって捕捉された画像データ17を用いて、3D点群を生成してもよい。点群とは、ロボット10の周囲の環境8における物体の表面を表すデータ点のセットである。この点群より、知覚システム110は、環境8における以前に識別された空間の占有に基づいて、3D空間占有マップ200(
図2A)を生成してもよい。いくつかの例では、知覚システム110は、ボクセル210、212の3D体積マップ200、200aを生成する(
図2A)。各ボクセル210、212(すなわち、立方体)は、環境の3D空間を表す。各ボクセル210、212の大きさは、知覚システム110の忠実度、ならびに視覚システム30およびデータ処理ハードウェア36の処理能力に依存する。例えば、ロボット10は、ロボット10の周囲の環境8(例えば、各方向に数メートル)のボクセルマップ200(すなわち、3D占有マップ)を生成することができ、このとき、各ボクセル210、212は3cmの立方体である。知覚システム110は、さまざまな統計を各ボクセルについて格納してもよい。
【0019】
いくつかの実装形態では、知覚システム110は、物体を含む各ボクセル210、212を地面9、障害物、またはその他のいずれかとして(例えば、分類アルゴリズム、例えば、線形分類器、決定木、ニューラルネットワーク、専用ロジックなどを用いて)分類する。知覚システム110は、ボクセル210、212が表す点または空間をロボット10が踏むことができると知覚システム110が決定した場合に、ボクセル210を地面9として分類する。例えば、ロボット10は、歩道またはステップの表面を地面9として分類してもよい。知覚システム110は、ボクセル210、212によって表される点または空間をロボット10が踏むことができないと知覚システム110が決定した場合に、ボクセル212を障害物として分類する。例えば、知覚システム110は、高すぎてロボットの脚部が到達できない物体、または、踏んだ場合にロボット10が安定性(すなわち、バランス)を失う結果となる物体を障害物として分類する。その他となる第3の分類は、ロボット10が安全に軽視するまたは無視することができるボクセル210、212に使用され得る。例えば、知覚システム110は、ロボット10のはるか上方にある物体またはロボット10から遠く離れている物体をその他として分類する。
図2Aは、地面ボクセル210、210a~nの平面および障害物ボクセル212、212a~nのグループ(すなわち、椅子)を含む単純なボクセルマップ200、200aの例を示す。
【0020】
分類されたボクセル210、212を含む体積3Dマップ200を用いて、知覚システム110はボディ-障害物マップ112を生成する。いくつかの実装形態では、ボディ-障害物マップ112は、ロボット10のボディ11に対する「立ち入り禁止エリア」または「ボディ不可領域」の注釈を付けるか、または図示する2次元(2D)マップを表す。つまり、ボディ-障害物マップ112は、各場所(すなわち、マップ112のピクセルであって、各ピクセルはロボット10の環境8内の空間の列を表す)を、ロボット10のボディ11が進むのに安全な場所、またはロボット10のボディ11が進むのに安全でない場所として印を付ける2Dマップである。ボディ-障害物マップ112は、セル(例えば、ピクセル)のグリッドを含んでもよく、グリッドの各セルはブ-ル値(例えば、ボディが入ってもよい、またはボディが入ってはいけない)を含む。例えば、
図2Bを参照すると、
図201は手すりのある階段を含む環境8を示している。ロボット10が階段を上り下りする場合、手すりはロボット10のボディ11にとって障壁となる(すなわち、手すりはボディ11と接触する高さにある)。
図2Cは、
図2B(すなわち、階段の平面図)の階段の2D画像を表すボディ-障害物マップ112を示す。
図2Cにおいて、違法なボディ領域(例えば、障害物ボクセル)212(すなわち、立ち入り禁止エリア)は、ロボット10のボディが入ることができない、または入るべきでない(例えば、階段の手すり、壁、大きい障害物など)エリアを表す。
【0021】
図1および
図2Dを参照すると、知覚システム110はまた、体積3Dマップ200(または、以下により詳細に考察されるように、地上高さマップ116)を用いてステップ-障害物マップ114を生成する。いくつかの例では、ステップ-障害物マップ114は、ロボット10の脚部12によるステップに対する立ち入り禁止または「ステップ不可」領域213を示す2D平面マップを表す。つまり、ステップ-障害物マップ114は、ボディ-障害物マップ112と同様であるが、立ち入り禁止エリア213は、ロボット10のステップ(すなわち、足部19または脚部12の遠位端)が「タッチダウン」するべきではないエリアを代わりに表す。つまり、足部19または脚部12の遠位端は立ち入り禁止領域213を通り越すことはできるが、足部19は領域213内でステップを完了しない場合がある。ステップ-障害物マップ114は、セル(例えば、ピクセル)のグリッドを含んでもよく、グリッドの各セルはブ-ル値(例えば、ステップ可またはステップ不可)を含む。
【0022】
異なる考慮事項を使用して、ステップ-障害物マップ114対ボディ-障害物マップ112を生成してもよく、これにより、いくつかの障害物はボディ障害物、ステップ障害物、ボディおよびステップ障害物、または、いずれでもないに分類され得る。例えば、ロボット10の脚部12は、地面9の上のある距離でボディ11を支持するため、ボディ11は、地面9の近くにある障害物を安全に回避することができる。ステップ-障害物マップ114は、ロボット10が脚部12を介してどの高さまで踏むことができるかなどの態様も考慮することができる。さらに、いくつかの例では、ロボット10の膝(すなわち、脚関節部18)は、足部19の前方または後方に突き出し、それにより、足部19が置かれる場所が制限される(例えば、足部19が持ち上げられて障害物上に置かれる前に十分に高い障害物に膝がぶつかる場合がある)。したがって、立ち入り禁止エリア213は、障害物がないことになっている地面9上のエリアを含むことができるが、ロボット10のジオメトリおよびポーズにより、ロボット10が立ち入り禁止エリア213を横切るとロボット10のボディ11は地面9上の障害物に接触し得る。
【0023】
概して、ボディ障害物として分類される障害物はステップ障害物としても分類されるが、その逆は必ずしも成立せず、ステップ障害物はボディ障害物(例えば、踏むことに関しては問題を生ずる高さであるが、ロボット10のボディ11が障害物と接触しない十分に低い障害物)として分類されない場合がある。いくつかの状況では、ボディ障害物はステップ障害物として分類されない場合がある。例えば、テーブルはボディ障害物であり得るが、ロボット10はテーブルの下を踏む場合もある。知覚システム110は、ボディ障害物のすぐ横に足部を置くこと(すなわち、ボディ障害物の大きさを拡大すること)が実行不可能な場合もあるため、ボディ障害物をより大きいステップ障害物として分類してもよい。
【0024】
いくつかの実装形態では、知覚システム110は、ステップ障害物の広いエリアをボディ障害物として分類する。例えば、環境8のあるエリアが特に密集した数のステップ障害物を含み、そのエリアを横切ることが困難な場合、知覚システム110は、より良い最終的なステッププラン350(以下でより詳細に考察される)を得るために、ロボット10のボディに衝撃を与える高さの障害物でないにも関わらず、エリア全体をボディ障害物として分類してもよい。いくつかの実装形態では、知覚システム110は、ロボット10が物体と衝突する以外の理由であるに入らないことを確実にするために、エリアをボディ障害物として分類する。例えば、ユーザは、ロボット10をある方向にまたはある経路に沿って方向付けることを望む場合がある。
【0025】
図2Dのステップ-障害物マップ114は、
図2Bの階段を表している。
図2Cのボディ-障害物マップ112と同様に、ステップ-障害物マップ114は、知覚システム110が、ロボット10が踏むのに安全でないまたは有効でないと決定するエリア213、および、安全または有効であると決定するエリア210の概形を示している。例えば、階段の前の地面9および各個々のステップは、ステップ-障害物マップ114において有効として印が付けられている。
【0026】
図1に戻って参照すると、いくつかの実装形態では、知覚システム110はまた、3D体積マップ200から地上高さマップ116を生成する。地上高さマップ116は、ロボット10の近くの各場所における地面9の高さを識別する。つまり、地上高さマップ116は、地形図と同様に、基準点または高さに対する水平面内の各場所での地面9の高さを記録する2Dマップである。いくつかの例では、地上高さマップ116は、地面9の高さのみを示し、地面9の上方のどの表面も示さない。つまり、地上高さマップ116は、テーブルの表面の高さではなく、テーブルの下の地面9の高さをラベル付けすることができる。地上高さマップ116は、ステップ-障害物マップ114の生成を補助する(例えば、安全に横切るには地面が高すぎるまたは急すぎるため、ステップ障害物として印を付けるべき場合を決定する)ために使用されてもよい。知覚システム110は、例えば、3Dマップの各列において地面9として分類されたボクセル210の高さを決定することで、地上高さマップ116を生成する。同様に、ステップ-障害物マップ114は、地上高さマップ116から生成されてもよい。知覚システムは、任意選択的に、ボディ-障害物マップ112およびステップ-障害物マップ114の両方を符号付距離フィールドに(すなわち、符号付距離関数を用いて)処理する。
【0027】
ここで、
図3を参照すると、ステッププランニングシステム100の制御システム300は、知覚システム110からマップ(ボディ-障害物マップ112、ステップ-障害物マップ114、および、地上高さマップ116)を受信し、環境8内をナビゲートするためにロボット10によって使用されるステッププラン350(すなわち、ロボット10が足部19を置く場所のマップ)を生成する。いくつかの実装形態では、制御システム300は、ボディ経路生成部310および制約されたステッププランナ320を含む。
【0028】
ボディ経路生成部310は、知覚システム110からボディ-障害物マップ112、およびロボット10がナビゲートするべき位置311(すなわち、ロボット10が向かおうとしているところ)を受信する。次に、ボディ経路生成部310は、ロボット10が環境8内を移動する間、ボディ-障害物マップ112(
図5)に注釈が付けられたボディ障害物520(
図5)を回避するボディ軌道510(すなわち、ロボット10のボディ11がたどる経路)を生成する。ボディ経路生成部310は、リソースが集中しない方法またアルゴリズム(例えば、ポテンシャルフィールド法、急速に探索するランダムツリー、および/または軌道オプティマイザ)でボディ軌道またはボディ経路510を生成する。例えば、ポテンシャルフィールド法を用いて、ロボット10が横切るおおよその経路510を表す平面軌道を迅速に生成するために、ボディ11の簡略化されたモデルが使用される(例えば、運動量は考慮されず、位置のみを考慮して速度が計画される)。平面軌道は、CMの水平運動およびロボット10のヨーを含み得る。必ずしも最適ではないが、ボディ軌道510は、さらなる経路最適化のための理想的な開始点を提供する経路の良好な近似を迅速に提供する。特に、制御システム300は、ステップ-障害物マップ114を使用せずにボディ軌道510を生成するため、ボディ経路510はボディ軌道510をたどった場合にロボット10が踏むべき場所を提供しない。
【0029】
図3を引き続き参照すると、制約されたステッププランナ320は、ボディ経路生成部310からボディ軌道510を、最終的な制約されたステップ場所(例えば、ステッププラン)350を生成するための開始点として受信する。いくつかの例では、制約されたステッププランナ320は、ロボット10に公称ステップ場所を提供する歩行タイミング332を最初に決定する歩行決定部330を含む。つまり、歩行決定部330は、ステップ-障害物マップ114(
図6)に提示されたステップ障害物620(
図6)に対して、どの歩行(例えば、遅い歩き、速い歩き、急ぎ足など)が最適なステップ場所を提供するかを決定する。歩行決定部330は、任意選択的に、制約されたステッププランナ320から分離している。いくつかの実装形態では、歩行決定部330は、決定した歩行タイミング332をステップソルバ340に提供する。以下により詳細に説明するように、ステップソルバ340は、歩行タイミング332および1つ以上の制約342、342a~nを受け入れる。ステップソルバ340は、決定された歩行タイミング332の公称ステップ場所に制約342を適用し、最適化されたステッププラン350を求める。以下により詳細に説明するように、いくつかの実装形態では、制約342は、342は、圧力中心(CoP)オフセット制約342a、ボディ立ち入り禁止制約342b、ステップ立ち入り禁止制約342c、自己衝突制約342d、立ち入り禁止マージン制約342e、およびバランス制約342fを含む。制約342は、制約342a~342fのうちの1つ以上に加えて、またはその代わりに1つ以上の他の制約を含み得る。
【0030】
いくつかの実装形態では、制約されたステッププランナ320は、さまざまな他の情報を受信する。例えば、制約されたステッププランナ320は、ロボット10のCMの現在の位置および速度、足部のタッチダウンおよびリフトオフ情報(例えば、タイミング)、ならびにスイング足部の位置および/または速度を受信してもよい。制約されたステッププランナ320は、ボディ-障害物マップ112も受信し得る。いくつかの実装形態では、制約されたステッププランナ320はボディ経路軌道510を調整または改良する。調整が軽微な場合がある。例えば、制約されたステッププランナ320は、環境8内を進んで行くボディ11の揺れを考慮することができる(簡略化されたボディ経路軌道510においては考慮されない)。場合によっては、調整が重要な場合もある。例えば、簡略化されたボディ軌道510は、一旦歩行タイミング332が決定すると、物理的に不可能(例えば、無限の加速度を含む)であり得るか、または解を求めるのが困難となり得る。いくつかの実装形態では、制約されたステッププランナ320は、ロボット10のボディ11の並進のみを調整して、ヨー軌道を調整せず、他の実装形態では、ボディ11の並進とヨーの両方を調整する。
【0031】
図4は、ステッププランニングシステム100のプロセスフローを表す例示的なフローチャート400を示している。工程402において、知覚システム110はボディ-障害物マップ112を作成し、工程404において制御システム300はボディ-障害物マップ112を使用してボディ軌道またはボディ経路510を生成する。工程406において、知覚システム110はまた、ステップ-障害物マップ114を作成し、工程408において制御システム300は、制約されたステッププランナ320の歩行決定部330を介して、平面ボディ経路510およびステップ-障害物マップ114を使用して歩行タイミング332を選択する。410において、制約されたステッププランナ320のステップソルバ340は、選ばれた歩行タイイング332、ボディ-障害物マップ112、およびステップ-障害物マップ114を使用して、最終的なステッププラン350(すなわち、ロボット10がその足部19を置く場所)の解を求める。
【0032】
図5は、ボディ障害物520の周りをナビゲートするためのボディ経路510を表す概略
図500を示している。例えば、フローチャート400は、制御システム300が、工程402で生成されたボディ-障害物マップ112を使用して、工程404でボディ経路510を生成することを表している。例えば、ポテンシャルフィールド法を用いて、制御システム300のボディ経路生成部310は、点Aから点Bまでボディ経路510をプロットして、1つ以上のボディ障害物520の周りをナビゲートする。ボディ障害物520は、ボディ11がボディ-障害物ゾーン520を横切る/入った場合、ロボット10のボディ11が1つ以上の障害物と接触するボディ-障害物ゾーン520とも称され得る。つまり、ボディ-障害物ゾーン520によって画定されるエリアは、それ自体がボディ障害物を示すのではなく、むしろ、ボディ11が1つ以上の障害物と接触するため、ロボット10のボディ11が入ることが許可されていないエリアを示している。ボディ経路生成部310は、経路510に沿って進むロボット10のシミュレートされたボディ530を生成することでボディ経路510の有効性を確実にする。有効な経路は、例えば、シミュレートされたボディ530がボディ-障害物ゾーン520のいずれにも接触しない場合に結果として得られる。
【0033】
先で考察されるように、知覚システム110からステップ-障害物マップ114を受信した後、歩行決定部は、歩行を選択して公称ステップ場所を生成する。
図6~
図8をここで参照すると、いくつかの実装形態では、制約されたステッププランナ320の歩行決定部330は、いくつかの潜在的な歩行を分析して最適な公称ステップ場所を見つける。
図6は、ステップ-障害物マップ114上にプロットされたボディ経路510をたどるための速いケイデンスと関連付けられるステップ場所630を表す概略
図600を示している。例えば、フローチャート400は、制約されたステッププランナ320の歩行決定部330を介して、工程404において生成された平面ボディ経路510および工程406において生成されたステップ-障害物マップ114を使用して、工程408においてステップ場所630について速いケイデンスを有する歩行タイミング332を選択する、制御システム300を表す。本明細書で使用する場合、「足部(feet)場所(複数可)」、「足部(foot)場所(複数可)」、および「ステップ場所(複数可)」という用語は互換的に使用される。
【0034】
歩行決定部330は、ステップ-障害物マップ114上にプロットされたボディ経路510から始まり、選択されたケイデンス(すなわち、ボディ11がボディ経路510をたどり、脚部12が選択されたケイデンスで動いた場合にロボット10が踏む場所)に重ねる。図示する例では、ボディ経路510は、1つ以上のステップ障害物620と交差してもよいが、ボディ障害物520(ボディ経路生成部310によって以前に確実にされた)と交差しない。各ステップ場所630、630a~nがプロットされ、評価される。いくつかの実装形態では、歩行決定部330は、現在シミュレートされた歩行タイミングのステップ場所630の品質を反映するスコアを生成する。
図6の速いケイデンスに対するスコアは、ステップ場所630とステップ障害物620(例えば、ステップ場所630がステップ障害物620と重なる場所)との間の軽微な衝突の数により、比較的低くてもよい。スコアは、ステップ障害物620との衝突の数、および衝突の激しさによって影響を及ぼされる。歩行決定部330は、障害物620を回避するためにステップ場所630がシフトされなくてはならない距離を強調してもよい。例えば、3つの障害物620とわずかに衝突するステップ場所630は、単一の障害物620と激しく衝突するステップ場所630よりも好ましい場合がある。
【0035】
図7は、ステップ-障害物マップ114上にプロットされたボディ経路510をたどるための遅いケイデンスと関連付けられるステップ場所630を表す概略
図700を示している。
図6の速いケイデンスと関連付けられたステップ場所630と同様に、
図7の遅いケイデンスは、非理想的なスコアにつながるステップ障害物620内のまたはそれと接触する多数のステップ場所630を提示する。他方では、
図8の概略
図800は、ステップ-障害物マップ114上にプロットされたボディ経路510をたどるための中間のケイデンス(すなわち、
図6の速いケイデンスよりも遅いが
図7の遅いケイデンスよりも速い)とここで関連付けられているステップ場所630を表す。中間のケイデンスは、ステップ場所630とステップ障害物620との間の衝突の数が最も少なく、したがって、遅い、中間、および速いケイデンスのうち最も高いスコアを受信することができる。3つのケイデンスだけが具現化されているが、歩行決定部330が特定のケイデンスを選択する前に任意の数の歩行タイミングを評価してもよいことが理解されよう。分析された各歩行タイミングに割り当てられたスコアは、所与の制約を満たすために要求される最適化の量を反映し得る。公称ステップ場所630が違反する制約が多いほど(例えば、ステップ障害物620と衝突する)、より多くの最適化が必要となり得る。ステップ障害物およびボディ障害物の制約に加えて、スコアは、他の制約(例えば、スピード制約)を反映し得る。例えば、一部のタスクまたは環境では、遅いケイデンスが速いケイデンスよりも重み付けされる場合がある。
【0036】
ここで
図9を参照すると、一旦歩行決定部が歩行タイミング332および公称ステップ場所630を選択すると、制約されたステッププランナ320のステップソルバ340が最終的なステッププラン350について解を求める(例えば、フローチャート400のステップ410)。
図9は、障害物マップ114上にプロットされたボディ経路510をたどるための選択された歩行タイミング332(例えば、ケイデンス)と関連付けられる最終的なステップ場所630を表す概略
図900を示す。ステップソルバ340は、ステップソルバ340が解を求める際に考慮するいくつかの制約342(すなわち、変数)を受け入れる。いくつかの例では、各制約342は「ハード」制約または「ソフト」制約である。ハード制約は、ステップソルバ340が違反することができず、それでも成功したステッププラン350を有する制約342である。例えば、特定のステップ障害物620を踏むことが壊滅的な結果(例えば、端から落ちる)につながる場合があるので、ステップ障害物620(例えば、落ちる端)を回避することは、ハード制約としてラベル付けされ得る。ソフト制約は、ステップソルバ340が満たそうとするが、成功したステッププラン350を達成するために、必要に応じて違反する場合がある制約342である。例えば、ステップソルバ340は、ステップ障害物620(すなわち、「マージン」制約342e)の閾値距離内に入らないように制約342を有してもよい。閾値距離を維持することは理想的であるが、ステップソルバ340は、必要に応じて、(例えば、ハード制約への準拠を確実にするために)境界に侵入する場合もある。ソフト制約は、重み付けされてもよい。つまり、各制約342には、全ての制約を満たすことができない場合にステップソルバ340にどの制約を最初に違反するかを決定させる特定の重みまたは「柔軟さ」を与えてもよい。例えば、ステップソルバ340がマージン制約342eおよびバランス制約342f(すなわち、ロボット10のバランスを維持するための要件)を有する場合、ステップ障害物620からマージンを維持するよりもバランスを維持する方がより重要となり得るため、バランス制約342fがマージン制約342eよりも多く(例えば、「より厳しく」)重み付けされ得る。そのため、ステップソルバ340は、最初にまたはバランス制約342fよりも大幅にマージン制約342eを違反することを選んでもよい。
【0037】
制約342は、(ハードまたはソフト)等式制約(例えば、x=5)または不等式制約(例えば、x<=5)でもよい。いくつかの実装形態では、ステップソルバ340はまた、制約342に服従しながら(または服従しようとしながら)コストを最小限にするように努める。コストは、ソフト等式制約と同等でもよい。つまり、場合によっては、ソフト制約は、ソルバ340によって最小限にされるべきコストと考えられてもよい。いくつかの制約(例えば、バランス制約342f)は、コストまたはソフトな制約として扱われてもよい。例えば、xが5よりも大きい制約がない場合、例示的なコストおよび例示的な不等式な制約を追加しても同じ効果(同等の重み付けと想定して)が得られる。しかしながら、xが5未満である制約がない場合、コスト(または等式制約)を追加するとxは5に近くなるが、不等式制約は効果がない。いくつかの実装形態では、ステップソルバ340は、コストおよびソフト不等式制約を使用し、ハード制約または等式制約を使用しない。
【0038】
ステップソルバ340は、任意の数の制約342について解を求めてもよい。先で考察されるように(
図3)、ステップソルバ340はステップ/ボディ障害物エリアに入らないようにするための制約342b、342c、ステップ障害物620から閾値距離を保つためのマージン制約342e、ならびに、バランスおよび/または安定性を維持するためのバランス制約342fを有してもよい。他の例では、ステップソルバ340は、地面9と接触する脚部12(複数可)の圧力中心オフセットの閾値範囲を含む圧力中心オフセット制約342aを受信してもよい。圧力中心オフセットは、各ステップにおける各脚部12に対するロボット10の重量配分(すなわち地面9と接触する脚部12(複数可)間の重量配分)の許容量を示し得る。つまり、圧力中心オフセット制約342aは、ロボットのステップに適用されるロボット10の重量の割合が有効であることを確実にする。例えば、地面9と2本の足部が接触しているとき、ステップソルバ340は、第1の足部に120%(例えば、ロボット10の全重量よりも20%多い)、第2の足部に-20%の垂直力を適用しないよう、制約されてもよく、このような妙技が不可能であるためである。別の例では、ステップソルバ340は、自己衝突制約342dを受信してもよい。つまり、ステップソルバ340がロボット10をそれ自体と衝突させないようにすることを確実にする(例えば、第1の足部19を第2の足部19が既に位置する場所に置く)制約342dである。制約342は、ナビゲーションの前に予め決定されてもよい。制約342は、また、ナビゲーション中に変更、追加、または削除されてもよい。いくつかの例では、制約342が制御システムの外部のソース(例えば、ロボット10のユーザまたは製造業者)から受信される一方で、他の例では、ステッププランニングシステム100がロボット10のセンサから受信したデータに基づいて自主的に制約342を生成する。
【0039】
ステップソルバ340に割り当てられた制約342を満たすよう、ステップソルバ340は、各ステップ場所630を調整してもよい。
図9を引き続き参照すると、ステップ障害物回避制約342cは、ステップ場所630を障害物から「押しのける」か、または別様にそこからは離れるように調整してもよい。例えば、ステップ場所630aは、立ち入り禁止境界620(立ち入り禁止制約342cに応じて生成される)のため、例えば、ステップ場所630bに動かされる。ステップソルバ340が元の公称ステップ場所からステップ場所630の場所を変更すると、調整は他のステップ場所630に対する変化へとカスケードまたは波及され得る。例えば、
図9に例示されるように、ロボット10がボディ軌道510に沿って動く際にバランスを維持するために、ステップソルバ340がステップ場所630aを前もって調整することに応じて、ステップ場所630cがステップ場所630dに動かされてもよい。ステップソルバ340が最終的な制約されたステップ場所プラン350を完成すると、ロボット10は進み始め、決定されたステップ場所630に対してその足部を置くことができる。進行中、ロボット10は知覚システム110から受信した最近のマップ112、114、116に基づいて(同じまたは更新された制約342で)ステッププラン350を継続的に再実行または再生成し、それに応じて、適宜、ステッププラン350を適合または変えてもよい。
【0040】
理想的には、ステップソルバ340は2次プログラミング法を使用して、リアルタイムでステップソルバ340がステッププラン350を解くことができるようにしてもよい。2次プログラムは最適化問題を迅速に解くために線形制約を使用する。つまり、いくつかの例では、ステップソルバ340は、線形に制約されたいくつかの変数の2次関数を最小化または最大化する。
図9を引き続き参照すると、アモルファス形状の障害物領域を線形に制約するために、ステップソルバ340は障害物の形状を厳密に近似するよう一連の直線920を描いてもよい。いくつかの例では、ステップソルバ340は、障害物の関連部分にのみ線形制約を適用する。他の例では、ステップソルバ340は、元々、いかなる制約342もなくステッププラン350の解を求め、次に、ステップソルバ340が最適化された最終的なステッププラン350を達成するまで、制約342を反復的に追加して中間ステッププランを再生成する。
【0041】
ステップソルバ340は、凸状制約の解を求めることで開始する場合がある。次に、ソルバ340は、凸状制約からの解を用いて、非凸状制約の最良の線形近似を反復的に決定する。例えば、スイングしている足部19の現在の位置および速度、タッチダウンまでの既知の時間(すなわち、足部19と地面9との間)、および足部19の最大加速度に基づいて、ソルバ340は足部19がタッチダウンし得る長方形の領域を決定してもよい。同様に、他の形状が他の領域を近似してもよい。例えば、各脚部12は最大の長さを有するため、足部19のタッチダウンは、腰からあまり遠くで起こらない場合がある。このエリアは八角形で表すことができる。足部19のリフトオフは、足部19のタッチダウンと同様に近似されてもよいが、長方形(八角形に対して)を代わりに使用してもよい。スタンス脚部12は、自己衝突から守るために台形状の境界を有してもよい。
【0042】
そのため、ロボット10のステッププランニングシステム100は、正確なステッププラン350を決定することから、ボディ経路510を近似し決定することを切り離す。ボディ軌道510を最初に迅速に近似することにより、制御システム300は、そうでなければ計算的に非効率的となるであろう正確な最終的なステッププラン350の迅速な最適化のために使用され得る合理的なファーストパスソリューションを生成する。このため、ステッププラン350は、ロボット10が環境8内を移動する間にリアルタイムナビゲーションを可能にするために高周波数(例えば、300Hz)で再生成されてもよい。知覚システム110は、制御システムとは異なる周波数で動作してもよい。つまり、制御システム300がステッププラン350を決定するレートとは異なる(例えば、より遅い)レートで新しいマップが制御システム300に提供されてもよい。制御システム300による再生成の高周波数により、ロボット10は、新しい知覚データ(例えば、新たに検知された物体)に迅速に適応し、予期せぬ運動状態(例えば、押されるか、またはぶつけられた後にバランスを維持する)に迅速に反応し、または新しい要件(例えば、スピードの増加または減少)に対応することが可能となる。
【0043】
図10は、ステッププランのための地形および制約プランニングの例示的な方法1000のフローチャートである。フローチャートは、動作1002において、少なくとも1つの画像センサ31からロボット10の周囲の環境8の画像データ17をロボット10のデータ処理ハードウェア36において受信することによって開始される。画像センサ31は、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含んでもよい。いくつかの実装形態では、画像データ17は、3次元体積画像センサによって捕捉された3次元点群データを含む。ロボット10は、ボディ11と、脚部12と、を含む。工程1004において、方法1000は、データ処理ハードウェア36によって、画像データ17に基づいてボディ-障害物マップ112、ステップ-障害物マップ114、および地上高さマップ116を生成することを含む。
【0044】
工程1006において、方法1000は、データ処理ハードウェア36によって、ボディ-障害物マップ112に基づいて、環境8内を移動しているロボット10のボディ11の動きのためのボディ経路510を生成することを含む。工程1008において、方法1000は、データ処理ハードウェア36によって、ボディ経路510、ボディ-障害物マップ112、ステップ-障害物マップ114、および地上高さマップ116に基づいて、環境8内を移動しているロボット10の脚部12のためのステップ経路350を生成することを含む。
【0045】
図11は、ステッププランのための地形および制約プランニングの別の例示的な方法1100のフローチャートである。フローチャートは、動作1102において、少なくとも1つの画像センサ31からロボット10の周囲の環境8の画像データ17をロボット10のデータ処理ハードウェア36で受信することによって開始される。画像センサ31は、ステレオカメラ、走査型光検知測距(LIDAR)センサ、または走査型レーザ検知測距(LADAR)センサのうちの1つ以上を含んでもよいいくつかの実装形態では、画像データ17は、3次元体積画像センサによって捕捉された3次元点群データを含む。ロボット10は、ボディ11と、脚12と、を含む。工程1104において、方法1100は、データ処理ハードウェア36によって、画像データ17に基づいて、環境8内の空間の占有を識別することを含む。工程1106において、方法1100は、データ処理ハードウェア36によって、環境8内の空間の占有の識別に基づいて、3次元空間占有マップ200を生成することを含む。いくつかの例では、3次元空間占有マップ200は、ボクセル212を有するボクセルマップ200、200aを含み、各ボクセル212は、環境8の3次元空間を表す。各ボクセル212は、地面9、障害物、または、その他のいずれかに分類され得る。工程1108において、方法1100は、データ処理ハードウェア36によって、3次元空間占有マップ200に基づいて2次元ボディ-障害物マップ112を生成することを含む。工程1110において、方法1100は、データ処理ハードウェア36によって、3次元空間占有マップ200に基づいて地上高さマップ116を生成することを含む。地上高さマップ116は、ロボット10の近くの各場所における地面9の高さを識別する。
【0046】
工程1112において、方法1100は、データ処理ハードウェア36によって、地上高さマップ116に基づいてステップ-障害物マップ114を生成することを含み、ステップ-障害物マップ114は、ロボット10が踏むべきでない環境8内のステップ不可領域213を識別する。工程1114において、方法1100は、データ処理ハードウェア36によって、2次元ボディ-障害物マップ112に基づいてロボット10を環境内で移動させる場合に、ロボット10のボディ11の動きのためのボディ経路510を生成することを含む。いくつかの例では、ボディ経路510は、2次元ボディ-障害物112において指定されたボディ不可領域に基づく。工程1116において、方法1100は、データ処理ハードウェア36によって、ボディ経路510、ボディ-障害物マップ112、ステップ-障害物マップ114、および地上高さマップ116に基づいて、ロボット10を環境8内で移動させる場合に、ロボット10の脚部12の動きのためのステップ経路350を生成することを含む。ステップ経路350は、ロボット10の公称歩行の公称ステップパターンおよびステップ制約342に基づいてもよい。いくつかの実装形態では、ロボット10の脚部12についてステップ経路350を生成することは、生成されたボディ経路510を改良することを含む。いくつかの実装形態では、ステップ制約342は、以下のうちの少なくとも1つを含む:地面と接触する各脚部12に対する圧力中心オフセットの閾値範囲であって、圧力中心オフセットは各ステップにおける各脚部12に対するロボットの重量配分の許容量を示す、閾値範囲、ステップ経路350が、ステップ-障害物マップ114のステップ不可領域213に脚部12を踏み込ませるかどうか、ステップ経路350が、ロボット10のボディ11をボディ障害物に入らせるかどうか、ステップ経路350が、ロボット10の自己衝突を引き起こすかどうか、またはステップ-障害物マップ114の任意のステップ不可領域213の周囲の空間のマージン。任意選択的に、ステップ制約342は、ソフト制約または重み付けされた制約を含む。
【0047】
いくつかの実装形態では、方法1100は、データ処理ハードウェア36によって、3次元空間占有マップ200をフィルタ処理して2次元ボディ-障害物マップ112を生成することを含む。フィルタ処理は、不完全に観察された障害物の周りの隙間を埋める、および/またはマップ112から偽のデータを除去し得る。
【0048】
図12は、ステッププランのための地形および制約プランニングの別の例示的な方法1200のフローチャートである。フローチャートは、動作1202において、2次元ボディ-障害物マップ112、ステップ-障害物マップ114、および地上高さマップ116をロボット10のデータ処理ハードウェア36で受信することによって開始される。ここで、ロボット10のデータ処理ハードウェア36は、データ処理ハードウェアと通信するリモートデバイスからマップ112、114、116を取得してもよい。例えば、リモートデバイスは、
図1を参照して上で考察されるように、ロボット10の視覚システム30(
図1)から画像データ17(
図1)を受信し、画像データ17に基づいてマップ112、114、116を生成してもよい。地上高さマップ116は、ロボット10の近くの各場所における地面9の高さを識別する。ステップ-障害物マップ114は、ロボット10が踏むべきでない環境8内の場所を識別する。工程1204において、方法1200は、データ処理ハードウェア36によって、2次元ボディ-障害物マップ112に基づいて、ロボット10を環境8内で移動させる場合に、ロボット10のボディ11の動きのためのボディ経路510を生成することを含む。工程1206において、方法1200は、データ処理ハードウェア36によって、ボディ経路510、ボディ-障害物マップ112、地上高さマップ116、およびステップ-障害物マップ114に基づいて、環境8内でロボット10を移動させる場合にロボット10の脚部12の動きのためのステップ経路350を生成することを含む。
【0049】
図13は、本文献に記載するシステムおよび方法(例えば、データ処理ハードウェア36およびメモリハードウェア38)を実装するために使用されてもよい例示的なコンピューティングデバイス1300の概略図である。ここで図示する構成要素、それらの接続および関係、ならびにそれらの機能は、例示的なものにすぎず、本文献に記載するおよび/または主張する本発明の実装形態を制限することを意図するものではない。
【0050】
コンピューティングデバイス1300は、プロセッサ1310(例えば、データ処理ハードウェア36)、メモリ1320(例えば、メモリハードウェア38)、ストレージデバイス1330、メモリ1320および高速拡張ポート1350に接続される高速インターフェース/コントローラ1340、ならびに低速バス1370およびストレージデバイス1330に接続される低速インターフェース/コントローラ1360を含む。構成要素1310、1320、1330、1340、1350、および1360の各々は、さまざまなバスを用いて相互接続され、共通のマザーボード上、または適宜他の方法で搭載されてもよい。プロセッサ1310は、メモリ1320またはストレージデバイス1330に格納された命令を含む、コンピューティングデバイス1300内で実行する命令を処理して、高速インターフェース1340に連結されたディスプレイ1380のような外部入出力デバイス上のグラフィカルユーザインターフェース(GUI)にグラフィカル情報を表示することができる。他の実装形態では、多数のメモリおよびメモリの種類と共に、適宜、多数のプロセッサおよび/または多数のバスが使用され得る。また、多数のコンピューティングデバイス1300が接続されてもよく、各デバイスは、必要な動作の一部(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)を提供する。
【0051】
メモリ1320は、コンピューティングデバイス1300内に非一時的に情報を格納する。メモリ1320は、コンピュータ可読媒体、揮発性メモリユニット(複数可)、または不揮発性メモリユニット(複数可)でもよい。非一時的メモリ1320は、コンピューティングデバイス1300による使用のために、一時的にまたは永続的にプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理的なデバイスでもよい。不揮発性メモリの例には、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラマブル読み取り専用メモリ(PROM)/消去可能なプログラマブル読み取り専用メモリ(EPROM)/電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が含まれるが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、ならびにディスクまたはテープが含まれるが、これらに限定されない。
【0052】
ストレージデバイス1330は、コンピューティングデバイス1300に大容量ストレージを提供することができる。いくつかの実装形態では、ストレージデバイス1330は、コンピュータ可読媒体である。さまざまな異なる実装形態では、ストレージデバイス1330は、フロッピーディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイでもよい。追加的な実装形態では、コンピュータプログラム製品は、情報キャリアに有形に具現化される。コンピュータプログラム製品は、実行されると上述のような1つ以上の方法を実施する命令を含む。情報キャリアは、メモリ1320、ストレージデバイス1330、またはプロセッサ1310上のメモリのようなコンピュータまたは機械可読媒体である。
【0053】
高速コントローラ1340は、コンピューティングデバイス1300に対する帯域幅集約型の動作を管理し、一方、低速コントローラ1360は、低帯域幅集約型の動作を管理する。このような作業の割り当ては、例示的にすぎない。いくつかの実装形態では、高速コントローラ1340は、メモリ1320および各種拡張カード(図示せず)を受容し得る高速拡張ポート1350に連結される。いくつかの実装形態では、低速コントローラ1360は、ストレージデバイス1330および低速拡張ポート1390に連結される。さまざまな通信ポート(例えば、USB、Bluetooth、Ethernet、ワイヤレスEthernet)を含み得る低速拡張ポート1390は、キーボード、ポインティングデバイス、スキャナのような1つ以上の入出力デバイス、または例えば、ネットワークアダプタを介してスイッチもしくはルータのようなネットワーキングデバイスに連結されてもよい。
【0054】
本明細書に記載のシステムおよび技術のさまざまな実装形態は、デジタル電子および/もしくは光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組み合わせで実現することができる。これらのさまざまな実装形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、かつ、それらにデータおよび命令を送信するよう連結された専用または汎用であってもよい少なくとも1つのプログラマブルプロセッサを含む、プログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装形態を含み得る。
【0055】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られている)は、プログラマブルプロセッサ用の機械命令を含み、高レベルの手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/機械語で実装することができる。本明細書で使用する場合、「機械可読媒体」および「コンピュータ可読媒体」といった用語は、機械可読信号として機械命令を受信する機械可読媒体を含む、プログラマブルプロセッサに機械命令および/またはデータを提供するよう使用される、任意のコンピュータプログラム製品、非一時的コンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0056】
本明細書に記載のプロセスおよびロジックフローは、データ処理ハードウェアとも称される1つ以上のプログラマブルコンピュータが1つ以上のコンピュータプログラムを実行して、入力データを演算し、かつ出力を生成することで機能を実行することによって実施され得る。プロセスおよびロジックフローはまた、専用ロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施され得る。コンピュータプログラムの実行に好適なプロセッサには、例として、汎用および専用のマイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータのうちの任意の1つ以上のプロセッサが含まれる。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令および/またはデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。概して、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または大容量ストレージデバイスからデータを受信、もしくはデータを転送、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータは必ずしもそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに好適なコンピュータ可読媒体は、不揮発性メモリ、媒体、およびメモリデバイスの全ての形態を含み、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスクまたは取り外し可能ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクが含まれる。プロセッサおよびメモリは、専用ロジック回路によって補足され、またはそれに組み込まれ得る。
【0057】
いくつかの実装形態が説明された。それにもかかわらず、本開示の精神および範囲から逸脱することなく、さまざまな変更がなされてもよいことが理解されよう。したがって、他の実装形態も以下の特許請求の範囲内にある。