(57)【要約】【課題】ロボットを制御する教示データの変更を行った制御ステップと、その制御ステップにより影響を受ける他の制御ステップについて確実に確認運転（確認動作）を実行できるようにする。【解決手段】教示データ差分検出部１０４により内容が変更された教示データの変更前後の差分を抽出する。影響範囲判断部１０５は影響範囲判断条件ＤＢ１０６を用いて教示データから抽出された差分に係る制御ステップがロボットアーム１４０の動作に及ぼす影響範囲を判断する。動作確認情報付加部１０９により、影響範囲判断部１０５が特定した影響範囲に含まれロボットアーム１４０を動作させる制御ステップに対し、前記確認動作が未実施であることを示す動作確認情報を付加する。【選択図】図１
2016083730.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御ステップから構成される教示データに基づきロボットアームの位置姿勢を制御する制御装置を備え、内容が変更された前記制御ステップにより定義される動作を前記ロボットアームに実行させる確認動作を行うロボット装置の制御方法において、
前記制御装置は、
前記教示データの変更前後の差分を抽出する差分検出行程と、
前記教示データから前記差分検出行程で抽出された前記差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断する影響範囲判断行程と、
前記影響範囲に含まれ前記ロボットアームを動作させる制御ステップに対し、前記確認動作が未実施であることを示す動作確認情報を付加する情報付加行程と、
を実行することを特徴とするロボット装置の制御方法。
【請求項２】
請求項１記載のロボット装置の制御方法において、前記教示データに基づき前記ロボットアームを動作させる場合、前記制御装置は、前記動作確認情報が未実施を示している制御ステップにより実行される前記ロボットアームの動作速度を所定の速度条件を超えないよう制御する動作制限行程を実行することを特徴とするロボット装置の制御方法。
【請求項３】
請求項１または２に記載のロボット装置の制御方法において、前記制御装置は、前記確認動作を実行し、当該の確認動作が正常に終了した制御ステップの前記動作確認情報を実施済みに更新する情報更新行程と、を実行することを特徴とするロボット装置の制御方法。
【請求項４】
請求項１から３のいずれか１項に記載のロボット装置の制御方法において、前記情報付加行程において、前記制御装置は、前記影響範囲に含まれ前記ロボットアームを動作させる制御ステップに対し、動作開始位置、動作目標位置、加速度条件、ないしは速度条件の各動作条件パターンの内、少なくともいずれか１つ、または複数からなる動作条件パターン毎に動作確認情報を付加することを特徴とするロボット装置の制御方法。
【請求項５】
請求項１から４のいずれか１項に記載のロボット装置の制御方法において、前記教示データが所定のロボット制御言語の記述形式により表現されたプログラムデータであることを特徴とするロボット装置の制御方法。
【請求項６】
請求項１から５のいずれか１項に記載のロボット装置の制御方法において、前記制御装置は、前記影響範囲判断行程において、影響範囲判断条件データベースに格納された制御ステップの制御内容と影響範囲を関連づけたデータベース情報に従って、前記差分検出行程で抽出された前記差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断することを特徴とするロボット装置の制御方法。
【請求項７】
請求項６に記載のロボット装置の制御方法において、前記影響範囲判断条件データベースに格納された、制御ステップの制御内容と影響範囲を関連づけたデータベース情報の内容が変更可能に構成されていることを特徴とするロボット装置の制御方法。
【請求項８】
前記制御装置に請求項１から７のいずれか１項に記載の制御を実行させることを特徴とするロボット制御プログラム。
【請求項９】
請求項８に記載のロボット制御プログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１０】
複数の制御ステップから構成される教示データに基づきロボットアームの動作を制御する制御装置を備え、内容が変更された前記制御ステップの動作を前記ロボットアームに実行させる確認動作を行うロボット装置において、
前記制御装置は、
前記教示データの変更前後の差分を抽出し、
前記教示データから抽出された前記差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断し、
前記影響範囲に含まれ前記ロボットアームを動作させる制御ステップに対し、前記確認動作が未実施であることを示す動作確認情報を付加することを特徴とするロボット装置。
【請求項１１】
請求項１０記載のロボット装置において、前記教示データに基づき前記ロボットアームを動作させる場合、前記制御装置は、前記動作確認情報が未実施を示している制御ステップにより実行される前記ロボットアームの動作速度を所定の速度条件を超えないよう制御する動作制限を実行することを特徴とするロボット装置。
【請求項１２】
請求項１０または１１に記載のロボット装置において、前記制御装置は、前記確認動作を実行し、当該の確認動作が正常に終了した制御ステップの前記動作確認情報を実施済みに更新する情報更新を実行することを特徴とするロボット装置。
【請求項１３】
請求項１０から１２のいずれか１項に記載のロボット装置において、前記制御装置は、前記影響範囲に含まれ前記ロボットアームを動作させる制御ステップに対し、動作開始位置、動作目標位置、加速度条件、ないしは速度条件の各動作条件パターンの内、少なくともいずれか１つ、または複数からなる動作条件パターン毎に動作確認情報を付加することを特徴とするロボット装置。
【請求項１４】
請求項１０から１３のいずれか１項に記載のロボット装置において、前記教示データが所定のロボット制御言語の記述形式により表現されたプログラムデータであることを特徴とするロボット装置。
【請求項１５】
請求項１０から１４のいずれか１項に記載のロボット装置において、前記制御装置は、影響範囲判断条件データベースに格納された制御ステップの制御内容と影響範囲を関連づけたデータベース情報に従って、前記差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断することを特徴とするロボット装置。
【請求項１６】
請求項１５に記載のロボット装置において、前記影響範囲判断条件データベースに格納された、制御ステップの制御内容と影響範囲を関連づけたデータベース情報の内容が変更可能に構成されていることを特徴とするロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、教示データに基づきロボットアームの動作を制御する制御装置を備え、内容が変更された前記制御ステップの動作を前記ロボットアームに実行させる確認動作を行うロボット装置の制御方法、およびそのロボット装置に関するものである。
【背景技術】
【０００２】
ロボットの制御方式として、操作者が予めロボットに作業を覚え込ませ、その作業を繰り返し実行させるティーチング・プレイバック方式が知られている。このロボットに作業を覚え込ませるロボットプログラミングの作業を教示（ティーチング）と呼ぶことがある。オペレータは教示操作盤あるいはオフライン・ティーチング環境を用いて、一連のロボット動作に係る手順、動作および位置をティーチング（教示）データとして記録する。
【０００３】
上記のうち、教示操作盤はティーチング・ペンダントなどとも呼ばれ、通常、ロボットの設置現場に、ロボットアーム、ロボット制御装置とともに配置される。この教示操作盤はオンライン（実環境中）で実際に１ステップずつロボットアームを動作させることにより、所望の作業を教示するのに用いられる。一方、オフライン・ティーチング環境とは、ロボットの設置現場とは異なるオフライン環境に配置された、例えばＰＣ等のコンピュータ端末と同等のハードウェア構成を有する制御端末を用いて、ロボット動作を教示（プログラム）する教示環境を指す。オフライン・ティーチング環境では、制御端末には必ずしも教示対象であるロボットアームが接続されておらず、主にプログラムテキストの入力・編集作業によってロボットプログラミングを行う。
【０００４】
上記の教示データは、例えばロボットアームを制御するロボット制御装置の所定の記憶装置に格納される。教示データは、ロボットアームの特定の基準部位の位置姿勢を表現したいわゆる教示点データの形式で表現される。また、教示データは、下記の非特許文献１のようなロボット制御言語により記述されたプログラムテキストと、あるいはさらに教示点データの組合せ、といった形式でロボット制御装置によって管理される場合もある。教示データを「ロボットプログラム」と言う場合、例えば上記のようなプログラムテキスト（あるいはさらに教示点データの組合せ）によって表現された教示データのことを指す場合がある。
【０００５】
ロボット制御装置は、上記のような教示データ、例えばロボットプログラムを順次実行することでロボットアームに所望の作業を実行させることができる。
【０００６】
ここで、教示操作盤や教示により作成した教示データに誤りがあった場合、ロボットと配置環境を共有する周囲の装置や建造物との干渉や、操作者の保護が不十分となる状態を引き起こす可能性がある。そこで、運用上、例えば新規作成した教示データによってロボットを動作させる場合には、ロボットの動作を低速に設定し、順次速度を上げながら教示データを１ステップずつ逐次実行させるといった慎重な確認運転が求められることがある。しかしながら、この確認運転を怠ったり、また確認すべき動作に漏れがあるなどの状態で自動運転（オンライン動作：例えば教示データ通りの動作速度による自動実行）を実施してしまうと、予期せぬ事態を引き起こす可能性がある。
【０００７】
この点に鑑み、ロボットプログラムの各教示対象動作ステップに誤動作防止用フラグを設け、全ての動作ステップに対して１ステップずつ確認運転を行わない限り、自動運転を実行できないようにした構成が提案されている（例えば下記の特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−１９５２９号公報
【非特許文献】
【０００９】
【非特許文献１】日本工業規格  ＪＩＳＢ８４３９  産業用ロボット‐プログラム言語  ＳＬＩＭ
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１の技術では、既に確認済みの教示データを修正（変更）するケースを考慮していない。また、ロボットプログラムの場合、命令文によってはプログラム変更の影響がその一文に限らず、構文上、関連のある別の多数の個所にも変更の影響が及ぶ場合があるが、特許文献１の技術では、そのような影響範囲についても考慮されていない。このため、特許文献１の技術では、１個所の修正（変更）によって予期しない大きな範囲で誤動作を生じる可能性がある一方、修正の影響範囲が小さい場合でも、確認運転が必要となり、オペレータに必要以上の確認運転を強制する可能性がある。
【００１１】
以上に鑑み、本発明の課題は、ロボットを制御する教示データの変更を行った制御ステップと、その制御ステップにより影響を受ける他の制御ステップについて確実に確認運転（確認動作）を実行できるようにすることにある。また、本発明の他の課題は、ロボットの確認運転（確認動作）においては、自動的に動作速度を低速に設定するなどの動作制限を自動的に実行できるようにすることにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明においては、複数の制御ステップから構成される教示データに基づきロボットアームの動作を制御する制御装置を備え、内容が変更された前記制御ステップの動作を前記ロボットアームに実行させる確認動作を行うロボット装置の制御方法、あるいは当該のロボット装置において、前記制御装置は、前記教示データの変更前後の差分を抽出し、前記教示データから抽出された前記差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断し、前記影響範囲に含まれ前記ロボットアームを動作させる制御ステップに対し、前記確認動作が未実施であることを示す動作確認情報を付加する構成を採用した。
【発明の効果】
【００１３】
本発明によれば、上記の差分生成と影響判断に基づき、ロボットを制御する教示データの変更を行った制御ステップと、その制御ステップにより影響を受ける他の制御ステップについて確実に確認運転（確認動作）を実行することができる。このため、例えば、ロボットの確認運転（確認動作）においては、自動的に動作速度を低速に設定するなどの動作制限を自動的に実行することができる。従って、本発明によれば、ロボットアームの教示作業を容易かつ確実に短時間で効率よく実施できる、という優れた効果がある。
【図面の簡単な説明】
【００１４】
【図１】本発明を実施可能なロボット制御装置の概略構成を示すブロック図である。
【図２】ロボット教示データ変更に伴う動作影響の一例を示し、（ａ）は教示データ変更前のプログラム例、（ｂ）は教示データ変更後のプログラム例、（ｃ）は対応するロボット動作の変化、をそれぞれ示した説明図である。
【図３】本発明の一実施例に係るロボット教示データの作成（編集）〜動作確認に係る全体の処理手順の一例を示したフローチャート図である。
【図４】本発明の一実施例に係る教示データ差分検出処理（図３ステップＳ２）の詳細な処理手順を示したフローチャート図である。
【図５】本発明の一実施例に係る変更差分影響範囲判断処理（図３ステップＳ３）の詳細な処理手順を示したフローチャート図である。
【図６】本発明の一実施例に係る動作確認情報付加処理（図３ステップＳ４）の詳細な処理手順を示したフローチャート図である。
【図７】本発明の一実施例に係る動作確認運転処理（図３ステップＳ５）の詳細な処理手順を示したフローチャート図である。
【図８】本発明の一実施形態に係る影響範囲判断条件の一例を示した説明図である。
【発明を実施するための形態】
【００１５】
以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。
【実施例】
【００１６】
図１は、本発明の一実施形態に係るロボット制御装置１００の概略的な機能構成を中心に示している。ロボット制御装置１００は、教示データ入力部１０１、教示データ編集部１０２、記憶部１０３、教示データ差分検出部１０４、影響範囲判断部１０５、影響範囲判断条件ＤＢ１０６を備えている。ロボット制御装置１００は、さらに、教示データ差分情報１０７、影響範囲情報１０８、動作確認情報付加部１０９、動作確認情報１１０、動作制限部１１１、動作確認情報更新部１１２、ロボット制御部１１３を備えている。
【００１７】
上記の各部は、機能的なブロック表示によって示してある。影響範囲判断条件ＤＢ１０６、教示データ差分情報１０７、影響範囲情報１０８、動作確認情報１１０、といった「情報」として表示されている（円筒型の）ブロックは、実際には後述のＲＡＭ２０３や外部記憶装置２０４の特定の記憶領域に格納される。その他の（矩形で示した）機能ブロックは、実際には主にロボット制御装置１００のブロック左端部に示したＣＰＵ２０１を中心とする制御装置のハードウェア、およびそれによって実行される後述の制御ソフトウェアによって構成される。このＣＰＵ２０１を中心とする制御系のハードウェアおよびソフトウェア的な構成については後で詳述する。
【００１８】
ロボットアーム１４０は、ロボット制御装置１００により制御される産業用ロボット、教示操作盤１５０は、オペレータが教示を行う際に利用する操作盤である。ロボットアーム１４０のハードウェア構成は任意であるが、例えば６軸垂直多関節型のロボットアームなどから構成される。教示操作盤１５０は、ティーチング・ペンダントなどと呼ばれ、通常、ロボット制御装置１００、ロボットアーム１４０とともに製造や加工、組み立ての現場に配置される。教示操作盤１５０には、教示データ編集部１０２で行われる後述のプログラム入力、変更、あるいはオンラインでロボットアーム１４０をジョグ操作あるいはインチング操作によりステップ動作させることができるよう構成される。このため、教示操作盤１５０には、ディスプレイおよびキーボードなどから成るユーザーインターフェース手段が設けられる。
【００１９】
ロボット制御部１１３は、記憶部１０３に記憶されている教示データに基づき、ロボットアーム１４０を動作させることができる。ロボット制御部１１３は、記憶部１０３の教示データ、特に後述の変更後教示データ１３０を解釈し、解釈した結果に基づきロボットアーム１４０への動作指令の生成および送信を行い、ロボットアーム１４０の位置姿勢を制御する。
【００２０】
ロボット制御部１１３の制御によるロボットアーム１４０の動作は、動作制限部１１１によって制限することができる。本実施例では、動作制限部１１１は、所定の条件に応じて特にロボット制御部１１３が制御するロボットアーム１４０の動作速度が所定の速度条件を超えないように制限する。動作制限部１１１の動作制限は、例えば後述のようにロボットプログラムのステップごとに付与される動作確認情報１１０の値に応じて実施される。なお、動作制限部１１１の機能が後述のＣＰＵ２０１のプログラム実行により実現されるものと考えれば、この機能は動作制限行程、と読み換えてもよい。
【００２１】
また、ロボットプログラムの制御ステップごとに付与される動作確認情報１１０の値は、動作確認情報更新部１１２によって更新される。動作確認情報更新部１１２は、ロボットプログラムのステップごとに付与される動作確認情報１１０の値（確認済／未実施）は、ロボット制御部１１３が当該の制御ステップを実際に確認動作させたか否に応じて更新する。なお、動作確認情報更新部１１２の機能が後述のＣＰＵ２０１のプログラム実行により実現されるものと考えれば、この機能は、動作確認情報のための情報更新行程、と読み換えてもよい。
【００２２】
ロボットアーム１４０の位置姿勢の制御に用いられる記憶部１０３の変更後教示データ１３０は、教示データ入力部１０１、教示データ編集部１０２、教示操作盤１５０といった各部により入力し、また編集（変更）することができる。
【００２３】
教示データ入力部１０１は、教示データをロボット制御装置１００の外部の装置から入力できるよう構成される。教示データ入力部１０１は、ハードウェア的には、教示データを入力する外部装置と通信する後述のインターフェース２０５ないしネットワークインターフェース２０６の部分を含む。
【００２４】
ここで、教示データの入力源であるここで外部の装置とは、例えば上述のオフライン・ティーチング環境を構成するロボットプログラミング制御端末などである。この制御端末は、例えば、ディスプレイ、キーボード、ポインティングデバイスなどのユーザーインターフェース（ＵＩ）を備えたパーソナルコンピュータ（ＰＣ）とほぼ同等のハードウェアから構成することができる。
【００２５】
教示データ入力部１０１は、入力した教示データを記憶部１０３に格納する。その際、教示データ差分検出部１０４で編集（変更）が行われる前と後の差分を生成できるよう、記憶部１０３の機能が実現されている必要がある。記憶部１０３はハードウェア的には、後述のＲＡＭ２０３や外部記憶装置２０４によって構成された記憶領域である。そして、上記のような差分検出のためには、例えば変更前教示データ１２０と変更後教示データ１３０を比較し、両者の差分を生成できるよう記憶管理することが考えられる。例えば、このような差分生成を可能とする記憶管理には、公知の種々の手法を利用してよい。例えば、外部記憶装置２０４にいわゆるジャーナル・ファイルシステムを用い、任意のタイミングで変更前と変更後の状態を例えばファイル形式で取り出せるよう構成する手法を用いることができる。また、新たに、教示データ入力部１０１から教示データを入力する場合、自動的に古い教示データのバックアップ（ファイル）を別名で保存するようないわゆる自動バックアップ方式を用いてもよい。
【００２６】
記憶部１０３中に示した変更前教示データ１２０と変更後教示データ１３０は、ある変更が行われた場合、上記のような適当な手段によって差分を抽出できるよう用意された変更前と後の教示データを概念的に示したものである。
【００２７】
本実施例の場合、変更前教示データ１２０と変更後教示データ１３０は、教示点データおよびロボットプログラムから成る構成を有するものとする。即ち、変更前教示データ１２０は変更前教示点データ１２１、変更前ロボットプログラム１２２から、また、変更後教示データ１３０は、変更後教示点データ１３１、変更後ロボットプログラム１３２からそれぞれ構成される。
【００２８】
ここで、ロボットプログラムとは、例えば上述のＳＬＩＭのようなロボット制御言語によって記述されたプログラムテキスト（あるいはその中間コードやアセンブルされた実行形式バイナリでもよい）である。教示点データ（教示位置データ）は、ロボットアーム１４０の位置姿勢を所定フォーマットで記述したデータである。教示点データの記述フォーマットには、例えば、ロボットアーム１４０の位置姿勢を複数（例えば６軸）の関節の角度で記述した書式を用いられる。また、教示点データの記述フォーマットには、アームの基準部位（たとえばツール類を装着するアーム先端のフランジ面中心など）の３次元ロボット座標系における座標値、および各種の姿勢制御フラグなどを含む記述形式が用いられることもある。教示点データは、上記ロボットプログラムの命令文（ステートメント）で、多くはオペランドの位置に出現する。
【００２９】
なお、図１では、変更前教示データ１２０と変更後教示データ１３０は、教示点データおよびロボットプログラムを明確に分離した形式で図示しているが、これはあくまでも便宜的なものに過ぎない。例えば、ロボット制御部１１３がロボットプログラムをインタプリタ実行する場合には、必ずしも図示のように教示点データおよびロボットプログラムは異なる記憶領域に分離して記憶されていなくても構わない。例えば、教示点データはロボットプログラムのテキスト中に埋め込まれた形で記憶されていてもよい。例えば、上記のロボット制御言語ＳＬＩＭ上では、定義されているロボットの位置、姿勢、形態を格納する変数として、いわゆるポーズ変数が用いられている。このポーズ変数の初期値などの形式を有する教示点データは、ロボットプログラムのテキスト中に埋め込まれた状態で取り扱うことができる。後述する本実施例のロボット制御は、上記のような形式で教示点データがロボットプログラムのテキスト中に埋め込まれた状態で格納されていても機能を発揮するよう構成されている。
【００３０】
また、本実施例において、記憶部１０３中の教示データは、教示操作盤１５０によっても編集（変更）を加えることができるよう構成されている。例えば、教示データ編集部１０２は、教示操作盤１５０の操作に応じて、（例えばステップ実行を交じえつつ）記憶部１０３中の教示データを変更できるよう構成される。即ち、好ましくは、教示データ編集部１０２は教示操作盤１５０の操作に応じて教示点データの編集やロボットプログラムの編集など、教示データへオペレータの所望する変更を加えることが可能なように構成する。教示操作盤１５０の操作に応じて教示データ編集部１０２による教示データの変更が行われた場合には、教示データ入力部１０１からの入力の場合と同様に、変更前と後の差分を生成できるよう、変更前教示データ１２０、変更後教示データ１３０が生成される。
【００３１】
本実施例においては、ロボット制御部１１３は、記憶部１０３に格納された複数の制御ステップから構成される教示データに基づきロボットアーム１４０の動作を制御する。その場合、運用上、ロボットアーム１４０のオンライン自動運転に先立ち、教示データの各制御ステップに対して、必ず１度は確認動作を行わせる。特に、教示データに対して何らかの変更が加えられている場合、内容が変更された記憶部１０３の変更後教示データ１３０の制御ステップの動作をロボットアーム１４０に実行させる確認動作を必ず行なわせるよう制御する。
【００３２】
そのため、本実施例では、教示データ差分検出部１０４で教示データの変更前後の差分を抽出し、さらに、影響範囲判断部１０５によって抽出された差分に係る制御ステップがロボットアームの動作に及ぼす影響範囲を判断する。そして、影響範囲に含まれロボットアーム１４０を動作させる制御ステップに対し、動作確認情報付加部１０９によって、確認動作が未実施または実施済みのいずれであるかを示す動作確認情報を付加する。
【００３３】
そして、教示データに基づき前記ロボットアームを動作させる場合、例えば動作確認情報が未実施を示している制御ステップにより実行されるロボットアーム１４０の動作を動作制限部１１１によって制限する。その場合、例えば、ロボットアーム１４０の動作速度が所定の速度条件を超えないよう制御する。また、確認動作を実行し、当該の確認動作が正常に終了した制御ステップの動作確認情報については、動作確認情報更新部１１２によって実施済みを示す値に更新する。
【００３４】
図１の記憶部１０３よりも右側、ロボット制御部１１３よりも上部の各機能ブロックは、上記のようなロボット制御を行うための構成である。これらの各機能ブロックの構成につき、以下、さらに詳細に説明する。上記の通り、これら各機能ブロックのうち、矩形で示したブロックは例えば後述のＣＰＵ２０１がその機能に対応するプログラム（例えばＲＯＭ２０２に格納される）を実行することにより実現される。
【００３５】
まず、教示データ差分検出部１０４は、記憶部１０３に記憶されている変更前教示データ１２０および変更後教示データ１３０との間の差分を検出し、検出した差分を抽出できるよう構成する。教示データ差分検出部１０４の機能は、例えば後述のＣＰＵ２０１が実行する差分演算処理ルーチンによって実現できる。この教示データの差分検出および抽出は、例えば変更前と後のロボットプログラム（１２２、１３２）のテキスト差分を生成することによって可能である。このような（プログラム）テキストの差分を行うソフトウェア手法は公知であるため、本実施例ではその詳細な説明は省略する。なお、教示データ差分検出部１０４の機能が後述のＣＰＵ２０１のプログラム実行により実現されるものと考えれば、この機能は教示データの差分検出行程、と読み換えることもできる。
【００３６】
教示データ差分情報１０７は、教示データ差分検出部１０４により抽出された変更前教示データ１２０と変更後教示データ１３０との間の差分を示す情報に相当する。当然ながら、この教示データ差分情報１０７は、教示データのうち、当該の変更に係る部分のみ（ただし、教示データ差分検出部１０４の実装によっては、変更の前後の文脈に相当するプログラムテキストなどが含まれる場合もあり得る）を含んでいる。
【００３７】
影響範囲判断部１０５は、影響範囲判断条件ＤＢ１０６に格納された判断条件を基に、教示データ差分検出部１０４により抽出された教示データ差分情報１０７から、ロボット動作が影響を受ける動作影響範囲を判断する。後述のように、影響範囲判断部１０５は、変更後ロボットプログラム１３２の各ステップに対し影響を受けたか受けていないかを判断可能な影響範囲情報１０８を付加する。影響範囲判断部１０５は、影響範囲を判断する場合、影響判断カウンタ１１４を用いてある制御ステップに影響を受ける他の制御ステップが存在するか否かを判断する（図５）。なお、影響範囲判断部１０５の機能が後述のＣＰＵ２０１のプログラム実行により実現されるものと考えれば、この機能は影響範囲判断行程、と読み換えることもできる。
【００３８】
影響範囲判断部１０５が影響範囲判断に用いる影響範囲判断条件ＤＢ１０６は、ある教示データの差分がロボットの動作に及ぼす影響範囲を判断するための条件を格納したデータベースである。
【００３９】
ここで、例えば、図２（ａ）に示すロボットプログラムのテキストが、図２（ｂ）のように変更された場合を考える。この例では、行番号として１１を持ち、ポーズ変数Ｐ１への代入演算を行うＬＥＴ代入文“ＬＥＴ  Ｐ１＝Ｐ１＋（１０，０，１０）Ｈ”（図２（ａ））が変更されている。ポーズ変数Ｐ１は、ロボットアーム１４０の基準部位の位置姿勢を制御する、ある教示点データに相当する。例示したＬＥＴ代入文は、ポーズ変数Ｐ１の元の値に３次元座標値を加算した値をＰ１の新たな値として代入するものであるが、図２（ａ）の右辺の座標値“（１０，０，１０）Ｈ”は図２（ｂ）では“（１０，１０，１０）Ｈ”に変更されている。
【００４０】
このＬＥＴ代入文のようにポーズ変数Ｐ１を左辺値とする代入文が変更された場合、この変更は、直接には変更（編集）されていない他の動作制御文にも影響を与える。まず、この例では、直接的には、そのポーズ変数を引数にとる動作制御文、例えば図２（ｂ）の行番号１２の“ＭＯＶＥ  Ｌ，Ｐ１”の動作が変化する。さらに、間接的には、動作制御文の次に実行される動作制御文、例えば図２（ｂ）の行番号１３の“ＭＯＶＥ  Ｌ，Ｐ２”についても動作が変化する。
【００４１】
図２（ａ）から（ｂ）の変更によって、例えば、図２（ｃ）に示すようにロボットアーム１４０の基準部位の動作軌跡が変化する。ポーズ変数Ｐ１の変更によって、プログラムの実行開始位置から移動する基準部位の位置はＰ１（変更前）からＰ１（変更後）に変化する。ポーズ変数Ｐ２の値は変更されておらず、従ってＰ２に対応する基準部位の位置（座標）は変化しないが、Ｐ１からＰ２の位置へロボットアーム１４０の基準部位が移動する軌跡は変更前と後では図示のように異なるものとなる。そこで、本実施例では、図２（ａ）、（ｂ）の行番号１２、１３のような動作制御文についても影響範囲内である、と判断する。そして変更された動作制御文はもちろん、変更の影響範囲にある動作制御文に対応する制御ステップについても、動作確認情報のフラグを変更して、必ず確認動作を実行させるよう制御する。
【００４２】
本実施例の影響範囲判断条件ＤＢ（影響範囲判断条件データベース）１０６は、上述のような教示データのうち、特にその制御内容に対応する命令文をキーとして、その命令文が影響を及ぼす影響範囲を条件データベース化したものである。図８は影響範囲判断条件ＤＢ１０６のデータベース内容の一例を示している。図８は、主にロボット制御言語ＳＬＩＭと同等の命令文のうち主要なものについて、その影響範囲をデータベース化した一例を示している。図８のデータベースは、左から条件ＩＤ（通し番号）、命令文種別、命令文、影響範囲の各フィールドから構成されている。このような影響範囲判断条件ＤＢ１０６を用いて、教示データの差分から影響範囲のデータを求めるには、例えば当該の教示データの命令文をキーとして命令文のフィールドを検索する。これにより対応するデータベースレコードを特定でき、そのレコードの影響範囲の内容を取得することができる。
【００４３】
なお、図８では、理解を容易にするために、データ内容は日本語で表記してある。しかしながら、実際の影響範囲判断条件ＤＢ１０６では、特に命令文、影響範囲のフィールドなどについては、当然ながら後述のＣＰＵ２０１などの制御手段が扱い易い適当なニーモニックや識別番号などのデータ形式を用いることができる。
【００４４】
影響範囲判断条件ＤＢ１０６は、例えば後述の外部記憶装置２０４やＲＯＭ２０２の記憶領域に格納される。なお、影響範囲判断条件ＤＢ１０６のデータベース内容は、ロボット制御装置１００の外部から追加、削除、といった変更が可能に（変更可能に）ように構成することができる。これによって、例えば影響範囲判断条件ＤＢ１０６の有する影響範囲の定義を変更してロボット制御言語の言語仕様の変更などに容易に対応することができる。
【００４５】
なお、以上では、説明を容易にするため、図８の影響範囲判断条件ＤＢ１０６のデータベース内容については、プログラム言語のニーモニックを用いて記述している。また、同じ理由で教示データ（プログラムデータ）の差分は例えば（インタプリタ実行される）プログラムテキストの差分であることを前提として説明した。しかしながら、本実施例において差分の抽出や、影響範囲の判断に係る教示データは、例えばコンパイルないしアセンブルされた中間コードや実行形式バイナリコードであっても構わない。その場合、教示データ差分検出部１０４として中間コードやバイナリコードを対象とするソフトウェアを用意することにより対応が可能である。また、影響範囲判断条件ＤＢ１０６のデータベース内容についても、例えば図８の命令文のフィールドに検索可能な中間コードやバイナリコード形式のデータを格納することにより対応できる。
【００４６】
次に、動作確認情報付加部１０９は、影響範囲判断部１０５により動作影響があると判断された変更後ロボットプログラム１３２の各制御ステップに対しそれぞれ動作確認情報を付加するよう構成される。具体的には、この動作確認情報は、動作確認を「未実施」か「実施済」であるかどうかを判断可能な情報を動作確認フラグとして実装することができる。付加した動作確認フラグの集合は、動作確認情報１１０として記憶させる。なお、動作確認情報付加部１０９の機能が、後述のＣＰＵ２０１のプログラム実行により実現されるものと考えれば、この機能は、ひとつの情報付加行程、と読み換えることもできる。
【００４７】
この動作確認情報１１０は、後述の外部記憶装置２０４やＲＡＭ２０３の記憶領域に格納することができる。その場合、変更後ロボットプログラム１３２の制御ステップとの関連付けは、動作確認情報とともに対応する制御ステップを識別可能な情報（例えば上記の行番号など）をデータテーブルの形で格納することによって行う。動作確認情報を影響範囲判断部１０５により動作影響があると判断された制御ステップのみに用意するのではなく、例えば変更後ロボットプログラム１３２の全行番号分の動作確認フラグを配置したデータテーブルを確保するような記憶形式を用いてもよい。なお、影響範囲判断部１０５により動作影響があると判断された制御ステップであって、かつ実際の物理的なロボットアーム１４０の動作に影響を与える動作制御文を有する制御ステップにのみ、動作確認情報を付加するようにしてもよい。
【００４８】
動作制限部１１１は、変更後ロボットプログラム１３２の各制御ステップについて、動作確認情報１１０が用意されており、その値が未確認であるステップを実行する際に所定の速度条件を超えないように動作制限処理を行う。また、動作確認情報更新部１１２は、動作確認フラグが付加されているステップを実行し、正常終了した場合に、動作確認フラグの値を実施済に更新する。
【００４９】
図１の破線内には、上述のロボット制御装置１００の各機能ブロックを実現するための制御系の構成例を概略的に示してある。この制御系は、汎用マイクロプロセッサなどから成るＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、外部記憶装置２０４、インターフェース２０５、ネットワークインターフェース２０６から構成されている。ＲＯＭ２０２は、例えば後述するアクセス制御プログラムと制御データを格納するために用いることができる。なお、ＲＯＭ２０２に格納したアクセス制御プログラムと制御データを後から更新（アップデート）できるよう、そのための記憶領域はＥ（Ｅ）ＰＲＯＭなどの記憶デバイスによって構成されていてもよい。ＲＡＭ２０３は、ＤＲＡＭ素子などから構成され、ＣＰＵ２０１が各種の制御、処理を実行するためのワークエリアとして用いられる。後述のロボット制御に係る機能は、ＣＰＵ２０１が本実施例のアクセス制御プログラムを実行することにより実現される。なお、図１に示したＣＰＵ（２０１）を中心としたハードウェアと同等の構成は、教示操作盤１５０などの制御系としても用いることができる。
【００５０】
外部記憶装置２０４は、例えばＳＳＤやＨＤＤのディスク装置で構成される。外部記憶装置２０４は、ロボット制御プログラムや教示点データ、あるいは後述するアクセス制御プログラムなどをファイル形式で格納することができる。なお、外部記憶装置２０４は、着脱式の各種光ディスクのような記録媒体、あるいは、着脱式のＳＳＤやＨＤＤのディスク装置、着脱式のフラッシュメモリから構成されていてもよい。このような各種の着脱式のコンピュータ読み取り可能な記録媒体を用いる場合、例えば本発明の一部を構成するアクセス制御プログラムをＲＯＭ２０２にインストールしたりアップデートするために用いることができる。この場合、各種の着脱式のコンピュータ読み取り可能な記録媒体は、本発明を構成する制御プログラムを格納しており、記録媒体それ自体も本発明を構成することになる。
【００５１】
上述のように、ＣＰＵ２０１がＲＯＭ２０２（あるいは外部記憶装置２０４）に格納された各ロボット制御プログラム、ファームウェア、アクセス制御プログラムを実行する。これにより、上述のロボット制御装置１００の各機能ブロックが実現される。
【００５２】
また、図１のインターフェース２０５は、ロボット制御装置１００が他の装置と通信するための入出力部を１ブロックで代表して示したものである。ここで、ロボット制御装置１００が通信する他の装置には、例えば教示操作盤１５０、ロボットアーム１４０などが含まれる。インターフェース２０５は、有線シリアルバスやパラレルバスによる有線接続手段によって構成される。
【００５３】
ネットワークインターフェース２０６は、上述のオフライン環境の制御端末や、他のロボット制御装置、ネットワーク上のサーバなどと通信するために用いられる。このネットワークインターフェース２０６は、特に本実施例では、オフライン環境の制御端末から教示データを入出力するために用いられる。ネットワークインターフェース２０６は、有線、無線接続によるネットワーク通信手段などによって構成される。
【００５４】
次に上記構成におけるロボット制御手順について説明する。以下では、主に図１の右側に示した各機能ブロックの動作を中心に制御手順を説明するが、上述のようにこれら各機能ブロックの動作は主にＣＰＵ２０１が本実施例の制御手順を記述したプログラムを実行することにより実現される。当該のＣＰＵ２０１が実行するプログラムは、例えばＲＯＭ２０２や外部記憶装置２０４に格納しておく。
【００５５】
図３のステップＳ１においては、教示データを作成（または修正、変更）する。教示データをオンラインティーチングによって作成する場合には、例えば操作者の教示操作盤１５０の操作に応じて教示データ編集部１０２により教示データが作成（または修正、変更）される。この時、教示操作盤１５０からは、例えばプログラムテキストと教示点を指定する操作や、キーボードなどを介したジョグ操作やインチング操作により実際にロボットアーム１４０を動作させる教示操作が行われる。こうして新規に作成された教示データは、変更前教示データ１２０として記憶部１０３へ記憶する。また、教示操作に応じて変更（修正）された教示データは変更後教示データ１３０として記憶部１０３へ記憶する。
【００５６】
また、教示データをオフライン教示により作成する場合は、例えば上述の外部の制御端末で入力ないし編集された教示データが教示データ入力部１０１を介してロボット制御装置１００へ入力される。入力された教示データは、上述のように変更後教示データ１３０として記憶部１０３に格納される。また、既に動作確認済みの教示データをオフライン教示により変更した場合は、変更前の教示データも併せて教示データ入力部１０１を介してロボット制御装置１００へ入力することができる。この変更前の教示データは、変更前教示データ１２０として記憶部３に格納する。
【００５７】
次に、ステップＳ２において、教示データ差分検出部１０４により、記憶部３の変更前教示データ１２０と変更後教示データ１３０の差分の検出および抽出を行う。教示データ差分検出部１０４が抽出した差分に基づき教示データ差分情報１０７が作成される。このステップＳ２の教示データ差分検出処理は図４に示してある。ここで、図４に示した教示データ差分検出部１０４の教示データ差分検出処理につき説明する。
【００５８】
図４のステップＳ２０１では、まず、記憶部１０３に変更前教示データ１２０が存在するかどうかを判断する。存在する場合はステップＳ２０２へ進み、存在しない場合はステップＳ２０５へ進む。
【００５９】
ステップＳ２０２では、変更前教示データ１２０と変更後教示データ１３０との間の差分を検出する。差分検出は、例えばプログラムテキストの比較によって行うことができる。なお、この段階では、差分があるかどうかを検出できればよく、すべての差分を検出する必要はない。
【００６０】
次にステップＳ２０３において、ステップＳ２０２の処理で差分が検出されたかどうかを判断する。ここで変更前教示データ１２０と変更後教示データ１３０の間で差分が検出された場合はステップＳ２０４へ進み、差分が検出されなかった場合は図４の教示データ差分検出処理を終了する。
【００６１】
ステップＳ２０４では、変更前教示データ１２０と変更後教示データ１３０との間の差分を抽出する。例えば、教示点データでは教示点単位、ロボットプログラムではステップ単位で差分を抽出する。抽出した差分情報を教示データ差分情報１０７として記憶し、図４の教示データ差分検出処理を終了する。
【００６２】
一方、ステップＳ２０１で変更前教示データ１２０が存在しない場合、ステップＳ２０５において変更後教示データ１３０の全てを教示データ差分情報１０７へ記憶する。例えば、新規の教示データのみが教示データ入力部１０１を介して外部から入力されたような場合には、変更前教示データ１２０が存在しない状態となる。この場合には、このステップＳ２０１〜Ｓ２０５の処理によって、変更後教示データ１３０の全てを差分情報として取り扱うことになる。これにより、新規の教示データの全部について確認動作を行うよう、後述の動作確認情報付加処理（図６）によって、動作確認フラグの値が生成されることになる。
【００６３】
以上のようにして、図４の教示データ差分検出部１０４の教示データ差分検出処理が終了する。
【００６４】
再び図３において、ステップＳ３では、影響範囲判断部１０５によって、ステップＳ２において抽出した変更差分がロボットの動作に及ぼす影響範囲を判断する。影響範囲判断部１０５によって、教示データ差分情報１０７を影響範囲判断条件ＤＢ１０６に格納される影響範囲判断条件に関するデータベース情報を用いて解析する。また、影響範囲判断部１０５は、影響判断カウンタ１１４を用いて、ある制御ステップの影響範囲に他の制御ステップが存在するか否かを判定する（図５）。影響範囲判断部１０５が行う変更差分から影響範囲を判断処理の詳細は図５に示してある。図５の影響範囲判断部１０５による影響範囲判断処理につき説明する前に、まず図８を用いて影響範囲の概略につき説明する。
【００６５】
図８の影響範囲判断条件ＤＢ１０６は、影響範囲判断条件をデータベース情報として格納したもので、上述のように、例えば条件ＩＤ、命令文種別、命令文、および影響範囲の各フィールドから構成する。このうち、条件ＩＤフィールドは影響範囲判断条件を一意に特定するために利用される。命令文種別および命令文フィールドは、ロボットプログラミング言語の命令文種別および命令文を示しており、例えば教示データ差分情報１０７中に出現する命令文をキーとして命令文フィールドを検索すれば該当するデータベースレコードを特定できる。影響範囲フィールドは命令文フィールドの命令文に変更があった場合の影響範囲を規定するデータを格納したフィールドである。上記のようにこれらのフィールドの内容は、実際にはＣＰＵ２０１が容易に処理できる適当なニーモニックや数値による識別情報で表現される。
【００６６】
例えば、教示データ差分情報１０７中に出現するＭＯＶＥ文が現れた場合、このＭＯＶＥ文が変更されたことが判る。この命令文（ＭＯＶＥ文）を図８の影響範囲判断条件ＤＢ１０６で検索すると、条件ＩＤ４および条件ＩＤ５の影響範囲フィールドに規定される範囲の動作が影響を受けることが判る。図５の影響範囲判断では概略このようにして制御ステップの命令文で影響範囲判断条件ＤＢ１０６を検索し、制御ステップ毎に影響範囲判断条件の命令文に合致するか判断し、合致する場合に影響範囲フィールドに規定される動作が影響を受けると判断する。そして、影響があると判断された変更後ロボットプログラム１３２の制御ステップを影響範囲情報１０８として記録する。
【００６７】
なお、上記のＭＯＶＥ文に関する条件ＩＤ４や条件ＩＤ５に示されるように、命令文によっては、他の複数の制御ステップの命令文に及ぶ場合がある。しかも、ある命令文の変更によって影響を受ける、例えば子、孫…のような関係にある全ての制御ステップは同様に影響範囲を持っており、当然これら子、孫…の関係にある制御ステップに関しても影響範囲情報１０８を記録する。以下に説明する図５の影響範囲判断部１０５による影響範囲判断処理は、変更された制御ステップの影響範囲と子、孫…の関係にある制御ステップを、いわゆる芋づる式に処理できるよう構成されている。
【００６８】
さて、図５のステップＳ３０１においては、影響範囲判断部１０５が変更後ロボットプログラム１３２に対して構文解析を行う。この構文解析は、例えば公知の構文解析木およびフローグラフを生成するような処理によって構成される。この構文解析では、変更後ロボットプログラム１３２の例えばテキスト中から命令文が逐一特定され、また命令文に対応する個々の制御ステップにより構成される制御構造が特定される。
【００６９】
ステップＳ３０２では、ステップＳ３０１で特定した変更後ロボットプログラム１３２の各制御ステップに対して、影響有無フラグを付加する。この影響有無フラグは影響有または影響無の２値を持つフラグであり、初期値は影響無とする。この影響有無フラグは、ロボットプログラム１３２の制御ステップと対応付けが可能な形で影響範囲情報１０８として記憶する。
【００７０】
ステップＳ３０３では、教示データ差分情報１０７とステップＳ３０１で特定した制御構造（例えば構文解析木）に基づき、変更後ロボットプログラム１３２に格納された制御ステップの影響有無フラグ（影響範囲情報１０８）を「影響有」の値に更新する。また、ステップＳ３０１で生成した制御構造（例えば構文解析木およびフローグラフ）に基づき、変更後教示点データ１３１に含まれる教示点データを引数に取る変更後ロボットプログラム１３２の制御ステップに対して、影響有無フラグを「影響有」に更新する。このステップＳ３０３の処理は、変更が行なわれた命令文に対応する制御ステップ、および教示点に対応する制御ステップを「影響有」の影響有無フラグでマークする処理に相当する。なお、このステップＳ３０３の処理をルール化し、影響範囲判断条件ＤＢへ影響範囲判断条件として加えてもよい。
【００７１】
続いて、図５のステップＳ３０４では、影響判断カウンタ１１４に０を代入する。この変数は影響範囲判断処理の終了条件判定に利用する。
【００７２】
続いて、ステップＳ３０５〜Ｓ３０９のループ処理によって、影響範囲判断処理を行う。この影響範囲判断処理は、変更が行われた１つの制御ステップを起点として、例えば子、孫…の関係を有する全ての影響範囲にある制御ステップを特定し、影響有無フラグを「影響有」に更新する処理である。
【００７３】
まず、ステップＳ３０５は、ステップＳ３０９を終了端とするループ開始端である。このループでは、ステップＳ３０３で影響有無フラグの値が「影響有」に更新された変更後ロボットプログラム１３２の各制御ステップに対して順次、ステップＳ３０６〜Ｓ３０８の処理を実施する。このループでは、「影響有」の影響有無フラグを持つ制御ステップが、適当なポインタ変数などを用いて順次処理対象とされる。
【００７４】
ステップＳ３０６では、当該の制御ステップが影響範囲判断条件ＤＢ１０６に格納される影響範囲判断条件に合致するかどうか判断する。この判断は、上記のように制御ステップの命令文から影響範囲判断条件ＤＢ１０６を検索し、該当する条件データのレコードが存在するか否かを判定することにより行う。ここで制御ステップ（の命令文）が影響範囲判断条件と合致した場合ステップＳ３０７へ進み、合致しない場合はステップＳ３０９へ進む。
【００７５】
ステップＳ３０７では、変更後ロボットプログラム１３２の制御ステップ中で、ステップＳ３０６で合致した影響範囲判断条件で規定される影響範囲の制御ステップを特定し、その影響有無フラグを「影響有」に更新する。このように影響範囲判断条件ＤＢ１０６の影響範囲判断条件を用いることによって、必ずしも教示データ差分情報１０７に含まれていない（直接変更されていない）制御ステップも影響範囲にあるものとして特定することができる。また、このステップＳ３０７が実行された、ということは、ある（変更された）制御ステップによって、影響を受ける（例えば子の関係を有する）他の制御ステップが存在する、ということを意味する。
【００７６】
続く、ステップＳ３０８では、影響判断カウンタ１１４をインクリメントする。従って、影響判断カウンタ１１４の値が非ゼロ（ゼロではない）場合には、上記の影響を受ける他の制御ステップが１つ以上（影響判断カウンタ１１４のカウント値分だけ）存在する、ということを意味する。
【００７７】
ステップＳ３０９はステップＳ３０５を開始端とするループの終了端である。ステップＳ３０９から、影響有無フラグの値が「影響有」である変更後ロボットプログラム１３２の影響有無フラグの値が「影響有」である制御ステップに対して上記の処理（Ｓ３０５〜Ｓ３０８）が実施された場合はステップＳ３１０へ進む。一方、まだ影響有無フラグの値が「影響有」である変更後ロボットプログラム１３２の全ステップを処理していない場合には、ステップＳ３０５へ戻り、上記の処理を繰り返す。
【００７８】
ステップＳ３１０では、影響判断カウンタ１１４のカウント値が０であるかどうか判断し、同カウント値が０であった場合、図５の変更差分影響範囲判断処理を終了し、０以外の値であった場合はステップＳ３０４へ進み、上記の処理を繰り返す。上記の制御構造は、上記のループ中のステップＳ３０６において、一度も影響範囲判断条件ＤＢ１０６の影響範囲判断条件との合致が起きなくなるまで、影響範囲にある全ての制御ステップを影響有無フラグの「影響有」の値でマークする処理に相当する。
【００７９】
以上のようにして、図５の影響範囲判断処理が終了する。この段階で、教示データ差分情報１０７に含まれている（直接変更されている）制御ステップを起点として、影響範囲にある全ての子、孫…関係を有する制御ステップが影響有無フラグの「影響有」の値でマークされる。上記の処理によれば、影響範囲にある全ての子、孫…関係を有する制御ステップが必ずしも直接変更されていないものも含めて影響有無フラグの「影響有」の値でマークされる。
【００８０】
再び図３において、ステップＳ４では、上記ステップＳ３（図５）の影響範囲判断処理で記録された影響範囲情報１０８に基づき、変更後ロボットプログラム１３２の該当する各制御ステップに動作確認情報１１０を付加する。この処理は、動作確認情報付加部１０９により行われる。以下、このステップＳ４の動作確認情報付加処理の詳細につき、図６を用いて説明する。
【００８１】
図６のステップＳ４０１では、現在処理対象となっている変更後ロボットプログラム１３２について、動作確認情報１１０が既に存在するかどうか判断する。動作確認情報１１０は、上述のようにロボット制御部１１３が当該の制御ステップを実際に確認動作させたか否か（確認済／未実施）の値を有するものである。しかしながら、例えば変更後ロボットプログラム１３２が新規に入力された教示データであるなどの場合は、動作確認情報１１０が存在しない。ここで動作確認情報１１０が存在しない存在しない場合は、後述のステップＳ４０４へ進む。一方、１度でも変更が行なわれた変更後ロボットプログラム１３２の場合は、（下記のようにして）動作確認情報１１０が付与されているので、この場合は、動作確認情報１１０が存在しているので、ステップＳ４０２へ進む。１度でも変更が行なわれた変更後ロボットプログラム１３２の場合は、ステップＳ４０２、Ｓ４０３のステップを通る。
【００８２】
まず、ステップＳ４０２では、変更後ロボットプログラム１３２の全ステップに対し、動作確認フラグが付加されており、かつ影響有無フラグの値が「影響有」である制御ステップを探索する。そして、探索された動作確認フラグが付加され、かつ影響有無フラグの値が「影響有」である制御ステップに対して、動作確認情報１１０中において動作確認フラグの値を「未実施」に更新する。
【００８３】
一方、ステップＳ４０３では、動作確認フラグが付加されており、かつ影響有無フラグの値が影響無である制御ステップを探索する。ここで探索された動作確認フラグが付加され、かつ影響有無フラグの値が「影響無」である制御ステップについては動作確認情報１１０中において動作確認フラグを削除する。
【００８４】
また、ステップＳ４０１で動作確認情報１１０が存在しない場合は、ステップＳ４０４において変更後ロボットプログラム１３２の全ステップに対し、動作確認フラグが付加されておらず、かつ影響有無フラグが影響有であるステップを探索する。そして、該当するステップに対し動作確認フラグを付加する。このときの初期値は「未実施」とする。
【００８５】
以上のようにして、図６の動作確認情報付加処理が終了する。
【００８６】
再び図３において、ステップＳ４の動作確認情報付加処理（図６）に続き、ステップＳ５では、動作確認情報付加済みとなった変更後教示データ１３０を用いて動作確認運転（確認動作）を行う。このステップＳ５に相当する動作確認運転処理の詳細は図７に示してある。以下、図７を参照してこの動作確認運転処理（確認動作）の詳細につき説明する。
【００８７】
図７の動作確認運転処理（確認動作）はステップＳ５０１〜Ｓ５１４のループ処理によって構成されている。ステップＳ５０１は、このステップＳ５１４を終了端とするループ処理の開始処理である。このループ処理は、変更後教示データ１３０を用いた動作確認運転（確認動作）に相当し、変更後教示データ１３０を構成する制御ステップを、その制御構文に従って逐次１つずつ実行することによって行われる。変更後教示データ１３０のロボットプログラム１３２の終了条件を満たしていない場合ステップＳ５０２へ進み、一方、同ロボットプログラムの終了条件が成立した場合は図７の動作確認運転処理を終了する。
【００８８】
図７のステップＳ５０２では、変更後ロボットプログラム１３２から制御ステップを１つ読み込む。ステップＳ５０３では、読み込んだ制御ステップに関して、動作確認情報１１０中において動作確認フラグが付加されているかどうかを判断する。ここで当該の制御ステップに動作確認フラグが付加されている場合はステップＳ５０４へ、また付加されていない場合はステップＳ５０７へ進む。
【００８９】
ステップＳ５０４では、当該のステップに付加されている動作確認フラグの値が「未確認」かどうかを判断する。ここで、当該の動作確認フラグの値が「未確認」である場合はステップＳ５０５へ進み、また、同フラグの値が「実施済」である場合はステップＳ５０６へ進む。
【００９０】
ステップＳ５０５では、動作制限部１１１による動作制限を有効とする。本実施例では、動作制限部１１１によって、ロボットアーム１４０の動作速度が所定の速度条件を超えないように動作速度を制限する処理を行う。この所定の速度条件は任意であるが、例えば、ロボットアーム１４０の動作速度をロボットプログラムで指定されている値の１／２であるとか数〜数１０％に制限する、などの条件が考えられる。
【００９１】
なお、動作確認フラグは、上述のようにして直接変更された制御ステップのみならず、影響範囲判断条件ＤＢ１０６を用いた影響範囲判断に基づき、子、孫…の関係を有する全ての影響範囲の制御ステップに関して「未確認」の値を持つよう更新される。例えば図２（ａ）〜（ｃ）の例でいえば、行番号が１１のＬＥＴ文は図８の影響範囲判断条件ＤＢ１０６において条件ＩＤ１とＩＤ２に合致し、影響範囲となる。そして、行番号が１２のＭＯＶＥ文は、条件ＩＤ２を経由して影響範囲となる。また、行番号が１３の文は、条件ＩＤ５を経由して影響範囲となる。従って図２（ａ）、（ｂ）のように行番号が１１のＬＥＴ文の変更が起きた場合、動作確認フラグはＬＥＴ文のみならず、行番号が１２、１３の文についても「未確認」の値を持つよう更新されることになる。そして、これらの命令文に対応する制御ステップについては動作制限部１１１による動作制限が有効となる。
【００９２】
なお、ここでは、上記ＬＥＴ文のような例えば代入文に該当する制御ステップついても、変更された場合には、動作確認フラグを「未確認」の値を持つよう更新することを考えた。しかしながら、代入文のような、その制御ステップを実行するだけでは実際にロボットアーム１４０の動作の起きない制御ステップについては必ずしも動作確認フラグを「未確認」に制御しなくてもよい。あるいは、実行するだけでは実際にロボットアーム１４０の動作の起きない制御ステップについては動作確認フラグ（動作確認情報）の付与を省略するようにしてもよい。
【００９３】
ステップＳ５０６、Ｓ５０７では、ロボット制御部１１３が現在、処理対象となっている制御ステップ（の命令文と教示点データ）を解釈し、その解釈結果の通りにロボットアーム１４０を制御して動作させる。この時、処理が上記のステップＳ５０５〜Ｓ５０６を通っていれば、動作制限部１１１による動作制限が有効となり、ロボットアーム１４０の動作速度がロボットプログラムで指定されている値の１／２であるとか数〜数１０％に制限する動作制限が行われる。なお、このステップＳ５０６における動作制限が有効となるロボットアーム１４０の動作が、図７の動作確認運転の処理では、狭義の意味での「確認動作」に相当するものである。
【００９４】
以上の制御によって、まだ確認動作が１度も行われていない制御ステップについては、動作制限部１１１による動作制限が有効となり、例えば、操作者は当該の制御ステップのロボット動作を目視などによって、充分かつ確実に確認することができる。
【００９５】
ステップＳ５０８では、確認動作を実行した制御ステップが正常に終了したかどうかを判断する。例えば、この判定は操作者が行う。その場合、操作者は、教示操作盤１５０に用意した「確認」（あるいは「ＮＧ」）などのボタンを操作することによって正常（ないし異常）終了の判定結果を入力する。また、ロボットアーム１４０の各部の動作状態などを介して、外部環境との接触などの動作異常を検出できる機構を設け、このメカニズムを利用して正常（ないし異常）終了の判定を行うようにしてもよい。ロボットアーム１４０の各部の動作状態、たとえば関節角度などはエンコーダを介してロボット制御部１１３が取得できるよう構成されるため、例えばこのアームの各部の動作状態を介して動作異常を検出するよう構成すればよい。ステップＳ５０８でステップＳ５０６の確認動作が正常に終了した場合はステップＳ５０９へ進み、また、正常に終了ではない場合は、ステップＳ５１０へ進む。
【００９６】
ステップＳ５０９では、ステップＳ５０６の確認動作が正常終了しているので、実行した当該の制御ステップに付加されている動作確認フラグの値を「実施済」に更新する。この処理は動作確認情報更新部１１２により行われる。
【００９７】
一方、ステップＳ５１０において、教示データを修正するかどうかを、例えば操作者が判断する。教示データを修正する場合はステップＳ５１１へ進み、教示データを修正しない場合はステップＳ５１４へ進む。ここで教示データの修正の機会を用意したのは、ステップＳ５０６で「確認動作」を行なわせた制御ステップの１つごとに、教示データを修正するかどうかを判断できるようにしたものである。操作者は、教示データの修正を希望する場合、例えば教示操作盤１５０でその旨を示す所定の操作（例えば「修正」、「編集」のようなボタン操作が考えられる）を行うものとする。
【００９８】
教示データの修正を行う場合には、ステップＳ５１１〜Ｓ５１３の処理が行なわれる。まず、ステップＳ５１１では、例えば教示データの修正を行う。教示データの修正は、例えば教示操作盤１５０の操作者の修正操作に応じて教示データ編集部１０２により行われる。この修正操作に応じて、教示データ編集部１０２は、修正前の教示データを変更前教示データ１２０、修正後の教示データを変更後教示データ１３０として記憶部１０３へ記憶し直す。
【００９９】
ステップＳ５１２では、図３のステップＳ２と同様に変更差分影響範囲判断の処理（図４）を実行する。
【０１００】
ステップＳ５１３では、図３のステップＳ３と同様に動作確認情報付加の処理（図５）を実施する。
【０１０１】
ステップＳ５１４では、ステップＳ５０１を開始端とするループの終了判定を行う。ループ脱出判定は、上記の説明ではステップＳ５０１で行なっており、その場合は無条件でステップＳ５０１へ戻る。変更後教示データ１３０を構成する制御ステップを制御構造の通りにひと通り処理した場合は上記ステップＳ５０１からこのループを脱出する。
【０１０２】
以上のようにして、図７の動作確認運転処理の処理（図３のステップＳ５）が終了する。図７の動作確認運転処理によれば、ある教示データ（ロボットプログラム）の制御ステップを１つずつ確認動作させ、必要に応じて修正する処理をその教示データの最後までひと通り実行することができる。
【０１０３】
以上のように、本実施例によれば、ロボットの教示データの変更を行う場合、変更前と後の差分を生成して変更個所を特定する。そして教示データの変更が行われた制御ステップを起点とし、子、孫…のような関係で当該の制御ステップの変更に影響を受ける他の制御ステップから成る影響範囲を特定する影響範囲判断を行う。そしてこの影響範囲判断の結果に応じて、変更された制御ステップと、その変更により影響を受ける他の制御ステップについては「未確認」の値を有する動作確認情報を生成する。これにより、動作確認運転においては、動作確認情報が「未確認」の値を有する制御ステップについては、例えば自動的に動作速度を低速に設定するなどの動作制限を自動的に有効として確認動作を実行させることができる。
【０１０４】
すなわち、本実施例によれば、ロボットを制御する教示データの変更を行った制御ステップと、その制御ステップにより影響を受ける他の制御ステップについて確実に確認運転（確認動作）を実行することができる。そして、ロボットの確認運転（確認動作）においては、自動的に動作速度を低速に設定するなどの動作制限を自動的に実行することができる。従って、本実施例によれば、ロボットアームの教示作業を容易かつ確実に短時間で効率よく実施できる、という優れた効果がある。
【０１０５】
なお、上記実施例では、動作条件パターンとの関係において、動作確認フラグは一対一の関係で付与するものとして説明した。しかしながら、動作確認フラグは、動作条件パターンとの関係において、一対多の関係で付加することも考えられる。
【０１０６】
例えば、ロボットプログラムが実行される際の、動作開始位置、動作目標位置、加速度条件、ないしは速度条件の少なくともいずれかまたは複数からなる動作条件パターン毎に別々に動作確認フラグを生成して制御ステップに付与することができる。これは、ＩＦ文に代表されるようなフロー制御文の作用によって、逐一同一の制御ステップであっても、上記の複数の動作条件パターンの特定の組合せにおいては、異なる条件で実行される可能性が考えられるためである。このように動作確認フラグは、動作条件パターンとの関係において、一対多の関係で付加する構成においては、ステップＳ３０１において生成したフローグラフに基づき、動作確認フラグに対応づける動作条件パターンを求めることが考えられる。
【０１０７】
なお、上記の説明ではロボット制御言語としてＳＬＩＭを例示した。しかしながら、他のロボット制御言語を用いる場合でも、例えば言語仕様に応じて図８の影響範囲判断条件ＤＢ１０６の条件データを修正することによって、本発明を同様に実施できるのはいうまでもない。
【符号の説明】
【０１０８】
１００…ロボット制御装置、１０１…教示データ入力部、１０２…教示データ編集部、１０３…記憶部、１０４…教示データ差分検出部、１０５…影響範囲判断部、１０６…影響範囲判断条件ＤＢ、１０９…動作確認情報付加部、１１１…動作制限部、１１２…動作確認情報更新部、１１３…ロボット制御部、１１４…影響判断カウンタ、１２０…変更前教示データ、１３０…変更後教示データ、１５０…教示操作盤
【図１】
2016083730.tif 000003
【図２】
2016083730.tif 000004
【図３】
2016083730.tif 000005
【図４】
2016083730.tif 000006
【図５】
2016083730.tif 000007
【図６】
2016083730.tif 000008
【図７】
2016083730.tif 000009
【図８】
2016083730.tif 000010