(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】ロボットシミュレーション装置
(51)【国際特許分類】
B25J 9/22 20060101AFI20231011BHJP
【FI】
B25J9/22 A
(21)【出願番号】P 2021573093
(86)(22)【出願日】2021-01-13
(86)【国際出願番号】 JP2021000895
(87)【国際公開番号】W WO2021149563
(87)【国際公開日】2021-07-29
【審査請求日】2022-08-19
(31)【優先権主張番号】P 2020006855
(32)【優先日】2020-01-20
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(74)【代理人】
【識別番号】100169856
【氏名又は名称】尾山 栄啓
(72)【発明者】
【氏名】▲羽▼根 幹人
【審査官】仁木 学
(56)【参考文献】
【文献】特開2018-015857(JP,A)
【文献】特開2002-355782(JP,A)
【文献】特開2019-188530(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ー 21/02
(57)【特許請求の範囲】
【請求項1】
ロボットマニピュレータに搭載したツール部を対象ワークに接触させながら行う力制御動作をシミュレーションする
ロボットシミュレーション装置であって、
動作プログラム及び前記力制御動作に関する設定パラメータである力制御パラメータを記憶する記憶部と、
前記動作プログラム及び前記力制御パラメータに基づいて前記力制御動作のシミュレーションを実行する力制御シミュレーション実行部と、を備え、
前記力制御シミュレーション実行部は、前記力制御動作のシミュレーション結果から得られる前記ツール部の位置情報に基づいて、前記ツール部が前記対象ワークと接触した状態において前記ツール部が前記対象ワークから受ける仮想力を生成する仮想力生成部を備え、該仮想力と前記力制御パラメータとして設定された目標力とに基づいて前記力制御動作のシミュレーションを実行する
よう構成され、
前記仮想力生成部は、前記対象ワークの剛性に関する係数、前記ツール部の剛性に関する係数、又は前記ツール部のばね係数のいずれかと、前記ツール部の位置情報とに基づいて前記仮想力を求める、ロボットシミュレーション装置。
【請求項2】
前記ロボットマニピュレータを表す運動方程式を用い、前記動作プログラム及び前記力制御パラメータに基づいて前記ロボットマニピュレータの動作の物理シミュレーションを実行する物理シミュレーション部を更に備え、
前記仮想力生成部は、前記ツール部が前記対象ワークと接触した状態における、前記物理シミュレーションにより得られる前記ツール部の前記位置情報に基づいて前記仮想力を求める、請求項1に記載のロボットシミュレーション装置。
【請求項3】
ロボットマニピュレータに搭載したツール部を対象ワークに接触させながら行う力制御動作をシミュレーションするロボットシミュレーション装置であって、
動作プログラム及び前記力制御動作に関する設定パラメータである力制御パラメータを記憶する記憶部と、
前記動作プログラム及び前記力制御パラメータに基づいて前記力制御動作のシミュレーションを実行する力制御シミュレーション実行部と、を備え、
前記力制御シミュレーション実行部は、前記力制御動作のシミュレーション結果から得られる前記ツール部の位置情報に基づいて、前記ツール部が前記対象ワークと接触した状態において前記ツール部が前記対象ワークから受ける仮想力を生成する仮想力生成部を備え、該仮想力と前記力制御パラメータとして設定された目標力とに基づいて前記力制御動作のシミュレーションを実行するように構成され、
前記ロボットシミュレーション装置は、
前記対象ワークの剛性に関する係数、前記ツール部の剛性に関する係数の少なくともいずれかと、前記ツール部が前記対象ワークと接触した状態における前記ツール部の前記対象ワークに対する距離とを含む入力データと、該入力データに対応する実測の押付力である回答データとからなるトレーニングデータに基づいて機械学習を実行する仮想力学習部を更に備え、
前記仮想力生成部は、前記仮想力学習部による前記機械学習により構築された学習モデルを用いて前記仮想力を取得する
、ロボットシミュレーション装置。
【請求項4】
前記ロボットマニピュレータ及び前記対象ワークを含む現実の作業空間の映像を取得する撮像装置と、
前記仮想力の大きさ及び前記対象ワーク上における発生部位を表す画像を前記作業空間の映像に拡張現実画像として重畳する表示装置と、を更に備える請求項1から
3のいずれか一項に記載のロボットシミュレーション装置。
【請求項5】
前記記憶部は、前記ロボットマニピュレータ、前記ツール部及び前記対象ワークの形状を表すモデルデータ及び配置位置の情報を更に記憶し、
前記ロボットシミュレーション装置は、前記モデルデータ及び前記配置位置の情報を用い、前記仮想力の大きさ及び前記対象ワーク上における発生部位を表す画像を、前記ツール部及び前記対象ワークを含む仮想の作業空間内に配置した仮想現実画像に重畳して表示する表示装置を更に備える、請求項1から
3のいずれか一項に記載のロボットシミュレーション装置。
【請求項6】
前記仮想力と所定の基準値とを対比した結果に基づいて、前記力制御パラメータについて前記仮想力を前記所定の基準値以内に抑えるための調整内容を生成する調整内容生成部を更に備え、
前記調整内容生成部は、前記調整内容を表す画像を前記映像又は前記仮想現実画像に更に重畳表示させる、請求項
4又は
5に記載のロボットシミュレーション装置。
【請求項7】
前記仮想力の大きさを音量により表した音声を出力する音声出力部を更に備える、請求項1から
6のいずれか一項に記載のロボットシミュレーション装置。
【請求項8】
前記力制御動作は、探り作業、嵌め込み作業又は倣い動作である、請求項1から
7のいずれか一項に記載のロボットシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットの動作をシミュレーションするロボットシミュレーション装置に関する。
【背景技術】
【0002】
産業用ロボットの動作のシミュレーションを行う各種のシミュレーション装置が提供されている。例えば、特許文献1は、「ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付ける受付部と、前記受付部が受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行う制御部と、を備えることを特徴とするシミュレーション装置。」を記載する(特許文献1、請求項1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ロボットマニピュレータは力センサを具備することで、ワークにかかる力を検出し、力制御を行いながら、高度な作業である探り作業、嵌め込み作業や研磨といった作業を行うことができる。しかしながら、力制御を適切に行うためには熟練したパラメータ調整能力が要求される。一般に、このようなパラメータ調整を行うためには作業者は力制御の失敗・成功を繰り返し、パラメータ設定のノウハウを身に付けていく必要があった。力制御のパラメータ設定を容易化できるロボットシミュレーション装置が望まれている。
【課題を解決するための手段】
【0005】
本開示の一態様は、ロボットマニピュレータに搭載したツール部を対象ワークに接触させながら行う力制御動作をシミュレーションするロボットシミュレーション装置であって、動作プログラム及び前記力制御動作に関する設定パラメータである力制御パラメータを記憶する記憶部と、前記動作プログラム及び前記力制御パラメータに基づいて前記力制御動作のシミュレーションを実行する力制御シミュレーション実行部と、を備え、前記力制御シミュレーション実行部は、前記力制御動作のシミュレーション結果から得られる前記ツール部の位置情報に基づいて、前記ツール部が前記対象ワークと接触した状態において前記ツール部が前記対象ワークから受ける仮想力を生成する仮想力生成部を備え、該仮想力と前記力制御パラメータとして設定された目標力とに基づいて前記力制御動作のシミュレーションを実行するよう構成され、前記仮想力生成部は、前記対象ワークの剛性に関する係数、前記ツール部の剛性に関する係数、又は前記ツール部のばね係数のいずれかと、前記ツール部の位置情報とに基づいて前記仮想力を求める、ロボットシミュレーション装置である。
【発明の効果】
【0006】
上記構成によれば、操作者が押付力の発生状態を直感的に把握することができ、力制御のパラメータ設定を容易化することが可能となる。
【0007】
添付図面に示される本発明の典型的な実施形態の詳細な説明から、本発明のこれらの目的、特徴および利点ならびに他の目的、特徴および利点がさらに明確になるであろう。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係るシミュレーション装置としての制御装置を含むロボットシステムのシステム構成図である。
【
図4】制御装置、外部コンピュータ、及び表示装置の機能ブロック図である。
【
図5】ロボット動作制御部における力制御のブロック線図である。
【
図7】探り作業のシミュレーション動作を表すフローチャートである。
【
図8A】探り作業、嵌め込み作業におけるツール部の動作状態を説明する図である。
【
図8B】探り作業、嵌め込み作業におけるツール部の動作状態を説明する図である。
【
図8C】探り作業、嵌め込み作業におけるツール部の動作状態を説明する図である。
【
図8D】探り作業、嵌め込み作業におけるツール部の動作状態を説明する図である。
【
図10】嵌め込み作業のシミュレーション動作を表すフローチャートである。
【
図13】
図12の表示画面に更に制御パラメータの調整をアドバイスするメッセージ画像が表示された状態を表している。
【
図14】
図12の表示画面に更に設定画面へ遷移するための誘導を行う画像が表示された状態を表している。
【
図15】力制御パラメータの設定入力をガイドするインタフェース画像が表示された例を示す図である。
【発明を実施するための形態】
【0009】
次に、本開示の実施形態について図面を参照して説明する。参照する図面において、同様の構成部分または機能部分には同様の参照符号が付けられている。理解を容易にするために、これらの図面は縮尺を適宜変更している。また、図面に示される形態は本発明を実施するための一つの例であり、本発明は図示された形態に限定されるものではない。
【0010】
図1は、一実施形態に係るロボットシミュレーション装置としての制御装置50を含むロボットシステム100のシステム構成図である。
図1に示すように、制御装置50には、手首部先端にツールを搭載したロボットマニピュレータ10(以下、マニピュレータ10と記載する)と、ツールにかかる外力を検出する力検出器としての力センサ3とが接続されている。力センサ3は、マニピュレータ10の手首部先端とツールとの間に取り付けられている。或いは、力センサ3は、ワークに設置されていても良い。制御装置50は、力制御機能を具備することで、ワークに係る力を検出しながら高度な作業である探り作業、精密嵌め込み作業、研磨(倣い動作)といった各種作業をマニピュレータ10に実行させることができる。制御装置50は、CPU、ROM、RAM、記憶装置、操作部、表示部、入出力インタフェース、ネットワークインタフェース等を有する一般的なコンピュータとしての構成を有していても良い。
【0011】
更に、制御装置50には、制御装置50が力制御作業のシミュレーション(以下、力制御シミュレーションと記す)を実行する場合に、マニピュレータ10の運動モデルに基づく物理シミュレーションを実行する機能を担う外部コンピュータ90と、力制御シミュレーションの結果を表示する表示装置70とが接続されている。なお、本明細書においてシミュレーションとは、数値シミュレーションによりマニピュレータ等の位置を算出する動作のほか、マニピュレータ等の形状モデルを教示データ等にしたがって模擬的に動作させる場合を含むものとする。
【0012】
図2及び
図3にロボットシステム100の構成例を示す。なお、
図2及び
図3では、マニピュレータ10(力センサ3及びツール部11を含む)と、対象ワークのみを図示している。
図2は、ツール部11に、ワークW1に対する研磨作業を実行するグラインダ8を搭載する構成例を示す。このような構成例の場合、制御装置50は、力制御による対象ワークの研磨作業を実行する。
【0013】
図3は、ツール部11に、ワークW2に対する嵌め込み作業を実行するためのハンド9を搭載する構成例を示す。
図3では、ツール部11に、シリンダ等のワーク7を把持するハンド9が搭載されている。
図3の構成例では、制御装置50は、力制御によりハンド9が把持したワーク7を対象ワークW2に形成された穴に嵌め込む作業を実行する。
【0014】
制御装置50は、操作者による教示データ(動作プログラム)及び力制御パラメータに従って力制御シミュレーションを実行することで、ツール部11が対象ワークから受ける力(すなわち、対象ワークに作用する押付力)の大きさ及び発生部位を可視化し表示装置70にAR(拡張現実)画像或いはVR(仮想現実)画像として表示させる機能を更に備えている。これにより操作者は、例えば、実際の力制御作業を実行させる前の段階で、対象ワークのどの部位にどの程度の押付力が作用するかを把握し、動作プログラムや力制御パラメータの調整を行うことができる。なお、本明細書において、力制御パラメータには、目標押付力、押付方向速度、力制御ゲイン、探索領域、速度ゲインまたは教示位置のうち少なくとも一つを含むものとする。
【0015】
図4は、制御装置50、外部コンピュータ90、及び表示装置70の機能ブロック図である。
図4に示す通り、制御装置50は、各種情報を記憶する記憶部51と、力制御シミュレーションの実行を司る力制御シミュレーション実行部52と、ロボットマニピュレータ10の動作を制御するロボット動作制御部53と、仮想力生成器(仮想力生成部)54と、仮想力学習部55と、調整内容生成部56とを有する。記憶部51は、マニピュレータ10の動作プログラム、マニピュレータ10、ツール、ワーク等の3Dモデルデータ、力制御パラメータ、その他マニピュレータ10の制御に用いる各種データを記憶する。仮想力生成器54は、力制御シミュレーション結果から得られるツール部11の位置情報に基づいて、ツール部11が対象ワークと接触した状態においてツール部11が対象ワークから受ける仮想力を生成する。本明細書では、このように物体に作用する力として仮想的に求められたものを仮想力と記載する場合があり、またそれが押付力である場合には仮想押付力とも記載する場合がある。
【0016】
外部コンピュータ90は、マニピュレータ10の運動モデル(運動方程式)に基づいてマニピュレータ10の物理シミュレーションを実行する物理シミュレーション部91を備える。
【0017】
表示装置70は、本実施形態では、ヘッドマウントディスプレイとして構成されているものとする。なお、表示装置70は、カメラを搭載したタブレット端末等の他の情報処理装置で構成することもできる。ヘッドマウントディスプレイとして構成された表示装置70は、操作者が装着する。表示装置70は、撮像装置71と、拡張現実(AR)画像又は仮想現実(VR)画像を表示するための画像処理を実行するAR/VR画像処理部72と、ディスプレイ73と、音声出力部74とを有する。撮像装置71は、撮像レンズの光軸が装着者の前方を向くように表示装置70に設けられ、マニピュレータ10を含む現実の作業空間の映像を撮像する。AR/VR画像処理部72は、力制御シミュレーションの結果として得られる、対象ワークに作用する仮想押付力及びその作用部位の情報を用いて、仮想押付力を表す画像を現実の映像に重畳する拡張現実画像処理、或いは、仮想押付力を表す画像をマニピュレータ10等の各物体のモデルを配置した仮想現実空間の画像(動画アニメーション)に重畳する仮想現実画像処理を実行することができる。ディスプレイ73は、装着者の眼前に配置され、AR/VR画像処理部72によって生成された画像(映像)を表示する。なお、表示装置70は、表示装置70の作業空間内での位置を取得するための位置センサ(光学センサ、レーザセンサ、磁気センサ)と加速度センサ(ジャイロセンサ)を有し作業空間に固定されたワールド座標系に対する表示装置に固定した座標系(カメラ座標系)の相対位置関係を把握できるものとする。
【0018】
図5は、ロボット動作制御部53における力制御のブロック線図である。本実施形態では、「力制御+位置制御」すべき方向(ツールによりワークを押し付ける押付方向)と、位置制御のみすべき方向を分割し、「力制御+位置制御」すべき方向に関して算出された速度(角速度)指令と、位置制御のみすべき方向に関して算出された速度(角速度)指令を合成してマニピュレータ10を制御する。
図5では説明の便宜のため省略しているが、位置制御に関しては、マニピュレータ10の各軸に設けられた位置センサにより位置検出値をフィードバックして位置制御を行う当分野で一般に知られた位置制御側(例えば、PD制御)に基づく制御を行う。
図5に示す力制御では、押付方向に対する目標力(力+モーメント)と、力センサ3により検出されたワークに作用する力(モーメント)との差分に力制御ゲインという力制御パラメータを掛けて指令速度(角速度)を計算する。ここで、力制御ゲインとは力制御の性能を表し、値が大きければ大きいほど位置・姿勢の修正が早くなるという性質を有する。力(モーメント)の検出及びそれに応じた速度(角速度)指令量の計算は、制御周期毎に行われる。この場合の力制御則(速度(角速度)指令量の計算式)は、以下のように表すことができる。
Δx=Kf(F-Fd)
ここで、Kf:力制御ゲイン
Fd:目標力(力+モーメント、力:Fx,Fy,Fz、モーメント:Mx,My,Mz)
F:検出された力
Δx:制御周期毎の目標移動量(速度)
【0019】
次に、制御装置50(力制御シミュレーション実行部52)による制御の下で実行される力制御シミュレーションについて説明する。本実施形態では、動作プログラムを実行した場合に対象ワークに作用する仮想押付力を以下で述べる手法により検出或いは生成することで力制御シミュレーションを実現する。
【0020】
(仮想力生成法1):ロボットマニピュレータ10の運動モデル(運動方程式)を設定し、
図5に示した力制御のブロック線図の動作を物理シミュレーションにより実行させる。対象ワークに作用する仮想押付力は、物理シミュレーションにより得られるツール先端の位置に基づき計算モデルにより求める。すなわち、仮想力生成法1の場合には、
図5に示すようにマニピュレータ10に運動モデルを設定し、仮想押付力を仮想力生成器54で算出する構成とする。すなわち、仮想力生成器54は、力制御シミュレーションにおいて力センサとしての機能を担う。
【0021】
(仮想力生成法2):過去に同様の動作環境において力制御による作業を実行した場合に力センサ3によって検出された力(モーメント)やロボット(マニピュレータ10)の位置情報を含むログデータ、或いは、動作プログラムを用いてロボットを実際に対象ワークに対して移動させながらツールの駆動(例えば研磨砥石の回転駆動)は停止してワークに作用する力(モーメント)を力センサで検出して記録することによって得られたログデータを用いて仮想力(仮想押付力)を得る。仮想力生成方法2の場合には、教示軌道からツールと対象ワークとの距離を求め、ログデータ中にロボットの動作軌道と対象ワークとの距離として同程度のログデータがある場合にはそのログデータとして記録された押付力を仮想力(仮想押付力)として用いることができる。
【0022】
(仮想力生成法3):ある特定のワークに関する実際の作業において、ロボット(ツール)とワークとの相対的な位置や速度と力センサにより検出される力(モーメント)との対応を表すトレーニングデータを収集して学習機能により学習モデルを構築して仮想力(仮想押付力)を求める。
【0023】
仮想力生成方法1について詳細に説明する。仮想力生成法1では、ロボットマニピュレータ10の運動方程式(運動モデル)を設定し
図5に示した力制御のブロックを物理(数値)シミュレーションにより動作させ、ロボットマニピュレータ10の位置(ツール先端の位置)を求める。ロボットマニピュレータ10の運動方程式は、一般に、以下のような数式で表される。
【0024】
【0025】
上記数式において、θは各関節の角度を表し、Mは慣性モーメントに係わる行列、hはコリオリ力、遠心力に係わる行列、gは重力の影響を表す項、τはトルク、τLは負荷トルクである。
【0026】
教示軌道に基づく動作指令(
図5の例においてマニピュレータ10に与えられる指令)を入力データとして運動方程式に与えてロボットの挙動(ツール先端の位置)を算出する。上記運動方程式に基づいて算出されたツール先端位置に基づき、ツール先端の位置が対象ワークと接触した場合にワークから受ける仮想力(仮想押付力)Fを求める。仮想力Fの算出例を以下に示す。
【0027】
仮想力(仮想押付力)Fの第1の算出例は、ツールに対して対象ワークの剛性が比較的低い場合の例である。本例においては、ツール先端位置が対象ワークとの接触位置を超えて対象ワーク側に移動した量をδとして、これにワークの剛性に関する係数Kdを乗じて、
F=Kd・δ ・・・(1a)
によって求めても良い。なお、この場合、対象ワークは作業空間内で位置が固定されているとする。或いは、ツール先端の位置が対象ワークと接触した場合にワークから受ける力Fを、ツール先端位置とワークとの接触位置を超えたときの速度をVcとして、
F=Kd・δ+Kc・Vc ・・・(1b)
によりワークから受ける力Fを算出する手法もあり得る。これらの係数KdやKcは、対象ワークの剛性や形状等に応じて設定することができる。
【0028】
仮想力(仮想押付力)Fの第2の算出例は、対象ワークに対してツールの剛性が比較的低い場合にツールのたわみ量に基づき仮想力Fを算出する例である。ツール先端位置が対象ワークとの接触位置を超えて対象ワーク側に移動した量δをツールのたわみ量と考え、ツールの剛性係数(仮想ばね係数)を用い、下記数式により仮想力Fを求める。
F=(ツールの仮想ばね係数)×δ ・・・(2a)
なお、ツールが押付方向に伸縮する機構(ばね機構)を有する、いわゆるフローティングツールである場合には、ツール先端位置と対象ワークの位置に基づきツール先端の伸縮長さを求め、下記数式により仮想力Fを得ることができる。
F=(ツールのばね係数)×伸縮長さ ・・・(2b)
【0029】
仮想力(仮想押付力)Fの第3の算出例は、ツールの剛性が比較的高い場合に押付方向の速度指令に対しロボット(ツール先端)が移動した距離から仮想力Fを算出する例である。本例の場合には、速度指令による移動位置をTx、速度指令に対してロボット(ツール先端)が実際に移動した位置をdとして、下記数式により求める。
F=k×(Tx-d) ・・・(3)
ここで、kは係数である。係数kは、実験値、経験値等として求めた値を設定しても良い。
【0030】
なお、上述した仮想力Fの計算式において、物理シミュレーションによるツール先端の位置、速度に代えて、教示データ(教示位置、教示速度)を代入して仮想力を求めても良い。
【0031】
次に、仮想力生成方法3について詳細に説明する。仮想力生成方法3による仮想押付力の生成は仮想力学習部55により実行される。仮想力学習部55は、入力されるデータの集合から、その中にある有用な規則や知識表現、判断基準などを解析により抽出し、その判断結果を出力するとともに、知識の学習(機械学習)を行う機能を有する。機械学習の手法は様々であるが、大別すれば、例えば、「教師あり学習」、「教師なし学習」および「強化学習」に分けられる。さらに、これらの手法を実現するうえで、特徴量そのものの抽出を学習する、「深層学習(ディープラーニング: Deep Learning)」と呼ばれる手法がある。本実施形態では、仮想力学習部55による機械学習に「教師有り学習」を適用することとする。
【0032】
上記「仮想力生成方法2」で説明したように、ツール先端と対象ワークとが接触した状態では、ツール先端位置とワークとの相対的な距離、相対的な速度、対象ワークの剛性または動摩擦に関する係数、ツールの剛性に関する係数等が押付力の大きさと相関すると考えられる。そこで、仮想力学習部55は、押付力の大きさに相関するこれらの値を入力データとし、その場合に力センサにより検出された押付力を回答データとする学習データを用いて学習を実行する。
【0033】
学習モデル構築の具体例としては、上述の仮想力Fの第1から第3の算出例に対応する学習モデルを構築する例が有り得る。上記仮想力Fの第1の算出例に対応する学習モデルを構築する場合、ツール先端位置と対象ワークとの相対的な距離(δ)、相対的な速度(Vc)、対象ワークの剛性に関する値(Kd,Kc)(或いは、少なくともツール先端位置と対象ワークとの相対的な距離(δ)とワークの剛性に関する値(Kd))を入力データとし、その場合に力センサにより検出された押付力を回答データとする学習データを収集する。そして、当該学習データを用いて学習を実行して学習モデルを構築する。
【0034】
上記仮想力Fの第2の算出例に対応する学習モデルを構築する場合、ツール先端位置の移動量(δ)及び「ツールの仮想ばね係数」を入力データとし、その場合に力センサにより検出された押付力を回答データとする学習データを収集する。そして、当該学習データを用いて学習を実行して学習モデルを構築する。なお、対象ワークの剛性に関する係数とツール部(ツール)の剛性に関する係数の少なくともいずれかと、ツール部が対象ワークと接触した状態におけるツール部の対象ワークに対する距離(δ)とを含む入力データと、その場合に力センサにより検出された押付力である回答データとからなる学習データ(トレーニングデータ)を収集し、当該学習データを用いて学習を実行して学習モデルを構築しても良い。
【0035】
上記仮想力Fの第3の算出例に対応する学習モデルを構築する場合、速度指令による移動位置(Tx)、及び、速度指令に対してツール先端が実際に移動した位置(d)を入力データとし、その場合に力センサにより検出された押付力を回答データとする学習データを収集する。そして、当該学習データを用いて学習を実行して学習モデルを構築する。この場合の学習は、係数kを学習する動作に相当する。
【0036】
上述のような学習は、ニューラルネットワーク(例えば三層のニューラルネットワーク)を用いて実現することができる。ニューラルネットワークの動作モードには学習モードと予測モードがある。学習モードにおいて、ニューラルネットワークへの入力変数として上述の学習データ(入力データ)を与え、各ニューロンの入力に適用される重みを学習する。重みの学習は、入力データをニューラルネットワークに与えたときの出力値と正解値(回答データ)との誤差をとり、誤差をニューラルネットワークの各層に逆伝播(バックプロパゲーション)させて出力値が正解値に近づくように各層の重みを調整することで実行する。このような学習により学習モデルが構築されると、上述の入力データを入力変数として仮想力学習部55に与えることで仮想押付力の予測が可能となる。すなわち、力制御シミュレーション実行部52(仮想力生成器54)は、学習を実行した仮想力学習部5に対して上述の入力データ与えてその出力として仮想力を得る。
【0037】
音声出力部74は、仮想力生成器54で生成された仮想力の大きさを音量により表した音声を出力する。例えば、力制御シミュレーションの実行中に仮想力生成器54で生成された仮想力の大きさに応じた音声をリアルタイムで出力することで操作者はより直感的に仮想力の大きさを把握できる。
【0038】
次に、以上で説明した制御装置50による力制御シミュレーションの機能に基づく具体的な作業のシミュレーションについて探り作業と嵌め込み作業の2例について説明する。なお、探り作業、嵌め込み作業を実行する場合、
図3に示したようにマニピュレータ10の手首部先端にハンド9を装着して嵌合部品を把持する構成とする。これらのシミュレーションは、制御装置50(力制御シミュレーション実行部52)が、作業者による教示データ(動作プログラム)、マニピュレータ、ワーク等の各物体のモデルデータ、各物体の作業空間内での配置位置情報等を用いて実行する。なお、以下では、説明の便宜上、ツールのモデルやワークのモデル等を、単にツールやワーク等と記載する場合がある。
【0039】
探り作業とは、
図6に示すように、ある部品(嵌合部品W10)を別の部品(被嵌合部品W11)に接触させて穴の位置を探りながら嵌合を行うものである。
図7は、探り機能による作業のシミュレーション動作を表すフローチャートである。
図7の探り作業のシミュレーションは、制御装置50のCPU(力制御シミュレーション実行部52)による制御の下で実行される。はじめに、制御装置50は、対象ワークとしての被嵌合部品W11の上の教示点P1に嵌合部品W10を持ってくる(ステップS11)。
図8Aは、ステップS11でのツール部11及び対象ワークW11の位置関係を表している。
図8Aに示すように、嵌合部品W10の先端部が、教示点P1に位置付けられている。
図8Aの段階では、仮想力生成器54(仮想的な力センサ)において検出される力は、ツール部11(ハンド9及び嵌合部品W10)の重量のみとなる。
【0040】
次に、制御装置50は、ツール部11を対象ワーク(被嵌合部品W11)に向かって教示速度で移動させる(ステップS12)。
図8Bは、このときの状態を表している。この段階では、仮想力生成器54は、移動方向におけるツール部11の移動量に応じて移動方向と反対方向に生じる慣性力を検出する。
【0041】
次に、制御装置50は、ツール部11の位置・速度情報及び被嵌合部品W11の位置情報に基づき嵌合部品W10が対象ワークである被嵌合部品W11に衝突することによる衝撃力を検出する。そして、制御装置50は、衝突による衝撃力を検出したら、目標押付力の方向に沿って力制御し、嵌合部品W10を被嵌合部品W11の接触平面に対して平行移動及び回転移動させながら対象ワークから受ける力が抜ける位置を探す(ステップS13)。この場合、力制御パラメータとして被嵌合部品W11上における探索領域が指定されている場合にはこの探索領域に従って探索を実行することができる。
図8C及び
図8Dは、嵌合部品W10が対象ワーク(被嵌合部品W11)に衝突して接触状態となる状況を表している。ツール部11が対象ワーク(被嵌合部品W11)に当たる瞬間には(
図8C)、ツール部11に衝撃力が加わる。仮想力生成器54は、ツール部11が対象ワーク(被嵌合部品W11)と衝突するときに発生する力を以下のように求める。対象ワークが止まっているとき、ツール部11の速度をv、質量をmとし、力積が完全に保存されると、以下の力積の式が成立する。
(a1)単位時間当たり一定力が発生すると仮定する場合
mv=F・Δt
ここでΔtは時間、Fは発生力である。
(a2)発生力を撃力として扱う場合(力fが時間毎に変化すると仮定する場合)
mv=(f(t)の積分)
(a3)衝突時に力積の損失が発生する場合
mv=e・F・Δt
ここで、eは反発係数である。
制御装置50(仮想力生成器54)は、ツール部11と対象ワーク(被嵌合部品W11)との衝突時の発生力を上記(a1)-(a3)のいずれかにより求める。
【0042】
ツール部11の先端と対象ワーク(被嵌合部品W11)との衝突が検出された後、
図8Dに示すようにツール部11と対象ワーク(被嵌合部品W11)とが接触した状態となる。接触状態においては、制御装置50は、上述した仮想力生成方法1~3のいずれかを用いて仮想押付力を求めることができる。ここでは、仮想力生成方法1により仮想押付力を求めるものとする。
【0043】
上述したように、衝撃力が検出されると、制御装置50は、目標押付力方向において力制御を行いつつ、ツール部11(嵌合部品W10)を対象ワーク(被嵌合部品W11)との接触面上で平行移動及び回転移動させ、ツール部11が対象ワークから受ける力が抜ける位置(すなわち、穴がある位置)を探索する(ステップS13、
図8D)。このような探索において、穴と考えられた部分への挿入時に負荷が許容値を超える場合や、探索の時間が所定の閾値を超える場合には(S14:YES)、探索に失敗したものとみなして処理を終了する(ステップS18)。
【0044】
探索において対象ワークから受ける力(仮想力)が抜ける位置が見つかった場合、制御装置50は、嵌合部品W10を穴に押し込む(ステップS15)。嵌合部品W10を穴に押し込む際に、嵌合部品W10が穴の内壁等からモーメントを受ける場合には、そのモーメントを打ち消すように嵌合部品W10(ツール部11)の姿勢を修正する(ステップS16)。例えば、被嵌合部品W11の嵌合穴の中心軸線に対して嵌合部品W10の中心線が傾いている場合、嵌合方向と垂直な軸線周りのモーメントが生じ得る。嵌合部品W10(ツール部11)と被嵌合部品W11との接触位置に基づき例えば上述の仮想力生成法1を用いて嵌合部品W10(ツール部11)と被嵌合部品W11との間の接触点に生じる仮想力を求めることができる。そしてこの仮想力に基づいて嵌合部品W10上の所定の点(軸線)周りでのモーメントを求めることができる。なお、モーメントを求める場合には、例えば、嵌合部品W10の一部が被嵌合部品W11の穴の内周面に当たった場合に、穴の内周面における接触面の法線方向に力が作用するとして嵌合部品Wに作用するモーメントを求めても良い。制御装置50は、穴への押し込み量が目標深さに達した場合、本探索動作を終了とする(ステップS17)。
【0045】
次に、嵌め込み作業のシミュレーションについて説明する。嵌め込み作業とは、
図9に示すように、ある部品(嵌合部品W10)を別の部品(被嵌合部品W13)の穴に挿入するものである。
図10は、嵌め込み作業のシミュレーション動作を表すフローチャートである。はじめに、制御装置10は、ツール部11(すなわち嵌合部品W10)の先端部を対象ワーク(被嵌合部品W13)の穴の真上(教示点)に持ってくる(ステップS21)。次に、制御装置50は、被嵌合部品W10を穴に向かって移動させる(ステップS22)。ステップS21、S22において仮想力生成器54で検出される力については
図8A-
図8Dを参照して上述した場合と同様である。
【0046】
次に、制御装置50は、嵌合部品W10が被嵌合部品W13の穴に挿入された場合に受ける力を検出した場合に、嵌合部品W10を挿入方向に移動させながら、嵌合部品W10が穴の内面等からモーメントを受けた場合にはそれを打ち消すように嵌合部品W10の姿勢を修正しながら挿入を続ける(ステップS23)。穴への挿入時に仮想力生成部が受ける力(挿入方向と反対方向に受ける力)は、嵌合部品W10の外形、被嵌合部品W13側の穴の内径、穴の内周面の摩擦係数等に基づいて算出しても良い。このような挿入動作において、負荷(仮想力)が許容値を超える場合や、動作時間が所定の閾値を超える場合には(S24:YES)、探索に失敗したものとみなして処理を終了する(ステップS25)。挿入方向への移動量が目標深さに到達したら、制御装置50は、本嵌め込み作業を終了させる(ステップS26)。ステップS26では、挿入方向への移動量が目標深さに到達し、且つ、押付力(仮想押付力)が目標押付力に到達したら、嵌め込み作業を終了させるようにしても良い。
【0047】
次に、制御装置50による仮想力の表示機能について説明する。上述したように、制御装置50は、力制御シミュレーションを実行することでツール部11が受ける力(仮想力)を生成することができる。制御装置50は、仮想力、仮想力の発生部位、シミュレーションの結果としてのツール部の位置を含む情報を表示装置70に提供することで、仮想力の大きさ及び発生部位を表す画像を作業空間の現実の映像に重畳した拡張現実画像として、或いは、仮想力の大きさ及び発生部位を表す画像を各物体のモデルデータを用いて表現した仮想現実画像中に重畳して表示させることができる。仮想現実画像を生成する場合には、例えば、マニピュレータ10を含む作業空間内の各物体のモデルデータ及び配置位置情報を制御装置50から表示装置70に提供する構成とすることができる。
【0048】
一般に力制御による作業の教示や力制御パラメータの設定は難易度が高い。教示データを作成した操作者が、実際にロボットを動作させて研磨等の力制御の作業を実行させる前の段階で、対象ワークに係る力の部位及び大きさを可視化して拡張現実画像或いは仮想現実画像として提供することで、操作者は、対象ワークに対する力がかかりすぎている箇所等を瞬時に把握して教示点、動作速度の修正や、力制御パラメータの修正を的確に行うことができるようになる。
【0049】
図11は、仮想力の表示の一例を示している。ここでは、操作者が作業空間において教示作業を行いながら力制御シミュレーションの結果を拡張現実画像として表示装置70のディスプレイ73に表示させている状況を図示している。
図11に示すように実物のツール部は対象ワークには接触しておらず、操作者は、自身が教示入力した教示点、教示速度、力制御パラメータにより力制御シミュレーションを実行させる。制御装置50は、ツール部が対象ワークと接触して仮想力が発生した発生箇所123を画像として表現すると共に、仮想力の大きさを例えば矢印122の大きさにより表現する。仮想力は、大きさに応じた色分けにより表現しても良いし、数値として表示しても良い。また、制御部50は、力制御シミュレーションの結果として対象ワークに接触するツール部を表す画像121を例えば半透過画像として実空間の映像に重畳表示する。
【0050】
図12は、対象ワークに接触するツール部を表す画像121、力の大きさを表す矢印122、及び発生箇所123の画像を実物の画像に並べて拡張現実画像として表示した場合の例である。例えば、拡張現実画像として提供すべき情報量が多い場合など、
図12のように拡張現実画像を実物の横に並べて表示することが操作者(装着者)にとって都合が良い場合もあると考えられる。
【0051】
制御装置50は、仮想力と所定の基準値とを対比した結果に基づいて、制御パラメータについて仮想力を前記所定の基準値以内に抑えるための調整内容を生成する調整内容生成部56を更に備えていても良い。
図13は、
図12に示した力制御シミュレーション結果の拡張現実画像に、更に、目標押付力を下げることをアドバイスするメッセージ画像131が表示された状態を表している。このとき、
図14に示すように、階層化された設定メニューのうち、目標押付力の設定画面へ遷移するための誘導を行う画像141を画面左部に表示しても良い。
図13のような調整内容以外にも、押付力が強すぎる場合に教示軌道をワークから離す、或いは動作速度を低下させるようにアドバイスしたり、力制御ゲインを低減するような調整内容とする例が有り得る。
【0052】
図13及び
図14で図示した力制御シミュレーション結果の画像には、力制御パラメータの設定をガイドする画面へ遷移するための選択アイコン132も表示されている。この状態で、操作者が、例えば表示装置70に外部接続された操作機器により選択アイコン132を選択すると、力制御パラメータの設定入力をガイドするインタフェース画像152が画面左部に表示される(
図15)。操作者は、このインタフェース画像152に従って力制御パラメータの調整や、入力を行うことができる。
図15の例では、操作者は、力制御の位置(教示点)、目標押付力、力制御ゲインの設定或いは調整を案内に沿って順に行うことができる。このようなインタフェース画面の提示は、特に、力制御の設定に不慣れな操作者にとって有用である。なお、このようなインタフェース画面を介して各種パラメータの設定を変更したら、力制御シミュレーションを再度実行してその結果をインタフェース画面に提示するようにしても良い。
【0053】
以上説明したように本実施形態によれば、操作者が押付力の発生状態を直感的に把握することができ、力制御のパラメータ設定を容易化することが可能となる。
【0054】
以上、典型的な実施形態を用いて本発明を説明したが、当業者であれば、本発明の範囲から逸脱することなしに、上述の各実施形態に変更及び種々の他の変更、省略、追加を行うことができるのを理解できるであろう。
【0055】
上述した実施形態における、制御装置50、表示装置70、外部コンピュータ90における機能の分担は例示であり、これらの機能ブロックの配置は変更することができる。撮像装置は、作業空間内の固定された位置に表示装置とは別体の装置として配置されていても良い。
【0056】
制御装置、表示装置の機能ブロックは、これらの装置のCPUが、記憶装置に格納された各種ソフトウェアを実行することで実現されても良く、或いは、ASIC(Application Specific Integrated IC)等のハードウェアを主体とした構成により実現されても良い。
【0057】
上述した実施形態における各種シミュレーション処理を実行するプログラムは、コンピュータに読み取り可能な各種記録媒体(例えば、ROM、EEPROM、フラッシュメモリ等の半導体メモリ、磁気記録媒体、CD-ROM、DVD-ROM等の光ディスク)に記録することができる。
【符号の説明】
【0058】
3 力センサ
10 ロボットマニピュレータ
11 ツール部
50 制御装置
51 記憶部
52 力制御シミュレーション実行部
53 ロボット動作制御部
54 仮想力生成器
55 仮想力学習部
70 表示装置
71 撮像装置
72 AR/VR画像処理部
73 ディスプレイ
74 音声出力部
90 外部コンピュータ
91 物理シミュレーション部
100 ロボットシステム