(57)【要約】  受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することが可能な、新規かつ改良された処理装置、システム、および制御方法を提案する。  受動関節に接続されるリンクに設けられる操作体と、操作体に印加される力を検出する力センサとを含む第１のロボット（２００）に対応する、力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が操作体を保持している保持力を推定する処理部（１０２）を備える、処理装置が、提供される。
2018012110.tif 000002
【特許請求の範囲】
【請求項１】
受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含む第１のロボットに対応する、前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定する処理部を備える、処理装置。
【請求項２】
前記処理部は、前記モデルに基づき算出される前記仮想的な関節を保持するために要する仮想的な力と、前記操作者が前記操作体を保持する位置から前記仮想的な関節までの距離とに基づいて、前記保持力を推定する、請求項１に記載の処理装置。
【請求項３】
前記処理部は、前記第１のロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定する、請求項１に記載の処理装置。
【請求項４】
前記処理部は、前記第１のロボットが含む前記力センサの検出結果に基づく前記操作体に印加される力から、推定された前記保持力を減算することによって、前記操作力を推定する、請求項３に記載の処理装置。
【請求項５】
前記処理部は、推定された前記操作力に基づいて前記第１のロボットの動きを制御する、請求項３に記載の処理装置。
【請求項６】
前記処理部は、さらに、力センサを含み、前記第１のロボットの動きに基づき動く第２のロボットから取得される、前記第２のロボットが含む前記力センサの検出結果に基づいて、前記第１のロボットの動きを制御する、請求項５に記載の処理装置。
【請求項７】
受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含む第１のロボットと、  力センサを含み、前記第１のロボットの動きに基づき動く第２のロボットと、  前記第１のロボットの動きを制御する処理装置と、  を有し、  前記処理装置は、処理部を備え、  前記処理部は、  前記第１のロボットに対応する前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定し、  前記第１のロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定し、  推定された前記操作力に基づいて前記第１のロボットの動きを制御する、システム。
【請求項８】
受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含むロボットに対応する、前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定するステップと、  前記ロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定するステップと、  推定された前記操作力に基づいて前記ロボットの動きを制御するステップと、  を有する、処理装置により実行される制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本開示は、処理装置、システム、および制御方法に関する。
【背景技術】
【０００２】  ロボットが備える力センサの値を補正する技術が開発されている。ロボットが備える力センサの値を補正する技術としては、例えば下記の特許文献１に記載の技術が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４２８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】  ロボットが含む関節は、例えば、モータやアクチュエータなどにより駆動する関節（以下、「能動関節」と示す。）と、モータなどにより駆動しない関節（以下、「受動関節」と示す。）とに分類される。【０００５】  受動関節に接続されるリンクに、操作者が操作を行うことが可能な操作体が設けられているロボットを想定すると、操作者によって当該操作体に印加される力には、例えば、操作者が操作体を操作しようとする力（以下、「操作力」と示す。）に加えて、操作者が操作体を保持しようとする力（以下、「保持力」と示す。）が含まれうる。上記のような操作体に印加される力は、例えば、ロボットに設けられている力センサによって、検出される。【０００６】  ここで、例えば特許文献１に記載の技術では、ロボットの逆動力学演算から求まる重力項と動力学項（例えば、慣性力、コリオリ力など）が、力センサの値の補正に用いられる。よって、例えば特許文献１に記載の技術が用いられる場合には、ロボットの先端に取り付けられた作業ツールと、当該作業ツールにより作業が行われる対象物（特許文献１に記載のワーク）との間に作用する力に作用する正味の力を、求めることができる可能性がある。【０００７】  しかしながら、逆動力学演算から求まる項は、ロボットの動力学に起因する要因を示すものであるので、例えば特許文献１に記載の技術のように、単に逆動力学演算から求まる項（逆動力学演算の結果）を利用したとしても、上記のような操作者が操作体を保持している保持力を、推定することはできない。【０００８】  本開示では、受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することが可能な、新規かつ改良された処理装置、システム、および制御方法を提案する。
【課題を解決するための手段】
【０００９】  本開示によれば、受動関節に接続されるリンクに設けられる操作体と、上記操作体に印加される力を検出する力センサとを含む第１のロボットに対応する、上記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が上記操作体を保持している保持力を推定する処理部を備える、処理装置が、提供される。【００１０】  また、本開示によれば、受動関節に接続されるリンクに設けられる操作体と、上記操作体に印加される力を検出する力センサとを含む第１のロボットと、力センサを含み、上記第１のロボットの動きに基づき動く第２のロボットと、上記第１のロボットの動きを制御する処理装置と、を有し、上記処理装置は、処理部を備え、上記処理部は、上記第１のロボットに対応する上記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が上記操作体を保持している保持力を推定し、上記第１のロボットが含む上記力センサの検出結果と、推定された上記保持力とに基づいて、上記操作体に対する上記操作者の操作力を推定し、推定された上記操作力に基づいて上記第１のロボットの動きを制御する、システムが、提供される。【００１１】  また、本開示によれば、受動関節に接続されるリンクに設けられる操作体と、上記操作体に印加される力を検出する力センサとを含むロボットに対応する、上記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が上記操作体を保持している保持力を推定するステップと、上記ロボットが含む上記力センサの検出結果と、推定された上記保持力とに基づいて、上記操作体に対する上記操作者の操作力を推定するステップと、推定された上記操作力に基づいて上記ロボットの動きを制御するステップと、を有する、処理装置により実行される制御方法が、提供される。
【発明の効果】
【００１２】  本開示によれば、受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することが、できる。【００１３】  なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握されうる他の効果が奏されてもよい。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係るシステムの構成の一例を示す説明図である。
【図２】本実施形態に係るロボット（第１のロボット）の一例を示す説明図である。
【図３】第１の実施形態に係る処理装置のハードウェア構成の一例を示す説明図である。
【図４】ロボットの動きを制御するための処理部の構成の一例を説明するための説明図である。
【図５】第１の実施形態に係る処理装置が備える処理部の構成の一例を説明するための説明図である。
【図６】本実施形態に係る制御方法に係る処理の一例を示す流れ図である。
【図７】第２の実施形態に係るシステムの構成の一例を示す説明図である。
【図８】本実施形態に係るロボット（第２のロボット）の一例を示す説明図である。
【図９】第２の実施形態に係る処理装置におけるバイラテラル制御方法の概要を示す説明図である。
【図１０】第２の実施形態に係る処理装置が備える処理部の構成の一例を説明するための説明図である。
【発明を実施するための形態】
【００１５】  以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１６】  また、以下では、下記に示す順序で説明を行う。    １．第１の実施形態に係るシステム    ２．第２の実施形態に係るシステム    ３．本実施形態に係るプログラム
【００１７】（第１の実施形態に係るシステム）  図１は、第１の実施形態に係るシステム１０００の構成の一例を示す説明図である。
【００１８】  システム１０００は、例えば、処理装置１００と、ロボット２００とを有する。処理装置１００とロボット２００とは、例えば、任意の通信方式有線通信、または、任意の通信方式の無線通信によって、通信を行う。また、システム１０００は、処理装置１００とロボット２００とが直接的に通信を行う構成であってもよいし、処理装置１００とロボット２００とが、ネットワーク（または他の装置）を介して通信を行う構成であってもよい。
【００１９】［１］ロボット２００（第１のロボット）  ロボット２００は、例えば、受動関節を含む１または２以上の関節と、関節に接続されるリンクとを有するロボット（受動関節を含むリンク機構を有するロボット）である。ロボット２００は、例えば、受動関節に接続されるリンクに設けられる操作体と、操作体に印加される力を検出する力センサとを含む。ここで、本実施形態に係る力センサとしては、例えば、“歪ゲージを用いる方式などの任意の方式の力覚センサ”や、“圧電素子やマイクロホンなどで振動を検出することにより触覚を得る方式などの任意の方式の触覚センサ”などの、操作体に印加される力を検出することが可能な任意のセンサが、挙げられる。ロボット２００は、バッテリなどの内部電源（図示せず）から供給される電力、または、ロボット２００の外部電源から供給される電力によって、駆動する。
【００２０】  また、ロボット２００は、例えば、関節の動きを検出するための動きセンサを、関節それぞれに対応する位置に備える。上記動きセンサとしては、例えばエンコーダなどが挙げられる。
【００２１】  さらに、ロボット２００が能動関節を有する場合、ロボット２００は、例えば、能動関節を駆動させるための駆動機構を、関節それぞれに対応する位置に備える。上記駆動機構としては、例えば、モータとドライバとが挙げられる。
【００２２】  図２は、本実施形態に係るロボット２００（第１のロボット）の一例を示す説明図である。図２は、並進３軸がモータによって駆動する能動関節（図２に示すＡ）で実現され、姿勢３軸が受動関節（図２に示すＢ）で実現されるロボットの一例を示している。
【００２３】  図２に示すロボット２００では、受動関節に接続されるリンクに、操作体（図２に示すＣ）が設けられる。また、図２に示すロボット２００では、操作体に印加される力を検出する力センサ（図２に示すＤ）が、操作体の根本部分に設けられる。
【００２４】  ここで、図２では、ロボット２００に設けられる操作体が、スタイラス型の操作デバイスである例を示しているが、本実施形態に係る操作体は、図２に示す例に限られない。本実施形態に係る操作体としては、例えば、グローブ型の操作デバイスなどの、任意の形状の操作デバイスが挙げられる。また、本実施形態に係る操作体は、ハプティックデバイスに適用することが可能な、任意の操作デバイスであってもよい。また、ロボット２００は、操作体を交換することが可能な構造を有していてもよい。
【００２５】  以下では、ロボット２００が、図２に示す構成のロボットである場合を例に挙げる。なお、本実施形態に係る第１のロボットの構成が、図２に示す例に限られないことは、言うまでもない。
【００２６】  再度図１を参照して、ロボット２００の構成の一例を説明する。ロボット２００は、例えば、センサ部２０２と、駆動部２０４とを有する。
【００２７】  センサ部２０２は、例えば、ロボット２００が有する関節の動きと、操作体に印加される力とをそれぞれ検出する。
【００２８】  センサ部２０２は、エンコーダなどの動きセンサによって、関節の動きを検出する。動きセンサは、例えば、動きを検出する対象の関節ごとに、関節の動きを検出することが可能な位置（関節に対応する位置）に設けられる。
【００２９】  また、センサ部２０２は、力センサによって、操作体に印加される力を検出する。力センサは、操作体の根本部分などの、操作体に印加される力を検出することが可能な位置に設けられる。
【００３０】  駆動部２０４は、能動関節を駆動させる。駆動部２０４は、能動関節を動かすモータと当該モータを動かすドライバとによって、能動関節を駆動させる。モータとドライバとは、例えば、能動関節ごとに、能動関節を動かすことが可能な位置に設けられる。また、ドライバは、複数の関節で共有されていてもよい。
【００３１】  駆動部２０４は、例えば、処理装置１００などの外部装置から送信される制御信号に基づいて、能動関節を駆動させる。処理装置１００が上記制御信号を送信する場合、処理装置１００は、ロボット２００の動きを制御する制御装置として機能する。以下では、処理装置１００が、ロボット２００の動きを制御する制御装置として機能する場合を主に例に挙げる。
【００３２】［２］処理装置１００  処理装置１００は、例えば処理部１０２を備える。
【００３３】  また、処理装置１００は、例えば、制御部（図示せず）や、ＲＯＭ（Read  Only  Memory。図示せず）、ＲＡＭ（Random  Access  Memory。図示せず）、記憶部（図示せず）、通信部（図示せず）、ユーザが操作可能な操作部（図示せず）、様々な画面を表示画面に表示する表示部（図示せず）などを備えていてもよい。処理装置１００は、例えば、データの伝送路としてのバスにより上記各構成要素間を接続する。処理装置１００は、バッテリなどの内部電源（図示せず）から供給される電力、または、処理装置１００の外部電源から供給される電力によって、駆動する。
【００３４】  制御部（図示せず）は、ＭＰＵ（Micro  Processing  Unit）などの演算回路で構成される、１または２以上のプロセッサや、各種処理回路などで構成され、処理装置１００全体を制御する。また、制御部（図示せず）は、処理装置１００において、例えば、処理部１０２の役目を果たしてもよい。
【００３５】  なお、処理部１０２は、処理部１０２における処理を実現可能な専用の（または汎用の）回路（例えば、制御部（図示せず）とは別体のプロセッサなど）で構成されていてもよい。
【００３６】  ＲＯＭ（図示せず）は、制御部（図示せず）が使用するプログラムや演算パラメータなどの制御用データを記憶する。ＲＡＭ（図示せず）は、制御部（図示せず）により実行されるプログラムなどを一時的に記憶する。
【００３７】  記憶部（図示せず）は、処理装置１００が備える記憶手段であり、例えば、ロボット２００（第１のロボット）に対応するモデル情報（後述する）などの、処理部１０２における処理に係るデータや、各種アプリケーションなど様々なデータを記憶する。
【００３８】  ここで、記憶部（図示せず）としては、例えば、ハードディスク（Hard  Disk）などの磁気記録媒体や、フラッシュメモリ（flash  memory）などの不揮発性メモリ（nonvolatile  memory）などが挙げられる。また、記憶部（図示せず）は、処理装置１００から着脱可能であってもよい。
【００３９】  通信部（図示せず）としては、例えば後述する通信インタフェースが挙げられる。また、操作部（図示せず）としては、例えば後述する操作入力デバイスが挙げられる。また、表示部（図示せず）としては、後述する表示デバイスが挙げられる。
【００４０】［処理装置１００のハードウェア構成例］  図３は、第１の実施形態に係る処理装置１００のハードウェア構成の一例を示す説明図である。処理装置１００は、例えば、ＭＰＵ１５０と、ＲＯＭ１５２と、ＲＡＭ１５４と、記録媒体１５６と、入出力インタフェース１５８と、操作入力デバイス１６０と、表示デバイス１６２と、通信インタフェース１６４とを備える。また、処理装置１００は、例えば、データの伝送路としてのバス１６６で各構成要素間を接続する。また、処理装置１００は、例えば、処理装置１００が備えているバッテリなどの内部電源から供給される電力、または、接続されている外部電源から供給される電力などによって、駆動する。
【００４１】  ＭＰＵ１５０は、例えば、ＭＰＵなどの演算回路で構成される、１または２以上のプロセッサや、各種処理回路などで構成され、処理装置１００全体を制御する制御部（図示せず）として機能する。また、ＭＰＵ１５０は、処理装置１００において、例えば処理部１０２の役目を果たす。なお、上述したように、処理部１０２は、処理部１０２の処理を実現可能な専用の（または汎用の）回路（例えば、ＭＰＵ１５０とは別体のプロセッサなど）で構成されていてもよい。
【００４２】  ＲＯＭ１５２は、ＭＰＵ１５０が使用するプログラムや演算パラメータなどの制御用データなどを記憶する。ＲＡＭ１５４は、例えば、ＭＰＵ１５０により実行されるプログラムなどを一時的に記憶する。
【００４３】  記録媒体１５６は、記憶部（図示せず）として機能し、例えば、ロボット２００（第１のロボット）に対応するモデル情報（後述する）などの、処理部１０２における処理に係るデータや、各種アプリケーションなど様々なデータを記憶する。ここで、記録媒体１５６としては、例えば、ハードディスクなどの磁気記録媒体や、フラッシュメモリなどの不揮発性メモリが挙げられる。また、記録媒体１５６は、処理装置１００から着脱可能であってもよい。
【００４４】  入出力インタフェース１５８は、例えば、操作入力デバイス１６０や、表示デバイス１６２を接続する。操作入力デバイス１６０は、操作部（図示せず）として機能し、また、表示デバイス１６２は、表示部（図示せず）として機能する。ここで、入出力インタフェース１５８としては、例えば、ＵＳＢ（Universal  Serial  Bus）端子や、ＤＶＩ（Digital  Visual  Interface）端子、ＨＤＭＩ（High-Definition  Multimedia  Interface）（登録商標）端子、各種処理回路などが挙げられる。
【００４５】  また、操作入力デバイス１６０は、例えば、処理装置１００上に備えられ、処理装置１００の内部で入出力インタフェース１５８と接続される。操作入力デバイス１６０としては、例えば、ボタンや、方向キー、ジョグダイヤルなどの回転型セレクタ、あるいは、これらの組み合わせなどが挙げられる。
【００４６】  また、表示デバイス１６２は、例えば、処理装置１００上に備えられ、処理装置１００の内部で入出力インタフェース１５８と接続される。表示デバイス１６２としては、例えば、液晶ディスプレイ（Liquid  Crystal  Display）や有機ＥＬディスプレイ（Organic  Electro-Luminescence  Display。または、ＯＬＥＤディスプレイ（Organic  Light  Emitting  Diode  Display）ともよばれる。）などが挙げられる。
【００４７】  なお、入出力インタフェース１５８が、処理装置１００の外部の操作入力デバイス（例えば、キーボードやマウスなど）や外部の表示デバイスなどの、外部デバイスと接続することも可能であることは、言うまでもない。また、表示デバイス１６２は、例えばタッチパネルなど、表示とユーザ操作とが可能なデバイスであってもよい。
【００４８】  通信インタフェース１６４は、処理装置１００が備える通信手段であり、通信部（図示せず）として機能する。通信インタフェース１６４は、例えば、ネットワークを介して（あるいは、直接的に）、ロボット２００などの外部装置などと、無線または有線で通信を行う。ここで、通信インタフェース１６４としては、例えば、通信アンテナおよびＲＦ（Radio  Frequency）回路（無線通信）や、ＩＥＥＥ８０２．１５．１ポートおよび送受信回路（無線通信）、ＩＥＥＥ８０２．１１ポートおよび送受信回路（無線通信）、あるいはＬＡＮ（Local  Area  Network）端子および送受信回路（有線通信）などが挙げられる。
【００４９】  処理装置１００は、例えば図３に示す構成を有する。なお、第１の実施形態に係る処理装置１００のハードウェア構成は、図３に示す構成に限られない。
【００５０】  例えば、処理装置１００は、接続されている外部の通信デバイスを介して外部装置などと通信を行う場合、または、スタンドアロンで処理を行う場合（例えば、図１に示すロボット２００と処理装置１００とが、同一の装置である場合など）には、通信インタフェース１６４を備えていなくてもよい。また、通信インタフェース１６４は、複数の通信方式によって、１または２以上の外部装置などと通信を行うことが可能な構成であってもよい。
【００５１】  また、処理装置１００は、例えば、記録媒体１５６、操作入力デバイス１６０、および表示デバイス１６２のうちの、１または２以上を備えない構成をとることが可能である。
【００５２】  また、処理装置１００は、例えば、後述する処理装置１００の適用例に応じた構成をとることが可能である。
【００５３】  また、例えば、図３に示す構成（または変形例に係る構成）の一部または全部は、１、または２以上のＩＣ（Integrated  Circuit）で実現されてもよい。
【００５４】  再度図１を参照して、処理装置１００の構成の一例について説明する。処理部１０２は、ロボット２００（第１のロボット。以下、同様とする。）において、操作者が操作体を保持している保持力を推定する。
【００５５】  処理部１０２は、ロボット２００に対応する、力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が操作体を保持している保持力を推定する。処理部１０２は、例えば記憶部（図示せず）などの記録媒体に記憶されている、ロボット２００に対応するモデル情報を読み出すことによって、ロボット２００に対応する、力センサ部分を仮想的な関節とみなすモデルを特定する。
【００５６】  記憶部（図示せず）などの記録媒体では、例えば、ロボットを示す識別情報（例えばＩＤ）とモデル情報とが、テーブル（またはデータベース）などにより対応付けられて記憶される。処理部１０２は、上記テーブルなどを参照することによって、ロボット２００から取得される識別情報と一致する識別情報に対応付けられているモデル情報を特定し、特定されたモデル情報を、記憶部（図示せず）などの記録媒体から読み出す。なお、ロボット２００に対応する、力センサ部分を仮想的な関節とみなすモデルを特定する方法が、上記に示す例に限られないことは、言うまでもない。
【００５７】  処理部１０２における保持力の推定に係る処理の一例については、後述する。
【００５８】  また、処理部１０２は、推定された保持力に基づいて、ロボット２００の動きを制御することも可能である。
【００５９】  処理部１０２は、ロボット２００が含む力センサの検出結果と、推定された保持力とに基づいて、操作体に対する操作者の操作力を推定する。処理部１０２は、ロボット２００が含む力センサの検出結果に基づく操作体に印加される力から、推定された保持力を減算することによって、操作力を推定する。上記力センサの検出結果に基づく操作体に印加される力は、力センサの検出結果が示す値そのものであってもよいし、力センサの検出結果が示す値が補正された値であってもよい。
【００６０】  処理部１０２における操作力の推定に係る処理の一例については、後述する。
【００６１】  さらに、処理部１０２は、推定された操作力に基づいてロボット２００の動きを制御してもよい。
【００６２】  処理部１０２は、例えば、“ロボット２００が有する能動関節を駆動させるモータを動作させる命令を含む制御信号を、ロボット２００に対して送信する処理”を行うことによって、ロボット２００の動きを制御する。上記制御信号は、処理装置１００が備える通信部（図示せず）、または処理装置１００に接続されている外部の通信デバイスを介して、ロボット２００に送信される。
【００６３】  以下、処理部１０２が、ロボット２００の動きを制御する場合を例に挙げて、処理部１０２の構成の一例、および処理部１０２における処理の一例を説明する。
【００６４】［２−１］ロボット２００の動きを制御するための構成の一例  処理部１０２の構成の一例を説明する前に、ロボット２００の動きを制御するための構成の一例を説明する。図４は、ロボット２００の動きを制御するための処理部１０の構成の一例を説明するための説明図である。
【００６５】  図４に示す“Ｆｈｕｍａｎ”は、操作者により操作体に印加される力を示している。また、図４に示す“ＦＯｐｅｒａｔｉｏｎ”は、操作力を示しており、図４に示す“Ｆｓｕｐｐｏｒｔ”は、保持力を示している。図４に示すように、操作者により操作体に印加される力には、操作力と保持力とが含まれる。
【００６６】  処理部１０は、例えば、逆動力学演算器１２と、加算器１４と、変換器１６と、制御器１８とを有する。
【００６７】  逆動力学演算器１２は、ロボット２００から取得される動きセンサの検出結果（図４に示す“（θ，θ’，θ’’）”）に対して、逆動力学演算を行う。ここで、図４に示す“（θ，θ’，θ’’）”は、（関節の角度，関節の角速度，関節の角加速度）を示している。
【００６８】  加算器１４は、ロボット２００から取得される力センサの検出結果が示す値（図４に示す“Ｆ”）から、逆動力学演算器１２における逆動力学演算の結果が示す値を減算する。加算器１４の演算結果（図４に示す“Ｆ＾（ハット）ｈｕｍａｎ”）は、ロボット２００が含む力センサの検出結果が示す値が補正された値であり、力センサの検出結果に基づく操作体に印加される力の一例に該当する。
【００６９】  変換器１６は、加算器１４の演算結果を、操作空間位置目標値（図４に示す“Ｘｒｅｆ”）に変換する。変換器１６は、例えば、“入力値を操作空間位置目標値に変換することが可能な、任意のアルゴリズムの演算を行うこと”や、“入力値と操作空間位置目標値とが対応付けられているテーブル（またはデータベース）を参照すること”など、入力値を操作空間位置目標値に変換することが可能な任意の方法によって、加算器１４の演算結果を操作空間位置目標値に変換する。
【００７０】  制御器１８は、変換器１６から伝達される操作空間位置目標値と、ロボット２００から取得される操作空間位置を示すデータ（図４に示す“Ｘ”）とに基づいて、関節空間トルク指令値（図４に示す“Ｔｒｅｆ”。ロボット２００が有する能動関節を駆動させるモータを動作させる命令の一例）を含む制御信号を、ロボット２００に対して送信する。制御器１８は、例えば、ロボット２００の操作空間位置を操作空間位置目標値に近づけることが可能な、任意のアルゴリズムの演算を行うことにより、関節空間トルク指令値を算出する。
【００７１】  ロボット２００は、処理部１０の制御器１８により送信された制御信号に基づき能動関節を動かすことによって、動く。
【００７２】  例えば図４に示す構成を有する処理部１０において処理が行われることによって、ロボット２００の動力学による影響を補償した上で、ロボット２００の動きを制御することができる。
【００７３】  ここで、図４に示すように、操作者により操作体に印加される力には、操作力と保持力とが含まれる。しかしながら、図４に示す処理部１０における処理では、操作者がロボット２００の操作体を保持している保持力が考慮されていない。そのため、図４に示す処理部１０が用いられる場合には、純粋な操作力だけを考慮した、ロボット２００の動きの制御（ロボット２００の力制御）を行うことができない。
【００７４】［２−２］処理部１０２の構成の一例  そこで、処理部１０２は、保持力を推定し、推定された保持力を補償した上でロボット２００の動きを制御する。処理部１０２が、保持力を推定し、推定された保持力を補償することによって、処理装置１００は、純粋な操作力に基づきロボット２００の動きを制御することができる。
【００７５】  図５は、第１の実施形態に係る処理装置１００が備える処理部１０２の構成の一例を説明するための説明図である。
【００７６】  図５に示す“Ｆｈｕｍａｎ”は、操作者により操作体に印加される力を示している。また、図５に示す“ＦＯｐｅｒａｔｉｏｎ”は、操作力を示しており、図５に示す“Ｆｓｕｐｐｏｒｔ”は、保持力を示している。図５に示すように、操作者により操作体に印加される力には、操作力と保持力とが含まれる。
【００７７】  処理部１０２は、例えば、逆動力学演算器１１０と、加算器１１２と、保持力推定器１１４と、加算器１１６と、変換器１１８と、制御器１２０とを有する。
【００７８】［２−２−１］逆動力学演算器１１０  逆動力学演算器１１０は、ロボット２００から取得される動きセンサの検出結果（図５に示す“（θ，θ’，θ’’）”）に対して、逆動力学演算を行う。ここで、図５に示す“（θ，θ’，θ’’）”は、（関節の角度，関節の角速度，関節の角加速度）を示している。
【００７９】  ロボット２００のようなロボットの動力学は、一般的に下記の数式１により表される。
【００８０】
【数１】
2018012110.tif 000003
【００８１】  ここで、上記数式１の左辺は、ロボットにおける各関節のトルク値を示している。また、上記数式１の右辺の第一項、第二項、および第三項は、慣性力項、コリオリ力項、および重力項をそれぞれ示している。
【００８２】  逆動力学演算器１１０は、ロボット２００に対応するモデル情報が示す、力センサ部分を仮想的な関節とみなすモデルに基づいて、ロボット２００の制御周期ごとに、逆動力学演算を行う。逆動力学演算器１１０は、逆動力学演算を行うことによって、モデル情報が示すモデルにおける仮想的な関節における仮想関節力を算出する。
【００８３】  ここで、本実施形態に係る仮想関節力とは、例えば、実際は動かない仮想的な関節において位置および姿勢を維持するために要する仮想的な力、すなわち、仮想的な関節を保持するために要する仮想的な力である。仮想関節力は、例えば、仮想的な関節のトルク値で表される。
【００８４】  逆動力学演算器１１０は、例えば、本願出願人が出願した特開２００７−１０８９５５号明細書で開示している手法を用いて逆動力学演算を行うことによって、仮想的な関節のトルク値（仮想関節力）を算出する。なお、本実施形態に係る仮想的な関節のトルク値の算出方法は、上記に示す方法に限られない。逆動力学演算器１１０は、モデル情報が示すモデルにおける仮想的な関節におけるトルク値を算出することが可能な、任意のアルゴリズムの演算を行ってもよい。
【００８５】  仮想的な関節のトルク値（仮想関節力）は、例えば下記の数式２で表される。
【００８６】
【数２】
2018012110.tif 000004
【００８７】  ここで、上記数式２の左辺は、仮想的な関節のトルク値（仮想的な関節を保持するために要する仮想的な力）を示している。また、上記数式２の右辺の第一項は、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”を示している。また、上記数式２の右辺の第二項は、“保持力”を示している。上記数式２に示すように、仮想的な関節のトルク値は、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”と“保持力”とを乗算して得られるトルク値と、力学的に一致する。
【００８８】［２−２−２］加算器１１２  加算器１１２は、ロボット２００から取得される力センサの検出結果が示す値（図５に示す“Ｆ”）から、逆動力学演算器１１０における逆動力学演算の結果が示す値（仮想的な関節のトルク値）を減算する。
【００８９】  加算器１１２における演算によって、力センサの検出結果が示す値から、ロボット２００のダイナミクスに起因する力が取り除かれる。つまり、加算器１１２の演算結果（図５に示す“Ｆ＾（ハット）ｈｕｍａｎ”）は、ロボット２００が含む力センサの検出結果が示す値が補正された値であり、力センサの検出結果に基づく操作体に印加される力の一例に該当する。
【００９０】［２−２−４］保持力推定器１１４  保持力推定器１１４は、逆動力学演算器１１０における逆動力学演算の結果が示す値（仮想的な関節のトルク値）に基づいて、操作者がロボット２００が含む操作体を保持している保持力を推定する。
【００９１】  上記数式２に示すように、仮想的な関節のトルク値は、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”と“保持力”とから求められる。また、仮想的な関節のトルク値は、逆動力学演算器１１０により求められている。よって、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”が決まれば、上記数式２より“保持力”を推定することが可能である。
【００９２】  ここで、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”は、例えば、ロボット２００に対応するモデル情報に含まれる。また、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”は、モデル情報とは別のデータとして、記憶部（図示せず）などの記録媒体に記憶されていてもよい。“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”としては、例えば、“ロボット２００が含む操作体における設定された基準位置と、ロボット２００において力センサが設けられる位置との距離”が挙げられる。
【００９３】  保持力推定器１１４は、例えば、ロボット２００に対応するモデル情報（または、上記モデル情報とは別のデータ）を参照することによって、“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”を特定する。そして、保持力推定器１１４は、逆動力学演算器１１０から伝達される仮想的な関節のトルク値と、特定された“ロボット２００において操作者が操作体を保持する位置から仮想的な関節までの距離”とに基づいて、上記数式２より“保持力”を推定する。
【００９４】［２−２−４］加算器１１６  加算器１１６は、加算器１１２の演算結果（図５に示す“Ｆ＾（ハット）ｈｕｍａｎ”）から、保持力推定器１１４の演算結果（図５に示す“Ｆ＾（ハット）ｓｕｐｐｏｒｔ”）を減算する。つまり、加算器１１６の演算結果（図５に示す“Ｆ＾（ハット）Ｏｐｅｒａｔｉｏｎ”）は、“力センサの検出結果に基づく操作体に印加される力から推定された保持力が減算された値”を示す。
【００９５】  よって、加算器１１６の演算結果は、推定された保持力が補償された、純粋な操作力の推定結果を示すこととなる。
【００９６】［２−２−５］変換器１１８  変換器１１８は、加算器１１６の演算結果を、操作空間位置目標値（図５に示す“Ｘｒｅｆ”）に変換する。変換器１１８は、例えば、“入力値を操作空間位置目標値に変換することが可能な、任意のアルゴリズムの演算を行うこと”や、“入力値と操作空間位置目標値とが対応付けられているテーブル（またはデータベース）を参照すること”など、入力値を操作空間位置目標値に変換することが可能な任意の方法によって、加算器１１６の演算結果を操作空間位置目標値に変換する。
【００９７】［２−２−６］制御器１２０  制御器１２０は、変換器１１８から伝達される操作空間位置目標値と、ロボット２００から取得される操作空間位置を示すデータ（図５に示す“Ｘ”）とに基づいて、関節空間トルク指令値（図５に示す“Ｔｒｅｆ”。ロボット２００が有する能動関節を駆動させるモータを動作させる命令の一例）を含む制御信号を、ロボット２００に対して送信する。制御器１２０は、例えば、ロボット２００の操作空間位置を操作空間位置目標値に近づけることが可能な、任意のアルゴリズムの演算を行うことにより、関節空間トルク指令値を算出する。
【００９８】  ロボット２００は、処理部１０２の制御器１２０により送信された制御信号に基づき能動関節を動かすことによって、動く。
【００９９】  処理部１０２は、例えば図５に示す構成を有する。
【０１００】  ここで、処理部１０２は、例えば逆動力学演算器１１０と保持力推定器１１４とを有することによって、ロボット２００（第１のロボット）に対応する、力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者がロボット２００の操作体を保持している保持力を推定する。
【０１０１】  よって、図５に示す処理部１０２を備える処理装置１００は、ロボット２００のような、受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することができる。
【０１０２】  また、処理部１０２は、さらに、加算器１１６を有することによって、推定された保持力を補償する。
【０１０３】  よって、図５に示す処理部１０２を備える処理装置１００は、推定された保持力を補償して、純粋な操作力を推定することができる。
【０１０４】  また、処理部１０２は、さらに、変換器１１８と制御器１２０とを有することによって、推定された操作力に基づいて、ロボット２００の動きを制御する。
【０１０５】  よって、図５に示す処理部１０２を備える処理装置１００は、ロボット２００の動力学による影響、および推定された保持力を補償した上で、ロボット２００の動きを制御することができる。
【０１０６】  なお、第１の実施形態に係る処理部１０２の構成は、図５に示す構成に限られない。
【０１０７】  例えば、処理部１０２は、図５に示す加算器１１２、加算器１１６、変換器１１８、および制御器１２０を有さない構成であってもよい。図５に示す加算器１１２、加算器１１６、変換器１１８、および制御器１２０を有さない構成であっても、処理部１０２は、ロボット２００（受動関節に接続されるリンクに設けられる操作体を含むロボットの一例）において、操作者が操作体を保持している保持力を推定することができる。
【０１０８】  また、処理部１０２は、例えば、図５に示す変換器１１８、および制御器１２０を有さない構成であってもよい。図５に示す変換器１１８、および制御器１２０を有さない構成であっても、処理部１０２は、推定された保持力を補償して、純粋な操作力を推定することができる。
【０１０９】  なお、処理部１０２が、上記図５に示す加算器１１２、加算器１１６、変換器１１８、および制御器１２０を有さない構成、または、上記図５に示す変換器１１８、および制御器１２０を有さない構成をとる場合、ロボット２００の動きは、処理装置１００と外部装置とが連携して処理を行うことによって制御されてもよい。
【０１１０】  また、図５に示す構成は、処理部１０２における処理を便宜上切り分けたものである。よって、処理部１０２の構成は、図５に示す構成（上記変形例に係る構成も含む。）に限られず、図５に示す構成要素のうちの一部または全部の構成要素における処理が、共通のハードウェアで行われてもよい。
【０１１１】［３］本実施形態に係る制御方法に係る処理  次に、本実施形態に係る制御方法に係る処理の一例を説明する。以下では、ロボット２００（受動関節に接続されるリンクに設けられる操作体と、操作体に印加される力を検出する力センサとを含むロボットの一例）を制御するための制御方法に係る処理を、処理装置１００が行う場合を例に挙げる。
【０１１２】  上述したように、処理装置１００は、ロボット２００に対応する、力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が操作体を保持している保持力を推定する。例えば図５に示す処理部１０２を備える処理装置１００において、保持力を推定する処理は、逆動力学演算器１１０と保持力推定器１１４とにおいて行われる。
【０１１３】  また、処理装置１００は、ロボット２００が含む力センサの検出結果と、推定された保持力とに基づいて、操作体に対する操作者の操作力を推定する。例えば図５に示す処理部１０２を備える処理装置１００において、操作力を推定する処理は、加算器１１６において行われる。
【０１１４】  そして、処理装置１００は、推定された操作力に基づいてロボット２００の動きを制御する。例えば図５に示す処理部１０２を備える処理装置１００において、ロボット２００の動きを制御する処理は、変換器１１８と制御器１２０とにおいて行われる。
【０１１５】  処理装置１００は、例えば上記にように、保持力を推定する処理、操作力を推定する処理、およびロボット２００の動きを制御する処理を行うことによって、ロボット２００の動きを制御する。
【０１１６】  図６は、本実施形態に係る制御方法に係る処理の一例を示す流れ図であり、図５に示す処理部１０２を備える処理装置１００における、ロボット２００の動きを制御する処理の一例を示している。処理装置１００において図６に示す処理は、例えば、処理部１０２において、ロボット２００の制御周期ごとに行われる。
【０１１７】  処理装置１００は、ロボット２００が含む力センサの値とエンコーダの値とを読み取る（Ｓ１００）。力センサの値とエンコーダの値とは、ロボット２００が主体的に処理装置１００に対して送信したものであってもよいし、処理装置１００が主体的にロボット２００に送信させたものであってもよい。
【０１１８】  処理装置１００は、エンコーダの値から、ロボット２００の各関節における位置（関節の角度）、速度（関節の角速度）、加速度（関節の角加速度）をそれぞれ算出する（Ｓ１０２）。
【０１１９】  処理装置１００は、ステップＳ１０２において算出された位置（関節の角度）、速度（関節の角速度）、加速度（関節の角加速度）を、ロボット２００に対応するモデルに設定する（Ｓ１０４）。処理装置１００は、例えば、記憶部（図示せず）などの記録媒体に記憶されているロボット２００に対応するモデル情報を参照することによって、ロボット２００に対応するモデルを特定する。
【０１２０】  処理装置１００は、逆動力学演算を行い、ロボット２００に対応するモデルにおける仮想的な関節における仮想関節力を算出する（Ｓ１０６）。
【０１２１】  処理装置１００は、例えば、ロボット２００に対応する操作体に関する情報を利用して、逆動力学演算を行う。操作体に関する情報としては、例えば、操作体の質量、操作体のイナーシャ（回転系慣性モーメント）、および操作体の重心のうちの１または２以上を示すデータなど、操作体に係る物理データが、挙げられる。操作体に関する情報は、例えば記憶部（図示せず）などの記録媒体に記憶される。
【０１２２】  より具体的には、処理装置１００は、例えば、本願出願人が出願した特開２００７−１０８９５５号明細書で開示している手法を用いて逆動力学演算を行う。
【０１２３】  例えば上記のように、ロボット２００が含む操作体に関する情報を利用して逆動力学演算を行うことによって、ロボット２００が含む操作体の形状と構造との一方または双方が変更されたとしても、処理装置１００は、操作者が操作体を保持している保持力を推定することができる。また、処理装置１００がロボット２００が含む操作体に関する情報を利用して逆動力学演算を行う場合、システム１０００が有するロボット２００（第１のロボット）を、操作体を交換することが可能な構造とすることが可能である。
【０１２４】  処理装置１００は、力センサの値から、ロボット２００のダイナミクスに起因する力を取り除き、操作者によって印加される力のみを算出する（Ｓ１０８）。
【０１２５】  処理装置１００は、“ステップＳ１０６における逆動力学演算により得られたロボット２００のダイナミクスに起因する力”と、“ロボット２００が含む操作体における設定された基準位置と、ロボット２００において力センサが設けられる位置との距離”（操作者が操作体を保持する位置から仮想的な関節までの距離の一例）とに基づいて、操作者が操作体を保持している保持力を算出する（Ｓ１１０）。
【０１２６】  処理装置１００は、ステップＳ１０８において算出された、操作者によって印加される力から、ステップＳ１１０において算出された保持力を取り除き、純粋な操作力のみを算出する（Ｓ１１２）。
【０１２７】  処理装置１００は、ステップＳ１１２において算出された操作力に基づいて、ロボット２００の動きを制御するための制御演算を行う（Ｓ１１４）。ステップＳ１１４における制御演算としては、例えば、ロボット２００の操作空間位置を操作空間位置目標値に近づけるような関節空間トルク指令値を求めることが可能な、任意のアルゴリズムの演算が挙げられる。
【０１２８】  処理装置１００は、ステップＳ１１４における制御演算により得られた関節空間トルク指令値を含む制御信号を、ロボット２００のモータを駆動させるためのドライバに出力する（Ｓ１１６）。
【０１２９】  処理装置１００は、本実施形態に係る制御方法に係る処理として、例えば図６に示す処理を行う。なお、本実施形態に係る制御方法に係る処理の例が、図６に示す例に限られないことは、言うまでもない。
【０１３０】［４］システム１０００が奏する効果、およびシステム１０００の変形例  第１の実施形態に係るシステム１０００は、上述した機能、構成を有するロボット２００（第１のロボット）と、上述した機能、構成を有する処理装置１００とを有する。
【０１３１】  システム１０００では、処理装置１００を有することによって、例えば下記の効果が奏される。なお、システム１０００において奏される効果が、下記に示す例に限られないことは、言うまでもない。    ・ロボット２００のような、受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することができる。保持力の推定は、力センサ部分を仮想的な関節とみなすモデルに基づいて行われるので、操作者の操作によりロボット２００が含む操作体の姿勢が変化しても、操作者が操作体を保持している保持力の推定が可能である。    ・推定された保持力を補償して、ロボット２００が含む操作体に対する純粋な操作力を推定することができる。    ・ロボット２００の動力学による影響、および推定された保持力を補償した上で、ロボット２００の動きを制御することができるので、ロボット２００が含む操作体に対する操作者の操作力を考慮した制御が可能となる。
【０１３２】  なお、第１の実施形態に係るシステムの構成は、図１に示す例に限られない。
【０１３３】  例えば、図１に示す処理装置１００とロボット２００とは、同一の装置であってもよい。処理装置１００とロボット２００とが同一の装置である場合としては、受動関節に接続されるリンクに設けられる操作体を含むロボットが、処理装置１００が有する機能、構成を備える例が、挙げられる。
【０１３４】［５］第１の実施形態に係るシステムの適用例  以上、第１の実施形態に係るシステムの構成要素として、処理装置を挙げて説明したが、本実施形態は、かかる形態に限られない。本実施形態は、例えば、ＰＣ（Personal  Computer）やサーバなどのコンピュータや、スマートフォンなどの通信装置、タブレット型の装置、ゲーム機など、様々な機器に適用することができる。また、本実施形態は、例えば、上記のような機器に組み込むことが可能なＩＣに適用することもできる。さらに、上述したように、本実施形態は、受動関節に接続されるリンクに設けられる操作体を含むロボットに適用することも可能である。
【０１３５】  また、上記では、第１の実施形態に係るシステムの構成要素として、受動関節に接続されるリンクに設けられる操作体を含むロボットを挙げて説明したが、本実施形態に係るロボットは、かかる形態に限られない。本実施形態は、例えば、姿勢３軸が受動関節になっているタイプのハプティックデバイスなどの受動関節を含むハプティックデバイスなど、受動関節を含み操作者による操作が可能な、任意のデバイスに適用することができる。
【０１３６】（第２の実施形態に係るシステム）  なお、本実施形態に係るシステムは、上述した第１の実施形態に係るシステムに限られない。図７は、第２の実施形態に係るシステム２０００の構成の一例を示す説明図である。
【０１３７】  システム２０００は、例えば、処理装置３００と、ロボット２００（第１のロボット）と、ロボット４００（第２のロボット）とを有する。処理装置３００およびロボット２００と、処理装置３００およびロボット４００とは、例えば、任意の通信方式有線通信、または、任意の通信方式の無線通信によって、通信を行う。システム２０００は、処理装置３００とロボット２００とが直接的に通信を行う構成であってもよいし、処理装置３００とロボット２００とが、ネットワーク（または他の装置）を介して通信を行う構成であってもよい。また、システム２０００は、処理装置３００とロボット４００とが直接的に通信を行う構成であってもよいし、処理装置３００とロボット４００とが、ネットワーク（または他の装置）を介して通信を行う構成であってもよい。
【０１３８】［Ｉ］ロボット２００（第１のロボット）  ロボット２００は、システム２０００が有する第１のロボットである。ロボット２００は、第１の実施形態に係るロボット２００と同様の機能、構成を有する。
【０１３９】［ＩＩ］ロボット４００（第２のロボット）  ロボット４００は、システム２０００が有する第２のロボットである。ロボット４００は、力センサを含み、ロボット２００（第１のロボット）の動きに基づき動く。ロボット４００は、バッテリなどの内部電源（図示せず）から供給される電力、または、ロボット４００の外部電源から供給される電力によって、駆動する。
【０１４０】  つまり、システム２０００は、バイラテラルシステムであり、システム２０００においてロボット２００は、マスタ（Ｍａｓｔｅｒ）側のデバイスに該当し、システム２０００においてロボット４００は、スレーブ（Ｓｌａｖｅ）側のデバイスに該当する。
【０１４１】  ロボット４００は、例えば、ロボット２００の動きに対応して動くための、１または２以上の能動関節と、能動関節に接続されるリンクとを有するロボット（能動関節を含むリンク機構を有するロボット）である。ロボット４００は、例えば、能動関節の動きを検出するための動きセンサを、能動関節それぞれに対応する位置に備える。上記動きセンサとしては、例えばエンコーダなどが挙げられる。
【０１４２】  また、ロボット４００は、例えば、能動関節を駆動させるための駆動機構を、能動関節それぞれに対応する位置に備える。上記駆動機構としては、例えば、モータとドライバとが挙げられる。
【０１４３】  図８は、本実施形態に係るロボット４００（第２のロボット）の一例を示す説明図である。
【０１４４】  図８に示すロボット４００では、アームの先端部分（図８に示すＡ）に、各種センサ（例えば、原点センサや、Ｌｉｍｉｔセンサ、エンコーダ、マイクロホン、加速度センサなど）が設けられる。また、図８に示すロボット４００では、力センサ（図８に示すＢ）が、アームの先端部分に設けられる。
【０１４５】  以下では、ロボット４００が、図８に示す構成のロボットである場合を、例に挙げる。なお、本実施形態に係る第２のロボットの構成が、図８に示す例に限られないことは、言うまでもない。
【０１４６】  再度図７を参照して、ロボット４００の構成の一例を説明する。ロボット４００は、例えば、センサ部４０２と、駆動部４０４とを有する。
【０１４７】  センサ部４０２は、例えば、ロボット４００が有する関節の動きを検出する。
【０１４８】  センサ部４０２は、エンコーダなどの動きセンサによって、関節の動きを検出する。動きセンサは、例えば、動きを検出する対象の関節ごとに、関節の動きを検出することが可能な位置（関節に対応する位置）に設けられる。
【０１４９】  駆動部４０４は、能動関節を駆動させる。駆動部４０４は、能動関節を動かすモータと当該モータを動かすドライバとによって、能動関節を駆動させる。モータとドライバとは、例えば、能動関節ごとに、能動関節を動かすことが可能な位置に設けられる。また、ドライバは、複数の関節で共有されていてもよい。
【０１５０】  駆動部４０４は、例えば、処理装置３００などの外部装置から送信される制御信号に基づいて、能動関節を駆動させる。処理装置３００が上記制御信号を送信する場合、処理装置３００は、ロボット４００の動きを制御する制御装置として機能する。以下では、処理装置３００が、ロボット４００の動きを制御する制御装置として機能する場合を例に挙げる。
【０１５１】［ＩＩＩ］処理装置３００  処理装置３００は、例えば処理部３０２を備える。
【０１５２】  また、処理装置３００は、例えば、制御部（図示せず）や、ＲＯＭ（図示せず）、ＲＡＭ（図示せず）、記憶部（図示せず）、通信部（図示せず）、ユーザが操作可能な操作部（図示せず）、様々な画面を表示画面に表示する表示部（図示せず）などを備えていてもよい。処理装置３００は、例えば、データの伝送路としてのバスにより上記各構成要素間を接続する。処理装置３００は、バッテリなどの内部電源（図示せず）から供給される電力、または、処理装置３００の外部電源から供給される電力によって、駆動する。
【０１５３】  制御部（図示せず）は、ＭＰＵなどの演算回路で構成される、１または２以上のプロセッサや、各種処理回路などで構成され、処理装置３００全体を制御する。また、制御部（図示せず）は、処理装置３００において、例えば、処理部３０２の役目を果たしてもよい。
【０１５４】  なお、処理部３０２は、処理部３０２における処理を実現可能な専用の（または汎用の）回路（例えば、制御部（図示せず）とは別体のプロセッサなど）で構成されていてもよい。
【０１５５】  ＲＯＭ（図示せず）は、制御部（図示せず）が使用するプログラムや演算パラメータなどの制御用データを記憶する。ＲＡＭ（図示せず）は、制御部（図示せず）により実行されるプログラムなどを一時的に記憶する。
【０１５６】  記憶部（図示せず）は、処理装置３００が備える記憶手段であり、例えば、ロボット２００（第１のロボット）に対応するモデル情報（後述する）などの、処理部３０２における処理に係るデータや、各種アプリケーションなど様々なデータを記憶する。
【０１５７】  ここで、記憶部（図示せず）としては、例えば、ハードディスクなどの磁気記録媒体や、フラッシュメモリなどの不揮発性メモリなどが挙げられる。また、記憶部（図示せず）は、処理装置３００から着脱可能であってもよい。
【０１５８】  通信部（図示せず）としては、例えば上述した通信インタフェース１６４が挙げられる。また、操作部（図示せず）としては、例えば上述した操作入力デバイス１６０が挙げられる。また、表示部（図示せず）としては、上述した表示デバイス１６２が挙げられる。
【０１５９】［処理装置３００のハードウェア構成例］  処理装置３００は、例えば図３に示す第１の実施形態に係る処理装置１００と同様の構成（変形例に係る構成も含む）をとることが可能である。
【０１６０】  再度図７を参照して、処理装置３００の構成の一例について説明する。処理部３０２は、第１の実施形態に係る処理装置１００が備える処理部１０２と基本的に同様の機能を有する。
【０１６１】  また、処理部３０２は、ロボット２００の動きの制御に加えて、さらに、バイラテラルシステムであるシステム２０００を構成するロボット４００の動きを制御する。
【０１６２】  図９は、第２の実施形態に係るシステム２０００におけるバイラテラル制御方法の概要を示す説明図である。
【０１６３】  図９に示すように、システム２０００では、マスタ側のデバイスであるロボット２００が含む力センサの検出結果と、スレーブ側のデバイスであるロボット４００が含む力センサの検出結果とを利用した、力帰還型の制御が、処理装置３００により行われる。なお、システム２０００におけるバイラテラル制御方法が、図９に示す例に限られないことは、言うまでもない。
【０１６４】  以下、システム２０００において、図９に示すような力帰還型のバイラテラル制御方法が用いられる場合を例に挙げて、ロボット２００（マスタ側のデバイス）の動きの制御に係る処理部３０２の構成の一例を、説明する。
【０１６５】  上述したように、ロボット４００は、バイラテラルシステムにおけるスレーブ側のデバイスであり、処理部３０２は、ロボット２００（マスタ側のデバイス）の動きに対応して動くように、ロボット４００の動きを制御する。処理部３０２は、例えば、ロボット２００の動きに対応して、ロボット４００が有する能動関節を駆動させるモータを動作させる命令を含む制御信号を、ロボット４００に対して送信することによって、ロボット４００の動きを制御する。以下では、ロボット４００（スレーブ側のデバイス）の動きの制御に係る処理部３０２の構成について、説明を省略するが、処理部３０２では、ロボット４００の動きの制御に係る処理は、例えば、後述する処理部３０２を構成する制御器１２０において行われてもよいし、ロボット４００の動きを制御するための制御器（制御器１２０とは別体の制御器）において行われてもよい。
【０１６６】  図１０は、第２の実施形態に係る処理装置３００が備える処理部３０２の構成の一例を説明するための説明図である。
【０１６７】  図１０に示す“Ｆｈｕｍａｎ”は、図５と同様に、操作者により操作体に印加される力を示している。また、図１０に示す“ＦＯｐｅｒａｔｉｏｎ”は、図５と同様に、操作力を示しており、図１０に示す“Ｆｓｕｐｐｏｒｔ”は、図５と同様に、保持力を示している。図１０に示すように、操作者により操作体に印加される力には、操作力と保持力とが含まれる。
【０１６８】  また、図１０では、ロボット２００から取得される力センサの検出結果が示す値を“ＦＭ”と示し、ロボット４００から取得される力センサの検出結果が示す値を“ＦＳ”と示している。
【０１６９】  処理部３０２は、例えば、逆動力学演算器１１０と、加算器１１２と、保持力推定器１１４と、加算器１１６と、加算器３１０と、変換器１１８と、制御器１２０とを有する。
【０１７０】［ＩＩＩ−１］逆動力学演算器１１０、加算器１１２、保持力推定器１１４、および加算器１１６  図１０に示す第２の実施形態に係る逆動力学演算器１１０、加算器１１２、保持力推定器１１４、および加算器１１６それぞれの構成、機能は、図５を参照して示した第１の実施形態に係る逆動力学演算器１１０、加算器１１２、保持力推定器１１４、および加算器１１６と同様である。よって、図１０に示す第２の実施形態に係る逆動力学演算器１１０、加算器１１２、保持力推定器１１４、および加算器１１６については、説明を省略する。
【０１７１】［ＩＩＩ−２］加算器３１０  加算器３１０は、加算器１１６の演算結果（図１０に示す“Ｆ＾（ハット）Ｏｐｅｒａｔｉｏｎ”）から、ロボット４００から取得される力センサの検出結果が示す値（図１０に示す“ＦＳ”）を減算する。
【０１７２】  加算器３１０における処理によって、図９に示すような“ロボット２００（マスタ側のデバイス）が含む力センサの検出結果と、ロボット４００（スレーブ側のデバイス）が含む力センサの検出結果とを利用した、力帰還型の制御”が、実現される。
【０１７３】［ＩＩＩ−３］変換器１１８、および制御器１２０  図１０に示す第２の実施形態に係る変換器１１８、および制御器１２０それぞれの構成、機能は、図５を参照して示した第１の実施形態に係る変換器１１８、および制御器１２０と同様である。
【０１７４】  第２の実施形態に係る変換器１１８は、加算器３１０の演算結果を、操作空間位置目標値（図１０に示す“Ｘｒｅｆ”）に変換する。そして、第２の実施形態に係る制御器１２０は、変換器１１８から伝達される操作空間位置目標値と、ロボット２００から取得される操作空間位置を示すデータ（図１０に示す“Ｘ”）とに基づいて、関節空間トルク指令値（図１０に示す“Ｔｒｅｆ”。ロボット２００が有する能動関節を駆動させるモータを動作させる命令の一例）を含む制御信号を、ロボット２００に対して送信する。
【０１７５】  ロボット２００は、処理部３０２の制御器１２０により送信された制御信号に基づき能動関節を動かすことによって、動く。
【０１７６】  処理部３０２は、例えば図１０に示す構成を有する。
【０１７７】  ここで、加算器３１０では、加算器１１６の演算結果からロボット４００から取得される力センサの検出結果が示す値が減算されている。また、第２の実施形態に係る変換器１１８は、加算器３１０の演算結果を、操作空間位置目標値に変換し、第２の実施形態に係る制御器１２０は、変換器１１８から伝達される操作空間位置目標値に基づいて、制御信号をロボット２００に対して送信している。
【０１７８】  よって、処理部３０２は、ロボット４００（第２のロボット）から取得される、ロボット４００が含む力センサの検出結果に基づいて、ロボット２００（第１のロボット）の動きを制御することができる。
【０１７９】  また、処理部３０２は、第１の実施形態に係る処理装置１００が備える処理部１０２と基本的に同様の機能を有する。したがって、処理部３０２を備える処理装置３００は、第１の実施形態に係る処理装置１００と同様の効果を奏する。
【０１８０】  なお、第２の実施形態に係る処理部３０２の構成は、図１０に示す構成に限られない。
【０１８１】  例えば、処理部３０２は、第１の実施形態に係る処理部と同様に、図１０に示す加算器１１２、加算器１１６、加算器３１０、変換器１１８、および制御器１２０を有さない構成であってもよい。図１０に示す加算器１１２、加算器１１６、加算器３１０、変換器１１８、および制御器１２０を有さない構成であっても、処理部３０２は、ロボット２００（受動関節に接続されるリンクに設けられる操作体を含むロボットの一例）において、操作者が操作体を保持している保持力を推定することができる。
【０１８２】  また、処理部３０２は、例えば、第１の実施形態に係る処理部と同様に、図１０に示す変換器１１８、および制御器１２０を有さない構成であってもよい。図１０に示す変換器１１８、および制御器１２０を有さない構成であっても、処理部３０２は、推定された保持力を補償して、純粋な操作力を推定することができる。
【０１８３】  なお、処理部３０２が、上記図１０に示す加算器１１２、加算器１１６、加算器３１０、変換器１１８、および制御器１２０を有さない構成、または、上記図１０に示す変換器１１８、および制御器１２０を有さない構成をとる場合、ロボット２００の動きは、処理装置３００と外部装置とが連携して処理を行うことによって制御されてもよい。
【０１８４】  また、図１０に示す構成は、処理部３０２における処理を便宜上切り分けたものである。よって、処理部３０２の構成は、図１０に示す構成（上記変形例に係る構成も含む。）に限られず、図１０に示す構成要素のうちの一部または全部の構成要素における処理が、共通のハードウェアで行われてもよい。
【０１８５】［ＩＶ］システム２０００が奏する効果、およびシステム２０００の変形例  第２の実施形態に係るシステム２０００は、上述した機能、構成を有するロボット２００（第１のロボット）と、上述した機能、構成を有するロボット４００（第２のロボット）と、上述した機能、構成を有する処理装置３００とを有する。
【０１８６】  上述したように、システム２０００が有する処理装置３００は、第１の実施形態に係る処理装置１００と基本的に同様の機能を有する。よって、システム２０００では、処理装置３００を有することによって、第１の実施形態に係るシステム１０００と同様の効果が奏される。
【０１８７】  また、システム２０００が有する処理装置３００は、スレーブ側のデバイスであるロボット４００から取得される、ロボット４００が含む力センサの検出結果に基づいて、マスタ側のデバイスであるロボット２００の動きを制御する。よって、システム２０００により、図９に示すような“ロボット２００（マスタ側のデバイス）が含む力センサの検出結果と、ロボット４００（スレーブ側のデバイス）が含む力センサの検出結果とを利用した力帰還型の制御”が可能な、バイラテラルシステムが、実現される。
【０１８８】  なお、第２の実施形態に係るシステムの構成は、図７に示す例に限られない。
【０１８９】  例えば、図７に示す処理装置３００とロボット２００とは、同一の装置であってもよい。処理装置３００とロボット２００とが同一の装置である場合としては、受動関節に接続されるリンクに設けられる操作体を含むロボットが、処理装置３００が有する機能、構成を備える例が、挙げられる。
【０１９０】［Ｖ］第２の実施形態に係るシステムの適用例  以上、第２の実施形態に係るシステムの構成要素として、処理装置を挙げて説明したが、本実施形態は、かかる形態に限られない。本実施形態は、例えば、ＰＣやサーバなどのコンピュータや、スマートフォンなどの通信装置、タブレット型の装置、ゲーム機など、様々な機器に適用することができる。また、本実施形態は、例えば、上記のような機器に組み込むことが可能なＩＣに適用することもできる。さらに、上述したように、本実施形態は、受動関節に接続されるリンクに設けられる操作体を含むロボットに適用することも可能である。
【０１９１】  また、上記では、第２の実施形態に係るシステムの構成要素として、受動関節に接続されるリンクに設けられる操作体を含む第１のロボットを挙げて説明したが、本実施形態に係る第１のロボットは、かかる形態に限られない。本実施形態は、例えば、姿勢３軸が受動関節になっているタイプのハプティックデバイスなどの受動関節を含むハプティックデバイスなど、受動関節を含み操作者による操作が可能な、任意のデバイスに適用することができる。
【０１９２】  また、上記では、第２の実施形態に係るシステムの構成要素として、力センサを含み、第１のロボットの動きに基づき動く第２のロボットを挙げて説明したが、本実施形態に係る第２のロボットは、かかる形態に限られない。本実施形態は、例えば、バイラテラルシステムにおいてスレーブとして機能することが可能な、任意のデバイスに適用することができる。
【０１９３】（本実施形態に係るプログラム）  コンピュータを、本実施形態に係る処理装置として機能させるためのプログラム（例えば、“第１の実施形態に係る処理部１０２（変形例に係る構成も含む。）が有する機能”、または、“第２の実施形態に係る処理部３０２（変形例に係る構成も含む。）が有する機能”を、実現させるためのプログラム）が、コンピュータにおいてプロセッサなどにより実行されることによって、受動関節に接続されるリンクに設けられる操作体を含むロボットにおける、操作者が操作体を保持している保持力を推定することが、できる。
【０１９４】  また、コンピュータを、本実施形態に係る処理装置として機能させるためのプログラムが、コンピュータにおいてプロセッサなどにより実行されることによって、例えば、上述した第１の実施形態に係る処理装置（変形例に係る構成も含む）、または、第２の実施形態に係る処理装置（変形例に係る構成も含む）において奏される効果を、奏することができる。
【０１９５】  以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１９６】  例えば、上記では、コンピュータを、本実施形態に係る処理装置として機能させるためのプログラム（コンピュータプログラム）が提供されることを示したが、本実施形態は、さらに、上記プログラムを記憶させた記録媒体も併せて提供することができる。
【０１９７】  上述した構成は、本実施形態の一例を示すものであり、当然に、本開示の技術的範囲に属するものである。
【０１９８】  また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１９９】  なお、以下のような構成も本開示の技術的範囲に属する。（１）  受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含む第１のロボットに対応する、前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定する処理部を備える、処理装置。（２）  前記処理部は、前記モデルに基づき算出される前記仮想的な関節を保持するために要する仮想的な力と、前記操作者が前記操作体を保持する位置から前記仮想的な関節までの距離とに基づいて、前記保持力を推定する、（１）に記載の処理装置。（３）  前記処理部は、前記第１のロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定する、（１）、または（２）に記載の処理装置。（４）  前記処理部は、前記第１のロボットが含む前記力センサの検出結果に基づく前記操作体に印加される力から、推定された前記保持力を減算することによって、前記操作力を推定する、（３）に記載の処理装置。（５）  前記処理部は、推定された前記操作力に基づいて前記第１のロボットの動きを制御する、（３）、または（４）に記載の処理装置。（６）  前記処理部は、さらに、力センサを含み、前記第１のロボットの動きに基づき動く第２のロボットから取得される、前記第２のロボットが含む前記力センサの検出結果に基づいて、前記第１のロボットの動きを制御する、（５）に記載の処理装置。（７）  受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含む第１のロボットと、  力センサを含み、前記第１のロボットの動きに基づき動く第２のロボットと、  前記第１のロボットの動きを制御する処理装置と、  を有し、  前記処理装置は、処理部を備え、  前記処理部は、  前記第１のロボットに対応する前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定し、  前記第１のロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定し、  推定された前記操作力に基づいて前記第１のロボットの動きを制御する、システム。（８）  受動関節に接続されるリンクに設けられる操作体と、前記操作体に印加される力を検出する力センサとを含むロボットに対応する、前記力センサ部分を仮想的な関節とみなすモデルに基づいて、操作者が前記操作体を保持している保持力を推定するステップと、  前記ロボットが含む前記力センサの検出結果と、推定された前記保持力とに基づいて、前記操作体に対する前記操作者の操作力を推定するステップと、  推定された前記操作力に基づいて前記ロボットの動きを制御するステップと、  を有する、処理装置により実行される制御方法。
【符号の説明】
【０２００】  １０、１０２、３０２    処理部  １２、１１０    逆動力学演算器  １４，１１２、１１６、３１０    加算器  １６、１１８    変換器  １８、１２０    制御器  １００、３００    処理装置  １１４    保持力推定器  ２００、４００    ロボット  ２０２、４０２    センサ部  ２０４、４０４    駆動部  １０００、２０００    システム
【図１】
2018012110.tif 000005
【図２】
2018012110.tif 000006
【図３】
2018012110.tif 000007
【図４】
2018012110.tif 000008
【図５】
2018012110.tif 000009
【図６】
2018012110.tif 000010
【図７】
2018012110.tif 000011
【図８】
2018012110.tif 000012
【図９】
2018012110.tif 000013
【図１０】
2018012110.tif 000014
【国際調査報告】
2018012110.tif 000015
2018012110.tif 000016
2018012110.tif 000017