(57)【要約】【課題】力制御をロボットに実行させることができるか否かを事前に判断する。【解決手段】このロボット制御装置は：力制御における目標力の大きさおよび向きと、力制御開始時の位置および姿勢と、を受け付ける受付部と；ロボットの構成に関する固有情報であって、関節の許容トルクの値を含む固有情報を記憶している記憶部と；目標力の大きさおよび向きと、力制御開始時の位置および姿勢と、固有情報と、に基づいて、力制御時の位置および姿勢において、目標力の大きさおよび向きで力制御を実行した場合に、ロボットが備える関節のそれぞれに生じるトルクの値を算出する算出部と；ロボットが備えるすべての関節について、関節に生じるトルクの値が許容トルクの値以下である場合、第１種の情報を出力し、関節に生じるトルクの値が許容トルクの値を超える関節がある場合、第１種の情報とは異なる第２種の情報を出力する出力制御部と、を備える。【選択図】図３
2019202381.tif 000002
【特許請求の範囲】
【請求項１】
外部から加えられる力の大きさを検出する力検出部を備えるロボットの動作を制御するロボット制御装置であって、
前記力検出部の出力に基づいて行われる力制御における目標力の大きさと、前記目標力の向きと、前記力制御を開始する位置と、前記力制御を開始する姿勢と、を受け付ける受付部と、
前記ロボットが備える複数の関節に対応する複数の許容トルクの値を含む固有情報を記憶している記憶部と、
前記目標力の大きさと、前記目標力の向きと、前記力制御を開始する位置と、前記力制御を開始する姿勢と、前記固有情報と、に基づいて、前記力制御を開始する位置および前記力制御を開始する姿勢において、前記目標力の大きさおよび前記目標力の向きで前記力制御を実行した場合に、前記複数の関節に生じる複数のトルクの値を算出する算出部と、
前記複数のトルクの値が、それぞれ前記複数の許容トルクの値以下である場合、第１種の情報を出力し、前記複数のトルクの値のうち少なくとも１つが、対応する前記許容トルクの値を超える場合、第２種の情報を出力する出力制御部と、を備える、ロボット制御装置。
【請求項２】
請求項１記載のロボット制御装置であって、
前記受付部は、前記ロボットに取りつけられているエンドエフェクター、または、前記ロボットに処理される対象物に関する選択情報を受け付け、
前記算出部は、前記選択情報に基づいて、前記複数のトルクの値を算出する、ロボット制御装置。
【請求項３】
請求項２記載のロボット制御装置であって、
前記選択情報は、前記力制御において前記対象物を把持した場合の前記エンドエフェクターと前記対象物との相対位置の情報を含む、ロボット制御装置。
【請求項４】
請求項１から３のいずれか１項に記載のロボット制御装置であって、
前記算出部は、前記受付部が受け付ける前記力制御における位置の範囲または前記力制御における姿勢の範囲に基づいて、前記複数のトルクの値を算出する、ロボット制御装置。
【請求項５】
請求項１から４のいずれか１項に記載のロボット制御装置であって、
前記第２種の情報は、
前記目標力の大きさまたは前記目標力の向きと、前記力制御を開始する位置または前記力制御を開始する姿勢と、によって規定される力制御が実現不可能であることを示す情報、または、
前記目標力の向きと、前記力制御を開始する位置または前記力制御を開始する姿勢と、によって規定される力制御において、実現可能な前記目標力の大きさを示す情報、を含む、ロボット制御装置。
【請求項６】
外部から加えられる力の大きさを検出する力検出部を備えるロボットの動作を制御するロボット制御装置であって、
前記力検出部の出力に基づいて行われる力制御における目標力の大きさと、前記目標力の向きと、を受け付ける受付部と、
前記ロボットが備える複数の関節に対応する複数の許容トルクの値を含む固有情報を記憶している記憶部と、
前記目標力の大きさと、前記目標力の向きと、前記固有情報と、に基づいて、前記力制御を開始する位置の候補としての複数の候補点について、前記候補点から前記目標力の大きさおよび前記目標力の向きで力制御を開始した場合に、前記ロボットが備える前記複数の関節に生じる複数のトルクの値を算出する算出部と、
前記複数の候補点のうち、前記複数のトルクの値が、それぞれ前記複数の許容トルクの値以下である候補点を出力する出力制御部と、を備える、ロボット制御装置。
【請求項７】
請求項６記載のロボット制御装置であって、
前記受付部は、
前記ロボットに取りつけられているエンドエフェクター、または、前記ロボットに処理される対象物の構成に関する選択情報を受け付け、
前記算出部は、前記選択情報に基づいて、前記複数のトルクの値を算出する、ロボット制御装置。
【請求項８】
請求項７記載のロボット制御装置であって、
前記選択情報は、前記力制御において前記対象物を把持した場合の前記エンドエフェクターと前記対象物との相対位置の情報を含む、ロボット制御装置。
【請求項９】
請求項６から８のいずれか１項に記載のロボット制御装置であって、
前記算出部は、前記受付部が受け付ける前記力制御における位置の範囲または前記力制御における姿勢の範囲に基づいて、前記複数のトルクの値を算出する、ロボット制御装置。
【請求項１０】
請求項６から９のいずれか１項に記載のロボット制御装置であって、
前記受付部は、前記複数の候補点が含まれる空間の指定を受け付け、
前記算出部は、前記空間内において前記複数の候補点を決定する、ロボット制御装置。
【請求項１１】
請求項１から１０のいずれか１項に記載のロボット制御装置と、
前記ロボット制御装置によって制御される前記ロボットと、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、力制御を行うロボットの動作の設定に関する。
【背景技術】
【０００２】
従来、特許文献１に記載されているように、ロボットを駆動するモーターの負荷をシミュレーションにより算出し、モーターの負荷の許容値を超えているか否かを評価する装置が存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−５４９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記の技術においては、ロボットに力制御を行わせることは想定されていない。このため、力制御のために生じる負荷を含めて、モーターにかかる負荷を評価することができない。その結果、上記の技術によっては、ある力制御をロボットに実行させることができるか否かを判断することができない。
【０００５】
また、上記の技術によっては、ロボットのモーターにかかる負荷を評価することができないため、ロボットの位置がある力制御を実行させることができるか否かをユーザーがあらかじめ知ることはできない。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００７】
本発明の一形態によれば、外部から加えられる力の大きさを検出する力検出部を備えるロボットの動作を制御するロボット制御装置が提供される。このロボット制御装置は：前記力検出部の出力に基づいて行われる力制御における目標力の大きさと、前記目標力の向きと、前記力制御を開始するときの位置と、前記力制御の開始するときの姿勢と、を受け付ける受付部と；前記ロボットの構成に関する固有情報であって、前記ロボットが備える１以上の関節の許容トルクの値を含む固有情報を記憶している記憶部と；前記目標力の前記大きさおよび前記向きと、前記力制御を開始するときの前記位置および姿勢と、前記固有情報と、に基づいて、前記力制御を開始するときの前記位置および前記姿勢において、前記目標力の前記大きさおよび前記向きで力制御を実行した場合に、前記ロボットが備える前記関節のそれぞれに生じるトルクの値を算出する算出部と；前記ロボットが備えるすべての前記関節について、前記関節に生じるトルクの値が前記許容トルクの値以下である場合、第１種の情報を出力し、前記関節に生じるトルクの値が前記許容トルクの値を超える関節がある場合、前記第１種の情報とは異なる第２種の情報を出力する出力制御部と、を備える。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係るロボットシステム１の構成を示す図である。
【図２】ロボット２０と、動作制御装置３０と、教示装置５０との機能構成を示す図である。
【図３】教示装置５０において、負荷トルクの点から力制御の実現可否の判定を行う際の処理を示すフローチャートである。
【図４】図３のステップＳ１２０およびＳ１４０において、教示装置５０の出力装置５８に表示されるユーザーインターフェイスＵＩ１２を示す。
【図５】図３のステップＳ１７０において、出力装置５８であるディスプレイに出力されるエラー表示ＥＤである。
【図６】図３のステップＳ１８０において、出力装置５８としてのディスプレイに表示されるユーザーインターフェイスＵＩ１８を示す図である。
【図７】教示装置５０において、アームＡの姿勢の特異点の点から力制御の実現可否の判定を行う際の処理を示すフローチャートである。
【図８】図７のステップＳ３７０における出力装置５８の表示を示す図である。
【図９】教示装置５０において、力制御の実現が可能な候補位置を決定する際の処理を示すフローチャートである。
【図１０】図９のステップＳ５５０において、教示装置５０の出力装置５８に表示されるユーザーインターフェイスＵＩ５５を示す。
【図１１】図９のステップＳ５８０において出力装置５８に表示されるユーザーインターフェイスＵＩ５８ａを示す図である。
【図１２】候補点を２次元の点Ｒ０−０〜Ｒ７−６の５６個の点と仮定した場合の凸包の例を示す説明図である。
【図１３】各軸方向について取り得ると考えられる範囲を表すユーザーインターフェイスＵＩ５８ｂを示す図である。
【図１４】複数のプロセッサーによってロボットの制御装置が構成される一例を示す概念図である。
【図１５】複数のプロセッサーによってロボットの制御装置が構成される他の例を示す概念図である。
【図１６】図９のステップＳ５８０におけるユーザーインターフェイスＵＩ５８ｂに代わるユーザーインターフェイスＵＩ５８ｃを示す図である。
【発明を実施するための形態】
【０００９】
Ａ．第１実施形態：
Ａ１．ロボットシステムの構成：
図１は、本実施形態に係るロボットシステム１の構成を示す図である。ロボットシステム１は、ロボット２０と、ロボット制御装置２５を備える。ロボット制御装置２５は、ロボット２０を制御する。ロボット制御装置２５は、動作制御装置３０と、教示装置５０とによって構成される。
【００１０】
動作制御装置３０は、ユーザーによる教示作業によって設定された目標位置において、目標力が実現されるように、ロボット２０のアームＡを制御する。動作制御装置３０は、プロセッサーであるＣＰＵ（Central Processing Unit）３０ａやＲＡＭ（Random Access Memory）３０ｂやＲＯＭ（Read−Only Memory）３０ｃを備える。動作制御装置３０には、ロボット２０の制御を行うための制御プログラムがインストールされている。動作制御装置３０においては、これらのハードウェア資源と制御プログラムとが協働する。動作制御装置３０の機能については、後に詳細に説明する。
【００１１】
教示装置５０は、動作制御装置３０に目標位置Ｓｔと目標力ｆｓｔとを教示する。教示装置５０は、ＣＰＵ５０ａ、ＲＡＭ５０ｂ、ＲＯＭ５０ｃ等を備える。教示装置５０には、動作制御装置３０に目標位置Ｓｔと目標力ｆｓｔとを教示するための教示プログラムがインストールされている。教示装置５０においては、これらのハードウェア資源と教示プログラムとが協働する。
【００１２】
教示装置５０は、さらに、入力装置５７と、出力装置５８を備える。入力装置５７は、例えば、マウス、キーボード、タッチパネル等であり、ユーザーからの指示を受け付ける。出力装置５８は、例えば、ディスプレイやスピーカー等であり、ユーザーに各種の情報を出力する。教示装置５０の機能については、後に詳細に説明する。
【００１３】
ロボット２０は、アームＡと、アームＡを支持する支持台Ｂを備える単腕ロボットである。アームＡは、６軸の垂直多関節型のアームである。アームＡは、５個のアーム部材であるリンクＬ１〜リンクＬ５と、６つの関節である関節Ｊ１〜Ｊ６を備える。関節Ｊ２、関節Ｊ３、関節Ｊ５は、曲げ関節であり、関節Ｊ１、関節Ｊ４、関節Ｊ６は、ねじり関節である。
【００１４】
支持台ＢとリンクＬ１は、関節Ｊ１を介して接続されている。リンクＬ１とリンクＬ２は、関節Ｊ２を介して接続されている。リンクＬ２とリンクＬ３は、関節Ｊ３を介して接続されている。リンクＬ３とリンクＬ４は、関節Ｊ４を介して接続されている。リンクＬ４とリンクＬ５は、関節Ｊ５を介して接続されている。リンクＬ５と力検出部２１およびエンドエフェクターＥとは、関節Ｊ６を介して接続されている。
【００１５】
アームＡの先端には、力検出部２１を介してエンドエフェクターＥが取り付けられている。エンドエフェクターＥは、ロボット２０に処理される対象物としてのワークＷを把持するための装置である。エンドエフェクターＥの位置は、ＴＣＰ（Tool  Center  Point）によって規定される。本実施形態において、ＴＣＰは、関節Ｊ６の回転軸上にある。動作制御装置３０は、アームＡを駆動することによって、ロボット座標系ＲＣにおいて制御点としてのＴＣＰの位置を制御する。
【００１６】
力検出部２１は、外部から加えられる力の大きさを検出することができる６軸の力センサーである。力検出部２１は、互いに直交する３個の検出軸上の力の大きさと、それら３個の検出軸周りのトルクの大きさとを検出する。
【００１７】
本実施形態においては、支持台Ｂの位置を基準として、ロボット２０が設置された空間を規定する座標系を、ロボット座標系ＲＣと表す。ロボット座標系ＲＣは、水平面上において互いに直交するＸ軸およびＹ軸と、鉛直上向きを正方向とするＺ軸とによって規定される三次元直交座標系である。本明細書において、単に「Ｘ軸」と称した場合、ロボット座標系ＲＣにおけるＸ軸のことを表す。単に「Ｙ軸」と称した場合、ロボット座標系ＲＣにおけるＹ軸のことを表す。単に「Ｚ軸」と称した場合、ロボット座標系ＲＣにおけるＺ軸のことを表す。ロボット座標系ＲＣにおける任意の位置は、Ｘ軸方向の位置ＤＸと、Ｙ軸方向の位置ＤＹと、Ｚ軸方向の位置ＤＺとにより特定できる。
【００１８】
本実施形態においては、Ｘ軸周りの回転の角度位置ＲＸによって表す。Ｙ軸周りの回転の角度位置ＲＹによって表す。Ｚ軸周りの回転の角度位置ＲＺによって表す。ロボット座標系ＲＣにおける任意の姿勢は、Ｘ軸周りの角度位置ＲＸ、Ｙ軸周りの角度位置ＲＹ、Ｚ軸周りの角度位置ＲＺにより表現できる。
【００１９】
本明細書において、「位置」と表記した場合、狭義の位置に加えて姿勢をも意味する。「力」と表記した場合、３次元空間において向きと大きさによって規定される狭義の力に加えて、角度位置ＲＸ、角度位置ＲＹ、角度位置ＲＺそれぞれの回転方向に作用するトルクも意味し得る。
【００２０】
アームＡと、力検出部２１と、エンドエフェクターＥとは、ケーブルによって動作制御装置３０と通信可能に接続されている。
【００２１】
Ａ２．動作制御装置３０による動作制御：
図２は、ロボット２０と、動作制御装置３０と、教示装置５０との機能構成を示す図である。図２に示したＳは、ロボット座標系ＲＣを規定する軸の方向（Ｘ軸方向、Ｙ軸方向、Ｚ軸方向、角度位置ＲＸの方向、角度位置ＲＹの方向、角度位置ＲＺの方向）のうちのいずれか１つの方向を表す。例えば、Ｓが表わす方向がＸ軸方向の場合、ロボット座標系ＲＣにおいて設定された目標位置のＸ軸方向成分がＳｔ＝Ｘｔと表記され、目標力のＸ軸方向成分がｆｓｔ＝ｆＸｔと表記される。また、Ｓは、Ｓが表わす方向の軸に沿った位置も表す。
【００２２】
ロボット２０は、関節Ｊ１〜Ｊ６に、それぞれ、駆動部としてのモーターＭ１〜Ｍ６と、エンコーダーＥ１〜エンコーダーＥ６とを、備える（図２の上段参照）。モーターＭ１とエンコーダーＥ１は、関節Ｊ１に備えられている。モーターＭ１は、関節Ｊ１を駆動する。エンコーダーＥ１は、モーターＭ１の駆動位置を検出する。モーターＭ２〜Ｍ６と、エンコーダーＥ２〜Ｅ６も、関節Ｊ２〜Ｊ６において、同様の機能を奏する。
【００２３】
動作制御装置３０は、モーターＭ１〜Ｍ６の角度位置の組み合わせと、ロボット座標系ＲＣにおけるＴＣＰの位置との対応関係Ｕを、ＲＡＭ内に記憶している（図２の中段右側参照）。動作制御装置３０は、ロボット２０が行う作業の工程ごとに、目標位置Ｓｔと目標力ｆｓｔとを対応付けて、ＲＡＭ内に記憶している。目標位置Ｓｔと目標力ｆｓｔは、後述する教示作業によって設定される。
【００２４】
動作制御装置３０は、モーターＭ１〜Ｍ６の回転角度Ｄａを取得すると、対応関係Ｕに基づいて、回転角度Ｄａをロボット座標系ＲＣにおけるＴＣＰの位置Ｓに変換する（図２の右側中段参照）。より具体的には、回転角度Ｄａは、位置ＤＸ、位置ＤＹ、位置ＤＺ、角度位置ＲＸ、角度位置ＲＹ、および角度位置ＲＺの組み合わせに変換される。
【００２５】
力検出部２１は、独自の座標系において力ｆｓを検出する（図２の右上部参照）。力検出部２１とＴＣＰとの相対位置および相対方向が、既知のデータとして動作制御装置３０のＲＡＭ３０ｂに記憶されている（図２において図示省略）。このため、動作制御装置３０は、ＴＣＰの位置Ｓと、力検出部２１の出力に基づいて、ロボット座標系ＲＣにおける力ｆｓを特定できる。
【００２６】
動作制御装置３０は、ロボット座標系ＲＣに変換した後の力ｆｓに対して重力補償を行う（図２の右下部参照）。「重力補償」とは、力ｆｓから重力成分を除去する処理である。重力補償を行った力ｆｓは、エンドエフェクターＥに作用している重力以外の力を表す。エンドエフェクターＥに作用している重力以外の力を、以下では「作用力」とも呼ぶ。
【００２７】
動作制御装置３０は、目標力ｆｓｔと作用力ｆｓとをコンプライアントモーション制御の運動方程式に代入することにより、力由来補正量ΔＳを特定する（図２の左側中段参照）。本実施形態では、コンプライアントモーション制御として、インピーダンス制御を採用する。「インピーダンス制御」とは、仮想の機械的インピーダンスをモーターＭ１〜Ｍ６によって実現する制御である。以下に示した式（１）は、インピーダンス制御の運動方程式である。
【００２８】
【数１】
2019202381.tif 000003
【００２９】
式（１）において、ｍは、質量パラメーターである。質量パラメーターは、慣性パラメーターとも呼ぶ。ｄは、粘性パラメーターである。ｋは、弾性パラメーターである。各パラメーターｍ、ｄ、ｋは、教示装置５０から得られる。各パラメーターｍ、ｄ、ｋは、方向毎に異なる値に設定される構成であってもよく、方向にかかわらず共通の値に設定されてもよい。
【００３０】
式（１）において、Δｆｓ（ｔ）は、目標力ｆｓｔに対する作用力ｆｓの偏差である。ｔは、時間を表す。目標力ｆｓｔは、ロボット２０が行う工程において、一定値として設定されてもよく、時間に依存する関数によって設定されてもよい。式（１）における微分とは、時間による微分を意味する。
【００３１】
式（１）から得られる力由来補正量ΔＳとは、ＴＣＰが機械的インピーダンスによる作用力ｆｓを受けた場合に、目標力ｆｓｔと作用力ｆｓとの力偏差Δｆｓ（ｔ）を解消して目標力ｆｓｔを達成するために、ＴＣＰが移動すべき変位を意味する。ここで、「変位」は、直線進距離および／または回転角で表される。
【００３２】
動作制御装置３０は、目標位置Ｓｔに、力由来補正量ΔＳを加算することにより、インピーダンス制御を考慮した補正目標位置（Ｓｔ＋ΔＳ）を特定する（図２の中段右側参照）。
【００３３】
動作制御装置３０は、対応関係Ｕに基づいて、ロボット座標系ＲＣにおける６つの方向（Ｘ軸方向、Ｙ軸方向、Ｚ軸方向、角度位置ＲＸの方向、角度位置ＲＹの方向、角度位置ＲＺの方向）それぞれについての補正目標位置（Ｓｔ＋ΔＳ）を、モーターＭ１〜Ｍ６それぞれの目標の駆動位置である目標角度Ｄｔに変換する（図２の中段右側参照）。
【００３４】
動作制御装置３０は、エンコーダーＥ１〜Ｅ６の出力が示すモーターＭ１〜Ｍ６の回転角度Ｄａと、制御目標である目標角度Ｄｔと、を一致させるフィードバック制御を実行する。より具体的には、動作制御装置３０は、回転角度Ｄａと目標角度Ｄｔとの偏差Ｄｅ、その偏差Ｄｅの積分、およびその偏差Ｄｅの微分を使用して、位置についてのＰＩＤ制御を実行する。図２において、比例ゲインＫｐｐ、積分ゲインＫｐｉ、微分ゲインＫｐｄを示す（図２の中央部参照）。
【００３５】
動作制御装置３０は、上記Ｋｐｐ，Ｋｐｉ，Ｋｐｄを使用した位置についてのＰＩＤ制御の出力と、回転角度Ｄａの微分との偏差、その偏差の積分、その偏差の微分を使用して、速度についてのＰＩＤ制御を実行する。図２において、比例ゲインＫｖｐ、積分ゲインＫｖｉ、微分ゲインＫｖｄを示す（図２の中段左側参照）。
【００３６】
以上の処理の結果、モーターＭ１〜Ｍ６の制御量Ｄｃが決定される。動作制御装置３０は、各モーターＭ１〜Ｍ６の制御量Ｄｃで、各モーターＭ１〜Ｍ６を制御する。
【００３７】
以上のような処理により、動作制御装置３０は、目標位置Ｓｔと目標力ｆｓｔとに基づいてアームＡを制御することができる。
【００３８】
Ａ３．教示装置５０における処理：
（１）力制御の実現可否の判定  その１：
図３は、教示装置５０において、負荷トルクの点から力制御の実現可否の判定を行う際の処理を示すフローチャートである。図３の処理は、具体的には、教示装置５０のＣＰＵ５０ａ（図１参照）が実行する。
【００３９】
ステップＳ１２０において、教示装置５０は、ユーザーから、エンドエフェクターＥの情報と、ワークＷの情報と、を受け取る。エンドエフェクターＥの情報は、（ｉ）エンドエフェクターＥの重量の情報と、（ｉｉ）アームＡの先端の位置と、アームＡに取りつけられたエンドエフェクターＥの重心位置と、の相対位置関係の情報と、を含む。これらの情報を、「エンドエフェクター情報」と呼ぶ。
【００４０】
ワークＷの情報は、（ｉ）ワークＷの重量の情報と、（ｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のワークＷの重心位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報と、（ｉｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のエンドエフェクターＥとワークＷの接触点の位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報と、を含む。これらの情報を、「ワーク情報」と呼ぶ。
【００４１】
エンドエフェクター情報とワーク情報とは、対象動作を識別するための情報と対応づけられて、教示装置５０のＲＡＭ５０ｂに格納される。ＲＡＭ５０ｂ内のエンドエフェクター情報を、図１において「エンドエフェクター情報Ｉｅ」として示す。ＲＡＭ５０ｂ内のワーク情報を、図１において「ワーク情報Ｉｗ」として示す。ステップＳ１２０において、エンドエフェクターＥの情報と、ワークＷの情報と、を受け付ける教示装置５０の機能部を、図２において、「受付部５３」として示す。
【００４２】
図３のステップＳ１４０において、教示装置５０は、ユーザーから、位置情報と、範囲情報と、力情報と、を受け取る。
【００４３】
教示装置５０は、ユーザーから、対象動作を開始すべきＴＣＰの位置およびエンドエフェクターＥの姿勢を表す「位置情報」を受け取る。「対象動作を開始すべき位置およびエンドエフェクターＥの姿勢」は、たとえば、力制御において、力検出部２１に対して力が作用するようにアームＡを制御する直前のＴＣＰの位置および姿勢や、加工具を把持したエンドエフェクターＥによって他の物体を加工する直前の位置および姿勢等である。位置情報は、具体的には、ロボット座標系ＲＣのＸ軸方向の位置、Ｙ軸方向の位置、Ｚ軸方向の位置、Ｘ軸周りの回転の角度位置ＲＸ、Ｙ軸周りの回転の角度位置ＲＹ、Ｚ軸周りの回転の角度位置ＲＺの組み合わせである。
【００４４】
教示装置５０は、ユーザーから、対象動作において変動しうるＴＣＰの位置およびエンドエフェクターＥの姿勢の範囲を表す「範囲情報」を受け取る。力制御が行われる対象動作においては、力検出部の出力を使用したフィードバック制御が行われるため、制御点としてのＴＣＰの位置およびエンドエフェクターＥの姿勢は、あらかじめ定められた位置および姿勢になるとは限らない。また、ワークＷの形状の誤差や配置の誤差によっても、対象動作におけるＴＣＰの位置およびエンドエフェクターＥの姿勢は変化しうる。そのような変化の想定範囲を表す範囲情報が、ユーザーによって教示装置５０に入力される。範囲情報は、具体的には、ロボット座標系ＲＣのＸ軸方向の寸法（すなわち、位置の範囲）、Ｙ軸方向の寸法、Ｚ軸方向の寸法、Ｘ軸周りの回転の角度範囲、Ｙ軸周りの回転の角度範囲、Ｚ軸周りの回転の角度範囲の組み合わせである。
【００４５】
教示装置５０は、ユーザーから、対象動作を実行する際にワークＷに加えるべき目標力ｆｓｔの方向と大きさを表す「力情報」を受け取る。力情報は、具体的には、ロボット座標系ＲＣのＸ軸方向の力成分、Ｙ軸方向の力成分、Ｚ軸方向の力成分、角度位置ＲＸの方向のトルク成分、角度位置ＲＹの方向のトルク成分、角度位置ＲＺの方向のトルク成分の組み合わせによって特定される。ただし、本実施形態のステップＳ１２０においては、目標力ｆｓｔの方向として、上記の６つの方向のうちのいずれか一つの方向が選択的に入力されるように、教示装置５０は構成されている。また、目標力ｆｓｔの大きさとして、任意の数値が入力されるように、教示装置５０が構成されている。目標力ｆｓｔの大きさは、正の値と負の値を取りうる。
【００４６】
入力された位置情報と範囲情報と力情報は、対象動作を識別することができる情報と対応づけられて、ＲＡＭ５０ｂに格納される。ＲＡＭ５０ｂ内の位置情報を、図１において「位置情報Ｉｐ」として示す。ＲＡＭ５０ｂ内の範囲情報を、図１において「範囲情報Ｉｒ」として示す。ＲＡＭ５０ｂ内の力情報を、図１において「力情報Ｉｆ」として示す。ステップＳ１４０において、位置情報と範囲情報と力情報を受け付けて格納する教示装置５０の機能部は、受付部５３（図２参照）である。
【００４７】
なお、ここでは、技術の理解を容易にするため、ステップＳ１２０の処理とステップＳ１４０の処理を分けて、その順に説明している（図３参照）。しかし、ステップＳ１２０，Ｓ１４０で教示装置５０に入力される情報は、必ずしもその順に入力されるわけではない。すなわち、ステップＳ１２０で入力される一部または全部の情報が、ステップＳ１４０で入力される一部のまたは全部の情報よりも後に入力されることもできる。ただし、後述するステップＳ１７０の処理の後に入力され得るのは、ステップＳ１４０で入力される一部のまたは全部の情報である。
【００４８】
図４は、図３のステップＳ１２０およびＳ１４０において、教示装置５０の出力装置５８に表示されるユーザーインターフェイスＵＩ１２を示す。なお、ユーザーインターフェイスＵＩ１２の表示に先立って、あらかじめワーク情報（図３のＳ１２０参照）および位置情報（図３のＳ１４０参照）は入力されているものとする。
【００４９】
ユーザーインターフェイスＵＩ１２は、入力窓Ｗ１１〜Ｗ１６、ボタンＢ０１，Ｂ０２、ならびに入力窓Ｗ２１〜Ｗ２６を備える。
【００５０】
入力窓Ｗ１１は、力情報の一部としての、力制御における目標力の向きを入力するためのインターフェイスである（図３のＳ１４０参照）。図４の例においては、Ｚ軸方向のプラス側の向きが指定されている。入力窓Ｗ１２は、力情報の一部としての、力制御における目標力の大きさを入力するためのインターフェイスである（図３のＳ１４０参照）。図４の例においては、１０Ｎが指定されている。
【００５１】
なお、力情報が、対象動作を識別するための情報と対応づけられて、教示装置５０のＲＡＭ５０ｂにあらかじめ格納されている態様とすることもできる。そのような態様においては、ユーザーは、所定のユーザーインターフェイスを介して、対象動作を選択する。その結果、図４のユーザーインターフェイスＵＩ１２において、入力窓Ｗ１１，Ｗ１２に自動的に情報が入力される。
【００５２】
入力窓Ｗ１３は、エンドエフェクター情報の一部としての、エンドエフェクターＥの重量の情報の入力するためのインターフェイスである（図３のＳ１２０参照）。図４の例においては、１ｋｇが指定されている。
【００５３】
入力窓Ｗ１４〜Ｗ１６は、エンドエフェクター情報の一部としての、アームＡの先端の位置と、アームＡに取りつけられたエンドエフェクターＥの重心位置と、の相対位置関係の情報の入力するためのインターフェイスである（図３のＳ１２０参照）。図４の例においては、相対位置関係の情報として、Ｘ軸方向０、Ｙ軸方向０、Ｚ軸方向のプラス側５０ｍｍの相対位置が指定されている。
【００５４】
入力窓Ｗ２１〜Ｗ２３は、範囲情報の一部としての、対象動作において変動しうるＴＣＰの位置の範囲の情報の入力するためのインターフェイスである（図３のＳ１４０参照）。図４の例においては、ＴＣＰの位置の範囲の情報として、Ｘ軸方向０、Ｙ軸方向０、Ｚ軸方向の１０ｍｍの位置範囲が指定されている。
【００５５】
入力窓Ｗ２４〜Ｗ２６は、範囲情報の一部としての、対象動作において変動しうるエンドエフェクターＥの姿勢の範囲の情報の入力するためのインターフェイスである（図３のＳ１４０参照）。図４の例においては、エンドエフェクターＥの姿勢の範囲の情報として、Ｕ軸（すなわちＸ軸まわり）方向０、Ｖ軸（すなわちＹ軸まわり）方向０、Ｗ軸（すなわちＺ軸まわり）方向０の角度範囲が指定されている。
【００５６】
ボタンＢ０１は、入力窓Ｗ１１〜Ｗ１６、ならびに入力窓Ｗ２１〜Ｗ２６への入力を終えたユーザーが、教示装置５０に次の処理を行わせるためのボタンである。ボタンＢ０２は、ユーザーインターフェイスＵＩ１２を介した情報の入力の前の処理に戻るためのボタンである。ボタンＢ０２が押されると、処理は、ワーク情報（図３のＳ１２０参照）および位置情報（図３のＳ１４０参照）を入力するための段階に戻る。
【００５７】
図３のステップＳ１６０において、教示装置５０は、動作制御装置３０のＲＡＭ３０ｂ（図１参照）から、ロボット２０のハードウェア構成に関する固有情報Ｉｃを取得する。ロボット２０の固有情報Ｉｃは、具体的には、（ｉ）隣り合う関節同士の間の長さ（すなわち、リンクＬ１〜リンクＬ５の長さ）、（ｉｉ）リンクＬ１〜リンクＬ５の重量、（ｉｉｉ）関節Ｊ１〜Ｊ６の剛性、（ｉｖ）関節Ｊ１〜Ｊ６の許容トルクである。「関節の剛性」とは、関節の回転角度がある値に設定されている状態で、その関節を中心とする回転力を外部から受けた場合に、どの程度、その関節の回転角度がずれるかを示す値である。「関節の許容トルク」は、関節のモーターの許容トルクに、余裕を設けるための１以下の係数（たとえば、０．８）を掛けて得られるトルクである。
【００５８】
これらの値は、ロボット２０に固有の値である。これらの値は、動作制御装置３０のＲＡＭ３０ｂにあらかじめ格納されている。ステップＳ１６０において、ロボット２０の固有情報Ｉｃを取得する教示装置５０の機能部を、図２において、「取得部５５」として示す。
【００５９】
教示装置５０は、エンドエフェクター情報およびワーク情報（Ｓ１２０参照）と、位置情報、範囲情報および力情報（Ｓ１４０参照）と、固有情報Ｉｃと、に基づいて、関節にかかる負荷トルクの最大値を、各関節Ｊ１〜Ｊ６について計算する。より具体的には、位置情報と範囲情報で特定される動作範囲に含まれる複数の代表的な位置（以下、「代表点」とも呼ぶ）について、そこにＴＣＰがある状態で、力情報で指定された力制御を実現した場合に、各関節にかかる負荷トルクを、計算する。そして、得られた複数の代表的な位置に対応する負荷トルクの中から、各関節Ｊ１〜Ｊ６について、負荷トルクの最大値を決定する。
【００６０】
ある関節に掛かる負荷トルクは、その関節から先にあるリンクにかかる重力に起因する負荷トルクｔａ、エンドエフェクターＥおよびワークＷにかかる重力に起因する負荷トルクｔｂ、力制御における目標力に起因する負荷トルクｔｃに分けて計算することができる。
【００６１】
目標力に起因する負荷トルクｔｃは、以下のように計算される。その力制御におけるアームの姿勢、すなわち、リンクＬ１〜リンクＬ５の位置および姿勢に基づいて、負荷トルクを計算する対象である関節とＴＣＰとの相対位置関係が計算される。そして、ＴＣＰにかかる目標力を、その関節の回転軸に垂直な平面であって、その関節の回転中心を原点とする平面（以下、「処理平面」と呼ぶ）に射影して得られる力が、計算される。そして、その力と、処理平面上に投射されたＴＣＰと原点との距離と、を基に、その関節にかかる、目標力に起因する負荷トルクｔｃが計算される。
【００６２】
その関節から先にあるリンクにかかる重力に起因する負荷トルクｔａは、以下のように計算される。リンクＬ１〜リンクＬ５の長さ、リンクＬ１〜リンクＬ５の重量、ならびにその力制御におけるアームの姿勢に基づいて、以下のパラメーターが計算される。すなわち、その関節から先にあるリンク全体の重量、およびその関節から先にあるリンクで構成される構造の重心とその関節の相対位置関係が計算される。そして、構造の重心にかかる、対象関節から先にあるリンク全体の重力を、その関節の処理平面に射影して得られる力が、計算される。そして、その力と、処理平面上に投射された構造の重心と原点との距離と、を基に、その関節にかかる、その関節から先にあるリンクにかかる重力に起因する負荷トルクｔａが計算される。
【００６３】
ワークＷとエンドエフェクターＥにかかる重力に起因する負荷トルクｔｂは、以下のように計算される。ワークＷの重量、エンドエフェクターＥの重量、アームＡの先端の位置とアームＡに取りつけられたエンドエフェクターＥの重心位置との相対位置関係の情報、対象動作においてワークＷがエンドエフェクターＥに把持された際のワークＷの重心位置とエンドエフェクターＥの重心位置との相対位置関係の情報、リンクＬ１〜リンクＬ５の長さ、ならびにその力制御におけるアームの姿勢に基づいて、以下のパラメーターが計算される。すなわち、ワークＷの重量とエンドエフェクターＥの重量の合計値、およびワークＷとエンドエフェクターＥで構成される構造の重心とその関節の相対位置関係が計算される。そして、ワークＷとエンドエフェクターＥで構成される構造の重心にかかる、その構造の重力を、その関節の処理平面に射影して得られる力が、計算される。そして、その力と、処理平面上に投射された構造の重心と原点との距離と、を基に、その関節にかかる、ワークＷとエンドエフェクターＥにかかる重力に起因する負荷トルクｔｂが計算される。
【００６４】
エンドエフェクター情報とワーク情報を利用することにより、それらを利用しない態様に比べて、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。ワーク情報の一部として、対象物を把持した場合のエンドエフェクターと対象物との相対位置の情報を利用することにより、それらを利用しない態様に比べて、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。
【００６５】
範囲情報として、力制御における位置や姿勢の範囲を利用することにより、力制御の動作全体を通して関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを、より正確に知ることができる。
【００６６】
ある関節に掛かる負荷トルクは、以上の処理で得られた目標力に起因する負荷トルクｔｃ、その関節から先にあるリンクに起因する負荷トルクｔａ、エンドエフェクターＥおよびワークＷに起因する負荷トルクｔｂの合計である。ステップＳ１６０の処理を実現する教示装置５０の機能部を、図２において、「算出部５６」として示す。
【００６７】
図３のステップＳ１６５において、教示装置５０は、各関節Ｊ１〜Ｊ６に掛かる負荷トルクの最大値が、各関節Ｊ１〜Ｊ６の許容トルクの範囲内であるか否かを判定する。なお、モーターの回転方向は正転と反転の２つの方向を取りうるため、関節の許容トルクの範囲を規定する上限と下限値は、正の値と負の値の両方を取りうる。本実施形態においては、各関節Ｊ１〜Ｊ６について、許容トルクの範囲の上限は、正の値であり、許容トルクの範囲の下限は、負の値である。
【００６８】
ステップＳ１６５において、関節Ｊ１〜Ｊ６のうち、関節に掛かる負荷トルクの最大値が、関節の許容トルクの範囲内ではない関節がある場合は、処理は、ステップＳ１７０に進む。
【００６９】
ステップＳ１７０において、教示装置５０は、出力装置５８であるディスプレイにエラー表示を行う。
【００７０】
教示装置５０は、エラー表示に先立って、以下の処理を行う。教示装置５０は、負荷トルクの最大値が、関節の許容トルクの範囲を超えた関節について、負荷トルクに近い側の許容トルク閾値ｔ０１から、その関節から先にあるリンクに起因する負荷トルクｔａ、ならびにエンドエフェクターＥおよびワークＷに起因する負荷トルクｔｂを引いて得られる余裕トルクｔｍを計算する。そして、余裕トルクｔｍと、その力制御におけるその関節とＴＣＰの相対位置関係および目標力の向きと、に基づいて、いわゆる順キネマティクスにより、その力制御で指定される姿勢をアームＡがとった場合に、ＴＣＰにおいて目標力の向きに生じさせうる力の大きさを計算する。教示装置５０は、そのような処理を、関節の許容トルクを超えたすべての関節について行う。そのようにして得られた、ＴＣＰにおいて目標力の向きに生じさせうる力の大きさのうち、最小の力の大きさを、可能力ｆｐ１とする。可能力ｆｐ１は、目標力の向きと、力制御を開始するときの位置および姿勢と、によって規定される力制御において、実現可能な目標力の大きさである。
【００７１】
また、教示装置５０は、すべての関節について、負荷トルクから遠い側の許容トルク閾値ｔ０２を使用して、上記と同様の処理を行い、逆向きの可能力ｆｐ２を計算する。
【００７２】
図５は、図３のステップＳ１７０において、出力装置５８であるディスプレイに出力されるエラー表示ＥＤである。教示装置５０は、図３のステップＳ１７０において、目標力の大きさと、可能力ｆｐ１，ｆｐ２とを使用して、出力装置５８であるディスプレイに出力されるエラー表示ＥＤを行う。図５の例では、「現在の設定では１０Ｎで押しつけることができません。−１０〜５Ｎまで設定可能です。５Ｎに変更しますか？」というエラーメッセージＥＭが表示されている。エラーメッセージＥＭは、入力された目標力の大きさおよび向きと、入力された力制御を開始位置および姿勢と、によって規定される力制御が実現不可能である旨の情報を表す。
【００７３】
エラーメッセージＥＭ中の「１０Ｎ」が、入力された目標力の大きさｆｉである（図４のＷ１２参照）。「５Ｎ」が、目標力と同じ向きの可能力ｆｐ１である。「−１０（Ｎ）」が、目標力とは逆向きの可能力ｆｐ２である。
【００７４】
このような処理を行うことにより、エラーメッセージＥＭが出力された場合には、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができないことを知ることができる。
【００７５】
また、実現可能な目標力の大きさｆｐ１が出力されることにより、ユーザーは、ロボット制御装置に入力した目標力の向きと、開始位置と、開始するときの姿勢と、によって規定される力制御において、ロボットに実現させることができる力の大きさを知ることができる。
【００７６】
エラー表示ＥＤは、ボタンＢ０４，Ｂ０５を含む。ユーザーは、エラー表示ＥＤを見て、「はい」のボタンＢ０４、または「いいえ」のボタンＢ０４のいずれかを押す。その後、処理は、図３のステップＳ１４０に戻る。
【００７７】
ステップＳ１７０において「はい」のボタンＢ０４が押された場合には、ステップＳ１４０において再び表示される図４のユーザーインターフェイスＵＩ１２の入力窓Ｗ１２において、前回のステップＳ１４０の処理で入力された値「１０Ｎ」に代えて、可能力ｆｐ１、すなわち、ここでは「５Ｎ」が自動的に入力される。
【００７８】
ステップＳ１７０において「いいえ」のボタンＢ０５が押された場合には、ステップＳ１４０において表示される図４のユーザーインターフェイスＵＩ１２の入力窓Ｗ１２には、前回のステップＳ１４０の処理で入力された値「１０Ｎ」がそのまま入力されている。ユーザーは、図５のエラーメッセージＥＭを参考にして自ら入力窓Ｗ１２に他の値を入力するか、またはユーザーインターフェイスＵＩ１２の他の入力窓の設定を変更する。
【００７９】
図３のステップＳ１６５において、すべての関節Ｊ１〜Ｊ６について、関節に掛かる負荷トルクの最大値が、関節の許容トルクの範囲内であった場合は、処理は、ステップＳ１８０に進む。
【００８０】
ステップＳ１８０において、教示装置５０は、すべての関節について、負荷トルクに近い側の許容トルク閾値ｔ０１と、負荷トルクとを使用して、出力装置５８としてのディスプレイに検討結果の表示を行う。
【００８１】
図６は、図３のステップＳ１８０において、出力装置５８としてのディスプレイに表示されるユーザーインターフェイスＵＩ１８を示す図である。教示装置５０は、すべての関節Ｊ１〜Ｊ６について、許容トルク閾値ｔ０１に対する負荷トルクの割合を示す。１００％は、負荷トルクが許容トルク閾値ｔ０１と等しいことを示す。図６の例では、許容トルク閾値ｔ０１に対する負荷トルクの割合が、８０％以下の領域は緑色で示され、８０％を超える領域は黄色で示され、９２％を超える領域は赤で示される。このような処理を行うことにより、ユーザーは、図３のステップＳ１２０，Ｓ１４０で指定した力制御に対して、ロボット２０の各モーターがどの程度の余力を持っていたかを知ることができる。
【００８２】
教示装置５０は、図３のステップＳ１８０において、ステップＳ１２０，Ｓ１４０で入力された情報を、対象動作を識別するための情報と対応づけて、ＲＡＭ５０ｂに格納する。さらに、教示装置５０は、ステップＳ１２０，Ｓ１４０で入力された情報を、対象動作を識別するための情報とともに動作制御装置３０に出力する。動作制御装置３０は、両者を対応づけてＲＡＭ３０ｂに記憶する。
【００８３】
ステップＳ１８０においてＲＡＭ５０ｂおよびＲＡＭ３０ｂ内に格納された情報を、図１において、「力制御の動作設定値ＳＭＶ」として示す。図３のステップＳ１６５，Ｓ１７０，Ｓ１８０の処理において、出力装置５８への表示を行う教示装置５０の機能部を、図２において、「出力制御部５２」として示す。図３のステップＳ１８０の処理において、ステップＳ１２０，Ｓ１４０で入力された情報をＲＡＭ５０ｂに格納し、動作制御装置３０に出力する教示装置５０の機能部を、図２において、「設定部５４」として示す。
【００８４】
本実施形態によれば、ロボット２０に力制御を行わせるにあたって、ユーザーインターフェイスＵＩ１８（図６参照）が出力されるか、エラー表示ＥＤ（図５参照）が出力されるか、によって、ユーザーは、ロボット制御装置２５に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを知ることができる。
【００８５】
本実施形態において固有情報Ｉｃを記憶している動作制御装置３０のＲＡＭ３０ｂを、「記憶部」とも呼ぶ。ユーザーインターフェイスＵＩ１８（図６参照）が表す情報を、「第１種の情報」とも呼ぶ。エラーメッセージＥＭ（図５参照）が表す情報を、「第２種の情報」とも呼ぶ。エンドエフェクター情報Ｉｅとワーク情報Ｉｗをまとめて「選択情報」とも呼ぶ。
【００８６】
（２）力制御の実現可否の判定  その２：
図７は、教示装置５０において、アームＡの姿勢の特異点の有無の点から力制御の実現可否の判定を行う際の処理を示すフローチャートである。図７の処理は、具体的には、教示装置５０のＣＰＵ５０ａ（図１参照）が実行する。
【００８７】
ステップＳ３２０において、教示装置５０は、ユーザーから、エンドエフェクターＥの情報と、ワークＷの情報と、を受け取る。ステップＳ３２０の処理は、図３のステップＳ１２０の処理と同じである。
【００８８】
ステップＳ３４０において、教示装置５０は、ユーザーから、位置情報と、範囲情報とを受け取る。ステップＳ３４０の処理は、力情報を受け取らない点を除いて、図３のステップＳ１４０の処理と同じである。
【００８９】
ステップＳ３６０において、教示装置５０は、動作制御装置３０のＲＡＭ３０ｂ（図１参照）から、ロボット２０のハードウェア構成に関する固有情報Ｉｃを取得する。教示装置５０は、エンドエフェクター情報およびワーク情報（Ｓ３２０参照）と、位置情報および範囲情報（Ｓ３４０参照）と、固有情報Ｉｃと、に基づいて、位置情報と範囲情報で特定される動作範囲に含まれる複数の代表的な位置（以下、「代表点」と表記する）を制御点としてのＴＣＰが取った場合の、各関節Ｊ１〜Ｊ６の角度位置を、計算する。この計算は、いわゆる逆キネマティクスにより、行うことができる。そして、得られた複数の代表点に対応する各関節の角度位置に基づいて、各関節Ｊ１〜Ｊ６について、取りうる角度範囲を決定する。
【００９０】
ステップＳ３６５において、教示装置５０は、位置情報と範囲情報で特定される動作範囲に含まれる複数の代表点の中に特異点が存在するか否かを判定する。「特異点」とは、制御点としてのＴＣＰを制御できない位置であり、上記ステップＳ３６０処理において、各関節の角度範囲を決定できない位置である。
【００９１】
ステップＳ３６５において、代表点の中に特異点がある場合は、処理は、ステップＳ３７０に進む。ステップＳ３７０において、教示装置５０は、出力装置５８としてのディスプレイ５８に、エラーメッセージと共に、代表点を表示する。
【００９２】
図８は、図７のステップＳ３７０における出力装置５８の表示を示す図である。教示装置５０は、ロボット２０の３次元画像と共に、３次元空間内の代表点Ｒｓを、出力装置５８としてのディスプレイに表示する。特異点ではない代表点Ｒｓは、緑の点として表示される。特異点である代表点Ｒｓは、赤い点として表示される。また、特異点である代表点Ｒｓがある場合には、特異点である代表点の一つと関連づけて、「特異点があります」というエラーメッセージＥＭ２が表示される。
【００９３】
図８の表示中のボタンＢ０６が押されると、処理はステップＳ３４０に戻る。ユーザーは、ステップＳ３４０において、位置情報および範囲情報の一方または両方の設定を変更する。
【００９４】
図７のステップＳ３６５において、代表点の中に特異点がない場合は、処理は、ステップＳ３８０に進む。ステップＳ３８０において、教示装置５０は、出力装置５８としてのディスプレイ５８に代表点を表示する。ステップＳ３８０における表示は、特異点である代表点Ｒｓを表す赤い点の表示、および「特異点があります」というエラーメッセージＥＭ２が表示されない点を除いて、図８の表示と同じである。
【００９５】
教示装置５０は、ステップＳ３２０，Ｓ３４０で入力された情報を、対象動作を識別するための情報と対応づけて、ＲＡＭ５０ｂに格納する。さらに、教示装置５０は、ステップＳ３２０，Ｓ３４０で入力された情報を、対象動作を識別するための情報とともに動作制御装置３０に出力する。動作制御装置３０は、両者を対応づけてＲＡＭ３０ｂに記憶する。
【００９６】
なお、図７に示したアームＡの姿勢の特異点の有無の点から力制御の実現可否の判定を行う処理は、図３の処理に先立って行うこともでき、図３の処理と平行して行うこともできる。図３の処理と図７の処理を平行して行う場合には、図７のステップＳ３２０，Ｓ３４０の処理は省略することができる。
【００９７】
本実施形態によれば、ロボットに力制御を行わせるにあたって、エラーメッセージＥＭ２（図８参照）が出力されるか否か、によって、ユーザーは、ロボット制御装置２５に入力した開始位置と、開始するときの姿勢と、動作範囲と、によって規定される力制御を、特異点の有無の点からロボットに実行させることができるか否かを、知ることができる。
【００９８】
（３）力制御を実現可能な位置の探索：
図９は、教示装置５０において、力制御の実現が可能な候補位置を決定する際の処理を示すフローチャートである。図９の処理は、具体的には、教示装置５０のＣＰＵ５０ａ（図１参照）が実行する。
【００９９】
ステップＳ５２０において、教示装置５０は、ユーザーから、エンドエフェクターＥの情報と、ワークＷの情報と、を受け取る。ステップＳ５２０の処理は、図３のステップＳ１２０の処理と同じである。
【０１００】
ステップＳ５４０において、教示装置５０は、ユーザーから、位置情報の一部であってエンドエフェクターＥの姿勢を表す姿勢情報、と、範囲情報と、力情報と、を受け取る。ステップＳ５４０の処理は、位置情報のうち制御点の位置情報を受け取らない点を除いて、図３のステップＳ１４０の処理と同じである。
【０１０１】
ステップＳ５５０において、教示装置５０は、ユーザーから、空間情報を受け取る。「空間情報」は、ユーザーが指定する力制御を実現できる位置を探すべき空間を指定する情報である。
【０１０２】
図１０は、図９のステップＳ５５０において、教示装置５０の出力装置５８に表示されるユーザーインターフェイスＵＩ５５を示す。ユーザーインターフェイスＵＩ５５は、入力窓Ｗ３１〜Ｗ３６，Ｗ４１〜Ｗ４６、ボタンＢ２１，Ｂ２２を備える。
【０１０３】
入力窓Ｗ３１〜Ｗ３３は、力制御を実現できる位置を探すべき空間を直方体として指定するための一つ目の頂点Ｐ１を指定するためのインターフェイスである。図１０の例においては、ロボット座標系ＲＣにおける（Ｘ，Ｙ，Ｚ）＝（１００，４００，５００）の点が、頂点Ｐ１として指定されている。
【０１０４】
入力窓Ｗ３１〜Ｗ３６は、力制御を実現できる位置を探すべき空間を直方体として指定するための二つ目の頂点Ｐ２を指定するためのインターフェイスである。図１０の例においては、ロボット座標系ＲＣにおける（Ｘ，Ｙ，Ｚ）＝（０，１００，３００）の点が、頂点Ｐ２として指定されている。
【０１０５】
力制御を実現できる位置を探すべき空間Ｓｒは、頂点Ｐ１，Ｐ２を頂点とし、ＸＹ平面に平行な２面、ＹＺ平面に平行な２面、およびＺＸ平面に平行な２面によって規定される空間である。
【０１０６】
入力窓Ｗ４１〜Ｗ４３は、頂点Ｐ１における姿勢を指定するためのインターフェイスである。図１０の例においては、ロボット座標系ＲＣにおける（Ｕ，Ｖ，Ｗ）＝（９０，０，１８０）の姿勢が、指定されている。
【０１０７】
入力窓Ｗ４４〜Ｗ４６は、頂点Ｐ２における姿勢を指定するためのインターフェイスである。図１０の例においては、ロボット座標系ＲＣにおける（Ｕ，Ｖ，Ｗ）＝（９０，０，１８０）の姿勢が、指定されている。本実施形態においては、教示装置５０は、入力窓Ｗ４４〜Ｗ４６の値と、それぞれ入力窓Ｗ４１〜Ｗ４３と、の一方に入力された値の組み合わせを、他方に反映させる。
【０１０８】
このような処理を行うことにより、力制御を実現できる位置を探すべき空間Ｓｒの指定を受け付けない態様に比べて、教示装置５０は、より少ない処理負荷で、関節に生じるトルクの値が許容トルクの値以下である位置を、決定することができる。
【０１０９】
ボタンＢ２１は、入力窓Ｗ３１〜Ｗ３６，Ｗ４１〜Ｗ４６への入力を終えたユーザーが、教示装置５０に次の処理を行わせるためのボタンである。ボタンＢ２２は、ユーザーインターフェイスＵＩ５５を介した情報の入力の前の処理に戻るためのボタンである。ボタンＢ２２が押されると、処理は、図９のステップＳ５４０以前の段階に戻る。ステップＳ５５０の処理を実行するのは、教示装置５０の機能部としての受付部５３である。
【０１１０】
図９のステップＳ５６０において、教示装置５０は、空間情報によって特定される空間Ｓｒ内に、複数の候補点を決定する。本実施形態においては、空間情報によって特定される直方体の空間Ｓｒの各辺を４等分する点と、それらの点を通る、ＸＹ平面に平行な面、ＹＺ平面に平行な面、およびＺＸ平面に平行な面の交点とを、候補点とする。教示装置５０は、各候補点について、以下の処理を行う。
【０１１１】
図９のステップＳ５６０において、教示装置５０は、教示装置５０は、エンドエフェクター情報およびワーク情報（Ｓ５２０参照）と、候補点の位置を表す情報（以下、「候補点情報」と呼ぶ）、位置情報のうちの姿勢情報、範囲情報および力情報（Ｓ５４０参照）と、固有情報Ｉｃと、に基づいて、候補点情報と範囲情報で特定される動作範囲に含まれる複数の代表点について、関節にかかる負荷トルクの最大値を計算する。この処理は、図３のステップＳ１６０の処理と同じである。
【０１１２】
また、教示装置５０は、エンドエフェクター情報およびワーク情報（Ｓ３２０参照）と、候補点情報および範囲情報（Ｓ１４０参照）と、固有情報Ｉｃと、に基づいて、上記の複数の代表点について、各関節が取る角度範囲を決定する。この処理は、図７のステップＳ３６０の処理と同じである。
【０１１３】
空間情報によって特定される直方体の空間Ｓｒに含まれるすべての候補点について、上記の処理を終了すると、処理は、ステップＳ５６５に進む。ステップＳ５６０の処理を実行するのは、教示装置５０の機能部としての算出部５６である。
【０１１４】
ステップＳ５６５において、教示装置５０は、各候補点について、各関節Ｊ１〜Ｊ６に掛かる負荷トルクの最大値が、各関節Ｊ１〜Ｊ６の許容トルクの範囲内であるか否かを判定する。各候補点について行われる判定処理は、図３のステップＳ１６５の判定処理と同じである。
【０１１５】
教示装置５０は、候補点情報と範囲情報で特定される動作範囲に含まれる複数の代表点の中に特異点が存在するか否かを判定する。各候補点について行われる判定処理は、図７のステップＳ３６５の判定処理と同じである。
【０１１６】
教示装置５０は、上記の各処理の後、すべての関節Ｊ１〜Ｊ６について、負荷トルクの最大値が許容トルクの範囲内であり、かつ、特異点が存在しない候補点（以下、「実行可能候補点」と呼ぶ）があるか否かを判定する。
【０１１７】
ステップＳ５６５において、実行可能候補点が存在しない場合は、処理は、ステップＳ５７０に進む。ステップＳ５７０において、教示装置５０は、出力装置５８としてのディスプレイに、エラー表示を出力する。エラー表示は、たとえば、「指定された範囲内に、作業を実行可能な地点はありません」といった表示とすることができる。所定のボタンが押されると、処理はステップＳ５４０に戻る。ユーザーは、ステップＳ５４０において、位置情報および範囲情報の一方または両方の設定を変更するか、またはステップＳ５５０において、空間情報の設定を変更する。
【０１１８】
ステップＳ５６５において、実行可能候補点がある場合は、処理は、ステップＳ５８０に進む。ステップＳ５８０において、教示装置５０は、出力装置５８としてのディスプレイに、候補点を表示する。
【０１１９】
図１１は、図９のステップＳ５８０において出力装置５８に表示されるユーザーインターフェイスＵＩ５８ａを示す図である。教示装置５０は、ステップＳ５８０において、ユーザーインターフェイスＵＩ５８ａを出力装置５８としてのディスプレイに表示する。ユーザーインターフェイスＵＩ５８ａは、ロボット２０の３次元画像と、３次元空間内の１２５個の候補点Ｒ０−０−０〜Ｒ４−４−４の表示とを、含む。実行可能候補点は、緑の点として表示される。実行可能候補点ではない候補点は、赤い点として表示される。
【０１２０】
技術の理解を容易にするために、図１１では図示を省略しているが、ステップＳ５８０における出力においては、実行候補点の集合を含む３次元の凸包が、薄い緑色で表示される。ある点の集合の「凸包」は 、その点の集合を含むすべての凸集合の交わり、すなわち共通部分である。
【０１２１】
図１２は、候補点を２次元の点Ｒ０−０〜Ｒ７−６の５６個の点と仮定した場合の凸包の例を示す説明図である。実行可能候補点を、白い丸で示す。実行可能候補点以外の候補店を、黒い丸で示す。斜線で示した領域が、実行可能候補点の凸包である。図１２に示すように、力制御を実現できる位置を探すべき空間Ｓｒ内において、１以上の凸包が存在し得る。
【０１２２】
図１３は、各軸方向について取り得ると考えられる範囲を表すユーザーインターフェイスＵＩ５８ｂを示す図である。図１１の状態において、入力装置５７としてのマウスを介して実行可能候補点の一つ、または空間Ｓｒがクリックされると、教示装置５０は、図１３のユーザーインターフェイスＵＩ５８ｂを出力装置５８としてのディスプレイに表示する。ユーザーインターフェイスＵＩ５８ｂは、スライダー表示Ｓ１１〜Ｓ１６と、画像表示ＤＷ２と、ボタンＢ２４，Ｂ２５とを含む。
【０１２３】
画像表示ＤＷ２は、クリックされた実行可能候補点の姿勢を取ったときのロボット２０の状態を表す斜視図を示す。
【０１２４】
スライダー表示Ｓ１１は、Ｘ軸方向の探索範囲Ｓ１１２と、実行可能範囲Ｓ１１１と、画像表示ＤＷ２に表示されたロボットのＴＣＰの位置を示すスライダーＳ１１０と、を表す。より具体的には、Ｘ軸方向の探索範囲が赤の矩形Ｓ１１２で示される。図１３において、Ｘ軸方向の探索範囲Ｓ１１２は、便宜上、ドットを付した領域で示される。Ｘ軸方向の探索範囲のうち、実行可能範囲が青の矩形Ｓ１１１で示される。図１３において、Ｘ軸方向の実行可能範囲Ｓ１１１は、便宜上、斜線を付した領域で示される。Ｘ軸方向の実行可能範囲のうち、画像表示ＤＷ２に表示されたロボットの位置を示すスライダーＳ１１０が白の矩形で示される。
【０１２５】
同様に、スライダー表示Ｓ１２，Ｓ１３は、それぞれＹ軸方向とＺ軸方向の探索範囲と、実行可能範囲と、画像表示ＤＷ２に表示されたロボットのＴＣＰの位置を示すスライダーと、を表す。スライダー表示Ｓ１４〜Ｓ１６は、それぞれＵ軸方向、Ｖ軸方向、Ｗ軸方向の探索範囲と、実行可能範囲と、画像表示ＤＷ２に表示されたロボットの手先の姿勢を示すスライダーと、を表す。
【０１２６】
このような処理を行うことにより、各候補点の位置および姿勢について、実行可能範囲に対してどの程度の余裕を有するかを、ユーザーは知ることができる。なお、図１３は、技術内容を説明するための図であり、図１３において、ＤＷ２に示されたロボット２０の姿勢と、スライダー表示Ｓ１１〜Ｓ１６に示された数値とは、必ずしも整合しない。
【０１２７】
図１３のユーザーインターフェイスＵＩ５８ｂにおけるスライダー表示Ｓ１１〜Ｓ１６の実行可能範囲の表示が、ユーザーインターフェイスＵＩ５８ａにおける実行可能候補点の凸包に相当する。
【０１２８】
ボタンＢ２５は、ユーザーインターフェイスＵＩ５８ａを介した実行可能候補点の選択の処理に戻るためのボタンである。ボタンＢ２５が押されると、処理は、ユーザーインターフェイスＵＩ５８ａを介した実行可能候補点の選択の処理に戻る。
【０１２９】
ボタンＢ２４は、実行可能候補点を、確定するためのボタンである。ボタンＢ２４が押されると、教示装置５０は、ステップＳ５２０，Ｓ５４０で入力された情報、ならびに選択された実行可能候補点の候補点情報を、対象動作を識別するための情報と対応づけて、ＲＡＭ５０ｂに格納する。さらに、教示装置５０は、ステップＳ５２０，Ｓ５４０で入力された情報、ならびに選択された実行可能候補点の候補点情報を、対象動作を識別するための情報とともに動作制御装置３０に出力する。動作制御装置３０は、両者を対応づけてＲＡＭ３０ｂに記憶する。動作制御装置３０は、保存されたそれらの情報に基づいて、後に、ロボット２０を制御することができる。
【０１３０】
図９のステップＳ５６５，Ｓ５７０，Ｓ５８０の処理において、出力装置５８への表示を行う教示装置５０の機能部は、出力制御部５２（図２参照）である。図３のステップＳ５８０の処理において、ステップＳ５２０，Ｓ５４０で入力された情報、ならびに選択された実行可能候補点の候補点情報をＲＡＭ５０ｂに格納し、動作制御装置３０に出力する教示装置５０の機能部は、設定部５４（図２参照）である。
【０１３１】
本実施形態によれば、ロボット２０に力制御を行わせるにあたって、目標力の大きさと向きとによって規定される力制御を実行しうる地点を、ユーザーは、ユーザーインターフェイスＵＩ５８ａ（図１１参照）を介して、あらかじめ知ることができる。そして、ユーザーは、ユーザーインターフェイスＵＩ５８ｂを介して、実行可能候補点の一つを、ロボット２０に実行させる力制御の設定値として、動作制御装置３０に保存することができる。
【０１３２】
Ｂ．第２実施形態：
図１４は、複数のプロセッサーによってロボットの制御装置が構成される一例を示す概念図である。この例では、ロボット２０およびその動作制御装置３０の他に、パーソナルコンピューター４００，４１０と、ＬＡＮなどのネットワーク環境を介して提供されるクラウドサービス５００とが描かれている。パーソナルコンピューター４００，４１０は、それぞれプロセッサーとメモリーとを含んでいる。また、クラウドサービス５００においてもプロセッサーとメモリーを利用可能である。プロセッサーは、コンピューター実行可能な命令を実行する。これらの複数のプロセッサーの一部または全部を利用して、動作制御装置３０および教示装置５０を含むロボット制御装置２５を実現することが可能である。また、各種の情報を記憶する記憶部も、これらの複数のメモリーの一部または全部を利用して、実現することが可能である。
【０１３３】
Ｃ．第３実施形態：
図１５は、複数のプロセッサーによってロボットの制御装置が構成される他の例を示す概念図である。この例では、ロボット２０の動作制御装置３０が、ロボット２０の中に格納されている点が図１４と異なる。この例においても、複数のプロセッサーの一部または全部を利用して、ロボット２０の制御装置を実現することが可能である。また、各種の情報を記憶する記憶部も、複数のメモリーの一部または全部を利用して、実現することが可能である。
【０１３４】
Ｄ．他の形態：
Ｄ１．他の形態１：
（１）上記実施形態においては、各関節の負荷トルクの計算（図３のＳ１６０および図９のＳ５６０参照）に先立って、力制御を規定する情報として、位置情報Ｉｐ、範囲情報Ｉｒ、および力情報Ｉｆが入力される（図３のＳ１４０および図９のＳ５４０参照）。しかし、各関節の負荷トルクの計算に先だって、さらに、力制御における制御点の移動速度および加速度の一方または両方が入力される態様とすることもできる。そのような態様においては、入力された移動速度および加速度の一方または両方を考慮して、各関節に生じるトルクの値を算出することが好ましい。たとえば、制御点において加速度（すなわち、速度の変化）が生じた場合には、各関節には負荷トルクがかかる。このような態様とすれば、より正確に、各関節に生じるトルクの値を算出することができる。
【０１３５】
（２）上記実施形態においては、ロボット２０は、６軸の垂直多関節型ロボットである。しかし、制御装置に制御されるロボットは、スカラロボットや、直角座標ロボット等の他のロボットであってもよい。また、アームＡは、５個以下の軸を備える構成であってもよく、７個以上の軸を備える構成であってもよい。
【０１３６】
（３）上記実施形態においては、位置情報は、ユーザーが入力装置５７を介して教示装置５０に入力する（図３のＳ１４０参照）。しかし、対象動作の目標位置Ｓｔは、ユーザーがアームＡを手で移動させることによりロボットシステム１に教示してもよく、ロボット制御装置を介して座標を指定することにより教示されてもよい。また、対象動作の位置を表す位置情報は、直交座標系で指定されてもよく、各関節の角度位置で指定されてもよい。
【０１３７】
対象動作を開始すべき位置およびエンドエフェクターＥの姿勢も、ユーザーがアームＡを手で移動させることによりロボットシステム１に教示してもよく、ロボット制御装置を介して座標を指定することにより教示されてもよい。また、対象動作を開始すべきＴＣＰの位置およびエンドエフェクターＥの姿勢は、直交座標系で指定されてもよく、各関節の角度位置で指定されてもよい。
【０１３８】
（４）上記実施形態のステップＳ１４０においては、目標力の方向として、Ｘ軸方向、Ｙ軸方向、Ｚ軸方向、Ｘ軸周りの回転方向、Ｙ軸周りの回転方向、Ｚ軸周りの回転方向の６つの方向のうちのいずれか一つの方向が選択的に入力されるように、教示装置５０は構成されている（図４のＷ１１参照）。しかし、目標力の方向は、Ｘ軸方向の力成分、Ｙ軸方向の力成分、Ｚ軸方向の力成分、角度位置ＲＸの方向のトルク成分、角度位置ＲＹの方向のトルク成分、角度位置ＲＺの方向のトルク成分の組み合わせによって特定される態様とすることができる。
【０１３９】
（５）上記実施形態においては、力検出部２１として、並進３軸方向の力成分と、回転３軸回りのモーメント成分の６成分を同時に検出することができる６軸力覚センサーが、アームＡの先端に取りつけられている（図１参照）。しかし、力検出部は、たとえば、互いに直交する３個の検出軸上の力の大きさを検出する３軸センサーとすることもできる。そのような態様においては、入力窓Ｎ１で受け付けることができる目標力ｆｓｔの方向（図６および図５のＳ５２０参照）は、たとえば、ロボット座標系ＲＣにおけるＸ軸方向、Ｙ軸方向、Ｚ軸方向の３つの方向のうちのいずれかの方向となる。
【０１４０】
また、力検出部は、支持台ＢとリンクＬ１の間など、アームＡの先端以外のロボットの他の部位に設けられていてもよい。さらに、ロボットの各関節に配されたモーターのトルクから、ＴＣＰにおける３軸方向の力や３軸周りのトルクを計算して、力検出部の機能を実現することもできる。
【０１４１】
（６）上記実施形態においては、関節の負荷トルクが許容トルクを超えている場合は、エラーメッセージＥＭが表示され、関節の負荷トルクが許容トルクを超えない目標力の大きさの受け入れ、または再入力が促される（図５参照）。しかし、入力された目標力の大きさを、ロボット制御装置が強制的に、関節の負荷トルクが許容トルクを超えない目標力の大きさに変更した上で、ユーザーに対して、設定値の再入力を促す旨のメッセージ、または、設定値が変更された旨のメッセージを発する態様とすることもできる。また、画像表示（図５のＥＭ参照）ではなく、音声による出力を行うこともできる。また、ロボット制御装置による入力値の変更を行わせるか否かを、チェックボックスへのチェックなどを介して、ユーザーに選択させる態様とすることもできる。
【０１４２】
（７）各種の情報を格納する記憶部は、同一の筐体内に存在する記憶手段であってもよく、互いに通信可能に接続されている複数の構成要素の内部にそれぞれ備えられている記憶手段であってもよい。
【０１４３】
（８）教示装置５０は、さらに、力制御を継続する時間を表す時間情報を受け取り、力制御を実行している間に、各関節のモーターの温度が閾値を超えないか否かを判定する態様とすることもできる。また、力制御が位置の変更を伴う場合には、位置制御において指定されている動作時間に基づいて、各関節のモーターの温度が閾値を超えないか否かを判定する態様とすることもできる。
【０１４４】
（９）上記実施形態においては、位置情報は、対象動作を開始すべき制御点としてのＴＣＰの位置およびエンドエフェクターＥの姿勢を表す。しかし、位置情報は、さらに、対象動作を終了すべき制御点の情報を含むことができる。そのような態様とすれば、力制御を含む対象動作において各関節にかかる負荷トルクの最大値をより正確に計算することができる（図３のＳ１６０、図９のＳ５６０参照）。また、すべての関節Ｊ１〜Ｊ６について、負荷トルクの最大値が許容トルクの範囲内であり、かつ、特異点が存在しない実行可能候補点があるか否かを、より正確に判定することができる。
【０１４５】
（１０）上記実施形態においては、図９のステップＳ５８０において、各軸方向について取り得ると考えられる範囲を表すユーザーインターフェイスＵＩ５８ｂが表示される（図１３参照）。しかし、実行可能候補点があると判定された場合（Ｓ５６５：Ｙｅｓ）には、選択された実行可能候補点について、以下の表示を行うこともできる。すなわち、各関節の取りうる角度範囲と、その力制御において各関節が取る角度範囲とを、ユーザーインターフェイスＵＩ５８ｂのスライダー表示Ｓ１１〜Ｓ１６と同様に、表示することもできる。そのような処理を行うことにより、各候補点の位置および姿勢について、取りうる角度範囲に対して、力制御において取る角度範囲が、どの程度の余裕を有するかを、ユーザーは知ることができる。
【０１４６】
（１１）「関節の許容トルク」は、関節のモーターの許容トルクと、減速機の出力側の許容トルクのうち、小さい方のトルクに１以下の係数（たとえば、０．８、０．９など）を掛けたトルクとすることもできる。
【０１４７】
（１２）上記実施形態においては、図７のステップＳ３６５において、教示装置５０は、位置情報と範囲情報で特定される動作範囲に含まれる複数の代表点の中に特異点が存在するか否かを判定する。しかし、教示装置５０が、図７のステップＳ３６５の処理に代えて、位置情報と範囲情報で特定される動作範囲に含まれる複数の代表点の中に特異点が存在するか、または複数の代表点の中に特異点近傍の代表点が存在するか、を判定する態様とすることもできる。この態様においては、代表点の中にそのような特異点がない場合は、処理は、図７のステップＳ３８０に進む。
【０１４８】
一方、複数の代表点の中に特異点が存在するか、または複数の代表点の中に特異点近傍の代表点が存在する場合は、ステップＳ３７０に進む。ステップＳ３７０において、教示装置５０は、図８の出力と同様の出力を行い、出力装置５８としてのディスプレイ５８に、エラーメッセージと共に、代表点Ｒｓを表示する。ステップＳ３７０の処理において、特異点である代表点Ｒｓは、赤い点として表示される。特異点の近傍にある代表点Ｒｓは、黄色の点として表示される。それらのいずれでもない代表点Ｒｓは、緑の点として表示される。
【０１４９】
複数の代表点の中に特異点近傍の代表点が存在するか否かの判定は、以下のように行うことができる。たとえば、あらかじめ、ロボット２０について、特異点近傍のＴＣＰの位置とエンドエフェクターＥの姿勢の組み合わせの範囲を特定しておき、複数の代表点の中にそのような範囲に含まれる点が存在するか否かを判定する態様とすることもできる。また、複数の代表点の中の１以上の代表点に基づいて、ＴＣＰの位置とエンドエフェクターＥの姿勢をあらかじめ定められた範囲で変化させ、そのように変化させて得られるＴＣＰの位置とエンドエフェクターＥの姿勢の組み合わせの中に、特異点があるか否かによって、上記の判断を行うこともできる。
【０１５０】
たとえば、一つ代表点から、ＴＣＰの位置を、代表点の間隔の１／２以下の所定量だけ各方向に変化させて得られるＴＣＰの位置の中に、特異点がある場合は、その代表点は、特異点近傍の代表点であると判断することができる。また、隣り合う二つの代表点を結ぶ線分を等分する複数の位置の中に、特異点が存在する場合は、それら隣り合う二つの代表点は、特異点近傍の代表点であると判断することができる。
【０１５１】
このような態様とすることにより、特異点ではないある代表点から、特異点ではない別の代表点に、ロボットの姿勢が変化する場合に、ロボットが制御不能になる可能性を低減することができる。
【０１５２】
Ｄ２．他の形態２：
上記実施形態においては、各関節の負荷トルクの計算（図３のＳ１６０および図９のＳ５６０参照）に先立って、エンドエフェクター情報Ｉｅとワーク情報Ｉｗとが入力される（図３のＳ１２０および図９のＳ５２０参照）。しかし、エンドエフェクター情報Ｉｅとワーク情報Ｉｗの一方または両方が入力されない態様とすることもできる。そのような態様においても、位置情報および力情報（図３のＳ１４０および図９のＳ５４０参照）によって規定される力制御における各関節に生じるトルクのおおよその値を算出することができる。
【０１５３】
Ｄ３．他の形態３：
（１）上記実施形態においては、ワーク情報は、以下を含む。（ｉ）ワークＷの重量の情報。（ｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のワークＷの重心位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報。（ｉｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のエンドエフェクターＥとワークＷの接触点の位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報。
【０１５４】
しかし、ロボット制御装置に入力されるワーク情報が、上記（ｉｉｉ）の情報を含まない態様とすることもできる。そのような態様においても、（ｉ）ワークＷの重量の情報。（ｉｉ）ワークＷの重心位置とエンドエフェクターＥの重心位置との相対位置関係の情報（図３のＳ１２０および図９のＳ５２０参照）、ならびに位置情報および力情報（図３のＳ１４０および図９のＳ５４０参照）に基づいて、位置情報および力情報によって規定される力制御における各関節に生じるトルクのおおよその値を算出することができる。
【０１５５】
（２）ワーク情報のうち、以下の情報は、ロボット座標系で入力されることもでき、手先座標系で入力されることもできる。（ｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のワークＷの重心位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報。（ｉｉｉ）対象動作においてワークＷがエンドエフェクターＥに把持された際のエンドエフェクターＥとワークＷの接触点の位置と、エンドエフェクターＥの重心位置と、の相対位置関係の情報。「手先座標系」とは、エンドエフェクターに対して相対的に固定された３次元直交座標系である。
【０１５６】
Ｄ４．他の形態４：
上記実施形態においては、各関節の負荷トルクの計算（図３のＳ１６０および図９のＳ５６０参照）に先立って、対象動作において変動しうるＴＣＰの位置およびエンドエフェクターＥの姿勢の範囲を表す範囲情報が入力される（図３のＳ１２０および図９のＳ５２０参照）。しかし、力制御における位置の範囲と姿勢の範囲の一方または両方の情報が入力されない態様とすることもできる。そのような態様においても、対象動作全体を通じてではないものの、位置情報および力情報（図３のＳ１４０および図９のＳ５４０参照）によって規定される力制御における各関節に生じるトルクの値を算出することができる。
【０１５７】
Ｄ５．他の形態５：
上記実施形態においては、図３のステップＳ１７０において表示されるエラー表示ＥＤは、力制御が実現不可能である旨の情報を表すエラーメッセージＥＭと、力制御において実現可能な目標力の大きさｆｐ１と、を含むエラー表示ＥＤが表示される。しかし、エラーメッセージにおいて、実現可能な目標力の大きさが表示されない態様とすることもできる。
【０１５８】
また、エラーメッセージにおいて、力制御が実現不可能である旨の情報を表すエラーメッセージが表示されない態様とすることもできる。そのような態様においては、ユーザーが図４のユーザーインターフェイスＵＩ１２の各入力窓に入力を済ませた後（図３のＳ１２０，Ｓ１４０参照）、ボタンＢ０１を押した場合には、以下のような処理を行うことができる。たとえば、エラー表示ＥＤ（図５参照）を表示せずに、そのまま図４のユーザーインターフェイスＵＩ１２の表意を維持し、入力値を変更すべき入力窓を強調して表示することができる。その際には、音を出力して、ユーザーの注意を喚起することもできる。
【０１５９】
Ｄ６．他の形態６：
（１）上記実施形態においては、図９のステップＳ１６５において、教示装置５０は、候補点情報と範囲情報で特定される動作範囲に含まれる複数の代表点の中に特異点が存在するか否かを判定する。しかし、力制御の実現が可能な候補位置を決定する際の処理（図９参照）においては、各候補点について、複数の代表点の中に特異点が存在するか否かを判定しない態様とすることもできる。
【０１６０】
そのような態様においては、ステップＳ５６５において、教示装置５０は、各候補点について、各関節Ｊ１〜Ｊ６に掛かる負荷トルクの最大値が、各関節Ｊ１〜Ｊ６の許容トルクの範囲内であるか否かを判定する。そして、教示装置５０は、すべての関節Ｊ１〜Ｊ６について、負荷トルクの最大値が許容トルクの範囲内である候補点（すなわち、実行可能候補点）があるか否かを判定する。そのような実行可能候補点が存在しない場合は、処理は、ステップＳ５７０に進む。そのような実行可能候補点が存在する場合は、処理は、ステップＳ５８０に進む。
【０１６１】
（２）上記実施形態においては、図９のステップＳ５８０において、実行可能候補点は、緑の点として表示され、実行可能候補点ではない候補点は、赤い点として表示される（図１１参照）。そして、実行候補点の集合を含む３次元の凸包が、薄い緑色で表示される。しかし、実行候補点の集合を含む３次元の凸包が、表示されない態様とすることもできる。また、実行可能候補点ではない候補点が表示されない態様とすることもできる。ただし、実行可能候補点は、ロボット制御装置が備える出力装置に出力されることが好ましい。
【０１６２】
（３）第１実施形態では、図９のステップＳ５８０においては、スライダー表示Ｓ１１を含むユーザーインターフェイスＵＩ５８ｂが表示される（図１３参照）。しかし、力制御の実現が可能な候補位置を決定する際の出力は、他の態様とすることもできる。
【０１６３】
図１６は、図９のステップＳ５８０におけるユーザーインターフェイスＵＩ５８ｂ（図１３参照）に代わるユーザーインターフェイスＵＩ５８ｃを示す図である。図９のステップＳ５８０において、入力装置５７としてのマウスを介して図１１中の実行可能候補点Ｒ０−０−０〜Ｒ４−４−４の一つがクリックされると、教示装置５０は、図１６のユーザーインターフェイスＵＩ５８ｃを出力装置５８としてのディスプレイに表示する。ユーザーインターフェイスＵＩ５８ｃは、出力窓Ｗ５０，Ｗ６１〜Ｗ６３，Ｗ７１〜Ｗ７３と、画像表示ＤＷ４と、ボタンＢ２７，Ｂ２８とを含む。
【０１６４】
画像表示ＤＷ４は、クリックされた実行可能候補点の姿勢を取ったときのロボット２０の状態を表す斜視図を示す。出力窓Ｗ５０は、選択された実行可能候補点を識別するための情報を示す。ここでは、便宜的に、「候補点１」という表示がなされている。
【０１６５】
出力窓Ｗ６１〜Ｗ６３は、選択された実行可能候補点のロボット座標系ＲＣにおけるＸ軸方向の位置、Ｙ軸方向の位置、Ｚ軸方向の位置を、それぞれ示す。出力窓Ｗ７１〜Ｗ７３は、選択された実行可能候補点のロボット座標系ＲＣにおけるＵ軸方向の角度位置、Ｖ軸方向の角度位置、Ｗ軸方向の角度位置を、それぞれ示す。図１６の例では、実行可能候補点Ｒ４−４−４が選択された場合の例を示している。ただし、図１６は、技術内容を説明するための図であり、図１６において、ＤＷ４に示されたロボット２０の姿勢と、出力窓Ｗ６１〜Ｗ３，Ｗ７１〜Ｗ７３に示された数値とは、必ずしも整合しない。
【０１６６】
ボタンＢ２８は、ユーザーインターフェイスＵＩ５８ａを介した実行可能候補点の選択の処理に戻るためのボタンである。ボタンＢ２８が押されると、処理は、ユーザーインターフェイスＵＩ５８ａを介した実行可能候補点の選択の処理に戻る。
【０１６７】
ボタンＢ２７は、実行可能候補点を、確定するためのボタンである。ボタンＢ２７が押されると、教示装置５０は、ステップＳ５２０，Ｓ５４０で入力された情報、ならびに選択された実行可能候補点の候補点情報を、対象動作を識別するための情報と対応づけて、ＲＡＭ５０ｂに格納する。さらに、教示装置５０は、ステップＳ１２０，Ｓ１４０で入力された情報、ならびに選択された実行可能候補点の候補点情報を、対象動作を識別するための情報とともに動作制御装置３０に出力する。動作制御装置３０は、両者を対応づけてＲＡＭ３０ｂに記憶する。動作制御装置３０は、保存されたそれらの情報に基づいて、後に、ロボット２０を制御することができる。
【０１６８】
このような態様としても、ロボット２０に力制御を行わせるにあたって、目標力の大きさと向きとによって規定される力制御を実行しうる地点を、ユーザーは、ユーザーインターフェイスＵＩ５８ａ（図１１参照）を介して、あらかじめ知ることができる。そして、ユーザーインターフェイスＵＩ５８ｃを介して、実行可能候補点の一つを、ロボット２０に実行させる力制御の設定値として、動作制御装置３０に保存することができる。
【０１６９】
（４）上記実施形態においては、図９のステップＳ５４０において、位置情報の一部として、姿勢を表す情報が入力され、力制御を実行しうる実行可能候補点が出力される（図１１参照）。しかし、ステップＳ５４０において、位置情報の一部として、Ｘ軸方向の位置ＤＸと、Ｙ軸方向の位置ＤＹと、Ｚ軸方向の位置ＤＺとを入力され、ステップＳ５８０において、その位置において力情報で指定される力制御が実行可能な姿勢の範囲が出力される態様とすることもできる。出力態様は、ユーザーインターフェイスＵＩ５８ｂのスライダー表示Ｓ１４〜Ｓ１６と同様とすることができる。そのような態様とすれば、ユーザーは、力制御を行うに当たって、特定の位置で取りうる姿勢の範囲を、あらかじめ知ることができる。
【０１７０】
Ｄ７．他の形態７：
（１）上記実施形態においては、力制御を実現できる位置を探すべき空間が直方体として指定される（図１０参照）。しかし、力制御を実現できる位置を探すべき空間は、ある点を中心とし、ある値の半径を有する球体の空間として指定されることもできる。また、力制御を実現できる位置を探すべき空間として、円柱や多角柱などの形状を指定されることもできる。さらには、それらの３次元形状を組み合わせた空間として、力制御を実現できる位置を探すべき空間が指定されることもできる。すなわち、受付部は、複数の候補点が含まれる空間を特定することができるパラメーターを受け付けるように構成されていればよい。
【０１７１】
（２）上記実施形態においては、図９のステップＳ５６０において、空間情報によって特定される直方体の空間Ｓｒの各辺を４等分する点と、それらの点を通る、ＸＹ平面に平行な面、ＹＺ平面に平行な面、およびＺＸ平面に平行な面の交点が、候補点として決定される。しかし、候補点は、他の方法で決定されることもできる。たとえば、上記の処理において、４等分に代えて３等分や、５等分、１０等分など、他の方法を採用することもできる。また、ユーザーによって指定された一定の間隔で空間を仕切る格子の交点を、候補点とすることもできる。さらに、ある基準点を中心とした極座標にしたがって、複数の候補点を決定することもできる。
【０１７２】
Ｅ．さらに他の形態：
適用例１：
本発明の一形態によれば、外部から加えられる力の大きさを検出する力検出部を備えるロボットの動作を制御するロボット制御装置が提供される。このロボット制御装置は：前記力検出部の出力に基づいて行われる力制御における目標力の大きさと、前記目標力の向きと、前記力制御を開始する位置と、前記力制御を開始する姿勢と、を受け付ける受付部と；前記ロボットが備える複数の関節に対応する複数の許容トルクの値を含む固有情報を記憶している記憶部と；前記目標力の大きさと、前記目標力の向きと、前記力制御を開始する位置と、前記力制御を開始する姿勢と、前記固有情報と、に基づいて、前記力制御を開始する位置および前記力制御を開始する姿勢において、前記目標力の大きさおよび前記目標力の向きで前記力制御を実行した場合に、前記複数の関節に生じる複数のトルクの値を算出する算出部と；前記複数のトルクの値が、それぞれ前記複数の許容トルクの値以下である場合、第１種の情報を出力し、前記複数のトルクの値のうち少なくとも１つが、対応する前記許容トルクの値を超える場合、第２種の情報を出力する出力制御部と、を備える。
このような態様においては、ロボットに力制御を行わせるにあたって、第１種の情報が出力されるか、第２種の情報が出力されるか、によって、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、力制御の開始位置と、力制御を開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを知ることができる。
【０１７３】
適用例２：
上記形態のロボット制御装置であって；前記受付部が、前記ロボットに取りつけられているエンドエフェクター、または、前記ロボットに処理される対象物に関する選択情報を受け付け；前記算出部は、前記選択情報に基づいて、前記複数のトルクの値を算出する、態様とすることができる。
このような態様においては、エンドエフェクターと対象物の構成に関する選択情報を利用して、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、力制御の開始位置と、力制御を開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを、より正確に知ることができる。
【０１７４】
適用例３：
上記形態のロボット制御装置であって；前記選択情報が、前記力制御において前記対象物を把持した場合の前記エンドエフェクターと前記対象物との相対位置の情報を含む、態様とすることができる。
このような態様においては、力制御において、対象物を把持した場合のエンドエフェクターと対象物との相対位置の情報を利用して、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを、より正確に知ることができる。
【０１７５】
適用例４：
上記形態のロボット制御装置であって；前記算出部が、前記受付部が受け付ける前記力制御における位置の範囲または前記力制御における姿勢の範囲に基づいて、前記複数のトルクの値を算出する、態様とすることができる。
このような態様においては、力制御における位置や姿勢の範囲を利用して、力制御の動作全体を通して関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができるか否かを、より正確に知ることができる。
【０１７６】
適用例５：
上記形態のロボット制御装置であって；前記第２種の情報が：前記目標力の大きさまたは前記目標力の向きと、前記力制御を開始する位置または前記力制御を開始する姿勢と、によって規定される力制御が実現不可能であることを示す情報、または；前記目標力の向きと、前記力制御を開始する位置または前記力制御を開始する姿勢と、によって規定される力制御において、実現可能な前記目標力の大きさを示す情報、を含む、態様とすることができる。
このような態様においては、力制御が実現不可能である旨の情報が出力された場合には、ユーザーは、ロボット制御装置に入力した目標力の大きさおよび向きと、開始位置と、開始するときの姿勢と、によって規定される力制御を、ロボットに実行させることができないことを知ることができる。
また、実現可能な目標力の大きさが出力された場合には、ユーザーは、ロボット制御装置に入力した目標力の向きと、開始位置と、開始するときの姿勢と、によって規定される力制御において、ロボットに実現させることができる力の大きさを知ることができる。
【０１７７】
適用例６：
本発明の一形態によれば、外部から加えられる力の大きさを検出する力検出部を備えるロボットの動作を制御するロボット制御装置が提供される。このロボット制御装置は：前記力検出部の出力に基づいて行われる力制御における目標力の大きさと、前記目標力の向きと、を受け付ける受付部と；前記ロボットが備える複数の関節に対応する複数の許容トルクの値を含む固有情報を記憶している記憶部と；前記目標力の大きさと、前記目標力の向きと、前記固有情報と、に基づいて、前記力制御を開始する位置の候補としての複数の候補点について、前記候補点から前記目標力の大きさおよび前記目標力の向きで力制御を開始した場合に、前記ロボットが備える前記複数の関節に生じる複数のトルクの値を算出する算出部と；前記複数の候補点のうち、前記複数のトルクの値が、それぞれ前記複数の許容トルクの値以下である候補点を出力する出力制御部と、を備える。
このような態様においては、ロボットに力制御を行わせるにあたって、目標力の大きさと向きとによって規定される力制御を実行しうる候補点を、ユーザーは、あらかじめ知ることができる。
【０１７８】
適用例７：
上記形態のロボット制御装置であって；前記受付部が、前記ロボットに取りつけられているエンドエフェクター、または、前記ロボットに処理される対象物の構成に関する選択情報を受け付け；前記算出部は、前記選択情報に基づいて、前記複数のトルクの値を算出する、態様とすることができる。
このような態様においては、エンドエフェクターと対象物の構成に関する選択情報を利用して、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、目標力の大きさと向きとによって規定される力制御を実行しうる位置を、より正確に知ることができる。
【０１７９】
適用例８：
上記形態のロボット制御装置であって；前記選択情報は、前記力制御において前記対象物を把持した場合の前記エンドエフェクターと前記対象物との相対位置の情報を含む、ロボット制御装置。
このような態様においては、力制御において、対象物を把持した場合のエンドエフェクターと対象物との相対位置の情報を利用して、より正確に、関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、目標力の大きさと向きとによって規定される力制御を実行しうる位置を、より正確に知ることができる。
【０１８０】
適用例９：
上記形態のロボット制御装置であって；前記算出部は、前記受付部が受け付ける前記力制御における位置の範囲または前記力制御における姿勢の範囲に基づいて、前記複数のトルクの値を算出する、態様とすることができる。
このような態様においては、力制御における位置や姿勢の範囲を利用して、力制御の動作全体を通して関節のそれぞれに生じるトルクの値を算出することができる。このため、ユーザーは、目標力の大きさと向きとによって規定される力制御を実行しうる位置を、より正確に知ることができる。
【０１８１】
適用例１０：
上記形態のロボット制御装置であって；前記受付部は、前記複数の候補点が含まれる空間の指定を受け付け；前記算出部は、前記空間内において前記複数の候補点を決定する、ロボット制御装置。
このような態様においては、複数の候補点が含まれる空間の指定を受け付けない態様に比べて、より少ない処理負荷で、関節に生じるトルクの値が許容トルクの値以下である位置を、決定することができる。
【０１８２】
適用例１１：
上記形態のロボット制御装置と；前記ロボット制御装置によって制御される前記ロボットと；を備えるロボットシステム。
【０１８３】
上述した本発明の各形態の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、適宜、前記複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行うことが可能である。また、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部または全部を上述した本発明の他の形態に含まれる技術的特徴の一部または全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【符号の説明】
【０１８４】
１…ロボットシステム、２０…ロボット、２１…力検出部、２５…ロボット制御装置、３０…動作制御装置、３０ａ…ＣＰＵ、３０ｂ…ＲＡＭ、３０ｃ…ＲＯＭ、５０…教示装置、５０ａ…ＣＰＵ、５０ｂ…ＲＡＭ、５０ｃ…ＲＯＭ、５２…出力制御部、５３…受付部、５４…設定部、５５…取得部、５６…算出部、５７…入力装置、５８…出力装置（ディスプレイ）、４００，４１０…パーソナルコンピューター、５００…クラウドサービス、Ａ…アーム、Ｂ…支持台、Ｂ０１，Ｂ０２，Ｂ０４〜Ｂ０６，Ｂ２１，Ｂ２２，Ｂ２４，Ｂ２５，Ｂ２７，Ｂ２８…ボタン、ＤＷ２，ＤＷ４…画像表示、Ｄａ…回転角度、Ｄｃ…制御量、Ｄｅ…偏差、Ｄｔ…目標角度、Ｅ…エンドエフェクター、Ｅ１〜Ｅ６…エンコーダー、ＥＤ…エラー表示、ＥＭ，ＥＭ２…エラーメッセージ、Ｉｃ…固有情報、Ｉｅ…エンドエフェクター情報、Ｉｆ…力情報、Ｉｐ…位置情報、Ｉｒ…範囲情報、Ｉｗ…ワーク情報、Ｊ１〜Ｊ６…関節、Ｋｐｄ…微分ゲイン、Ｋｐｉ…積分ゲイン、Ｋｐｐ…比例ゲイン、Ｋｖｄ…微分ゲイン、Ｋｖｉ…積分ゲイン、Ｋｖｐ…比例ゲイン、Ｌ１〜Ｌ５…リンク、Ｍ１〜Ｍ６…モーター、Ｐ１，Ｐ２…頂点、Ｒ０−０〜Ｒ７−６…候補点、Ｒ０−０−０〜Ｒ４−４−４…候補点、ＲＣ…ロボット座標系、Ｒｓ…代表点、ＲＸ…Ｘ軸周りの回転の角度位置、ＲＹ…Ｙ軸周りの回転の角度位置、ＲＺ…Ｚ軸周りの回転の角度位置、Ｓ…位置、ＳＭＶ…力制御の動作設定値、Ｓ１１〜Ｓ１６…スライダー表示、Ｓ１１０…スライダー、Ｓ１１１…実行可能範囲、Ｓ１１２…探索範囲、ＳＭＶ…動作設定値、Ｓｒ…力制御を実現できる位置を探すべき空間、Ｓｔ…目標位置、Ｕ…モーターＭ１〜Ｍ６の角度位置の組み合わせと、ロボット座標系ＲＣにおけるＴＣＰの位置との対応関係、ＵＩ１２，ＵＩ１８，ＵＩ５５，ＵＩ５８ａ〜ＵＩ５８ｃ…ユーザーインターフェイス、Ｗ…ワーク、Ｗ１１〜Ｗ１６，Ｗ２１〜Ｗ２６，Ｗ３１〜Ｗ３６，Ｗ４１〜Ｗ４６…入力窓、Ｗ５０，Ｗ６１〜Ｗ６３，Ｗ７１〜Ｗ７３…出力窓、ｄ…粘性パラメーター、ｆｉ…入力された目標力、ｆｐ１，ｆｐ２…可能力、ｆｓ…作用力、ｆｓｔ…目標力、ｋ…弾性パラメーター、ｍ…質量パラメーター、ΔＳ…力由来補正量、Δｆｓ…力偏差
【図１】
2019202381.tif 000004
【図２】
2019202381.tif 000005
【図３】
2019202381.tif 000006
【図４】
2019202381.tif 000007
【図５】
2019202381.tif 000008
【図６】
2019202381.tif 000009
【図７】
2019202381.tif 000010
【図８】
2019202381.tif 000011
【図９】
2019202381.tif 000012
【図１０】
2019202381.tif 000013
【図１１】
2019202381.tif 000014
【図１２】
2019202381.tif 000015
【図１３】
2019202381.tif 000016
【図１４】
2019202381.tif 000017
【図１５】
2019202381.tif 000018
【図１６】
2019202381.tif 000019