(57)【特許請求の範囲】
【請求項１】
同期した制御の単位として複数のロボットを制御対象として定義可能であり、各ロボットは制御軸の部分集合と、これに対応する機構解を異なる組合せで保持し、各ロボットはプログラムタスクから切り替えて使用され制御されることを特徴とするロボットの制御装置。
【請求項２】
各ロボットに属する制御軸の部分集合は互いに重複することを許容し、制御軸の部分集合が各ロボットで互いに重複するか一致する場合は、各ロボットによる制御軸の部分集合の同時使用を禁止し、制御軸の部分集合が各ロボットで重複せず独立な場合は、これらのロボットによる制御軸の部分集合の同時使用を許容して制御することを特徴とする請求項１記載のロボットの制御装置。
【請求項３】
前記ロボットの構成は、前記プログラムタスクから前記制御軸と前記機構解の組合せを適宜選択可能であることを特徴とする請求項１又は２記載のロボットの制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ロボットの制御装置に関する。更に詳述すると、本発明は、多数の制御軸を有する機械装置の制御に適したロボットの制御装置に関するものである。
【０００２】
【従来の技術】
従来のロボットの制御装置では、１つのロボット言語アプリケーションプログラムタスク（以下、プログラムタスクという）が１台のロボットの制御を含む操作を行っている。即ち、１つのプログラムタスクが１台のロボットの制御に対応している。このため、例えば図２５に示すような４つの制御軸１０１〜１０４を備える機械装置を制御する制御装置では、各制御軸１０１〜１０４を各ロボット１０５，１０６で重複して定義することができず、機械装置の制御軸集合を全く独立した別々のものにする必要があった（図２６，図２７）。これは、各ロボット１０５，１０６に重複した制御軸が含まれているとすると、各ロボット１０５，１０６がそれぞれ別々に重複した制御軸を操作することになり、適正なロボット操作を行うことができなくなるからである。そして、図２８に示すように、水平方向位置決め作業のためのプログラムタスクがロボット１０５を、旋回／垂直方向位置決め作業のためのプログラムタスクがロボット１０６を別々に操作し、２台のロボットを使用して機械装置として一連の作業を行っていた（図２９）。
【０００３】
この従来の制御装置では、プログラムタスクと各ロボット１０５，１０６の対応関係がユーザがプログラムを作成する際に決定され、プログラムタスクから当該対応関係を変更することができなかった。即ち、プログラムタスクと各ロボット１０５，１０６とが１対１の関係に固定されており、この関係を機械装置の作業内容に応じて適宜変更して使用することは想定されていなかった。また、プログラムタスクを記述する場合には、機械装置の一連の作業における各ロボット１０５，１０６の分担を考慮して当該ロボット１０５，１０６毎にプログラムタスクを記述する必要があった。
【０００４】
そして、この従来の制御装置では、各ロボット１０５，１０６が備える制御軸の数が異なる場合であっても、例えば図３０及び図３１に示すように、各ロボット１０５，１０６がぞれぞれ４つの制御軸を有する場合であっても、上述の場合と同様に制御を行っていた。
【０００５】
また、従来の制御装置では、制御対象のロボットの機構に、逆機構解が複数存在する場合には逆機構解の計算処理を１つの計算式で表し、逆機構解の選択はこの計算式にパラメータを与えることで行っていた。この機構解の構成は、制御対象のロボットの機構に応じて様々であり、ゆえに逆機構解の計算処理を行う計算式に与える逆機構解選択のパラメータも様々であった。
【０００６】
例えば、水平２軸スカラ型ロボットの場合、逆機構解の計算処理に対して座標変換に必要な座標情報以外に左手系または右手系のいずれの逆機構解を用いるかを選択するパラメータを与えていた。
【０００７】
また、垂直５軸アーム型ロボットの場合、アーム部については水平２軸スカラ型ロボットと同様に左手系または右手系のいずれの逆機構解を用いるかを選択するパラメータを与えていた。一方、エンドエフェクタ部については、アーム部の逆機構解を選択するパラメータとは別に、３通りの順機構解および逆機構解の組に対応したパラメータを与えることで機構解の選択を行っていた。
【０００８】
【発明が解決しようとする課題】
しかしながら、従来のロボットの制御装置では、１つのプログラムタスクで単一のロボットの操作しか出来なかったので、プログラムタスクが操作するロボット１０５，１０６を作業内容に応じて適宜変更することができなかった。このため、機械装置の一連の作業で複数のロボットを使用する必要がある場合に、プログラムが複雑・大型化して実行速度の低下を招いていた。また、複数のプログラムタスクが同じロボットを操作することを許していなかったので、プログラムタスクを作業内容に対応させて記述することができなかった。さらに、各ロボット１０５，１０６毎にプログラムタスクを記述する必要があるため、複数のロボット作業を組み合わせて機械装置として一連の作業を行う場合に、この一連の作業におけるワークの流れを中心にプログラムの記述を行うことができず、プログラムの記述性を悪化させ、各ロボット１０５，１０６の作業能率を低下させる原因となっていた。
【０００９】
また、別々のロボット１０５，１０６では制御軸１０１〜１０４を重複させないようにしていたので、１つの制御軸の集合に対して複数の機構解を定義することができず、作業内容に応じて適切な機構解を用いて制御することが困難であり、ロボットの作業効率およびプログラムの記述性を低下させていた。さらに、各ロボット１０５，１０６の制御軸１０１〜１０４および機構解の組合せをプログラムタスクから変更することが出来なかったので、作業内容に応じてロボット１０５，１０６が備える制御軸１０１〜１０４をユーザが変更することが困難であり、プログラムを複雑化・大型化させてロボットの作業効率を低下させていた。
【００１０】
さらに、逆機構解が複数存在する場合に逆機構解の計算処理を１つの計算式であらわし、逆機構解の選択をこの計算式にパラメータを与えることで行っているので、対応していないロボットの機構解を新規に追加するような場合、逆機構解を選択するパラメータの追加または変更に伴い、機構解計算処理部およびこの計算処理を利用しており関連性が高い処理部が実装されているシステムソフトウェアに大きな変更を加える必要があった。これにより、新規に機構解を追加する場合には、システムソフトウェアの開発に多大な工数と労力を費やすことが強いられていた。
【００１１】
また、利用者の作成するユーザーアプリケーションプログラムにおいても、機構解を選択するパラメータの指定方法が、制御対象のロボットに応じて異なっていた。
【００１２】
例えば水平２軸スカラ型ロボットの場合、左手系および右手系の逆機構解を選択するためにプログラム言語において各逆機構解に対応した関数Ｌｅｆｔ（  ）およびＲｉｇｈｔ（  ）を提供し、アプリケーションプログラムは、これらの関数を呼び出すことで選択を行っていた。
【００１３】
また、垂直５軸アーム型ロボットの場合、アーム部の逆機構解の選択は水平２軸スカラ型ロボットと同様に関数Ｌｅｆｔ（  ）およびＲｉｇｈｔ（  ）を用いて行っていた。エンドエフェクタ部については、Ｗｒｉｓｔ（  ）関数を新規に追加し、この関数にパラメータとして−１，０，１のうちいずれか１つを与えることで、対応する３通りの順機構解および逆機構解の組の選択を行っていた。
【００１４】
この様に、ユーザーアプリケーションプログラムにおいて機構解の選択を一元的に取り扱うことができないため、プログラム開発上取り扱い難いものとなっていた。
【００１５】
さらに、新規に機構解を追加する際、従来にはない機構解の指定方法が必要になった場合、システムソフトウェアで提供されるプログラム言語実行部に対して機構解指定を行う関数を新たに追加しなければならず、制御装置のシステムソフトウェアの開発工数の増加につながっていた。
【００１６】
即ち、▲１▼従来の制御装置で対応していなかった機構を含むロボットの機構解を新規に追加する場合、逆機構解および順機構解の指定方法の相違により、これを実装するシステムソフトウェアに大きな変更をせずに追加することが可能にしたい、▲２▼アプリケーションプログラムにおいて、制御対象のロボットの機構に依存することなく機構解の指定を一元的に行いたい、との要請があった。
【００１７】
本発明は、プログラムタスクと制御対象であるロボットとの関係に柔軟性を持たせることができるロボットの制御装置を提供することを目的とする。また、本発明は、各ロボットと制御軸との関係に柔軟性を持たせることができるロボットの制御装置を提供することを目的とする。さらに、本発明は、システムソフトウェアおよびアプリケーションプログラムにおいて、機構解の選択方法を一元化しソフトウェアの構成を簡素化することで、開発性を向上し開発工数の低減できるロボットの制御装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
かかる目的を達成するために請求項１記載のロボットの制御装置は、同期した制御の単位として複数のロボットを制御対象として定義可能であり、各ロボットは制御軸の部分集合と、これに対応する機構解を異なる組合せで保持し、各ロボットはプログラムタスクから切り替えて使用され制御されるようにしている。したがって、制御軸の部分集合に対して重複して異なる機構解を定義することが可能になり、異なる機構解を切り替えて制御を行うことができるようになる。
【００２３】
また、請求項２記載のロボットの制御装置は、各ロボットに属する制御軸の部分集合は互いに重複することを許容し、制御軸の部分集合が各ロボットで互いに重複するか一致する場合は、各ロボットによる制御軸の部分集合の同時使用を禁止し、制御軸の部分集合が各ロボットで重複せず独立な場合は、これらのロボットによる制御軸の部分集合の同時使用を許容して制御するようにしている。各ロボット間で制御軸の部分集合が重複するか一致する場合には、各ロボットがそれぞれ自由に重複する制御軸を操作すると当該制御軸の操作を正常に行うことができない。したがって、この場合には、重複する制御軸の同時使用を禁止して重複する制御軸の正常な操作を確保する。一方、各ロボット間で制御軸の部分集合が独立している場合には、各ロボットによって制御軸を同時に使用しても上述の問題は生じないので、この場合には各制御軸の同時使用を可能にする。
【００２４】
さらに、請求項３記載のロボットの制御装置は、ロボットの構成は、プログラムタスクから制御軸と機構解の組合せを適宜選択可能としている。したがって、一連の作業に応じて作業内容に適した制御軸と機構解の組合せをロボットユーザが選択してロボットを定義することができる。
【００２５】
【発明の実施の形態】
以下、本発明の構成を図面に示す最良の形態に基づいて詳細に説明する。
【００２６】
図１に、本発明を適用したロボットの制御装置の実施形態の一例を示す。このロボットの制御装置（以下、単に制御装置という）は、これを構成するソフトウェアに対してオブジェクト指向分析設計法に基づいたソフトウェア設計を適用している。以下、オブジェクト指向分析設計法に基づいて説明する。この制御装置は、例えば２つのサブシステム、具体的には、アプリケーションプログラム実行サブシステム１とロボットサブシステム２を備えている。各サブシステム１，２は、さらにいくつかのオブジェクトから構成され、これらのオブジェクトが相互に連携して機能することで、アプリケーションプログラムによる機械装置の動作制御を実現している。
【００２７】
ここで、制御対象である機械装置について説明する。本実施形態の機械装置では、例えば図２に示すように、第１アーム部３の回転制御を第１制御軸（θ１軸）６、第２アーム部４の回転制御を第２制御軸（θ２軸）７、ツール端５の上下高さ制御を第３制御軸（Ｚ軸）８、ツール端５の回転制御を第４制御軸（Ｓ軸）９とし、これらの制御軸６〜９の組合せによって５台のロボット１０〜１４が定義されている。即ち、図３に示すように、先ず第１制御軸６と第２制御軸７、第３制御軸８と第４制御軸９、全ての制御軸６〜９をそれぞれ制御軸部分集合と考える。そして、図４に示すように、第１ロボットオブジェクト２６は、全ての制御軸６〜９とこれらの集合を左手系とした場合の第１機構解１５を保持している。また、第２ロボットオブジェクト２７は、全ての制御軸６〜９とこれらの集合を右手系とした場合の第２機構解１６を保持している。また、第３ロボットオブジェクト２８は、第１制御軸６及び第２制御軸７とこれらの集合を左手系とした場合の第３機構解１７を保持している。また、第４ロボットオブジェクト２９は、第１制御軸６及び第２制御軸７とこれらの集合を右手系とした場合の第４機構解１８を保持している。さらに、第５ロボットオブジェクト３０は、第３制御軸８及び第４制御軸９とこれらの集合に対応する第５機構解１９を保持している。ロボットオブジェクト２６〜３０は、それぞれ対応する制御対象のロボット１０〜１４の制御を行う。
【００２８】
今、機械装置の第２制御軸の角度についてアーム３，４が一直線上に伸びた状態を基準とし、機械装置の上方から見て第２制御軸を反時計方向に旋回させた場合の角度を正とし逆に時計方向に旋回させた場合の角度を負とする。
【００２９】
このとき、ロボット１０は機械装置の第２制御軸を基準から負の方向に旋回させた姿勢で機械装置全体を使用して作業を行うものであり、ロボット１１は機械装置の第２制御軸を基準から正の方向に旋回させた姿勢で機械装置全体を使用して作業を行うものである。
【００３０】
このため、ロボット１０の機構解１５は第２制御軸を基準から負の方向に旋回させた姿勢で機械装置全体を使用して作業を行う場合の左手系の機構解であり、ロボット１１の機構解１６は第２制御軸を基準から正の方向に旋回させた姿勢で機械装置全体を使用して作業を行う場合の右手系の機構解である。
【００３１】
また、ロボット１２は機械装置の第２制御軸を基準から負の方向に旋回させた姿勢でアーム３，４を使用して作業を行うものであり、ロボット１３は機械装置の第２制御軸を基準から正の方向に旋回させた姿勢でアーム３，４を使用して作業を行うものである。
【００３２】
このため、ロボット１２の機構解１７は機械装置の第２制御軸を基準から負の方向に旋回させた姿勢でアーム３，４を使用して作業を行う場合の左手系の機構解であり、ロボット１３の機構解１８は第２制御軸を基準から正の方向に旋回させた姿勢でアーム３，４を使用して作業を行う場合の右手系の機構解である。
【００３３】
また、ロボット１４は機械装置の第３、第４制御軸によりツール端５の上下高さおよび回転制御により作業を行うものである。このため、ロボット１４の機構解１９は機械装置の第３、第４制御軸を使用して作業を行う機構解である。
【００３４】
本発明の制御装置のアプリケーションプログラム実行制御サブシステム１は、ロボットユーザの作成したアプリケーションプログラムの実行制御および構成管理を行うもので、ロボットユーザは、作成したアプリケーションプログラムコードを本発明の制御装置に複数登録することが可能である。また、複数登録したアプリケーションプログラムには、プログラム実行処理単位であるタスクが割り付けられており、時分割または事象駆動でのタスク切替に基づいたマルチタスク実行制御機能により並列的に制御装置上で実行することができる。ロボットユーザが作成したアプリケーションプログラムコードの登録は、アプリケーションプログラム構成情報を適宜作成することで行う。ロボットユーザの作成したアプリケーションプログラムコードは、制御装置または通信回線で接続されたリモートのホストコンピュータの記録媒体に保管される。アプリケーションプログラムコードの起動および停止などの実行制御は、操作端末による対話的操作、外部装置で発生する事象、プログラム記述により行うことができる。
【００３５】
このアプリケーションプログラム実行制御サブシステム１は、アプリケーションプログラムオブジェクトとアプリケーションプログラム管理オブジェクトを備えている。本実施形態では、アプリケーションプログラムオブジェクトとして、４つのアプリケーションプログラムオブジェクト２０〜２３を有している。一方、アプリケーションプログラム管理オブジェクト２５は、制御装置のシステムソフトウェア内に１つだけ存在する。
【００３６】
アプリケーションプログラムオブジェクト２０〜２３は、ロボットユーザの作成したアプリケーションプログラムコードの実行単位であり、プログラムの実行単位であるタスクが割り付けられたアプリケーションプログラムコードから構成されている。各アプリケーションプログラムオブジェクト２０〜２３は、ロボットサブシステム２に含まれるオブジェクトを操作することができる。ロボットユーザは、作業内容に応じてアプリケーションプログラムコードを作成することで、制御装置によりロボット１０〜１４の動作制御を行い、所望の作業を実現することができる。
【００３７】
各アプリケーションプログラムオブジェクト２０〜２３は、アプリケーションプログラム構成情報２４に基づいて作成される。ロボットユーザは、作成したアプリケーションプログラムコードの構成に応じてアプリケーションプログラム構成情報２４を作成することで、アプリケーションプログラムコードをアプリケーションプログラムとして１つ以上登録して、制御装置上で実行することが可能になる。アプリケーションプログラム構成情報２４には、アプリケーションプログラムコードおよびタスクに関する情報が含まれている。
【００３８】
ロボットユーザの作成したアプリケーションプログラムコードは、制御装置または通信回線で接続されたリモートのホストコンピュータの記録媒体に永続的に保持される。
【００３９】
各アプリケーションプログラムオブジェクト２０〜２３は、これを利用するオブジェクトに対して実行制御および構成管理等の基本的な操作を行うメソッドを提供する。ロボットユーザは、必要があればアプリケーションプログラムコードによりこれらのメソッドの処理内容を変更することができる。
【００４０】
アプリケーションプログラム管理オブジェクト２５は、アプリケーションプログラム構成情報２４に基づいて、アプリケーションプログラムオブジェクト２０〜２３を作成しこれを管理する。また、アプリケーションプログラム管理オブジェクト２５は、アプリケーションプログラムの構成管理および実行制御を行う。アプリケーション管理オブジェクト２５は制御装置のシステムソフトウェア内に１つだけ存在する。
【００４１】
アプリケーションプログラム管理オブジェクト２５は、アプリケーションプログラム構成情報２４に従って対応する実行形式のアプリケーションプログラムコードをロードし、アプリケーションプログラムオブジェクト２０〜２３を作成してこれを保持する。作成されたアプリケーションプログラムオブジェクト２０〜２３にはそれぞれプログラムの実行処理単位であるタスクが割り付けられ、時分割または事象駆動によるタスク切替を行うマルチタスク実行制御により、各オブジェクトの処理を並列的に実行することができる。
【００４２】
アプリケーションプログラム構成情報２４は、アプリケーションプログラムを作成する際にロボットユーザが作成するもので、制御装置または通信回線によって接続されたリモートのホストコンピュータの記録媒体に永続的に保存される。このアプリケーションプログラム構成情報２４は、アプリケーションプログラム管理オブジェクト２５がアプリケーションプログラムオブジェクト２０〜２３を作成する際に適宜参照される。アプリケーションプログラムオブジェクト２０〜２３は、このアプリケーションプログラム構成情報２４を参照することで、▲１▼制御装置が起動した場合、▲２▼アプリケーションプログラムコードが変更された場合、▲３▼ロボットユーザが対話的操作により要求した場合、等に作成される。
【００４３】
アプリケーションプログラム管理オブジェクト２５は、これを利用する▲１▼アプリケーションプログラムオブジェクト、▲２▼システムソフトウェアに含まれる他のオブジェクト等に対してアプリケーションプログラムオブジェクト２０〜２３の実行制御、構成管理および照会操作を行うメソッドの組を提供する。アプリケーションプログラムオブジェクトまたはシステムソフトウェアに含まれる他のオブジェクト等は、これらのメソッドを用いることでアプリケーションプログラム管理オブジェクト２５及びこれが保持するアプリケーションプログラムオブジェクト２０〜２３を操作することができる。
【００４４】
各アプリケーションプログラムオブジェクト２０〜２３に対して操作する必要があるアプリケーションプログラムオブジェクトまたはシステムソフトウェアに含まれる他のオブジェクト等は、まず、アプリケーションプログラム管理オブジェクト２５に対してアプリケーションプログラムオブジェクト２０〜２３の照会操作を行い、該当するアプリケーションプログラムオブジェクト２０〜２３への参照を取得する。これにより、アプリケーションプログラムオブジェクトまたはシステムソフトウェアに含まれる他のオブジェクト等はこの参照を用いて対象のアプリケーションプログラムオブジェクト２０〜２３の操作を行うことが可能になる。
【００４５】
アプリケーションプログラム管理オブジェクト２５は、保持しているアプリケーションプログラムオブジェクト２０〜２３の実行制御を行うメソッドを提供している。アプリケーションプログラムオブジェクトまたはシステムソフトウェアに含まれる他のオブジェクト等は、このメソッドを用いることでアプリケーションプログラムオブジェクト２０〜２３に割り付けられているタスクの起動、停止などの実行制御を行うことができる。
【００４６】
このアプリケーションプログラムオブジェクト２０〜２３の実行制御は、操作端末または通信回線で接続されたリモートのホストコンピュータによる対話的操作、ビット単位入出力装置（Ｉ／Ｏ）等から取り入れた外部装置の発生する事象、アプリケーションプログラムコードの記述等による方法で行うことができる。
【００４７】
また、アプリケーションプログラム管理オブジェクト２５は、アプリケーションプログラムの実行制御機能に加え、アプリケーションプログラムオブジェクト２０〜２３のデバック機能を提供している。このデバック機能は、詳細なアプリケーションプログラムオブジェクト２０〜２３の実行制御機能、アプリケーションプログラムオブジェクト２０〜２３の状態情報の取得、アプリケーションプログラムオブジェクト２０〜２３内部で定義されているオブジェクトの情報の取得と変更等を可能にしている。また、このデバック機能は、操作端末または通信回線で接続されたリモートのホストコンピュータによって利用することが可能である。ただし、操作端末からのデバッグ機能の利用は制限される場合がある。
【００４８】
ロボットサブシステム２は、各ロボット１０〜１４の構成を管理しアプリケーションプログラムオブジェクト２０〜２３の要求に応じたロボット１０〜１４の動作制御を行うものである。このロボットサブシステム２は、ロボットオブジェクト２６〜３０、ロボット管理オブジェクト３１、機構解オブジェクト３２〜３６、動作制御処理オブジェクト３７〜４１、動作制御処理管理オブジェクト４２、制御軸オブジェクト４３〜４６、制御軸管理オブジェクト４７を有している。このロボットサブシステム２は、ロボットオブジェクト２６〜３０を中心として各オブジェクトが相互に作用することで、アプリケーションプログラムオブジェクト２０〜２３が制御対象となるロボット１０〜１４の制御を行うことを可能にしている。
【００４９】
ロボットオブジェクト２６〜３０は、ロボット１０〜１４に対応した機構モデルおよび制御軸６〜９の構成を、それぞれ機構解オブジェクト３２〜３６および制御軸オブジェクト４３〜４６として保持し管理するもので、アプリケーションプログラムオブジェクト２０〜２３など他のオブジェクトから渡された動作制御命令に従って、機械装置の制御軸６〜９の動作制御を行う。また、マルチタスクで実行している複数のアプリケーションプログラムオブジェクト２０〜２３がロボットオブジェクト２６〜３０に対して同時操作を行った場合に択一制御を行い、複数のオブジェクト２０〜２３が無秩序にロボットオブジェクト２６〜３０を操作することを制限する。
【００５０】
機構解オブジェクト３２〜３６は、各ロボット１０〜１４の機構の数学モデルを保持している。ロボットオブジェクト２６〜３０は、各ロボット１０〜１４の機構に対応した機構解オブジェクト３２〜３６を１つずつ保持している。機構解オブジェクト３２〜３６は、ロボット構成情報４８に含まれる機構情報に従い、機構解オブジェクト３２〜３６を作成し、これを保持管理する。ロボット構成情報４８は、制御対象となる各ロボット１０〜１４の機構に応じてロボットユーザが作成する。ロボットオブジェクト２６〜３０は、動作制御処理オブジェクト３７〜４１や他のオブジェクトに対して、機構解オブジェクト３２〜３６への参照または機構解計算処理へのアクセスを可能にするメソッドを提供する。
【００５１】
制御軸オブジェクト４３〜４６は、制御対象である機械装置に含まれる制御軸６〜９に対応している。ロボットオブジェクト２６〜３０は、ロボット構成情報４８に従って複数の制御軸オブジェクト４３〜４６への参照を保持する。制御軸オブジェクト４３〜４６は、各機械装置の制御軸６〜９の構成に基づいて、ロボットユーザがロボット構成情報４８に記録する。制御軸オブジェクト４３〜４６は、複数のロボットオブジェクト２６〜３０から参照されることが許されている。
【００５２】
動作制御処理オブジェクト３７〜４１は、ロボットオブジェクト２６〜３０が与えた動作制御命令に従って、ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６の集合に対して動作制御を行う。ロボットオブジェクト２６〜３０は、ただ１つの動作制御処理オブジェクト３７〜４１に対する参照を保持する。また、動作制御処理オブジェクト３７〜４１は、複数のロボットオブジェクト２６〜３０から重複して参照されることは許されていない。
【００５３】
ロボットオブジェクト２６〜３０には、ロボット１０〜１４の動作制御、状態取得および構成管理などの処理を実行するためのメソッドの組が定義されており、これらのメソッドはロボットオブジェクト２６〜３０を利用するオブジェクトに対して公開されている。アプリケーションプログラムオブジェクト２０〜２３を含むオブジェクトは、このメソッドを利用してロボットオブジェクト２６〜３０に各種処理を実行する命令を引き渡し、該当するロボット１０〜１４に対して動作制御など所望の操作を実行する。
【００５４】
ロボットオブジェクト２６〜３０は、複数のオブジェクトからの操作に対して制約を設けている。これは、複数のオブジェクトが同時に無秩序に１つのロボットオブジェクトに対して操作を行うことで、各オブジェクトが想定している動作制御が正しく実行できなくなることを防ぐためである。つまり、複数のアプリケーションプログラムオブジェクト２０〜２３が同時に１つのロボットオブジェクト２６〜３０に対して記述された作業内容に沿って動作制御命令を実行した場合には、これらの動作制御命令が無秩序に実行されてしまうため、各アプリケーションプログラムが想定している動作を正しく実行できなくなるからである。
【００５５】
この問題を解決するために、ロボットオブジェクト２６〜３０はこれを利用するアプリケーションプログラムオブジェクト２０〜２３に対して択一制御を行う。即ち、ロボットオブジェクト２６〜３０は、これを利用するアプリケーションプログラムオブジェクト２０〜２３のうち１つだけに使用権を与え、使用権を獲得したアプリケーションプログラムオブジェクト２０〜２３だけに対してロボットオブジェクト２６〜３０の完全な操作を許可する。使用権が与えられていないアプリケーションプログラムオブジェクト２０〜２３には、ロボットオブジェクト２６〜３０の操作が制限される。すなわち、動作制御命令を含めロボットオブジェクト２６〜３０の状態を変更する操作は禁止され、ロボットオブジェクト２６〜３０の状態を取得する操作だけが可能となる。
【００５６】
ロボットオブジェクト２６〜３０は、これを利用するアプリケーションプログラムオブジェクト２０〜２３に対して使用権の取得および解放の操作を１組のメソッドとして提供している。ロボットオブジェクト２６〜３０を利用するアプリケーションプログラムオブジェクト２０〜２３は、使用権の取得操作を行うことで該当ロボットオブジェクト２６〜３０の使用権を取得し、完全な操作を行うことが可能になる。アプリケーションプログラムオブジェクト２０〜２３は、ロボットオブジェクト２６〜３０の使用を終了した場合、使用権の解放操作を実行することでロボットオブジェクト２６〜３０の使用権を解放し、これにより他のアプリケーションプログラムオブジェクト２０〜２３が使用権を確保することが可能になる。あるアプリケーションプログラムオブジェクト２０〜２３によって既に使用権が取得されているロボットオブジェクト２６〜３０に対しては、アプリケーションプログラムオブジェクト２０〜２３は使用権を取得することができないために操作は制限される。
【００５７】
ロボットオブジェクト２６〜３０は、これを利用するアプリケーションプログラムオブジェクト２０〜２３に使用権を与えた場合、保持している制御軸オブジェクト４３〜４６に対して動作制御を開始する。ロボットオブジェクト２６〜３０の使用権の取得操作において、ロボットオブジェクト２６〜３０は保持している制御軸オブジェクト４３〜４６の各々に対して、使用権の取得操作を実行する。制御軸オブジェクト４３〜４６が既に他のロボットオブジェクト２６〜３０によって使用されている場合、ロボットオブジェクト２６〜３０は該当する制御軸オブジェクト４３〜４６の使用を禁止される。ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６のうち１つ以上の使用権が取得できなかった場合、ロボットオブジェクト２６〜３０は制御軸オブジェクト４３〜４６の制御を行うことができないため、このロボットオブジェクト２６〜３０を利用するアプリケーションプログラムオブジェクト２０〜２３に対して使用権を与えない。そして、他のロボットオブジェクト２６〜３０が該当する制御軸オブジェクト４３〜４６の使用を終了した場合、ロボットオブジェクト２６〜３０は当該ロボットオブジェクト２６〜３０を利用するアプリケーションプログラムオブジェクト２０〜２３に対して使用権を与えることが可能になる。
【００５８】
ロボット管理オブジェクト３１は、ロボット構成情報４８に基づいてロボットオブジェクト２６〜３０を作成すると共に、作成した各ロボットオブジェクト２６〜３０を保持し管理するものである。また、このロボット管理オブジェクト３１は、保持しているロボットオブジェクト２６〜３０について他のオブジェクトからの照会要求に対して、該当するロボットオブジェクト２６〜３０への参照を返すものである。このロボット管理オブジェクト３１は、制御装置のシステムソフトウェア内に１つだけ存在する。
【００５９】
ロボット管理オブジェクト３１は、ロボット構成情報４８に従って各ロボットオブジェクト２６〜３０を作成し保持する。ロボット構成情報４８は、ロボット１０〜１４の構成に応じてロボットユーザが作成する。このロボット構成情報４８は、制御装置または通信回線で接続されたリモートのホストコンピュータ等の記録媒体に永続的に保持され、ロボット管理オブジェクト３１がロボットオブジェクト２６〜３０を作成する際に適宜参照される。
【００６０】
このロボット管理オブジェクト３１は、ロボットオブジェクト２６〜３０を作成する際に対応する動作制御処理オブジェクト３７〜４１および制御軸オブジェクト４３〜４６への参照をロボットオブジェクト２６〜３０に設定する。また、動作制御処理オブジェクト３７〜４１に対しては、対応するロボットオブジェクト２６〜３０への参照を引き渡す。さらに、ロボット管理オブジェクト３１は、ロボット構成情報４８に含まれる機構解構成情報をロボットオブジェクト２６〜３０に引き渡す。そして、ここで渡された機構解構成情報は、ロボットオブジェクト２６〜３０が機構解オブジェクト３２〜３６を作成する際に用いられる。通常は、ロボット管理オブジェクト３１は制御装置が起動した時点でロボットオブジェクト２６〜３０を作成する。
【００６１】
このロボット管理オブジェクト３１は、これを利用するアプリケーションプログラムオブジェクト２０〜２３に対してロボットオブジェクト２６〜３０の構成管理および照会を行うメソッドの組を提供している。そして、ロボットオブジェクト２６〜３０の操作を必要とするアプリケーションプログラムオブジェクト２０〜２３は、ロボット管理オブジェクト３１に対して操作対象となるロボットオブジェクト２６〜３０の照会操作を行い、その参照を取得する。この後、アプリケーションプログラムオブジェクト２０〜２３はここで得られた参照を用いて対象のロボットオブジェクト２６〜３０の操作を行うことができる。
【００６２】
機構解オブジェクト３２〜３６は、機構解計算処理により任意に定義した論理的な座標系上の位置と各制御軸６〜９の位置との間の双方向の変換処理を行う。ここで、各制御軸６〜９の角度または位置を要素とする位置ベクトルで表される座標系を制御軸座標系と定義する。
【００６３】
機構解計算処理は、制御対象の機構の数学モデルであり、論理的な座標系と制御軸座標系の関係を一連の数式により定義している。ここで、論理的な座標系とは直行座標系、円筒座標系または制御軸座標系など、ロボットユーザがロボット１０〜１４の動作制御を行う上で都合の良い座標系を定義することができる。
【００６４】
また、機構解計算処理は順方向の計算処理と逆方向の計算処理から構成される。順方向の計算処理は順機構解計算処理と呼び、制御軸座標系上の位置から論理的な座標系上の位置への変換処理を行うものである。一方、逆方向の計算処理は逆機構解計算処理と呼び、論理的な座標系上の位置から制御軸座標系上の位置への変換処理を行うものである。図５に、機構解計算処理の順機構解および逆機構解計算処理の関係を示す。機構解オブジェクト３２〜３６は、他のオブジェクトに対してこれらの順機構解および逆機構解計算処理を実行するメソッドを公開している。
【００６５】
機構解オブジェクト３２〜３６は、各ロボットオブジェクト２６〜３０によってロボット構成情報４８に基づいて作成され管理されている。機構解オブジェクト３２〜３６は、主に動作制御処理オブジェクト３７〜４１がロボット１０〜１４の動作制御を行う際に、論理的な座標系で作成した経路上の位置を制御軸座標系に変換し、各制御軸６〜９の位置を算出する際に用いられる。また、制御軸６〜９が位置を自己保持できない状態、すなわちロボット１０〜１４の運転準備が完了していないなどサーボ位置制御が作用していない状態では、各制御軸６〜９の位置を論理的な座標系上の位置に変換する際に用いられる。
【００６６】
動作制御処理オブジェクト３７〜４１は、与えられた動作制御命令を解釈し制御軸集合の動作制御を行うものである。動作制御処理オブジェクト３７〜４１は、タイマオブジェクト４９〜５３を有しており、ロボットオブジェクト２６〜３０から動作制御命令を受ける。
【００６７】
即ち、タイマオブジェクト４９〜５３は、動作制御処理オブジェクト３７〜４１の動作制御処理オブジェクト３７〜４１に含まれる動作制御処理を指定した一定の時間間隔で呼び出して実行する。これにより、動作制御処理では与えられた動作制御命令に従い、微少時間毎の各制御軸６〜９の移動量を算出し制御軸６〜９に制御入力として与え動作制御する。タイマオブジェクト４９〜５３は、各動作制御処理を実行する時間間隔を指令周期と定義する。
【００６８】
各動作制御処理オブジェクト３７〜４１は、個別のタイマオブジェクト４９〜５３への参照をそれぞれ重複することなく保持している。これにより保持しているタイマオブジェクト４９〜５３に別々の時間間隔を指定することで、各動作制御処理オブジェクト３７〜４１は異なった指令周期で制御軸６〜９の集合の動作制御を可能としている。
【００６９】
ロボットオブジェクト２６〜３０は、動作制御処理オブジェクト３７〜４１に対して動作制御命令を与え、制御軸集合の動作制御を促す。動作制御処理オブジェクト３７〜４１はこの動作制御命令に従い、指令周期毎に各制御軸６〜９の移動量を算出し、ロボットオブジェクト２６〜３０の保持する制御軸オブジェクト４３〜４６に制御入力として与える。
【００７０】
ロボットオブジェクト２６〜３０と動作制御処理オブジェクト３７〜４１は１対１に対応しており、それぞれのオブジェクトが重複することなく互いのオブジェクトに対する参照を保持している。動作制御処理では、この１対のオブジェクトの組が相互に作用することで、ロボット１０〜１４に含まれる制御軸集合を各集合毎に独立して動作制御することを可能にしている。つまり、制御の対象である機械装置にいくつかのロボット１０〜１４が含まれる場合、それぞれのロボット１０〜１４にこのオブジェクトの組、即ち１対１に対応するロボットオブジェクト２６〜３０と動作制御処理オブジェクト３７〜４１を割り当てることで、各ロボット１０〜１４を独立に動作制御することを可能にする。
【００７１】
動作制御処理オブジェクト３７〜４１は、次のようにして動作制御処理を行う。先ず、与えられた動作制御命令に従って、ツール端５の経路および速度曲線を論理的な座標系上に作成する。次に、指令周期毎に、論理的な座標系の経路上で微少時間での移動量を速度曲線にしたがって算出する。ここで求めた移動量を、対応するロボットオブジェクト２６〜３０が保持する機構解オブジェクト３２〜３６の逆機構解処理を用いることで、制御軸座標系での移動量、すなわち各制御軸６〜９の移動量に変換する。そして、得られた制御軸６〜９の移動量を、ロボットオブジェクト２６〜３０の保持する各制御軸オブジェクト４３〜４６に制御入力として与えることで、微少時間毎の制御軸６〜９の移動を行う。この後、指令周期毎に上述の処理を、ツール端５が目標の位置(経路の終点)に到達するまで実行する。これによりツール端５を論理的な座標系での経路に沿って動作させることを実現している。
【００７２】
動作制御処理管理オブジェクト４２は、ロボット構成情報４８に基づいて動作制御処理オブジェクト３７〜４１を作成すると共に、作成した各動作制御処理オブジェクト３７〜４１を保持して管理する。また、動作制御処理管理オブジェクト４２は、保持している動作制御処理オブジェクト３７〜４１についてロボットオブジェクト２６〜３０からの照会要求に対して、該当する動作制御処理オブジェクト３７〜４１への参照を返す。
【００７３】
動作制御処理管理オブジェクト４２は、ロボット構成情報４８に従って各ロボットオブジェクト２６〜３０に対応した動作制御処理オブジェクト３７〜４１を作成し保持する。動作制御処理管理オブジェクト４２は、各動作制御処理オブジェクト３７〜４１毎にタイマオブジェクト４９〜５３を取得し、これにタイマオブジェクト４９〜５３への参照を設定する。また、同時にタイマオブジェクト４９〜５３に対して動作制御処理オブジェクト３７〜４１への参照を設定し、タイマオブジェクト４９〜５３が動作制御処理オブジェクト３７〜４１に含まれる動作制御処理を、タイマ時間間隔毎に呼び出せるようにする。タイマオブジェクト４９〜５３のタイマ時間間隔には、ロボット構成情報４８に含まれる各ロボットオブジェクト２６〜３０に対応した指令周期の値が設定される。
【００７４】
動作制御処理管理オブジェクト４２は、制御装置が起動した時点で動作制御処理オブジェクト３７〜４１を作成する。動作制御処理管理オブジェクト４２は、制御装置のシステムソフトウェア内に１つだけ存在する。
【００７５】
動作制御処理オブジェクト３７〜４１は、これを利用する他のオブジェクトに対して動作制御処理オブジェクト３７〜４１の構成管理および照会を行うメソッドの組を提供する。ある動作制御処理オブジェクト３７〜４１の操作を必要とするオブジェクトは、まず、動作制御処理管理オブジェクト４２に対して操作対象の動作制御処理オブジェクト３７〜４１の照会操作を行い、その参照を取得する。これにより、オブジェクトはここで得られた参照を用いて対象の動作制御処理オブジェクト３７〜４１の操作を行うこうができる。
【００７６】
制御軸オブジェクト４３〜４６は、制御対象の機械装置に含まれる各制御軸６〜９に対応している。制御軸６〜９は、機械装置の機構において制御対象となる各機構部位である。例えば、多関節型ロボットの場合では各関節部であり、スライダ機構およびこれを組み合わせた直交座標系型ロボットの場合では各スライダ機構部が制御軸に対応する。本実施形態では、上述のように、第１アーム部３の回転を制御する部位を第１制御軸６、第２アーム部４の回転を制御する部位を第２制御軸７、ツール端５の上下高さ制御を行う部位を第３制御軸（Ｚ軸）８、ツール端５の回転制御を行う部位を第４制御軸（Ｓ軸）９としている。制御軸オブジェクト４３〜４６は、制御軸６〜９を駆動するＡＣサーボモータ、ＤＣサーボモータ、ステッパ等のアクチュエータの制御を行う。
【００７７】
制御軸オブジェクト４３〜４６は、制御軸構成情報５４に基づいて構成される。制御軸構成情報５４は、制御対象の機械装置の構成に応じてロボットユーザが作成し、制御装置または通信回線によって接続されたリモートのホストコンピュータ等の記録媒体に永続的に保持される。この制御軸構成情報５４は、制御軸オブジェクト４３〜４６の形成に際して適宜参照される。
【００７８】
制御軸オブジェクト４３〜４６は、これを利用するオブジェクトに対して対応する制御軸６〜９および当該制御軸６〜９を駆動するアクチュエータの動作制御、構成管理、状態取得等の操作を行うメソッドの組を提供している。制御軸管理オブジェクト４７は、これらのメソッドを用いることで制御軸オブジェクト４３〜４６を操作することができる。
【００７９】
制御軸オブジェクト４３〜４６は、複数のロボットオブジェクト２６〜３０からの操作について制限を設けている。これは、複数のロボットオブジェクト２６〜３０が１つの制御軸オブジェクト４３〜４６を同時に操作することで、制御軸６〜９の制御が無秩序になることを防ぐためである。すなわち、複数のロボットオブジェクト２６〜３０が１つの制御軸オブジェクト４３〜４６に対して同時に操作を行った場合、各ロボットオブジェクト２６〜３０の操作が無秩序に行われるため、それぞれのロボットオブジェクト２６〜３０が想定する制御軸６〜９の動作制御が正しく実行することができなくなる。
【００８０】
この問題に対して、制御軸オブジェクト４３〜４６はこれを利用するロボットオブジェクト２６〜３０に対して択一制御を行う。即ち、制御軸オブジェクト４３〜４６は、これを利用するロボットオブジェクト２６〜３０の１つだけに対して使用権を与え、完全な操作を許可する。使用権が与えられていない他のロボットオブジェクト２６〜３０に対しては、制御軸オブジェクト４３〜４６の操作が制限される。すなわち、動作制御を含め制御軸オブジェクト４３〜４６の状態を変化させる操作は禁止され、状態の取得など制御軸オブジェクト４３〜４６の状態を変化させない操作だけが許可される。
【００８１】
制御軸オブジェクト４３〜４６は、これを利用するロボットオブジェクト２６〜３０に対して使用権の取得操作および解放操作を行うメソッドの組を提供する。制御軸オブジェクト４３〜４６を利用するロボットオブジェクト２６〜３０は、使用権の取得操作を実行することで、該当の制御軸オブジェクト４３〜４６の使用権を取得し完全な操作を行うことが可能になる。ロボットオブジェクト２６〜３０は、制御軸オブジェクト４３〜４６の操作を終了したならば使用権の解放操作を行い、該当の制御軸オブジェクト４３〜４６の使用権を解放する。使用権が解放された制御軸オブジェクト４３〜４６については、他のロボットオブジェクト２６〜３０が使用権を獲得することが可能になる。他のロボットオブジェクト２６〜３０により既に使用権が取得されている制御軸オブジェクト４３〜４６の場合、これを利用するロボットオブジェクト２６〜３０は使用権を取得することができないため、制限された操作だけが許される。
【００８２】
制御軸管理オブジェクト４７は、制御軸構成情報５４に基づいて制御軸オブジェクト４３〜４６を作成すると共に、作成した各制御軸オブジェクト４３〜４６を保持し管理するものである。また、制御軸管理オブジェクト４７は、保持している制御軸オブジェクト４３〜４６についてロボットオブジェクト２６〜３０からの照会要求に対して、該当する制御軸オブジェクト４３〜４６への参照を返す。
【００８３】
制御軸管理オブジェクト４７は、制御軸構成情報５４に従って各制御軸オブジェクト４３〜４６を作成し保持する。このとき用いる制御軸構成情報５４は、制御対象の機械装置の構成に応じてロボットユーザが作成する。この制御軸構成情報５４は、制御装置または通信回線で接続されたリモートのホストコンピュータ等の記録媒体上に永続的に保持され、制御軸管理オブジェクト４７が制御軸オブジェクト４３〜４６を作成する際に適宜参照される。制御軸管理オブジェクト４７は、制御装置が起動した時点等に制御軸オブジェクト４３〜４６を作成する。制御軸管理オブジェクト４７は、制御装置のシステムソフトウェア内に1つだけ存在する。
【００８４】
制御軸管理オブジェクト４７は、これを利用するロボットオブジェクト２６〜３０に対して制御軸オブジェクト４３〜４６の構成管理および照会を行うメソッドの組を提供している。そして、制御軸オブジェクト４３〜４６の操作を必要とするロボットオブジェクト２６〜３０は、制御軸管理オブジェクト４７に対して操作対象となる制御軸オブジェクト４３〜４６の照会操作を行い、該当する制御軸オブジェクト４３〜４６への参照を取得する。これにより、ロボットオブジェクト２６〜３０は得られた参照を用いて対象の制御軸オブジェクト４３〜４６の操作を行うことが可能となる。
【００８５】
次に、本制御装置によるロボット１０〜１４の動作制御について説明する。
【００８６】
ロボットオブジェクト２６〜３０がアプリケーションプログラムオブジェクト２０〜２３から動作制御命令を受け取ると、この命令に対して適切な情報処理を行い対応する動作制御処理オブジェクト３７〜４１に引き渡す。動作制御処理オブジェクト３７〜４１は、与えられた動作制御命令に従い制御対象の機械装置のツール端５の経路および速度曲線を作成する。さらに、動作制御処理オブジェクト３７〜４１は、ツール端５が目標位置に到達するまで指令周期毎に以下の処理を実行する。
【００８７】
つまり、先ず指令周期毎に、ツール端５の経路上の位置を速度曲線に基づいて算出する。算出されたツール端５の位置は論理的な座標系上で与えられているため、これを各制御軸６〜９の角度または位置に変換する。この処理では、対応するロボットオブジェクト２６〜３０が保持する機構解オブジェクト３２〜３６の逆機構解計算処理を用いる。次に、算出した各制御軸６〜９の位置を各制御軸オブジェクト４３〜４６へ制御入力として与える。制御軸オブジェクト４３〜４６は、与えられた入力値に従って制御軸６〜９を駆動するアクチュエータの動作制御を行う。
【００８８】
ここで、各ロボット１０〜１４は共通の制御軸６〜９を重複して有している。このため、使用権の取得と解放という概念を用いて重複した制御軸６〜９を使用している。即ち、アプリケーションプログラムオブジェクト２０〜２３は、まず、ロボット管理オブジェクト３１に対してロボットオブジェクト２６〜３０の照会操作を行い、制御対象のロボット１０〜１４に対応したロボットオブジェクト２６〜３０への参照を取得する。参照を取得したアプリケーションプログラムオブジェクト２０〜２３は、取得した参照を介して、対象のロボットオブジェクト２６〜３０に対して使用権の取得操作を実行する。
【００８９】
ロボットオブジェクト２６〜３０から使用権が取得できた場合、アプリケーションプログラムオブジェクト２０〜２３はロボットオブジェクト２６〜３０を操作することが可能になり、これを操作することで制御対象のロボット１０〜１４の動作制御を行うことができる。そして、アプリケーションプログラムオブジェクト２０〜２３は、ロボットオブジェクト２６〜３０の使用を終了したならば、対象のロボットオブジェクト２６〜３０に対して使用権の解放操作を行い使用権を解放する。これにより、他のアプリケーションプログラムオブジェクト２０〜２３がこのロボットオブジェクト２６〜３０の使用権を取得することが可能になる。
【００９０】
一方、対象のロボットオブジェクト２６〜３０に対して使用権の取得操作を実行した際、使用権が取得できなかった場合にはアプリケーションプログラムオブジェクト２０〜２３はロボットオブジェクトへの操作が制限される。
【００９１】
ロボットサブシステム２でロボットオブジェクト２６〜３０の構成が変化していない場合、ロボット管理オブジェクト３１に対する対象のロボットオブジェクト２６〜３０の照会操作は、一度だけ実行すれば良い。これにより、取得したロボットオブジェクト２６〜３０への参照を用いて、対象のロボットオブジェクト２６〜３０の操作を行うことができる。
【００９２】
なお、図１において、各ロボットオブジェクト２６〜３０から続く記号Ａ〜Ｎは、各制御軸オブジェクト４３〜４６に続く記号Ａ〜Ｎに接続するものである。
【００９３】
次に、本発明の制御装置において、１つのプログラムタスクにより複数のロボットの制御が可能である点について更に説明する。ここでは、図６〜図８に示すように、第１アプリケーションプログラムオブジェクト２０が第１及び第２ロボットオブジェクト２６，２７を制御する場合を例に説明する。なお、図６〜図８において、アプリケーションプログラムオブジェクト２０をアプリケーションプログラムオブジェクト（１）と、ロボットオブジェクト２６をロボットオブジェクト（１）と、ロボットオブジェクト２７をロボットオブジェクト（２）と記載する。
【００９４】
アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７の参照を介して操作対象であるロボットオブジェクト２６，２７の操作を行い、ロボット１０，１１の動作制御を実現する。アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７への参照をロボット管理オブジェクト３１から取得することができる。
【００９５】
ここで、アプリケーションプログラムオブジェクトには、ロボットオブジェクトへの参照を保持する個数について制限はない。即ち、ロボットオブジェクトの数と同じ数の参照を保持することができる。これは、アプリケーションプログラムの記述言語として用いる一般的なオブジェクト指向プログラミング言語の基本的な仕様に従った結果である。したがって、アプリケーションプログラムオブジェクトは、ロボット管理オブジェクトから必要なだけ制御対象であるロボットオブジェクトへの参照を取得することができる。即ち、アプリケーションプログラムオブジェクト２０は、取得した参照を介して対象のロボットオブジェクト２６，２７の提供するメソッドを操作することが可能となる。
【００９６】
アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７の使用に際して、まず、保持している各ロボットオブジェクト２６，２７への参照を介して使用権の取得操作を実行し、該当するロボットオブジェクト２６，２７の使用権を獲得する。これにより、アプリケーションプログラムオブジェクト２０は、対象のロボットオブジェクト２６，２７を操作し対応するロボット１０，１１の制御を行うことが可能になる。
【００９７】
即ち、図６〜図８のアプリケーションプログラムオブジェクト２０が２つのロボットオブジェクト２６，２７を操作する際のシナリオに沿って説明すると、まず、アプリケーションプログラムオブジェクト２０は、ロボット管理オブジェクト３１からロボットオブジェクト２６，２７のそれぞれのオブジェクトの参照を取得する（図６中符号ａ，ｂ）。これにより、アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７に対して、取得した参照を介してそれぞれ操作することが可能になる。
【００９８】
この後、アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７に対して使用権の取得操作を行う（図７中符号ｃ，ｄ）。この場合、アプリケーションプログラムオブジェクト２０は、いまだ他のアプリケーションプログラムオブジェクト２１〜２３によってロボットオブジェクト２６，２７の使用権が取得されていなければ、各ロボットオブジェクト２６，２７の使用権を取得することができる。なお、図６〜図８の例とは違って、ロボットオブジェクト間で保持する制御軸の部分集合の包含関係に重複がない場合にも、アプリケーションプログラムオブジェクトはロボットオブジェクトの使用権を取得することができる。
【００９９】
ロボットオブジェクト２６，２７の使用権の取得に成功すると、アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６，２７に対して動作制御などの操作を行うことが可能になる（図７，図８中符号ｅ）。そして、アプリケーションプログラムオブジェクト２０でロボットオブジェクト２６，２７に対する操作が完了した場合、各ロボットオブジェクト２６，２７に対して使用権の解放操作を実行することで使用権を解放する（図８中符号ｆ，ｇ）。使用権が解放されることで、他のアプリケーションプログラムオブジェクトが再びこれらのロボットオブジェクト２６，２７の使用権を取得し操作することが可能になる。
【０１００】
この様にして、１つのアプリケーションプログラムオブジェクト（プログラムタスク）２０は、複数のロボットオブジェクト（ロボット）２６，２７の制御を行うことができる。
【０１０１】
次に、本発明の制御装置において、一つのロボットが複数のプロクラムタスクからの制御の要求を択一的に受付可能である点について更に説明する。
【０１０２】
本発明の制御装置では、アプリケーションプログラムオブジェクト２０〜２３とロボットオブジェクト２６〜３０の関係は、アプリケーションプログラムオブジェクト２０〜２３がロボット管理オブジェクト３１から必要なロボットオブジェクト２６〜３０への参照を取得することで決定されている。この参照を取得することで、アプリケーションプログラムオブジェクト２０〜２３はロボットユーザの所望する任意のロボットオブジェクト２６〜３０への操作が可能になる。また、ロボットオブジェクト２６〜３０についても、最初からある特定のアプリケーションプログラムオブジェクト２０〜２３からの要求だけを受け付けることを前提としていない。したがって、ロボット管理オブジェクト３１によって参照が与えられた任意のアプリケーションプログラムオブジェクト２０〜２３からの操作を受け付けることができる。すなわち、ロボットオブジェクト２６〜３０は特定のアプリケーションプログラムオブジェクト２０〜２３からだけでなく、複数のアプリケーションプログラムオブジェクト２０〜２３からの操作を受け付けることができる。
【０１０３】
ロボットオブジェクト２６〜３０は、複数のアプリケーションプログラムオブジェクト２０〜２３からの操作に対して、制限を設けている。すなわち、ロボットオブジェクト２６〜３０は同時に１つだけのアプリケーションプログラムオブジェクト２０〜２３に対して使用権を与え、このアプリケーションプログラムオブジェクト２０〜２３に対してだけ完全な操作を許すように択一制御を行っている。使用権の取得に成功したアプリケーションプログラムオブジェクト２０〜２３は、ロボットオブジェクト２６〜３０への参照を介して制御対象のロボット１０〜１４の制御を行うことが可能になる。
【０１０４】
ロボットオブジェクト２６〜３０から使用権を取得できなかったアプリケーションプログラムオブジェクト２０〜２３は、該当するロボットオブジェクト２６〜３０に対して動作制御命令やロボット構成管理などロボットオブジェクト２６〜３０の状態を変更する操作は禁止される。したがって、使用権を取得できなかったアプリケーションプログラムオブジェクト２０〜２３は、ロボットオブジェクト２６〜３０を操作して対応するロボット１０〜１４の動作制御をすることはできない。
【０１０５】
アプリケーションプログラムオブジェクト２０〜２３が、制御対象のロボット１０〜１４に対応したロボットオブジェクト２６〜３０の使用を終了した場合、アプリケーションプログラムオブジェクト２０〜２３はロボットオブジェクト２６〜３０の使用権を解放する。使用権が解放されたロボットオブジェクト２６〜３０は、再び他のアプリケーションプログラムオブジェクト２０〜２３に対して使用権を与えることができる。これにより、他のアプリケーションプログラムオブジェクト２０〜２３がロボットオブジェクト２６〜３０の操作を行うことができ、対応するロボット１０〜１４の制御を行うことが可能になる。
【０１０６】
このように、１つのロボットオブジェクトは、特定のアプリケーションプログラムオブジェクトからだけではなく、複数のアプリケーションプログラムオブジェクトから操作されることが可能になっており、このため、同時に１つのアプリケーションプログラムオブジェクトだけにロボットオブジェクトの操作が許されるように択一制御を行っている。
【０１０７】
ここで、複数のアプリケーションプログラムオブジェクトによって１つのロボットを制御する様子を、図９〜図１１に基づき第１及び第２アプリケーションプログラムオブジェクト２０，２１がロボットオブジェクト２６を制御する場合を例にして説明する。なお、図９〜図１１において、アプリケーションプログラムオブジェクト２０をアプリケーションプログラムオブジェクト（１）と、アプリケーションプログラムオブジェクト２１をアプリケーションプログラムオブジェクト（２）と、ロボットオブジェクト２６をロボットオブジェクト（１）と記載する。
【０１０８】
２つのアプリケーションプログラムオブジェクト２０，２１が、１つのロボットオブジェクト２６を操作する場合には、まず、アプリケーションプログラムオブジェクト２０，２１はそれぞれロボット管理オブジェクト３１に対してロボットオブジェクト２６の照会操作を実行し（図９中符号ａ，ｂ）、ロボットオブジェクト２６の参照を取得する（図９中符号ｃ，ｄ）。これにより、アプリケーションプログラムオブジェクト２０，２１は、取得した参照を介してロボットオブジェクト２６の操作を行うことができる。
【０１０９】
次に、アプリケーションプログラムオブジェクト２０はロボットオブジェクト２６に対して使用権の取得操作を実行することで、ロボットオブジェクト２６の使用権を取得する（図９中符号ｅ、図１２、図１３）。これにより、アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６に対して動作制御を含む完全な操作を行うことが可能になる。
【０１１０】
この状態で、アプリケーションプログラムオブジェクト２１がロボットオブジェクト２６に対して使用権の取得操作（図１０中符号ｆ）を実行した場合について考える。この状態では、ロボットオブジェクト２６はアプリケーションプログラムオブジェクト２０によって使用権を取得されているので、アプリケーションプログラムオブジェクト２１は使用権の取得に失敗する。この使用権の取得に失敗した場合、アプリケーションプログラムオブジェクト２１の振る舞いについては、次のように指定することができる。即ち、エラー終了によりメソッドからすぐに戻る場合と、使用権が取得できるまでアプリケーションプログラムオブジェクト２１の処理を保留する場合である。本例では、処理を保留するように指定してある。したがって、アプリケーションプログラムオブジェクト２１の処理は、ロボットオブジェクト２６の使用権が解放されるまで保留される（図１０中符号ｇで示す波線部分）。そして、アプリケーションプログラムオブジェクト２０がロボットオブジェクト２６の操作を完了して使用権を解放する（図１０中符号ｈ）ことで、アプリケーションプログラムオブジェクト２１は使用権の取得を完了し保留されていた処理が再開される。これによりアプリケーションプログラムオブジェクト２１は、ロボットオブジェクト２６に対して動作制御を含む完全な制御を行うことが可能になる（図１０，図１１中符号ｉ）。
【０１１１】
アプリケーションプログラムオブジェクト２１でロボットオブジェクト２６の操作を完了した場合、アプリケーションプログラムオブジェクト２１は使用権の解放操作を行い、このロボットオブジェクト２６に対する使用権を解放する（図１１中符号ｊ）。
【０１１２】
次に、本発明の制御装置において、プログラムタスク（アプリケーションプログラムオブジェクト）によるロボット（ロボットオブジェクト）の使用権の獲得・放棄の方法について更に説明する。
【０１１３】
上述のようにして、２つのアプリケーションプログラムオブジェクト２０，２１が１つのロボットオブジェクト２６を操作するが、この場合、アプリケーションプログラムオブジェクト２０は、以下のようにして、ロボットオブジェクト２６の使用権を獲得、放棄する。
【０１１４】
ロボットオブジェクト２６は、オブジェクトの使用権の取得操作又は解放操作を行うメソッドをアプリケーションプログラムオブジェクト２０，２１に対して提供する。アプリケーションプログラムオブジェクト２０，２１は、これらのメソッドを用いることで、対象のロボットオブジェクト２６の使用権の取得および解放操作を行う（図９〜図１１中符号ｅ，ｆ，ｈ，ｊ）。
【０１１５】
ロボットオブジェクト２６の使用を開始する場合は、アプリケーションプログラムオブジェクト２０は使用開始の宣言（オープン操作）を行い使用権を取得する。即ち、ロボットオブジェクト２６を用いて対応するロボット１０の制御を開始する際には、アプリケーションプログラムオブジェクト２０は、該当のロボットオブジェクト２６への参照を介して使用権の取得操作を実行しロボットオブジェクト２６の使用権を取得する（図９中符号ｅ）。使用権を取得したアプリケーションプログラムオブジェクト２０は、対象のロボットオブジェクト２６の完全な操作を行うことが可能になる（図１０中符号ｋ）。
【０１１６】
一方、ロボットオブジェクト２６の使用を終了する場合は、アプリケーションプログラムオブジェクト２０は使用終了の宣言（クローズ操作）を行い使用権を放棄する。即ち、制御対象のロボット１０の制御を終了した場合、アプリケーションプログラムオブジェクト２０は、対応するロボットオブジェクト２６への参照を介して使用権の解放操作を実行する（図１０中符号ｈ）。これにより、アプリケーションプログラムオブジェクト２０は対象のロボットオブジェクト２６の使用権を解放し、他のアプリケーションプログラムオブジェクト２１がこの解放されたロボットオブジェクト２６の使用権を取得してこれを操作できるようになる。
【０１１７】
この様にして、本発明の制御装置では、一つのプログラムタスクが一つのロボットの使用を開始する際に、プログラムタスクはロボットの使用開始の宣言を行い使用権を取得すると共に、ロボットの使用を終了する際に、プログラムタスクは使用終了の宣言を行って使用権を放棄する。
【０１１８】
次に、本発明の制御装置において、ロボットがプログラムタスクからの使用権の行使に対して択一制御を行う点について更に説明する。
【０１１９】
ロボットオブジェクト２６は、アプリケーションプログラムオブジェクト（プログラムタスク）２０が使用権を取得している場合に、以下のようにして、他のアプリケーションプログラムオブジェクト（プログラムタスク）２１からの使用権の択一制御を行う。
【０１２０】
ロボットオブジェクト２６は、同時に１つのアプリケーションプログラムオブジェクト２０にだけ使用権を与える。これにより、複数のアプリケーションプログラムオブジェクト２０，２１が同時に１つのロボットオブジェクト２６を操作してロボット１０に対して無秩序な動作制御を行なうことを防いでいる。
【０１２１】
ロボットオブジェクト２６は、使用権を与えたアプリケーションプログラムオブジェクト２０に対しては完全な操作を許している（図９，図１０中符号ｍ）。この状態で、使用権を与えていないアプリケーションプログラムオブジェクト２１に対しては、動作制御やロボット構成管理など、ロボットオブジェクト２６の状態を変更する操作を禁止している（図１０中符号ｇ）。したがって、使用権を取得していないアプリケーションプログラムオブジェクト２１は、ロボットオブジェクト２６に対応したロボット１０の制御を行うことはできない。即ち、既に他のアプリケーションプログラムオブジェクト２０によって使用権が取得されているロボットオブジェクト２６に対して、アプリケーションプログラムオブジェクト２１が使用権を取得を試みたとしても、ロボットオブジェクト２６は既に使用権を他のオブジェクト２０に与えているため、アプリケーションプログラムオブジェクト２１は使用権を取得することはできない。したがって、このアプリケーションプログラムオブジェクト２１はアプリケーションプログラムオブジェクト２０が使用権を解放するまでロボットオブジェクト２６の使用が禁止される（図１０中符号ｇ）。
【０１２２】
一方、アプリケーションプログラムオブジェクト２０によってロボット１０の使用終了が宣言された後は、アプリケーションプログラムオブジェクト２１はロボット１０を使用することができる。即ち、アプリケーションプログラムオブジェクト２０により使用権の解放操作が実行され（図１０中符号ｈ）使用権が解放された後は、ロボットオブジェクト２６は他のアプリケーションオブジェクト２１に対して使用権を与えることが可能になる。これにより、他のアプリケーションプログラムオブジェクト２１がこのロボットオブジェクト２６の使用権を取得して操作することが可能となる（図１０，図１１中符号ｉ）。これにより、ロボットオブジェクト２６は、アプリケーションプログラムオブジェクト２１に対して完全な操作を許す（図１０，図１１中符号ｎ）。
【０１２３】
次に、本発明の制御装置において、ロボットの識別を対象ロボットオブジェクトへの参照又は識別番号により行っている点について更に説明する。
【０１２４】
先ず、参照により行う場合について説明する。ロボット１０〜１４の制御を行うロボットオブジェクト２６〜３０は、ロボット管理オブジェクト３１によって保持、管理されている。ロボット管理オブジェクト３１は、アプリケーションプログラムオブジェクト２０〜２３に対して対象のロボットオブジェクト２６〜３０の照会操作を行うメソッドの組を提供している。ロボット管理オブジェクト３１は、この操作により対象のロボットオブジェクト２６〜３０への参照を返す。
【０１２５】
アプリケーションプログラムオブジェクト２０〜２３は、ロボット管理オブジェクト３１に対して照会操作を実行し対象のロボットオブジェクト２６〜３０への参照を取得する。これにより、アプリケーションプログラムオブジェクト２０〜２３は、ここで取得した参照を用いて、制御対象の機械装置に対応したロボットオブジェクト２６〜３０の識別を行う。
【０１２６】
次に、ロボットオブジェクトの識別を、識別番号で行う場合について説明する。この場合の各オブジェクトの構成は、基本的にロボット管理オブジェクト３１の構成内容に補足があるだけで、ロボットオブジェクト２６〜３０及び他のオブジェクトの構成は上述した参照を用いる場合と同一である。ただし、アプリケーションプログラムオブジェクト２０〜２３などロボット１０〜１４の動作制御を行うオブジェクトが、ロボットオブジェクト２６〜３０に対して行う操作方法は参照を用いる場合と異なっている。
【０１２７】
アプリケーションプログラムオブジェクト２０〜２３など他のオブジェクトが各ロボットオブジェクト２６〜３０の識別および操作を識別番号を用いて行うために、ロボット管理オブジェクト３１は次の機能を提供する。
【０１２８】
ロボット管理オブジェクト３１は、保持しているロボットオブジェクト２６〜３０を識別する識別番号を定義している。このロボットオブジェクト２６〜３０の識別番号は、ロボット管理オブジェクト３１がロボットオブジェクト２６〜３０を作成する際に用いるロボット構成情報４８で指定し、各ロボットオブジェクト２６〜３０にそれぞれ唯一の識別番号を割り当てる。ロボット管理オブジェクト３１は、保持しているロボットオブジェクト２６〜３０と識別番号の対応関係を保持しており、識別番号に基づいて対応するロボットオブジェクト２６〜３０の参照を取得することが可能である。
【０１２９】
ロボット管理オブジェクト３１は、ロボットオブジェクト２６〜３０が提供するメソッドの組に対応するすべてのメソッドを提供している。例えば、ロボット管理オブジェクト３１はロボットオブジェクト２６〜３０が提供する使用権の取得および解放操作、機械装置の動作制御、状態取得および構成管理などのすべてのメソッドに対応したメソッドの組を提供している。これらのメソッドは識別番号を伴っており、これによりロボット管理オブジェクト３１はいずれのロボットオブジェクト２６〜３０のメソッドを呼び出すか識別している。すなわち、ロボット管理オブジェクト３１においてメソッドに与えられた識別番号に対応するロボットオブジェクト２６〜３０への参照を、ロボットオブジェクト２６〜３０と識別番号の対応関係から取得し、取得したロボットオブジェクト２６〜３０への参照を介して該当するメソッドを呼び出す。
【０１３０】
アプリケーションプログラムオブジェクト２０〜２３など他のオブジェクトがロボットオブジェクト２６〜３０を操作する場合、ロボット管理オブジェクト３１が提供しているロボットオブジェクト２６〜３０を操作するためのメソッドを、操作対象のロボットオブジェクト２６〜３０に対応する識別番号を与えて呼び出す。これにより、アプリケーションプログラムオブジェクト２０〜２３は操作対象のロボットオブジェクト２６〜３０を操作することができる。
【０１３１】
ロボットオブジェクト２６〜３０の識別に参照を用いた場合、参照とこれを格納する記憶領域に与える識別名の管理は、アプリケーションプログラム側で管理する必要がある。すなわち、アプリケーションプログラムの記述言語として用いる一般的なオブジェクト指向言語では、参照を格納する記憶領域には任意の識別名（いわゆる変数名）を指定することが可能である上、記憶した参照の他の記憶領域への複写および代入を任意に行うことが許されている。したがって、１つの参照を複数の異なる識別名を持つ記憶領域に格納することで、１つのロボットオブジェクト２６〜３０の識別を複数の識別名(変数名)で行うことが可能になる。多くの場合、このような参照の代入および複写の機能はオブジェクト指向プログラム言語の有効な機能であるが、ロボットオブジェクト２６〜３０の識別においてはアプリケーションプログラム側で参照を格納する記憶領域およびその識別名の管理を行う必要がある。
【０１３２】
一方、識別番号を用いた場合にはロボットオブジェクト２６〜３０の識別は、一意に割り付けられた識別番号に基づいてロボット管理オブジェクトにおいて一元的に行うことが可能となる。よって、アプリケーションプログラム側では、ロボットオブジェクト２６〜３０の参照を格納する記憶領域およびその識別名を管理するために必要な配慮は軽減される。ただし、この場合オブジェクト指向プログラム言語の有効な機能である参照を利用することはできなくなる。
【０１３３】
ロボットオブジェクト２６〜３０の識別に、参照および識別番号のいずれを用いるかは、アプリケーションプログラムで任意に選択することができる。
【０１３４】
次に、識別番号を用いた場合のロボット制御のシナリオについて説明する。ロボット１０〜１４の制御を行う必要が生じたアプリケーションプログラムオブジェクト２０〜２３は、対象のロボット１０〜１４に対応したロボットオブジェクト２６〜３０の識別番号を指定して、ロボット管理オブジェクト３１の提供するロボットオブジェクト２６〜３０の使用権の取得操作を実行する。ロボット管理オブジェクト３１は、識別番号に対応したロボットオブジェクト２６〜３０を選択して使用権の取得操作を実行する。これにより、アプリケーションプログラムオブジェクト２０〜２３は、識別番号で指定したロボットオブジェクト２６〜３０の使用権を取得し、対象のロボットオブジェクト２６〜３０の完全な操作を行うことが可能になる。
【０１３５】
アプリケーションプログラムオブジェクト２０〜２３は、操作対象のロボットオブジェクト２６〜３０の識別番号を指定してロボット管理オブジェクト３１が提供するロボットオブジェクト２６〜３０の各メソッドに対応したメソッドを呼び出す。ロボット管理オブジェクト３１は、識別番号に対応したロボットオブジェクト２６〜３０に含まれる対応するメソッドを呼び出す。これにより、アプリケーションプログラムオブジェクト２０〜２３は対象のロボットオブジェクト２６〜３０を任意に操作することができる。すなわち、ロボットオブジェクト２６〜３０の提供するロボット１０〜１４の動作制御、状態取得、構成管理などのすべての操作を、ロボット管理オブジェクト３１を介して行うことが可能である。
【０１３６】
アプリケーションプログラムオブジェクト２０〜２３でロボットオブジェクト２６〜３０の使用が完了したならば、ロボット管理オブジェクト３１に対して対象のロボットオブジェクト２６〜３０の識別番号を指定して使用権の解放操作を実行する。ロボット管理オブジェクト３１は、識別番号に対応したロボットオブジェクト２６〜３０の使用権の解放操作を実行する。これにより、該当するロボットオブジェクト２６〜３０の使用権は解放され、他のアプリケーションプログラムオブジェクト２０〜２３がこのロボットオブジェクト２６〜３０の使用権を取得することが可能になる。
【０１３７】
図１４及び図１５は、アプリケーションプログラムオブジェクトが識別番号によりロボットオブジェクトを操作する場合の例を示している。なお、図１４及び図１５中、アプリケーションプログラムオブジェクト２０をアプリケーションプログラムオブジェクト（１）と、ロボットオブジェクト２６をロボットオブジェクト（１）とそれぞれ記載する。
【０１３８】
まず、アプリケーションプログラムオブジェクト２０は、対象となるロボットオブジェクト２６の使用権の取得操作をロボット管理オブジェクト３１に対して行う（図１４中符号ａ）。このとき、アプリケーションプログラムオブジェクト２０は、あらかじめロボット構成情報４８で定義されていたロボットオブジェクト２６の識別番号１を指定して、ロボット管理オブジェクト３１が提供する使用権の取得を行うメソッドを呼び出している。ロボット管理オブジェクト３１は、与えられた識別番号１に対応したロボットオブジェクト２６を選択し、これに対して使用権の取得操作を実行する（図１４中符号ｂ）。これにより、アプリケーションプログラムオブジェクト２０は、ロボットオブジェクト２６の使用権の取得を完了する。
【０１３９】
次に、アプリケーションプログラムオブジェクト２０は、対象のロボットオブジェクト２６に対して動作制御などの所望の操作を行う（図１４及び図１５中符号ｃ）。このとき、アプリケーションプログラムオブジェクト２０は、対象のロボットオブジェクト２６の識別番号１を指定して、ロボット管理オブジェクト３１の提供する対応するメソッドを呼び出す。本例では、ロボットオブジェクト２６の動作制御を実行するメソッドを呼び出している。ロボット管理オブジェクト３１は、識別番号１に対応したロボットオブジェクト２６を選択し、これに対して動作制御を実行するメソッドを実行する（図１４及び図１５中符号ｄ）。ロボットオブジェクト２６に対する他の操作もロボット管理オブジェクト３１を介して同様に実行することができる（図１５中符号ｅ、ｆ）。
【０１４０】
アプリケーションプログラムオブジェクト２０が対象のロボットオブジェクト２６に対して操作を完了したならば、識別番号１を指定してロボット管理オブジェクト３１に対して使用権の解放操作を実行する（図１５中符号ｇ）。ロボット管理オブジェクト３１は、与えられた識別番号１に対応したロボットオブジェクト２６を選択し、これに対して使用権の解放を行うメソッドを呼び出す。これにより、ロボットオブジェクト２６の使用権が解放され（図１５中符号ｈ）、他のアプリケーションプログラムオブジェクト２１〜２３がロボットオブジェクト２６を使用することが可能になる。
【０１４１】
次に、本発明の制御装置において、同期した制御の単位として複数のロボットを制御対象として定義可能としている点について更に説明する。
【０１４２】
本発明の制御装置では、制御対象である実在する機械装置に対応したロボットオブジェクトを１つまたは複数保持している。このため、制御対象である機械装置に対し、同期した制御の単位として複数のロボットを定義することが可能である。
【０１４３】
つまり、図１に示す制御装置では、制御対象であるロボット１０〜１４に対応したロボットオブジェクト２６〜３０を保持している。各ロボットオブジェクト２６〜３０は、ロボット１０〜１４各々を動作制御を含む制御を独立して行うものである。対象となる各ロボット１０〜１４は、ロボットユーザが作業内容および目的に応じて、制御装置の制御が及ぶ範囲で機構および制御軸を任意に組み合わせて構成することができる。ロボットオブジェクト２６〜３０は、ロボットユーザが構成したロボット１０〜１４に対する計算機モデルである。アプリケーションプログラムオブジェクト２０〜２３は、これらのロボットオブジェクト２６〜３０を作業内容に応じて操作することで、対応する機械装置の制御を行うことができる。
【０１４４】
図１６に、制御対象として５つの制御軸を有する実在の機械装置を、各制御軸の組合せが異なる３台のロボットとして制御する場合を想定したオブジェクトモデルと実在の機械装置の構成要素の対応関係について示す。図１６（ａ）は実在の機械装置の構成を示し、（ｂ）は制御装置内部のオブジェクトモデルについて示している。実在の機械装置の構成要素と各オブジェクトモデルとの対応関係は、ロボット（１）〜（３）についてロボットオブジェクト（１）〜（３）が対応し、制御軸（１）〜（７）について制御軸オブジェクト（１）〜（７）が対応し、機構（１）〜（３）について機構解オブジェクト（１）〜（３）が対応するようになっている。
【０１４５】
ロボットユーザは作業内容および目的に応じて、機械装置の全体または一部の機構および制御軸をグループ化し、これをロボットとして定義して制御対象とすることができる。即ち、ロボットは、機械装置全体に含まれる機構と制御軸の任意の組み合わせで構成することができる。
【０１４６】
定義したロボット（１）〜（３）は、制御装置上で各ロボット（１）〜（３）毎にロボットオブジェクト（１）〜（３）としてモデル化される。ロボットオブジェクト（１）〜（３）は、対応するロボット（１）〜（３）に含まれる制御軸（１）〜（７）を適切に制御することで、対象のロボット（１）〜（３）の動作制御を含めた制御を行う。ロボットユーザが作成した作業手順が記述されたアプリケーションプログラムオブジェクトは、このロボットオブジェクト（１）〜（３）を操作することで対応するロボット（１）〜（３）の制御をすることが可能となっている。
【０１４７】
次に、本発明の制御装置において、各ロボットが制御軸の部分集合と、これに対応する機構解を異なる組合せで保持している点について更に説明する。
【０１４８】
ロボットオブジェクト２６〜３０は、ロボット１０〜１４の制御を行う。対象のロボット１０〜１４は、機械装置全体に含まれる機構および制御軸の集合の全体であっても、一部分であっても良い。ロボットユーザは、作業内容に応じて、ロボット１０〜１４に含まれる機構解１５〜１９および制御軸６〜９の集合に対応したロボットオブジェクト２６〜３０を作成することができる。そして、このロボットオブジェクト２６〜３０をアプリケーションプログラムオブジェクト２０〜２３により操作することで、ロボットユーザはロボット１０〜１４を操作して機械装置に対して所望の作業を実行させることができる。
【０１４９】
次に、本発明の制御装置において、各ロボット１０〜１４はプログラムタスクから切り替えて使用し制御することが可能である点について更に説明する。
【０１５０】
プログラムタスクとしてのアプリケーションプログラムオブジェクト２０〜２３は、ロボットユーザがロボットサブシステム２に定義した各ロボットオブジェクト２６〜３０を作業内容に応じて操作することで、制御対象のロボット１０〜１４の制御を行い、所望の作業を実行することができる。
【０１５１】
例えば、図１７（ａ）に示すように２つのロボットオブジェクトを２つのプログラムタスクで共有して使用したり、図１８（ａ）に示すように２つのロボットオブジェクトをそれぞれ別々のプログラムタスクで使用することが出来る。図１７（ａ）の場合には、図１７（ｂ）に示すように、プログラムタスクのそれぞれが各ロボットオブジェクトを使用して一連の作業を行うことが出来る。また、図１８（ａ）の場合には、図１８（ｂ）に示すように、各プログラムタスクがそれぞれ別々のロボットオブジェクトを使用して一連の作業を行うことが出来る。この様に、作業内容に応じてプログラムタスクとロボットオブジェクトとの関係を定義することができる。
【０１５２】
つまり、アプリケーションプログラムオブジェクト２０〜２３はロボットオブジェクト２６〜３０の操作に先立ち、ロボット管理オブジェクト３１から任意に必要なロボットオブジェクト２６〜３０への参照を取得し、取得した参照を介して対応するロボットオブジェクト２６〜３０の操作を行う。この操作により、アプリケーションプログラムオブジェクト２０〜２３（プログラムタスク）とロボットオブジェクト２６〜３０の関係が定義される。そして、アプリケーションプログラムオブジェクト２０〜２３は、複数のロボットオブジェクト２６〜３０への参照を保持することができる。これは、アプリケーションプログラムオブジェクトの記述言語に用いる一般的なオブジェクト指向プログラム言語の基本的言語仕様に基づいている。
【０１５３】
次に、アプリケーションプログラムオブジェクト２０〜２３は、対象となるロボットオブジェクト２６〜３０に対して使用権の取得および解放操作を適宜おこなうことで、ロボットオブジェクトの操作が可能となり対応するロボットの制御を行うことができる。このことにより、アプリケーションプログラムオブジェクトは制御対象のロボットを任意に選択して制御することが可能になっている。
【０１５４】
次に、本発明の制御装置において、各ロボットに属する制御軸の部分集合は互いに重複することを許容され、制御軸の部分集合が各ロボットで互いに重複するか一致する場合は、各ロボットによる制御軸の部分集合の同時使用が禁止され、制御軸の部分集合が各ロボットで重複せず独立な場合は、これらのロボットによる制御軸の部分集合の同時使用を許容して制御する点について更に説明する。
【０１５５】
ロボットオブジェクト２６〜３０は、制御対象のロボット１０〜１４に含まれている各制御軸６〜９に対応した、１つ以上の制御軸オブジェクト４３〜４６への参照を保持することができる。ロボットオブジェクト２６〜３０は、保持している制御軸オブジェクト４３〜４６の参照を介して各制御軸オブジェクト４３〜４６の操作を行う。一方、制御軸オブジェクト４３〜４６は、１つ以上のロボットオブジェクト２６〜３０によって、その参照を保持されることが許される。つまり、１つの制御軸オブジェクト４３〜４６の参照は、複数のロボットオブジェクト２６〜３０によって保持されることが許されている。これにより、各ロボットオブジェクト２６〜３０は、制御軸オブジェクト４３〜４６の集合を互いに重複して保持することが可能になっている。
【０１５６】
制御軸オブジェクト４３〜４６は、同時に複数のロボットオブジェクト２６〜３０からの操作に対して制限を設け、各ロボットオブジェクト２６〜３０から無秩序に操作されることを防いでいる。すなわち、制御軸オブジェクト４３〜４６はこれを利用するロボットオブジェクト２６〜３０に対して１度に１つのオブジェクト２６〜３０にだけ使用権を与え、制御軸オブジェクト４３〜４６に対して動作制御を含めた完全な操作を許可する。そして、使用権が与えられていないロボットオブジェクト２６〜３０に対しては、動作制御を含めた制御軸オブジェクト４３〜４６の状態を変更する操作は禁止される。したがって、制御軸オブジェクト４３〜４６の使用権を取得していないロボットオブジェクト２６〜３０は、制御軸オブジェクト４３〜４６を操作し制御軸６〜９の動作制御を行うことはできない（択一制御）。
【０１５７】
ロボットオブジェクト２６〜３０は、アプリケーションプログラムオブジェクト２０〜２３から使用権の取得操作を受け付けた際に、保持している制御軸オブジェクト４３〜４６の各々に対して使用権の取得操作を実行する。このとき、ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６すべての使用権の取得が成功した場合、ロボットオブジェクト２６〜３０はアプリケーションプログラムオブジェクト２０〜２３に対してロボットオブジェクト２６〜３０の使用権を与え、制御軸オブジェクト４３〜４６の制御を開始する。
【０１５８】
一方、ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６のうち１つでも使用権の取得に失敗した場合には、ロボットオブジェクト２６〜３０はアプリケーションプログラムオブジェクト２０〜２３に対してロボットオブジェクト２６〜３０の使用権を与えず、制御軸オブジェクト４３〜４６の使用権の取得操作を中止または使用権が取得できるまで保留する。これにより、制御軸オブジェクト４３〜４６が複数のロボットオブジェクト２６〜３０から操作されることを防いでいる。
【０１５９】
このように、各ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６の集合が互いに重複している場合には、アプリケーションプログラムオブジェクト２０〜２３はこれらのロボットオブジェクト２６〜３０のうちいずれか１つだけのオブジェクト２６〜３０を使用して対象のロボット１０〜１４の制御を行うことができる。一方、各ロボットオブジェクト２６〜３０が保持している制御軸オブジェクト４３〜４６の集合が重複していない場合には、アプリケーションプログラムオブジェクト２０〜２３はそれぞれのロボットオブジェクト２６〜３０を同時に使用することができる。
【０１６０】
ここで、図１９〜図２１に基づいて、複数のロボットオブジェクトが制御軸オブジェクトの集合を重複して保持している場合の使用権取得および解放処理について説明する。図１９〜図２１では、保持している制御軸オブジェクト４３〜４６の集合が一部で重複している第１及び第５ロボットオブジェクト２６，３０の場合を例に説明する。なお、図１９〜図２１では、第１ロボットオブジェクト２６をロボットオブジェクト（２）と、第５ロボットオブジェクト３０をロボットオブジェクト（１）と記載している。また、第１〜第４制御軸オブジェクト４３〜４６は、制御軸オブジェクト（１）〜（４）と記載している。
【０１６１】
この例の場合、ロボットオブジェクト２６は第１〜第４制御軸オブジェクト４３〜４６を保持しており、ロボットオブジェクト３０は第３及び第４制御軸オブジェクト４５，４６を保持している。即ち、各ロボットオブジェクト２６，３０では、それぞれで保持している制御軸オブジェクトの集合において、第３及び第４制御軸オブジェクト４５，４６が重複していることになる。この結果、一方のロボットオブジェクトが制御軸オブジェクト４５，４６の使用権を取得して制御を行っている場合には、他方のロボットオブジェクトは制御軸オブジェクト４５，４６の使用権を取得することができないため制御できない（図２２）。
【０１６２】
図１９〜図２１では、まずロボットオブジェクト２６が保持している制御軸オブジェクト４３〜４６の使用権を取得し（図１９中符号ｏ）、制御軸オブジェクト４３〜４６の動作制御を含む操作を開始する（図１９中符号ｐ）。次に、ロボットオブジェクト３０は保持している制御軸オブジェクト４５，４６の使用権を取得を試みる（図２０中符号ｑ，ｔ）が、既に制御軸オブジェクト４５，４６の使用権はロボットオブジェクト２６によって取得されているので、これらの使用権を取得することができない。ロボットオブジェクト３０の使用権の取得操作は制御軸オブジェクト４５，４６の使用権が取得されるまで保留される（図２０中符号ｒ，ｕ）。
【０１６３】
ロボットオブジェクト２６は、これを利用するアプリケーションプログラムオブジェクト２０〜２３から使用権の解放操作を実行されることで、保持している制御軸オブジェクト４３〜４６の使用権を解放する（図２０中符号ｓ）。そして、ロボットオブジェクト３０は使用権が解放された制御軸オブジェクト４５，４６の使用権の取得を完了し、ロボット１４の対応する制御軸８，９の制御を行うことが可能になる。
【０１６４】
この様にして、本発明の制御装置では、複数のロボットオブジェクトが１つの制御軸オブジェクトを同時に操作可能とした場合に発生する制御の混乱を防いでいる。
【０１６５】
次に、本発明の制御装置において、ロボットの構成がプログラムタスクから制御軸と機構解の組合せを適宜選択可能である点について更に説明する。
【０１６６】
ロボットユーザは、ロボットサブシステム２のロボットオブジェクト２６〜３０の構成を、ロボット構成情報４８の記述による方法と、ロボット管理オブジェクト３１の提供するロボット構成管理操作による方法とにより、適宜変更することができる。
【０１６７】
先ず、ロボット構成情報４８による方法について説明する。ロボット構成情報４８には、各ロボットオブジェクト２６〜３０について、制御軸オブジェクト４３〜４６、機構解オブジェクト３２〜３６、動作制御処理オブジェクト３７〜４１などの構成に関する情報が記述されている。これらの情報が記述されているロボット構成情報４８に基づいて、ロボットサブシステム２のロボット管理オブジェクト３１は、制御装置の電源が投入されロボット管理オブジェクト３１が起動した場合や、アプリケーションプログラムオブジェクト２０〜２３または他のオブジェクトがロボット管理オブジェクト３１が提供する該当のメソッドを操作した場合に、各ロボットオブジェクト２６〜３０を作成する。
【０１６８】
ロボット構成情報４８は、制御対象のロボット１０〜１４の構成に応じてロボットユーザが作成し、制御装置または通信回線で接続されたホストコンピュータの記録媒体に永続的に保持される。ロボット構成情報４８を適宜作成することで、制御対象のロボット１０〜１４に対応したロボットオブジェクト２６〜３０を定義し作成することができる。
【０１６９】
次に、ロボット構成管理操作による方法について説明する。ロボット管理オブジェクト３１は、アプリケーションプログラムオブジェクト２０〜２３または他のオブジェクトに対してロボットオブジェクト２６〜３０の構成管理操作を行うメソッドの組を保持している。これらのメソッドは、ロボット構成情報４８を用いずに直接ロボットオブジェクト２６〜３０の構成操作を行う。アプリケーションプログラムオブジェクト２０〜２３は、これのメソッドを用いることでロボットオブジェクト２６〜３０を定義し構成操作を行うことでができる。
【０１７０】
この様に構成された本発明の制御装置を使用して、例えばシーリング作業を行う場合、図２３に示すように、ロボットオブジェクト２６，２７を使用するプログラムタスク（１）によってシーリング準備作業を行い、ロボットオブジェクト２８，２９を使用するプログラムタスク（２）とロボットオブジェクト３０を使用するプログラムタスク（３）によってシーリング作業を行うようにすることで、図２４に示すように、作業を効率良く行うことができる。
【０１７１】
次に、本発明の制御装置において、対応していなかった機構を含むロボットの機構解を新規に追加する場合にシステムソフトウエアに大きな変更をせずに容易に追加できる点、及びアプリケーションプログラムで制御対象のロボットの機構に依存することなく機構解の指定を一元的に行うことができる点について更に説明する。
【０１７２】
まず、物理的に同一のロボットの機構が複数（例えば、左手系と右手系）の機構解、すなわち複数の順機構解および逆機構解の組を持つ場合、それぞれの機構解を機構解オブジェクトとしてオブジェクトモデル化する（図１の例では機構解オブジェクト３２〜３６）。各機構解オブジェクトは、１対の順機構解および逆機構解の組に対応する計算処理および各機構解の計算において必要なパラメータ（例えばリンク部長さ、関節部角度作動範囲等）を保持している。また、他のオブジェクトに対して順機構解および逆機構解計算処理を行う手段としてメソッドを提供している。これらのメソッドは、各機構解計算処理をおこない座標変換を行う座標情報のみを要求し、従来の機構解計算処理では必要であった機構解の指定を行うためのパラメータなどは勿論不要である。
【０１７３】
次に、制御対象のロボットのオブジェクトモデルとして、ロボットオブジェクトを定義する（図１の例ではロボットオブジェクト２６〜３０）。ロボットオブジェクトは、制御対象のロボットの機構に対応した複数の機構解オブジェクトのうちいずれか１つの参照または実体を保持する。ロボットオブジェクトは、保持している機構解オブジェクトの提供する順機構解および逆機構解計算処理を実行するメソッドを用いることで、機構解オブジェクトに対応した機構解にしたがって、任意に定められた座標系と各関節の角度との間で座標変換をおこない、ロボットの動作制御を行う。
【０１７４】
また、ロボットオブジェクトは、アプリケーションプログラムからの位置決めおよび経路制御などの動作制御を実行する命令を受けとり、制御対象のロボットを命令に応じて動作制御を行う。ロボットオブジェクトは、制御対象のロボットの機構に含まれる機構解すなわち機構解オブジェクトと同数定義され、アプリケーションプログラムオブジェクトはこれらのロボットオブジェクトを選択することで、いずれの機構解を利用して動作制御するかを選択することができる。
【０１７５】
例えば、水平２軸スカラ型ロボットの場合には、アーム部のリンク機構について順機構解は１通りであるが逆機構解がいわゆる左手系と右手系の２通り存在している。したがって、左手系の逆機構解及び順機構解の組と右手系の逆機構解及び順機構解の組とを持つ２つの機構解オブジェクトが定義される。ロボットオブジェクトは機構解オブジェクトを１つ保持するため、それぞれの機構解オブジェクトに対してロボットオブジェクトが１つずつ定義される。アプリケーションプログラムは、各ロボットオブジェクトを選択することで、制御対象のロボットを左手系および右手系の機構解を選択して制御することができる。
【０１７６】
同様に、垂直５軸アーム型ロボットの場合には、アーム部のリンク機構については水平２軸スカラ型ロボットの場合と同様に順機構解は１通りであるが、逆機構解は左手系および右手系の２通りの逆機構解が存在する。一方、エンドエフェクタ部には３通りの順機構解と逆機構解の組が存在する。したがって、アーム部とエンドエフェクタ部の機構解の組み合わせは６通りとなり、これらの機構解に対応した機構解オブジェクトを６つ定義する。ロボットオブジェクトは、機構解オブジェクトを１つ保持することから、ロボットオブジェクトも各機構解オブジェクトに対応して６つ定義される。アプリケーションプログラムオブジェクトは、これらのロボットオブジェクトを選択することで、制御対象のロボットを所望の機構解を用いて制御することができる。
【０１７７】
機構解オブジェクトは、各機構解すなわち１対の順機構解および逆機構解に対応した計算処理を提供するメソッドを提供している。よって、これを利用して動作制御を行うロボットオブジェクトでは機構解計算処理を実行する場合に、機構解の計算に必要な座標情報のみを与えるだけ良い。機構解の選択は、いずれの機構解オブジェクトを選択するかで実現できる。すなわち、ロボットの機構毎に異なる機構解選択のパラメータ指定方法などの従来の機構解の選択方法は、本発明の制御装置では機構解オブジェクトの選択という単純なオブジェクトの選択操作に置きかえることが可能となる。これにより、機構解計算処理を利用するロボットオブジェクトなどの他のオブジェクトで、機構毎に異なる機構解選択方法に関与する必要はなくなる。したがって、新規の機構解を追加する場合には、制御対象のロボットのそれぞれの機構解に対応した機構解オブジェクトを追加し、各機構解オブジェクトに順機構解および逆機構解を行う計算処理を記述すれば良い。
【０１７８】
アプリケーションプログラムについては、ロボットオブジェクトの選択を行うことでいずれの機構解を用いて制御対象のロボットの動作制御を行うかを指定することが可能になる。従来のように制御対象のロボットの機構毎に異なる機構解の指定手段を用いる必要はなく、ロボットオブジェクトの選択という単純なオブジェクトの選択操作に置きかえることが可能となり機構解の選択を一元的な方法で実現することが可能となる。
【０１７９】
以上から、システムソフトウェアでの機構解の取り扱いを簡潔にし、任意の機構解を容易に追加することが可能となる。また、アプリケーションプログラムにおいて機構解の指定方法を一元的な方法で行うことが可能になる。
【０１８０】
なお、上述の形態は本発明の好適な形態の一例ではあるがこれに限定されるものではなく本発明の要旨を逸脱しない範囲において種々変形実施可能である。例えば、本発明の制御装置によって以下のように双腕スカラ型ロボットを制御するようにしても良い。即ち、１台の制御装置で制御される双腕型スカラロボットにおいて、通常作業では左右のアームをそれぞれ１台のスカラロボットとして定義することで、２台の独立したスカラロボットとして制御装置によって制御することができる。一方、ある特定の作業で左右のアームを同期して制御する必要がある場合には、双腕型スカラロボット全体を１つのロボットとする制御軸の集合および機構解を適用することで、左右のアームを実時間での動作制御レベルで完全に同期して動作させることができる。これにより、各アームが互いのアームの動作領域内で動作する場合に干渉回避動作を簡単にしかも高速で行うことが可能になり、ロボットの作業能率を改善しアプリケーションプログラムの記述を簡単にすることができる。また、同一の双腕型スカラロボットを作業等に応じて使い分けることが容易になる。
【０１８１】
また、以下のようにスカラロボットを制御するようにしても良い。即ち、アーム部先端に昇降・旋回軸を有するスカラロボットでは、アーム部および昇降・旋回軸のすべての制御軸をまとめて制御するロボットとして定義することで、通常作業では通常のスカラロボットとしてツール端の座標（Ｘ、Ｙ、Ｚ、Ｓ）の各要素を同時に制御することができる。一方、ある特定の作業では、上述の説明のように、アーム部と昇降・旋回部をそれぞれ別なロボットとして定義することで、各ロボットで独立した制御を行うことができる。これにより、立体的な表面へのシーリング作業などで昇降・旋回軸の動作制御をセンサ情報を用いてフィードバックして行う場合等、昇降・旋回軸部をアーム部とは独立したロボットとして動作制御することが可能になる。
【０１８６】
【発明の効果】
以上説明したように、請求項１記載のロボット制御装置では、同期した制御の単位として複数のロボットを制御対象として定義可能であり、各ロボットは制御軸の部分集合と、これに対応する機構解を異なる組合せで保持し、各ロボットはプログラムタスクから切り替えて使用され制御されるので、異なる機構解を作業内容に応じて切り替えてロボットの制御を行うことが出来るようになり、プログラムタスクと制御対象であるロボットとの関係に柔軟性を持たせることができる。このため、ロボットの作業効率およびプログラムの記述性を向上させることができる。また、以下の各効果も得ることができる。即ち、1多点工具端のあるロボットを制御する場合には、各工具点毎にロボットを定義することで、使用する工具点に応じて機構解を切り替えて制御することが可能になり、工具端に適した制御を行うことができる。2複数ロボットを同期して制御する場合には、同期が必要な制御軸の部分集合に対して一括して制御する機構解を与えてロボットとして定義すると共に定義した機構解を切り替えて制御することで、複数のロボットの同期した制御に適した制御を行うことができる。3構造可変形ロボットを制御する場合において、ロボットの構成／機構が動作中に変化するときには、各機構に応じてロボットを定義すると共に定義したロボットを切り替えて制御することで、構造可変形ロボットの制御に適した制御を行うことができる。4スカラロボットのハンドの制御のように単一の制御軸集合に対して多数の機構解を有するロボットの制御を行う場合には、機構解を単純化することができる。5一時的に他の制御軸の現在位置を目標位置として動作させる必要がある機構の制御（制御軸の従属的な制御）を容易に行うことができるようにすることが出来る。
【０１８７】
また、請求項２記載のロボットの制御装置では、各ロボットに属する制御軸の部分集合は互いに重複することを許容し、制御軸の部分集合が各ロボットで互いに重複するか一致する場合は、各ロボットによる制御軸の部分集合の同時使用を禁止し、制御軸の部分集合が各ロボットで重複せず独立な場合は、これらのロボットによる制御軸の部分集合の同時使用を許容して制御するので、制御軸の部分集合が各ロボットで互いに重複又は一致する場合であっても、また、重複せずに独立な場合であっても、各制御軸を正常に操作することができる。
【０１８８】
さらに、請求項３記載のロボットの制御装置では、ロボットの構成は、プログラムタスクから制御軸と機構解の組合せを適宜選択可能であるので、作業内容に適した制御軸と機構解の組合せをユーザが選択することが可能になり、ロボットと制御軸との関係に柔軟性を持たせることができる。このため、プログラム構造を簡単にすることができると共にプログラムを小型化することができ、ロボットの作業効率を向上させることができる。
【図面の簡単な説明】
【図１】本発明の制御装置の実施形態の一例を示す概略構成図である。
【図２】本発明の制御装置の制御対象である機械装置を示す概略構成図である。
【図３】図２の機械装置の制御軸の集合を示す概念図である。
【図４】図２の機械装置の制御軸・機構解とロボットの関係を示す概念図である。
【図５】機構解計算処理の内容を示す概念図である。
【図６】１つのアプリケーションプログラムが複数のロボットオブジェクトを操作する例を示し、その最初の部分の概念図である。
【図７】１つのアプリケーションプログラムが複数のロボットオブジェクトを操作する例を示し、図６に続く部分の概念図である。
【図８】１つのアプリケーションプログラムが複数のロボットオブジェクトを操作する例を示し、図７に続く最後の部分の概念図である。
【図９】複数のアプリケーションプログラムが１つのロボットオブジェクトを操作する例を示し、その最初の部分の概念図である。
【図１０】複数のアプリケーションプログラムが１つのロボットオブジェクトを操作する例を示し、図９に続く部分の概念図である。
【図１１】複数のアプリケーションプログラムが１つのロボットオブジェクトを操作する例を示し、図１０に続く最後の部分の概念図である。
【図１２】アプリケーションプログラムオブジェクトの状態遷移を示し、ロボットオブジェクトの使用権の取得操作と放棄操作による状態遷移を示す概念図である。
【図１３】ロボットオブジェクトの状態遷移を示し、使用権の取得要求と放棄要求による状態遷移を示す概念図である。
【図１４】ロボットオブジェクトが識別番号によりロボットオブジェクトを識別する場合の操作のシナリオを示し、その前半部分の概念図である。
【図１５】ロボットオブジェクトが識別番号によりロボットオブジェクトを識別する場合の操作のシナリオを示し、図１４に続く後半部分の概念図である。
【図１６】制御装置のオブジェクトモデルと実在の機械装置の対応関係を示す概念図で、（ａ）は実在の機械装置の構成を示す概念図、（ｂ）は（ａ）に対応する制御装置内部のオブジェクトモデルの構成を示す概念図である。
【図１７】２つのロボットオブジェクトを２つのアプリケーションプログラムタスクで共有して使用する様子を示し、（ａ）はロボットオブジェクトとアプリケーションプログラムタスクの関係を示す概念図、（ｂ）は作業の流れを示す概念図である。
【図１８】２つのロボットオブジェクトをそれぞれ別々のアプリケーションプログラムタスクで使用する様子を示し、（ａ）はロボットオブジェクトとアプリケーションプログラムタスクの関係を示す概念図、（ｂ）は作業の流れを示す概念図である。
【図１９】複数のロボットオブジェクトが重複して制御軸オブジェクトを保持している場合の操作のシナリオを示し、その最初の部分の概念図である。
【図２０】複数のロボットオブジェクトが重複して制御軸オブジェクトを保持している場合の操作のシナリオを示し、図１９に続く部分の概念図である。
【図２１】複数のロボットオブジェクトが重複して制御軸オブジェクトを保持している場合の操作のシナリオを示し、図２０に続く最後の部分の概念図である。
【図２２】制御軸オブジェクトの状態遷移を示し、使用権の取得要求と放棄要求による状態遷移を示す概念図である。
【図２３】本発明の制御装置によってシーリング作業を行う場合のプログラムタスクとロボットオブジェクトの関係を示し、（ａ）はシーリング準備作業についての概念図、（ｂ）はシーリング作業についての概念図である。
【図２４】本発明の制御装置によってシーリング作業を行う場合の作業内容とロボットオブジェクトの関係を示す概念図である。
【図２５】従来の制御装置の制御対象である機械装置を示す概略構成図である。
【図２６】図２５の機械装置の制御軸の集合を示す概念図である。
【図２７】図２５の機械装置の制御軸・機構解とロボットの関係を示す概念図である。
【図２８】従来の制御装置のプログラムタスクとロボットの関係を示す概念図である。
【図２９】従来の制御装置の作業内容とロボットの関係を示す概念図である。
【図３０】従来の機械装置の別の例における制御軸の集合を示す概念図である。
【図３１】図３０の機械装置の制御軸・機構解とロボットの関係を示す概念図である。
【符号の説明】
６〜９  制御軸
１０〜１４  ロボット
１５〜１９  機構解
２０〜２３  アプリケーションプログラムオブジェクト（プログラムタスク）
２６〜３０  ロボットオブジェクト
３２〜３６  機構解オブジェクト
４３〜４６  制御軸オブジェクト
【図１】
0003664910.tif 000002
【図２】
0003664910.tif 000003
【図３】
0003664910.tif 000004
【図４】
0003664910.tif 000005
【図５】
0003664910.tif 000006
【図６】
0003664910.tif 000007
【図７】
0003664910.tif 000008
【図８】
0003664910.tif 000009
【図９】
0003664910.tif 000010
【図１０】
0003664910.tif 000011
【図１１】
0003664910.tif 000012
【図１２】
0003664910.tif 000013
【図１３】
0003664910.tif 000014
【図１４】
0003664910.tif 000015
【図１５】
0003664910.tif 000016
【図１６】
0003664910.tif 000017
【図１７】
0003664910.tif 000018
【図１８】
0003664910.tif 000019
【図１９】
0003664910.tif 000020
【図２０】
0003664910.tif 000021
【図２１】
0003664910.tif 000022
【図２２】
0003664910.tif 000023
【図２３】
0003664910.tif 000024
【図２４】
0003664910.tif 000025
【図２５】
0003664910.tif 000026
【図２６】
0003664910.tif 000027
【図２７】
0003664910.tif 000028
【図２８】
0003664910.tif 000029
【図２９】
0003664910.tif 000030
【図３０】
0003664910.tif 000031
【図３１】
0003664910.tif 000032