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

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

▶ 国立大学法人 筑波大学の特許一覧

特許7246751行動推定装置、行動推定方法、および行動推定プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-17
(45)【発行日】2023-03-28
(54)【発明の名称】行動推定装置、行動推定方法、および行動推定プログラム
(51)【国際特許分類】
   B25J 3/00 20060101AFI20230320BHJP
   B25J 9/22 20060101ALI20230320BHJP
【FI】
B25J3/00 A
B25J9/22 Z
【請求項の数】 15
(21)【出願番号】P 2020514025
(86)(22)【出願日】2019-03-20
(86)【国際出願番号】 JP2019011693
(87)【国際公開番号】W WO2019202900
(87)【国際公開日】2019-10-24
【審査請求日】2021-11-05
(31)【優先権主張番号】P 2018078057
(32)【優先日】2018-04-15
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】504171134
【氏名又は名称】国立大学法人 筑波大学
(74)【代理人】
【識別番号】100106909
【弁理士】
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100169764
【弁理士】
【氏名又は名称】清水 雄一郎
(72)【発明者】
【氏名】境野 翔
【審査官】松浦 陽
(56)【参考文献】
【文献】国際公開第2016/132398(WO,A1)
【文献】特開2007-276052(JP,A)
【文献】特開2008-304970(JP,A)
【文献】特開2011-224696(JP,A)
【文献】国際公開第2015/041046(WO,A1)
【文献】T. Slama et al.,Robust bilaterarl genaralized predictive control for teleoperarion systems,2007 MEDITERRANEAN CONFERENCE ON CONTROL & AUTOMATION,IEEE,2007年06月27日,DOI: 10.1109/MED.2007.4433924
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/416
G05B 19/42 - 19/46
(57)【特許請求の範囲】
【請求項1】
マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集部と、
前記収集部によって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定器と、
を含み、
前記収集部は、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、
前記行動推定器は、前記スレーブ装置から出力される応答に基づいて、前記収集部によって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する、
行動推定装置。
【請求項2】
前記行動推定器は、前記スレーブ装置を自動行動させるための指令値として位置指令値および力指令値を推定するものであり、
前記行動推定装置は、
前記行動推定器によって推定された前記位置指令値および前記スレーブ装置から出力される位置応答に基づいて前記スレーブ装置に入力する位置制御入力を出力する位置制御器と、
前記行動推定器によって推定された前記力指令値および前記スレーブ装置から出力される力応答に基づいて前記スレーブ装置に入力する力制御入力を出力する力制御器と、
をさらに含む、
請求項1に記載の行動推定装置。
【請求項3】
前記マスタ装置は、操作者の操作に応じて動作するマスタロボットであり、
前記スレーブ装置は、前記マスタロボットの動作に応じて動作するスレーブロボットであり、
前記バイラテラルシステムは、前記マスタロボットと前記スレーブロボットとの間で双方向制御を行うことによって前記操作者が前記スレーブロボットからの反作用情報を認識して適応的な操作を行うことが可能である、
請求項1または2に記載の行動推定装置。
【請求項4】
前記スレーブ装置は、前記スレーブ装置の周辺環境を撮影可能な画像撮影部、前記スレーブ装置の周辺の音を取得可能な音響取得部、および前記スレーブ装置の触覚情報を取得可能な触覚取得部の少なくとも一方を含む、
請求項1から3のいずれか1項に記載の行動推定装置。
【請求項5】
前記スレーブ装置から出力される位置応答および力応答、前記行動推定器から出力される位置指令値および力指令値、または前記スレーブ装置に入力される位置制御入力および力制御入力、の少なくともいずれか1つに対して前処理を行う前処理部をさらに含む、
請求項1から4のいずれか1項に記載の行動推定装置。
【請求項6】
前記前処理部は、
前記スレーブ装置から出力される力応答、前記行動推定器から出力される力指令値、または前記スレーブ装置に入力される力制御入力、の少なくともいずれか1つについて、前記力応答、前記力指令値、または前記力制御入力の第1の範囲における変動に対する前処理後の値の変動が、前記第1の範囲より大きい第2の範囲における変動に対する前処理後の値の変動よりも大きくなるように前処理を行う、
請求項5に記載の行動推定装置。
【請求項7】
前記スレーブ装置から出力される力応答、前記行動推定器から出力される力指令値、または前記スレーブ装置に入力される力制御入力、の少なくともいずれか1つを前記力応答、前記力指令値、または前記力制御入力の大きさに応じて複数に分類する力分類部をさらに含み、
前記力分類部によって分類された複数の前記力応答、前記力指令値、または前記力制御入力を異なる力応答、力指令値、または力制御入力として扱う、
請求項5に記載の行動推定装置。
【請求項8】
前記収集部によって収集された前記技能データを前記スレーブ装置の動作周波数に応じた周波数によってサンプリングして間引き技能データを生成する技能データ前処理部をさらに含み、
前記行動推定器は、前記間引き技能データおよび前記スレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する、
請求項1から7のいずれか1項に記載の行動推定装置。
【請求項9】
前記技能データ前処理部は、前記収集部によって収集された前記技能データを前記スレーブ装置の動作周波数に応じた周波数によって複数の異なるタイミングでサンプリングして複数の間引き技能データを生成し、
前記行動推定器は、前記複数の間引き技能データおよびスレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する、
請求項8に記載の行動推定装置。
【請求項10】
前記技能データ前処理部は、前記収集部によって収集された前記技能データに含まれる複数種類の情報を、前記スレーブ装置の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成し、
前記行動推定器は、前記複数の間引き技能データおよびスレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する、
請求項8に記載の行動推定装置。
【請求項11】
前記技能データ前処理部は、前記複数の間引き技能データ同士の相関が小さくなるように、前記収集部によって収集された前記技能データに含まれる複数種類の情報を、前記スレーブ装置の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成する、
請求項10に記載の行動推定装置。
【請求項12】
前記スレーブ装置の動作周波数に応じた周波数は、前記動作周波数の5倍から100倍程度の周波数である、
請求項8から11のいずれか1項に記載の行動推定装置。
【請求項13】
前記スレーブ装置の動作周波数に応じた周波数は、前記動作周波数の20倍から50倍の周波数である、
請求項12に記載の行動推定装置。
【請求項14】
マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集ステップと、
前記収集ステップによって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定ステップと、
を含み、
前記収集ステップは、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、
前記行動推定ステップは、前記スレーブ装置から出力される応答に基づいて、前記収集ステップによって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する、
行動推定方法。
【請求項15】
コンピュータに、
マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集ステップと、
前記収集ステップによって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定ステップと、
を実行させ、
前記収集ステップは、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、
前記行動推定ステップは、前記スレーブ装置から出力される応答に基づいて、前記収集ステップによって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する、
行動推定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、行動推定装置、行動推定方法、および行動推定プログラムに関する。
【背景技術】
【0002】
近年、人間が行っている様々な物体操作作業をロボットに代替することが求められている。物体操作作業とは、例えば、農作業における収穫または採集、建設作業、倉庫でのピッキング、料理、手術、洗濯などを含む。
【0003】
物体操作作業をロボットに代替するために、強化学習を用いて物体操作技能をロボットに習得させる手法が知られている。強化学習は、ある環境内においてエージェントが現在の状況を観察し、取るべき行動を決定する機械学習の一種である。エージェントは、行動を選択することで環境から報酬を得る。強化学習は、一連の行動を通じて報酬が最も多く得られるような方策を学習する。
【0004】
しかしながら、強化学習を用いて物体操作技能を習得する手法は、膨大な回数の物体操作を必要とする。物体操作は囲碁のようなソフトウェアで再現できるものでないので、一度の試行にかかる時間を高速化できない。このため、試行回数の低減が望まれる。
【0005】
これに対して、模倣学習を用いて物体操作技能をロボットに習得させる手法が知られている。模倣学習は、例えば操作者の位置指令によってロボットを操作したときのデータを収集し、収集したデータに基づいて物体操作技能をロボットに習得させるものである。模倣学習を用いると試行回数を大幅に減らすことが期待できる。
【0006】
しかしながら、模倣学習の分野ではデータ収集時に操作者とロボットとの間の双方向性を考慮しておらず、物体操作技能を人間が十分に発揮できないことが問題となっていた。その結果、物体操作成功率が十分に高くなく改善の余地があった。
【0007】
この点、操作者とロボットとの間の双方向性を考慮したバイラテラルシステムが知られている。バイラテラルシステムは、操作者が操作するマスタロボットと、マスタロボットに連動して動作するスレーブロボットとの間で双方向制御を行うものである。マスタロボットを操作したときのデータを保存し、再生することによってスレーブロボットに操作者の操作を再現させることができる。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2009-279699号公報
【文献】WO2015/041046号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、従来技術のバイラテラルシステムは、データの保存時と再生時の条件に変化がないことを前提としているので、単に、データを保存してそのまま再生するだけである。また、従来技術のバイラテラルシステムは、周辺環境を検知する機構を備えていなかった。このため、従来技術のバイラテラルシステムは、条件の変化が生じた場合には、物体操作を行うことが難しかった。
【0010】
そこで本願発明の一実施形態は、条件の変化に対して頑強な物体操作技能の学習を実現することを課題とする。
【課題を解決するための手段】
【0011】
本願発明の行動推定装置の一実施形態は、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を操作可能なバイラテラルシステムを用いて複数の異なる条件において前記スレーブ装置を操作したときの技能データを収集する収集部と、前記収集部によって収集された前記技能データおよび制御対象体から出力される応答に基づいて前記制御対象体を自動行動させるための指令値を推定する行動推定器と、を含む。
【0012】
前記行動推定器は、前記制御対象体を自動行動させるための指令値として位置指令値および力指令値を推定するものであり、前記行動推定装置は、前記推定器によって推定された前記位置指令値および前記制御対象体から出力される位置応答に基づいて前記制御対象体に入力する位置制御入力を出力する位置制御器と、前記推定器によって推定された前記力指令値および前記制御対象体から出力される力応答に基づいて前記制御対象体に入力する力制御入力を出力する力制御器と、をさらに含んでいてもよい。
【0013】
前記マスタ装置は、操作者の操作に応じて動作するマスタロボットであり、前記スレーブ装置は、前記マスタロボットの動作に応じて動作するスレーブロボットであり、前記バイラテラルシステムは、前記マスタロボットと前記スレーブロボットとの間で双方向制御を行うことによって前記操作者が前記スレーブロボットからの反作用情報を認識して適応的な操作を行うことが可能であってもよい。
【0014】
前記収集部は、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、前記行動推定器は、前記収集部によって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データおよび制御対象体から出力される応答に基づいて前記制御対象体を自動行動させるための指令値を推定することができる。
【0015】
前記スレーブ装置は、前記スレーブ装置の周辺環境を撮影可能な画像撮影部、前記スレーブ装置の周辺の音を取得可能な音響取得部、および前記スレーブ装置の触覚情報を取得可能な触覚取得部の少なくとも一方を含むことができる。
【0016】
前記制御対象体から出力される位置応答および力応答、前記行動推定器から出力される位置指令値および力指令値、または前記制御対象体に入力される位置制御入力および力制御入力、の少なくともいずれか1つに対して前処理を行う前処理部をさらに含むことができる。
【0017】
前記前処理部は、前記制御対象体から出力される力応答、前記行動推定器から出力される力指令値、または前記制御対象体に入力される力制御入力、の少なくともいずれか1つについて、前記力応答、前記力指令値、または前記力制御入力の第1の範囲における変動に対する前処理後の値の変動が、前記第1の範囲より大きい第2の範囲における変動に対する前処理後の値の変動よりも大きくなるように前処理を行うことができる。
【0018】
前記制御対象体から出力される力応答、前記行動推定器から出力される力指令値、または前記制御対象体に入力される力制御入力、の少なくともいずれか1つを前記力応答、前記力指令値、または前記力制御入力の大きさに応じて複数に分類する力分類部をさらに含み、前記力分類部によって分類された複数の前記力応答、前記力指令値、または前記力制御入力を異なる力応答、力指令値、または力制御入力として扱うことができる。
【0019】
本願発明の行動推定方法の一実施形態は、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を操作可能なバイラテラルシステムを用いて複数の異なる条件において前記スレーブ装置を操作したときの技能データを収集する収集ステップと、前記収集ステップによって収集された前記技能データおよび制御対象体から出力される応答に基づいて前記制御対象体を自動行動させるための指令値を推定する行動推定ステップと、を含む。
【0020】
本願発明の行動推定プログラムの一実施形態は、コンピュータに、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を操作可能なバイラテラルシステムを用いて複数の異なる条件において前記スレーブ装置を操作したときの技能データを収集する収集ステップと、前記収集ステップによって収集された前記技能データおよび制御対象体から出力される応答に基づいて前記制御対象体を自動行動させるための指令値を推定する行動推定ステップと、を実行させる。
本願発明の行動推定装置の一実施形態は、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集部と、前記収集部によって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定器と、を含み、前記収集部は、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、前記行動推定器は、前記スレーブ装置から出力される応答に基づいて、前記収集部によって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する。
本願発明の行動推定装置の一実施形態において、前記行動推定器は、前記スレーブ装置を自動行動させるための指令値として位置指令値および力指令値を推定するものであり、
前記行動推定装置は、前記行動推定器によって推定された前記位置指令値および前記スレーブ装置から出力される位置応答に基づいて前記スレーブ装置に入力する位置制御入力を出力する位置制御器と、前記行動推定器によって推定された前記力指令値および前記スレーブ装置から出力される力応答に基づいて前記スレーブ装置に入力する力制御入力を出力する力制御器と、をさらに含む。
本願発明の行動推定装置の一実施形態において、前記マスタ装置は、操作者の操作に応じて動作するマスタロボットであり、前記スレーブ装置は、前記マスタロボットの動作に応じて動作するスレーブロボットであり、前記バイラテラルシステムは、前記マスタロボットと前記スレーブロボットとの間で双方向制御を行うことによって前記操作者が前記スレーブロボットからの反作用情報を認識して適応的な操作を行うことが可能である。
本願発明の行動推定装置の一実施形態において、前記スレーブ装置は、前記スレーブ装置の周辺環境を撮影可能な画像撮影部、前記スレーブ装置の周辺の音を取得可能な音響取得部、および前記スレーブ装置の触覚情報を取得可能な触覚取得部の少なくとも一方を含む。
本願発明の行動推定装置の一実施形態は、前記スレーブ装置から出力される位置応答および力応答、前記行動推定器から出力される位置指令値および力指令値、または前記スレーブ装置に入力される位置制御入力および力制御入力、の少なくともいずれか1つに対して前処理を行う前処理部をさらに含む。
本願発明の行動推定装置の一実施形態において、前記前処理部は、前記スレーブ装置から出力される力応答、前記行動推定器から出力される力指令値、または前記スレーブ装置に入力される力制御入力、の少なくともいずれか1つについて、前記力応答、前記力指令値、または前記力制御入力の第1の範囲における変動に対する前処理後の値の変動が、前記第1の範囲より大きい第2の範囲における変動に対する前処理後の値の変動よりも大きくなるように前処理を行う。
本願発明の行動推定装置の一実施形態は、前記スレーブ装置から出力される力応答、前記行動推定器から出力される力指令値、または前記スレーブ装置に入力される力制御入力、の少なくともいずれか1つを前記力応答、前記力指令値、または前記力制御入力の大きさに応じて複数に分類する力分類部をさらに含み、前記力分類部によって分類された複数の前記力応答、前記力指令値、または前記力制御入力を異なる力応答、力指令値、または力制御入力として扱う。
本願発明の行動推定装置の一実施形態は、前記収集部によって収集された前記技能データを前記スレーブ装置の動作周波数に応じた周波数によってサンプリングして間引き技能データを生成する技能データ前処理部をさらに含み、前記行動推定器は、前記間引き技能データおよび前記スレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する。
本願発明の行動推定装置の一実施形態において、前記技能データ前処理部は、前記収集部によって収集された前記技能データを前記スレーブ装置の動作周波数に応じた周波数によって複数の異なるタイミングでサンプリングして複数の間引き技能データを生成し、前記行動推定器は、前記複数の間引き技能データおよびスレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する。
本願発明の行動推定装置の一実施形態において、前記技能データ前処理部は、前記収集部によって収集された前記技能データに含まれる複数種類の情報を、前記スレーブ装置の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成し、前記行動推定器は、前記複数の間引き技能データおよびスレーブ装置から出力される応答に基づいて前記スレーブ装置を自動行動させるための指令値を推定する。
本願発明の行動推定装置の一実施形態において、前記技能データ前処理部は、前記複数の間引き技能データ同士の相関が小さくなるように、前記収集部によって収集された前記技能データに含まれる複数種類の情報を、前記スレーブ装置の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成する。
本願発明の行動推定装置の一実施形態において、前記スレーブ装置の動作周波数に応じた周波数は、前記動作周波数の5倍から100倍程度の周波数である。
本願発明の行動推定装置の一実施形態において、前記スレーブ装置の動作周波数に応じた周波数は、前記動作周波数の20倍から50倍の周波数である。
本願発明の行動推定方法の一実施形態は、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集ステップと、前記収集ステップによって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定ステップと、を含み、前記収集ステップは、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、前記行動推定ステップは、前記スレーブ装置から出力される応答に基づいて、前記収集ステップによって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する。
本願発明の行動推定プログラムの一実施形態は、コンピュータに、マスタ装置とスレーブ装置との間で双方向制御を行うことによって前記マスタ装置を介して前記スレーブ装置を遠隔操作可能なバイラテラルシステムを用いて複数の異なる条件において前記マスタ装置を介して前記スレーブ装置を遠隔操作したときの、前記マスタ装置の出力応答と前記スレーブ装置の出力応答とを技能データとして収集する収集ステップと、前記収集ステップによって収集された前記技能データと、前記スレーブ装置から出力される応答とに基づいて前記スレーブ装置を自動行動させるための指令値を推定する行動推定ステップと、を実行させ、前記収集ステップは、前記バイラテラルシステムを用いて前記スレーブ装置を操作したときの前記マスタ装置の操作に対する前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データを収集し、前記行動推定ステップは、前記スレーブ装置から出力される応答に基づいて、前記収集ステップによって収集された前記スレーブ装置の動作の追従遅れに応じて前記スレーブ装置を操作したときの技能データに含まれる前記マスタ装置の出力応答を、前記スレーブ装置を自動行動させるための指令値として推定する。
【発明の効果】
【0021】
本願発明の一実施形態によれば、条件の変化に対して頑強な物体操作技能の学習を実現することができる。
【図面の簡単な説明】
【0022】
図1図1は、一実施形態の行動推定装置の概要を示すブロック図である。
図2図2は、一実施形態のマスタロボットの概要を示すブロック図である。
図3図3は、一実施形態のスレーブロボットの概要を示すブロック図である。
図4図4は、技能データを収集する際の行動推定装置の動作を示すフローチャートである。
図5図5は、一実施形態の行動推定装置の概要を示すブロック図である。
図6図6は、従来技術によるロボットの応答を推定する手法を説明するための図である。
図7図7は、本実施形態によるマスタロボットの応答を推定する手法を説明するための図である。
図8図8は、収集された技能データに基づいて制御対象体を自動行動させる際の行動推定装置の動作を示すフローチャートである。
図9図9は、物体を把持して持ち上げるためのバイラテラルシステムを模式的に示す図である。
図10図10は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。
図11図11は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。
図12図12は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。
図13図13は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。
図14図14は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。
図15図15は、複数の異なる条件において収集された技能データに基づいてスレーブロボットが自動行動する様子を模式的に示す図である。
図16図16は、行動推定装置の変形例を示すブロック図である。
図17図17は、位置対象型のバイラテラル制御系を示す図である。
図18図18は、力帰還型のバイラテラル制御系を示す図である。
図19図19は、力順送型のバイラテラル制御系を示す図である。
図20図20は、力逆走型のバイラテラル制御系を示す図である。
図21図21は、消しゴムを用いて線消しを行うためのバイラテラルシステムを模式的に示す図である。
図22図22は、複数の異なる条件において収集された技能データに基づいてスレーブロボットが自動行動する様子を模式的に示す図である。
図23図23は、紙面の高さを65mmに調整した状態においてスレーブロボットに自動行動させた結果を示す図である。
図24図24は、線描画の技能データの収集および線描画の自動行動について説明するための図である。
図25図25は、スレーブロボットが自動行動で分度器の曲面に沿って円弧を描いた結果を示す図である。
図26図26は、行動推定装置の変形例を示すブロック図である。
図27図27は、前処理部による正規化の一例を示す図である。
図28図28は、前処理部による正規化の一例を示す図である。
図29図29は、行動推定装置の変形例を示すブロック図である。
図30図30は、行動推定装置の変形例を示すブロック図である。
図31図31は、技能データ前処理部のサンプリング処理の概念を説明するための図である。
図32図32は、技能データ前処理部の異なるタイミングでのサンプリング処理の概念を説明するための図である。
図33図33は、文字「A」を紙に書くタスクの結果を示す図である。
図34図34は、文字「A」を紙に書くタスクの結果を示す図である。
図35図35は、文字「A」を紙に書くタスクの結果を示す図である。
図36図36は、間引き技能データ同士の相関について説明するための図である。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本願発明の行動推定装置、行動推定方法、および行動推定プログラムの実施形態について説明する。
【0024】
図1は、一実施形態の行動推定装置の概要を示すブロック図である。図2は、一実施形態のマスタロボットの概要を示すブロック図である。図3は、一実施形態のスレーブロボットの概要を示すブロック図である。
【0025】
図1に示すように、行動推定装置100は、バイラテラルシステム500を用いて操作者の技能データを収集する収集部200を含んでいる。
【0026】
(バイラテラルシステム)
まず、バイラテラルシステム500について説明する。バイラテラルシステム500は、マスタロボット510と、スレーブロボット520と、位置制御器530と、力制御器540と、を含む。バイラテラルシステム500は、マスタロボット510とスレーブロボット520との間で双方向制御を行うことにより、マスタロボット510を介してスレーブロボット520を遠隔操作可能になっている。
【0027】
具体的には、マスタロボット510は、入力部511と、ドライバ512と、アクチュエータ513と、アクチュエータ513に設置された位置センサ、力センサ、イメージセンサ(画像撮影部)、マイク(音響取得部)、および触覚センサ(触覚取得部)のいずれか1つを含むセンサ514と、制御部515と、を含む。マスタロボット510は、操作者の操作に応じてアクチュエータ513によって動作するようになっている。
【0028】
入力部511は、マスタロボット510に入力される制御入力値を受信してドライバ512に出力する通信インターフェース(通信I/F)によって構成することができる。ドライバ512は、入力部511を介して入力された制御入力値をアクチュエータ513に対する具体的な制御指令値(電圧値または電流値など)に変換し、その制御指令値をアクチュエータ513に出力する。アクチュエータ513は、ドライバ512から入力された制御指令値に従って駆動され、制御対象物の位置を制御する。センサ514は、アクチュエータ513によって制御される制御対象物の位置、力、およびマスタロボット510の周辺環境を検出し、検出値を制御部515に出力する。制御部515は、センサ514によって検出された時系列の検出値に基づいて、位置(速度)応答、力応答、画像情報、音響情報、および触覚情報を出力するようになっている。
【0029】
スレーブロボット520は、マスタロボット510と同様に、入力部521と、ドライバ522と、アクチュエータ523と、アクチュエータ523に設置された位置センサ、力センサ、イメージセンサ(画像撮影部)、マイク(音響取得部)、および触覚センサ(触覚取得部)のいずれか1つを含むセンサ524と、制御部525と、を含む。
【0030】
スレーブロボット520は、マスタロボット510の動作に応じて動作するようになっている。入力部521は、スレーブロボット520に入力される制御入力値を受信してドライバ522に出力する通信インターフェース(通信I/F)によって構成することができる。ドライバ522は、入力部521を介して入力された制御入力値をアクチュエータ523に対する具体的な制御指令値(電圧値または電流値など)に変換し、その制御指令値をアクチュエータ523に出力する。アクチュエータ523は、ドライバ522から入力された制御指令値に従って駆動され、制御対象物の位置を制御する。センサ524は、アクチュエータ523によって制御される制御対象物の位置、力、およびスレーブロボット520の周辺環境を検出し、検出値を制御部525に出力する。制御部525は、センサ524によって検出された時系列の検出値に基づいて、位置(速度)応答、力応答、画像情報、音響情報、および触覚情報を出力するようになっている。
【0031】
位置制御器530は、マスタロボット510から出力された位置応答と、スレーブロボット520から出力された位置応答に基づいて位置制御値を出力する。具体的には、位置制御器530は、マスタロボット510から出力された位置応答と、スレーブロボット520から出力された位置応答に基づいて、マスタロボット510のアクチュエータ513の位置とスレーブロボット520のアクチュエータ523の位置との差がゼロとなるように位置制御値を算出する。
【0032】
ここで、位置制御器530は、マスタロボット510の位置をスケーリングさせてスレーブロボット520に伝達させてもよい。すなわち、位置制御器530は、位置のスケーリング機能を実現することができる。スケーリング機能とは、基準となる制御に対して、出力される位置のスケールを拡大または縮小する機能である。位置制御器530は、スケーリング機能によって、例えば、マスタロボット510の動きの大きさを拡大または縮小してスレーブロボット520で再現したり、マスタロボット510の動きの速度を上昇または低下させてスレーブロボット520で再現したりすることができる。
【0033】
力制御器540は、マスタロボット510から出力された力応答と、スレーブロボット520から出力された力応答に基づいて、力制御値を出力する。具体的には、力制御器540は、マスタロボット510から出力された力応答と、スレーブロボット520から出力された力応答に基づいて、マスタロボット510のアクチュエータ513に操作者が加える力とスレーブロボット520のアクチュエータ523に作用する物体からの反力とが、作用・反作用の関係(互いに等しく逆向き)となるように力制御値を算出する。
【0034】
ここで、力制御器540は、マスタロボット510の力をスケーリングさせてスレーブロボット520に伝達させてもよい。すなわち、力制御器540は、力のスケーリング機能を実現することができる。スケーリング機能とは、基準となる制御に対して、出力される力のスケールを拡大または縮小する機能である。力制御器540は、スケーリング機能によって、例えば、マスタロボット510の動きの強さ(力)を強めてまたは弱めてスレーブロボット520で再現することができる。
【0035】
位置制御器530から出力された位置制御値と、力制御器540から出力された力制御値とに基づく制御入力がマスタロボット510に入力される。また、位置制御器530から出力された位置制御値と、力制御器540から出力された力制御値とに基づく制御入力がスレーブロボット520に入力される。
【0036】
このような構成により、バイラテラルシステム500は、マスタロボット510の動作をスレーブロボット520に伝達すると共に、スレーブロボット520に対する物体からの反力の入力をマスタロボット510にフィードバックする機能(バイラテラル制御機能)を実現することができる。したがって、バイラテラルシステム500は、マスタロボット510に対して行われた操作がスレーブロボット520で正確に再現されると共に、スレーブロボット520に入力された物体からの反力をマスタロボット510に正確に伝達することができる。これにより、バイラテラルシステム500は、マスタロボット510とスレーブロボット520との間で双方向制御を行うことによって操作者がスレーブロボット520からの反作用情報を認識して適応的な操作を行うことが可能である。
【0037】
なお、バイラテラルシステム500は、人間の身体における1つまたは複数の部位の機能を実現するものであるが、その機能を実現するための制御測が適用されていれば、具体的な構成は必ずしも人間の身体を模した形態でなくてもよい。また、本実施形態では、マスタロボット510とスレーブロボット520が制御対象体となる例を示すが、制御対象体はロボットに限定されない。
【0038】
(収集部)
次に、収集部200について説明する。収集部200は、操作者による物体操作技能を後述する行動推定器(AI)300に学習させるためのものである。収集部200は、バイラテラルシステム500を用いて複数の異なる条件においてスレーブロボット520を操作したときの技能データを収集するようになっている。
【0039】
具体的には、収集部200は、マスタロボット510から出力された位置応答および力応答の技能データを受信する通信部210と、通信部210によって受信された技能データを記憶可能な記憶装置220とを含む。
【0040】
通信部210は、収集部200に入力される時系列の位置応答および力応答を受信して記憶装置220に技能データとして保存するとともに、記憶装置220から技能データを読み出して出力する通信インターフェース(通信I/F)によって構成することができる。記憶装置220は、通信部210から入力される技能データを保存可能な記憶媒体である。また、通信部210は、スレーブロボット520から出力される画像/音響/触覚情報(画像情報、音響情報、および触覚情報のうちの少なくとも1つ)を受信して技能データとして記憶装置220に保存することもできる。
【0041】
収集部200は、複数の異なる条件における複数の技能データを収集するようになっている。複数の異なる条件における複数の技能データは、例えば、複数の異なる操作者がバイラテラルシステム500を用いて物体操作を行ったときに収集された複数の技能データを含む。また、複数の異なる条件における複数の技能データは、例えば、操作の対象となる物体の位置、角度などが異なる状態でバイラテラルシステム500を用いて物体操作を行ったときに収集された複数の技能データを含む。さらに、複数の異なる条件における複数の技能データは、異なるマスタロボット510または異なるスレーブロボット520のバイラテラルシステム500を用いて物体操作を行ったときに収集された複数の技能データを含む。
【0042】
なお、収集部200は、バイラテラルシステム500を用いてスレーブロボット520を操作したときのマスタロボット510の操作に対するスレーブロボット520の動作の追従遅れに応じてスレーブロボット520を操作したときの技能データを収集する。すなわち、バイラテラルシステム500では、操作者がマスタロボット510を操作してからスレーブロボット520が動作するまでに多少の追従遅れが発生する。操作者は、スレーブロボット520の動作を目視しながらマスタロボット510を操作するので、スレーブロボット520の追従遅れを認識しながら、その追従遅れも考慮してマスタロボット510を操作する。したがって、収集部200によって収集される技能データは、マスタロボット510の操作に対するスレーブロボット520の動作の追従遅れに応じてスレーブロボット520を操作したデータとなる。
【0043】
ここで、技能データを収集する際の行動推定装置100の動作について説明する。図4は、技能データを収集する際の行動推定装置の動作を示すフローチャートである。
【0044】
技能データの収集処理が開始されると、収集部200は、第1の条件において操作者がバイラテラルシステム500を用いてスレーブロボット520を操作したときの技能データを収集する(ステップ102)。続いて、収集部200は、ステップ102で収集した技能データを記憶装置220に保存する(ステップ104)。
【0045】
続いて、技能データの収集を終了しない場合には(ステップ106,NO)、操作者、操作の対象となる物体の位置、角度などが異なる条件に変更される(ステップ108)。収集部200は、変更された第2の条件において、再度バイラテラルシステム500を用いてスレーブロボット520を操作したときの技能データを収集して(ステップ102)、ステップ102で収集した技能データを記憶装置220に保存する(ステップ104)。
【0046】
その後、収集部200は、技能データの収集を終了しない場合には(ステップ106,NO)、変更された異なる条件において技能データの収集と保存を繰り返す。一方、技能データの収集を終了する場合には(ステップ106,YES)、技能データの収集処理を終了する。なお、行動推定プログラムは、上記の処理と同様の処理をコンピュータ(プロセッサ)に実行させることができる。行動推定プログラムは、プロセッサによって読み出し可能な記憶媒体に格納することができ、プロセッサによって実行することができる。
【0047】
(行動推定器)
次に、行動推定装置について説明する。図5は、一実施形態の行動推定装置の概要を示すブロック図である。図5に示すように、行動推定装置100は、行動推定器(AI)300を含む。行動推定器300は、収集部200によって収集された技能データおよび制御対象体から出力される応答および画像/音響/触覚情報に基づいて制御対象体を自動行動させるための指令値を推定する。
【0048】
行動推定器300は、具体的には、収集部200によって収集された技能データおよびスレーブロボット520から出力される位置応答、力応答、および画像/音響/触覚情報を受信する受信部310を含む。また、行動推定器300は、受信部310によって受信された技能データ、位置応答、力応答、および画像/音響/触覚情報に基づいてスレーブロボット520を自動行動させるための位置指令値および力指令値を推定して出力する推定部320を含む。推定部320は、受信部310によって受信された技能データ、位置応答、力応答、および画像/音響/触覚情報に基づいて、スレーブロボット520への過去の制御入力と最も矛盾がない位置指令値および力指令値を推定する。言い換えると、推定部320は、受信部310によって受信された技能データ、位置応答、力応答、および画像/音響/触覚情報に基づいて、確率的に最も正しい位置指令値および力指令値を推定する。なお、本実施形態では、行動推定器300は、技能データ、および、スレーブロボット520から出力される位置応答、力応答、および画像/音響/触覚情報に基づいて位置指令値および力指令値を推定して出力する例を示すが、画像/音響/触覚情報は必須ではない。行動推定器300は、画像/音響/触覚情報を用いずに、技能データ、および、スレーブロボット520から出力される位置応答および力応答に基づいて位置指令値および力指令値を推定して出力することもできる。
【0049】
また、図5に示すように、行動推定装置100は、行動推定器300によって推定された位置指令値および制御対象体であるスレーブロボット520から出力される位置応答に基づいて制御対象体に入力する位置制御入力を出力する位置制御器410を含む。具体的には、位置制御器410は、行動推定器300から出力された位置指令値と、スレーブロボット520から出力された位置応答とに基づいて、位置指令値によって指令された位置とスレーブロボット520のアクチュエータ523の位置との差がゼロとなるように位置制御入力を算出する。
【0050】
また、図5に示すように、行動推定装置100は、行動推定器300によって推定された力指令値および制御対象体であるスレーブロボット520から出力される力応答に基づいて制御対象体に入力する力制御入力を出力する力制御器420を含む。具体的には、力制御器420は、行動推定器300から出力された力指令値と、スレーブロボット520から出力された力応答とに基づいて、力指令値によって指令された力とスレーブロボット520のアクチュエータ523に作用する物体からの反力とが、作用・反作用の関係(互いに等しく逆向き)となるように力制御入力を算出する。
【0051】
すなわち、行動推定装置100は、マスタロボット510が過去にどのような応答をしていたか予想し、それを指令値とする。制御系は学習時と同じものを使う。行動推定装置100は、座標変換をしていないので、z軸に位置制御と力制御が混ざった中途半端な制御をするといったようなことが起こり得るが、行動推定器(AI)300が制御を作るので問題はない。
【0052】
行動推定器(AI)300は、物体操作AIの一種である。すなわち、一般的に、ロボットには多数の関節があり、また、関節ごとの位置や力応答も無数の状態を取りうる。ロボットが操作する物体や周辺環境も無数の状態を取りうる。必然、その組み合わせは天文学的な数値となり、全ての状態に対するデータを事前に取得することはできない。しかし、上記の状態に関わる複数のデータからその中間的または延長的な状態について推定することができれば、事前に取得しなければならないデータ数を大幅に削減することが可能になる。よって、本実施形態の行動推定器(AI)300は、様々な状態を含む時系列データを収集することで物体や周辺環境の変動に頑健な状態推定が可能になり、それに適したロボットの行動も推定することが可能になる。逆に、一つの時系列データないし複数の似たような時系列データからでは推定できる中間的または延長的な状態がほとんどないため、物体や周辺環境の変動に非常に脆弱になる。
【0053】
なお、行動推定器300は、収集部200によって収集されたスレーブロボット520の動作の追従遅れに応じてスレーブロボット520を操作したときの技能データおよびスレーブロボット520から出力される応答に基づいてスレーブロボット520を自動行動させるための指令値を推定する。すなわち、行動推定器300は、マスタロボット510の操作に対するスレーブロボット520の動作の追従遅れも考慮してスレーブロボット520を操作したときの技能データを学習する。したがって、行動推定器300は、スレーブロボット520を自動行動させるための指令値を推定する際には、マスタロボット510の操作に対するスレーブロボット520の動作の追従遅れも考慮して指令値を推定することとなる。ここで、マスタロボットの操作に対するスレーブロボットの動作の追従遅れについて説明する。図6は、従来技術によるロボットの応答を推定する手法を説明するための図である。図6に示すように、従来技術では、ロボットに技能を教示する際は応答しか計測できなかった。よって、従来技術は応答値を指令値として推定していた。しかし、所望の応答値を指令値とすると制御器やロボットにおける応答遅れにより、所望の応答値を得られない。結果として、制御系やロボットの遅れを無視できるような遅い行動しか実現できなかった。これに対して、図7は、本実施形態によるマスタロボットの応答を推定する手法を説明するための図である。図7に示すように、本実施形態では、バイラテラル制御を用いるとマスタロボットの応答値がスレーブロボットの指令値になるため、スレーブロボットの行動(スレーブの指令値)を直接推定することが可能になる。よって、本実施形態によれば、行動推定時と技能収集時の遅れをなくすことができる。結果として、本実施形態によれば、人間の動作並みに早い行動が可能になる。
【0054】
ここで、収集された技能データに基づいて制御対象体を自動行動させる際の行動推定装置100の動作について説明する。図8は、収集された技能データに基づいて制御対象体を自動行動させる際の行動推定装置100の動作を示すフローチャートである。
【0055】
制御対象体であるスレーブロボット520を自動行動させる処理が開始されると、行動推定器(AI)300は、記憶装置220に格納された複数の技能データを読み出す(ステップ202)。なお、ここでは、スレーブロボット520を自動行動させる際に複数の技能データを読み出す例を示すが、これに限らず、行動推定器300は、複数の技能データをあらかじめ読み出しておいてもよい。
【0056】
続いて、行動推定器300は、スレーブロボット520から出力される位置応答および力応答を受信する(ステップ204)。行動推定器300は、複数の技能データと、受信した位置応答および力応答と、に基づいて位置指令値および力指令値を推定する(ステップ206)。
【0057】
位置制御器410および力制御器420は、行動推定器300によって推定された位置指令値および力指令値と、スレーブロボット520から出力される位置応答および力応答と、に基づいて位置制御入力および力制御入力をスレーブロボット520へ出力する(ステップ208)。
【0058】
スレーブロボット520による自動物体操作作業が終了していない場合には(ステップ210,NO)、ステップ204へ戻り、ステップ204からステップ208の処理を繰り返すことによってスレーブロボット520を自動行動させる。一方、スレーブロボット520による自動物体操作作業が終了したら(ステップ210,YES)、処理を終了する。
【0059】
なお、行動推定プログラムは、上記の処理と同様の処理をコンピュータ(プロセッサ)に実行させることができる。行動推定プログラムは、プロセッサによって読み出し可能な記憶媒体に格納することができ、プロセッサによって実行することができる。
【0060】
(行動推定装置の具体例1)
以下、行動推定装置100の具体的な実施形態について説明する。以下の説明では、物体操作作業として、異なる位置および角度で設置された形状の異なる物体を把持して持ち上げるという作業を例に挙げて説明する。
【0061】
図9は、物体を把持して持ち上げるためのバイラテラルシステムを模式的に示す図である。図9に示すように、物体把持用のバイラテラルシステム600は、マスタロボット610とスレーブロボット620とを含む。
【0062】
マスタロボット610は、ベース部612と、ベース部612とアーム部613,615を介して連結された把持部614,616と、を含む。ベース部612は、操作者の手の動きに応じて位置および角度を調整可能である。把持部612,614は、操作者の指(例えば人差し指と親指)の操作に応じて位置および角度を調整可能である。
【0063】
スレーブロボット620は、マスタロボット610の動作に応じて動作するようになっており、ベース部622と、ベース部622とアーム部623,625を介して連結された把持部624,626と、を含む。ベース部622は、ベース部612の動きに応じて位置および角度を調整可能である。把持部624,626は、把持部614,616の動きに応じて位置および角度を調整可能である。
【0064】
図10図14は、複数の異なる条件において技能データを収集する様子を模式的に示す図である。なお、図10図14では、説明の便宜上、マスタロボット610とスレーブロボット620を並べて図示しているが、マスタロボット610とスレーブロボット620は、任意の位置関係で設置することができる。例えば、マスタロボット610とスレーブロボット620は、遠隔配置することもできる。この場合、操作者は、スレーブロボット620のイメージセンサ(画像撮影部)によって撮影された画像情報を遠隔で監視しながら、スレーブロボット620を操作することができる。
【0065】
図10において、物体A1は、所定の位置に設置されている。操作者は、マスタロボット610の位置を初期位置PMから動かすことによってスレーブロボット620の位置を初期位置PSから物体A1に接近させる。続いて、操作者は、マスタロボット610の把持部614,616を操作することによってスレーブロボット620の把持部624,626を互いに近づく方向に操作する。スレーブロボット620の把持部624,626が物体A1の把持面H1に接触すると、物体A1からの反力がスレーブロボット620を介してマスタロボット610にフィードバックされ、操作者は物体A1を把持したことを認識する。続いて、操作者は、物体A1を把持したままマスタロボット610の位置を持ち上げることによってスレーブロボット620を介して物体A1を持ち上げる。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0066】
次に、図11において、物体A2は、物体A1と比較してX軸方向の異なる位置に設置されている。また、物体A2は、物体A1と比較して、Y軸方向の長さが長い異なる形状を有している。操作者は、マスタロボット610の位置を初期位置PMから動かすことによってスレーブロボット620の位置を初期位置PSから物体A2に接近させる。続いて、操作者は、マスタロボット610の把持部614,616を操作することによってスレーブロボット620の把持部624,626を互いに近づく方向に操作する。スレーブロボット620の把持部624,626が物体A2の把持面H2に接触すると、物体A2からの反力がスレーブロボット620を介してマスタロボット610にフィードバックされ、操作者は物体A2を把持したことを認識する。続いて、操作者は、物体A2を把持したままマスタロボット610の位置を持ち上げることによってスレーブロボット620を介して物体A2を持ち上げる。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0067】
図11の物体操作作業によって収集された技能データは、図10の物体操作作業によって収集された技能データと比較して、マスタロボット610およびスレーブロボット620のX軸方向の移動量が異なり、また、物体A2を把持したときの把持部614,616および把持部624,626の相互の接近距離が異なる。
【0068】
次に、図12において、物体A3は、物体A1と比較してY軸方向の異なる位置に設置されている。また、物体A3は、物体A1と比較して、Y軸方向の長さが短い異なる形状を有している。操作者は、マスタロボット610の位置を初期位置PMから動かすことによってスレーブロボット620の位置を初期位置PSから物体A3に接近させる。続いて、操作者は、マスタロボット610の把持部614,616を操作することによってスレーブロボット620の把持部624,626を互いに近づく方向に操作する。スレーブロボット620の把持部624,626が物体A3の把持面H3に接触すると、物体A3からの反力がスレーブロボット620を介してマスタロボット610にフィードバックされ、操作者は物体A3を把持したことを認識する。続いて、操作者は、物体A3を把持したままマスタロボット610の位置を持ち上げることによってスレーブロボット620を介して物体A3を持ち上げる。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0069】
図12の物体操作作業によって収集された技能データは、図10の物体操作作業によって収集された技能データと比較して、マスタロボット610およびスレーブロボット620のY軸方向の移動量が異なり、また、物体A3を把持したときの把持部614,616および把持部624,626の相互の接近距離が異なる。
【0070】
次に、図13において、物体A4は、物体A1と比較してZ軸方向の異なる位置に設置されている。操作者は、マスタロボット610の位置を初期位置PMから動かすことによってスレーブロボット620の位置を初期位置PSから物体A4に接近させる。続いて、操作者は、マスタロボット610の把持部614,616を操作することによってスレーブロボット620の把持部624,626を互いに近づく方向に操作する。スレーブロボット620の把持部624,626が物体A4の把持面H4に接触すると、物体A4からの反力がスレーブロボット620を介してマスタロボット610にフィードバックされ、操作者は物体A4を把持したことを認識する。続いて、操作者は、物体A4を把持したままマスタロボット610の位置を持ち上げることによってスレーブロボット620を介して物体A4を持ち上げる。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0071】
図13の物体操作作業によって収集された技能データは、図10の物体操作作業によって収集された技能データと比較して、マスタロボット610およびスレーブロボット620のZ軸方向の移動量が異なる。
【0072】
次に、図14において、物体A5は、物体A1と比較してX軸方向およびY軸方向の異なる位置に設置されている。また、物体A5は、物体A1と比較してZ軸周りに反時計回りに回転した状態で設置されている。操作者は、マスタロボット610の位置を初期位置PMから動かすことによってスレーブロボット620の位置を初期位置PSから物体A5に接近させる。続いて、操作者は、物体A5の把持面H5が物体A1の把持面H1と比較してZ軸周りに回転しているので、物体A5の把持面の回転角度に応じてマスタロボット610のZ軸周りの角度を反時計回りに回転させることによって、スレーブロボット620のZ軸周りの角度を反時計回りに回転させる。続いて、操作者は、マスタロボット610の把持部614,616を操作することによってスレーブロボット620の把持部624,626を互いに近づく方向に操作する。スレーブロボット620の把持部624,626が物体A5の把持面H5に接触すると、物体A5からの反力がスレーブロボット620を介してマスタロボット610にフィードバックされ、操作者は物体A5を把持したことを認識する。続いて、操作者は、物体A5を把持したままマスタロボット610の位置を持ち上げることによってスレーブロボット620を介して物体A5を持ち上げる。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0073】
図14の物体操作作業によって収集された技能データは、図10の物体操作作業によって収集された技能データと比較して、マスタロボット610およびスレーブロボット620のX軸方向およびY軸方向の移動量が異なり、マスタロボット610およびスレーブロボット620のZ軸周りの回転角度が異なる。
【0074】
行動推定器300は、収集部200によって収集された複数の異なる条件における技能データを学習する。具体的には、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、把持対象の物体はX軸方向、Y軸方向、Z軸方向の異なる位置に設置され得るということを学習する。また、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、把持対象の物体は、把持面間の距離が異なり得ることを学習する。さらに、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、把持対象の物体はZ軸周りに回転して設置され得るということを学習する。
【0075】
図15は、複数の異なる条件において収集された技能データに基づいてスレーブロボット620が自動行動する様子を模式的に示す図である。図15において、物体B1は、物体A1~A5のいずれと比較しても、X軸方向、Y軸方向、およびZ軸方向の異なる位置に設置されている。また、物体B1は、物体A1~A5のいずれと比較しても、把持面H6間の距離が短い、すなわち異なる形状を有している。また、物体B1は、物体A1~A5のいずれと比較しても、Z軸周りに異なる角度で回転した状態で設置されている。
【0076】
行動推定器300は、過去に収集された物体A1~A5の位置と比較して物体B1がX軸方向、Y軸方向、Z軸方向の異なる位置に設置され得るという技能データと、スレーブロボット620から出力される応答に基づいて、スレーブロボット620を物体B1に接近させる。続いて、行動推定器300は、過去に収集された物体A1~A5の把持面と比較して物体B1の把持面H6がZ軸周りに回転し得るという技能データと、スレーブロボット620から出力される応答に基づいて、スレーブロボット620をZ軸周りに回転させる。続いて、行動推定器300は、スレーブロボット620の把持部624,626を互いに近づく方向に動作させる。ここで、行動推定器300は、過去に収集された物体A1~A5の把持面間の距離と比較して物体B1の把持面H6間の距離が異なり得るという技能データと、スレーブロボット620から出力される応答に基づいて、スレーブロボット620の把持部624,626が物体B1の把持面H6に接触するまで、スレーブロボット620の把持部624,626を互いに近づく方向に動作させる。スレーブロボット620の把持部624,626が物体B1の把持面H6に接触すると、物体B1からの反力がスレーブロボット620を介して行動推定器300にフィードバックされ、行動推定器300は物体B1を把持したことを認識する。続いて、行動推定器300は、物体B1を把持したままスレーブロボット620の位置を持ち上げることによって物体B1を持ち上げる。
【0077】
以上のように、本実施形態の行動推定装置100によれば、マスタロボットおよびスレーブロボットで双方向制御をするバイラテラルシステムを用いて、人間がロボットを遠隔操作する技能データを収集し、当該データを用いて人間の技能を再現するように模倣学習することでAIを構築する。技能データは、環境、人間、ロボットなどが異なる条件下で技能データを収集することで、条件の変動に対して頑健なAIとなる。また、バイラテラルシステムは双方向制御であるため、物体からの反作用情報を認識して適応的に対処する人間の物体操作技能を抽出することができる。特に、本実施形態では、収集部は、マスタロボットの操作に対するスレーブロボットの動作の追従遅れも考慮した技能データが収集される。したがって、スレーブロボットを自動行動させる際には、行動推定器は、マスタロボットの操作に対するスレーブロボットの動作の追従遅れも考慮した指令値を推定することができる。従来技術では、指令値に対して制御対象体の応答がぴったりと追従する(追従遅れが発生しない)ことを前提として制御系を組んでいた。しかしながら、実際には指令値に対して制御対象体には追従遅れが生じるので、人間の動作に近い速度で制御対象体を所望の通り自動行動させるのは難しかった。したがって、従来技術では、制御対象体の追従遅れを無視できる程度に遅い行動しか実現することができず、その結果、制御対象体の自動行動は非常に遅いものであった。これに対して、本実施形態では、技能データは、マスタ装置の操作に対するスレーブ装置の動作の追従遅れを考慮して収集され、その技能データを用いて制御対象体を自動行動させるための指令値を推定する。つまり、本実施形態は、制御対象体の追従遅れが発生する前提で指令値を推定するので、人間の動作に近い速度での自動行動を実現することができる。
【0078】
また、本実施形態によれば、模倣学習であるため教師あり学習が可能であり、収集する技能データ数を低減できる。また、本実施形態は、オフラインで作成したデータを再現するのではなく、オンラインで行動を決定できるため、未知の環境に対しても適切な行動を計算することができる。すなわち、事前に操作対象物体の形状・質量・剛性等の物理特性が不明であった場合、これまでのロボットではまともな操作することができず、人手に頼らざるを得なかった。本実施形態によれば、この問題を解決できるため、未知物体の操作を必要とするすべての肉体労働のロボット化を狙える可能性がある。具体的には、本実施形態によれば、農作業における収穫・採集、建設作業、倉庫でのピッキング、料理、手術、洗濯、などの人間による物体操作作業をロボットで代替できる可能性がある。また、従来のロボットは専用機を用いた特定のタスクの解消を目指すものであったが、本実施形態によれば機械ではなくソフトウェアで機能を発現できるようになるため、一台のロボットで複数のタスクをこなせる真の汎用ロボットを製作できる可能性がある。
【0079】
なお、上記では、操作対象の物体の設置位置、形状、Z軸周りの回転角度などが異なる複数の条件下で技能データを収集する例を示したが、これには限定されない。例えば、行動推定装置100は、異なる操作者による操作の技能データを収集することができる。また、行動推定装置100は、異なるマスタロボットおよび/またはスレーブロボットを用いて行われた操作の技能データを収集することができる。また、行動推定装置100は、操作対象の物体がX軸および/またはY軸周りに異なる回転角度で設置されている状態で行われた操作の技能データを収集することができる。行動推定装置100は、様々な異なる条件で技能データを収集することができ、技能データを収集する条件が多くなるにしたがって、条件の変化に対して頑強な物体操作技能の学習を実現することができる。
【0080】
(行動推定装置の変形例)
次に、行動推定装置100の変形例について説明する。図16は、行動推定装置100の変形例を示すブロック図である。図1,5に示した行動推定装置100と重複する部分の説明は省略し、図1,5に示した行動推定装置100と異なる部分のみ説明する。
【0081】
図1,5に示した行動推定装置100と比較して、変形例の行動推定装置100´は、位置制御器410および力制御器420を含んでいない点が異なる。また、変形例の行動推定装置100´において、行動推定器300´の推定部320´は、受信部310´によって受信された技能データと、スレーブロボット520から出力された位置応答、力応答、および映像情報に基づいて、スレーブロボット520を自動行動させるための制御入力を出力する。
【0082】
すなわち、行動推定器300´は、スレーブロボット520の位置応答、力応答、および映像情報からどのような制御入力を出力すべきか予想するが、制御系も含めて学習する。変形例の行動推定装置100´は、座標変換をしていないので、z軸に位置制御と力制御が混ざった中途半端な制御をするといったようなことが起こり得るが、行動推定器(AI)300´が制御を作るなら問題はない。制御系設計をする必要がないなら、そもそも位置制御と力制御を分離する必要がないので、変形例の行動推定器300´は、収集部200によって収集された技能データと、スレーブロボット520から出力された位置応答、力応答、および映像情報に基づいて、位置制御と力制御が分離されていない制御入力を出力することができる。
【0083】
(バイラテラルシステムの変形例)
なお、上記の一実施形態では、バイラテラルシステム500として、4ch型のバイラテラルシステムを例に挙げて説明した。4ch型が最も制御性能がよいと知られているが、これに限定されず、それ以外にも様々なバイラテラルシステムを用いることができる。
【0084】
例えば、図17図20は、4ch型のバイラテラルシステム以外の代表的な制御系を示すブロック図である。図17は、位置対象型のバイラテラル制御系を示している。図18は、力帰還型のバイラテラル制御系を示している。図19は、力順送型のバイラテラル制御系を示している。図20は、力逆走型のバイラテラル制御系を示している。
【0085】
いずれのバイラテラルシステムにしても、マスタロボットとスレーブロボットの制御系が双方向(bilateral)に情報を伝達する制御系である。図17~20に示すように、バイラテラルシステムにおいて位置制御と力制御の両方が有ることは必須の要件ではない。
【0086】
(行動推定装置の具体例2)
次に、行動推定装置100の具体的な他の実施形態について説明する。以下の説明では、物体操作作業として、紙面に描かれた線を消しゴムによって消すという作業を例に挙げて説明する。
【0087】
図21は、消しゴムを用いて線消しを行うためのバイラテラルシステムを模式的に示す図である。図21に示すように、消しゴムを用いた線消し用のバイラテラルシステム700は、マスタロボット710とスレーブロボット720とを含む。
【0088】
マスタロボット710は、ベース部712と、ベース部712の上に置かれた回転部713と、回転部713に連結された第1のアーム部714と、第1のアーム部714に連結された第2のアーム部715と、を含む。回転部713は、ベース部712に対してZ軸周りに回転可能になっている。第1のアーム部714は、第1の端部が回転部713に連結されており、第1の端部を支点としてY軸周りに揺動可能になっている。その結果、第1のアーム部714の第2の端部はZ軸方向に揺動可能になっている。第2のアーム部715は、第1の端部が第1のアーム部714に連結されており、第1の端部を支点としてY軸周りに揺動可能になっている。その結果、第2のアーム部715の第2の端部はX軸方向に揺動可能になっている。これによって、操作者は、第2のアーム部715の第2の端部を把持してX,Y,Z軸方向に移動操作することができる。
【0089】
スレーブロボット720は、マスタロボット710の動作に応じて動作するようになっており、ベース部722と、ベース部722の上に置かれた回転部723と、回転部723に連結された第1のアーム部724と、第1のアーム部724に連結された第2のアーム部725と、を含む。回転部723は、ベース部722に対してZ軸周りに回転可能になっている。第1のアーム部724は、第1の端部が回転部723に連結されており、第1の端部を支点としてY軸周りに揺動可能になっている。その結果、第1のアーム部724の第2の端部はZ軸方向に揺動可能になっている。第2のアーム部725は、第1の端部が第1のアーム部724に連結されており、第1の端部を支点としてY軸周りに揺動可能になっている。その結果、第2のアーム部725の第2の端部はX軸方向に揺動可能になっている。第2のアーム部725の第2の端部には、消しゴムEが取り付けられている。消しゴムEは、第2のアーム部715の第2の端部に対する操作者の移動操作に応じて移動する。
【0090】
図21に示すバイラテラルシステム700を用いて、複数の異なる条件において線消しの技能データを収集することができる。すなわち、第2のアーム部725の下には、線が描かれた紙面Pが置かれており、紙面PのZ軸方向の高さは調整可能になっている。この実施形態では、紙面Pの高さを20mmに調整した状態において、操作者は、まず、第2のアーム部715の第2の端部を把持してZ軸方向に下ろす移動操作を行う。第2のアーム部725の第2の端部に取り付けられた消しゴムEが紙面Pに接触すると、紙面Pからの反力がスレーブロボット720を介してマスタロボット710にフィードバックされ、操作者は消しゴムEが紙面Pに接触したことを認識する。続いて、操作者は、消しゴムEが紙面Pに接触した状態のまま第2のアーム部715の第2の端部をX軸およびY軸の方向に移動操作する。これにより、操作者は、紙面Pに描かれている線を消しゴムEによって消す操作を行う。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0091】
また、この実施形態では、上記のような消しゴムEによる線消しの操作を、紙面Pの高さを50mmおよび80mmに調整したそれぞれの状態においても同様に行う。
【0092】
行動推定器300は、収集部200によって収集された複数の異なる条件における技能データを学習する。具体的には、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、紙面Pの高さはZ軸方向の異なる位置に設置され得るということを学習する。
【0093】
図22は、複数の異なる条件において収集された技能データに基づいてスレーブロボット720が自動行動する様子を模式的に示す図である。図22において、紙面Pの高さは、物体操作技能の学習時には設定されていなかった35mmに調整されている。まず、行動推定器300は、消しゴムEをZ軸方向に下ろす移動操作を行う。ここで、行動推定器300は、紙面Pの高さがZ軸方向の異なる位置に設置され得るという過去に収集された技能データと、スレーブロボット720から出力される応答に基づいて、消しゴムEが紙面Pに接触するまで、消しゴムEをZ軸方向に下ろす移動操作を行う。消しゴムEが紙面Pに接触すると、紙面Pからの反力がスレーブロボット720を介して行動推定器300にフィードバックされ、行動推定器300は消しゴムEが紙面Pに接触したことを認識する。続いて、行動推定器300は、消しゴムEを紙面Pに接触させた状態のまま、消しゴムEをX軸およびY軸の方向に移動操作を行うことによって、紙面Pに描かれた線を消す操作を行う。
【0094】
また、この具体例では、紙面Pの高さを65mmに調整した状態においても同様に、スレーブロボット720に自動行動させた。図23は、紙面Pの高さを65mmに調整した状態においてスレーブロボット720に自動行動させた結果を示す図である。図23において、R1は、図5に示すような位置応答と力応答を用いるバイラテラル制御系をバイラテラルシステム700に適用した状態においてスレーブロボット720が自動行動して得られた線消しの結果である。R2は、図17に示すような位置対象型のバイラテラル制御系、すなわち力応答を用いないバイラテラル制御系をバイラテラルシステム700に適用した状態においてスレーブロボット720が自動行動して得られた線消しの結果である。図23に示すように、本実施形態の行動推定器300によれば、物体操作技能の学習時には経験していない紙面Pの高さにおいても、紙面Pに描かれた線を所定の範囲で消すことができた。また、図23のR1とR2を比較すると、位置応答と力応答の両方を用いるバイラテラル制御系を適用することによって、位置応答のみを用いるバイラテラル制御系を適用した場合に比べて、より確実に線を消すことができた。すなわち、位置応答のみを用いるバイラテラル制御系を適用した場合、力情報を教師データとして与えないので、消しゴムEで紙面Pを押さえつける力が弱くなったり逆に強くなったりする。これに対して、位置応答と力応答の両方を用いるバイラテラル制御系を適用した場合、力もフィードバックするので、紙面Pの高さの変動に対して柔軟に対応して線消しを行うことができる。
【0095】
(行動推定装置の具体例3)
次に、行動推定装置100の具体的な他の実施形態について説明する。以下の説明では、物体操作作業として、定規および分度器を用いて線を描くという作業を例に挙げて説明する。
【0096】
この物体操作作業において用いられるバイラテラルシステムは、図21に示したバイラテラルシステム700と同様であるので、詳細な説明を省略する。ただし、本実施形態では、第2のアーム部725の第2の端部に、消しゴムEの代わりに鉛筆が取り付けられる。
【0097】
図24は、線描画の技能データの収集および線描画の自動行動について説明するための図である。第2のアーム部725の下には、図24に示すように紙面Pと定規Jが置かれる。この実施形態では、まず、定規Jの角度φを0°に調整した状態において、技能データを収集する。例えば、定規Jの角度φを0°に調整した状態において、操作者は、第2のアーム部715の第2の端部を把持してZ軸方向に下ろす移動操作を行う。第2のアーム部725の第2の端部に取り付けられた鉛筆が紙面PのPoint1に接触すると、紙面Pからの反力がスレーブロボット720を介してマスタロボット710にフィードバックされ、操作者は鉛筆が紙面Pに接触したことを認識する。続いて、操作者は、鉛筆が紙面Pに接触した状態のまま第2のアーム部715の第2の端部をX軸に沿って定規Jの方向に移動操作する。紙面PのPoint2において鉛筆が定規Jに接触すると、定規Jからの反力がスレーブロボット720を介してマスタロボット710にフィードバックされ、操作者は鉛筆が定規Jに接触したことを認識する。続いて、操作者は、鉛筆が紙面Pに接触した状態のまま、鉛筆が定規Jに沿って移動するように、第2のアーム部715の第2の端部の移動操作を行う。つまり、操作者は、紙面Pおよび定規Jからの反力を感じながら第2のアーム部715の第2の端部を移動操作する。操作者は、鉛筆が紙面PのPoint3まで移動したら第2のアーム部715の第2の端部をZ軸方向に上げる移動操作を行う。収集部200は、上記の一連の操作における時系列の技能データを収集して記憶装置220に保存する。
【0098】
また、この実施形態では、上記のような鉛筆による線描画の操作を、定規Jの角度φを30°および60°に調整したそれぞれの状態においても同様に行う。本実施形態では、定規Jの角度φを0°、30°、60°に設定した状態において、それぞれ5回上記の技能データの収集を行った。
【0099】
行動推定器300は、収集部200によって収集された複数の異なる条件における技能データを学習する。具体的には、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、紙面PのPoint1に鉛筆を下ろし、Point1からX軸方向に鉛筆を移動させ、定規Jに接触したら定規Jに沿って鉛筆を移動させるということを学習する。また、行動推定器300は、上記の複数の異なる条件で収集された技能データに基づいて、定規Jの角度φは、Z軸周りの異なる角度に設定され得るということを学習する。
【0100】
次に、定規Jの角度φが物体操作技能の学習時には設定されていなかった15°、45°のそれぞれの状態において、スレーブロボット720に線描画の自動行動をさせた。その結果、まず、行動推定器300は、紙面PのPoint1に向けて鉛筆を下ろす移動操作を行う。鉛筆が紙面Pに接触すると、紙面Pからの反力がスレーブロボット720を介して行動推定器300にフィードバックされ、行動推定器300は鉛筆が紙面Pに接触したことを認識する。続いて、行動推定器300は、鉛筆を紙面Pに接触させたままX軸方向に鉛筆を移動させる操作を行う。鉛筆が定規Jに接触すると、定規Jからの反力がスレーブロボット720を介して行動推定器300にフィードバックされ、行動推定器300は鉛筆が定規Jに接触したことを認識する。続いて、行動推定器300は、鉛筆を紙面Pおよび定規Jに接触させたまま、定規Jに沿って鉛筆を移動させる操作を行う。行動推定器300は、定規Jに沿って鉛筆を所定の距離だけ移動させたら、鉛筆をZ軸方向に上げる移動操作を行う。この一連の自動行動の結果、スレーブロボット720は、物体操作技能の学習時には設定されていなかった15°、45°のそれぞれの状態において、定規Jに沿って線を描画することができた。なお、本実施形態では、最初に紙面PのPoint1に鉛筆を下ろし、Point1からX軸方向に鉛筆を移動させて定規Jに接触させる(Point2まで移動させる)例を示したが、これに限定されない。例えば、スレーブロボット720のイメージセンサ(カメラ)を用いることによって、最初から紙面PのPoint2(定規Jに接触する位置)に鉛筆を下ろし、そこから定規Jに沿って線を描くことも考えられる。
【0101】
さらに、スレーブロボット720は、物体操作技能の学習時には用いられなかった分度器に対して円弧を描くことができた。図25は、スレーブロボット720が自動行動で分度器の曲面に沿って円弧を描いた結果を示す図である。図25に示すように、行動推定器300は、まず、紙面PのPoint1に鉛筆を下ろし、X軸方向に分度器Bに向かって鉛筆を移動し、紙面PのPoint2において分度器Bと接触したら、分度器Bの曲面に沿ってPoint3まで円弧を描くことができた。これは、行動推定器(AI)300が、線描画の物体操作において、鉛筆が線描画の道具(定規、分度器)に接触したら、鉛筆を道具に押し当てたときに発生する力ベクトルの法線方向に線を引けば良いことを暗黙のうちに学習したため、分度器Bという初めて行動推定器300が体験する道具であっても、道具からの反力の法線方向に動くように自律的に学習したと考えられる。
【0102】
このように、本実施形態によれば、物体操作技能の学習時には設定されていなかった未知の角度φに定規Jを設定しても、行動推定器300は自動行動で定規Jに沿って線を描画することができた。これに加えて、本実施形態によれば、物体操作技能の学習時には用いられなかった分度器Bという未知の物体に対して、行動推定器300は自動行動で曲線を描くことができた。
【0103】
(行動推定装置の変形例)
次に、行動推定装置100の変形例について説明する。図26は、行動推定装置100の変形例を示すブロック図である。図1,5に示した行動推定装置100と重複する部分の説明は省略し、図1,5に示した行動推定装置100と異なる部分のみ説明する。
【0104】
図1,5に示した行動推定装置100と比較して、変形例の行動推定装置100´´は、前処理部450をさらに含んでいる点が異なる。前処理部450は、スレーブロボット520から出力された位置応答、力応答、および画像/音響/触覚情報に対して前処理を行う。すなわち、本実施形態における行動推定器300´´(物体操作AI)は、角度、角速度、トルク等を入力した際に、適切な指令値を推定するものである。しかし、角度、角速度、トルクは次元が違うので、図21、22などで説明したようなスレーブロボット720の場合には、0-1rad程度の角度指令値、100-1000mN・m程度のトルク指令値が入力される。行動推定器300´´(AI)は数値の物理的な意味など理解できないので、0から1まで入力されるもの、100から1000まで入力されるもの、といったことしか理解できない。すると、行動推定器300´´(AI)は、大きく動く数値の影響ばかりを考慮する可能性がある。すなわち図21、22などで説明したようなスレーブロボット720の場合には、行動推定器300´´が100から1000に大きく動くトルクの影響ばかりを考慮して適切な指令値を推定できないおそれがある。
【0105】
そこで、前処理部450は、スレーブロボット520から出力されるこのような次元の違う物理量に対して前処理の一例として正規化処理を施し、正規化された値を行動推定器300´´に出力する。正規化とは、一例を挙げると、dを各パラメータ、dnを正規化後の各パラメータ、dmaxを各パラメータの最大値、dminを各パラメータの最小値とした場合に、dn=(d-dmin)/(dmax-dmin)の式で数値を変換することによって、各パラメータの値を最小値0から最大値1の範囲内の値に変換する処理である。図27は、前処理部450による正規化の一例を示す図である。図27に示すように、前処理部450は、一例として、-1000から1000までの範囲のパラメータが入力された場合に、-1から1の範囲に正規化して出力することができる。前処理部450を設けることによって、入力される物理量に次元の違いがあっても同じ変動幅にすることができるので、行動推定器300´´は、適切な指令値を推定することができる。
【0106】
また、前処理部450は、スレーブロボット520から出力される力応答について、力応答の第1の範囲における変動に対する正規化後の値の変動が、第1の範囲より大きい第2の範囲における変動に対する正規化後の値の変動よりも大きくなるように正規化を行うことができる。図28は、前処理部450による正規化の一例を示す図である。図28に示すように、前処理部450は、例えば0から500までの第1の範囲においては、力応答の所定の変動に対して正規化後の値の変動は大きいが、例えば501から1000までの第2の範囲においては、力応答の同じ所定の変動に対して正規化後の値の変動は小さくなる。これは、スレーブロボット520が行う物体操作の種類によっては、要求される力の粗さが異なるためである。例えば、非常に壊れやすい物体を操作するときであれば、数Nの力の差異によって物体の破損など、全く異なる結果を起こし得る。一方、ダンベルを持ち上げるような数100Nの力を発揮するような物体操作であれば、数Nの力の差異があっても特に結果に違いが現れ難い。一方、角度の場合、例えば0radから0.1radに変える指令値は、1radから1.1radに変える指令値とさして物理的な相違点はない。画像情報においても、黒に近い画像が少し明るくなることと、白に近い画像が少し明るくなることにもさしたる違いはない。すなわち、力を入出力として取り扱うときに初めて「小さい数値における変動と大きい数値における変動」の意味が異なるのである。
【0107】
そこで、前処理部450は、スレーブロボット520から出力された位置応答および画像/音響/触覚情報に対しては、例えば図27に示すように、小さい値から大きい値まで等しい重みでパラメータを変換する正規化を行う一方、スレーブロボット520から出力された力応答に対しては、例えば、図28に示すように、小さい力の変動の影響をより大きく考慮できる正規化を行う。これにより、行動推定器300´´は、小さな力の変動を、大きな力の変動よりも大きく評価することができる。
【0108】
なお、図26では、前処理部450は、スレーブロボット520から出力された位置応答、力応答、および画像/音響/触覚情報に対して正規化処理を行う例を示したが、本実施形態はこれに限定されない。前処理部450は、例えば、行動推定器300´´から出力される位置指令値および力指令値、またはスレーブロボット520に入力される位置制御入力および力制御入力に対して正規化を行うこともできる。
【0109】
また、上記では、前処理部450は、力応答の強弱に応じて変換の重み付けを変える例を示したが、力応答の強弱ではなく、力応答の長期的な変動に対する正規化後の値の変動と、短期的な変動に対する正規化後の値の変動とが異なるように正規化を行うことができる。つまり、前処理部450は、長期的に加えられるオフセットのような力と、短期的に変動する力に対して重み付けを変えることもできる。長期的に変動する力とは、例えば、ロボットの自重を支える力、紙面との接触力を維持する最低限の力、定規との接触を維持する最低限の力など、動作に対する拘束として作用し、ロボットをある一定の運動状態にする比較的大きな力のことである。また、短期的に変動する力とは、線の濃淡を決定する力、定規や紙面との摩擦力を調整する力など、ある一定の運動状態における微細な変動に相当する力のことである。
【0110】
また、図29は、行動推定装置100の変形例を示すブロック図である。図26に示した行動推定装置100´´と重複する部分の説明は省略し、図26に示した行動推定装置100´´と異なる部分のみ説明する。図29の変形例は、図26に示した行動推定装置100´´に対して、力分類部460をさらに含む点が異なる。
【0111】
力分類部460は、スレーブロボット520から出力される力応答を受信し、受信した力応答の大きさに応じて複数の力応答に分類する。例えば、力分類部460は、100から1000までの範囲の力のパラメータを受信する場合に、100から500までの範囲のパラメータを第1の力(弱い力)に分類し、501から1000までの範囲のパラメータを第1の力より大きい第2の力(強い力)に分類して、前処理部450へ出力する。この場合、前処理部450は、力分類部460によって分類された複数の力応答のそれぞれに対して正規化を行うことができる。つまり、前処理部450は、弱い力応答と強い力応答を全く別の入力として扱うことができる。このように入力の数を増やすことによって、前処理部450は、正規化を工夫しなくてもよく、例えば、図27に示すような簡単な正規化を用いることができる。なお、図29では、力分類部46がスレーブロボット520から出力される力応答を、力応答の大きさに応じて複数に分類する例を示したが、これに限定されない。力分類部46は、行動推定器300´´から出力される力指令値、またはスレーブロボット520に入力される力制御入力、の少なくともいずれか1つを力指令値、または力制御入力の大きさに応じて複数に分類することもできる。これにより、力分類部450によって分類された複数の力応答、力指令値、または力制御入力を異なる力応答、力指令値、または力制御入力として扱うことができる。
【0112】
このように、スレーブロボット520から出力される力応答を複数の応答に分類し、それぞれの力応答をそもそも別の情報として取り扱い、前処理部450および行動推定器300´´に対する入力の数を増やすことで、それぞれの力応答に対して全く別の反応をするAIを作ることができる。
【0113】
また、図1の例では、収集部200は、マスタロボット510から出力される位置応答および力応答を技能データとして収集する例を示したが、本実施形態はこれに限定されない。収集部200は、マスタロボット510から出力される力応答を、力応答の大きさに応じて複数の技能データに分けて収集することができる。収集部200は、例えば、マスタロボット510から出力される力応答を、弱い力応答と、強い力応答に分けて収集することができる。この場合、収集部200は、弱い力応答と、弱い力応答に対応する位置応答および画像/音響/触覚情報とを第1の技能データとして収集するとともに、強い力応答と、強い力応答に対応する位置応答および画像/音響/触覚情報とを第2の技能データとして収集することができる。
【0114】
例えば、収集部200は、最初は弱い力応答に関する第1の技能データを収集して行動推定器300に学習させる。次に収集部200は、強い力応答に関する第2の技能データを収集して行動推定器300に学習させる。行動推定器300は、収集された第1の技能データと第2の技能データを統合して学習することによって、弱い力から強い力まで対応できるようになる。弱い力応答に関する技能データの収集とは、例えば、薄い線を描く、軽く消しゴムで線を消すなどの物体操作作業に関する技能データの収集である。また、強い力応答に関する技能データの収集とは、例えば、濃い線を描く、強く消しゴムで線を消すなどの物体操作作業に関する技能データの収集である。
【0115】
次に、技能データの前処理について説明する。図30は、行動推定装置100の変形例を示すブロック図である。図5に示した行動推定装置100と重複する部分の説明は省略し、図5に示した行動推定装置100と異なる部分のみ説明する。図30の行動推定装置100は、技能データに前処理を行う技能データ前処理部470を含む。
【0116】
技能データ前処理部470は、収集部200によって収集された技能データを読み出し、読み出した技能データをスレーブロボット520(制御対象体)の動作周波数に応じた周波数によってサンプリングして間引き技能データを生成する。技能データ前処理部470は、生成した間引き技能データを行動推定器300に送る。技能データ前処理部470は、収集部200によって収集された技能データに含まれる位置情報、力情報、画像情報、音響情報、および触覚情報のそれぞれに対して、スレーブロボット520(制御対象体)の動作周波数に応じた周波数によってサンプリングして間引き技能データを生成することができる。
【0117】
ここで、スレーブロボット520の動作周波数に応じた周波数とは、スレーブロボット520の動作周波数の5倍から100倍程度の周波数であり、より好ましくは、スレーブロボット520の動作周波数の20倍から50倍程度の周波数である。この点を、消しゴムを用いて線消しを行うためのバイラテラルシステム(図21および図22)を例に挙げて説明する。図21および図22のバイラテラルシステムにおいて、スレーブロボット720は、消しゴムEをY軸の方向に1秒間に2往復移動させるとする。すなわち、スレーブロボット720のY軸の方向の動作周波数は2Hzであるとする。この場合、スレーブロボット720の動作周波数に応じた周波数は、10Hzから200Hzであり、より好ましくは、40Hzから100Hzである。
【0118】
次に、技能データ前処理部470の処理の概念を説明する。図31は、技能データ前処理部のサンプリング処理の概念を説明するための図である。技能データ前処理部470は、収集部200によって収集された元の技能データ810に対して所定の周波数でサンプリングを行う、つまり丸印で示した複数のサンプリングポイント812の技能データを収集することによって、間引き技能データ820を生成する。上記間引き技能データ820はサンプリングポイント812間を直線で接続したものであるが、元の技能データ810とほぼ同様の概形をしていることがわかる。
【0119】
行動推定器300は、技能データ前処理部470から送られた間引き技能データ820およびスレーブロボット520(制御対象体)から出力される応答に基づいて、スレーブロボット520(制御対象体)を自動行動させるための指令値を推定する。
【0120】
本実施形態によれば、行動推定器300の処理負荷およびコストを抑制し、かつ、正しい指令値を得ることができる。すなわち、収集部200によって収集された元の技能データ810が密である場合、元の技能データ810をそのまま使用すると、制御対象体を自動行動させるための行動推定器300による指令値の推定処理の負荷が大きくなるので、行動推定器300のコストが増大する。一方、収集部200によって収集された元の技能データ810を粗く間引きしすぎると、正しい指令値を得ることが難しくなる。この点、本発明者らは、制御対象体の動作周波数の5倍から100倍程度の周波数、より好ましくは、制御対象体の動作周波数の20倍から50倍の周波数によって技能データをサンプリングした間引き技能データを用いることによって、行動推定器300の処理負荷およびコストを抑制し、かつ、正しい指令値を得ることができることを見出した。
【0121】
次に、技能データの前処理の他の例について説明する。技能データ前処理部470は、収集部200によって収集された技能データを制御対象体の動作周波数に応じた周波数によって複数の異なるタイミングでサンプリングして複数の間引き技能データを生成することができる。
【0122】
この点について、図32を用いて説明する。図32は、技能データ前処理部の異なるタイミングでのサンプリング処理の概念を説明するための図である。技能データ前処理部470は、元の技能データ810に対して、丸印で示した複数のサンプリングポイント812の技能データを収集することによって、間引き技能データ820を生成する。また、技能データ前処理部470は、元の技能データ810に対して、サンプリングポイント812とは異なるタイミングの複数の三角印で示したサンプリングポイント814の技能データを収集することによって、間引き技能データ830を生成する。さらに、技能データ前処理部470は、元の技能データ810に対して、サンプリングポイント812およびサンプリングポイント814とは異なるタイミングの複数の四角印で示したサンプリングポイント816の技能データを収集することによって、間引き技能データ840を生成する。つまり、技能データ前処理部470は、1つの元の技能データ810から3つの間引き技能データ820、830、840を生成して、間引いた技能データを再利用することができる。
【0123】
このように技能データ前処理部470が複数の間引き技能データを生成した場合、行動推定器300は、複数の間引き技能データ820、830、840および制御対象体から出力される応答に基づいて制御対象体を自動行動させるための指令値を推定する。
【0124】
本実施形態の有効性を検証するために、図21および図22のバイラテラルシステムを用いて、3つのモデルの比較実験を行った。第1のモデルは、多数の技能データを取得し、技能データの再利用を行わない手法である。すなわち、紙面Pの3つの高さ(例えば、20mm、50mm、80mm)のそれぞれついて5回ずつ、消しゴムEを用いた線消しの技能データを取得し、合計15個の技能データに対してそれぞれ図31の間引き処理を行って15個の間引き技能データを生成した。
【0125】
第2のモデルは、少数の技能データを取得し、技能データの水増しを行う手法である。すなわち、紙面Pの3つの高さ(例えば、20mm、50mm、80mm)のそれぞれついて1回ずつ、消しゴムEを用いた線消しの技能データを取得し、合計3個の技能データに対してそれぞれ図32の間引き再利用処理(20通りの再利用処理)を行って60個の間引き技能データを生成した。
【0126】
第3のモデルは、少数の技能データを取得し、技能データの再利用を行わない手法である。すなわち、紙面Pの3つの高さ(例えば、20mm、50mm、80mm)のそれぞれついて1回ずつ、消しゴムEを用いた線消しの技能データを取得し、合計3個の技能データに対してそれぞれ図31の間引き処理を行って3個の間引き技能データを生成した。
【0127】
3つのモデルのそれぞれで生成した間引き技能データを用いてスレーブロボット720に自動行動させたところ、第1のモデルと第2のモデルの場合は、同等に良好に線消しを行うことができた。一方、第3のモデルの場合は、良好に線消しを行うことができなかった。これらの結果から、間引き技能データの再利用を行わない場合にはある程度の数の技能データの取得が必要ということがわかる。これに対して、本実施形態のように間引き技能データを再利用する場合には、少数の技能データしか取得していなくても、多数の技能データを取得した場合と同等に制御対象体の自動行動を実現することができる。したがって、本実施形態によれば、技能データの取得労力を削減し、かつ、制御対象体の良好な自動行動を実現することができる。
【0128】
次に、技能データの前処理の他の例について説明する。技能データ前処理部470は、収集部200によって収集された技能データに含まれる複数種類の情報を、制御対象体の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成することができる。
【0129】
この点について、図21および図22のバイラテラルシステムを用いて文字「A」を紙に書くタスクの実験を用いて説明する。図33~35は、文字「A」を紙に書くタスクの結果を示す図である。本実験では、机から紙面までの高さが10mm、40mm、70mmの3パターンで技能データを与え、紙面の高さが未知である状況でも文字「A」を書くことができるか、技能データの間引き(サンプリング)の周期を変えながら比較した。第1のモデルは、技能データに含まれるすべての情報(位置情報および力情報)を短周期でサンプリング処理するモデルである。この場合、図33に示すように、スレーブロボット720は、まったく文字「A」を書くことができなかった。
【0130】
一方、第2のモデルは、技能データに含まれる位置情報および力情報のそれぞれに対して、短周期と長周期でサンプリング処理を行い、それぞれ別にAIを学習させるモデルである。この場合、図34に示すように、スレーブロボット720は、文字「A」の概形を正しく捉えることができたが、応答が振動的であった。
【0131】
他方、第3のモデルは、技能データに含まれる位置情報については長周期でサンプリング処理を行い、力情報については短周期でサンプリング処理を行って複数の間引き技能データを生成するモデルである。この場合、図35に示すように、スレーブロボット720は、未知の紙面高さであっても正しく文字「A」を書くことができた。
【0132】
なお、本実験のように文字「A」を書くというタスクについては、位置情報を長周期、力情報を短周期でサンプリング処理を行うと良い結果が得られた。しかしながら、技能データのサンプリング処理は、必ずしも位置情報は長周期がよく力情報は短周期が良いというわけではなく、タスクに依存する。大事なことは、各情報(位置情報や力情報)でサンプリング周期を変えて良いこと、および、各情報について、図34に示すように複数個の周期を持たせてもよいということである。また、本実験では、位置情報および力情報について説明したが、画像情報、音響情報、および触覚情報についてもこのように間引き周期を変えることは有効である。
【0133】
また、技能データ前処理部470は、上記の複数の間引き技能データ同士の相関が小さくなるように、収集部200によって収集された技能データに含まれる複数種類の情報を、制御対象体の動作周波数に応じた異なる周波数でサンプリングして複数の間引き技能データを生成することができる。
【0134】
この点について図36を用いて説明する。図36は、間引き技能データ同士の相関について説明するための図である。機械学習の分野においては、入力同士の相関が小さくなるようにすると良いことが知られている。すなわち、技能データのサンプリング処理を短周期と長周期に分けるだけだと、図36の左側に示すように、長周期でサンプリングした間引き技能データ850と、短周期でサンプリングした間引き技能データ860は、多少の違いはあるものの、相関は大きい。一方、例えば、技能データのサンプリング処理を「長周期」と「長周期-短周期」とすると、図36の右側に示すように、長周期でサンプリングした間引き技能データ850と、長周期-短周期でサンプリングした間引き技能データ870の相関が小さくなる。このように、複数の間引き技能データ同士の相関が小さくなるようにサンプリング処理を行うことによって、制御対象体の良好な自動行動を実現することができる。
【符号の説明】
【0135】
100 行動推定装置
200 収集部
300 行動推定器
410 位置制御器
420 力制御器
450 前処理部
470 技能データ前処理部
500,600 バイラテラルシステム
510,610 マスタロボット
520,620 スレーブロボット
820、830、840,850,860,870 間引き技能データ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36