(57)【要約】【課題】移動する対象物に対して作業するロボットの提供。【解決手段】対象物の移動方向への、ロボットのエンドエフェクターの移動中に、前記ロボットが備える力検出部の出力に基づいて、力を前記対象物に作用させる力制御を行って、前記エンドエフェクターによる前記対象物に対する作業を前記ロボットに行わせる、ロボット制御装置が構成される。【選択図】図１
2018083284.tif 000002
【特許請求の範囲】
【請求項１】
対象物の移動方向への、ロボットのエンドエフェクターの移動中に、
前記ロボットが備える力検出部の出力に基づいて、力を前記対象物に作用させる力制御を行って、前記エンドエフェクターによる前記対象物に対する作業を前記ロボットに行わせる、ロボット制御装置。
【請求項２】
前記対象物の移動に前記エンドエフェクターが追従する過程で、前記作業を開始可能であるか否かを判定し、
開始可能であると判定された場合に、前記作業を開始させる、請求項１に記載のロボット制御装置。
【請求項３】
前記作業を前記ロボットに行わせる際に、前記対象物が静止していると想定したときの目標位置と、前記対象物の移動量を表す第１位置補正量と、前記力制御により算出される第２位置補正量と、を加算することによって制御目標位置を求め、前記制御目標位置を利用したフィードバック制御を実行する、請求項１に記載のロボット制御装置。
【請求項４】
前記第２位置補正量の履歴から決定された代表補正量を取得し、新たな対象物に対して前記エンドエフェクターを追従させる場合に前記代表補正量を、前記新たな対象物に関する前記第１位置補正量に加算する、請求項３に記載のロボット制御装置。
【請求項５】
前記目標位置及び前記第１位置補正量を求める位置制御部と、
前記第２位置補正量を求める力制御部と、
前記目標位置と前記第１位置補正量と前記第２位置補正量とを加算することによって前記制御目標位置を求め、前記制御目標位置を利用したフィードバック制御を実行する司令統合部と、を備える、請求項３又は請求項４に記載のロボット制御装置。
【請求項６】
コンピューター実行可能な命令を実行して前記ロボットを制御するように構成されたプロセッサーを備え、
前記プロセッサーは、前記目標位置と前記第１位置補正量と前記第２位置補正量を求め、前記目標位置と前記第１位置補正量と前記第２位置補正量とを加算することによって前記制御目標位置を求め、前記制御目標位置を利用したフィードバック制御を実行するように構成されている、請求項３又は請求項４に記載のロボット制御装置。
【請求項７】
前記対象物に対して前記エンドエフェクターを追従して、前記エンドエフェクターを、前記移動方向に平行な方向に移動させ、
前記ロボットに力制御を行わせるために、前記エンドエフェクターを、前記移動方向に垂直な方向に移動させる、請求項１〜請求項６のいずれか一項に記載のロボット制御装置。
【請求項８】
前記エンドエフェクターが備えるスクリュードライバーによって前記対象物にネジ締めを行う前記作業を行わせる、請求項１〜請求項７のいずれか一項に記載のロボット制御装置。
【請求項９】
前記エンドエフェクターが備える把持部によって把持された嵌合物を前記対象物に形成された嵌合部に嵌合する前記作業を行わせる、請求項１〜請求項７のいずれか一項に記載のロボット制御装置。
【請求項１０】
前記エンドエフェクターが備える研磨ツールによって前記対象物を研磨する前記作業を行わせる、請求項１〜請求項７のいずれか一項に記載のロボット制御装置。
【請求項１１】
前記エンドエフェクターが備えるバリ取りツールによって前記対象物のバリを除去する前記作業を行わせる、請求項１〜請求項７のいずれか一項に記載のロボット制御装置。
【請求項１２】
請求項１〜請求項１１のいずれか一項に記載されたロボット制御装置によって制御されるロボット。
【請求項１３】
請求項１〜請求項１１のいずれか一項に記載されたロボット制御装置と、前記ロボット制御装置によって制御される前記ロボットとを備えるロボットシステム。
【請求項１４】
対象物の移動方向への、ロボットのエンドエフェクターの移動中に、
前記ロボットが備える力検出部の出力に基づいて、力を前記対象物に作用させる力制御を行って、前記エンドエフェクターによる前記対象物に対する作業を前記ロボットに行わせる、ロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、ロボット、ロボットシステム、及びロボット制御方法に関する。
【背景技術】
【０００２】
従来、搬送装置によって搬送される対象物（ワーク）をロボットによってピックアップする技術が知られている。例えば、特許文献１においては搬送装置上の領域に２個の座標系を定義し、対象物の位置に応じていずれかの座標系を選択し、選択された座標系を用いてロボットに対して動作指示を出力することでコンベアの撓み、膨らみ、傾斜の影響を抑制する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１７４１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術においては、搬送装置によって搬送される対象物やロボットに把持されて運ばれる対象物など、移動する対象物に対してロボットによって作業を行うことはできなかった。すなわち、移動する対象物に対してネジ締めや研磨など、各種の作業を行うことは困難であった。
【課題を解決するための手段】
【０００５】
上記課題の少なくとも一つを解決するために、本発明のロボット制御装置は、対象物の移動方向への、ロボットのエンドエフェクターの移動中に、ロボットが備える力検出部の出力に基づいて、力を対象物に作用させる力制御を行って、エンドエフェクターによる対象物に対する作業をロボットに行わせる。
【０００６】
すなわち、対象物の移動方向へのエンドエフェクターの移動中に、対象物に対して力を作用させる力制御を行い、ロボットにエンドエフェクターによる作業を行わせる。このため、対象物の移動に合わせて当該対象物の移動方向にエンドエフェクターが移動する状況において、当該力によって作業を行うことができる。以上の構成によれば、対象物が移動しながらであっても力制御による作業を行うことができる。
【０００７】
上記ロボット制御装置において、対象物の移動にエンドエフェクターが追従する過程で、作業を開始可能であるか否かを判定し、開始可能であると判定された場合に、作業を開始する構成が採用されてもよい。この構成によれば、準備が完了する前に作業が開始されることはなく、作業の失敗が発生する可能性を低減することができる。
【０００８】
上記ロボット制御装置において、作業をロボットに行わせる際に、対象物が静止していると想定したときの目標位置と、対象物の移動量を表す第１位置補正量と、力制御により算出される第２位置補正量と、を加算することによって制御目標位置を求め、制御目標位置を利用したフィードバック制御を実行する構成であってもよい。この構成によれば、対象物の移動に追従しながら力制御による作業を行う際のフィードバック制御を容易に実行できる。
【０００９】
上記ロボット制御装置において、第２位置補正量の履歴から決定された代表補正量を取得し、新たな対象物に対してエンドエフェクターを追従させる場合に代表補正量を、新たな対象物に関する第１位置補正量に加算する構成であっても良い。この構成によれば、新たな対象物に関する制御が簡易な制御になる。
【００１０】
上記ロボット制御装置において、目標位置及び第１位置補正量を求める位置制御部と、第２位置補正量を求める力制御部と、目標位置と第１位置補正量と第２位置補正量とを加算することによって制御目標位置を求め、制御目標位置を利用したフィードバック制御を実行する司令統合部と、を備える構成であってもよい。この構成によれば、対象物の移動に追従しながら力制御による作業を行う際のフィードバック制御を容易に実行できる。
【００１１】
或いは、上記ロボット制御装置において、コンピューター実行可能な命令を実行してロボットを制御するように構成されたプロセッサーを備え、プロセッサーは、目標位置と第１位置補正量と第２位置補正量を求め、目標位置と第１位置補正量と第２位置補正量とを加算することによって制御目標位置を求め、制御目標位置を利用したフィードバック制御を実行するように構成されていてもよい。この構成によっても、対象物の移動に追従しながら力制御による作業を行う際のフィードバック制御を容易に実行できる。
【００１２】
上記ロボット制御装置において、対象物に対してエンドエフェクターを追従して、エンドエフェクターを、対象物の移動方向に平行な方向に移動させ、ロボットに力制御を行わせるために、エンドエフェクターを、対象物の移動方向に垂直な方向に移動させる構成であっても良い。この構成によれば、対象物の移動方向に垂直な方向への移動を伴う作業を実施することが可能である。
【００１３】
上記ロボット制御装置において、エンドエフェクターが備えるスクリュードライバーによって対象物にネジ締めを行う作業を行わせる構成であっても良い。この構成によれば、移動する対象物に対してロボットによってネジ締め作業を行うことができる。
【００１４】
上記ロボット制御装置において、エンドエフェクターが備える把持部によって把持された嵌合物を対象物に形成された嵌合部に嵌合する作業を行わせる構成であっても良い。この構成によれば、移動する対象物に対してロボットによって嵌合作業を行うことができる。
【００１５】
上記ロボット制御装置において、エンドエフェクターが備える研磨ツールによって対象物を研磨する作業を行わせる構成であってもよい。この構成によれば、移動する対象物に対してロボットによって研磨作業を行うことができる。
【００１６】
上記ロボット制御装置において、エンドエフェクターが備えるバリ取りツールによって対象物のバリを除去する作業を行わせる構成であってもよい。この構成によれば、移動する対象物に対してロボットによってバリ取り作業を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】ロボットシステムの斜視図である。
【図２】複数のプロセッサーを有する制御装置の一例を示す概念図である。
【図３】複数のプロセッサーを有する制御装置の他の例を示す概念図である。
【図４】ロボット制御装置の機能ブロック図である。
【図５】ＧＵＩを示す図である。
【図６】コマンドの例を示す図である。
【図７】ネジ締め処理のフローチャートである。
【図８】ネジ穴ＨとＴＣＰとの関係を模式的に示す図である。
【図９】ロボット制御装置の機能ブロック図である。
【図１０】ロボットシステムの斜視図である。
【図１１】ロボットシステムの斜視図である。
【図１２】ロボットシステムの斜視図である。
【図１３】嵌合処理のフローチャートである。
【図１４】ロボットシステムの斜視図である。
【図１５】研磨処理のフローチャートである。
【図１６】ロボットシステムの斜視図である。
【図１７】バリ取り処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について添付図面を参照しながら以下の順に説明する。なお、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
（１）ロボットシステムの構成：
（２）ネジ締め処理：
（３）他の実施形態：
【００１９】
（１）ロボットシステムの構成：
図１は本発明の一実施形態にかかるロボット制御装置で制御されるロボットおよび対象物（ワーク）の搬送経路を示す斜視図である。本発明の一実施例としてのロボットシステムは、図１に示すように、ロボット１と、エンドエフェクター２０と、ロボット制御装置４０と、教示装置４５（ティーチングペンダント）と、を備えている。ロボット制御装置４０はケーブルによりロボット１と通信可能に接続される。なお、ロボット制御装置４０の構成要素がロボット１に備えられていても良い。ロボット制御装置４０と教示装置４５とはケーブルで、または無線通信可能に接続される。教示装置４５は、専用のコンピューターであってもよいし、ロボット１を教示するためのプログラムがインストールされた汎用のコンピューターであってもよい。さらに、ロボット制御装置４０と教示装置４５とは、図１に示すように別々の筐体を備えていてもよいし、一体に構成されていてもよい。
【００２０】
ロボット制御装置４０の構成としては、図１に示した構成以外の種々の構成を採用することが可能である。例えば、プロセッサーとメインメモリーを図１の制御装置４０から削除し、この制御装置４０と通信可能に接続された他の装置にプロセッサーとメインメモリーを設けるようにしてもよい。この場合には、当該他の装置と制御装置４０とを合わせた装置全体が、ロボット１の制御装置として機能する。他の実施形態では、制御装置４０は、２つ以上のプロセッサーを有していてもよい。更に他の実施形態では、制御装置４０は、互いに通信可能に接続された複数の装置によって実現されていてもよい。これらの各種の実施形態において、制御装置４０は、コンピューター実行可能な命令を実行してロボット１を制御するように構成された１つ以上のプロセッサーを備える装置又は装置群として構成される。
【００２１】
図２は、複数のプロセッサーによってロボット制御装置が構成される一例を示す概念図である。この例では、ロボット１及びその制御装置４０の他に、パーソナルコンピューター４００，４１０と、ＬＡＮなどのネットワーク環境を介して提供されるクラウドサービス５００とが描かれている。パーソナルコンピューター４００，４１０は、それぞれプロセッサーとメモリーとを含んでいる。また、クラウドサービス５００においてもプロセッサーとメモリーを利用可能である。これらの複数のプロセッサーの一部又は全部を利用して、ロボット１の制御装置を実現することが可能である。
【００２２】
図３は、複数のプロセッサーによってロボット制御装置が構成される他の例を示す概念図である。この例では、ロボット１の制御装置４０が、ロボット１の中に格納されている点が図２と異なる。この例においても、複数のプロセッサーの一部又は全部を利用して、ロボット１の制御装置を実現することが可能である。
【００２３】
図１のロボット１は、アーム１０に各種のエンドエフェクター２０を装着して使用される単腕ロボットである。アーム１０は６つの関節Ｊ１〜Ｊ６を備える。関節Ｊ２、Ｊ３、Ｊ５は曲げ関節であり、関節Ｊ１、Ｊ４、Ｊ６はねじり関節である。関節Ｊ６には、対象物（ワーク）に対して把持や加工等の作業を行うための各種のエンドエフェクター２０が装着される。アーム１０の先端の所定位置をツールセンターポイント（ＴＣＰ）と表す。ＴＣＰは、エンドエフェクター２０の位置の基準として使用される位置であり、任意に設定可能である。例えば、関節Ｊ６の回転軸上の位置をＴＣＰとして設定することができる。また、エンドエフェクター２０としてスクリュードライバーが使用される場合には、スクリュードライバーの先端をＴＣＰとして設定可能である。なお、本実施例では６軸ロボットを例にしているが、力制御する方向と搬送装置の搬送方向に移動可能なロボットであればよく、どのような関節機構を用いてもよい。
【００２４】
ロボット１は、６軸のアーム１０を駆動させることによって、可動範囲内においてエンドエフェクター２０を任意の位置に配置し、任意の姿勢（角度）とすることができる。エンドエフェクター２０には力覚センサーＰとスクリュードライバー２１が備えられている。力覚センサーＰは、エンドエフェクター２０に作用する３軸の力と、当該３軸まわりに作用するトルクを計測するセンサーである。力覚センサーＰは、固有の座標系であるセンサー座標系において互いに直交する３個の検出軸と平行な力の大きさと、当該３個の検出軸まわりのトルクの大きさとを検出する。なお、関節Ｊ６以外の関節Ｊ１〜Ｊ５のいずれか１つ以上に力検出器としての力覚センサーを備えても良い。なお、力の検出手段としての力検出部は、制御する方向の力やトルクを検出できればよく、力覚センサーのように直接、力やトルクを検出手段や、ロボットの関節のトルクを検出し間接的に求める手段などを用いてもよい。また、力を制御する方向のみの力やトルクを検出してもよい。
【００２５】
ロボット１が設置された空間を規定する座標系をロボット座標系というとき、ロボット座標系は、水平面上において互いに直交するｘ軸とｙ軸と、鉛直上向きを正方向とするｚ軸とによって規定される３次元の直交座標系である（図１参照）。ｚ軸における負の方向は概ね重力方向と一致する。またｘ軸周りの回転角をＲｘで表し、ｙ軸周りの回転角をＲｙで表し、ｚ軸周りの回転角をＲｚで表す。ｘ，ｙ，ｚ方向の位置により３次元空間における任意の位置を表現でき、Ｒｘ，Ｒｙ，Ｒｚ方向の回転角により３次元空間における任意の姿勢を表現できる。以下、位置と表記した場合、姿勢も意味し得ることとする。また、力と表記した場合、トルクも意味し得ることとする。ロボット制御装置４０は、アーム１０を駆動することによって、ロボット座標系においてＴＣＰの位置を制御する。
【００２６】
図４に示すように、ロボット１は、教示を行うことにより各種作業が可能となる汎用ロボットであり、アクチュエーターとしてのモーターＭ１〜Ｍ６と、位置センサーとしてのエンコーダーＥ１〜Ｅ６とを備える。アーム１０を制御することはモーターＭ１〜Ｍ６を制御することを意味する。モーターＭ１〜Ｍ６とエンコーダーＥ１〜Ｅ６とは、関節Ｊ１〜Ｊ６のそれぞれに対応して備えられており、エンコーダーＥ１〜Ｅ６はモーターＭ１〜Ｍ６の回転角度を検出する。
【００２７】
ロボット制御装置４０は、モーターＭ１〜Ｍ６の回転角度の組み合わせと、ロボット座標系におけるＴＣＰの位置との対応関係Ｕ１を記憶している。また、ロボット制御装置４０は、ロボット１が行う作業の工程ごとに目標位置Ｓｔと目標力ｆＳｔの少なくともいずれかをコマンドに基づいて記憶する。当該コマンドは既定の制御言語によって記述される。ＴＣＰの目標位置ＳｔとＴＣＰの目標力ｆＳｔを引数（パラメーター）とするコマンドはロボット１が行う作業の工程ごとに設定される。
【００２８】
ここでＳの文字は、ロボット座標系を規定する軸の方向（ｘ，ｙ，ｚ，Ｒｘ，Ｒｙ，Ｒｚ）のなかのいずれか１個の方向を表すこととする。また、Ｓは、Ｓ方向の位置も表すこととする。例えば、Ｓ＝ｘの場合、ロボット座標系にて設定された目標位置のｘ方向成分がＳｔ＝ｘｔと表記され、目標力のｘ方向成分がｆＳｔ＝ｆｘｔと表記される。目標力とは、ＴＣＰに作用すべき力であり、ＴＣＰに当該力が作用すべきときに力覚センサーＰが検出すべき力は座標系の対応関係やＴＣＰと力覚センサーＰの位置関係を利用して特定可能である。本実施形態において、目標位置Ｓｔと目標力ｆＳｔはロボット座標系で定義される。
【００２９】
ロボット制御装置４０は、モーターＭ１〜Ｍ６の回転角度Ｄａを取得し、対応関係Ｕ１に基づいて、当該回転角度Ｄａをロボット座標系におけるＴＣＰの位置Ｓ（ｘ，ｙ，ｚ，Ｒｘ，Ｒｙ，Ｒｚ）に変換する。またロボット制御装置４０は、ＴＣＰの位置Ｓと、力覚センサーＰの検出値および位置とに基づいて、力覚センサーＰに現実に作用している力をＴＣＰに作用している作用力ｆＳに変換してロボット座標系において特定する。
【００３０】
具体的には力覚センサーＰに作用している力は、ＴＣＰとは別の点を原点とするセンサー座標系で定義される。ロボット制御装置４０は、ロボット座標系におけるＴＣＰの位置Ｓごとに、力覚センサーＰのセンサー座標系における検出軸の方向を規定した対応関係Ｕ２を記憶している。従って、ロボット制御装置４０は、ロボット座標系におけるＴＣＰの位置Ｓと対応関係Ｕ２と力覚センサーＰの検出値に基づいて、ロボット座標系においてＴＣＰに作用する作用力ｆＳを特定できる。また、ロボットに作用するトルクは、作用力ｆＳと、ツール接触点（エンドエフェクター２０と対象物Ｗの接触点）から力覚センサーＰまでの距離とから算出することができ、図示されないｆＳトルク成分として特定される。
【００３１】
本実施形態においては、対象物Ｗに形成されたネジ穴Ｈにスクリュードライバー２１によってネジを挿入するネジ締め作業を行うための教示が行われ、当該ネジ締め作業が行われる場合を例として説明する。
【００３２】
本実施形態において、対象物Ｗは搬送装置５０によって搬送される。すなわち、搬送装置５０は、図１に示すｘｙｚ座標系によって規定されるｘ−ｙ平面に平行な搬送面を有している。搬送装置５０は、搬送ローラー５０ａ，５０ｂを備えており、これらの搬送ローラー５０ａ，５０ｂを回転させることによって搬送面をｙ軸方向に移動させることができる。従って、搬送装置５０は、搬送面上に載置された対象物Ｗをｙ軸方向に搬送することができる。なお、図１に示すｘｙｚ座標系は予めロボット１に対して固定的に定義されている。従って、当該ｘｙｚ座標系において、対象物Ｗの位置やロボット１の位置（アーム１０やスクリュードライバー２１の位置）、及びそれらの姿勢を定義することができる。
【００３３】
搬送装置５０の搬送ローラー５０ａには、図示しないセンサーが取り付けられており、当該センサーは、搬送ローラー５０ａの回転量に応じた信号を出力する。搬送装置５０においては、搬送ローラー５０ａ，５０ｂの回転とともに搬送面が滑らずに移動するため、センサーの出力は搬送装置５０による搬送量（搬送される対象物Ｗの移動量）を示している。
【００３４】
搬送装置５０の上方（ｚ軸正方向）においては、カメラ３０が図示しない支持部によって支持されている。カメラ３０は、ｚ軸負方向側の破線に示す範囲が視野に含まれるように支持部に支持されている。本実施形態においては、カメラ３０で撮影される画像の位置と搬送装置５０の搬送面上の位置とが対応づけられている。従って、カメラ３０の視野内に対象物Ｗが存在する場合、カメラ３０の出力画像における対象物Ｗの像の位置に基づいて対象物Ｗのｘ−ｙ座標を特定することが可能である。
【００３５】
ロボット１にはロボット制御装置４０が接続されており、当該ロボット制御装置４０の制御により、アーム１０およびスクリュードライバー２１、搬送装置５０およびカメラ３０の駆動を制御することができる。ロボット制御装置４０はＣＰＵ，ＲＡＭ，ＲＯＭ等を備えるコンピューターによってロボット制御プログラムが実行されることによって実現される。コンピューターの態様は任意の態様であってよく、例えば、可搬型のコンピューター等によって構成可能である。
【００３６】
搬送装置５０は、ロボット制御装置４０に接続されており、ロボット制御装置４０は、搬送ローラー５０ａ，５０ｂに制御信号を出力し、搬送ローラー５０ａ，５０ｂの駆動開始および終了を制御することができる。また、ロボット制御装置４０は、搬送装置５０が備えるセンサーの出力に基づいて搬送装置５０に搬送される対象物Ｗの移動量を取得することができる。
【００３７】
カメラ３０は、ロボット制御装置４０に接続されており、カメラ３０によって対象物Ｗが撮影されると、撮影された画像がロボット制御装置４０に対して出力される。スクリュードライバー２１は、ビットに吸着したネジを回転させることでネジをネジ穴に挿入することができる。ロボット制御装置４０は、スクリュードライバー２１に対する制御信号を出力し、ネジの吸着およびネジの回転を行わせることができる。
【００３８】
さらに、ロボット制御装置４０は、ロボット１が備えるモーターＭ１〜Ｍ６（図４）に制御信号を出力することにより、ロボット１が備えるアーム１０を可動範囲内の任意の位置に移動させ、可動範囲内で任意の姿勢にさせることができる。従って、可動範囲内でエンドエフェクター２０を任意の位置に移動させ、任意の姿勢にさせることができ、スクリュードライバー２１の先端を可動範囲内で任意の位置に移動させ、可動範囲内で任意の姿勢にさせることができる。そこで、ロボット制御装置４０は、スクリュードライバー２１の先端を図示しないネジの供給装置に移動させてビットに対してネジを吸着させることでネジをピックアップすることができる。さらに、ロボット制御装置４０は、ネジが対象物Ｗのネジ穴の上空に位置するようにロボット１を制御してエンドエフェクター２０を移動させる。そして、ロボット制御装置４０は、スクリュードライバー２１の先端をネジ穴に近づけ、ビットに吸着しているネジを回転させることでネジ締め作業を行う。
【００３９】
本実施形態においてロボット制御装置４０は、このような作業を行うために力制御および位置制御を実行することができる。力制御は、ロボット１（ロボット１に連動するエンドエフェクター２０等の部位を含む）に作用する力を所望の力にする制御であり、本実施形態においてはＴＣＰに作用する力を目標力にする制御である。すなわち、ロボット制御装置４０は、力覚センサーＰが検出した現在の力に基づいてロボット１に連動するＴＣＰに作用する力を特定することができる。そこで、ロボット制御装置４０は、力覚センサーＰの検出値に基づいて当該ＴＣＰに作用する力が目標力となるようにアーム１０の各関節を制御することができる。
【００４０】
アームの制御量は種々の手法によって決定されて良く、例えば、インピーダンス制御によって制御量が決められる構成等が採用可能である。いずれにしても、力覚センサーＰが検出した力に基づいて特定されたＴＣＰへの作用力が目標力ではなかった場合、ロボット制御装置４０は、ＴＣＰに作用する力が目標力に近づくようにアーム１０の各関節を制御し、エンドエフェクター２０を移動させる。この処理を繰り返すことにより、ＴＣＰに作用する力を目標力にする制御を行う。むろん、ロボット制御装置４０は、力覚センサーＰから出力されるトルクを目標トルクにするように、アーム１０を制御しても良い。
【００４１】
位置制御は、ロボット１（ロボット１に連動するエンドエフェクター２０等の部位を含む）を予定された位置に移動させる制御である。すなわち、ロボット１に連動する特定の部位の目標位置および目標姿勢が教示や軌道計算等によって特定され、ロボット制御装置４０は当該目標位置および目標姿勢となるようにアーム１０の各関節を制御し、エンドエフェクター２０を移動させる。むろん、当該制御においては、ＰＩＤ（Ｐｒｏｐｏｒｔｉｏｎａｌ−Ｉｎｔｅｇｒａｌ−Ｄｅｒｉｖａｔｉｖｅ）制御等のフィードバック制御によってモーターの制御量が取得されても良い。
【００４２】
以上のように、ロボット制御装置４０は、力制御および位置制御によってロボット１を駆動するが、本実施形態において、作業の対象となる対象物Ｗは搬送装置５０によって移動するため、ロボット制御装置４０は、移動中の対象物Ｗに対して作業を行うための構成を備えている。
【００４３】
図４は、ロボット制御装置４０が、移動中の対象物Ｗに対して作業を行うために備える構成の一例を示すブロック図である。ロボット制御装置４０においてロボット制御プログラムが実行されると、ロボット制御装置４０は、位置制御部４１、力制御部４２、指令統合部４３として機能する。位置制御部４１と、力制御部４２と、指令統合部４３は、ハードウェア回路として構成されていてもよい。
【００４４】
位置制御部４１は、予め作成されたコマンドで指定される目標位置に従って、ロボット１のエンドエフェクター２０の位置を制御する機能を有する。位置制御部４１は、更に、移動する対象物Ｗに対してロボット１のエンドエフェクター２０を追従して移動させる機能も有している。移動する対象物Ｗの位置は種々の手法で取得されて良いが、本実施形態においては、カメラ３０で撮影した画像に基づいて、撮影された時刻における対象物Ｗの位置（ｘ−ｙ座標）が取得され、搬送装置５０が備えるセンサーに基づいて対象物Ｗの移動量が取得され、対象物Ｗが撮影された時刻以後の対象物Ｗの移動量に基づいて任意の時刻における対象物Ｗの位置が特定される。
【００４５】
このような対象物Ｗの位置の特定と追従とを行うために、本実施形態において、位置制御部４１は、さらに、対象物位置取得部４１ａ、目標位置取得部４１ｂ、位置制御指令取得部４１ｃ、トラッキング補正量取得部４１ｄの各機能を実行する。対象物位置取得部４１ａは、カメラ３０の出力画像に基づいて視野内の対象物Ｗ（詳しくは対象物Ｗ上のネジ穴）の位置（ｘ−ｙ座標）を取得する機能である。
【００４６】
目標位置取得部４１ｂは、ネジ締め作業においてスクリュードライバー２１を所望の位置（姿勢を含む）としたときのＴＣＰの位置を目標位置Ｓｔとして取得する機能である。目標位置Ｓｔは、教示装置４５を用いた教示により作成されたコマンドで指定される。本実施形態においては、例えば、ネジ穴からｚ軸正方向に所定量オフセットされた位置が作業開始直前の目標位置として教示され、そこからネジ締め量（ネジ締めによりネジが進む距離）だけｚ軸負方向に進んだ位置が作業開始後の目標位置として教示される。本実施形態において、この教示により指定される目標位置は、ロボット座標系の位置でなく、対象物Ｗを基準とした相対位置である。但し、目標位置をロボット座標系の位置として教示することも可能である。教示が行われると、教示内容を示すコマンドが生成され、ロボット制御装置４０に記憶される。
【００４７】
例えば、対象物Ｗのネジ穴に対してネジを挿入する作業の開始前のＴＣＰの目標位置は、ネジの先端をネジ穴から既定距離（例えば５ｍｍ）上方に配置するために、ＴＣＰが配置されるべき位置である。コマンドは、対象物Ｗのネジ穴から既定距離だけ上方の位置がネジの先端の位置であることを示している。この場合、目標位置取得部４１ｂは、対象物位置取得部４１ａが取得したネジ穴の位置（ｘ−ｙ座標）を取得し、ｚ軸の原点から上方に向けて、対象物Ｗの高さおよび上述の既定距離に相当するオフセットを設けた位置にネジが配置されるようなＴＣＰの位置を目標位置Ｓｔとして取得する。このＴＣＰの目標位置Ｓｔは、ロボット座標系で表現された位置である。
【００４８】
位置制御指令取得部４１ｃは、目標位置取得部４１ｂによって取得された目標位置ＳｔにＴＣＰを移動させるための制御指令を取得する。本実施形態においては、微小時間毎に位置制御（および後述の力制御）を繰り返すことにより、ＴＣＰを目標位置Ｓｔに移動させる。
【００４９】
ＴＣＰを作業開始前の目標位置に移動させる際に、位置制御指令取得部４１ｃは、カメラ３０による対象物Ｗの撮影時刻から目標位置への移動が完了する移動完了時刻までの時間間隔を微小時間毎に分割する。そして、位置制御指令取得部４１ｃは、カメラ３０による対象物Ｗの撮影時刻におけるＴＣＰの位置を、移動完了時刻までの期間で目標位置Ｓｔに移動させる際における各時刻でのＴＣＰの位置を微小時間毎の目標位置Ｓｔｃとして特定する。この結果、微小時間をΔＴ、撮影時刻をＴ、目標位置Ｓｔへの移動完了時刻をＴｆとすると、Ｔ，Ｔ＋ΔＴ，Ｔ＋２ΔＴ，，，，Ｔｆ−ΔＴ、Ｔｆの各時刻におけるＴＣＰの目標位置Ｓｔｃが特定される。位置制御指令取得部４１ｃは、各時刻において次の時刻における目標位置Ｓｔｃを順次出力する。例えば、撮影時刻Ｔにおいては、時刻Ｔ＋ΔＴにおける目標位置Ｓｔｃが出力され、時刻Ｔ＋ΔＴにおいては、時刻Ｔ＋２ΔＴにおける目標位置Ｓｔｃが出力される。
【００５０】
ここで出力される微小時間毎の目標位置Ｓｔｃは、対象物Ｗが静止していると想定された場合の位置指令である。すなわち、対象物位置取得部４１ａはカメラ３０で対象物Ｗが撮影された時刻における対象物Ｗ（のネジ穴）の位置を取得し、目標位置取得部４１ｂは、当該時刻における対象物Ｗの位置に基づいて目標位置Ｓｔｃを取得する。一方、実際の作業において対象物Ｗは搬送装置５０によって搬送されるため、搬送装置５０の搬送速度でｙ軸正方向に移動する。そこで、トラッキング補正量取得部４１ｄは、搬送装置５０が備えるセンサーからの出力を取得し、微小時間ΔＴ毎の搬送装置５０による対象物Ｗの移動量を取得する。
【００５１】
具体的には、トラッキング補正量取得部４１ｄは、位置制御指令取得部４１ｃが目標位置Ｓｔｃを出力する際に想定されている時刻（上述の次の時刻）に同期させて当該時刻での対象物の移動量を推定する。例えば、現在の時刻が時刻Ｔ＋２ΔＴであれば、位置制御指令取得部４１ｃは時刻Ｔ＋３ΔＴにおける目標位置Ｓｔｃを出力し、トラッキング補正量取得部４１ｄは時刻Ｔ＋３ΔＴにおける対象物Ｗの移動量を補正量Ｓｔｍとして出力する。時刻Ｔ＋２ΔＴにおける移動量は、例えば、撮影時刻Ｔから現在時刻Ｔ＋２ΔＴまでの対象物Ｗの移動量から微小時間ΔＴにおける移動量を推定し、当該移動量を撮影時刻Ｔから現在時刻Ｔ＋２ΔＴまでの対象物Ｗの移動量に加えるなどして取得可能である。指令統合部４３は、目標位置Ｓｔｃと補正量Ｓｔｍを加算して、移動目標位置Ｓｔｔを生成する。この移動目標位置Ｓｔｔは、位置制御における制御目標値に相当する。
【００５２】
力制御部４２は、ＴＣＰに作用する力を目標力に制御する機能である。力制御部４２は、力制御指令取得部４２ａを備えており、教示装置４５の操作によってロボット制御装置４０が記憶したコマンドに基づいて目標力ｆＳｔを取得する。すなわち、当該コマンドは作業において力制御が必要な各工程における目標力ｆＳｔを示しており、力制御指令取得部４２ａは指定された工程における目標力ｆＳｔを取得する。例えば、作業においてスクリュードライバー２１の先端に取り付けられたネジを対象物Ｗに既定の力で押しつける必要がある場合、当該力に基づいてＴＣＰに作用すべき目標力ｆＳｔが特定される。さらに、スクリュードライバー２１の先端に取り付けられたネジと対象物Ｗとの間に作用する力を０にする制御（衝突の回避や倣い制御）が必要である場合、当該力０がとなるためにＴＣＰに作用すべき力が目標力ｆＳｔとなる。本例にかかるネジ締め作業の場合、力制御部４２は、ネジをｚ軸負方向に一定の力で押しつけ、ネジのｘ軸およびｙ軸方向に作用する力を０にする倣い制御（対象物の移動方向を含む平面内の力が０となる制御）を実行する。
【００５３】
本実施形態において力制御部４２は、作用力ｆＳに対して重力補償を行う。重力補償とは、作用力ｆＳから重力に起因する力やトルクの成分を除去することである。重力補償を行った作用力ｆＳは、力覚センサーＰに作用している重力以外の力と見なすことができる。
【００５４】
力覚センサーＰに作用している重力以外の作用力ｆＳとＴＣＰに作用すべき目標力ｆＳｔとが特定されると、力制御部４２は、インピーダンス制御によって位置補正量ΔＳを取得する。本実施例のインピーダンス制御は、仮想の機械的インピーダンスをモーターＭ１〜Ｍ６によって実現する能動インピーダンス制御である。力制御部４２は、このようなインピーダンス制御を、エンドエフェクター２０が対象物Ｗから力を受ける接触状態の工程で適用する。インピーダンス制御では、目標力を後述する運動方程式に代入して取得した位置補正量ΔＳに基づいてモーターＭ１〜Ｍ６の回転角度を導出する。ロボット制御装置４０がモーターＭ１〜Ｍ６を制御する信号は、ＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）変調された信号である。
【００５５】
ロボット制御装置４０は、エンドエフェクター２０が対象物Ｗから力を受けない非接触状態の工程では、移動目標位置Ｓｔｔから線形演算で導出する回転角度でモーターＭ１〜Ｍ６を制御する。
【００５６】
指令統合部４３は、位置制御モードと力制御モードと位置・力制御モードとのいずれか、又はその組み合わせによってロボット１を制御する機能を有している。例えば、図１に示すネジ締め作業では、ｘ軸ｋ方向とｙ軸方向については目標力をゼロとするような「倣い動作」を行うので力制御モードが使用される。また、ｚ軸方向については、ゼロでない目標力でスクリュードライバー２１を押し付けながらネジ穴にネジを挿入するので位置・力制御モードが使用される。更に、各軸回りの回転方向Ｒｘ，Ｒｙ，Ｒｚについては、倣いも押し付けも行わないので位置制御モードが使用される。
【００５７】
（１）力制御モード：運動方程式に基づいて目標力から回転角度を導出してモーターＭ１〜Ｍ６を制御するモード。
力制御モードは、各時刻の目標位置Ｓｔｃが作業中に経時的に変化しない場合に、目標力ｆＳｔに関するフィードバック制御を実行する制御である。例えば、ネジ締め作業や後述する嵌合作業では、目標位置Ｓｔｃが作業終了位置になると、その後の作業中には目標位置Ｓｔｃが経時的に変化しないので、力制御モードで作業が実行される。本実施形態の制御装置４０は、力制御モードにおいても、対象物Ｗの搬送による移動量に応じた補正量Ｓｔｍを用いた位置フィードバックを行うことが可能である。
【００５８】
（２）位置制御モード：目標位置から線形演算で導出する回転角度でモーターＭ１〜Ｍ６を制御するモード。
位置制御モードは、作業中に力を制御する必要が無い場合に、目標位置Ｓｔｃに対するフィードバック制御を実行する制御である。換言すれば、位置制御モードは、力制御による位置補正量ΔＳが常にゼロであるモードである。本実施形態の制御装置４０は、位置制御モードにおいても、対象物Ｗの搬送による移動量に応じた補正量Ｓｔｍを用いた位置フィードバックを行うことが可能である。
【００５９】
（３）位置・力制御モード：目標位置から線形演算で導出する回転角度と目標力を運動方程式に代入して導出する回転角度とを線型結合によって統合し、統合した回転角度でモーターＭ１〜Ｍ６を制御するモード。
位置・力制御モードは、各時刻の目標位置Ｓｔｃが作業中に経時的に変化する場合に、経時的に変化する目標位置Ｓｔｃと目標力ｆＳｔに応じた位置補正量ΔＳとに関するフィードバック制御を実行する制御である。例えば、後述する研磨作業やバリ取り作業において、対象物Ｗに対する作業位置が経時的に変化する場合（研磨位置やバリ取り位置が１点でなく、長さ又は面積を有する場合）には、位置・力制御モードで作業が実行される。本実施形態の制御装置４０は、位置・力制御モードにおいても、対象物Ｗの搬送による移動量に応じた補正量Ｓｔｍを用いた位置フィードバックを行うことが可能である。
【００６０】
これらのモードは、力覚センサーＰまたはエンコーダーＥ１〜Ｅ６の検出値に基づいて自律的に切り替えることもできるし、コマンドに応じて切り替えることもできる。力制御モード又は位置・力制御モードでは、ロボット制御装置４０は、ＴＣＰが目標の位置において目標の姿勢となり、かつ、ＴＣＰに作用している力が目標力（目標の力と目標のモーメント）になるようにアーム１０を駆動することができる。
【００６１】
より具体的には、力制御部４２は、目標力ｆＳｔと作用力ｆＳとをインピーダンス制御の運動方程式に代入することにより、力由来補正量ΔＳを特定する。力由来補正量ΔＳとは、ＴＣＰが機械的インピーダンスを受けた場合に、目標力ｆＳｔと作用力ｆＳとの力偏差ΔｆＳ（ｔ）を解消するために、ＴＣＰが移動すべき位置Ｓの大きさを意味する。下記の（１）式は、インピーダンス制御の運動方程式である。
【数１】
2018083284.tif 000003
【００６２】
（１）式の左辺は、ＴＣＰの位置Ｓの２階微分値に仮想慣性パラメーターｍを乗算した第１項と、ＴＣＰの位置Ｓの微分値に仮想粘性パラメーターｄを乗算した第２項と、ＴＣＰの位置Ｓに仮想弾性パラメーターｋを乗算した第３項とによって構成される。（１）式の右辺は、目標力ｆＳｔから現実の作用力ｆＳを減算した力偏差ΔｆＳ（ｔ）によって構成される。（１）式における微分とは、時間による微分を意味する。ロボット１が行う作業の工程において、目標力ｆＳｔとして一定値が設定される場合もあるし、目標力ｆＳｔとして時間の関数が設定される場合もある。
【００６３】
仮想慣性パラメーターｍはＴＣＰが仮想的に有する質量を意味し、仮想粘性パラメーターｄはＴＣＰが仮想的に受ける粘性抵抗を意味し、仮想弾性パラメーターｋはＴＣＰが仮想的に受ける弾性力のバネ定数を意味する。各パラメーターｍ，ｄ，ｋは方向ごとに異なる値に設定されてもよいし、方向に拘わらず共通の値に設定されてもよい。
【００６４】
力由来補正量ΔＳが得られると、指令統合部４３は、対応関係Ｕ１に基づいて、ロボット座標系を規定する各軸の方向の動作位置を、各モーターＭ１〜Ｍ６の目標の回転角度である目標角度Ｄｔに変換する。そして、指令統合部４３は、目標角度ＤｔからモーターＭ１〜Ｍ６の現実の回転角度であるエンコーダーＥ１〜Ｅ６の出力（回転角度Ｄａ）を減算することにより、駆動位置偏差Ｄｅ（＝Ｄｔ−Ｄａ）を算出する。そして、指令統合部４３は、駆動位置偏差Ｄｅに位置制御ゲインＫｐを乗算した値と、現実の回転角度Ｄａの時間微分値である駆動速度と、の差である駆動速度偏差を求め、この駆動速度偏差に速度制御ゲインＫｖを乗算することにより、制御量Ｄｃを導出する。
【００６５】
なお、位置制御ゲインＫｐおよび速度制御ゲインＫｖは、比例成分だけでなく微分成分や積分成分にかかる制御ゲインを含んでもよい。制御量Ｄｃは、モーターＭ１〜Ｍ６のそれぞれについて特定される。以上説明した構成により、指令統合部４３は、目標力ｆＳｔに基づいてアーム１０を力制御モード又は位置・力制御モードで制御することができる。指令統合部４３は、微小時間毎の移動目標位置Ｓｔｔに、力由来補正量ΔＳを加算することにより動作位置（Ｓｔｔ＋ΔＳ）を特定する。
【００６６】
前述したように、指令統合部４３は、位置制御モードと力制御モードと位置・力制御モードのいずれにおいても、トラッキング補正量取得部４１ｄが出力する補正量Ｓｔｍに基づいてロボット１を制御することが可能である。この結果、ロボット１のエンドエフェクター２０は、補正量Ｓｔｍで指定された方向（本例においては対象物Ｗの移動方向であるｙ軸正方向）に移動する。例えば、ネジ締め作業の開始前は、位置制御モードによる制御が実行され、エンドエフェクター２０が備えるスクリュードライバー２１は、対象物Ｗのネジ穴の上方に定義された目標位置（コマンドで指定された目標位置）まで移動する。そして、ネジ締め作業が開始されると、３つの制御モードの組み合わせによって制御が実行される。具体的には、ｘ軸方向とｙ軸方向については目標力をゼロとするような「倣い動作」を行うので力制御モードが使用される。また、ｚ軸方向については、ゼロでない目標力でスクリュードライバー２１を押し付けながらネジ穴にネジを挿入するので位置・力制御モードが使用される。更に、各軸回りの回転方向Ｒｘ，Ｒｙ，Ｒｚについては、倣いも押し付けも行わないので位置制御モードが使用される。この時にも、トラッキングの補正量Ｓｔｍによる位置補正が行われるので、スクリュードライバー２１は、対象物Ｗのｙ軸正方向への移動に追従して移動していく（対象物Ｗとスクリュードライバー２１とのｙ軸正方向への相対移動速度が実質的に０になる）。
【００６７】
本実施形態にかかる力制御によれば、スクリュードライバー２１に取り付けられたネジが対象物Ｗに接触した場合に、ネジをｚ軸負方向に一定の力で押しつけ、対象物Ｗのネジ穴とネジが接触したとしてもｘ軸およびｙ軸方向には力が作用しないようにロボット１が制御される。そこで、当該力制御を開始する際にロボット制御装置４０は、スクリュードライバー２１に対して制御信号を出力し、スクリュードライバー２１を回転させる。なお、ネジをｚ軸負方向に一定の力で対象物Ｗに押しつけると、対象物Ｗに対してｚ軸負方向の力が作用する。当該力は対象物の移動方向であるｙ軸正方向と異なる方向である。従って、本実施形態では、対象物の移動方向であるｙ軸正方向へのエンドエフェクター２０の移動中に、当該移動方向と異なるｚ軸負方向に向けた力が対象物Ｗに作用する。
【００６８】
ロボット制御装置４０は、対象物Ｗの搬送による移動量を考慮しないときの目標位置Ｓｔｃに対して、搬送による移動量を表す補正量Ｓｔｍを加えて移動目標位置Ｓｔｔを求めることにより、対象物Ｗにエンドエフェクター２０を追従させる。そして、ネジ締め作業が開始されると、ロボット制御装置４０は、目標位置Ｓｔのｚ軸方向の座標を、ネジ締め完了の際のＴＣＰの座標に修正する。この場合、ロボット制御装置４０は、位置制御指令取得部４１ｃの機能により、ｙ軸方向のみならずｚ軸方向の目標位置にロボット１を移動させる制御指令が取得され、指令統合部４３により、ｚ軸方向の目標位置にも移動するようにロボット１が制御される。従って、スクリュードライバー２１が回転しながらｚ軸負方向に一定の力が作用する状態でｚ軸方向の目標位置に向けてＴＣＰが移動されることでネジ締め作業が行われる。ＴＣＰがｚ軸方向の目標位置に達すると１個のネジ穴に対するネジ締め作業は終了される。このように、ネジ締め作業では、各方向について３つの制御モードのいずれかによって制御が実行される。
【００６９】
上述した目標位置Ｓｔｃは「対象物が静止していると想定したときの目標位置」に相当し、補正量Ｓｔｍは「対象物の移動量を表す第１位置補正量」に相当し、力由来補正量ΔＳは「力制御により算出される第２位置補正量」に相当し、移動目標位置Ｓｔｔは「目標位置と第１位置補正量と第２位置補正量とを加算した制御目標位置」に相当する。
【００７０】
以上の制御においてロボット制御装置４０は、エンドエフェクター２０を対象物Ｗに対して追従して移動させるために、当該エンドエフェクター２０を対象物Ｗの移動方向に平行な方向（ｙ軸方向）に移動させる。さらに、ＴＣＰに作用する力を目標力に制御するために、当該エンドエフェクター２０を対象物Ｗの移動方向に垂直な方向（ｚ軸方向）に移動させる。この構成によれば、対象物Ｗの移動方向に垂直な方向への移動を伴う作業を実施することが可能である。
【００７１】
以上の構成によれば、対象物Ｗに追従するようにエンドエフェクター２０を移動させながら、ＴＣＰに作用する力を目標力に制御して、エンドエフェクター２０による作業を行わせることができる。このため、エンドエフェクター２０による作業によってエンドエフェクター２０と対象物Ｗとが接触するなどの相互作用が生じた場合には、ＴＣＰに作用する力が目標力になる。当該目標力は対象物Ｗに対する作業に必要な力であるため、以上の構成によれば、対象物が移動しながらであっても対象物の移動を妨げることなく、ネジ締め作業を行うことができる。このため、搬送装置を一旦停止させ、または、搬送装置から対象物を退避させること無くネジ締め作業を行うことが可能である。また、退避のための作業スペースも不要になる。
【００７２】
さらに、本実施形態においては、位置制御に加えて力制御も行われているため、各種の誤差要因を吸収して作業を実施することができる。例えば、搬送装置５０のセンサーによって検出される対象物Ｗの移動量には誤差が含まれ得る。また、搬送装置５０の搬送面のブレやカメラ３０の撮影画像から特定される対象物Ｗの位置にも誤差が含まれ得る。さらに、複数の対象物Ｗに対して作業が行われる場合において、個別の対象物Ｗには設計に対する誤差（ネジ穴の大きさや形状の変動など）が発生し得る。さらに、スクリュードライバー２１等のツールにも摩耗等の変化が生じ得る。
【００７３】
従って、位置制御によってロボット１をネジ穴の移動に追従させるのみでは、複数の対象物のそれぞれに対して適正にネジ締め作業を遂行し続けることは困難である。しかし、力制御によれば、これらの誤差を吸収し得る。例えば、ＴＣＰの位置と目標位置との関係が理想的な関係からずれていたとしても、ネジがネジ穴に近づく際にはｘ軸方向およびｙ軸方向の力が０になるように制御されているため、誤差があったとしてもネジ穴に対するネジの挿入に支障が無いように（ｘ軸方向およびｙ軸方向の力が０になるように）ロボットが移動する。このため、各種の誤差を吸収しながらネジ締め作業を行うことができる。
【００７４】
なお、利用者は、本実施形態における教示装置４５によって各作業工程の目標位置および目標力を教示することができ、当該教示に基づいて上述のコマンドが生成される。当該教示装置４５による教示は、種々の態様で行われて良く、例えば、利用者がロボット１を手で移動させることによって目標位置が教示されてもよいし、教示装置４５にてロボット座標系における座標を指定することにより目標位置が教示されてもよい。
【００７５】
図５は、教示装置４５のＧＵＩの一例を示している。目標力ｆＳｔは種々の態様で教示することができ、目標力ｆＳｔとともにインピーダンス制御のパラメーターｍ，ｄ，ｋを教示可能であっても良い。例えば、図５に示すＧＵＩを利用して教示可能に構成されていても良い。すなわち、教示装置４５は、図示しないディスプレイに図５に示すＧＵＩを表示可能であり、図示しない入力装置によってＧＵＩを利用した入力を受け付けることが可能である。当該ＧＵＩは、例えば、目標力ｆＳｔによる力制御を利用した作業の開始位置までＴＣＰが移動され、実際の対象物Ｗが配置された状態で表示される。当該ＧＵＩは、図５に示すように、入力窓Ｎ１〜Ｎ３と、スライダーバーＢｈと、表示窓Ｑ１，Ｑ２と、グラフＧ１，Ｇ２と、ボタンＢ１，Ｂ２とを含んでいる。
【００７６】
当該ＧＵＩにおいて教示装置４５は、入力窓Ｎ１，Ｎ２によって力の方向（目標力ｆＳｔの方向）と、力の大きさ（目標力ｆＳｔの大きさ）とを受け付けることが可能である。すなわち、教示装置４５は、入力窓Ｎ１において、ロボット座標系を規定するいずれかの軸の方向の入力を受け付ける。また、教示装置４５は、入力窓Ｎ２において、力の大きさとして任意の数値の入力を受け付ける。
【００７７】
さらに、ＧＵＩにおいて教示装置４５は、入力窓Ｎ３に入力された数値によって仮想弾性パラメーターｋを受け付けることが可能である。仮想弾性パラメーターｋを受け付けると、教示装置４５は、仮想弾性パラメーターｋに対応する記憶波形ＶをグラフＧ２にて表示する。グラフＧ２の横軸は時刻を示し、グラフＧ２の縦軸は作用力を示す。記憶波形Ｖは、作用力の時間応答波形であり、予め教示装置４５の記憶媒体に仮想弾性パラメーターｋごとに記憶されている。記憶波形Ｖは、入力窓Ｎ１にて受け付けられた大きさの力へと収束していく波形である。記憶波形Ｖは、一般的な条件において、入力窓Ｎ２にて受け付けた大きさの力がＴＣＰに作用するようにアーム１０を制御した場合に、ＴＣＰに実際に作用する力を力覚センサーＰに基づいて取得した場合の時間応答波である。仮想弾性パラメーターｋが異なると記憶波形Ｖの形状（傾き）が大きく異なることとなるため、仮想弾性パラメーターｋごとに記憶波形Ｖを記憶することとしている。
【００７８】
さらに、ＧＵＩにおいて教示装置４５は、スライダーバーＢｈ上におけるスライダーＨ１の操作に応じて仮想粘性パラメーターｄと仮想慣性パラメーターｍを受け付ける。図５のＧＵＩにおいて、仮想慣性パラメーターｍと仮想粘性パラメーターｄとを受け付けるための構成として、スライダーバーＢｈと、当該スライダーバーＢｈ上をスライド可能なスライダーＨ１とが設けられている。教示装置４５は、スライダーＨ１をスライダーバーＢｈ上にてスライドさせる操作を受け付ける。なお、スライダーバーＢｈには、右方向にスライダーＨ１が移動するほど安定性を重視する設定となり、左方向にスライダーＨ１が移動するほど応答性を重視する設定となることが表示されている。
【００７９】
そして、教示装置４５は、スライダーバーＢｈ上におけるスライダーＨ１のスライド位置を取得し、当該スライド位置に対応する仮想慣性パラメーターｍと仮想粘性パラメーターｄとを受け付ける。具体的に、教示装置４５は、仮想慣性パラメーターｍと仮想粘性パラメーターｄとの比が一定（例えば、ｍ：ｄ＝１：１０００）となるように、仮想慣性パラメーターｍと仮想粘性パラメーターｄの設定を受け付ける。また、教示装置４５は、スライダーＨ１のスライド位置に対応する仮想慣性パラメーターｍと仮想粘性パラメーターｄを表示窓Ｑ１，Ｑ２に表示する。
【００８０】
さらに、教示装置４５は、ボタンＢ１の操作に応じて現在の設定値でアーム１０を制御する。すなわち、教示装置４５は、ロボット制御装置４０に対して、ＧＵＩにて設定された目標力ｆＳｔとインピーダンス制御のパラメーターｍ，ｄ，ｋとを出力し、これらの設定値に基づいてアーム１０を制御するように指令する。この場合、力覚センサーＰの検出値は教示装置４５に送信され、教示装置４５は、検出値に基づいてＴＣＰに作用している力の検出波形ＶＬをグラフＧ１に表示する。利用者は、記憶波形Ｖと検出波形ＶＬとを比較することにより、目標力ｆＳｔおよびインピーダンス制御のパラメーターｍ，ｄ，ｋを設定する操作を実行することができる。
【００８１】
以上のようにして、各工程における目標位置、目標力およびインピーダンス制御のパラメーターｍ，ｄ，ｋが設定されると、教示装置４５は、ロボット制御装置４０に目標位置と目標力とインピーダンス制御のパラメーターｍ，ｄ，ｋを引数とするコマンドで記述されたロボット制御プログラムを生成する。当該ロボット制御プログラムがロボット制御装置４０にロードされると、ロボット制御装置４０は、指定されたパラメーターによる制御を実行することができる。
【００８２】
ロボット制御プログラムは予め定められたプログラム言語によって記述され、翻訳プログラムにより中間言語を経て機械語プログラムに変換される。ロボット制御装置４０のＣＰＵはクロックサイクルで機械語プログラムを実行する。翻訳プログラムは教示装置４５で実行しても良いし、ロボット制御装置４０で実行しても良い。ロボット制御プログラムのコマンドは本体と引数とから構成される。コマンドには、アーム１０やエンドエフェクター２０を動作させる動作制御コマンド、エンコーダーやセンサーの検出値を読み出すモニターコマンド、各種の変数を設定する設定コマンド等が含まれる。なお、本明細書において、コマンドの実行は、当該コマンドが翻訳された機械語プログラムの実行と同義である。
【００８３】
図６に動作制御コマンド（本体）の一例を示す。図６に示すように動作制御コマンドは、力制御モードでアーム１０を動作させることができる力制御対応コマンドと、力制御モードでアーム１０を動作させることができない位置制御コマンドとを含む。力制御対応コマンドでは、引数により力制御モードのオンを指定できる。当該引数により力制御モードのオンが指定されない場合には、位置制御モードで当該力制御対応コマンドが実行され、当該引数により力制御モードのオンが指定される場合には、当該力制御対応コマンドは力制御モードで実行される。また力制御対応コマンドは力制御モードにおいて実行可能であり、位置制御コマンドは力制御モードでは実行不能である。力制御モードにおいて位置制御コマンドが実行されることがないように、翻訳プログラムによる構文エラーチェックが実行される。
【００８４】
さらに、力制御対応コマンドでは、引数により力制御モードの継続を指定できる。力制御モードで実行される力制御対応コマンドにおいて当該引数により力制御モードの継続が指定された場合、力制御モードは継続され、当該引数により力制御モードの継続が指定されない場合、当該力制御対応コマンドの実行完了までに力制御モードは終了する。すなわち力制御対応コマンドが力制御モードで実行されるとしても、引数により明示的に指定されない限り、力制御モードは当該力制御対応コマンドに応じて自律的に終了し、当該力制御対応コマンドの実行終了後においてまで力制御モードが継続することはない。なお図６において「ＣＰ」は移動方向を指定できるコマンドの分類、「ＰＴＰ」は目標位置を指定できるコマンドの分類、「ＣＰ＋ＰＴＰ」は移動方向と目標位置を指定できるコマンドの分類である。
【００８５】
（２）ネジ締め処理：
図７は、ネジ締め処理のフローチャートである。ネジ締め処理は、上述のコマンドによって記述されたロボット制御プログラムによって位置制御部４１，力制御部４２，指令統合部４３が実行する処理と、カメラ３０および搬送装置５０の動作に応じて位置制御部４１が実行する処理とによって実現される。本実施形態においてネジ締め処理は、搬送装置５０による対象物Ｗの搬送が開始された場合に実行される。ネジ締め処理が開始され、カメラ３０の視野で対象物Ｗを撮影可能な状態になると、カメラ３０が対象物Ｗの撮影画像を出力する。すると、ロボット制御装置４０は、対象物位置取得部４１ａの処理により、カメラの撮影画像を取得する（ステップＳ１００）。
【００８６】
次に、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、対象物Ｗの画像からネジ穴の位置を特定する（ステップＳ１０５）。すなわち、ロボット制御装置４０は、ステップＳ１００で取得された画像の特徴量や、パターンマッチング処理結果、対象物Ｗにおける設計情報（ネジ穴の設計位置情報）等に基づいて、ネジ穴の位置（ｘ−ｙ座標）を特定する。
【００８７】
次に、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、ステップＳ１０５で特定されたネジ穴の位置およびコマンドに基づいて目標位置Ｓｔを取得する（ステップＳ１１０）。すなわち、搬送装置５０の搬送面のｚ軸方向の位置は予め特定されており、対象物Ｗの高さ（ｚ軸方向の寸法）も予め特定されている。従って、ステップＳ１０５において、ネジ穴のｘ−ｙ座標が特定されると、ネジ穴のｘｙｚ座標も特定されていることになる。ネジ穴に対する作業開始位置として教示される位置は、コマンドによってネジ穴からｚ軸正方向にオフセットされた位置として記述されているため、ロボット制御装置４０は、ネジ穴のｘｙｚ座標に対してｚ軸正方向にオフセットされた位置にネジを配置するためのＴＣＰの位置を目標位置Ｓｔとして特定する。
【００８８】
次に、ロボット制御装置４０は、位置制御指令取得部４１ｃの機能により、微小時間ΔＴ毎の目標位置Ｓｔｃを取得する（ステップＳ１１５）。すなわち、カメラ３０による対象物Ｗの撮影時刻からコマンドによって指定された目標位置Ｓｔへの移動が完了する移動完了時刻までの時間間隔を微小時間毎に分割する。そして、位置制御指令取得部４１ｃは、カメラ３０による対象物Ｗの撮影時刻におけるＴＣＰの位置を、移動完了時刻までの期間でコマンドによって指定された目標位置Ｓｔに移動させる際における各時刻でのＴＣＰの目標位置Ｓｔｃを特定する。すなわち、位置制御指令取得部４１ｃは、工程毎の最終的な目標位置Ｓｔに基づいて、ＴＣＰを当該最終的な目標位置Ｓｔに順次近づけるための微小時間毎の目標位置Ｓｔｃを取得する。
【００８９】
図８は、ネジ穴ＨとＴＣＰとの関係を模式的に示す図である。図８においては、カメラ３０による撮影時刻Ｔにおけるネジ穴Ｈ０が、時刻Ｔ＋ΔＴ，Ｔ＋２ΔＴ，Ｔ＋３ΔＴにおいてＨ１，Ｈ２と移動した場合の例を示している。また、撮影時刻ＴにおけるＴＣＰの位置はＴＰＣ０である。この例においては、単純のため、例示した工程におけるＴＣＰの最終的な目標位置Ｓｔがネジ穴Ｈのｘ−ｙ座標と一致する例を示す。すなわち、ＴＣＰが最終的な目標位置Ｓｔに達すると、図８に示すｘ−ｙ平面上でネジ穴Ｈに重なるような例を説明する。
【００９０】
この例であれば、ロボット制御装置４０は、撮影時刻ＴからＴＣＰがネジ穴Ｈ０に到達する移動完了時刻Ｔｆまでの期間を微小時間ΔＴ毎に分割し、各時刻における目標位置を特定する。図８においては、Ｔ＋ΔＴ，Ｔ＋２ΔＴ，Ｔ＋３ΔＴ，，，Ｔｆ−ΔＴ、Ｔｆにおける目標位置Ｐ１，Ｐ２，Ｐ３，，，Ｐｆ−１，Ｐｆを取得する。各時刻において位置制御指令取得部４１ｃは、次の時刻の目標位置Ｓｔｃを出力する。例えば、時刻Ｔ＋２ΔＴにおいて位置制御指令取得部４１ｃは、時刻Ｔ＋３ΔＴの目標位置Ｐ３を目標位置Ｓｔｃとして出力する。
【００９１】
次に、ロボット制御装置４０は、トラッキング補正量取得部４１ｄの機能により、目標位置の補正量Ｓｔｍを取得する（ステップＳ１２０）。ロボット制御装置４０は、ΔＴの期間毎にステップＳ１２０〜Ｓ１３０の処理を繰り返す際に、ステップＳ１２０において、カメラ３０による撮影時刻Ｔ以後、現在までの移動量を取得し、当該移動量に基づいて現在から微小時間ΔＴの間における対象物Ｗの移動量を推定し、これを目標位置の補正量Ｓｔｍとして取得する。例えば、現在の時刻が図８に示す時刻Ｔ＋２ΔＴであれば、トラッキング補正量取得部４１ｄは時刻Ｔ＋３ΔＴにおける対象物Ｗの移動量を補正量Ｓｔｍとして取得する。
【００９２】
ここで、時刻Ｔ＋３ΔＴにおける対象物Ｗの移動量は、撮影時刻Ｔ以後の移動量（図８に示すＬ）である。そこで、トラッキング補正量取得部４１ｄは、撮影時刻Ｔから現在時刻Ｔ＋２ΔＴまでの対象物Ｗの移動量（Ｌ１＋Ｌ２）から次の微小時間ΔＴにおける移動量Ｌ３を推定し、当該移動量Ｌ３を撮影時刻Ｔから現在時刻Ｔ＋２ΔＴまでの対象物Ｗの移動量（Ｌ１＋Ｌ２）に加えるなどして移動量Ｌを取得する。各時刻における移動量Ｌは、各時刻においてトラッキング補正量取得部４１ｄから出力される補正量Ｓｔｍとなる。
【００９３】
次に、ロボット制御装置４０は、現在の制御目標でロボット１を制御する（ステップＳ１２５）。制御目標には位置制御の移動目標位置Ｓｔｔと力制御の目標力ｆＳｔとが含まれ、力制御の目標力ｆＳｔが設定されていない場合、ロボット制御装置４０は、位置制御モードで現在時刻におけるパラメーターでＴＣＰを移動させる。すなわち、位置制御指令取得部４１ｃは、ステップＳ１１５において取得された微小時間ΔＴ毎の目標位置に基づいて、現在の時刻の次の時刻におけるＴＣＰの目標位置Ｓｔｃを出力する。また、トラッキング補正量取得部４１ｄは、ステップＳ１２０において取得された現在の時刻におけるＴＣＰの位置の補正量Ｓｔｍを出力する。
【００９４】
そして、ロボット制御装置４０は、指令統合部４３の機能により、当該位置Ｓｔｃと補正量Ｓｔｍを結合して得られる移動目標位置Ｓｔｔに基づいて、ＴＣＰが現在時刻の移動目標位置Ｓｔｔに移動するようにロボット１を制御する。この結果、ロボット１（スクリュードライバー２１）が対象物Ｗの搬送装置５０による搬送に追従して移動する状態となる。図８においては、微小時間毎の目標位置Ｐ１，Ｐ２，Ｐ３が補正量Ｌ１，（Ｌ１＋Ｌ２），（Ｌ１＋Ｌ２＋Ｌ３）で補正された結果、ＴＣＰが移動する位置を位置Ｐ’１，Ｐ’２，Ｐ’３として示している。このように、本実施形態によれば、ＴＣＰが工程毎の最終的な目標位置としてのネジ穴Ｈ０上空に向かう位置制御と、搬送装置５０の搬送に追従する位置制御が結合された状態で位置制御が行われる。
【００９５】
力制御の目標力ｆＳｔが設定されている場合、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、力覚センサーＰの出力を取得し、ＴＣＰに対して現在作用している作用力ｆＳを特定する。そして、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、作用力ｆＳと目標力ｆＳｔとを比較し、両者が異なる場合に作用力ｆＳが目標力ｆＳｔとなるようにロボット１を移動させるための制御指令（力由来補正量ΔＳ）を取得する。ロボット制御装置４０は、指令統合部４３の機能により、位置制御の制御指令（移動目標位置Ｓｔｔ）と力制御の制御指令（力由来補正量ΔＳ）との双方を統合してロボット１に出力する。この結果、搬送装置５０による対象物Ｗの移動にロボット１が追従する状態で、力制御を伴うネジ締め作業が行われる。
【００９６】
次に、ロボット制御装置４０は、指令統合部４３の機能により、ネジ締め作業が開始可能であるか否かを判定する（ステップＳ１３０）。すなわち、力制御の伴う作業（工程）は、エンドエフェクター２０が対象物Ｗに対して既定の関係（位置および姿勢）になった状態で開始可能である。このため、本実施形態においては、ロボット１が対象物Ｗの移動に追従して移動している過程において、当該既定の関係が実現されたか否かを判定し、実現されたと判定された場合に作業を開始するように構成されている。本実施形態において、作業開始前は位置制御モードで制御が実行され、作業開始後は力制御モードで制御が実行される。
【００９７】
作業が開始可能であるか否かの判定は、種々の指標に基づいて行われてよい。例えば、作業が開始可能であるか否かを判定するための情報をセンサーで検出する構成を採用可能である。センサーは、種々の構成であって良く、各種の波長の電磁波を検出するカメラや距離センサーであっても良いし、力覚センサーＰであっても良い。カメラや距離センサーは、任意の位置に取り付けられて良く、例えば、作業開始前の対象物Ｗが検出範囲に含まれるようにエンドエフェクター２０やスクリュードライバー２１に対してカメラや距離センサーが取り付けられる構成を採用可能である。
【００９８】
力覚センサーＰが利用される場合、例えば、スクリュードライバー２１等のツールを対象物Ｗに近づけた場合に予定外の力が検出されず、予定の範囲内の力が検出された場合にロボット制御装置４０が作業を開始可能であると判定する構成が挙げられる。また、各種のセンサーの出力が安定化した場合に作業開始可能と判定されても良いし、作業開始前の工程の最終的な目標位置（例えば、ネジ穴であればネジ穴の上空）への到達後、所定時間が経過した場合に作業開始可能と判定されても良い。この構成によれば、準備が完了する前に作業が開始されることはなく、作業の失敗が発生する可能性を低減することができる。
【００９９】
ステップＳ１３０において、ネジ締め作業が開始可能であると判定されない場合、ロボット制御装置４０は、ステップＳ１２０以降の処理を繰り返す。すなわち、ロボット１が対象物Ｗに対して追従して移動し、ネジ穴の上方の作業開始可能な位置にＴＣＰが存在する状態で安定的に追従するまでステップＳ１２０以降の処理が繰り返される。
【０１００】
ステップＳ１３０において、ネジ締め作業が開始可能であると判定された場合、ロボット制御装置４０は、作業が終了したか否かを判定する（ステップＳ１３５）。作業の終了は、種々の判定要素で判定可能であり、例えば、ネジ穴に対するネジの挿入の完了した場合や、ロボット１がｚ軸方向の目標位置に達した場合、スクリュードライバー２１によって適正なトルクでネジ締めが行われた場合に作業が終了したと判定する構成を採用可能である。ステップＳ１３５において、ネジ締め作業が終了したと判定された場合、ロボット制御装置４０は、ネジ締め処理を終了する。
【０１０１】
一方、ステップＳ１３５において、ネジ締め作業が終了したと判定されない場合、ロボット制御装置４０は、目標力ｆＳｔが設定済であるか否かを判定する（ステップＳ１４０）。ステップＳ１４０において、目標力ｆＳｔが設定済であると判定された場合、ロボット制御装置４０は、ステップＳ１２０以降の処理を繰り返す。
【０１０２】
一方、ステップＳ１４０において、目標力ｆＳｔが設定済であると判定されない場合、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、ネジに対してｚ軸負方向に一定値、ｘｙ軸方向に０の力が作用するような目標力ｆＳｔを設定する（ステップＳ１４５）。すなわち、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、ネジに対してｚ軸負方向に一定値、ｘｙ軸方向に０の力を作用させるためにＴＣＰに作用すべき力を目標力ｆＳｔに設定する。この結果、力制御部４２は、インピーダンス制御に基づいて特定された力由来補正量ΔＳを出力可能な状態となる。従って、この状態でステップＳ１２５が実行されると、ＴＣＰに作用する力を目標力ｆＳｔとする力制御が行われる。
【０１０３】
次に、ロボット制御装置４０は、ｚ軸方向の目標位置を作業終了位置に修正し、スクリュードライバー２１を駆動する（ステップＳ１５０）。すなわち、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、コマンドに基づいてネジ締め完了の際の位置を特定し、ｚ軸方向の目標位置を当該位置に修正する。ｙ軸方向の目標位置は、ステップＳ１２０において対象物Ｗの移動量に応じた補正量Ｓｔｍで経時的に修正されるため、ステップＳ１５０の修正後におけるステップＳ１２５では、ｙ軸方向において対象物Ｗにスクリュードライバー２１が追従する。さらに、ステップＳ１５０において、ロボット制御装置４０は、指令統合部４３の機能により、スクリュードライバー２１に対して制御信号を出力し、スクリュードライバー２１を回転させる。
【０１０４】
ステップＳ１５０が実行された後、ステップＳ１２０〜Ｓ１４０が繰り返されると、ロボット制御装置４０は、ステップＳ１２５において、指令統合部４３により、ロボット１をｙ軸方向に移動させつつｚ軸方向にも移動させる（この過程でスクリュードライバー２１は回転している）。そして、スクリュードライバー２１の先端のネジがネジ穴に接し得る状態においては、ｚ軸負方向に一定の力が作用し、ｘ軸、ｙ軸方向には力が０になるように制御される。このため、ネジは対象物Ｗの移動に阻害されることなくネジ穴に挿入される。
【０１０５】
（３）他の実施形態：
以上の実施形態は本発明を実施するための一例であり、他にも種々の実施形態を採用可能である。例えば、上述の実施形態の一部の構成が省略されてもよいし、処理の順序が変動または省略されてもよい。さらに、上述の実施形態においては、ＴＣＰについて目標位置Ｓｔや目標力ｆＳｔが設定されたが、他の位置、例えば力覚センサーＰについてのセンサー座標系の原点やネジの先端等について目標位置や目標力が設定されても良い。
【０１０６】
さらに、カメラで撮影した複数の画像（例えば動画）に基づいて、対象物Ｗの位置、移動方向、移動速度が取得されても良い。さらに、搬送装置による搬送経路は直線状でなくてもよい。この場合、対象物の位置や搬送経路に沿った対象物の移動速度は、センサー等によって補足される。さらに、対象物に存在する複数のネジ穴に対してネジ締めの作業が行われる構成であっても良い。この場合、１個のネジ穴に対するネジ締め作業の終了後、他のネジ穴に対するネジ締めが行われるため、他のネジ穴の現在位置を補足するための処理が行われる。例えば、ステップＳ１０５で複数のネジ穴が特定された後、各ネジ穴の現在位置が補足され続けても良いし、１個のネジ穴の現在位置から見て他のネジ穴が存在する位置が設計情報等から特定されることにより他のネジ穴の現在位置が特定されても良い。
【０１０７】
ロボットは、力制御によって動作することができればよく、任意の態様の可動部で対象物に関する作業を実施できれば良い。エンドエフェクターは、対象物に関する作業に利用される部位であり、任意のツールが取り付けられても良い。対象物は、ロボットによる作業対象となる物体であれば良く、エンドエフェクターによって把持された物体であっても良いし、エンドエフェクターが備えるツールで扱われる物体であっても良く、種々の物体が対象物となり得る。
【０１０８】
図１０および図１１は対象物の例を示す図であり、これらの図において、図１と同様の構成は同様の符号で示している。図１０は、対象物Ｗ１がプリンターである例を示しており、ロボット１は、対象物Ｗ１の本体に対して筐体の外枠を取り付けるためのネジ締め作業を行う。すなわち、ロボット制御装置４０がカメラ３０で撮影された対象物Ｗ１のネジ穴Ｈを特定する。また、ロボット制御装置４０は、ロボット１を制御し、搬送装置５０による搬送に伴う当該ネジ穴Ｈの移動にエンドエフェクター２０（スクリュードライバー２１）を追従させる。そして、ロボット制御装置４０は、力制御を伴う制御によってロボット１にネジ締め作業を行わせる。この結果、対象物の移動を妨げることなく、作業を行うことができる。
【０１０９】
図１１は、対象物Ｗ２が車両である例を示しており、ロボット１００は、対象物Ｗ２である車両の車体が備えるネジ穴（図示せず）に対してスクリュードライバー２１によってネジ締め作業を行う。なお、図１１に示す例において、搬送装置５２は、製造中の車両を搬送台５２ａに乗せてｙ軸負方向に搬送することが可能である。また、カメラ３２は、破線で示すようにｙ−ｚ平面を向いた視野を有しており、搬送装置５２によって搬送される車両を撮影することができる。また、ロボット１００は、車輌製造工場内の天井や梁、壁等に設置される。
【０１１０】
このような構成においてロボット制御装置４０は、カメラ３０で撮影された対象物Ｗ２のネジ穴を特定する。また、ロボット制御装置４０は、ロボット１００を制御し、搬送装置５０による搬送に伴う当該ネジ穴Ｈの移動にエンドエフェクター２０（スクリュードライバー２１）を追従させる。そして、ロボット制御装置４０は、力制御を伴う制御によってロボット１００にネジ締め作業を行わせる。この結果、対象物の移動を妨げることなく、作業を行うことができる。なお、図１１において、ロボット制御装置４０と搬送装置５００との接続線は省略されている。以上のように、対象物は、種々の作業対象を想定可能である。
【０１１１】
ロボットの可動部は、ロボットの設置位置に対して相対的に移動し、姿勢が変化するように構成されていれば良く、その自由度（可動軸の数等）は任意である。ロボットの態様は、種々の態様であって良く、直交ロボット、水平多関節ロボット、垂直多関節ロボット、双腕ロボット等であって良い。むろん、軸の数やアームの数、エンドエフェクターの態様等は種々の態様を採用可能である。
【０１１２】
ロボットに作用させる目標力は、当該ロボットを力制御によって駆動する際にロボットに作用させる目標力であれば良く、例えば、力覚センサー、ジャイロセンサー、加速度センサー等の力検出部によって検出される力（または当該力から算出される力）を特定の力に制御する際に、当該力が目標力となる。
【０１１３】
力制御によって対象物に作用させる力は、任意の方向の力とすることが可能であり、特に、対象物の移動方向と異なる方向の力とすることが好ましい。例えば、対象物がｙ軸正方向に移動するのであれば、ｙ軸負方向に向いた力を含め、ｙ軸正方向と異なる方向の各種力が力制御によって対象物に作用させるべき力となり得る。いずれにしても、対象物に当該力が作用することにより、力制御によって対象物に対する作業が行われればよい。力制御によって対象物に作用させる力を対象物の移動方向と異なる方向の力とする形態は、力制御をより正確に実行できる点で好ましい。
【０１１４】
図９は、ロボット制御装置４０の他の構成例を示す機能ブロック図である。ここでは、対象物に対する力制御による制御結果を、次回以降の対象物の制御に利用するために、力制御部４２内にトラッキングオフセット取得部４２ｂが追加されている。トラッキングオフセット取得部４２ｂは、ロボットに作用する力を目標力にするための力制御が行われた場合に、当該力制御に必要であった移動量である力由来補正量ΔＳを取得し、過去の力制御における力由来補正量ΔＳの履歴に応じて代表補正量ΔＳｒを決定する。代表補正量ΔＳｒは、トラッキング補正量取得部４１ｄに供給される。トラッキング補正量取得部４１ｄは、新たな対象物に対してエンドエフェクター２０を追従させる場合に、通常通りに特定された対象物Ｗの移動量に、代表補正量ΔＳｒを加算して位置補正量Ｓｔｍを求める。なお、トラッキングオフセット取得部４２ｂは、位置制御部４１内に設けても良い。
【０１１５】
過去の力制御における力由来補正量ΔＳを代表する代表補正量ΔＳｒを利用する理由は以下の通りである。ロボットに作用する力を目標力にする力制御は、現在の力が目標力と異なる場合にはエンドエフェクター２０を移動させることで現在の力を目標力に近づける。そして、同一の形状および大きさの対象物に対して同一の作業を複数回実行する場合、当該力制御による力由来補正量ΔＳは再現され得る。そこで、力制御ではなく、エンドエフェクター２０を対象物に追従させる位置制御を行う際の対象物の移動量に、力制御において再現され得る力由来補正量ΔＳに相当する代表補正量ΔＳｒを加えれば、力制御において必要な補正を位置制御によって実現することが可能になる。このため、新たな対象物に関する制御が簡易な制御になり、作業のサイクルタイムを短くすることができる。なお、力制御の代表補正量ΔＳｒは、種々の手法によって特定されて良く、例えば、複数回の力制御における力由来補正量ΔＳの統計値（例えば、平均値又は中央値）であっても良いい。統計値の他の例としては、力制御による力由来補正量ΔＳの分散や標準偏差が所定の範囲内に収束した場合には、当該力由来補正量ΔＳの分布のピークに相当する力由来補正量ΔＳ（すなわち、最頻値）を採用可能である。
【０１１６】
さらに、上述の図４や図９に示す制御のための構成は一例であり、他の構成が採用されてもよい。例えば、目標位置取得部４１ｂで目標位置Ｓｔを取得する際に、搬送装置５０による対象物Ｗの移動による補正量で目標位置が補正される構成であっても良い。さらに、指令統合部４３でモーターＭ１〜Ｍ６の制御量が取得される際に、搬送装置５０による対象物Ｗの移動に追従するように制御量が補正される構成であっても良い。
【０１１７】
さらに、実施形態で実施し得る作業はネジ締めに限定されず、他の種々の作業を実施可能である。以下では、他の実施形態として、次の３つの作業を行う形態を順次説明する。
（ａ）嵌合作業：
エンドエフェクターが備える把持部によって把持された嵌合物を対象物に形成された嵌合部に嵌合する作業。
（ｂ）研磨作業：
エンドエフェクターが備える研磨ツールによって対象物を研磨する作業。
（ｃ）バリ取り作業：
エンドエフェクターが備えるバリ取りツールによって対象物のバリを除去する作業。
【０１１８】
図１２は、嵌合作業を行うロボットシステムを示しており、図１に示すロボット１のエンドエフェクター２０にグリッパー２１０が取り付けられた構成を示している。図１２に示す構成において、グリッパー２１０以外の構成は図１に示すロボット１と同様である。
【０１１９】
エンドエフェクター２０にグリッパー２１０が取り付けられた場合、搬送装置５０によって搬送される対象物に対して、グリッパー２１０でグリップした物体を利用した作業を行うことができる。図１２に示す例においては、対象物Ｗ３の上面（カメラ３０によって撮影される面）に嵌合穴Ｈ３が形成されており、ロボット１はグリッパー２１０で把持した嵌合物Ｗｅを嵌合穴Ｈ３に嵌合させる作業を行う。
【０１２０】
図１３は、図１２に示す嵌合作業を行う嵌合処理の例を示すフローチャートである。嵌合処理は、搬送装置５０による対象物Ｗ３の搬送が開始された場合に実行される。図１３のフローチャートは、ステップＳ２０５，Ｓ２１０，Ｓ２５０以外は図７のフローチャートとほぼ同じである。図１３の処理は、図７の処理における「ネジ締め作業」を「嵌合作業」と読み替え、また、「ネジ穴」を「嵌合穴」と、「スクリュードライバー２１」を「グリッパー２１０」とそれぞれ読み替えることにより理解できるので、以下では主としてステップＳ２５０の内容を説明する。
【０１２１】
図１３のステップＳ１４５において、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、嵌合物Ｗｅに対してｚ軸負方向に一定値、ｘ軸、ｙ軸方向に０の力を作用させるためにＴＣＰに作用すべき力を目標力ｆＳｔに設定する。
【０１２２】
次に、ロボット制御装置４０は、ｚ軸方向の目標位置を作業終了位置に修正する（ステップＳ２５０）。すなわち、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、コマンドに基づいて嵌合完了の際の位置を特定し、ｚ軸方向の目標位置を当該位置に修正する。ｙ軸方向の目標位置は、ステップＳ１２０によって経時的に修正されるため、ステップＳ２５０の修正後におけるステップＳ１２５では、ｙ軸方向において対象物Ｗ３にグリッパー２１０が追従し、ｚ軸方向において嵌合穴の方向にグリッパー２１０が下降するように目標位置が設定される。
【０１２３】
ステップＳ２５０が実行された後、ステップＳ１２０〜Ｓ１４０が繰り返されると、ロボット制御装置４０は、ステップＳ１２５において、指令統合部４３により、ロボット１をｙ軸方向に移動させつつｚ軸方向にも移動させる。そして、嵌合物Ｗｅが嵌合穴Ｈ３に接し得る状態においては、ｚ軸負方向に一定の力が作用し、ｘ軸、ｙ軸方向には力が０になるように制御される。このため、嵌合物Ｗｅは対象物Ｗ３の移動に阻害されることなく挿入される。
【０１２４】
図１４は、研磨作業を行うロボットシステムを示しており、図１に示すロボット１のエンドエフェクター２０にグラインダー２１１が取り付けられた構成を示している。図１４に示す構成において、グラインダー２１１以外の構成は図１に示すロボット１と同様である。
【０１２５】
エンドエフェクター２０にグラインダー２１１が取り付けられた場合、搬送装置５０によって搬送される対象物に対して、グラインダー２１１によって研磨作業を行うことができる。図１４に示す例においてロボット１は、直方体である対象物Ｗ４の稜Ｈ４（カメラ３０によって撮影される稜）をグラインダー２１１で研磨する作業を行う。
【０１２６】
図１５は、図１４に示す研磨作業を行う研磨処理の例を示すフローチャートである。研磨処理は、搬送装置５０による対象物Ｗ４の搬送が開始された場合に実行される。図１５のフローチャートは、ステップＳ３０５，Ｓ３１０，Ｓ３４５，Ｓ３５０以外は図７のフローチャートとほぼ同じである。図１５の処理は、図７の処理における「ネジ締め作業」を「研磨作業」と読み替え、また、「ネジ穴」を「稜」と、「スクリュードライバー２１」を「グラインダー２１１」とそれぞれ読み替えることにより理解できるので、以下では主としてステップＳ３４５，Ｓ３５０の内容を説明する。
【０１２７】
図１５のステップＳ１４０において、目標力が設定済であると判定されない場合、ロボット制御装置４０は、力制御指令取得部４２ａの機能により、グラインダー２１１の砥石に対してｘ軸、ｙ軸およびｚ軸の負方向に一定の力が作用するような目標力を設定する（ステップＳ３４５）。すなわち、グラインダー２１１においてｘ軸負方向に一定の力が作用し、ｙ軸負方向の力およびｚ軸負方向の力の合力でグラインダー２１１の砥石を対象物Ｗ４方向に押しつけながら研磨が行われるようにＴＣＰに作用すべき目標力ｆＳｔが設定される。
【０１２８】
この結果、力制御部４２は、インピーダンス制御に基づいて特定された補正量ΔＳを出力可能な状態となる。従って、この状態でステップＳ１２５が実行されると、ＴＣＰに作用する力を目標力ｆＳｔとする力制御が行われる。当該力制御により、対象物Ｗ４の稜Ｈ４に沿ってグラインダー２１１がスムーズに移動し、かつ、研磨対象に砥石が押しつけられた状態で研磨を行うことができる。
【０１２９】
次に、ロボット制御装置４０は、ｘ軸方向の目標位置を作業終了位置に修正し、グラインダー２１１を駆動する（ステップＳ３５０）。すなわち、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、コマンドに基づいて研磨完了の際の位置を特定し、ｘ軸方向の目標位置を当該位置に修正する。ｙ軸方向の目標位置は、ステップＳ１２０において対象物Ｗ４の移動量に応じた補正量Ｓｔｍで経時的に修正されるため、ステップＳ３５０の修正後におけるステップＳ１２５では、ｙ軸方向において対象物Ｗ４にグラインダー２１１が追従し、ｘ軸方向において稜の方向にグラインダー２１１が移動するように目標位置が設定される。さらに、ステップＳ３５０において、ロボット制御装置４０は、指令統合部４３の機能により、グラインダー２１１に対して制御信号を出力し、グラインダー２１１の回転を開始させる。
【０１３０】
ステップＳ３５０が実行された後、ステップＳ１２０〜Ｓ１４０が繰り返されると、ロボット制御装置４０は、ステップＳ１２５において、指令統合部４３により、ロボット１をｙ軸方向に移動させつつｘ軸負方向にも移動させる。そして、グラインダー２１１の砥石が稜Ｈ４に接し得る状態においては、ｘ軸負方向に一定の力が作用し、ｙ軸負方向の力とｚ軸負方向の力の合力で砥石が稜Ｈ４に押しつけられるように制御される。このため、移動中の対象物Ｗ４に対して移動を阻害することなく研磨を行うことができる。
【０１３１】
図１６は、バリ取り作業を行うロボットシステムを示しており、図１に示すロボット１のエンドエフェクター２０にバリ取りツール２１２が取り付けられた構成を示している。図１６に示す構成において、バリ取りツール２１２以外の構成は図１に示すロボット１と同様である。
【０１３２】
エンドエフェクター２０にバリ取りツール２１２が取り付けられた場合、搬送装置５０によって搬送される対象物に対して、バリ取りツール２１２によってバリ取り作業を行うことができる。図１６に示す例においてロボット１は、直方体である対象物Ｗ５の稜Ｈ５（カメラ３０によって撮影される稜）をバリ取りツール２１２でバリ取りする作業を行う。
【０１３３】
図１７は、図１６に示すバリ取り作業を行うバリ取り処理の例を示すフローチャートである。バリ取り処理は、搬送装置５０による対象物Ｗ５の搬送が開始された場合に実行される。図１７のフローチャートは、ステップＳ４５０以外は図１５のフローチャートとほぼ同じである。図１７の処理は、図１５の処理における「研磨作業」を「バリ取り作業」と読み替え、また、「グラインダー２１１」を「バリ取りツール２１２」とそれぞれ読み替えることにより理解できるので、以下では主としてステップＳ４５０の内容を説明する。
【０１３４】
ステップＳ３４５においてバリ取りツール２１２のバリ取り部に対してｘ軸、ｙ軸およびｚ軸の負方向に一定の力が作用するような目標力を設定すると、ロボット制御装置４０は、ｘ軸方向の目標位置を作業終了位置に修正し、バリ取りツール２１２を駆動する（ステップＳ４５０）。すなわち、ロボット制御装置４０は、目標位置取得部４１ｂの機能により、コマンドに基づいてバリ取り完了の際の位置を特定し、ｘ軸方向の目標位置を当該位置に修正する。ｙ軸方向の目標位置は、ステップＳ１２０において対象物Ｗの移動量に応じた補正量Ｓｔｍで経時的に修正されるため、ステップＳ４５０の修正後におけるステップＳ１２５では、ｙ軸方向において対象物Ｗ５にバリ取りツール２１２が追従し、ｘ軸方向において稜の方向にバリ取りツール２１２が移動するように目標位置が設定される。さらに、ステップＳ４５０において、ロボット制御装置４０は、指令統合部４３の機能により、バリ取りツール２１２に対して制御信号を出力し、バリ取りツール２１２の回転を開始させる。
【０１３５】
ステップＳ４５０が実行された後、ステップＳ１２０〜Ｓ１４０が繰り返されると、ロボット制御装置４０は、ステップＳ１２５において、指令統合部４３により、ロボット１をｙ軸方向に移動させつつｘ軸負方向にも移動させる。そして、バリ取りツール２１２のバリ取り部が稜Ｈ５に接し得る状態においては、ｘ軸負方向に一定の力が作用し、ｙ軸負方向の力とｚ軸負方向の力の合力でバリ取り部が稜Ｈ５に押しつけられるように制御される。このため、移動中の対象物Ｗ５に対して移動を阻害することなくバリ取りを行うことができる。
【符号の説明】
【０１３６】
１…ロボット、１０…アーム、２０…エンドエフェクター、２１…スクリュードライバー、３０，３２…カメラ、４０…ロボット制御装置、４１…位置制御部、４１ａ…対象物位置取得部、４１ｂ…目標位置取得部、４１ｃ…位置制御指令取得部、４１ｄ…トラッキング補正量取得部、４２…力制御部、４２ａ…力制御指令取得部、４２ｂ…トラッキングオフセット取得部、４３…指令統合部、４５…教示装置、５０…搬送装置、５０ａ，５０ｂ…搬送ローラー、５２…搬送装置、５２ａ…搬送台、１００…ロボット、２１０…グリッパー、２１１…グラインダー、２１２…バリ取りツール、４００…パーソナルコンピューター、５００…クラウドサービス
【図１】
2018083284.tif 000004
【図２】
2018083284.tif 000005
【図３】
2018083284.tif 000006
【図４】
2018083284.tif 000007
【図５】
2018083284.tif 000008
【図６】
2018083284.tif 000009
【図７】
2018083284.tif 000010
【図８】
2018083284.tif 000011
【図９】
2018083284.tif 000012
【図１０】
2018083284.tif 000013
【図１１】
2018083284.tif 000014
【図１２】
2018083284.tif 000015
【図１３】
2018083284.tif 000016
【図１４】
2018083284.tif 000017
【図１５】
2018083284.tif 000018
【図１６】
2018083284.tif 000019
【図１７】
2018083284.tif 000020