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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】足跡接触検出
(51)【国際特許分類】
   B25J 19/00 20060101AFI20231108BHJP
   B62D 57/032 20060101ALI20231108BHJP
【FI】
B25J19/00 Z
B62D57/032 Z
【請求項の数】 32
(21)【出願番号】P 2022502055
(86)(22)【出願日】2019-09-17
(65)【公表番号】
(43)【公表日】2022-10-17
(86)【国際出願番号】 US2019051535
(87)【国際公開番号】W WO2021025710
(87)【国際公開日】2021-02-11
【審査請求日】2022-03-11
(31)【優先権主張番号】16/573,579
(32)【優先日】2019-09-17
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/883,636
(32)【優先日】2019-08-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ホイットマン,エリック
(72)【発明者】
【氏名】クリピン,アレックス
【審査官】臼井 卓巳
(56)【参考文献】
【文献】特開2003-159674(JP,A)
【文献】特開2003-236781(JP,A)
【文献】特開2003-220583(JP,A)
【文献】欧州特許出願公開第02347867(EP,A1)
【文献】特開平04-152075(JP,A)
【文献】特開2006-167890(JP,A)
【文献】米国特許出願公開第2005/0080590(US,A1)
【文献】特開2019-107047(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 5/00-19/00
B62D 57/032
G06F 15/00
(57)【特許請求の範囲】
【請求項1】
方法(300)であって、
ロボット(100)のデータ処理ハードウェア(142)において、前記ロボット(100)の遊脚脚(120SW)の関節動態(134JD)を受信することであって、前記遊脚脚(120SW)が、前記ロボット(100)の歩行の遊脚相を実行する、前記関節動態(134JD)を受信することと、
前記データ処理ハードウェア(142)において、世界基準フレームに対する前記ロボット(100)の姿勢の評価を定義するオドメトリ(192)を受信することと、
前記データ処理ハードウェア(142)によって、前記遊脚脚(120SW)に対する予想外のトルクが、前記遊脚脚(120SW)に対する衝撃(202)に対応するかどうかを決定することと、
前記遊脚脚(120SW)に対する予想外のトルクが、前記衝撃(202)に対応するときには、
前記データ処理ハードウェア(142)によって、前記ロボット(100)の前記遊脚相の完了パーセントおよび前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記衝撃(202)が前記ロボット(100)の周りの地面(12)への前記遊脚脚(120SW)の着地を示しているかどうかを決定し、
前記衝撃(202)が前記遊脚脚(120SW)の前記着地を示さないときには、前記データ処理ハードウェア(142)によって、前記ロボット(100)の前記オドメトリ(192)および前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記衝撃(202)の原因を分類することと、を含む、方法(300)。
【請求項2】
前記データ処理ハードウェア(142)によって、前記衝撃(202)の前記分類された原因に基づいて、前記ロボット(100)の前記遊脚脚(120SW)の応答(204)を生成することをさらに含む、請求項1に記載の方法(300)。
【請求項3】
前記衝撃(202)が前記遊脚脚(120SW)の前記着地を示すとき、前記データ処理ハードウェア(142)によって、前記遊脚脚(120SW)の分類を、立脚脚(120ST)に変更することをさらに含む、請求項1または2に記載の方法(300)。
【請求項4】
前記衝撃(202)の前記原因がつまずきとして分類されたとき、前記それぞれの衝撃(202)に対する応答(204)として、前記遊脚脚(120SW)を上昇させることをさらに含む、請求項1~3のいずれか一項に記載の方法(300)。
【請求項5】
前記衝撃(202)の前記原因を分類することが、
前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記ロボット(100)の前記遊脚脚(120SW)の前記遊脚相の完了パーセントが遊脚相閾値を満たすことを決定することであって、前記遊脚相閾値は、前記遊脚脚(120SW)が前記遊脚相の初期にあることを示す、前記遊脚相の完了パーセントが遊脚相閾値を満たすことを決定することと、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、持ち上げこすりとして分類することと、を含み、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記持ち上げこすりとして分類することに応答して、前記遊脚脚(120SW)が、前記歩行の前記遊脚相を実行することを継続する、請求項1~4のいずれか一項に記載の方法(300)。
【請求項6】
前記衝撃(202)の前記原因を分類することが、
前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記遊脚脚(120SW)の股関節が事前決定された運動制限を超えることを決定することであって、前
記関節動態(134JD)が、前記地面(12)に対する前記股関節の外転-内転成分と、前記地面(12)に対する前記股関節の屈曲-伸展成分と、を含み、前記外転-内転成分が、前記屈曲-伸展成分の関数としての前記事前決定された運動制限を含む、前記股関節が前記事前決定された運動制限を超えることを決定することと、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記遊脚脚(120SW)が前記ロボット(100)のボディ(110)に接触したものとして分類することと、を含み、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記遊脚脚(120SW)が前記ロボット(100)の前記ボディ(110)に接触したものとして分類することに応答して、前記遊脚脚(120SW)が、前記歩行の前記遊脚相を実行することを継続する、請求項1~5のいずれか一項に記載の方法(300)。
【請求項7】
前記衝撃(202)の前記原因を分類することが、
対側脚(120CL)までの前記遊脚脚(120SW)の第1の最接近点と、前記遊脚脚(120SW)までの前記対側脚(120CL)の第2の最接近点との間のベクトル距離が、前記遊脚脚(120SW)が前記対側脚(120CL)と交差したことを示すことを決定することと、
前記遊脚脚(120SW)の遠位端(124)が、前記対側脚(120CL)のそれぞれの遠位端(124)と交差したことを決定することと、
前記遊脚脚(120SW)の第1の膝関節が、前記対側脚(120CL)の第2の膝関節と交差したことを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす状態を、前記遊脚脚(120SW)が前記ロボット(100)の前記対側脚(120CL)と交差したものとして分類することと、
前記ロボット(100)の前記対側脚(120CL)と交差解除するために、前記遊脚脚(120SW)を移動させることと、を含む、請求項1~6のいずれか一項に記載の方法(300)。
【請求項8】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120 SW )の前記状態を分類することが、
前記遊脚脚(120SW)が、前記ロボット(100)の対側脚(120CL)の近傍に位置決めされたことを決定することと、
前記それぞれの衝撃(202)に対応する前記予想外のトルクが、主に、前記遊脚脚(120SW)の股関節の外側成分からの関節動態(134JD)から生じることを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす前記状態を、交差解除された対側脚(120CL)衝撃(202)として分類することと、
前記遊脚脚(120SW)を前記ロボット(100)の矢状平面から離れる方向に移動させることと、をさらに含む、請求項7に記載の方法(300)。
【請求項9】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120 SW )の前記状態を分類することが、
前記遊脚脚(120SW)の膝が、前記遊脚相中に後方に移動していることを決定することと、
前記それぞれの衝撃(202)に対応する前記予想外のトルクをもたらす前記関節動態(134JD)が、前記遊脚脚(120SW)の膝トルクと前記遊脚脚(120SW)の股関節の周りの内転-外転トルクとの両方よりも大きい前記遊脚脚(120SW)の股関節の周りの屈曲-伸展トルクを含むことを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)
を引き起こす前記状態を、前記遊脚脚(120SW)の前記膝が前記ロボット(100)のボディ(110)の後ろの地形に接触したものとして分類することと、
前記遊脚脚(120SW)の前記膝を、前記ロボット(100)の前記ボディ(110)に対して前方にシフトさせることと、をさらに含む、請求項に記載の方法(300)。
【請求項10】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120SW)の前記状態を分類することが、
前記遊脚脚(120SW)の膝が知覚された地面(12)に近接していることを決定することであって、前記膝が、前記ロボット(100)のボディ(110)に対して前方に移動し、前記知覚された地面(12)が、前記ロボット(100)に関するセンサー(132)データによって定義される、前記膝が知覚された地面(12)に近接していることを決定することと、
前記遊脚脚(120SW)の前記膝が、前記遊脚脚(120SW)の遠位端(124)よりも前記知覚された地面(12)に近いことを決定することと、
前記それぞれの衝撃(202)に対応する前記予想外のトルクが、前記遊脚脚(120SW)の股関節において発生することを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす前記状態を、前記遊脚脚(120SW)の前記膝が前記ロボット(100)の前記ボディ(110)の下にある地形に接触したものとして分類することと、
前記遊脚脚(120SW)の前記膝が前記ロボット(100)の前記ボディ(110)の下にある地形に接触したことに応答(204)することなく、前記遊脚脚(120SW)の移動を継続することと、をさらに含む、請求項に記載の方法(300)。
【請求項11】
前記ロボット(100)の前記遊脚脚(120SW)に対する前記予想外のトルクが前記遊脚脚(120SW)に対する前記衝撃(202)に対応するかどうかを決定することが、前記予想外のトルクが衝撃(202)検出閾値を満たすかどうかを決定することを含み、前記衝撃(202)検出閾値が、既知の衝撃(202)に対応するトルクの大きさを含む、請求項1~10のいずれか一項に記載の方法(300)。
【請求項12】
前記データ処理ハードウェア(142)によって、
前記ロボット(100)の周りの関節トルクセンサ(132)によって測定された測定トルクと、
重力によって引き起こされるそれぞれのトルクを表す第1の予想内のトルクと、
前記ロボット(100)の前記遊脚脚(120SW)を加速させるための対応するトルクを表す第2の予想内のトルクと、に基づいて、前記遊脚脚(120SW)に対する前記予想外のトルクを決定することをさらに含む、請求項1~11のいずれか一項に記載の方法(300)。
【請求項13】
前記ロボット(100)の前記遊脚脚(120SW)の関節が、前記関節の可動域の制限であるときに、前記データ処理ハードウェア(142)によって、前記予想外のトルクが、前記遊脚相中の前記遊脚脚(120SW)に対する前記衝撃(202)を示さないことを決定することをさらに含む、請求項1~12のいずれか一項に記載の方法(300)。
【請求項14】
前記遊脚脚(120SW)に対する前記予想外のトルクが前記遊脚脚(120SW)に対する前記衝撃(202)に対応するかどうかを決定することが、前記遊脚脚(120SW)に対する前記予想外のトルクが前記衝撃(202)トルクに対応しており、前記衝撃(202)トルクが前記遊脚脚(120SW)の関節の運動に対抗することを決定するこ
とを含む、請求項1~13のいずれか一項に記載の方法(300)。
【請求項15】
前記遊脚脚(120SW)の前記関節動態(134JD)が、前記遊脚脚(120SW)の膝関節の関節動態(134JD)と、前記遊脚脚(120SW)の股関節の関節動態(134JD)と、に対応する、請求項1~14のいずれか一項に記載の方法(300)。
【請求項16】
前記股関節の前記関節動態(134JD)が、前記遊脚脚(120SW)を外転または内転させる外転-内転トルクと、前記遊脚脚(120SW)を屈曲または伸展させる屈曲-伸展トルクと、を含む、請求項15に記載の方法(300)。
【請求項17】
ロボット(100)であって、
ボディ(110)と、
前記ボディ(110)に結合され、環境(10)を昇降するように構成された2つ以上の脚(120)であって、遊脚脚(120SW)を備える、2つ以上の脚(120)と、
前記2つ以上の脚(120)と通信する制御システム(170)と、を備え、
前記制御システム(170)が、データ処理ハードウェア(142)と、前記データ処理ハードウェア(142)と通信するメモリハードウェア(144)と、を備え、前記メモリハードウェア(144)が、前記データ処理ハードウェア(142)上で実行されたときに、前記データ処理ハードウェア(142)に、
前記ロボット(100)の遊脚脚(120SW)の関節動態(134JD)を受信することであって、前記遊脚脚(120SW)が、前記ロボット(100)の歩行の遊脚相を実行する、前記関節動態(134JD)を受信することと、
世界基準フレームに対する前記ロボット(100)の姿勢の評価を定義するオドメトリ(192)を受信することと、
前記遊脚脚(120SW)に対する予想外のトルクが、前記遊脚脚(120SW)に対する衝撃(202)に対応するかどうかを決定することと、
前記遊脚脚(120SW)に対する前記予想外のトルクが、前記衝撃(202)に対応するとき、
前記ロボット(100)の前記遊脚相の完了パーセントおよび前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記衝撃(202)が前記ロボット(100)の周りの地面(12)における前記遊脚脚(120SW)の着地を示すかどうかを決定すること、ならびに
前記衝撃(202)が前記遊脚脚(120SW)の前記着地を示さないときには、前記ロボット(100)の前記オドメトリ(192)および前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記衝撃(202)の原因を分類することと、を含む動作を実行させる命令を格納している、ロボット(100)。
【請求項18】
前記動作が、前記衝撃(202)の前記分類された原因に基づいて、前記ロボット(100)の前記遊脚脚(120SW)の応答(204)を生成することをさらに含む、請求項17に記載のロボット(100)。
【請求項19】
前記動作は、前記衝撃(202)が前記遊脚脚(120SW)の前記着地を示すとき、前記データ処理ハードウェア(142)によって、前記遊脚脚(120SW)の分類を立脚脚(120ST)に変更することをさらに含む、請求項17または18に記載のロボット(100)。
【請求項20】
前記動作は、前記衝撃(202)の前記原因がつまずきとして分類されたとき、前記それぞれの衝撃(202)に対する応答(204)として、前記遊脚脚(120SW)を上昇させることをさらに含む、請求項17~19のいずれか一項に記載のロボット(100)。
【請求項21】
前記衝撃(202)の前記原因を分類することが、
前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記ロボット(100)の前記遊脚脚(120SW)の前記遊脚相の完了パーセントが遊脚相閾値を満たすことを決定することであって、前記遊脚相閾値は、前記遊脚脚(120SW)が前記遊脚相の初期にあることを示す、前記遊脚相の完了パーセントが遊脚相閾値を満たすことを決定することと、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、持ち上げこすりとして分類することと、を含み、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記持ち上げこすりとして分類することに応答して、前記遊脚脚(120SW)が、前記歩行の前記遊脚相を実行することを継続する、請求項17~20のいずれか一項に記載のロボット(100)。
【請求項22】
前記衝撃(202)の前記原因を分類することが、
前記遊脚脚(120SW)の前記関節動態(134JD)に基づいて、前記遊脚脚(120SW)の股関節が事前決定された運動制限を超えることを決定することであって、前記関節動態(134JD)が、前記地面(12)に対する前記股関節の外転-内転成分と、前記地面(12)に対する前記股関節の屈曲-伸展成分と、を含み、前記外転-内転成分が、前記屈曲-伸展成分の関数としての前記事前決定された運動制限を含む、前記股関節が前記事前決定された運動制限を超えることを決定することと、
前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記遊脚脚(120SW)が前記ロボット(100)のボディ(110)に接触したものとして分類することと、を含み、
前記遊脚脚(120SW)が、前記遊脚脚(120SW)に対する前記衝撃(202)の前記原因を、前記遊脚脚(120SW)が前記ロボット(100)の前記ボディ(110)に接触したものとして分類することに応じて、前記歩行の前記遊脚相を実行することを継続する、請求項17~21のいずれか一項に記載のロボット(100)。
【請求項23】
前記衝撃(202)の前記原因を分類することが、
対側脚(120CL)までの前記遊脚脚(120SW)の第1の最接近点と、前記遊脚脚(120SW)までの前記対側脚(120CL)の第2の最接近点との間のベクトル距離が、前記遊脚脚(120SW)が前記対側脚(120CL)と交差したことを示すことを決定することと、
前記遊脚脚(120SW)の遠位端(124)が、前記対側脚(120CL)のそれぞれの遠位端(124)と交差したことを決定することと、
前記遊脚脚(120SW)の第1の膝関節が、前記対側脚(120CL)の第2の膝関節と交差したことを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす状態を、前記遊脚脚(120SW)が前記ロボット(100)の前記対側脚(120CL)と交差したものとして分類することと、
前記ロボット(100)の前記対側脚(120CL)と交差解除するために、前記遊脚脚(120SW)を移動させることと、を含む、請求項17~22のいずれか一項に記載のロボット(100)。
【請求項24】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120 SW )の前記状態を分類することが、
前記遊脚脚(120SW)が、前記ロボット(100)の対側脚(120CL)の近傍に位置決めされたことを決定することと、
前記それぞれの衝撃(202)に対応する前記トルクが、主に、前記遊脚脚(120SW)の股関節の外側成分からの関節動態(134JD)から生じることを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす前記状態を、交差解除された対側脚(120CL)衝撃(202)として分類することと、
前記遊脚脚(120SW)を前記ロボット(100)の矢状平面から離れる方向に移動させることと、をさらに含む、請求項23に記載のロボット(100)。
【請求項25】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120 SW )の前記状態を分類することが、
前記遊脚脚(120SW)の膝が、前記遊脚相中に後方に移動していることを決定することと、
前記それぞれの衝撃(202)に対応する前記予想外のトルクをもたらす前記関節動態(134JD)が、前記遊脚脚(120SW)の膝トルクと前記遊脚脚(120SW)の股関節の周りの内転-外転トルクとの両方よりも大きい前記遊脚脚(120SW)の股関節の周りの屈曲-伸展トルクを含むことを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす前記状態を、前記遊脚脚(120SW)の前記膝が前記ロボット(100)のボディ(110)の後ろの地形に接触したものとして分類することと、
前記遊脚脚(120SW)の前記膝を、前記ロボット(100)の前記ボディ(110)に対して前方にシフトさせることと、をさらに含む、請求項23に記載のロボット(100)。
【請求項26】
前記それぞれの衝撃(202)に対応する前記ロボット(100)の前記遊脚脚(120 SW )の前記状態を分類することが、
前記遊脚脚(120SW)の膝が知覚された地面(12)に近接していることを決定することであって、前記膝が、前記ロボット(100)のボディ(110)に対して前方に移動しており、前記知覚された地面(12)が、前記ロボット(100)に関するセンサー(132)データによって定義される、前記膝が知覚された地面(12)に近接していることを決定することと、
前記遊脚脚(120SW)の前記膝が、前記遊脚脚(120SW)の遠位端(124)よりも前記知覚された地面(12)に近いことを決定することと、
前記それぞれの衝撃(202)に対応する前記予想外のトルクが、前記遊脚脚(120SW)の股関節において発生することを決定することと、
前記ロボット(100)の前記遊脚脚(120SW)の前記それぞれの衝撃(202)を引き起こす前記状態を、前記遊脚脚(120SW)の前記膝が前記ロボット(100)の前記ボディ(110)の下にある地形に接触したものとして分類することと、
前記遊脚脚(120SW)の前記膝が前記ロボット(100)の前記ボディ(110)の下にある地形に接触したことに応答(204)することなく、前記遊脚脚(120SW)の移動を継続することと、をさらに含む、請求項23に記載のロボット(100)。
【請求項27】
前記ロボット(100)の前記遊脚脚(120SW)に対する前記予想外のトルクが前記遊脚脚(120SW)に対する前記衝撃(202)に対応するかどうかを決定することが、前記予想外のトルクが衝撃(202)検出閾値を満たすかどうかを決定することを含み、前記衝撃(202)検出閾値が、既知の衝撃(202)に対応するトルクの大きさを含む、請求項17~26のいずれか一項に記載のロボット(100)。
【請求項28】
前記動作が、
前記ロボット(100)の周りの関節トルクセンサー(132)によって測定された測定トルクと、
重力によって引き起こされるそれぞれのトルクを表す第1の予想内のトルクと、
前記ロボット(100)の前記遊脚脚(120SW)を加速させるための対応するトルクを表す第2の予想内のトルクと、に基づいて、前記遊脚脚(120SW)に対する前記予想外のトルクを決定することをさらに含む、請求項17~27のいずれか一項に記載のロボット(100)。
【請求項29】
前記動作が、前記ロボット(100)の前記遊脚脚(120SW)の関節が、前記関節の可動域に対する制限であるときに、前記予想外のトルクが、前記遊脚相中の前記遊脚脚(120SW)に対する前記衝撃(202)を示さないことを決定することをさらに含む、請求項17~28のいずれか一項に記載のロボット(100)。
【請求項30】
前記遊脚脚(120SW)に対する前記予想外のトルクが前記遊脚脚(120SW)に対する前記衝撃(202)に対応するかどうかを決定することが、前記遊脚脚(120SW)に対する前記予想外のトルクが衝撃(202)トルクに対応することを決定することを含み、前記衝撃(202)トルクが、前記遊脚脚(120SW)の関節の運動に対抗している、請求項17~29のいずれか一項に記載のロボット(100)。
【請求項31】
前記遊脚脚(120SW)の前記関節動態(134JD)が、前記遊脚脚(120SW)の膝関節の関節動態(134JD)、および前記遊脚脚(120SW)の股関節の関節動態(134JD)に対応する、請求項17~30のいずれか一項に記載のロボット(100)。
【請求項32】
前記股関節の前記関節動態(134JD)が、前記遊脚脚(120SW)を外転または内転させる外転-内転トルクと、前記遊脚脚(120SW)を屈曲または伸展させる屈曲-伸展トルクと、を含む、請求項31に記載のロボット(100)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、足跡接触検出に関する。
【背景技術】
【0002】
ロボットは、一般に、タスクを実行するために、可変のプログラムされた動作を介して材料、部品、ツール、または特殊なデバイスを移動するように設計された再プログラム可能な多機能マニピュレータとして定義される。ロボットは、物理的に固定されたマニピュレータ(例えば、産業用ロボットアーム)、(例えば、脚、車輪、もしくは牽引ベースのメカニズムを使用して)環境全体を移動する移動ロボット、またはマニピュレータと移動ロボットとの何らかの組み合わせであり得る。ロボットは、例えば、製造、輸送、危険な環境、探査、およびヘルスケアを含む、様々な産業で利用される。このように、調整された脚の動きの様々な手段を必要とする障害物または特徴を備えた環境を昇降するロボットの能力は、そのような産業に追加の利益を提供する。
【発明の概要】
【0003】
本開示の一態様は、足跡接触検出のための方法を提供する。この方法は、ロボットのデータ処理ハードウェアにおいて、ロボットの遊脚脚の関節動態を受信することを含む。遊脚脚は、ロボットの歩行の遊脚相を実行する。本方法はまた、データ処理ハードウェアにおいて、世界基準フレームに対するロボットの姿勢の評価を定義するオドメトリを受信することも含む。本方法は、データ処理ハードウェアによって、遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することをさらに含む。遊脚脚に対する予想外のトルクが衝撃に対応するとき、本方法は、データ処理ハードウェアによって、ロボットのオドメトリおよび遊脚脚の関節動態に基づいて、衝撃がロボットの周りの地面への遊脚脚の着地を示すかどうかを決定することを含む。衝撃が遊脚脚の着地を示さないときには、本方法は、データ処理ハードウェアによって、ロボットのオドメトリおよび遊脚脚の関節動態に基づいて衝撃の原因を分類することを含む。
【0004】
本開示の実装形態は、以下の任意選択の特徴のうちの1つ以上を含み得る。いくつかの実装例では、本方法は、データ処理ハードウェアによって、衝撃の分類された原因に基づいて、ロボットの遊脚脚の応答を生成することを含む。衝撃が遊脚脚の着地を示すとき、本方法は、データ処理ハードウェアによって、遊脚脚の分類を立脚脚に変更することを含み得る。本方法は、衝撃の原因がつまずきとして分類されるとき、それぞれの衝撃に対する応答として遊脚脚を上昇させることを含み得る。
【0005】
いくつかの例では、衝撃の原因を分類することは、遊脚脚の関節動態に基づいて、ロボットの遊脚脚の遊脚相の完了パーセントが、遊脚相閾値を満たすことを決定することを含み、遊脚相閾値は、遊脚脚が遊脚相の初期にあることを示す。この例では、衝撃の原因を分類することにはまた、遊脚脚に対する衝撃の原因を持ち上げこすりとして分類することも含む。ここで、遊脚脚は、遊脚脚に対する衝撃の原因を持ち上げこすりとして分類することに応答して、歩行の遊脚相を実行することを継続する。
【0006】
いくつかの構成では、衝撃の原因を分類することは、脚脚の関節動態に基づいて、遊脚脚の股関節が事前決定された運動制限を超えることを決定することを含む。ここで、関節動態は、地面に対する股関節の外転-内転成分と、地面に対する股関節の屈曲-伸展成分と、を含み、外転-内転成分は、屈曲-伸展成分の関数としての事前決定された運動制限を含む。この構成では、衝撃の原因を分類することはまた、遊脚脚に対する衝撃の原因を、遊脚脚がロボットのボディに接触したものとして分類することも含む。遊脚脚に対する衝撃の原因を、遊脚脚がロボットのボディに接触したものとして分類することに応答して、遊脚脚は、歩行の遊脚相を実行することを継続する。
【0007】
いくつかの実装例では、衝撃の原因を分類することは、対側脚までの遊脚脚の第1の最接近点と、遊脚脚までの対側脚の第2の最接近点との間のベクトル距離が、遊脚脚が対側脚と交差したことを示すことを決定することを含む。ここで、衝撃の原因を分類することはまた、遊脚脚の遠位端が、対側脚のそれぞれの遠位端と交差したことを決定することと、遊脚脚の第1の膝関節が、対側脚の第2の膝関節と交差したことを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚がロボットの対側脚と交差したものとして分類することと、ロボットの対側脚と交差解除するために、遊脚脚を移動させることと、も含む。
【0008】
いくつかの例では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚が、ロボットの対側脚の近傍に位置決めされたことを決定することと、それぞれの衝撃に対応するトルクが、主に、遊脚脚の股関節の外側成分からの関節動態から生じることを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、交差解除された対側脚衝撃として分類することと、遊脚脚をロボットの矢状平面から離れる方向に移動させることと、を含む。
【0009】
いくつかの構成では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚の膝が、遊脚相中に後方に移動していることを決定することと、それぞれの衝撃に対応する予想外のトルクをもたらす関節動態が、遊脚脚の膝トルクと遊脚脚の股関節の周りの内転-外転トルクとの両方よりも大きい遊脚脚の股関節の周りの屈曲-伸展トルクを含むことを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚の膝がロボットのボディの後ろの地形に接触したものとして分類することと、遊脚脚の膝を、ロボットのボディに対して前方にシフトさせることと、を含む。
【0010】
いくつかの実装例では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚の膝が知覚された地面に近接していることを決定することを含み、膝は、ロボットのボディに対して前方に移動し、知覚された地面は、ロボットに関するセンサーデータによって定義される。この実装例では、それぞれの衝撃に対応するロボットの脚の状態を分類することにはまた、遊脚脚の膝が、遊脚脚の遠位端よりも知覚された地面に近いことを決定することと、それぞれの衝撃に対応する予想外のトルクが、遊脚脚の股関節において発生することを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚の膝がロボットのボディの下にある地形に接触したものとして分類することと、遊脚脚の膝がロボットのボディの下にある地形に接触したことに応答することなく、遊脚脚の移動を継続することと、も含む。
【0011】
いくつかの例では、ロボットの遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することが、予想外のトルクが衝撃検出閾値を満たすかどうかを決定することを含み、衝撃検出閾値は、既知の衝撃に対応するトルクの大きさを含む。他の例では、データ処理ハードウェアによって、遊脚脚に対する予想外のトルクを決定することは、ロボットの周りの関節トルクセンサーによって測定された測定トルクと、重力によって引き起こされるそれぞれのトルクを表す第1の予想内のトルクと、ロボットの遊脚脚を加速させるための対応するトルクを表す第2の予想内のトルクと、の間の差に基づいている。
【0012】
いくつかの構成では、ロボットの遊脚脚の関節が、関節の可動域の制限に近接しているときに、本方法は、データ処理ハードウェアによって、予想外のトルクが、遊脚相中の遊脚脚に対する衝撃を示さないことを決定することを含む。遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することは、遊脚脚に対する予想外のトルクが衝撃トルクに対応しており、衝撃トルクが遊脚脚の関節の運動に対抗することを決定することを含む。
【0013】
いくつかの実装例では、遊脚脚の関節動態は、遊脚脚の膝関節の関節動態および遊脚脚の股関節の関節動態に対応する。股関節の関節動態は、遊脚脚を外転または内転させる外転-内転トルクと、遊脚脚を屈曲または伸展させる屈曲-伸展トルクと、を含み得る。
【0014】
本開示の別の態様は、足跡接触検出を実行するように構成されたロボットを提供する。ロボットは、ボディと、ボディに結合され、環境を昇降するように構成された2つ以上の脚と、を含む。2つ以上の脚は、遊脚脚を含む。ロボットはまた、2つ以上の脚と通信する制御システムを含み、制御システムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアと、も含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる命令を格納する。動作は、ロボットの遊脚脚の関節動態を受信することを含む。遊脚脚は、ロボットの歩行の遊脚相を実行する。動作はまた、世界基準フレームに対するロボットの姿勢の評価を定義するオドメトリを受信することも含む。動作は、遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することをさらに含む。遊脚脚に対する予想外のトルクが衝撃に対応するとき、本動作は、ロボットのオドメトリおよび遊脚脚の関節動態に基づいて、衝撃がロボットの周りの地面への遊脚脚の着地を示すかどうかを決定することを含む。衝撃が遊脚脚の着地を示さないときには、本動作は、ロボットのオドメトリおよび遊脚脚の関節動態に基づいて衝撃の原因を分類することを含む。
【0015】
本開示の実装形態は、以下の任意選択の特徴のうちの1つ以上を含み得る。いくつかの実装例では、本動作は、衝撃の分類された原因に基づいて、ロボットの遊脚脚の応答を生成することを含む。衝撃が遊脚脚の着地を示すとき、本動作は、遊脚脚の分類を立脚脚に変更することを含み得る。本動作は、衝撃の原因がつまずきとして分類されるとき、それぞれの衝撃に対する応答として遊脚脚を上昇させることを含み得る。
【0016】
いくつかの例では、衝撃の原因を分類することは、遊脚脚の関節動態に基づいて、ロボットの遊脚脚の遊脚相の完了パーセントが、遊脚相の閾値を満たすことを決定することを含む。ここで、遊脚相の閾値は、遊脚脚が遊脚相の初期にあることを示す。この例では、衝撃の原因を分類することにはまた、遊脚脚に対する衝撃の原因を持ち上げこすりとして分類することも含む。ここで、遊脚脚は、遊脚脚に対する衝撃の原因を持ち上げこすりとして分類することに応答して、歩行の遊脚相を実行することを継続する。
【0017】
いくつかの構成では、衝撃の原因を分類することは、脚脚の関節動態に基づいて、遊脚脚の股関節が事前決定された運動制限を超えることを決定することを含む。ここで、関節動態は、地面に対する股関節の外転-内転成分と、地面に対する股関節の屈曲-伸展成分と、を含み、外転-内転成分は、屈曲-伸展成分の関数としての事前決定された運動制限を含む。この構成では、衝撃の原因を分類することはまた、遊脚脚に対する衝撃の原因を、遊脚脚がロボットのボディに接触したものとして分類することも含む。遊脚脚に対する衝撃の原因を、遊脚脚がロボットのボディに接触したものとして分類することに応答して、遊脚脚は、歩行の遊脚相を実行することを継続する。
【0018】
いくつかの実装例では、衝撃の原因を分類することは、対側脚までの遊脚脚の第1の最接近点と、遊脚脚までの対側脚の第2の最接近点との間のベクトル距離が、遊脚脚が対側脚と交差したことを示すことを決定することを含む。ここで、衝撃の原因を分類することはまた、遊脚脚の遠位端が、対側脚のそれぞれの遠位端と交差したことを決定することと、遊脚脚の第1の膝関節が、対側脚の第2の膝関節と交差したことを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚がロボットの対側脚と交差したものとして分類することと、ロボットの対側脚と交差解除するために、遊脚脚を移動させることと、も含む。
【0019】
いくつかの例では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚が、ロボットの対側脚の近傍に位置決めされたことを決定することと、それぞれの衝撃に対応するトルクが、主に、遊脚脚の股関節の外側成分からの関節動態から生じることを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、交差解除された対側脚衝撃として分類することと、遊脚脚をロボットの矢状平面から離れる方向に移動させることと、を含む。
【0020】
いくつかの構成では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚の膝が、遊脚相中に後方に移動していることを決定することと、それぞれの衝撃に対応する予想外のトルクをもたらす関節動態が、遊脚脚の膝トルクと遊脚脚の股関節の周りの内転-外転トルクとの両方よりも大きい遊脚脚の股関節の周りの屈曲-伸展トルクを含むことを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚の膝がロボットのボディの後ろの地形に接触したものとして分類することと、遊脚脚の膝を、ロボットのボディに対して前方にシフトさせることと、を含む。
【0021】
いくつかの実装例では、それぞれの衝撃に対応するロボットの脚の状態を分類することは、遊脚脚の膝が知覚された地面に近接していることを決定することを含み、膝は、ロボットのボディに対して前方に移動し、知覚された地面は、ロボットに関するセンサーデータによって定義される。この実装では、それぞれの衝撃に対応するロボットの脚の状態を分類することにはまた、遊脚脚の膝が、遊脚脚の遠位端よりも知覚された地面に近いことを決定することと、それぞれの衝撃に対応する予想外のトルクが、遊脚脚の股関節において発生することを決定することと、ロボットの遊脚脚のそれぞれの衝撃を引き起こす状態を、遊脚脚の膝がロボットのボディの下にある地形に接触したものとして分類することと、遊脚脚の膝がロボットのボディの下にある地形に接触したことに応答することなく、遊脚脚の移動を継続することと、も含む。
【0022】
いくつかの例では、ロボットの遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することが、予想外のトルクが衝撃検出閾値を満たすかどうかを決定することを含み、衝撃検出閾値は、既知の衝撃に対応するトルクの大きさを含む。他の例では、遊脚脚に対する予想外のトルクを決定することは、ロボットの周りの関節トルクセンサーによって測定された測定トルクと、重力によって引き起こされるそれぞれのトルクを表す第1の予想内のトルクと、ロボットの遊脚脚を加速させるための対応するトルクを表す第2の予想内のトルクと、の間の差に基づいている。
【0023】
いくつかの構成では、ロボットの遊脚脚の関節が、関節の可動域の制限に近接しているときに、本動作は、予想外のトルクが、遊脚相中の遊脚脚に対する衝撃を示さないことを決定することを含む。遊脚脚に対する予想外のトルクが遊脚脚に対する衝撃に対応するかどうかを決定することは、遊脚脚に対する予想外のトルクが衝撃トルクに対応しており、衝撃トルクが遊脚脚の関節の運動に対抗することを決定することを含む。
【0024】
いくつかの実装例では、遊脚脚の関節動態は、遊脚脚の膝関節の関節動態および遊脚脚の股関節の関節動態に対応する。股関節の関節動態は、遊脚脚を外転または内転させる外転-内転トルクと、遊脚脚を屈曲または伸展させる屈曲-伸展トルクと、を含み得る。
【0025】
本開示の1つ以上の実装例の詳細が、添付図面および以下の説明において記述される。他の態様、特徴、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0026】
図1A】ロボット環境内の例示的なロボットの概略図である。
図1B図1Aのロボットのシステムの例示的なシステムの概略図である。
図2A図1Aのロボットのシステムの例示的な衝撃検出システムの概略図である。
図2B図1Aのロボットの衝撃検出システムによる衝撃検出時の例示的な遊脚脚の概略図である。
図2C図1Aのロボットの衝撃検出システムによる衝撃検出時の例示的な遊脚脚の概略図である。
図2D図1Aのロボットの衝撃検出システムによる衝撃検出時の例示的な遊脚脚の概略図である。
図2E図1Aのロボットの衝撃検出システムによる衝撃検出時の例示的な遊脚脚の概略図である。
図2F図1Aのロボットのシステムの例示的な衝撃検出システムの概略図である。
図2G図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図2H図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図2I図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図2J図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図2K図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図2L図1Aのロボットが経験する例示的な衝撃状態の斜視図である。
図3】ロボットの周りの環境に対する衝撃を検出するための例示的な動作の構成である。
図4】本明細書に記載のシステムおよび方法を実施するために使用され得る例示的なコンピューティングデバイスの概略図である。
【0027】
様々な図面中の同様の参照記号は、同様の要素を示す。
【発明を実施するための形態】
【0028】
ロボットが環境の周りで動くときに、ロボットの様々なシステムがロボットと通信して、どこに足を踏み入れるか(例えば、脚の足配置)、ロボットの脚をどのように動かすか(例えば、遊脚軌道)、障害物どのように回避するか、バランスをどのように維持するかなどを指示する。ロボットの移動のより重要な側面のうちの1つは、ロボットとその環境との関係を理解することである。例えば、1つの側面は、ロボットの構造がそれ自体または環境内の物体(例えば、環境の牽引面)とどのように相互作用するかを理解することである移動中のこれらの相互作用は、環境だけでなく、ロボットの特性(例えば、速度、歩行、位置)によっても異なる。ロボットのこれらの関係を理解するために、ロボットは衝撃検出および/または衝撃反応のための様々な技術を使用する。
【0029】
脚式ロボットでは、ロボットの脚が牽引面(例えば、地面)に接触したことを正確に検出することが重要な場合がある。例えば、ロボットの脚が地面に接触した(すなわち、着地した)が、ロボットが脚の着地を検出しなかったとき、ロボットはこの脚を下方に移動させ続け、基本的に脚を地面に押し付けようとする。ここで、脚を下方に移動させ続けると、ロボットは脚に作用する地面からの垂直方向の力を経験する。問題なのは、この垂直方向の力がロボットのバランスを崩し、場合によっては、ロボットを転倒させる(例えば、ひっくり返す)可能性があることである。ロボットが着地を検出するのが遅れると、ロボットは予想よりも大きな衝撃を経験するため、ロボットの横方向の安定性に影響を与える。言い換えれば、ロボットは実際に発生するときの接地衝撃を予測しない。したがって、ロボットはそのような衝撃を考慮しないか、または適切にバランスをとることができない。
【0030】
ロボットは、着地を正確に検出するだけでなく、衝撃検出を使用してつまずきも検出する。つまずきとは、一般的にロボットの歩行の中断を指す。言い換えれば、ロボットは計画された移動軌道(例えば、歩行コントローラに基づく)を有することがあるが、何らかの物体、環境の要素、またはロボット自体との接触のためにつまずくことがある。つまずきと牽引面接触(例えば、脚の着地)との両方について、そのような状態を検出するだけでなく、そのような状態を検出および/またはそれに応答するのにかかる時間を最小化することも有利である可能性がある。多くの場合、つまずきでは、ロボットがつまずきを検出する速度が速いほど、ロボットがつまずきから経験する力(または回転)は少なくなる。さらに、つまずきが検出される速度と、ロボットがつまずき状態を克服する(例えば、安定するかまたは運動を継続する)可能性との間には比例関係がある場合がある。言い換えれば、つまずきを迅速に検出することにより、ロボットのシステムがつまずきに迅速に反応および/または応答できる可能性がある。したがって、つまずき検出は、環境の周りで移動する間のロボットの中断を最小化することを目的としている。
【0031】
図1Aを参照すると、ロボット100は、ロボット100がロボット環境10の周りで移動することを可能にするボディ110に結合された脚120a~dなどの歩行運動ベースの構造体を備えたボディ110を含む。いくつかの例では、各脚120は、1つ以上の関節Jが脚120の部材122が移動することを可能にするような関節運動可能な構造である。例えば、各脚120は、脚120の上側部材122、122をボディ110に結合する股関節Jと、脚120の上側部材122を脚120の下側部材122に結合する膝関節Jと、を含む。衝撃検出のために、股関節Jは、ロボット100の正面平面(すなわち、x方向の軸Aおよびz方向の軸Aの方向に延びるX-Z平面)に発生するための「JHx」と指定される股関節Jの外転-内転回転と、ロボット100の矢状平面(すなわち、y方向の軸Aおよびz方向の軸Aの方向に延びるY-Z平面)に発生するための「JHy」と指定される股関節Jの屈曲-伸展回転と、にさらに分割されてもよい。図1Aは、4つの脚120a~dを有する四足歩行ロボットを示すが、ロボット100は、環境10内の地形を昇降するための手段を提供する任意の数の脚または歩行運動ベースの構造体(例えば、2つの脚を有する二足歩行もしくはヒト型ロボット)を含み得る。
【0032】
地形を昇降するために、各脚120は、地形の表面(すなわち、牽引面)に接触している遠位端124を有する。言い換えれば、脚120の遠位端124は、ロボット100の移動中に枢動、据え付け、または概して静止摩擦を提供するためにロボット100によって使用される脚120の端部である。例えば、脚120の遠位端124は、ロボット100の足に対応する。図示されていないが、いくつかの例では、脚120の遠位端124は、遠位端124が脚120の下側部材122に対して関節運動可能であるように、足首関節Jを含む。
【0033】
ロボット100は、重力の方向に沿った垂直方向の軸(例えば、z方向の軸Aとして示される)と、ロボット100の分布質量の重み付けされた相対位置が合計してゼロとなる点である質量の中心CMと、を有する。さらに、ロボット100は、垂直方向の重力軸A(すなわち、重力に対して固定された基準フレーム)に対するCMに基づいたポーズPを有し、ロボット100によってとられる特定の姿勢またはスタンスを定義する。ロボット100の姿勢は、空間におけるロボット100の配向または角度位置によって定義され得る。ボディ110に対する脚部120による動きにより、ロボット100のポーズP(すなわち、ロボットのCMの位置とロボット100の姿勢または配向の組み合わせ)が変更される。ここで、高さは一般的にz方向に沿った距離を指す。ロボット100の矢状平面は、y方向の軸Aおよびz方向の軸Aの方向に延びるY-Z平面に対応する。言い換えれば、矢状平面はロボット100を左右に二等分する。矢状平面と略垂直であるように、x方向の軸Aおよびy方向の軸Aの方向に延びるX-Y平面上には、地上平面(横断平面とも称される)が設けられている。地面平面は、ロボット100の脚120の遠位端124が、ロボット100が環境10の周りで移動するのを助けるために牽引力を生成することができる地上平面12を指す。ロボット100の別の解剖学的平面は、ロボット100のボディ110にわたって(例えば、第1の脚120aを備えたロボット100の左側から、第2の脚120bを備えたロボット100の右側まで)延びる正面平面である。正面平面は、x方向の軸Aおよびz方向の軸Aの方向に延びることによって、X-Z平面をまたぐ。
【0034】
脚式ロボットが環境10の周りで移動すると、ロボットの脚120は歩行サイクルを経る。一般に、歩行サイクルは、脚120が地面12に着地または接触したときに開始し、同じ脚120が再び地面12に接触したときに終了する。歩行サイクルは、主に遊脚相と立脚相との2つの相に分けることができる。遊脚相中、脚120は、(i)接地面12からの持ち上げ(つま先上げ、および立脚相と遊脚相との間の移行とも称されることがある)、(ii)脚120の膝関節Jの屈曲、(iii)脚120の膝関節Jの伸展、および(iv)地面12への着地を実行する。ここで、遊脚相における脚120は、遊脚脚120SWと称される。遊脚脚120SWが遊脚相120SWの移動を進めると、別の脚120が立脚相を実行する。立脚相とは、脚120の遠位端124(例えば、足)が地面12上にある期間を指す。立脚相中、脚120は、(i)遊脚相から立脚相への移行を引き起こす初期の地面接触、(ii)脚120が地面接触を弱める負荷応答、(iii)対側脚(すなわち、遊脚脚120SW)が持ち上げられ、バランスのとれた位置まで遊脚するとき(遊脚相の約半分)の立脚中間支持、および(iv)ロボットのCOMが脚120の上にあるときから対側脚120が地面12に着地するまでの立脚相支持を実行する。ここで、立脚相における脚120は、立脚脚120STと称される。
【0035】
環境10の周りで動くために、ロボット100は、1つ以上のセンサー132、132a~n(例えば、第1のセンサー132、132aおよび第2のセンサー132、132bとして示される)を備えたセンサーシステム130を含む。センサー132は、視覚/画像センサー、慣性センサー(例えば、慣性測定ユニット(IMU))、力センサー、および/または運動学的センサーを含み得る。センサー132のいくつかの例としては、ステレオカメラなどのカメラ、走査光検出と測距(LIDAR)センサー、または走査レーザー検出と測距(LADAR)センサーが挙げられる。いくつかの実施例では、センサー132は、センサー132に対応する感知範囲または領域を定義する、対応する視野Fを有する。例えば、図1Aは、ロボット100の視野Fを示す。各センサー132は、センサー132が、例えば、1つ以上の軸(例えば、地面に関するx軸、y軸、またはz軸)周りの視野Fを変更し得るように、枢動可能および/または回転可能であり得る。
【0036】
いくつかの実装例では、センサーシステム130は、関節Jに結合されたセンサー132を含む。いくつかの例では、これらのセンサー132は、ロボット100の関節Jを動作させるモーターに結合する(例えば、センサー132、132a~b)。ここで、これらのセンサー132は、関節に基づくセンサーデータ134の形で関節動態134、134JDを生成する。関節に基づくセンサーデータ134として収集された関節動態134JDは、関節角度(例えば、下側部材122に対する上側部材122)、関節速度(例えば、関節角速度または関節角加速度)、および/または、関節Jで経験する関節トルク(関節力とも称される)を含み得る。ここで、1つ以上のセンサー132によって生成される関節に基づくセンサーデータ134は、生のセンサーデータ、異なるタイプの関節動態134JDを形成するためにさらに処理されるデータ、または両方の何らかの組み合わせであり得る。例えば、センサー132は、関節位置(または関節Jで結合された部材122の位置)を測定し、ロボット100のシステムは、位置データから速度および/または加速度を導出するためにさらなる処理を実行する。他の例では、センサー132は、速度および/または加速度を直接測定するように構成される。
【0037】
センサー132を用いて視野Fを調査するときに、センサーシステム130は、視野Fに対応するセンサーデータ134(画像データとも称される)を生成する。いくつかの実施例では、センサーデータ134は、三次元体積画像センサー132によって生成された三次元体積点群に対応する画像データである。追加的または代替的に、ロボット100が環境10の周りで動いているとき、センサーシステム130は、慣性測定データ(例えば、IMUによって測定された)を含む、ロボット100についてのポーズデータを収集する。いくつかの例では、姿勢データは、ロボット100に関する運動学的データおよび/または配向データ、例えば、ロボット100の脚120の関節Jまたは他の部分に関する運動学的データおよび/または配向データを含む。センサーデータ134を用いて、ロボット100の知覚システム200は、環境10に関する地形のマップ182を生成し得る。
【0038】
ロボット100が環境10の周りで動くときに、センサーシステム130は、環境10の地形および/またはロボット100の構造(例えば、ロボット100の関節動態および/またはオドメトリ)に関連するセンサーデータ134を収集する。例えば、図1Aは、ロボット100の環境10としての空間に関するセンサーデータ134を収集しているセンサーシステム130を示している。センサーシステム130がセンサーデータ134を収集すると、コンピューティングシステム140は、センサーデータ134を格納し、処理し、および/またはロボット100の様々なシステム(例えば、制御システム170、知覚システム180、オドメトリシステム190、および/または衝撃検出器200)に通信するように構成される。センサーデータ134に関連するコンピューティングタスクを実行するために、ロボット100のコンピューティングシステム140は、データ処理ハードウェア142と、メモリハードウェア144と、を含む。データ処理ハードウェア142は、メモリハードウェア144に格納された命令を実行して、ロボット100の活動(例えば、移動および/または移動ベースの活動)に関連するコンピューティングタスクを実行するように構成される。一般的に言えば、コンピューティングシステム140は、データ処理ハードウェア142および/またはメモリハードウェア144の1つ以上の位置を指す。
【0039】
いくつかの例では、コンピューティングシステム140は、ロボット100上に位置しているローカルシステムである。ロボット100上に位置しているとき、コンピューティングシステム140は、集中型(すなわち、ロボット100上の単一の位置/エリア、例えば、ロボット100のボディ110内にある)、分散型(すなわち、ロボット100の周りの様々な位置に位置する)、または両方のハイブリッドな組み合わせ(例えば、大多数の集中型ハードウェアおよび少数の分散型ハードウェアが存在する)であり得る。いくつかの違いを説明するために、分散型コンピューティングシステム140は、活動位置(例えば、脚120の関節を移動させるモーター)における処理が発生することを可能にし得る一方で、集中型コンピューティングシステム140は、ロボット100の様々な位置に位置しているシステムに通信する(例えば、脚120の関節を移動させるモーターに通信する)中央処理ハブを可能にし得る。
【0040】
追加的または代替的に、コンピューティングシステム140は、ロボット100から離れて位置しているコンピューティングリソースを含む。例えば、コンピューティングシステム140は、ネットワーク150を介してリモートシステム160(例えば、リモートサーバーまたはクラウドに基づく環境)と通信する。コンピューティングシステム140と同様に、リモートシステム160は、リモートデータ処理ハードウェア162およびリモートメモリハードウェア164などのリモートコンピューティングリソースを含む。ここで、センサーデータ134または他の処理されたデータ(例えば、コンピューティングシステム140によるローカルでのデータ処理)は、リモートシステム160に格納され得、コンピューティングシステム140にアクセス可能であり得る。いくつかの例では、コンピューティングシステム140は、コンピューティングシステム140のリソースがリモートシステム160のリソース上に存在し得るように、コンピューティングリソース142、144の拡張としてリモートリソース162、164を利用するように構成される。
【0041】
いくつかの実装例では、図1Aおよび1Bに示されるように、ロボット100は、制御システム170と、知覚システム180と、を含む。知覚システム180は、センサーシステム130からセンサーデータ134を受信し、センサーデータ134をマップ182に処理するように構成される。知覚システム180によって生成されたマップ182を用いて、知覚システム180は、ロボット100を環境10の周りで移動させることなど、ロボット100に対して制御されたアクションを実行するために、マップ182を制御システム170に通信し得る。いくつかの例では、知覚システム180を制御システム170から分離し、ただし制御システム170と通信させることによって、制御システム170のための処理は、ロボット100の制御することに集中し、一方、知覚システム180のための処理は、センサーシステム130によって収集されたセンサーデータ134を解釈することに集中してもよい。例えば、これらのシステム170、180は、それらの処理を並行して実行して、環境10におけるロボット100の正確で流動的な移動を確実にする。
【0042】
いくつかの例では、制御システム170は、少なくとも1つのコントローラ172と、パスジェネレータ174と、ステップロケータ176と、ボディプランナ178と、を含む。制御システム170は、少なくとも1つのセンサーシステム130およびロボット100の任意の他のシステム(例えば、知覚システム180、オドメトリシステム190、および/または衝撃検出器200)と通信するように構成され得る。制御システム170は、ハードウェア140を使用して動作および他の機能を実行する。コントローラ172は、ロボット100のシステム(例えば、制御システム170、知覚システム180、オドメトリシステム190、および/または衝撃検出器200)からの入力またはフィードバックに基づいて、環境10の周りで昇降するようにロボット100の移動を制御するように構成される。これは、ロボット100のポーズおよび/または挙動の間の動きを含み得る。例えば、コントローラ172は、異なった足跡パターン、脚パターン、ボディ動きパターン、または視覚システム感知パターンを制御する。
【0043】
いくつかの実施例では、コントローラ172は、コントローラ172の各々が固定ケイデンスを有する複数のコントローラ172を含む。固定ケイデンスは、脚120のステップまたは遊脚相の固定タイミングを指す。例えば、コントローラ172は、ロボット100に、特定の周波数(例えば、250ミリ秒、350ミリ秒ごとのステップなど)で脚120を動かす(例えば、ステップを踏む)ように命令する。各コントローラ172が固定ケイデンスを有する複数のコントローラ172を用いて、ロボット100は、コントローラ172間で切り替えることによって可変タイミングを経験することができる。いくつかの実装例では、ロボット100は、ロボット100が環境10を昇降するときに、固定ケイデンスコントローラ172を連続的に切り替え/選択する(例えば、3ミリ秒ごとにコントローラ170を再選択する)。
【0044】
図1Bを参照すると、パスジェネレータ174は、ロボット100の水平方向の動きを決定するように構成される。例えば、水平方向の運動とは、ロボット100の並進(すなわち、X-Y平面内の移動)および/またはヨー(すなわち、Z方向の軸Aの周りの回転)を指す。パスジェネレータ174は、センサーデータ134に基づいて、ロボット100に関する環境10内の障害物を決定する。パスジェネレータ174は、ステップロケータ176がロボット100の脚120の足配置(例えば、ロボット100の脚120の遠位端124を配置する位置)を識別し得るように、障害物をステップロケータ176に通信する。ステップロケータ176は、知覚システム180からの入力(例えば、マップ182)を使用して、足配置(すなわち、ロボット100がステップするべき位置)を生成する。ボディプランナ178は、ステップロケータ176と同様に、知覚システム180からの入力(例えば、マップ182)を受信する。一般的に言えば、ボディプランナ178は、ロボット100のボディ110の動態(例えば、ピッチもしくはヨー、および/またはCOMの高さなどの回転)を調整して、環境10の周りで首尾よく移動するように構成される。
【0045】
知覚システム180は、ロボット100が様々な障害物のある地形においてより正確に移動するのを助けるロボット100のシステムである。センサー132は、ロボット100の周りの空間(すなわち、ロボットの環境10)のセンサーデータ134を収集すると、知覚システム180は、センサーデータ134を使用して、環境10の1つ以上のマップ182を形成する。知覚システム180がマップ182を生成すると、知覚システム180はまた、情報をマップ182に追加するように(例えば、既存のマップ上にセンサーデータ134を投影することによって)、および/またはマップ182から情報を削除するように構成される。
【0046】
さらに図1Bを参照すると、オドメトリシステム190は、ロボット100が世界基準フレーム(例えば、環境10)内のどこに位置しており、ロボット100がその世界基準フレーム内でどれだけ速く移動しているかを測定するように構成される。言い換えれば、オドメトリシステム190は、世界基準フレームに対するロボット100の特性の1つ以上の評価(例えば、測定値)としてオドメトリ情報192を生成する。いくつかの例では、オドメトリシステム190は、IMU(例えば、加速度計および/またはジャイロ)などのセンサー132からセンサーデータ134を受信する。センサーデータ134を用いて、オドメトリシステム190は、脚120の遠位端124が地面12と接触して滑っていないときに、遠位端124が静止しているという仮定に基づいてオドメトリ情報192を生成し得る。この仮定をセンサーデータ134と組み合わせることにより、オドメトリシステム190は、世界基準フレーム(例えば、環境10)に対するロボットの運動に関するオドメトリ情報192を生成する。言い換えれば、オドメトリシステム190は、運動学および慣性測定を考慮して、世界基準フレームに関するロボット100についての評価を生成する。
【0047】
ロボット100の衝撃検出システム200は、ロボット100の他のシステム(例えば、センサーシステム130、コンピューティングシステム140、リモートシステム160、制御システム170、知覚システム180、および/またはオドメトリシステム190)からの入力を受信するように構成される。ロボット100の他のシステムからの情報を利用することによって、衝撃検出システム200は、衝撃202を識別し、衝撃202を分類し、いくつかの例では、衝撃202に対する応答204を生成する(例えば、つまずき応答を呼び出す)ための情報に基づいた決定を行うことを試みる。いくつかの例では、衝撃検出システム200は、入力として関節動態134JDを受信する。例えば、衝撃検出システム200は、遠位端124(ロボット100の足124とも称される)が地面12に接触したときに衝撃検出システム200が検出できるように、関節力134JD、134JDaを受信する。いくつかの例では、衝撃検出システム200は、遠位端124がいつ移動を停止するか、および/または、地面12に対する遠位端124の位置(例えば、ロボット100によって知覚される)を検出するために、関節角度134JD、134JDbを受信する。いくつかの実装例では、衝撃検出システム200は、遠位端124の速度を検出するために(例えば、足が地面に対して移動を停止したかどうかを検出するために)、角速度134JD、134JDcを受信する。図2Aは、衝撃検出システム200が関節力、関節角度、および角速度134JDa~cの各々を受信する様子を描いているが、衝撃検出システム200によるいくつかのタイプの検出では、より多くまたはより少ない入力を使用してもよい。
【0048】
いくつかの構成では、関節動態134JDに加えて、衝撃検出システム200は、ロボット100のオドメトリ192を受信する。オドメトリは、衝撃検出システム200が、世界基準フレーム(例えば、環境10に対するロボット100)の運動学と、相対基準フレーム(例えば、ロボット100自体に対するロボット100のボディ110または脚120)の運動学との両方を考慮することによって、ロボット100の構造の動態の評価を決定することを可能にする。例えば、ロボット100の足124の速度は、世界基準フレームにおけるボディ110の速度(例えば、オドメトリシステム190によって決定されたもの)に、ボディ110に対する足124の速度(例えば、センサーシステム130によって感知されたもの)を加えたものに等しい。
【0049】
追加的または代替的に、衝撃検出システム200は、知覚システム180からマップ182を受信する(例えば、関節動態134JDおよび/またはオドメトリ192に加えて)。いくつかの例では、衝撃検出システム200は、知覚システム180がつまずき状態または牽引面接触を理解することを失敗することを考慮する。しかし、いくつかの実装例では、知覚システム180のマップ182は、衝撃検出システム200がつまずきのタイプを分類することを可能にする。例えば、マップ182が地面12の近傍で足124を知覚しなかった場合よりも、マップ182が地面を足124の近傍として知覚した場合の方が、足124が地面に対して着地した可能性が高い。
【0050】
図2Aを参照すると、衝撃検出システム200は、検出器210を含む。検出器210は、ロボット100の1つ以上の脚120(例えば、足)に対する予想外の力F(またはトルクT)を識別するように構成される。衝撃検出システム200が予想外の力F(またはトルクT)を識別すると、衝撃検出システム200は、予想外の力Fが衝撃202に対応するかどうかを決定する。移動中、遊脚脚120SWは、通常、最小量のトルクTを生成する。この最小量のトルクTは、一般に、逆動力学によって予測可能である。言い換えれば、逆動力学および重力に基づいて、遊脚脚120SWに作用するトルクTの予想内の量が存在する。この予想内のトルク量Tは、重力によって寄与されるトルク(すなわち、重力トルクT)と、歩行運動を実現するために脚120を加速させるために予想されるトルクT(すなわち、逆動力学によるトルクTID)とを組み合わせたものに等しい。遊脚脚120SWが経験するトルクTの大部分は既知であるため、検出器210は、予想外のトルクT(補償トルクTcompとも称される)を決定するように構成される。例えば、以下の式(1)は、検出器210が補償されたトルクTcomを決定するために使用する式を示している。
comp=Tmeasured-T-TID(1)
ここで、Tmeasuredは、関節センサー132から測定されたトルクである。言い換えれば、検出器210は、センサーシステム130からのセンサーデータ134(例えば、ロボット100の関節Jのセンサー132から)に基づいて、遊脚脚120SWに作用する測定されたトルク量Tmeasuredを受信および/または決定するように構成される。測定されたトルク量Tmeasuredおよび予想内のトルクT(すなわち、重力トルクTおよび逆動力学からのトルクTID)を使用して、検出器210は、補償されたトルクTcompを決定する。補償されたトルクTcompに基づいて、検出器210は、遊脚脚120SWがいつ衝撃202を経験するかを識別するように構成される。
【0051】
いくつかの実装例では、検出器210は、補償されたトルクTcompが衝撃トルク閾値Tthを満たすかどうかを決定する(例えば、検出器210は、補償されたトルクTcompが衝撃トルク閾値Tthとして設定された値を超えることを決定する)ことによって、遊脚脚120SWに対するトルクTが遊脚脚120SWに対する衝撃202に対応するかどうかを判定する。ここで、衝撃トルク閾値TTHは、衝撃検出システム200が衝撃検出中に予想するノイズの量を表すように構成される。言い換えれば、検出器210は、検出器210が一般にセンサーノイズに基づいて衝撃202を誤って検出しないことを保証するために、衝撃トルク閾値TTHで構成され得る。補償されたトルクTcompが衝撃トルク閾値Tthを満たすとき、検出器210は、衝撃202(または潜在的な衝撃202)が遊脚脚120SWに発生したことを通信する。逆に、補償されたトルクTcompが衝撃トルク閾値Tthを満たさないとき、検出器210は、遊脚脚120SWのトルクTを監視することを継続する。
【0052】
いくつかの例では、検出器210は、遊脚脚120SWの各関節JのトルクTを監視する。例えば、検出器210は、膝関節JでのトルクT、股関節の外転-内転成分JHx、および股関節の屈曲-伸展成分JHyを監視する。いくつかの実装例では、各関節Jに対して、検出器210は、潜在的な衝撃に対応する証拠212を生成する。ここで、図2Aに示されるように、証拠212は、衝撃トルク閾値TTHよりも大きい補償されたトルクTCOMPを表す曲線の下のエリアを指す。例えば、検出器210は、補償されたトルクTCOMPを表す曲線の下の積分として、ただし衝撃トルク閾値TTHを超えるものとして証拠212を生成する。図2Aに示されるように、証拠212を決定するために、検出器210は、補償されたトルクTCOMPの絶対値を積分する。
【0053】
検出器210が証拠212を生成するときに、補償されたトルクTCOMPの値が衝撃202が発生していないことを示すとき、証拠212を削除するように、検出器210をさらに構成することができる。いくつかの例では、補償されたトルクTCOMPを表す曲線は、衝撃トルク閾値TTHを超えるが、その後、衝撃トルク閾値TTHを下回る値に低下する。衝撃トルク閾値TTHを下回るこの低下が発生すると、検出器210は、衝撃検出システム200が誤った衝撃を識別する可能性を低減するために、証拠212を削除する。同様に、いくつかの実装例では、補償されたトルクTCOMPの値は、補償されたトルクTCOMPの値が符号を変える(例えば、正から負に、またはその逆に)ので、衝撃202が発生していないことを示している。ここで、衝撃検出システム200は、衝撃202を同じ符号を有するものとして識別するように構成されるため(例えば、補償されたトルクTCOMPの絶対値の積分に基づいて)、検出器210は、符号変更の前に任意の証拠212をクリアする。したがって、符号の変更は、潜在的な誤った衝撃を示している。
【0054】
いくつかの例では、検出器210は、脚120のすべての関節Jの証拠212の合計が証拠閾値212THを満たすとき、衝撃202が遊脚脚120SWで発生していることを決定する。ここで、証拠閾値212THとは、遊脚脚120SWが衝撃202を示すすべての関節Jにわたって全体的に経験する証拠の必要量を指す。図2Aは、検出器210が、脚120のすべての関節Jの証拠212の合計が証拠閾値212THを満たすかどうかを決定することを示しているが、検出器210の他の構成は、脚120のすべての関節Jよりも少ない関節に対して(例えば、膝関節Jと股関節Jの1つの成分、または膝関節Jを伴わない股関節Jの両方の成分に対して)この決定を実行してもよい。
【0055】
いくつかの構成では、証拠閾値212THは、遊脚相によって異なる。例えば、衝撃検出システム200は、遊脚脚120SWの着地が予想されないときよりも、遊脚脚120SWの着地が予想されるときの感度が高くなるように構成される。これに基づいて、証拠閾値212THは、遊脚相の完了パーセントに基づいてスケーリングまたは修正することができる。ここで、ロボット100の他のシステムは、遊脚相の完了パーセントを衝撃検出器システム200に通信し得る。例えば、制御システム170は、コントローラ172が、固定されたケイデンスを有する遊脚脚120SWのための歩行サイクルを実行することに基づいて、完了パーセントが導出され得るため、衝撃検出システム200に遊脚相の完了パーセントを通信する。いくつかの例では、衝撃検出システム200は、遊脚脚120SWの現在の位置(例えば、センサーデータ134によって決定される)および遊脚脚120SWを動作させるコントローラ172に基づいて、遊脚相の完了パーセントを決定するように構成される。
【0056】
図2Bを参照すると、いくつかの実装例では、検出器210は、潜在的な衝撃または衝撃202に対してさらなる分析を実行するように構成される。言い換えれば、必要な証拠212THが衝撃202を示しているが、検出された衝撃202が実際の衝撃であるかどうかを確認するために、検出された衝撃202の実際の状況が分析され得る状況が存在し得る。図2Bなどのいくつかの例では、ロボット100の脚120の構造は、脚120の可動域を制限する端部停止部126を含む。例えば、可動域は、脚120の構造への損傷を防ぐために、または脚120を関節運動させる1つ以上のモーターの制限に基づいて、端部停止部126によって制限される。端部停止部が脚120の可動域を制限する126と、脚120の関節センサー132は、端部停止部126によって加えられる力Fによって引き起こされる突然の測定されたトルクを経験する可能性がある。端部停止部126からのこの力FがトルクTの正しい符号を生成する場合でも、検出器210は、検出器210が遊脚脚120SWが端部停止部126の近傍にあることを識別したときに続いて発生する衝撃202を無視するように構成される。
【0057】
図2C~2Eを参照すると、検出器210は、潜在的な衝撃202を引き起こすトルクTが、脚120の運動(例えば、遊脚脚120SWの足124の運動)に常に対抗することを保証するように構成され得る。言い換えれば、衝撃検出システム200は、ある状態を、その状態が脚120の関連する関節Jを高速化する(例えば、脚120自体を高速化する)測定されたトルクをもたらすときに、衝撃202として分類しない。図2C~2Eは、検出器210が、衝撃202に対応するトルクTが脚120の運動(例えば、脚120の足124の運動として示される)に対抗するかどうかを決定する状態を示している。各例では、足124は、Dと指定された進行方向に移動している。図2Cを参照すると、足124は、第2のトルクTが足124の運動に寄与するため、検出器210が膝関節Jにおける第1のトルクT、Tのみを考慮し、膝関節Jにおける第2のトルクT、Tを考慮しないように、左に進行している。図2Dでは、足124の進行方向Dは下向きである。いずれかの方向のトルクTは、この下向きの運動に対抗することを含み得るので、検出器210は、潜在的なトルクの寄与が不明確であるとき、いずれかの方向の作用トルクT(例えば、第1のトルクTまたは第2のトルクT)を考慮するように構成される。図2Eでは、足124の進行方向Dは、ほとんど下向きであるが、方向成分が右に移動している。ここで、検出器210は、検出器210が足124の方向成分と対抗する方向(例えば、第2のトルクT)により大きなトルクTを必要とするように、各方向のトルクTに重みをかけて、トルクTが衝撃202に対応するようにしてもよい(または、その逆も同様である)。
【0058】
いくつかの例では、検出器210は、足124の速度を識別し、次に、潜在的な衝撃トルクTが足124の速度を増加させるかまたは減少させるかを決定する。潜在的な衝撃トルクTが足124の速度の増加に寄与するとき、検出器210は、この衝撃202(または潜在的な衝撃)を無視する。一方、潜在的な衝撃トルクTが足124の速度の低下に寄与するとき、検出器210は、この衝撃202が実際の衝撃として検出されることを可能にし得る(例えば、検出器210の他の基準に従う)。
【0059】
図2Aおよび2Fを参照すると、検出器210が衝撃202を検出すると、検出器210は、その衝撃202を衝撃検出システム200の分類器220に通信するように構成される。分類器220は、衝撃202の状態を決定するように構成される。言い換えれば、ロボット100の脚120に対してどのタイプの衝撃202が発生したか、または発生しており、衝撃202のタイプに応じて、応答204を生成する。いくつかの例では、分類器220は、応答204をロボット100の他のシステム(例えば、制御システム170)に通信する。制御システム170が応答204を受信すると、制御システム170のコントローラ172は、衝撃202を克服するために適切な移動を生成することができる(例えば、ロボット100を安定させる)。いくつかの例では、分類器220は、分類器220が特定のタイプの衝撃202を他のタイプの衝撃202(例えば、つまずき状態の前の着地接触)の前に分類することを試みるような階層で構成される。
【0060】
いくつかの例では、分類器220は、衝撃202を経験する脚120の遠位端124(すなわち、足124)の特性を利用して、衝撃202を分類する。より具体的には、分類器220は、世界における足124の位置(例えば、関節動態134JDおよびオドメトリ情報192のいくつかの組み合わせから導出される)、世界における足124の速度(例えば、関節動態134JDおよびオドメトリ情報192のいくつかの組み合わせから導出される)、および世界フレームにおける足124に対する力を使用してもよい。ここで、世界フレームの足124に対する力は、2つの異なる方法で導出され得る。第1のアプローチでは、分類器220は、ジャコビアン変換に基づいて、関節動態134JDの関節トルクTから力を導出することによって、世界フレームにおける力を決定し得る。第2のアプローチでは、分類器220は、逆動力学を使用して、世界フレーム内の足124に力を生成する。いくつかの例では、分類器220は、第1のアプローチと第2のアプローチとの両方に基づいて足124に対する力を決定するが、分類を実行するためにゼロに近い世界フレーム内の足124に対する力を生成するいずれかのアプローチを使用する。いくつかの実装例では、衝撃のタイプ202を分類するときに、分類器220は、足124の動態に重要性を関連付ける。例えば、足124に対する力が最も重要な特性であり、続いて足124の速度が重要であり、続いて足124の位置が分類目的で最も重要でない特性である。
【0061】
図2Fを参照すると、いくつかの例では、分類器220は、まず、衝撃202が遊脚脚120SWの着地に対応するかどうかを決定する。衝撃202を着地として分類するために、分類器220は、一般に、脚120の遠位端124が著しい垂直方向の力(例えば、地面12からの法線方向の力を示す)を経験するかどうか、および/または制御システム170が遠位端124を下向き移動させるように指示しているにもかかわらず、遠位端124の速度がもはや下向きに移動していないかどうかを決定する。ここで、分類器220は、垂直方向の力の有意な大きさ(例えば、ロボット100の不安定化を招く危険性がある)ことを示す垂直方向の力の閾値を有するように構成され得る。言い換えれば、分類器220が、遠位端124に対する垂直方向の力が垂直方向の力の閾値を満たす(例えば、垂直方向の力の閾値として設定された値を超える)ことを決定したとき、分類器220は、遊脚脚120SWに対する衝撃202を着地と分類する。いくつかの実装例では、分類器220は、特定の状況に基づいて垂直方向の力の閾値を修正する。例えば、分類器220は、ロボット100が(例えば、制御システム170を介して)つまずきに応答している(例えば、衝撃検出システム200が衝撃202に対する応答204を生成した)ときに、垂直方向の力の閾値を修正する。別の例では、分類器220は、遊脚相(例えば、遊脚相の完了パーセント)に基づいて垂直方向の力の閾値を修正する。例示すると、分類器220が遊脚脚120SWが遊脚相の初期(例えば、持ち上げの直後)にあることを知覚しているとき、分類器220は、垂直方向の力の閾値を修正し得る。追加的または代替的に、分類器220が衝撃202を標準のつまずきとして識別するが、ロボット100が足124を標準のつまずきに対する応答204として上昇させることができないとき、分類器220は、代わりに衝撃202を着地として分類する。
【0062】
いくつかの構成では、遊脚脚120SWが遊脚相の完了の終わりに近づくと、分類器220は、任意の新しい衝撃202を着地として分類する。例えば、遊脚相の完了パーセントが95%以上完了した場合、分類器220は、衝撃202を着地として分類する。ここで、この状態は、着地の検出が遅れることから生じ得る、突然の検出されない着地または他の問題による不安定化のリスクからロボット100を保護する。
【0063】
いくつかの例では、遊脚脚120SWが遊脚相の後半にあり、遊脚脚120SWの計画された軌道が地面12に向かって下向きに移動しているときに、分類器220は、衝撃202を着地として分類する。例えば、遊脚相の完了パーセントが約65%以上の完了であり、遊脚脚120SWの計画された軌道が地面12に向かって下向きに移動しているときに、分類器220は、衝撃202を着地として分類する。
【0064】
これらの例では、遊脚脚120SWが遊脚相の後半にあり、遊脚脚120SWのための計画された軌道が地面12に向かって下向きに移動している場合、分類器220が衝撃202を着地として分類するために使用する追加の基準ではなく、代替の基準が存在してもよい。第1の追加の基準は、足124に対する力が著しく大きい(例えば、垂直方向の力の閾値またはそのいくつかのバージョンを満たす)ことであり得る。第2の追加の基準は、足124が経験する刺激が非常に大きいということであり得る。例えば、垂直方向の力の閾値と同様に、分類器220は、着地を示す足124が経験する経時的な力の量を示す刺激閾値を有する(例えば、足124に対する刺激が、衝撃検出システム200で構成された刺激閾値を超える)ように構成される。第3の追加の基準は、足124の測定された速度が、(例えば、制御システム170によって)意図されたように、(地面12に向かうz方向に)下向きではないことであり得る。例えば、足124の位置の変化は、制御システム170が足124を地面12に向かってz方向に下向きに移動させることを意図したが、足124が実際には地面12に向かって速度を減少させて移動しているように、足124の閾値速度よりも大きい(例えば、-0.5m/sよりも大きい)。
【0065】
図2Fをさらに参照すると、衝撃202が遊脚脚120SWの着地に対応していないときには、分類器220は、衝撃202が特別なタイプのつまずき状態222、222SPによって引き起こされたかどうかを識別するように構成される。特別なつまずき条件222SPのいくつかの例は、以下を含む:脚120の大腿122がボディ110上にあるとき、足部124が持ち上げこすりを経験するとき、遊脚脚120SWが対側脚120CLと交差するとき(図2Gおよび2H)、遊脚脚120SWが対側脚120CLに当たったとき(図2I)、ロボット100の膝がロボット100の後ろの地形にあるとき(図2J)、および脚120の膝がロボット100の下の地形にあるとき(図2K)。いくつかの実装例では、分類器220は、ロボット100の関節動態134JDおよび/またはオドメトリ情報192に基づいて、特別なつまずき状態222SPを識別する。分類器220が特別なタイプのつまずき状態222SPを識別すると、つまずきのタイプに応じて、分類器220(i)は、つまずきを克服するために、および/またはつまずきの影響を軽減するために、応答204を生成し得る。分類器220が、衝撃202が特別なタイプのつまずき状態222SPによって引き起こされたものではないことを決定したとき、分類器220は、衝撃202を標準のつまずき状態222、222STD(例えば、図2Lに示される)によって引き起こされたものとして分類する。標準のつまずき状態222STDの場合、分類器220は応答204を生成して、衝撃202を経験した足124を上昇させる(すまわち、足124のz方向の高さを増加させる)。図2Lは、ロボット100の標準のつまずき状態222STDを示している。
【0066】
いくつかの構成では、分類器220が、衝撃202が遊脚脚120SWの着地によって引き起こされたものではなく、遊脚脚120SWが遊脚相の初期(例えば、遊脚相の10%未満の完了)にあることを決定すると、分類器220は、衝撃202を持ち上げこすりとして分類する。いくつかの例では、分類器220は、遊脚相の完了パーセントが、遊脚脚120SWが遊脚相の初期にあることを示す遊脚相閾値(例えば、遊脚相閾値よりも小さい)を満たすことを決定する。ここで、持ち上げこすりとは、遊脚脚120SWが地面12から持ち上げられるときに、遊脚脚120SWが地面に接触することを指す(例えば、ロボット100が離陸する際に足124を打ちつける)。この特別なつまずき状態222SPでは、遊脚脚120SWが地面12からの持ち上げを継続することになるため、衝撃202を引き起こした地面12をクリアすることができる。したがって、遊脚脚120SWは、衝撃202の結果としていかなる抵抗のリスクも冒さないので、分類器220は、この持ち上げこすりに基づいて応答204を生成しない。
【0067】
いくつかの構成では、分類器220は、ロボット100のボディ110上の大腿(すなわち、脚120の上側部材122)の位置が、検出された衝撃202を引き起こしたことを決定する。ここで、この特別なつまずき状態222SPは、関節動態134JDが、股関節JHxの外転-内転成分が事前決定された制限を超えたことを示しているときに発生する。一般的に言えば、股関節JHx、zの各成分に事前決定された制限が設定されていてもよい。例えば、制御システム170またはロボット100の別のシステムは、ロボット100の寸法および/またはロボット100のペイロードに基づいて、所定の制限を設定することができる。いくつかの例では、股関節JHxの外転-内転成分は、股関節JHyの屈曲-伸展成分の関数である事前決定された制限を有する。言い換えれば、外転/内転が股関節の外転-内転成分JHxの事前決定された制限を超えると、脚120の上側部材122がロボット100のボディ110に衝突するリスクを犯す。持ち上げこすりの特別なつまずき状態222SPと同様に、分類器220は、このタイプの衝撃202に基づいて応答204を生成せず、遊脚脚120SWは、歩行の遊脚相を実行することを継続する。
【0068】
図2Gおよび2Hを参照すると、いくつかの例では、分類器220は、遊脚脚120SW(例えば、第1の脚120aとして示される)が対側脚120CL(例えば、第2の脚120b、120STとして示される)と交差して衝撃202を引き起こしたことを決定する。ここで、対側脚120CLとは、第1の脚120aが第2の脚120bと矢状面(すなわち、Y-Z面)と対抗するような、2つの脚120a-bの関係を指す。例えば、(図示されているような)四足歩行ロボットでは、立脚脚120STは、一般に、移動中のロボット100のバランスを維持するために、遊脚脚120SWに対して対側脚120CL(およびその逆)である。いくつかの例では、分類器220は、ロボット100の運動学に基づいて、遊脚脚120SWが対側脚120CLの近傍にあるかどうかを決定することによって、このタイプの特別なつまずき状態222SPを決定する。これらの例では、遊脚脚120SWが対側脚120CLの近傍にあるかどうかを決定することは、対側脚120CLまでの遊脚脚120SWの第1の最接近点と、対遊脚脚120SWまでの側脚120CLの第2の最接近点との間のベクトル距離を決定することを含み得る。ここで、ベクトル距離が、遊脚脚120SWが対側脚120CLと交差したことを示すとき、分類器220は、各脚120SW、120CLの足124a~bが交差しているかどうか、および/または各脚120SW、120CLの膝関節J、Ja~bが交差しているかどうかを追加的に決定してもよい。いくつかの構成では、分類器220は、これらの状態のうちの1つ以上が真であると決定するように構成される(例えば、1つが真である、2つが真である、または3つすべてが真である)。言い換えれば、分類器220は、(i)ベクトル距離が脚120SW、120CLが交差していることを示すか、(ii)膝関節J、Ja~bの位置が脚120SW、120CLが交差していることを示すか、(iii)足124a-bの位置が脚120SW、120CLが交差していることを示すかを決定する。遊脚脚120SWが対側脚120CLと交差するこが衝撃202をもたらすと、分類器220は、脚120SW、120と交差解除する応答204を生成し得る。例えば、分類器220は、遊脚脚120SWの膝関節Jを、遊脚脚120SWの股関節Jのz方向の垂直方向の軸に向けて移動させる。
【0069】
図2Iを参照すると、いくつかの実装例では、分類器220は、(例えば、ロボット100の運動学に基づいて)遊脚脚120SWが対側脚120CLの近傍にあるが、対側脚120CLと交差していないことを決定する。ここで、分類器220は、遊脚脚120SWが、衝撃202を引き起こす対側脚120CLに接触したが、衝撃202の間、前、または直後に対側脚120CLを交差しなかったことを決定してもよい。いくつかの例では、分類器220は、(i)遊脚脚120SWが遊脚相において遅れすぎていない(例えば、65%未満の完了)こと、および(ii)検出器210が衝撃202を決定するために使用した証拠212が、股関節JHxの外転-内転成分から主に得られたものであることを識別することによって、この決定を形成する。言い換えれば、股関節JHxの側方回転のトルクは、股関節JHyおよび膝関節Jの屈曲-伸展成分のトルク(例えば、各々、別々にまたは一緒に組み合わせたもの)よりも、衝撃202を識別する証拠212に大きく寄与した。遊脚脚120SWが衝撃202を引き起こす対側脚120CLと衝突すると、分類器220は、脚120SW、120CLを分離するための応答204を生成し得る(例えば、1つ以上の脚120SW、120CLを正面平面内で互いから離れる方向に移動させることによって)。言い換えれば、遊脚脚120SWは、矢状平面内でその元々計画された運動を継続する一方で、正面平面内で元々計画された運動を上書きして(例えば、x軸Aに沿って)、立脚脚120STから分離してもよい。
【0070】
図2K~2Lを参照すると、いくつかの構成では、分類器220は、脚120(例えば、遊脚脚120SW)と、ロボット100のボディ110の後ろ(例えば、図2Jに示される)または下(例えば、図2Kに示される)のいずれかの地形との衝突が、衝撃202を引き起こすことを決定する。遊脚脚120SWの膝関節Jとロボット100の後ろの地形との接触に基づいて衝撃202が発生する特別なつまずき状態222SPの場合、分類器220は、(i)遊脚脚120SWの膝関節Jがボディ110から離れて後方(例えば、y方向)に移動していること、および(ii)証拠212が、遊脚脚120SWの股関節JHyの屈曲-伸展成分が関節トルクの最大の寄与者であることを示していることを決定する。いくつかの例では、遊脚脚120SWに対する股関節JHyの屈曲-伸展成分は、膝関節Jおよび股関節JHxの外転-内転成分(例えば、別々にまたは組み合わせて)の両方の関節トルクTの寄与よりも大きい。いくつかの実装例では、分類器220は、遊脚脚120SWの運動学を使用して、遊脚脚120SWの膝関節Jがボディ110から離れて後方に移動していることを決定する。分類器220が、衝撃202を脚120とロボット100の後ろの地形との間の衝突と分類すると、分類器220は、膝関節Jを前方に(例えば、y方向に沿ってロボット100のCMに向かって)移動させるための応答204を生成する。
【0071】
図2Lを参照すると、ここで、分類器220は、脚120とロボット100のボディ110の下の地形との間の衝突が衝撃202を引き起こしたことを決定する。この特別なつまずき状態222SPを決定するために、分類器220は、膝関節Jが前方(例えば、遊脚脚120SWの股関節Jに対してy方向に前方)に移動しており、衝撃202を生じさせる証拠212が膝関節J以外の関節Jで発生したことを決定する。追加的または代替的に、分類器220は、知覚システム180の1つ以上のマップ182を使用して、遊脚脚120SWの膝関節Jが遊脚脚120SWの足124よりも地面12に近いことを決定してもよい。マップ182はまた、遊脚脚120SWの膝関節Jが最近地面12の近傍で知覚されたことを示すこともできる。この特別なつまずき状態222SPでは、分類器220は、歩行の遊脚相を継続することによる遊脚脚120SWの前進運動が、膝関節Jを衝撃202を引き起こす物体を越えて運ぶので、応答204を生成しないように構成される。
【0072】
いくつかの例では、衝撃検出システム200は、知覚システム180がオフであるか、またはうまく機能していない(例えば、センサー132の問題)場合に有利である場合がある。これが発生した場合、衝撃検出システム200は、環境10内における検出のための一次システムとして使用することができる。逆に、知覚システム180が適切に機能している場合、衝撃検出システム200は、特に知覚システム180が誤るかまたは一時的な問題に遭遇した場合に、検出のための堅牢な補助システムを提供し得る。
【0073】
図3は、足跡接触検出の方法300を実行するための動作の構成である。動作302において、方法300は、ロボット100の遊脚脚120SWの関節動態134JDを受信する。ここで、遊脚脚120SWは、ロボット100の歩行の遊脚相を実行する。動作304において、方法300は、世界基準フレームに対するロボット100の特性(例えば、指定)の評価を定義するオドメトリ192を受信する。動作306において、方法300は、遊脚脚120SWに対するトルクが、遊脚脚120SWに対する衝撃202に対応するかどうかを決定する。遊脚脚120SWに対するトルクTが衝撃202に対応するとき、動作308、308aにおいて、方法300は、ロボット100のオドメトリ192および遊脚脚120SWの関節動態134JDに基づいて、衝撃202がロボット100の周りの地面12への遊脚脚120SWの着地を示すものであるかどうかを決定する。動作308、308bにおいて、衝撃202が遊脚脚120SWの着地を示さないときには、方法300は、ロボット100のオドメトリ192および遊脚脚120SWの関節動態134JDに基づいて、衝撃202の原因を分類する。
【0074】
図4は、本書に記載されているシステム(例えば、センサーシステム130、コンピューティングシステム140、リモートシステム160、制御システム170、知覚システム180、オドメトリシステム190、および/または衝撃検出システム200)、ならびに方法(例えば、方法300)を実装するために使用され得る例示的なコンピューティングデバイス400の概略図である。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図される。本明細書に示されている構成要素、それらの接続および関係、ならびにそれらの機能は、例示のみを意図しており、本明細書で説明および/または特許請求されている本発明の実装を限定することを意味するものではない。
【0075】
コンピューティングデバイス400は、プロセッサ410(例えば、データ処理ハードウェア)と、メモリ420(例えば、メモリハードウェア)と、ストレージデバイス430と、メモリ420および高速拡張ポート450に接続する高速インターフェース/コントローラ440と、低速バス470およびストレージデバイス430に接続する低速インターフェース/コントローラ460と、を含む。構成要素410、420、430、440、450、および460の各々は、様々なバスを使用して相互接続されており、共通のマザーボードに、または必要に応じて他の方法で取り付けられ得る。プロセッサ410は、グラフィカルユーザインターフェース(GUI)のためのグラフィカル情報を、高速インターフェース440に結合されたディスプレイ480などの外部入出力デバイス上に表示するために、メモリ420内またはストレージデバイス430上に格納された命令を含む、コンピューティングデバイス400内で実行するための命令を処理し得る。他の実装例では、必要に応じて、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに使用され得る。また、複数のコンピューティングデバイス400が、各デバイスが必要な動作の一部を提供する状態で(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)、接続され得る。
【0076】
メモリ420は、コンピューティングデバイス400内に非一時的に情報を格納する。メモリ420は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ420は、コンピューティングデバイス400で使用するために、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的または永続的に格納するために使用される物理デバイスであり得る。不揮発性メモリの例としては、以下に限定されないが、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能な読み取り専用メモリ(PROM)/消去可能なプログラム可能な読み取り専用メモリ(EPROM)/電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が挙げられる。揮発性メモリの例は、以下に限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、ならびにディスクまたはテープを含む。
【0077】
ストレージデバイス430は、コンピューティングデバイス400に大容量記憶装置を提供し得る。いくつかの実装例では、ストレージデバイス430は、コンピュータ可読媒体である。様々な異なる実装例では、ストレージデバイス430は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成のデバイスを含むデバイスのアレイであり得る。追加の実装例では、コンピュータプログラム製品は、情報担体内に実体的に具体化される。コンピュータプログラム製品は、実行されると、上記のような1つ以上の方法を実行する命令を含む。情報担体は、メモリ420、ストレージデバイス430、またはプロセッサ410上のメモリなどの、コンピュータ可読媒体または機械可読媒体である。
【0078】
高速コントローラ440が、コンピューティングデバイス400の帯域幅集中動作を管理する一方で、低速コントローラ460は、より低い帯域幅集中動作を管理する。そのようなデューティの割り当ては、例示にすぎない。いくつかの実装形態では、高速コントローラ440は、メモリ420と、ディスプレイ480(例えば、グラフィックプロセッサまたはアクセラレータを介して)と、様々な拡張カード(図示せず)を受容する高速拡張ポート450と、に結合されている。いくつかの実装例では、低速コントローラ460は、ストレージデバイス430と、低速拡張ポート490と、に結合されている。様々な通信ポート(例えば、USB、Bluetooth、イーサネット、ワイヤレスイーサネット)を含み得る低速拡張ポート490は、キーボード、ポインティングデバイス、スキャナーなどの1つ以上の入出力デバイスに、または、例えば、ネットワークアダプタを介して、スイッチもしくはルータなどのネットワーキングデバイスに結合され得る。
【0079】
コンピューティングデバイス400は、図に示すように、いくつかの異なる形態で実装され得る。例えば、これは、標準のサーバ400aとして、もしくはそのようなサーバ400aのグループ内に複数回、ラップトップコンピューター400bとして、またはラックサーバシステム400cの一部として実装され得る。
【0080】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/もしくは光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組み合わせで実現され得る。これらの様々な実装は、データおよび命令をストレージシステムから受信するため、かつデータおよび命令をストレージシステムに送信するために結合された、専用または汎用であってもよい、少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスと、を含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラム内での実装を含み得る。
【0081】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラマブルプロセッサ用の機械命令を含み、高レベル手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械語で実装され得る。本明細書で使用される場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受け取る機械可読媒体を含む。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0082】
本明細書で説明されるプロセスおよびロジックフローは、入力データを処理して出力を生成することによって機能を実行するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行され得る。プロセスおよびロジックフローはまた、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によっても実行され得る。コンピュータプログラムの実行に好適なプロセッサには、例として、汎用および専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータのうちの任意の1つ以上のプロセッサが含まれる。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令および/またはデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。概して、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または大容量ストレージデバイスからデータを受信、もしくはデータを転送、もしくはその両方を行うように動作可能に結合される。しかし、コンピュータは必ずしもそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するための好適なコンピュータ可読媒体には、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスが含まれ、例としては、例えば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば内蔵ハードディスクまたは取り外し可能ディスクなどの磁気ディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクが挙げられる。プロセッサおよびメモリは、専用論理回路によって補足されるか、または専用論理回路に組み込まれ得る。
【0083】
ユーザとの相互作用を提供するために、本開示の1つ以上の態様は、ユーザに情報を表示するための、例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、もしくはタッチスクリーンなどの表示デバイス、ならびに任意選択的に、ユーザがコンピュータに入力を提供できるキーボード、および、例えば、マウスもしくはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装され得る。他の種類のデバイスを使用して、ユーザとの相互作用を提供することもでき、例えば、ユーザに提供されるフィードバックは、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受け取ることができる。さらに、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、デバイスからドキュメントを受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。
【0084】
多数の実装例が説明されてきた。それでもなお、本発明の趣旨および範囲から逸脱することなく、様々な修正が行われ得ることが理解されよう。したがって、他の実装例は、以下の特許請求の範囲の範囲内にある。
図1A
図1B
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図2H
図2I
図2J
図2K
図2L
図3
図4