(57)【要約】【課題】ロボットに対する動作教示をより簡単にするのに有効なロボットシステムを提供する。【解決手段】ロボットシステム１は、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する教示位置取得部４１１と、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成する位置間引部４１４と、間引後位置データに基づいて位置指令を生成する位置指令生成部４１５と、位置指令に基づいて作業用のロボットを動作させる制御部２１２と、を備える。【選択図】図４
2020062721.tif 000002
【特許請求の範囲】
【請求項１】
作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する教示位置取得部と、
前記教示位置データから少なくとも一つの前記教示位置を間引いた間引後位置データを生成する位置間引部と、
前記間引後位置データに基づいて位置指令を生成する位置指令生成部と、
前記位置指令に基づいて作業用のロボットを動作させる制御部と、を備えるロボットシステム。
【請求項２】
前記位置間引部は、前記ロボットの動きへの影響が小さい前記教示位置を前記教示位置データから間引いて前記間引後位置データを生成する、請求項１記載のロボットシステム。
【請求項３】
前記作業者の実演データに基づいて、時系列に並ぶ複数の教示力を含む教示力データを取得する教示力取得部と、
前記教示力データから少なくとも一つの前記教示力を間引いた間引後力データを生成する力間引部と、
前記間引後力データに基づいて力指令を生成する力指令生成部と、を更に備え、
前記制御部は、前記位置指令と前記力指令とに基づいて前記ロボットを動作させる、請求項１記載のロボットシステム。
【請求項４】
前記力間引部は、前記ロボットが作業対象物に付与する力への影響が小さい前記教示力を前記教示力データから間引いて前記間引後力データを生成する、請求項３記載のロボットシステム。
【請求項５】
前記制御部が前記ロボットを動作させる際に、前記ロボットが作業対象物に付与する力の測定データを取得する測定データ取得部と、
前記測定データが前記教示力データに近付くように前記位置指令を修正する位置修正部と、を更に備える、請求項３又は４記載のロボットシステム。
【請求項６】
前記位置修正部は、前記測定データが前記教示力データに近付くように前記教示位置データを修正し、
前記位置間引部は、前記位置修正部による修正後の前記教示位置データから少なくとも一つの前記教示位置を間引いて前記間引後位置データを更新し、
前記位置指令生成部は、前記位置間引部により更新された前記間引後位置データに基づいて前記位置指令を更新する、請求項５記載のロボットシステム。
【請求項７】
前記測定データと前記教示力データとの乖離が許容条件を満たすまで、前記制御部による前記ロボットの動作と、前記測定データ取得部による前記測定データの取得と、前記位置修正部による前記位置指令の修正とを繰り返させる反復管理部を更に備える、請求項５又は６記載のロボットシステム。
【請求項８】
前記位置間引部は、前記教示位置が存在する場合の前記ロボットの動作と、当該教示位置が存在しない場合の前記ロボットの動作との差が大きい場合には当該教示位置が残るように前記間引後位置データを生成する、請求項２記載のロボットシステム。
【請求項９】
前記位置間引部は、前記教示位置と、当該教示位置の前後の教示位置同士を結ぶ基準ラインとの乖離の大きさに基づいて、当該教示位置を間引くか否かを決定する、請求項８記載のロボットシステム。
【請求項１０】
前記位置間引部は、前記教示位置データの少なくとも一部の時区間において、両端の教示位置を採用した後に、採用済の教示位置同士を結ぶ基準ラインを導出することと、前記基準ラインからの乖離の大きさに基づいて他の教示位置の採用可否を決定することとを所定条件が満たされるまで繰り返し、採用されなかった教示位置を間引いて前記間引後位置データを生成する、請求項９記載のロボットシステム。
【請求項１１】
作業対象物に力を付与する前におけるロボットの位置変動を縮小するように前記教示位置データを修正するフィルタ処理部を更に備え、
前記位置間引部は、前記フィルタ処理部による修正後の前記教示位置データから少なくとも一つの前記教示位置を間引いて前記間引後位置データを生成する、請求項１〜１０のいずれか一項記載のロボットシステム。
【請求項１２】
前記ロボットが作業対象物に付与する力を前記力指令に近付けるように、前記制御部による前記ロボットの制御目標位置を前記ロボットの動作中に修正する制御目標補正部を更に備える、請求項３〜７のいずれか一項記載のロボットシステム。
【請求項１３】
作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得することと、
前記教示位置データから少なくとも一つの前記教示位置を間引いた間引後位置データを生成することと、
前記間引後位置データに基づいて位置指令を生成することと、
前記位置指令に基づいて作業用のロボットを動作させることと、を含むロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットシステム及びロボット制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ダミー工具と、ダミー工具の三次元空間における座標位置と姿勢を検出する手段とを備え、教示したい位置に配置されたダミー工具の三次元空間における座標位置と姿勢を教示データとして記憶する教示装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１３８１８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ロボットに対する動作教示をより簡単にするのに有効なロボットシステムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るロボットシステムは、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する教示位置取得部と、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成する位置間引部と、間引後位置データに基づいて位置指令を生成する位置指令生成部と、位置指令に基づいて作業用のロボットを動作させる制御部と、を備える。
【０００６】
本開示の他の側面に係るロボット制御方法は、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得することと、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成することと、間引後位置データに基づいて位置指令を生成することと、位置指令に基づいて作業用のロボットを動作させることと、を含む。
【発明の効果】
【０００７】
本開示によれば、ロボットに対する動作教示をより簡単にするのに有効なロボットシステムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】ロボットシステムの構成を例示する模式図である。
【図２】垂直多関節ロボットの構成を例示する模式図である。
【図３】実演装置の構成を例示する模式図である。
【図４】教示用コンピュータ及びロボットコントローラの機能的構成を例示するブロック図である。
【図５】教示位置データを例示するグラフである。
【図６】間引き処理の具体的内容を例示するグラフである。
【図７】間引き処理の変形例を示すグラフである。
【図８】フィルタ処理の具体的内容を例示するグラフである。
【図９】教示用コンピュータ及びロボットコントローラのハードウェア構成を例示するブロック図である。
【図１０】動作教示手順を例示するフローチャートである。
【図１１】間引き処理手順を例示するフローチャートである。
【図１２】教示位置データの修正手順を例示するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１０】
〔ロボットシステム〕
本実施形態に係るロボットシステム１は、ワークＷに対して研磨作業を行うためのシステムである。なお、ロボットシステム１により実行する作業は研磨作業に限られない。ロボットシステム１は、予め教示した動作に従ってロボットを動作させる限り、ロボットにいかなる作業を実行させるものであってもよい。図１に示すように、ロボットシステム１は、ロボット装置２と動作教示装置３とを備える。
【００１１】
（ロボット装置）
ロボット装置２は、作業用のロボット１００と、ロボットコントローラ２００とを有する。ロボット１００は、ワークＷを研磨機４に押し付けることでワークＷの研磨作業を行う。ロボットコントローラ２００は、予め教示された動作に従ってワークＷに対する研磨作業を行うようにロボット１００を制御する。
【００１２】
図２に例示するように、ロボット１００は、６軸の垂直多関節ロボットであり、先端部１１０と、基部１２０と、基部１２０に対する先端部１１０の位置及び姿勢を変更する多関節アーム１３０とを備える。基部１２０は、ロボット１００の作業エリアにおいて例えば床面に設置されている。なお、基部１２０が台車等の可動部に設置される場合もある。多関節アーム１３０は、基部１２０と先端部１１０とを接続し、第一座標系Ｃ１（ロボット座標系）における先端部１１０の位置及び姿勢を変更する。ロボット座標系は、ロボット１００の制御の基準となる座標系であり、例えば基部１２０に固定された座標系である。
【００１３】
例えば多関節アーム１３０は、旋回部１３１と、第一アーム１３２と、第二アーム１３３と、手首部１３４と、アクチュエータ１５１，１５２，１５３，１５４，１５５，１５６とを有する。旋回部１３１は、鉛直な軸線Ａｘ１まわりに旋回可能となるように、基部１２０の上部に設けられている。すなわち多関節アーム１３０は、軸線Ａｘ１まわりに旋回部１３１を旋回可能とする関節１４１を有する。
【００１４】
第一アーム１３２は、軸線Ａｘ１に交差（例えば直交）する軸線Ａｘ２まわりに揺動可能となるように旋回部１３１に接続されている。すなわち多関節アーム１３０は、軸線Ａｘ２まわりに第一アーム１３２を揺動可能とする関節１４２を有する。なお、ここでの交差とは、所謂立体交差のように、互いにねじれの関係にある場合も含む。以下においても同様である。
【００１５】
第二アーム１３３は、軸線Ａｘ１に交差する軸線Ａｘ３まわりに揺動可能となるように、第一アーム１３２の端部に接続されている。すなわち多関節アーム１３０は、軸線Ａｘ３まわりに第二アーム１３３を揺動可能とする関節１４３を有する。軸線Ａｘ３は軸線Ａｘ２に平行であってもよい。
【００１６】
手首部１３４は、旋回アーム１３５及び揺動アーム１３６を有する。旋回アーム１３５は、第二アーム１３３の中心に沿って第二アーム１３３の端部から延出しており、第二アーム１３３の中心に沿う軸線Ａｘ４まわりに旋回可能である。すなわち多関節アーム１３０は、軸線Ａｘ４まわりに旋回アーム１３５を旋回可能とする関節１４４を有する。
【００１７】
揺動アーム１３６は、軸線Ａｘ４に交差（例えば直交）する軸線Ａｘ５まわりに揺動可能となるように旋回アーム１３５の端部に接続されている。すなわち多関節アーム１３０は、軸線Ａｘ５まわりに揺動アーム１３６を揺動可能とする関節１４５を有する。
【００１８】
先端部１１０は、揺動アーム１３６の中心に沿う軸線Ａｘ６まわりに旋回可能となるように、揺動アーム１３６の端部に接続されている。すなわち多関節アーム１３０は、軸線Ａｘ６まわりに先端部１１０を旋回可能とする関節１４６を有する。
【００１９】
アクチュエータ１５１，１５２，１５３，１５４，１５５，１５６は、例えば電動モータを動力源とし、多関節アーム１３０の複数の関節１４１，１４２，１４３，１４４，１４５，１４６をそれぞれ駆動する。例えばアクチュエータ１５１は、軸線Ａｘ１まわりに旋回部１３１を旋回させ、アクチュエータ１５２は軸線Ａｘ２まわりに第一アーム１３２を揺動させ、アクチュエータ１５３は軸線Ａｘ３まわりに第二アーム１３３を揺動させ、アクチュエータ１５４は軸線Ａｘ４まわりに旋回アーム１３５を旋回させ、アクチュエータ１５５は軸線Ａｘ５まわりに揺動アーム１３６を揺動させ、アクチュエータ１５６は軸線Ａｘ６まわりに先端部１１０を旋回させる。すなわちアクチュエータ１５１〜１５６は、関節１４１〜１４６をそれぞれ駆動する。
【００２０】
先端部１１０には、ハンド１６０が設けられている。ハンド１６０は、ワークＷ等の作業対象物を把持するためのツールであり、先端部１１０に設けられている。ハンド１６０は、本体１６１と、複数の指部１６２とを有する。複数の指部１６２は、作業対象物の配置領域を囲む（又は挟む）ように配置され、それぞれ本体１６１に接続されている。本体１６１は先端部１１０に装着され、例えば電動モータを駆動源として複数の指部１６２を駆動する。本体１６１は、作業対象物を把持する際に複数の指部１６２を互いに近付け、作業対象物を解放する際に複数の指部１６２を互いに遠ざける。なお、作業対象物はワークＷに限られない。ハンド１６０による作業対象物は、ワークＷに対し作業を行うためのツールであってもよい。
【００２１】
ハンド１６０は、力センサ１７０を介して先端部１１０に取り付けられている。力センサ１７０は、ハンド１６０に作用する力を検出する。例えば力センサ１７０は、互いに直交する三軸線に沿った力と、当該三軸線まわりのトルクと、の６種類の力を検出する６軸型の力センサである。
【００２２】
上述したロボット１００の構成はあくまで一例である。ロボット１００は、基部１２０に対する基部１２０の位置及び姿勢を多関節アーム１３０により変更する限りいかに構成されていてもよい。例えばロボット１００は、上記６軸の垂直多関節ロボットに冗長軸を追加した７軸のロボットであってもよい。
【００２３】
（動作教示装置）
図１に戻り、動作教示装置３は、実演装置３０と、教示用コンピュータ４００とを有する。実演装置３０は、実演ツール３１と、教示動作検出部３２とを有する。実演ツール３１は、ロボット１００に対し、実演による動作教示を行うためのツールである。例えば実演ツール３１は、教示対象の作業における作業対象物に取り付けられ、当該作業対象物と共に動いて位置及び姿勢の計測ターゲットとなる。
【００２４】
教示動作検出部３２は、上記第一座標系Ｃ１と異なる第二座標系Ｃ２における実演ツール３１の位置及び姿勢を検出する。例えば教示動作検出部３２は、実演ツール３１に接続され、実演ツール３１の位置及び姿勢に応じて動作する受動型の多関節アーム３３と、多関節アーム３３の姿勢を検出するセンサ３４とを有する。なお、教示動作検出部３２は、第二座標系Ｃ２における実演ツール３１の位置及び姿勢を検出する限りいかに構成されていてもよい。例えば教示動作検出部３２は、画像情報等に基づいて実演ツール３１の位置及び姿勢を非接触で検出するものであってもよい。
【００２５】
教示用コンピュータ４００は、実演により示される動作のデータを実演装置３０から取得し、取得したデータに基づいてロボット１００の動作指令を生成する。以下、実演ツール３１の位置及び姿勢を接触式で検出する場合の一例として、上述したアーム式の実演装置３０の構成をより詳細に説明する。
【００２６】
図３に示すように、実演装置３０は、デジタイザ３００と、実演作業ツール３６０とを有する。デジタイザ３００は、基部３１０と、先端部３２０と、多関節アーム３３０とを有する。基部３１０は、ロボット１００の作業エリアにおいて例えば床面に設置されている。なお、基部３１０は台車などの可動部に設置される場合もある。
【００２７】
多関節アーム３３０は、上記多関節アーム３３の一例である。多関節アーム３３０は、基部３１０と先端部３２０とを接続し、上記第二座標系Ｃ２（実演座標系）における先端部３２０の位置及び姿勢に応じて動作する。実演座標系は、実演ツール３１の位置及び姿勢の検出基準として予め設定された座標系であり、例えば基部３１０に固定された座標系である。
【００２８】
例えば多関節アーム３３０は、旋回部３３１と、第一アーム３３２と、第二アーム３３３と、手首部３３４と、角度センサ３５１，３５２，３５３，３５４，３５５，３５６とを有する。
【００２９】
旋回部３３１は、鉛直な軸線Ａｘ１１まわりに旋回可能となるように、基部３１０の上部に設けられている。すなわち多関節アーム３３０は、軸線Ａｘ１まわりに旋回部３３１を旋回可能とする関節３４１を有する。
【００３０】
第一アーム３３２は、軸線Ａｘ１１に交差（例えば直交）する軸線Ａｘ１２まわりに揺動可能となるように旋回部３３１に接続されている。すなわち多関節アーム３３０は、軸線Ａｘ１２まわりに第一アーム３３２を揺動可能とする関節３４２を有する。
【００３１】
第二アーム３３３は、軸線Ａｘ１１に交差する軸線Ａｘ１３まわりに揺動可能となるように、第一アーム３３２の端部に接続されている。すなわち多関節アーム３３０は、軸線Ａｘ１３まわりに第二アーム３３３を揺動可能とする関節３４３を有する。軸線Ａｘ１３は軸線Ａｘ１２に平行であってもよい。
【００３２】
手首部３３４は、旋回アーム３３５及び揺動アーム３３６を有する。旋回アーム３３５は、第二アーム３３３の中心に沿って第二アーム３３３の端部から延出しており、第二アーム３３３の中心に沿う軸線Ａｘ１４まわりに旋回可能である。すなわち多関節アーム３３０は、軸線Ａｘ１４まわりに旋回アーム３３５を旋回可能とする関節３４４を有する。
【００３３】
揺動アーム３３６は、軸線Ａｘ１４に交差（例えば直交）する軸線Ａｘ１５まわりに揺動可能となるように旋回アーム３３５の端部に接続されている。すなわち多関節アーム３３０は、軸線Ａｘ５まわりに揺動アーム３３６を揺動可能とする関節３４５を有する。
【００３４】
先端部３２０は、揺動アーム３３６の中心に沿う軸線Ａｘ１６まわりに旋回可能となるように、揺動アーム３３６の端部に接続されている。すなわち多関節アーム３３０は、軸線Ａｘ１６まわりに先端部３２０を旋回可能とする関節３４６を有する。
【００３５】
角度センサ３５１，３５２，３５３，３５４，３５５，３５６は、上記センサ３４の一例である。角度センサ３５１，３５２，３５３，３５４，３５５，３５６は、例えばロータリーエンコーダ又はポテンショメータ等の角度センサであり、多関節アーム３３０の複数の関節３４１，３４２，３４３，３４４，３４５，３４６の動作角度をそれぞれ検出する。例えば角度センサ３５１は、軸線Ａｘ１１まわりの旋回部１３１の旋回角度を検出し、角度センサ３５２は軸線Ａｘ１２まわりの第一アーム３３２の揺動角度を検出し、角度センサ３５３は軸線Ａｘ１３まわりの第二アーム３３３の揺動角度を検出し、角度センサ３５４は軸線Ａｘ１４まわりの旋回アーム３３５の旋回角度を検出し、角度センサ３５５は軸線Ａｘ１５まわりの揺動アーム３３６の揺動角度を検出し、角度センサ３５６は軸線Ａｘ１６まわりの先端部３２０の旋回角度を検出する。
【００３６】
実演作業ツール３６０は、先端部３２０に対して着脱可能なツールである。本構成において、上記実演ツール３１は、先端部３２０と、実演作業ツール３６０とを含む。
【００３７】
実演作業ツール３６０は、ワークＷ等の作業対象物を把持するためのツールである。例えば実演作業ツール３６０は、装着部３６１と、ハンド３６２と、力センサ３６３とを有する。装着部３６１は、先端部３２０に対して着脱される。ハンド３６２は、上記作業対象物を把持する部分である。ハンド３６２は、本体３６４と、複数の指部３６５とを有する。複数の指部３６５は、作業対象物の配置領域を囲む（又は挟む）ように配置され、それぞれ本体３６４に接続されている。本体３６４は、例えば作業者の手動操作によって複数の指部３６５を動かす。本体３６４は、作業対象物を把持する際に複数の指部３６５を互いに近付け、作業対象物を解放する際に複数の指部３６５を互いに遠ざける。なお、作業対象物はワークＷに限られない。実演作業ツール３６０による作業対象物は、ワークＷに対し作業を行うためのツールであってもよい。
【００３８】
ハンド３６２は、力センサ３６３を介して装着部３６１に取り付けられている。力センサ３６３は、実演ツール３１に作用する力の一例として、ハンド３６２に作用する力を検出する。例えば力センサ３６３は、互いに直交する三軸線に沿った力と、当該三軸線まわりのトルクと、の６種類の力を検出する６軸型の力センサである。
【００３９】
（教示用コンピュータ）
続いて、教示用コンピュータ４００の構成を詳細に例示する。教示用コンピュータ４００は、作業者の実演データに基づいてロボット１００の動作指令を生成する。作業者の実演データは、作業者の実演作業中に取得されるデータであり、少なくとも実演作業中における実演ツール３１の位置及び姿勢に関するデータを含む。動作指令は、少なくとも位置指令を含む。位置指令は、時系列に並ぶ複数の目標位置に先端部１１０を順次追従させる指令であり、複数の目標位置にそれぞれ対応する複数の移動命令を含む。目標位置は、先端部１１０の位置の目標値と、先端部１１０の姿勢の目標値とを含む。
【００４０】
例えば教示用コンピュータ４００は、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得することと、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成することと、間引後位置データに基づいて位置指令を生成することと、を実行するように構成されている。
【００４１】
作業者の実演データは、実演作業中に実演ツール３１に作用する力に関するデータを更に含んでもよく、動作指令は、力指令を含んでもよい。力指令は、ロボット１００が作業対象物に付与する力を時系列に並ぶ複数の目標作業力に順次追従させる指令であり、複数の目標作業力にそれぞれ対応する複数の力付与命令を含む。教示用コンピュータ４００は、作業者の実演データに基づいて、時系列に並ぶ複数の教示力を含む教示力データを取得することと、教示力データから少なくとも一つの教示力を間引いた間引後力データを生成することと、間引後力データに基づいて力指令を生成することと、を更に実行するように構成されていてもよい。
【００４２】
例えば教示用コンピュータ４００は、機能上の構成（以下、「機能モジュール」という。）として、教示位置取得部４１１と、教示力取得部４１２と、教示データ保持部４１３と、位置間引部４１４と、位置指令生成部４１５と、力間引部４１６と、力指令生成部４１７と、指令保持部４１８と、指令登録部４１９とを備える。
【００４３】
教示位置取得部４１１は、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する。教示位置は、先端部１１０の目標位置を定める情報である限り、いかなる情報であってもよい。例えば教示位置は、先端部１１０の目標位置を直接定める情報（すなわち、先端部１１０の目標位置自体）であってもよいし、先端部１１０の目標位置を間接的に定める情報であってもよい。
【００４４】
例えば教示位置取得部４１１は、作業者の実演データの一例として、実演ツール３１を用いた実演作業中に、多関節アーム３３０の関節３４１，３４２，３４３，３４４，３４５，３４６の動作角度の情報を角度センサ３５１，３５２，３５３，３５４，３５５，３５６からそれぞれ取得する。更に教示位置取得部４１１は、多関節アーム３３０の関節３４１，３４２，３４３，３４４，３４５，３４６の動作角度に基づく順運動学演算により、第二座標系Ｃ２における実演ツール３１の位置及び姿勢を算出する。第二座標系Ｃ２における実演ツール３１の位置及び姿勢に基づけば、第二座標系Ｃ２から第一座標系Ｃ１への座標変換を含む演算により、先端部１１０の目標位置が定まる。従って、第二座標系Ｃ２における実演ツール３１の位置及び姿勢は、上記教示位置の一例に相当する。
【００４５】
教示位置取得部４１１は、関節３４１，３４２，３４３，３４４，３４５，３４６の動作角度の情報の取得と、第二座標系Ｃ２における実演ツール３１の位置及び姿勢の算出とを、実演作業中に周期的に繰り返すことによって、時系列に並ぶ複数の教示位置を含む教示位置データを得る。
【００４６】
教示力取得部４１２は、作業者の実演データに基づいて、時系列に並ぶ複数の教示力を含む教示力データを取得する。教示力は、先端部１１０の目標作業力（先端部１１０が作業対象物に付与する力の目標値）を定める情報である限り、いかなる情報であってもよい。例えば教示力は、先端部１１０の目標作業力を直接定める情報（すなわち、先端部１１０の目標作業力自体）であってもよいし、先端部１１０の目標作業力を間接的に定める情報であってもよい。例えば教示力取得部４１２は、作業者の実演データの一例として、実演ツール３１を用いた実演作業中に、実演ツール３１に作用する力の情報を力センサ３６３から取得する。実演ツール３１に作用する力に基づけば、先端部１１０が作業対象物に付与すべき力（すなわち上記目標作業力）が定まる。従って、実演ツール３１に作用する力は、上記教示力の一例に相当する。教示力取得部４１２は、実演ツール３１に作用する力の情報の取得と、先端部１１０の目標作業力の算出とを、実演作業中に周期的に繰り返すことによって、時系列に並ぶ複数の教示力を含む教示力データを得る。
【００４７】
教示データ保持部４１３は、教示位置取得部４１１により取得された教示位置データと、教示力取得部４１２により取得された教示力データとを記憶する。
【００４８】
位置間引部４１４は、教示データ保持部４１３が記憶する教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成する。例えば位置間引部４１４は、ロボット１００の動きへの影響が小さい教示位置を教示位置データから間引いて間引後位置データを生成する。
【００４９】
ロボット１００の動きへの影響に基づく間引き処理の一例として、位置間引部４１４は、教示位置が存在する場合のロボット１００の動作と、当該教示位置が存在しない場合のロボット１００の動作との差が大きい場合には当該教示位置が残るように間引後位置データを生成してもよい。
【００５０】
教示位置が存在する場合のロボット１００の動作と、当該教示位置が存在しない場合のロボット１００の動作との差を示す数値の一例として、位置間引部４１４は、教示位置と、当該教示位置の前後の教示位置同士を結ぶ基準ラインとの乖離を算出し、当該乖離の大きさに基づいて当該教示位置を間引くか否かを決定してもよい。
【００５１】
例えば位置間引部４１４は、教示位置データの少なくとも一部の時区間において、両端の教示位置を採用した後に、採用済の教示位置同士を結ぶ基準ラインを導出することと、基準ラインからの乖離の大きさに基づいて他の教示位置の採用可否を決定することとを所定条件が満たされるまで繰り返し、採用されなかった教示位置を間引いて間引後位置データを生成する。上記所定条件（以下、「繰り返し完了条件」という。）の具体例としては、採用済の教示位置の数が上限値に達すること等が挙げられる。上限値は、例えばロボットコントローラ２００に登録可能な移動命令の数等に基づいて設定される。なお、一つの教示位置は、複数の数値要素（例えば座標軸ごとの位置及び姿勢角度）を含む場合がある。この場合、位置間引部４１４は、数値要素ごとの上記乖離を合計して教示位置と基準ラインとの乖離を算出してもよい。
【００５２】
図５は、教示位置データを例示するグラフである。図６は、間引き処理の具体的内容を例示するグラフである。図５及び図６のグラフの横軸は、経過時間を示し、縦軸は教示位置の値を示している。図５及び図６に例示する教示位置データは、２６個の教示位置Ｐ０１〜Ｐ２６を含んでいる。図６において、白丸は未採用の教示位置を示し、黒丸は採用済の教示位置を示している。
【００５３】
まず、位置間引部４１４は、教示位置データの少なくとも一部の時区間（例えば全時区間）において、両端の教示位置Ｐ０１，Ｐ２６を採用する（図６の（ａ）参照）。次に、位置間引部４１４は、教示位置Ｐ０１，Ｐ２６を結ぶ基準ラインＢＬ０１を導出し、基準ラインＢＬ０１からの乖離が最大の教示位置Ｐ０６を採用する（図６の（ｂ）参照）。次に、位置間引部４１４は、採用済の教示位置Ｐ０１，Ｐ０６，Ｐ２６同士を結ぶ基準ラインＢＬ０２を導出し、基準ラインＢＬ０２からの乖離が最大の教示位置Ｐ１５を採用する（図６の（ｃ）参照）。次に、位置間引部４１４は、採用済の教示位置Ｐ０１，Ｐ０６，Ｐ１５，Ｐ２６同士を結ぶ基準ラインＢＬ０３を導出し、基準ラインＢＬ０３からの乖離が最大の教示位置Ｐ２０を採用する（図６の（ｄ）参照）。位置間引部４１４は、採用済の教示位置の数が上限値（例えば１０個）に達するまで繰り返す。これにより、１０個の教示位置Ｐ０１，Ｐ０４，Ｐ０６，Ｐ０７，Ｐ１５，Ｐ１７，Ｐ２０，Ｐ２２，Ｐ２４，Ｐ２６が採用される（図６の（ｅ）参照）。その後、位置間引部４１４は、採用されなかった教示位置Ｐ０２，Ｐ０３，Ｐ０５，Ｐ０８，Ｐ０９，Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１６，Ｐ１８，Ｐ１９，Ｐ２１，Ｐ２３，Ｐ２５を間引く（図６の（ｆ）参照）。以上で教示位置データの間引き処理が完了する。
【００５４】
以上の手順において、採用数が上限値に達するまでに採用されなかった教示位置は、採用された教示位置に比較して基準ラインからの乖離が相対的に小さい。基準ラインからの乖離の大きさは、ロボットの動きへの影響の大きさに相関する。すなわち、以上の手順によれば、ロボットの動きへの影響が比較的小さい教示位置が間引かれている。このため、全ての教示位置Ｐ０１〜Ｐ２６を結ぶ移動軌跡ＰＴ０１と、間引き後の教示位置Ｐ０１，Ｐ０４，Ｐ０６，Ｐ０７，Ｐ１５，Ｐ１７，Ｐ２０，Ｐ２２，Ｐ２４，Ｐ２６を結ぶ移動軌跡ＰＴ０２との乖離が小さく抑えられている。
【００５５】
上記繰り返し完了条件は、採用済の教示位置の数が上限値に達することに限られない。例えば位置間引部４１４は、基準ラインからの乖離が所定の閾値を超える教示位置がなくなることを繰り返し完了条件としてもよい。この場合、採用済の教示位置の数が上限値を超えてしまう可能性がある。採用済の教示位置の数が上限値を超えてしまう場合には、乖離の閾値の値を修正する等の手法により、採用済の教示位置の数を調節することが可能である。
【００５６】
また、教示位置と、当該教示位置の前後の教示位置同士を結ぶ基準ラインとの乖離の大きさに基づく手法は、図６に例示する手法に限られない。図７は、教示位置と、当該教示位置の前後の教示位置同士を結ぶ基準ラインとの乖離の大きさに基づく手法の変形例を示すグラフである。図７の手法においては、両端の教示位置Ｐ０１，Ｐ２６を除く教示位置Ｐ０２〜Ｐ２５のそれぞれの採用可否が、一つ前の教示位置及び一つ後の教示位置を基準にして判定される。
【００５７】
まず、位置間引部４１４は、教示位置Ｐ０１，Ｐ０３を結ぶ基準ラインＢＬ１１からの乖離の大きさに基づいて教示位置Ｐ０２の採用可否を判定する（図７の（ａ）参照）。基準ラインＢＬ１１からの乖離が閾値より小さい場合、教示位置Ｐ０２は間引かれる。次に、位置間引部４１４は、教示位置Ｐ０１，Ｐ０４を結ぶ基準ラインＢＬ１２からの乖離の大きさに基づいて教示位置Ｐ０３の採用可否を判定する（図７の（ｂ）参照）。基準ラインＢＬ１２からの乖離が閾値より小さい場合、教示位置Ｐ０３は間引かれる。次に、位置間引部４１４は、教示位置Ｐ０１，Ｐ０５を結ぶ基準ラインＢＬ１３からの乖離の大きさに基づいて教示位置Ｐ０４の採用可否を判定する（図７の（ｃ）参照）。基準ラインＢＬ１３からの乖離が閾値より大きい場合、教示位置Ｐ０４は採用される。次に、位置間引部４１４は、教示位置Ｐ０４，Ｐ０６を結ぶ基準ラインＢＬ１４からの乖離の大きさに基づいて教示位置Ｐ０５の採用可否を判定する（図７の（ｄ）参照）。基準ラインＢＬ１４からの乖離が閾値より小さい場合、教示位置Ｐ０５は間引かれる。次に、位置間引部４１４は、教示位置Ｐ０４，Ｐ０７を結ぶ基準ラインＢＬ１５からの乖離の大きさに基づいて教示位置Ｐ０６の採用可否を判定する（図７の（ｅ）参照）。基準ラインＢＬ１５からの乖離が閾値より大きい場合、教示位置Ｐ０６は採用される。位置間引部４１４は、以上の処理を教示位置Ｐ２５の採用可否判定まで繰り返す。これにより、１０個の教示位置Ｐ０１，Ｐ０４，Ｐ０６，Ｐ０７，Ｐ１５，Ｐ１７，Ｐ２０，Ｐ２２，Ｐ２４，Ｐ２６が採用される（図７の（ｆ）参照）。
【００５８】
以上の手順においても、採用されなかった教示位置は、採用された教示位置に比較して基準ラインからの乖離が相対的に小さい。すなわち、以上の手順によっても、ロボットの動きへの影響が比較的小さい教示位置が間引かれている。このため、全ての教示位置Ｐ０１〜Ｐ２６を結ぶ移動軌跡ＰＴ０１と、間引き後の教示位置Ｐ０１，Ｐ０４，Ｐ０６，Ｐ０７，Ｐ１５，Ｐ１７，Ｐ２０，Ｐ２２，Ｐ２４，Ｐ２６を結ぶ移動軌跡ＰＴ０２との乖離が小さく抑えられている。
【００５９】
図４に戻り、位置指令生成部４１５は、間引後位置データに基づいて位置指令を生成する。例えば位置指令生成部４１５は、間引後位置データが含む複数の教示位置に対し、第二座標系Ｃ２から第一座標系Ｃ１への座標変換を含む演算を施して複数の目標位置を算出し、複数の目標位置にそれぞれ対応する複数の移動命令を生成する。
【００６０】
なお、実演作業時に作業対象物が配置される位置及び姿勢（以下、「実演位置」という。）と、実演作業に対応するロボット１００の動作時に作業対象物が配置される位置及び姿勢（以下、「再生位置」という。）とが異なる場合もある。このような場合であっても、第二座標系Ｃ２における実演位置の座標データと、第一座標系Ｃ１における再生位置の座標データとの関係が既知であれば、複数の教示位置に基づき複数の目標位置を算出することが可能である。
【００６１】
力間引部４１６は、教示データ保持部４１３が記憶する教示力データから少なくとも一つの教示力を間引いた間引後位置データを生成する。力間引部４１６による教示力の間引き処理には、位置間引部４１４による教示位置の間引き処理と同様の手法を適用可能である。例えば力間引部４１６は、ロボット１００が作業対象物に付与する力（以下、「作業力」という。）への影響が小さい教示力を教示力データから間引いて間引後力データを生成する。
【００６２】
作業力への影響に基づく間引き処理の一例として、力間引部４１６は、教示力が存在する場合のロボット１００の作業力と、当該教示力が存在しない場合のロボット１００の作業力との差が大きい場合には当該教示力が残るように間引後力データを生成してもよい。教示力が存在する場合のロボット１００の作業力と、当該教示力が存在しない場合のロボット１００の作業力との差を示す数値の一例として、力間引部４１６は、教示力と、当該教示力の前後の教示力同士を結ぶ基準ラインとの乖離を算出し、当該乖離の大きさに基づいて当該教示力を間引くか否かを決定してもよい。
【００６３】
例えば力間引部４１６は、教示力データの少なくとも一部の時区間において、両端の教示力を採用した後に、採用済の教示力同士を結ぶ基準ラインを導出することと、基準ラインからの乖離の大きさに基づいて他の教示力の採用可否を決定することとを所定条件が満たされるまで繰り返し、採用されなかった教示力を間引いて間引後力データを生成する。上記所定条件（以下、「繰り返し完了条件」という。）の具体例としては、採用済の教示力の数が上限値に達すること等が挙げられる。上限値は、例えばロボットコントローラ２００に登録可能な力付与命令の数等に基づいて設定される。
【００６４】
なお、一つの教示力は、複数の数値要素（例えば座標軸ごとの力成分）を含む場合がある。この場合、力間引部４１６は、数値要素ごとの上記乖離を合計して教示力と基準ラインとの乖離を算出してもよい。
【００６５】
力指令生成部４１７は、間引後力データに基づいて力指令を生成する。例えば力指令生成部４１７は、間引後力データが含む複数の教示力に基づいて複数の目標作業力を算出し、複数の目標位置にそれぞれ対応する複数の力付与命令を生成する。指令保持部４１８は、位置指令生成部４１５により生成された位置指令及び力指令生成部４１７により生成された力指令を記憶する。指令登録部４１９は、指令保持部４１８が記憶する位置指令及び力指令をロボットコントローラ２００に登録する。
【００６６】
教示用コンピュータ４００は、測定データ取得部４２１と、位置修正部４２２と、反復管理部４２３とを更に有してもよい。測定データ取得部４２１は、ロボットコントローラ２００がロボット１００を動作させる際に、ロボット１００が作業対象物に付与する力の測定データを取得する。例えば、測定データ取得部４２１は、力センサ１７０による測定データをロボットコントローラ２００から取得する。
【００６７】
位置修正部４２２は、測定データ取得部４２１が取得した測定データが上記教示力データに近付くように位置指令を修正する。例えば位置修正部４２２は、位置指令及び力指令に基づいてロボット１００を動作させることをロボットコントローラ２００に要求する。これに応じロボットコントローラ２００がロボット１００を動作させ、その間の測定データを測定データ取得部４２１がロボットコントローラ２００から取得する。位置修正部４２２は、当該測定データが上記教示力データに近付くように位置指令を修正する。
【００６８】
例えば位置修正部４２２は、ロボット１００の動作開始時を基準とする複数時点において、当該測定データと教示力データとの偏差を算出し、各時点の偏差を縮小するように位置指令を修正する。例えば位置修正部４２２は、当該測定データと教示力データとの偏差に比例演算、比例・積分演算、又は比例・積分・微分演算等を施して位置指令の修正量を算出する。
【００６９】
なお、位置修正部４２２は、測定データと教示力データとの偏差に代えて、測定データと間引後力データとの偏差に基づいて位置指令を修正してもよい。上述のとおり、間引後力データは、間引き前後の力推移の乖離を抑制するように生成されているので、測定データと間引後力データとの偏差に基づいたとしても、結果的に測定データが教示力データに近付くこととなる。
【００７０】
位置修正部４２２は、位置指令の修正の一例として、測定データが教示力データに近付くように教示位置データを修正してもよい。この場合、教示位置データの修正に応じて位置指令が修正されるように、位置間引部４１４は、位置修正部４２２による修正後の教示位置データから少なくとも一つの教示位置を間引いて間引後位置データを更新する。
【００７１】
位置指令生成部４１５は、位置間引部４１４により更新された間引後位置データに基づいて位置指令を更新する。ここでの更新は、古いデータを新たなデータに置き換えることを含む。また、ここでの置き換えは、古いデータを新たなデータで上書きすることを含む。
【００７２】
なお、位置修正部４２２は、教示位置データに代えて間引後位置データを修正してもよい。この場合、教示位置が存在しない時間における位置の修正が必要となる場合がある。そして、教示位置が存在しない時間における位置の修正を行うと、結果的に間引後位置データが含む教示位置の数が増加する場合がある。そこで、位置修正部４２２が間引後位置データを修正する場合、位置間引部４１４は、位置修正部４２２による修正後の間引後位置データから少なくとも一つの教示位置を間引いて間引後位置データを更新してもよい。位置指令生成部４１５は、位置間引部４１４により更新された間引後位置データに基づいて位置指令を更新してもよい。
【００７３】
反復管理部４２３は、測定データと教示力データとの乖離が許容条件を満たすまで、ロボットコントローラ２００の制御部２１２（後述）によるロボット１００の動作と、測定データ取得部４２１による測定データの取得と、位置修正部４２２による位置指令の修正とを繰り返させる。許容条件の具体例としては、上記複数時点における測定データと教示力データとの偏差の絶対値の総和が所定の許容値以下であること、上記複数時点における測定データと教示力データとの偏差の二乗の総和が所定の許容値以下であること等が挙げられる。ロボット１００の動作、測定データの取得及び位置指令の修正を反復管理部４２３が繰り返させることにより、測定データが許容条件を満たす範囲内に収束することとなる。例えば、位置修正部４２２が教示位置データの修正を繰り返す場合には、教示データ保持部４１３が記憶する教示位置データに位置修正部４２２による修正結果が蓄積され、測定データが許容条件を満たす値に収束する。
【００７４】
教示用コンピュータ４００は、フィルタ処理部４２４を更に有してもよい。フィルタ処理部４２４は、作業対象物に力を付与する前におけるロボット１００の位置変動（例えば先端部１１０の位置変動）を縮小するように教示位置データを修正する。例えばフィルタ処理部４２４は、作業対象物に力を付与する前における教示位置に、ローパス型のフィルタリングを施して教示位置データを修正する。ローパス型のフィルタリングの具体例としては、有限インパルス応答方式のフィルタリングが挙げられる。
【００７５】
図８は、フィルタ処理の具体的内容を例示するグラフである。図８の横軸は、経過時間を示している。図８の（ａ）の縦軸は教示位置の値を示している。図８の（ｂ）の縦軸は教示力の値を示している。図８の（ａ）の実線は、フィルタ処理前の教示位置データを示し、図８の（ａ）の破線はフィルタ処理後の教示位置データを示している。
【００７６】
図８では、時刻ｔ０２以降に教示力が上昇していることから、時刻ｔ０２において力の付与の開始が想定される。力の付与後にはフィルタ処理を適用しないように、フィルタ処理部４２４は、時刻ｔ０２よりも所定時間前の時刻ｔ０１を基準とし、時刻ｔ０１以前の教示位置データにフィルタ処理を施し、時刻ｔ０１以後の教示位置データにはフィルタ処理を施していない。これにより、時刻ｔ０１以前においては、作業者の手振れ等に起因する教示位置の変動が縮小されている。
【００７７】
（ロボットコントローラ）
ロボットコントローラ２００は、機能モジュールとして、指令保持部２１１と、制御部２１２と、測定データ取得部２１３と、測定データ保持部２１４とを有する。
【００７８】
指令保持部２１１は、教示用コンピュータ４００の指令登録部４１９により登録された位置指令及び力指令を記憶する。制御部２１２は、少なくとも、指令保持部２１１が記憶する位置指令に基づいてロボット１００を動作させる。例えば制御部２１２は、位置指令に基づいて先端部１１０の目標位置を算出することと、先端部１１０の目標位置に対応する関節１４１，１４２，１４３，１４４，１４５，１４６の目標角度を算出することと、関節１４１，１４２，１４３，１４４，１４５，１４６の角度を目標角度に追従させるための駆動電力をアクチュエータ１５１，１５２，１５３，１５４，１５５，１５６に出力することとを所定の制御周期で繰り返す。
【００７９】
測定データ取得部２１３は、制御部２１２がロボット１００を動作させる際に、ロボット１００が作業対象物に付与する力の測定データを力センサ１７０から取得する。例えば測定データ取得部２１３は、上記制御周期ごとに力センサ１７０から測定データを取得する。
【００８０】
測定データ保持部２１４は、ロボット１００の動作中に測定データ取得部２１３が取得した測定データを時系列で記憶する。上記測定データ取得部４２１は、例えば測定データ保持部２１４から測定データを取得する。
【００８１】
ロボットコントローラ２００は、制御目標補正部２１５を更に有してもよい。制御目標補正部２１５は、ロボット１００が作業対象物に付与する力を力指令に近付けるように、制御部２１２によるロボット１００の制御目標位置をロボット１００の動作中に修正する。
【００８２】
例えば制御目標補正部２１５は、力センサ１７０による測定データと力指令との偏差を縮小するように、先端部１１０の位置及び姿勢の修正量（以下、「目標位置修正量」という。）を制御周期ごとに算出し、目標位置修正量を次の制御周期の目標位置に加算する。例えば制御目標補正部２１５は、力センサ１７０による測定データが力指令よりも大きい場合には力を弱める方向に目標位置修正量を算出し、力センサ１７０による測定データが力指令よりも小さい場合には力を強める方向に目標位置修正量を算出する。より具体的に、制御目標補正部２１５は、力センサ１７０による測定データと力指令との偏差に比例演算、比例・積分演算、又は比例・積分・微分演算等を施して目標位置修正量を算出する。制御目標補正部２１５に従うことにより、制御部２１２は、指令保持部２１１が記憶する位置指令と力指令との両方に基づいてロボット１００を動作させることとなる。
【００８３】
（教示用コンピュータ及びロボットコントローラのハードウェア構成）
図９に示すように、教示用コンピュータ４００は、本体４８１と、表示デバイス４８２及び入力デバイス４８３と、を備える。表示デバイス４８２及び入力デバイス４８３は、教示用コンピュータ４００のユーザインタフェースとして機能する。表示デバイス４８２は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス４８３は、例えばフットスイッチ又はキーボード等であり、ユーザによる入力情報を取得する。表示デバイス４８２及び入力デバイス４８３は、所謂タッチパネルのように一体化されていてもよい。
【００８４】
本体４８１は、回路４９０を含む。回路４９０は、少なくとも一つのプロセッサ４９１と、メモリ４９２と、ストレージ４９３と、入出力ポート４９４と、通信ポート４９５とを含む。ストレージ４９３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばフラッシュメモリ）である。
【００８５】
ストレージ４９３は、実演ツール３１に設けられたツール指標部が第一座標系Ｃ１における複数の位置に配置された状態にて教示動作検出部３２が検出する位置及び姿勢の情報を含む基準情報を取得することと、基準情報に基づいて、第一座標系Ｃ１と第二座標系Ｃ２との関係を示す座標関係情報を導出することと、実演ツール３１を用いた実演作業中に教示動作検出部３２が検出する位置及び姿勢の推移を示す情報を含む実演動作情報を取得することと、実演動作情報と座標関係情報とに基づいて先端部１１０の動作指令を生成することと、を含む動作教示方法を教示用コンピュータに実行させるためのプログラムを記憶する。例えばストレージ４９３は、上述の機能モジュールを構成するための記憶領域と、教示データ保持部４１３及び指令保持部４１８に割り当てられる記憶領域とを含む。
【００８６】
メモリ４９２は、ストレージ４９３からロードしたプログラム及びプロセッサ４９１による演算結果等を一時的に記憶する。プロセッサ４９１は、メモリ４９２と協働して上記プログラムを実行することで、教示用コンピュータ４００の各機能モジュールを構成する。入出力ポート４９４は、プロセッサ４９１からの指令に応じて角度センサ３５１，３５２，３５３，３５４，３５５，３５６、力センサ３６３及び入力デバイス４８３からの信号を取得し、また、表示デバイス４８２へ信号を出力する。通信ポート４９５は、プロセッサ２９１からの指令に応じ、ロボットコントローラ２００との間でネットワーク通信を行う。
【００８７】
ロボットコントローラ２００は、回路２９０を備える。回路２９０は、少なくとも一つのプロセッサ２９１と、メモリ２９２と、ストレージ２９３と、入出力ポート２９４と、ドライバ２９５と、通信ポート２９６とを含む。ストレージ２９３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばフラッシュメモリ）である。ストレージ２９３は、上述の機能モジュールを構成するための記憶領域と、指令保持部２１１及び測定データ保持部２１４に割り当てられる記憶領域を含む。
【００８８】
メモリ２９２は、ストレージ２９３からロードしたプログラム及びプロセッサ２９１による演算結果等を一時的に記憶する。プロセッサ２９１は、メモリ２９２と協働して上記プログラムを実行することで、ロボットコントローラ２００の各機能モジュールを構成する。入出力ポート２９４は、プロセッサ２９１からの指令に応じて力センサ１７０からの信号を取得する。ドライバ２９５は、プロセッサ２９１からの指令に応じてアクチュエータ１５１，１５２，１５３，１５４，１５５，１５６に駆動電力を出力する。通信ポート２９６は、プロセッサ２９１からの指令に応じ、教示用コンピュータ４００との間でネットワーク通信を行う。
【００８９】
〔動作教示手順〕
続いて、動作教示方法の一例として、ロボットシステム１が実行する動作教示手順を例示する。この手順は、作業者の実演データに基づいて教示位置データを取得することと、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成することと、間引後位置データに基づいて位置指令を生成することと、位置指令に基づいて作業用のロボットを動作させることと、を含む。この手順は、作業者の実演データに基づいて教示力データを取得することと、教示力データから少なくとも一つの教示力を間引いた間引後力データを生成することと、間引後力データに基づいて力指令を生成することと、を更に含み、位置指令と力指令とに基づいて作業用のロボットを動作させてもよい。
【００９０】
図１０に示すように、教示用コンピュータ４００は、まずステップＳ０１，Ｓ０２を実行する。ステップＳ０１では、教示位置取得部４１１が、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する。また、ステップＳ０１では、教示力取得部４１２が、作業者の実演データに基づいて、時系列に並ぶ複数の教示力を含む教示力データを取得する。ステップＳ０２では、フィルタ処理部４２４が、作業対象物に力を付与する前におけるロボット１００の位置変動（例えば先端部１１０の位置変動）を縮小するように教示位置データを修正する。
【００９１】
次に、教示用コンピュータ４００は、ステップＳ０３を実行する。ステップＳ０３では、位置間引部４１４が、教示データ保持部４１３が記憶する教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成し、指令保持部４１８に保存する。また、ステップＳ０３では、力間引部４１６が、教示データ保持部４１３が記憶する教示力データから少なくとも一つの教示力を間引いた間引後位置データを生成し、指令保持部４１８に保存する。ステップＳ０３の処理手順については、後に詳細に例示する。
【００９２】
次に、教示用コンピュータ４００は、ステップＳ０４，Ｓ０５を実行する。ステップＳ０４では、位置指令生成部４１５が、間引後位置データに基づいて位置指令を生成し、指令保持部４１８に保存する。また、ステップＳ０４では、力指令生成部４１７が、間引後力データに基づいて力指令を生成し、指令保持部４１８に保存する。ステップＳ０５では、指令登録部４１９が、指令保持部４１８が記憶する位置指令及び力指令をロボットコントローラ２００に登録する。
【００９３】
次に、教示用コンピュータ４００は、ステップＳ０６を実行する。ステップＳ０６では、位置修正部４２２が、ロボットコントローラ２００の制御部２１２に、位置指令に従った動作制御を要求する。制御部２１２は、指令保持部２１１が記憶する位置指令に基づいてアクチュエータ１５１〜１５６を動作させる。この際に、制御目標補正部２１５が、ロボット１００の制御目標位置を修正してもよい。例えば、制御目標補正部２１５は、力センサ１７０による測定データと指令保持部２１１が記憶する力指令との偏差を縮小するように、目標位置修正量を制御周期ごとに算出し、目標位置修正量を次の制御周期の目標位置に加算してもよい。すなわち、制御部２１２は、位置指令と力指令との両方に基づいて動作させてもよい。
【００９４】
次に、教示用コンピュータ４００は、ステップＳ０７，Ｓ０８，Ｓ０９を実行する。ステップＳ０７では、測定データ取得部４２１が、力センサ１７０による測定データをロボットコントローラ２００から取得する。ステップＳ０８では、反復管理部４２３が、測定データ取得部４２１により取得された測定データと、教示力データとの乖離値を算出する。乖離値の例としては、例えば、複数時点における測定データと教示力データとの偏差の絶対値の総和、及び当該偏差の二乗の総和が挙げられる。ステップＳ０９では、反復管理部４２３が、ステップＳ０８において算出された乖離値が許容値以下であるか否かを確認する。
【００９５】
ステップＳ０９において乖離値が許容値を超えている場合、教示用コンピュータ４００はステップＳ１１を実行する。ステップＳ１１では、位置修正部４２２が、教示位置データを修正する。ステップＳ１１の処理手順については、後に詳細に例示する。ステップＳ１１の終了後、教示用コンピュータ４００は処理をステップＳ０３に戻す。以後、乖離値が許容値以下となるまでは、位置間引部４１４による教示位置データの間引き処理と、制御部２１２によるロボット１００の動作と、位置修正部４２２による教示位置データの修正とが繰り返される。
【００９６】
ステップＳ０９において乖離値が許容値以下である場合、反復管理部４２３は、ステップＳ０３からステップＳ１１までの処理の繰り返しを完了する。以上で動作教示手順が完了する。
【００９７】
図１１は、ステップＳ０３における間引き処理手順を例示するフローチャートである。図１１は、位置間引部４１４による間引き処理及び力間引部４１６による間引き処理に共通する。このため、図１１においては、教示位置又は教示力に相当する要素を「教示点」と記載している。
【００９８】
図１１に示すように、教示用コンピュータ４００は、まずステップＳ２１，Ｓ２２，Ｓ２３，Ｓ２４を実行する。ステップＳ２１では、位置間引部４１４又は力間引部４１６が、少なくとも一部の時区間の両端の教示点を採用候補リストに追加する。ステップＳ２２では、位置間引部４１４又は力間引部４１６が、採用候補リストに追加された教示点同士を結ぶ基準ラインを導出する。ステップＳ２３では、位置間引部４１４又は力間引部４１６が、基準ラインからの乖離値が最大の教示点を採用候補リストに追加する。ステップＳ２４では、位置間引部４１４又は力間引部４１６が、採用候補リストに追加された教示点の数が上限値に達したか否かを確認する。
【００９９】
ステップＳ２４において採用候補リストに追加された教示点の数が上限値に達していない場合、教示用コンピュータ４００は処理をステップＳ２２に戻す。以後、採用候補リストに追加された教示点の数が上限値に達するまで、基準ラインを導出することと、基準ラインからの乖離最大の教示点を採用候補リストに追加することとが繰り返される。
【０１００】
ステップＳ２４において採用候補リストに追加された教示点の数が上限値に達している場合、教示用コンピュータ４００はステップＳ２５を実行する。ステップＳ２５では、位置間引部４１４又は力間引部４１６が、採用候補リストにない教示点を間引く。以上で間引き処理手順が完了する。
【０１０１】
図１２は、ステップＳ１１における教示位置データの修正手順を例示するフローチャートである。図１２に示すように、教示用コンピュータ４００は、ステップＳ３１，Ｓ３２，Ｓ３３，Ｓ３４，Ｓ３５を実行する。ステップＳ３１では、位置修正部４２２が、全時区間の最初の教示位置を選択する。ステップＳ３２では、位置修正部４２２が、選択中の教示位置に対応する時刻について、測定データと教示力データとの偏差を算出する。ステップＳ３３では、位置修正部４２２が、ステップＳ３２で算出された力偏差に基づいて位置補正値を算出する。ステップＳ３４では、位置修正部４２２が、ステップＳ３３で算出された位置補正値を、選択中の教示位置に加算する。ステップＳ３５では、選択中の教示位置が最終の教示位置であるか否かを確認する。
【０１０２】
ステップＳ３５において選択中の教示位置が最終の教示位置でない場合、教示用コンピュータ４００はステップＳ３６を実行する。ステップＳ３６では、位置修正部４２２が、次の教示位置を選択する。その後、教示用コンピュータ４００は処理をステップＳ３２に戻す。以後、最終の教示位置の修正が完了するまで、教示位置の選択と修正とが繰り返される。
【０１０３】
ステップＳ３５において選択中の教示位置が最終の教示位置である場合、教示用コンピュータ４００は処理を終了する。以上で教示位置データの修正手順が完了する。
【０１０４】
〔本実施形態の効果〕
以上に説明したように、ロボットシステム１は、作業者の実演データに基づいて、時系列に並ぶ複数の教示位置を含む教示位置データを取得する教示位置取得部４１１と、教示位置データから少なくとも一つの教示位置を間引いた間引後位置データを生成する位置間引部４１４と、間引後位置データに基づいて位置指令を生成する位置指令生成部４１５と、位置指令に基づいて作業用のロボット１００を動作させる制御部２１２と、を備える。
【０１０５】
このロボットシステム１によれば、実演データに基づく教示位置データから教示位置を間引く処理により、限られたデータ点数で実演データを適切に再現する位置指令が自動生成される。従って、ロボット１００に対する動作教示をより簡単にするのに有効である。また、位置指令のデータ点数が削減されることによって、位置指令のマニュアル調整の作業性も向上する。更に、位置指令のデータ点数が削減することによって、ロボット１００の無駄な動きが抑制され、これが動作の高速化、高効率化に寄与する場合もある。
【０１０６】
位置間引部４１４は、ロボット１００の動きへの影響が小さい教示位置を教示位置データから間引いて間引後位置データを生成してもよい。この場合、ロボット１００の動きへの影響が小さい教示位置が間引かれるので、実演データをより適切に再現する位置指令を生成することができる。
【０１０７】
ロボットシステム１は、作業者の実演データに基づいて、時系列に並ぶ複数の教示力を含む教示力データを取得する教示力取得部４１２と、教示力データから少なくとも一つの教示力を間引いた間引後力データを生成する力間引部４１６と、間引後力データに基づいて力指令を生成する力指令生成部４１７と、を更に備え、制御部２１２は、位置指令と力指令とに基づいてロボット１００を動作させてもよい。この場合、実演データに基づく力指令を生成した上で、力の経時変動への寄与が小さい力目標値を間引く処理により、限られたデータ点数で実演データを適切に再現する力指令が更に自動生成される。従って、ロボット１００に対する動作教示をより簡単にするのに有効である。
【０１０８】
力間引部４１６は、ロボット１００がワークＷに付与する力への影響が小さい教示力を教示力データから間引いて間引後力データを生成してもよい。この場合、ロボット１００が生じる力への影響が小さい教示力が間引かれるので、実演データをより適切に再現する力指令を生成することができる。
【０１０９】
ロボットシステム１は、制御部２１２がロボット１００を動作させる際に、ロボット１００がワークＷに付与する力の測定データを取得する測定データ取得部４２１と、測定データが教示力データに近付くように位置指令を修正する位置修正部４２２と、を更に備えていてもよい。この場合、位置指令への追従と力指令への追従とを両立するように、位置指令が自動調節される。従って、ロボット１００に対する動作教示をより簡単にするのに有効である。
【０１１０】
位置修正部４２２は、測定データが教示力データに近付くように教示位置データを修正し、位置間引部４１４は、位置修正部４２２による修正後の教示位置データから少なくとも一つの教示位置を間引いて間引後位置データを更新し、位置指令生成部４１５は、位置間引部４１４により更新された間引後位置データに基づいて位置指令を更新してもよい。この場合、データ点数の増加を抑制しつつ、位置指令が適切に自動調節される。更に、間引き前の教示位置データを修正することで、より細やかな位置修正が可能である。従って、ロボット１００に対する動作教示をより簡単にするのに有効である。
【０１１１】
ロボットシステム１は、測定データと教示力データとの乖離が許容条件を満たすまで、制御部２１２によるロボット１００の動作と、測定データ取得部４２１による測定データの取得と、位置修正部による位置指令の修正とを繰り返させる反復管理部４２３を更に備えていてもよい。この場合、繰り返し処理によって、位置指令がより適切に自動調節される。従って、ロボット１００に対する動作教示をより簡単にするのに有効である。
【０１１２】
位置間引部４１４は、教示位置が存在する場合のロボット１００の動作と、当該教示位置が存在しない場合のロボット１００の動作との差が大きい場合には当該教示位置が残るように間引後位置データを生成してもよい。
【０１１３】
位置間引部４１４は、教示位置と、当該教示位置の前後の教示位置同士を結ぶ基準ラインとの乖離の大きさに基づいて、当該教示位置を間引くか否かを決定してもよい。この場合、ロボット１００の動きへの影響が小さい位置目標値を容易に間引くことができる。
【０１１４】
位置間引部４１４は、教示位置データの少なくとも一部の時区間において、両端の教示位置を採用した後に、採用済の教示位置同士を結ぶ基準ラインを導出することと、基準ラインからの乖離の大きさに基づいて他の教示位置の採用可否を決定することとを所定条件が満たされるまで繰り返し、採用されなかった教示位置を間引いて間引後位置データを生成してもよい。この場合、ロボット１００の動きへの影響が小さい位置目標値を更に容易に間引くことができる。
【０１１５】
ロボットシステム１は、ワークＷに力を付与する前におけるロボット１００の位置変動を縮小するように教示位置データを修正するフィルタ処理部４２４を更に備え、位置間引部４１４は、フィルタ処理部４２４による修正後の教示位置データから少なくとも一つの教示位置を間引いて間引後位置データを生成してもよい。この場合、作業結果に影響しない動作における位置目標値が間引かれ易くなるので、限られたデータ点数を実演データの再現に更に有効活用することができる。
【０１１６】
ロボットシステム１は、ロボット１００がワークＷに付与する力を力指令に近付けるように、制御部２１２によるロボット１００の制御目標位置をロボット１００の動作中に修正する制御目標補正部２１５を更に備えていてもよい。この場合、限られたデータ点数にて、実演における力の推移をより適切に再現させることができる。
【０１１７】
以上、実施形態について説明したが、本発明は必ずしも上述した形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。
【符号の説明】
【０１１８】
１…ロボットシステム、１００…ロボット、２１２…制御部、２１５…制御目標補正部、４１１…教示位置取得部、４１４…位置間引部、４１５…位置指令生成部、４１６…力間引部、４１７…力指令生成部、４２１…測定データ取得部、４２２…位置修正部、Ｗ…ワーク（作業対象物）。
【図１】
2020062721.tif 000003
【図２】
2020062721.tif 000004
【図３】
2020062721.tif 000005
【図４】
2020062721.tif 000006
【図５】
2020062721.tif 000007
【図６】
2020062721.tif 000008
【図７】
2020062721.tif 000009
【図８】
2020062721.tif 000010
【図９】
2020062721.tif 000011
【図１０】
2020062721.tif 000012
【図１１】
2020062721.tif 000013
【図１２】
2020062721.tif 000014