(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-12
(45)【発行日】2024-09-24
(54)【発明の名称】ロボット制御システム、ロボットシステム、操作システム、ロボット制御方法、およびロボット制御プログラム
(51)【国際特許分類】
B25J 13/06 20060101AFI20240913BHJP
B25J 13/00 20060101ALI20240913BHJP
【FI】
B25J13/06
B25J13/00 Z
(21)【出願番号】P 2021575596
(86)(22)【出願日】2020-04-14
(86)【国際出願番号】 JP2020016460
(87)【国際公開番号】W WO2021157104
(87)【国際公開日】2021-08-12
【審査請求日】2023-02-09
(32)【優先日】2020-02-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】藤田 政之
(72)【発明者】
【氏名】畑中 健志
(72)【発明者】
【氏名】山内 淳矢
(72)【発明者】
【氏名】野田 光世
(72)【発明者】
【氏名】嶌本 慶太
(72)【発明者】
【氏名】曽我部 光司
(72)【発明者】
【氏名】平田 亮吉
(72)【発明者】
【氏名】足立 勝
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2019-202404(JP,A)
【文献】五十嵐 洋,操作入力予測による操作支援と操作特性への影響,第27回日本ロボット学会学術講演会予稿集DVD-ROM 2009年,日本,社団法人日本ロボット学会,2009年09月15日
【文献】松原 崇充,ガウス過程に基づくロボットの運動制御・学習 -解析的モーメントマッチングによる近似推論,システム/制御/情報,日本,一般社団法人システム制御情報学会,2016年12月15日,第60巻 第12号,pp.13-18
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
(57)【特許請求の範囲】
【請求項1】
ユーザ操作に応じてロボットを制御するロボット制御システムであって、
過去の操作に基づいて生成された学習済みモデルであって、前記ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差における前記ロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、前記分布度を出力する推論部と、
前記学習済みモデルから出力される分布度に基づいて、前記ロボットの操作をアシストする度合いであるアシスト度を、該分布度が小さいほど該アシスト度が大きくなるように設定する設定部と、
前記ユーザ操作により操作装置から入力された入力指令値と前記アシスト度とに基づいて、前記ロボットへと出力される出力指令値を生成する生成部と、
を備えるロボット制御システム。
【請求項2】
ユーザ操作に応じてロボットを制御するロボット制御システムであって、
過去の操作に基づいて生成された学習済みモデルであって、前記ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差における前記ロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、前記分布度を出力する推論部と、
前記学習済みモデルから出力される分布度に基づいて、前記ロボットの操作をアシストする度合いであるアシスト度を設定する設定部と、
前記ユーザ操作により操作装置から入力された入力指令値と前記アシスト度とに基づいて、前記ロボットへと出力される出力指令値を生成する生成部と、
前記ロボットが実行可能な複数のタスクのそれぞれに対応する複数の前記学習済みモデルから、前記ロボットが実行すべきタスクに対応する前記学習済みモデルを選択する選択部と、
を備え、
前記推論部は、前記選択された学習済みモデルに基づいて前記分布度を出力する、
ロボット制御システム。
【請求項3】
前記ロボットが実行すべきタスクをセンサデータに基づいて特定する特定部を更に備え、
前記選択部は、前記特定されたタスクに基づいて前記学習済みモデルを選択する、
請求項
2に記載のロボット制御システム。
【請求項4】
前記学習済みモデルは、前記分布度に加えて、前記過去の操作に基づいて予測される指令値である予測指令値を出力し、
前記生成部は、前記入力指令値、前記アシスト度、および前記予測指令値に基づいて前記出力指令値を生成する、
請求項
1~3のいずれか一項に記載のロボット制御システム。
【請求項5】
前記生成部は、前記アシスト度に応じた割合で前記入力指令値と前記予測指令値とを混合し、前記出力指令値を生成する、
請求項
4に記載のロボット制御システム。
【請求項6】
前記学習済みモデルは、前記ユーザとは異なる他のユーザの前記過去の操作に基づいて生成された第1モデルを含み、
前記推論部は、前記第1モデルから出力される第1分布度
および前記予測指令値を出力し、
前記設定部は、前記第1分布度に基づいて第1アシスト度を設定し、
前記生成部は、前記入力指令値、前記第1アシスト度
、および前記予測指令値に基づいて前記出力指令値を生成する、
請求項
4または5に記載のロボット制御システム。
【請求項7】
前記第1モデルは、前記ユーザよりも操作に熟練した熟練者の前記過去の操作に基づいて生成された熟練モデルである、
請求項
6に記載のロボット制御システム。
【請求項8】
前記学習済みモデルは、前記ユーザの前記過去の操作に基づいて生成された第2モデルを含み、
前記推論部は、前記第2モデルから出力される第2分布度を出力し、
前記設定部は、前記第2分布度に基づいて第2アシスト度を設定し、
前記生成部は、前記入力指令値、前記第1アシスト度、および前記第2アシスト度に基づいて、前記出力指令値を生成する、
請求項
6又は7に記載のロボット制御システム。
【請求項9】
前記生成部は、
前記第2アシスト度が閾値以上である場合に、前記入力指令値と、前記第1アシスト度と、前記第1モデルから出力される、前記過去の操作に基づいて予測される指令値である予測指令値とに基づいて前記出力指令値を生成し、
前記第2アシスト度が前記閾値未満である場合に、前記第1アシスト度及び前記予測指令値を用いることなく、前記入力指令値に基づいて前記出力指令値を生成する、
請求項
8に記載のロボット制御システム。
【請求項10】
前記学習済みモデルは、ガウス過程に基づいて前記分布度を出力する、
請求項1~
9のいずれか一項に記載のロボット制御システム。
【請求項11】
前記ロボットは前記ユーザから遠隔に位置する、
請求項1~10のいずれか一項に記載のロボット制御システム。
【請求項12】
前記ロボットと、
請求項1~11のいずれか一項に記載のロボット制御システムと、
を備えるロボットシステム。
【請求項13】
前記ユーザ操作を受け付ける操作コントローラと、
請求項1~11のいずれか一項に記載のロボット制御システムと、
を備える操作システム。
【請求項14】
ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムにより実行されるロボット制御方法であって、
過去の操作に基づいて生成された学習済みモデルであって、前記ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差における前記ロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、前記分布度を出力するステップと、
前記学習済みモデルから出力される分布度に基づいて、前記ロボットの操作をアシストする度合いであるアシスト度を、該分布度が小さいほど該アシスト度が大きくなるように設定するステップと、
前記ユーザ操作により操作装置から入力された入力指令値と前記アシスト度とに基づいて、前記ロボットへと出力される出力指令値を生成するステップと、
を含むロボット制御方法。
【請求項15】
ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムとしてコンピュータを機能させるロボット制御プログラムであって、
過去の操作に基づいて生成された学習済みモデルであって、前記ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差における前記ロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、前記分布度を出力するステップと、
前記学習済みモデルから出力される分布度に基づいて、前記ロボットの操作をアシストする度合いであるアシスト度を、該分布度が小さいほど該アシスト度が大きくなるように設定するステップと、
前記ユーザ操作により操作装置から入力された入力指令値と前記アシスト度とに基づいて、前記ロボットへと出力される出力指令値を生成するステップと、
を前記コンピュータに実行させるロボット制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面は、ロボット制御システム、ロボットシステム、操作システム、ロボット制御方法、およびロボット制御プログラムに関する。
【背景技術】
【0002】
特許文献1には、作業者操作力、周囲環境データ、動作データ、および動作指令を機械学習することで構築されたモデルにより、動作センサが検出した動作データおよび周囲環境センサが検出した周囲環境データと、中継装置が出力した動作指令とに基づいて、演算操作力を推定するロボットシステムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットの操作を適切にアシストすることが望まれている。
【課題を解決するための手段】
【0005】
本開示の一側面に係るロボット制御システムは、ユーザ操作に応じてロボットを制御するロボット制御システムであって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力する推論部と、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定する設定部と、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成する生成部とを備える。
【0006】
本開示の一側面に係るロボット制御方法は、ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムにより実行されるロボット制御方法であって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力するステップと、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定するステップと、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成するステップとを含む。
【0007】
本開示の一側面に係るロボット制御プログラムは、ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムとしてコンピュータを機能させるロボット制御プログラムであって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力するステップと、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定するステップと、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成するステップとをコンピュータに実行させる。
【発明の効果】
【0008】
本開示の一側面によれば、ロボットの操作を適切にアシストすることができる。
【図面の簡単な説明】
【0009】
【
図1】ロボット制御システムの適用の一例を示す図である。
【
図2】ロボット制御システムのために用いられるハードウェア構成の一例を示す図である。
【
図4】操作装置の詳細な機能構成の一例を示すブロック線図である。
【
図5】ロボット制御システムの動作の一例を示すフローチャートである。
【
図6】モデルデータベースに記憶される学習済みモデルの一例を示す図である。
【
図7】出力指令値を生成する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0011】
[システムの構成]
実施形態に係るロボット制御システム1は、ユーザの操作に応じてロボット2を制御するコンピュータシステムである。ロボット2はその操作に基づいて動作して、加工、組立等の様々な作業を実行する。ユーザとはロボットを操作する人をいい、したがって、操作者ともいうことができる。
【0012】
図1はロボット制御システム1の適用の一例を示す図である。一例では、ロボット制御システム1は操作装置10を備える。操作装置10は通信ネットワークNを介してロボット用コンピュータ3と接続される。ロボット用コンピュータ3はロボットコントローラ4と接続され、ロボットコントローラ4はロボット2と接続される。
【0013】
図1では操作装置10およびロボット2を一つずつ示す。しかし、操作装置10およびロボット2の個数はいずれも限定されず、操作装置10およびロボット2の少なくとも一方が複数個存在してもよい。
【0014】
一例では、操作装置10はユーザが存在する操作環境Euに位置するのに対して、ロボット用コンピュータ3、ロボットコントローラ4、およびロボット2はユーザにとって遠隔に位置する作業環境Ewに位置する。すなわち、操作環境Euから見ると作業環境Ewは遠隔環境である。或る物が「遠隔に位置する」とは、ユーザが自身の目で確認できない位置にその物が存在することをいう。操作環境Euと作業環境Ewとの間の距離、すなわちユーザとロボット2との間の距離は何ら限定されない。例えば、作業環境Ewは操作環境Euからキロメートルのオーダーで離れていてもよい。あるいは、作業環境Ewは操作環境Euから数メートルのオーダーで離れていてもよく、例えば、操作環境Euである部屋の隣の空間が作業環境Ewでもよい。
【0015】
操作環境Euと作業環境Ewとの間の距離が限定されないことに対応して、通信ネットワークNの構成も限定されない。例えば、通信ネットワークNはインターネットおよびイントラネットの少なくとも一方を含んで構成されてもよい。あるいは、通信ネットワークNは1本の通信ケーブルによって実現される単純な構成であってもよい。
【0016】
操作装置10はロボット2を操作するためのコンピュータである。一例では、操作装置10は、ロボット2を操作するための入力インタフェースである操作インタフェースと、作業環境Ewを写す画像を表示可能なモニタとを備える。ユーザはモニタに表示された作業環境Ewを確認しながら操作インタフェースでロボット2を操作することができる。操作装置10は操作インタフェースから入力されたユーザ操作(指令)を示す指令値をロボット用コンピュータ3に向けて送信する。指令とは、ユーザ操作によって入力される命令をいう。指令値とは指令に関する値をいう。指令に関する値とは、例えば、ユーザ操作に対応する追加の移動ベクトルに関する値、すなわち、移動量または移動速度と移動方向とを示す値である。
【0017】
ロボット用コンピュータ3は操作装置10から入力された指令値を解釈して、その指令値に対応する指令信号をロボットコントローラ4に出力するコンピュータである。
【0018】
ロボットコントローラ4は、ロボット用コンピュータから入力された指令信号に従ってロボット2を制御する装置である。言い換えると、ロボットコントローラ4は、ユーザ操作に応じて操作装置10から送られてくる指令に基づいてロボット2を制御する。一例では、指令信号はロボット2を制御するためのデータを含み、例えば、ロボット2の軌道を示すパスを含む。ロボット2の軌道とは、ロボット2またはその構成要素の動きの経路のことをいう。例えば、ロボット2の軌道は先端部の軌道であり得る。一例では、ロボットコントローラ4は、指令信号で示される目標値に先端部の位置および姿勢を一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、その角度目標値に従ってロボット2を制御する。
【0019】
ロボット2は、人に代わって作業する装置または機械である。一例では、ロボット2は多軸のシリアルリンク型の垂直多関節ロボットである。ロボット2は、マニピュレータ2aと、該マニピュレータ2aの先端に取り付けられたツールであるエンドエフェクタ2bとを備える。ロボット2はそのエンドエフェクタ2bを用いて様々な処理を実行することができる。ロボット2は、所定の範囲内においてエンドエフェクタ2bの位置および姿勢を自在に変更し得る。ロボット2は、6軸の垂直多関節ロボットでもよいし、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットでもよい。
【0020】
ロボット2の動作または状態は各種のセンサによってロボット2の応答として記録されて、センサデータとして例えばロボットコントローラ4に出力される。応答とは、指令に対する出力をいい、より具体的には、指令に対するロボット2の動作または状態をいう。動作または状態は任意のデータ項目によって表されてよく、例えば、位置、姿勢、速度、加速度、トルク、力、および電流値のうちの少なくとも一つによって表されてもよい。ロボット2の動作または状態は、エンドエフェクタ2bの動作または状態によって表されてもよい。
【0021】
応答を示す情報の種類は限定されず、例えば、応答はロボット2の動作または状態を示す情報でもよいし、ロボットコントローラ4からロボット2へと出力される命令により示されてもよい。センサはロボット2に搭載されてもよいし、ロボット2に搭載されることなく該ロボット2とから独立して設けられてもよい。センサの種類は限定されず、例えば、加速度センサ、電圧センサ、電流センサ、温度センサ、ジャイロセンサ、カメラ、圧力センサ、ToF(Time-of-Flight)センサなどの各種のセンサが用いられてよい。
【0022】
ロボットコントローラ4はロボット2の動作または状態(すなわち応答)を示す応答値をそのセンサデータに基づいて算出し、その応答値をロボット用コンピュータ3経由で操作装置10へと送信する。応答値とは応答に関する値をいう。応答に関する値とは、例えば、ロボットの追加の動作を示す追加の移動ベクトルに関する値、すなわち、移動量または移動速度と移動方向とを示す値である。ロボットコントローラ4はロボット2への指令信号を応答値として、ロボット用コンピュータ3経由で操作装置10へと送信してもよい。ロボット2のセンサからのセンサデータの少なくとも一部は、ロボットコントローラ4を経由することなくロボット用コンピュータ3に出力されてもよい。この場合には、ロボット用コンピュータ3がそのセンサデータに基づいて応答値を算出してもよい。
【0023】
ユーザの技能または作業環境Ewの状況によっては、ユーザが自分の意図するようにロボット2を操作できない場合がある。例えば、作業環境Ewを写す画像が不鮮明であったり、ユーザ操作と画像に映るロボット2の動作との間に遅延が発生したりすると、ユーザが作業環境Ewの情報を十分に得ることができず、そのためにロボット2を正確に操作できない可能性がある。ここで、遅延とは、ロボット2への指令に対して、画像に映る該ロボット2の動作または状態が遅れることをいう。あるいは、ユーザがロボット2の操作に不慣れである場合も、ロボット2を正確にまたは効率的に操作できない可能性がある。ロボット制御システム1はそのようなユーザによるロボット2の操作をアシストし、これにより、ユーザが自分の意図するようにロボット2を操作することが可能になる。「ロボットの操作をアシストする」または「ユーザ操作をアシストする」とは、ロボット2を適切に(例えば正確に)動作させるための環境をユーザに提供することをいう。
【0024】
ロボット制御システム1はそのアシストのために機械学習モデルを用いる。機械学習とは、与えられた情報に基づいて反復的に学習することで、法則またはルールを自律的に見つけ出す手法をいう。機械学習モデルとは、機械学習で用いられる計算モデルである。機械学習モデルはアルゴリズムおよびデータ構造を用いて構築することができる。機械学習モデルの基となる具体的なアルゴリズムは限定されない。一例では、ロボット制御システム1は、入力から出力を予測する関数の確率分布を得ることができる機械学習モデルを用いる。例えば、機械学習モデルはガウス過程(Gaussian Process)を用いて構築されてもよい。ガウス過程とは、無限次元のガウス分布をいう。ガウス過程はそのガウス分布の平均および分散によって特徴付けられる。本実施形態では、ロボット制御システム1がガウス過程による機械学習モデルを用いることを前提とする。
【0025】
自律的に生成された機械学習モデルを「学習済みモデル」という。学習済みモデルは、ロボット2の操作をアシストするために最適であると推定される計算モデルであり、“現実に最適である計算モデル”とは限らないことに留意されたい。学習済みモデルを生成する処理は学習フェーズに相当する。学習フェーズでは、所与のコンピュータシステムが過去の操作に基づいて機械学習を実行して学習済みモデルを生成する。ロボット制御システム1はその学習済みモデルを用いてロボット2の操作をアシストする。このアシストは運用フェーズに相当する。
【0026】
学習済みモデルはコンピュータシステム間で移植可能である。したがって、或るコンピュータシステムで生成された学習済みモデルを別のコンピュータシステムで用いることができる。もちろん、一つのコンピュータシステムが学習済みモデルの生成および利用の双方を実行してもよい。ロボット制御システム1は学習フェーズおよび運用フェーズの双方を実行してもよい。あるいは、ロボット制御システム1は学習フェーズを実行することなく、他のコンピュータシステムにより生成された学習済みモデルを用いて運用フェーズを実行してもよい。
【0027】
操作装置10またはロボット用コンピュータ3として機能するコンピュータは限定されない。一例では、これらのコンピュータは、パーソナルコンピュータによって構成されてもよいし、業務用サーバなどの大型のコンピュータによって構成されてもよい。
【0028】
図2は、操作装置10またはロボット用コンピュータ3のために用いられるコンピュータ100のハードウェア構成の一例を示す図である。この例では、コンピュータ100は本体110、モニタ120、および入力デバイス130を備える。
【0029】
本体110は少なくとも一つのコンピュータにより構成される。本体110は回路160を有し、回路160は、少なくとも一つのプロセッサ161と、メモリ162と、ストレージ163と、入出力ポート164と、通信ポート165とを有する。ストレージ163は、本体110の各機能モジュールを構成するためのプログラムを記録する。ストレージ163は、ハードディスク、不揮発性の半導体メモリ、磁気ディスク、光ディスク等の、コンピュータ読み取り可能な記録媒体である。メモリ162は、ストレージ163からロードされたプログラム、プロセッサ161の演算結果等を一時的に記憶する。プロセッサ161は、メモリ162と協働してプログラムを実行することで、各機能モジュールを構成する。入出力ポート164は、プロセッサ161からの指令に応じて、モニタ120または入力デバイス130との間で電気信号の入出力を行う。入出力ポート164はロボットコントローラ4などの他の装置との間で電気信号の入出力を行ってもよい。通信ポート165は、プロセッサ161からの指令に従って、通信ネットワークNを介して他の装置との間でデータ通信を行う。
【0030】
モニタ120は、本体110から出力された情報を表示するための装置である。モニタ120は本開示における表示部の一例である。モニタ120は、グラフィック表示が可能であればいかなるものであってもよく、その具体例としては液晶パネル等が挙げられる。入力デバイス130は、本体110に情報を入力するための装置である。入力デバイス130は、所望の情報を入力可能であればいかなるものであってもよく、その具体例としてはキーパッド、マウス、操作コントローラ等の操作インタフェースが挙げられる。
【0031】
モニタ120および入力デバイス130はタッチパネルとして一体化されていてもよい。例えばタブレットコンピュータのように、本体110、モニタ120、および入力デバイス130が一体化されていてもよい。
【0032】
図3は操作装置10の機能構成の一例を示す図である。一例では、操作装置10は機能モジュールとして取得部11、特定部12、選択部13、推論部14、設定部15、および生成部16を備える。一例では、操作装置10はさらにモデルデータベース17を備える。
【0033】
取得部11は、ロボット2の指令または応答に関連するデータを操作環境Euまたは作業環境Ewから取得する機能モジュールである。例えば、取得部11は指令値および応答値(センサデータ)を取得する。
【0034】
特定部12は、ロボット2が実行すべきタスクを応答値(センサデータ)に基づいて特定する機能モジュールである。タスクとは、ロボット2による一連の処理を構成する最小単位の処理をいう。特定部12はさらに、ロボット2を操作しているユーザを特定する。
【0035】
選択部13は、ロボットが実行可能な複数のタスクのそれぞれに対応する複数の学習済みモデルから、特定されたタスクに対応する学習済みモデルを選択する機能モジュールである。選択部13は、所与の複数の学習済みモデルを記憶するモデルデータベース17にアクセスして、タスクに対応する学習済みモデルを選択する。
【0036】
それぞれの学習済みモデルは予め、訓練データを用いた機械学習によって生成されてモデルデータベース17に格納される。学習済みモデルを生成する具体的な手法は限定されず、任意の方針で設計されてよい。一例では、ガウス過程に基づく機械学習モデルを学習させる際には、共分散関数のハイパーパラメータと観測値のノイズとを用いて定義される誤差が最小になるようにハイパーパラメータが最適化される。ガウス過程による機械学習では、比較的少量の訓練データから学習済みモデルを構築できるので、訓練データを集める労力を低減することが可能になる。
【0037】
推論部14は選択された学習済みモデルに基づいて、ロボット2の現在状態と目標状態との状態差におけるロボット2の動作の分布の度合いである分布度を出力する機能モジュールである。現在状態とは、応答値から導出されるロボット2の現在の状態をいう。目標状態とは、ユーザが意図するロボット2の最終の状態をいい、例えば、ユーザが意図する作業が完了したときのロボット2の状態をいう。状態差とは現在状態と目標状態との差分であり、ロボット2が目標状態に達するまでに必要な残りの動作に対応する。分布度は学習済みモデルから出力される確率変数(例えば分散)によって表される。本実施形態では、学習済みモデルはガウス過程に基づいて分布度を出力する。
【0038】
設定部15は、その分布度に基づいて、ロボット2の操作をアシストする度合いであるアシスト度を設定する機能モジュールである。
【0039】
生成部16は、ユーザ操作により操作装置から入力された入力指令値と設定されたアシスト度とに基づいて、ロボット2へと出力される出力指令値を生成する機能モジュールである。
【0040】
図3の例ではモデルデータベース17が操作装置10内に構築されるが、モデルデータベース17の設置場所はこれに限定されない。例えば、モデルデータベース17は操作装置10とは別のコンピュータ上に構築されてもよく、この場合には、選択部13は所与の通信ネットワークを介してモデルデータベース17にアクセスする。
【0041】
図4は操作装置10の詳細な機能構成の一例を示すブロック線図である。操作装置10は、ロボット2の目標状態gを目指すユーザ9の操作を受け付けた操作コントローラから入力指令値u
hを得る。この入力指令値u
hは、ユーザ操作そのものを示すオリジナルの指令値であるといえる。また、操作装置10はロボット2の現在状態y
hを取得し、現在状態y
hと目標状態gとの状態差eを算出する。操作装置10は入力指令値U
hおよび状態差eに基づいて出力指令値uを生成し、この出力指令値uをロボット2に向けて送信する。一例では、操作装置10は入力指令値U
hそのものと、熟練者の経験が考慮されたアシスト指令値U
GPhという二つの候補のうちの一つを出力指令値uとして生成し、この出力指令値uを送信する。
図4ではこの処理をスイッチSWによって表現する。
【0042】
一例では、操作装置10は熟練モデル(第1モデル)141および自己モデル(第2モデル)142という2種類の学習済みモデルを推論部14として備え、これらの学習済みモデルを用いて出力指令値uを生成する。
【0043】
熟練モデル141は、ユーザ9とは異なる他のユーザの過去の操作に基づいて生成された学習済みモデルの一例である。より具体的には、熟練モデル141は、ユーザ9よりも操作に熟練した熟練者の過去の操作に基づいて生成された学習済みモデルである。一例では、熟練モデル141は状態差eを入力として受け付けて分散(第1分布度)μEXPおよび予測指令値uEXPを出力する。この分散(第1分布度)μEXPは状態差eにおける熟練者の操作の確からしさの度合いを示す。予測指令値uEXPは過去の操作に基づいて予測される指令値であり、より具体的には、熟練者の過去の操作に基づいて予測される指令値である。
【0044】
一方、自己モデル142はユーザ9の過去の操作に基づいて生成された学習済みモデルである。一例では、自己モデル142は入力指令値Uhおよび状態差eを入力として受け付けて分散(第2分布度)μOWNを出力する。この分散(第2分布度)μOWNは状態差eにおけるユーザ9自身の過去の操作との類似度を示す。
【0045】
設定部15は分布度に基づいてアシスト度を設定する。具体的には、設定部15は分散(第1分布度)μEXPに基づいて第1アシスト度γを設定する。設定部15はさらに、分散(第2分布度)μOWNに基づいて第2アシスト度を設定する。この第2アシスト度はスイッチSWの切り替えを決めるための指標である。すなわち、第2アシスト度は、入力指令値Uhとアシスト指令値UGPhとのどちらを出力指令値uとして採用するかを決めるために用いられる。
【0046】
生成部16は入力指令値Uh、第1アシスト度γ、第2アシスト度、および予測指令値uEXPのうちの少なくとも一つに基づいて、入力指令値Uhおよびアシスト指令値UGPhの一方を出力指令値uとして生成する。
【0047】
[ロボット制御方法]
本開示に係るロボット制御方法の一例として、
図5を参照しながら、ロボット制御システム1により実行される一連の処理手順の一例を説明する。
図5はロボット制御システム1の動作の一例を処理フローS1として示すフローチャートである。すなわち、ロボット制御システム1は処理フローS1を実行する。
【0048】
ステップS11では、特定部12がタスクおよびユーザを特定する。一例では、特定部12は取得部11により取得された応答値(センサデータ)に基づいて任意の手法でタスクを特定する。例えば、特定部12は予め設定された作業と応答値の履歴とに基づいて現在のタスクを特定してもよい。特定部12はさらに、任意の手法でユーザを特定する。例えば、特定部12はユーザ操作に先立って入力されたユーザIDを参照することでユーザを特定してもよい。
【0049】
ステップS12では、選択部13が、特定されたタスクに基づいて学習済みモデルを選択する。選択部13はモデルデータベース17にアクセスして、所与の複数の自己モデルから一つの自己モデルを選択し、所与の複数の熟練モデルから一つの熟練モデルを選択する。より具体的には、選択部13は特定されたユーザおよびタスクの組合せに対応する一つの自己モデルを選択し、特定されたタスクに対応する一つの熟練モデルを選択する。
【0050】
図6はモデルデータベース17に記憶される学習済みモデルの一例を模式的に示す図である。一例では、モデルデータベース17は、m人のユーザおよびn個のタスクの組合せに対応する(m×n)個の自己モデル171と、該n個のタスクに対応するn個の熟練モデル172とを記憶する。
図6の例を前提として、ユーザUyおよびタスクTcが特定された場合には、選択部13は複数の自己モデル171から自己モデルMO
ycを選択し、複数の熟練モデル172から熟練モデルME
cを選択する。
【0051】
図5に戻って、ステップS13では、取得部11が出力指令値uを生成するためのデータを取得する。一例では、取得部11は、操作コントローラにより受け付けられた入力指令値U
hと、作業環境Ewから送られてきた応答値(センサデータ)とを取得する。
【0052】
ステップS14では、取得部11が状態差eを算出する。取得部11は応答値(センサデータ)に基づいて現在状態yhを取得し、この現在状態yhと予め設定された目標状態gとの差分を状態差eとして取得する。
【0053】
ステップS15では、推論部14、設定部15、および生成部16が協働して出力指令値uを生成する。
図7を参照しながらその生成処理の一例を説明する。
図7は出力指令値を生成する処理の一例を示すフローチャートである。
【0054】
ステップS151では、推論部14が自己モデル142により分散(第2分布度)μOWNを算出する。推論部14は、選択された自己モデル142に入力指令値Uhおよび状態差eを入力し、該自己モデル142から出力される分散μOWNを得る。
【0055】
ステップS152では、設定部15が分散μOWNに基づいて第2アシスト度を設定する。第2アシスト度の設定方法は限定されない。一例では、設定部15は分散μOWNが小さいほど第2アシスト度が大きくなるように第2アシスト度を設定してもよい。分散μOWNが小さいということは、状態差eにおけるユーザ操作が通常の範囲内であることを意味する。したがって、分散μOWNが小さい場合にはユーザ操作をアシストする方が良いと考えることができる。一方、分散μOWNが大きいということは、状態差eにおけるユーザ操作が通常とは相対的に大きく異なることを意味する。したがって、分散μOWNが大きい場合には、そのユーザ操作が特別な事情に基づくもの(例えば緊急の特別な操作)であると判断して、ユーザ操作に介入しない(ユーザ操作をそのまま尊重する)か、またはその介入の程度を低くするのが良いと考えることができる。一例ではこのような設計思想に基づいて、設定部15は、分散μOWNが小さいほど第2アシスト度が大きくなるように第2アシスト度を設定する。設定部15は、分散μOWNが所与の閾値THa未満である場合には第2アシスト度を「1」に設定し、分散μOWNがその閾値THa以上である場合には第2アシスト度を「0」に設定してもよい。したがって、第2アシスト度は二値で表されてもよい。あるいは、設定部15は第2アシスト度を所与の数値範囲内の任意の値に設定してもよく、したがって第2アシスト度は連続値で表されてもよい。
【0056】
ステップS153では、設定部15が第2アシスト度を所与の閾値THbと比較する。第2アシスト度が閾値THb以上である場合には(ステップS153においてYES)、処理はステップS154に進む。第2アシスト度が「0」または「1」の二値で表される場合には、閾値THbは「1」であってもよい。この分岐処理を分散μOWNの観点から見ると、分散μOWNが閾値THa未満である場合に処理がステップS154に進む。
【0057】
ステップS154では、推論部14が熟練モデル141により分散(第1分布度)μEXPおよび予測指令値uEXPを算出する。推論部14は、選択された熟練モデル141に状態差eを入力し、該熟練モデルから出力される分散μEXPおよび予測指令値uEXPを得る。
【0058】
ステップS155では、設定部15が分散μEXPに基づいて第1アシスト度γを設定する。第1アシスト度γの設定方法は限定されない。一例では、設定部15は分散μEXPが小さいほど第1アシスト度γが大きくなるように第1アシスト度γを設定してもよい。分散μEXPが小さいということは、状態差eにおける熟練者の操作のばらつきが小さいということである。これは、該状態差eにおいて、経験的に、多くの熟練者が同じかまたは同様の操作をしていることを意味する。したがって、分散μEXPが小さい場合には第1アシスト度γを大きくして、ユーザ操作に積極的に関与する方が良いと考えることができる。一方、分散μEXPが大きいということは、状態差eにおける熟練者の操作のばらつきが大きいことを意味する。したがって、分散μEXPが大きい場合には第1アシスト度γを小さくして、ユーザ操作への関与を抑えた方が良いと考えることができる。一例ではこのような設計思想に基づいて、設定部15は、分散μEXPが小さいほど第1アシスト度γが大きくなるように第1アシスト度γを設定する。
【0059】
ステップS156では、生成部16がアシスト指令値UGPhを算出する。生成部16は第1アシスト度γに応じた割合で入力指令値uhと予測指令値uEXPとを混合して、アシスト指令値UGPhを算出する。一例では、生成部16は下記の式(1)によってその混合を実現する。式(1)での(1-γ)を非アシスト度というとすると、生成部16は、予測指令値uEXPおよび第1アシスト度γの積と、入力指令値uhおよび非アシスト度の積との和をアシスト指令値UGPhとして算出する。式(1)に示すように、第1アシスト度γがそのまま割合として用いられてもよい。あるいは、生成部16は第1アシスト度γに基づいて任意の手法で割合を設定してもよい。
UGPh=(1-γ)uh+γuEXP …(1)
【0060】
ステップS157では、生成部16がアシスト指令値UGPhを出力指令値uとして設定する。すなわち、生成部16はステップS156,S157において、第1アシスト度γに応じた割合で入力指令値uhと予測指令値uEXPとを混合し、出力指令値uを生成する。
【0061】
一方、ステップS153において第2アシスト度が閾値THb未満である場合には(ステップS153においてNO)、処理はステップS158に進む。この処理を分散μOWNの観点から見ると、分散μOWNが閾値THa以上である場合に処理がステップS158に進む。ステップS158では、生成部16が入力指令値uhをそのまま出力指令値uとして設定(生成)する。
【0062】
図7に示すように、一例では、生成部16は、第2アシスト度が閾値THb以上である場合には(ステップS153においてYES)、入力指令値u
h、第1アシスト度γ、および予測指令値u
EXPに基づいて出力指令値uを生成する。一方、第2アシスト度がその閾値THb未満である場合には(ステップS153においてNO)、生成部16は第1アシスト度γおよび予測指令値u
EXPを用いることなく、入力指令値u
hに基づいて出力指令値uを生成する。ステップS153での条件分岐はスイッチSWの切り替えに相当する。言い換えると、生成部16は、分散(第2分布度)μ
OWNが閾値THa未満である場合には、入力指令値u
h、第1アシスト度γ、および予測指令値u
EXPに基づいて出力指令値uを生成する。分散μ
OWNが閾値THa以上である場合には、生成部16は第1アシスト度γおよび予測指令値u
EXPを用いることなく、入力指令値u
hに基づいて出力指令値uを生成する。
【0063】
図5に戻って、ステップS16では、生成部16が出力指令値uをロボット2に向けて送信する。ロボット2はこの出力指令値uに基づいて動作する。
【0064】
ステップS17に示すように、一つのタスクが達成されるまでは該タスクについてステップS13~S16の処理が繰り返される。ステップS18に示すように、ユーザ操作の目標が達成されるまでは、すなわち、ロボット2が目標状態gに達するまでは、ステップS11~S17が繰り返される。
【0065】
処理フローS1によって、ロボット制御システム1は以下のようにロボット2を制御する。すなわち、入力指令値uhがユーザの通常の操作に近く,且つ熟練者の操作がばらつかない場合には、ロボット制御システム1は積極的にユーザ操作をアシストする。この強いアシストによって、ロボット2をより効率的に動作させて、より短時間でロボット2を目標状態に到達させることが可能になる。入力指令値uhがユーザの通常の操作に近く、且つ熟練者の操作がばらつく場合には、ロボット制御システム1はユーザ操作へのアシストの程度を下げる。この消極的なアシストによって、ユーザ操作をある程度尊重しながらロボット2を動作させることができる。入力指令値uhがユーザの通常の操作と異なる場合には、その入力指令値Uhがそのままロボット2に向けて出力されるので、ユーザ操作をそのままロボット2に反映させることができる。このように、ロボット制御システム1は、あたかも複数のユーザ(例えば、ユーザおよび熟練者)が協働してロボット2を操作するような環境を提供する。
【0066】
[プログラム]
操作装置10の各機能モジュールは、プロセッサ161またはメモリ162の上にロボット制御プログラムを読み込ませてプロセッサ161にそのプログラムを実行させることで実現される。ロボット制御プログラムは、操作装置10の各機能モジュールを実現するためのコードを含む。プロセッサ161はロボット制御プログラムに従って入出力ポート164または通信ポート165を動作させ、メモリ162またはストレージ163におけるデータの読み出しおよび書き込みを実行する。このような処理により操作装置10の各機能モジュールが実現される。
【0067】
ロボット制御プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、ロボット制御プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0068】
[効果]
以上説明したように、本開示の一側面に係るロボット制御システムは、ユーザ操作に応じてロボットを制御するロボット制御システムであって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力する推論部と、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定する設定部と、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成する生成部とを備える。
【0069】
本開示の一側面に係るロボット制御方法は、ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムにより実行されるロボット制御方法であって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力するステップと、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定するステップと、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成するステップとを含む。
【0070】
本開示の一側面に係るロボット制御プログラムは、ユーザ操作に応じてロボットを制御するための少なくとも一つのプロセッサを備えるロボット制御システムとしてコンピュータを機能させるロボット制御プログラムであって、過去の操作に基づいて生成された学習済みモデルであって、ロボットの現在状態と目標状態との状態差が少なくとも入力されたことに応答して、当該状態差におけるロボットの動作の分布の度合いである分布度を少なくとも出力する該学習済みモデルに基づいて、分布度を出力するステップと、学習済みモデルから出力される分布度に基づいて、ロボットの操作をアシストする度合いであるアシスト度を設定するステップと、ユーザ操作により操作装置から入力された入力指令値とアシスト度とに基づいて、ロボットへと出力される出力指令値を生成するステップとをコンピュータに実行させる。
【0071】
本開示の一側面に係るロボットシステムは、ロボットと、上記のロボット制御システムとを備える。
【0072】
本開示の一側面に係る操作システムは、ユーザ操作を受け付ける操作コントローラと、上記のロボット制御システムとを備える。
【0073】
このような側面においては、学習済みモデルによって入力指令値が過去の操作を考慮してアシストされて、より適切な指令値が出力指令値としてロボットへと出力される。この仕組みによってロボットの操作を適切にアシストすることができる。
【0074】
他の側面に係るロボット制御システムでは、学習済みモデルは、分布度に加えて、過去の操作に基づいて予測される指令値である予測指令値を出力し、生成部は、入力指令値、アシスト度、および予測指令値に基づいて出力指令値を生成してもよい。過去の操作に基づく予測指令値をさらに考慮して出力指令値が生成されるので、より適切な指令をロボットに伝達することができる。
【0075】
他の側面に係るロボット制御システムでは、生成部は、アシスト度に応じた割合で入力指令値と予測指令値とを混合し、出力指令値を生成してもよい。ユーザの今回の操作と過去の操作との双方をアシスト度を用いて混合することで、より適切な指令をロボットに伝達することができる。
【0076】
他の側面に係るロボット制御システムでは、ロボットが実行可能な複数のタスクのそれぞれに対応する複数の学習済みモデルから、ロボットが実行すべきタスクに対応する学習済みモデルを選択する選択部をさらに備え、推論部は、選択された学習済みモデルに基づいて分布度を出力してもよい。タスクに応じた学習済みモデルを用いることで、個々のタスクに応じてロボットの操作を適切にアシストすることができる。
【0077】
他の側面に係るロボット制御システムでは、ロボットが実行すべきタスクをセンサデータに基づいて特定する特定部を更に備え、選択部は、特定されたタスクに基づいて学習済みモデルを選択してもよい。この仕組みによって、センサデータを用いて学習済みモデルを自動的に選択することができる。
【0078】
他の側面に係るロボット制御システムでは、学習済みモデルは、ガウス過程に基づいて分布度を出力してもよい。ガウス過程を採用することで、訓練データの量が少ない場合でも学習済みモデルを構築できるので、学習済みモデルをより容易に準備することが可能になる。
【0079】
他の側面に係るロボット制御システムでは、学習済みモデルは、ユーザとは異なる他のユーザの過去の操作に基づいて生成された第1モデルを含み、推論部は、第1モデルから出力される第1分布度を出力し、設定部は、第1分布度に基づいて第1アシスト度を設定し、生成部は、入力指令値および第1アシスト度に基づいて出力指令値を生成してもよい。他のユーザの操作に基づいてアシスト度を設定することで、ロボットの操作を適切にアシストすることができる。
【0080】
他の側面に係るロボット制御システムでは、第1モデルは、ユーザよりも操作に熟練した熟練者の過去の操作に基づいて生成された熟練モデルであってもよい。この仕組みによって、熟練者の技能が適切に反映された出力指令値が得られるので、ロボットの操作をより適切にアシストすることができる。
【0081】
他の側面に係るロボット制御システムでは、学習済みモデルは、ユーザの過去の操作に基づいて生成された第2モデルを含み、推論部は、第2モデルから出力される第2分布度を出力し、設定部は、第2分布度に基づいて第2アシスト度を設定し、生成部は、入力指令値、第1アシスト度、および第2アシスト度に基づいて、出力指令値を生成してもよい。今回の操作とユーザ自身の過去の操作との類似性をさらに考慮して出力指令値が生成されるので、より適切な指令をロボットに伝達することができる。
【0082】
他の側面に係るロボット制御システムでは、生成部は、第2アシスト度が閾値以上である場合に、入力指令値と、第1アシスト度と、第1モデルから出力される予測指令値とに基づいて出力指令値を生成し、第2アシスト度が閾値未満である場合に、第1アシスト度及び予測指令値を用いることなく、入力指令値に基づいて出力指令値を生成してもよい。今回の操作が通常のものであるといえる場合に限って操作をアシストし、今回の操作が通常とは異なるといえる場合にはその操作をそのまま尊重することで、ロボットの操作の状況に応じたアシストが可能になる。
【0083】
他の側面に係るロボット制御システムでは、ロボットはユーザから遠隔に位置してもよい。この場合にはロボットの遠隔操作を適切にアシストすることができる。
【0084】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0085】
ロボット制御システムの構成は上記実施形態に限定されない。例えば、操作装置10に代えてロボット用コンピュータ3が取得部11、特定部12、選択部13、推論部14、設定部15、生成部16、およびモデルデータベース17を備えてもよい。上記実施形態では操作装置10が取得部11、特定部12、および選択部13を備えるが、これらの機能モジュールの少なくとも一つが別のコンピュータ上に構築されてもよい。
【0086】
上記実施形態では推論部14が熟練モデル141および自己モデル142を備えるが、推論部14はこれら2種類の学習済みモデルのうちの一方を備えなくてもよい。すなわち、ロボット制御システムは熟練モデル(第1モデル)および自己モデル(第2モデル)の一方を用いることなくロボットの操作をアシストしてもよい。
【0087】
ロボット用コンピュータ3は必須の構成要素ではなく、この場合には、ロボットコントローラ4が通信ネットワークNを介して操作装置10とより直接的に接続されてもよい。
【0088】
図1は、ロボット2とロボット制御システム1とを備えるロボットシステムを示すともいえる。また、
図1は、操作コントローラまたは操作装置10と、ロボット制御システム1とを備える操作システムを示すともいえる。一側面では、本開示はこれらのロボットシステムおよび操作システムにも適用することができる。
【0089】
システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上記実施形態における機能モジュールの少なくとも一部が、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0090】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ(処理)の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0091】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【0092】
1…ロボット制御システム、2…ロボット、3…ロボット用コンピュータ、4…ロボットコントローラ、10…操作装置、11…取得部、12…特定部、13…選択部、14…推論部、15…設定部、16…生成部、17…モデルデータベース、141…熟練モデル(第1モデル)、142…自己モデル(第2モデル)、N…通信ネットワーク。