(57)【要約】【課題】容易に、仮想保持部に対し、仮想対象物の保持、解放を実行させることができるシミュレーション装置、ロボット制御装置およびロボットを提供すること。【解決手段】ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付ける受付部と、前記受付部が受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行う制御部と、を備えることを特徴とするシミュレーション装置。【選択図】図１
2019063879.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、
前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付ける受付部と、
前記受付部が受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行う制御部と、を備えることを特徴とするシミュレーション装置。
【請求項２】
前記コマンドは、前記仮想ロボットに関する情報を示す第１の引数と、前記保持と前記解放との少なくとも一方を示す第２の引数と、前記仮想対象物に関する情報を示す第３の引数と、を有する請求項１に記載のシミュレーション装置。
【請求項３】
前記制御部は、前記仮想保持部により前記仮想対象物を保持する場合は、前記仮想ロボットの所定部分と前記仮想対象物との位置および姿勢の関係を保持し、
前記コマンドは、前記所定部分に関する情報を示す第４の引数を有する請求項２に記載のシミュレーション装置。
【請求項４】
前記受付部が前記第４の引数の入力がなく、前記仮想対象物の保持を指示する前記コマンドを受け付けた場合、前記制御部は、前記コマンドが実行されたときの前記仮想保持部と前記仮想対象物との位置および姿勢の関係を保持する請求項３に記載のシミュレーション装置。
【請求項５】
前記制御部は、前記仮想対象物の衝突の検出を行い、前記衝突を検出した場合は、前記衝突を報知する請求項１ないし４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させ、前記表示部に表示されている前記仮想対象物の色を変更することにより、前記衝突を報知する請求項５に記載のシミュレーション装置。
【請求項７】
前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させ、前記表示部に表示されている前記仮想対象物が衝突した位置にマークを表示することにより、前記衝突を報知する請求項５または６に記載のシミュレーション装置。
【請求項８】
前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させる請求項１ないし４のいずれか１項に記載のシミュレーション装置。
【請求項９】
前記制御部は、前記表示部に前記仮想対象物が表示される表示状態と、表示されない非表示状態とを切り替えることが可能である請求項８に記載のシミュレーション装置。
【請求項１０】
前記制御部は、前記表示部に、前記コマンドが有する引数について、リストを表示させる請求項８または９に記載のシミュレーション装置。
【請求項１１】
請求項１ないし１０のいずれか１項に記載のシミュレーション装置によるシミュレーション結果に基づいてロボットを制御することを特徴とするロボット制御装置。
【請求項１２】
前記コマンドは、前記ロボットの制御では実行されない請求項１１に記載のロボット制御装置。
【請求項１３】
対象物を保持することが可能な保持部を有し、
請求項１１または１２に記載のロボット制御装置によって制御されることを特徴とするロボット。
【請求項１４】
ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、
プロセッサーを備え、
前記プロセッサーは、前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付け、受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行うことを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、ロボット制御装置およびロボットに関する。
【背景技術】
【０００２】
基台と、複数のアーム（リンク）を有するロボットアームとを備えるロボットが知られている。ロボットアームの隣り合う２つのアームのうちの一方のアームは、関節部を介して、他方のアームに回動可能に連結され、最も基端側（最も上流側）のアームは、関節部を介して、基台に回動可能に連結されている。関節部はモーターにより駆動され、その関節部の駆動により、アームが回動する。また、最も先端側（最も下流側）のアームには、エンドエフェクターとして、例えば、着脱可能にハンドが装着される。そして、ロボットは、例えば、ハンドで対象物を把持し、その対象物を所定の場所へ移動させ、組立等の所定の作業を行う。このようなロボットでは、実際に作業を行う前に、ロボットに対して教示を行う必要がある。
【０００３】
特許文献１には、ロボットのシミュレーションを行うロボットシミュレーターが開示されている。
【０００４】
特許文献１に記載のロボットシミュレーターでは、ハンドによりワークを把持し、そのワークを移動させる場合、ハンド側に設定されたニードル（座標軸）と、ワーク側に設定された立体座標とが交差するか否かに応じて、ハンドによるワークの把持の成否を判断するようになっている。このロボットシミュレーターを用いて、ロボットに対してオフラインで教示（オフラインティーチング）を行うことが可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２１４５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載のロボットシミュレーターでは、シミュレーションにおいてハンドがワークを把持できるようにするために、実機にはない仮想のニードルをハンド側に設定する作業を行う必要があり、その作業に多大な労力および時間を要する。
【課題を解決するための手段】
【０００７】
本発明は、前述した課題の少なくとも一部を解決するためになされたものであり、以下により実現することが可能である。
【０００８】
本発明のシミュレーション装置は、ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、
前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付ける受付部と、
前記受付部が受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行う制御部と、を備えることを特徴とする。
【０００９】
このようなシミュレーション装置によれば、前記コマンドを用いることにより、容易に、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。これにより、仮想保持部が仮想対象物を保持した状態で仮想保持部が移動すると、その仮想保持部とともに仮想対象物が移動し、実機に即したシミュレーションを行うことができる。また、実機の作成前等、Ｉ／Ｏの割り当てが決定していない場合でも前記コマンドを用いることにより、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。
【００１０】
本発明のシミュレーション装置では、前記コマンドは、前記仮想ロボットに関する情報を示す第１の引数と、前記保持と前記解放との少なくとも一方を示す第２の引数と、前記仮想対象物に関する情報を示す第３の引数と、を有することが好ましい。
【００１１】
これにより、適確に、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。
【００１２】
本発明のシミュレーション装置では、前記制御部は、前記仮想保持部により前記仮想対象物を保持する場合は、前記仮想ロボットの所定部分と前記仮想対象物との位置および姿勢の関係を保持し、
前記コマンドは、前記所定部分に関する情報を示す第４の引数を有することが好ましい。
【００１３】
これにより、適確に、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。
【００１４】
本発明のシミュレーション装置では、前記受付部が前記第４の引数の入力がなく、前記仮想対象物の保持を指示する前記コマンドを受け付けた場合、前記制御部は、前記コマンドが実行されたときの前記仮想保持部と前記仮想対象物との位置および姿勢の関係を保持することが好ましい。
【００１５】
これにより、容易に、仮想保持部と仮想対象物との位置および姿勢の関係を把握することができる。
【００１６】
本発明のシミュレーション装置では、前記制御部は、前記仮想対象物の衝突の検出を行い、前記衝突を検出した場合は、前記衝突を報知することが好ましい。
これにより、容易に、仮想対象物が衝突したことを把握することができる。
【００１７】
本発明のシミュレーション装置では、前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させ、前記表示部に表示されている前記仮想対象物の色を変更することにより、前記衝突を報知することが好ましい。
これにより、容易に、仮想対象物が衝突したことを把握することができる。
【００１８】
本発明のシミュレーション装置では、前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させ、前記表示部に表示されている前記仮想対象物が衝突した位置にマークを表示することにより、前記衝突を報知することが好ましい。
【００１９】
これにより、容易に、仮想対象物が衝突したことと、仮想対象物が衝突した位置とを把握することができる。
【００２０】
本発明のシミュレーション装置では、前記制御部は、表示部の駆動を制御し、前記表示部に前記シミュレーションを表示させることが好ましい。
【００２１】
これにより、作業者は、表示部を介して仮想ロボットによるシミュレーションを見ることができ、仮想ロボットによる作業を容易かつ適確に把握することができる。
【００２２】
本発明のシミュレーション装置では、前記制御部は、前記表示部に前記仮想対象物が表示される表示状態と、表示されない非表示状態とを切り替えることが可能であることが好ましい。
【００２３】
これにより、仮想対象物を表示したい場合と表示したくない場合とで、表示状態と非表示状態とを選択することができ、利便性が高い。
【００２４】
本発明のシミュレーション装置では、前記制御部は、前記表示部に、前記コマンドが有する引数について、リストを表示させることが好ましい。
これにより、容易に、前記コマンドを設定することができる。
【００２５】
本発明のロボット制御装置は、本発明のシミュレーション装置によるシミュレーション結果に基づいてロボットを制御することを特徴とする。
【００２６】
このようなロボット制御装置によれば、シミュレーション装置で作成した動作プログラムを用いてロボットに適切な動作を行わせることができる。
【００２７】
本発明のロボット制御装置では、前記コマンドは、前記ロボットの制御では実行されないことが好ましい。
【００２８】
前記コマンドをロボットの制御でも実行可能なようにすると、前記コマンドをロボットの制御に用いる場合と、シミュレーションで用いる場合との整合が取り難いので、前記コマンドがロボットの制御では実行されないようにすることにより、そのような問題を解消することができる。また、前記コマンドがロボットの制御では実行されないようにすることにより、ロボットが不本意な動作を行うことを抑制することができる。
【００２９】
本発明のロボットは、対象物を保持することが可能な保持部を有し、
本発明のロボット制御装置によって制御されることを特徴とする。
【００３０】
このようなロボットによれば、ロボット制御装置の制御により、適切な動作を行うことができる。
【００３１】
本発明のシミュレーション装置は、ロボットを仮想化した仮想ロボットによるシミュレーションを行うシミュレーション装置であって、
プロセッサーを備え、
前記プロセッサーは、前記仮想ロボットが有する仮想保持部による仮想対象物の保持と解放との少なくとも一方を指示するコマンドを受け付け、受け付けた前記コマンドに基づいて、前記仮想保持部による前記仮想対象物の保持と解放との少なくとも一方を行うことを特徴とする。
【００３２】
このようなシミュレーション装置によれば、前記コマンドを用いることにより、容易に、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。これにより、仮想保持部が仮想対象物を保持した状態で仮想保持部が移動すると、その仮想保持部とともに仮想対象物が移動し、実機に即したシミュレーションを行うことができる。また、実機の作成前等、Ｉ／Ｏの割り当てが決定していない場合でも前記コマンドを用いることにより、仮想保持部に対し、仮想対象物の保持、解放を実行させることができる。
【図面の簡単な説明】
【００３３】
【図１】実施形態に係るロボットシステムを示す図である。
【図２】図１に示すロボットシステムのブロック図である。
【図３】表示装置に表示される画面の一例を示す図である。
【図４】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【図５】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションの流れ（制御部の動作）を示すフローチャートである。
【図６】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【図７】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【図８】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【図９】図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【図１０】ロボットシステムの他の構成例を示す図（ブロック図）である。
【図１１】ロボットシステムの他の構成例を示す図（ブロック図）である。
【発明を実施するための形態】
【００３４】
以下、本発明のシミュレーション装置、ロボット制御装置およびロボットを添付図面に示す実施形態に基づいて詳細に説明する。
【００３５】
≪ロボットシステム≫
図１は、実施形態に係るロボットシステムを示す図である。図２は、図１に示すロボットシステムのブロック図である。図３は、表示装置に表示される画面の一例を示す図である。図４は、図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。図５は、図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションの流れ（制御部の動作）を示すフローチャートである。図６〜図９は、それぞれ、図１に示すロボットシステムのシミュレーション装置の制御部が行うシミュレーションを示す図である。
【００３６】
また、図１には、互いに直交する３つの軸としてｘｒ軸、ｙｒ軸およびｚｒ軸が図示されており、各軸を示す矢印の先端側を「＋（正）」、基端側を「−（負）」とする。また、図１中のｚｒ軸方向を「鉛直方向」とし、ｘｒ−ｙｒ平面に沿った方向を「水平方向」とする。また、＋ｚｒ軸側を「上方」とし、−ｚｒ軸側を「下方」とする。
【００３７】
また、以下では、説明の都合上、図１および図３中の上側を「上」または「上方」、下側を「下」または「下方」と言う。また、図１および図３中の基台側を「基端」または「上流」、その反対側を「先端」または「下流」と言う。また、図１および図３中の上下方向が鉛直方向である。
【００３８】
また、本明細書において、「水平」とは、完全に水平な場合のみならず、水平に対して±５°以内で傾斜している場合も含む。同様に、本明細書において、「鉛直」とは、完全に鉛直な場合のみならず、鉛直に対して±５°以内で傾斜している場合も含む。また、本明細書において、「平行」とは、２つの線（軸を含む）または面が、互いに完全な平行である場合のみならず、±５°以内で傾斜している場合も含む。また、本明細書において、「直交」とは、２つの線（軸を含む）または面が、互いに完全な直交である場合のみならず、±５°以内で傾斜している場合も含む。
【００３９】
図１に示すロボットシステム１００は、ロボット１と、ロボット１の動作（駆動）を制御するロボット制御装置２と、ロボット制御装置２と通信可能なシミュレーション装置５と、を有する。
【００４０】
以下、ロボットシステム１００が有する各部を順次説明する。
〈ロボット〉
ロボット１は、いわゆる６軸の垂直多関節ロボットであり、例えば、精密機器等を製造する製造工程等で用いられ、精密機器や部品等の対象物（図示せず）の保持や搬送等の作業を行う。ロボット１は、基台１１０と、基台１１０に接続されたロボットアーム１０（可動部）とを有する。ロボットアーム１０は、複数のアーム１１〜１６を有するマニピュレーター２０およびツール１７（保持部）を有する。なお、対象物としては、ロボット１が行う作業で用いられるものであればよく、特に限定されない。
【００４１】
基台１１０は、ロボット１を例えば床等の任意の設置箇所７０に取り付ける部分である。マニピュレーター２０は、アーム１１（第１アーム）、アーム１２（第２アーム）、アーム１３（第３アーム）、アーム１４（第４アーム）、アーム１５（第５アーム）、アーム１６（第６アーム）と、を有する。アーム１６は、円盤状をなしており、そのアーム１６にはツール１７（エンドエフェクター）が設けられている。これらアーム１１〜１６は、基台１１０側からツール１７側に向かってこの順に連結されている。各アーム１１〜１６は、隣り合うアームまたは基台１１０に対して回動可能になっている。
【００４２】
ツール１７としては、対象物を保持、解放（保持の解除）することが可能なもの（装置）であれば特に限定されないが、本実施形態では、ツール１７として、対象物を把持（保持）、解放することが可能なハンドが用いられている。また、ツール１７の他の構成例としては、例えば、対象物を吸着（保持）、解放することが可能な吸着ヘッド（吸着装置）等が挙げられる。また、対象物を保持するとは、対象物を移動または対象物の姿勢を変更させることが可能なように、対象物を持つことであり、例えば、把持（掴む）、吸着、載置等が含まれる。また、ツール１７の先端中心をツールセンターポイントＰという。
【００４３】
また、図２に示すように、ロボット１は、一方のアームを他方のアーム（または基台１１０）に対して回動させるモーターおよび減速機等を備える駆動部１３０を有する。モーターとしては、例えば、ＡＣサーボモーター、ＤＣサーボモーター等のサーボモーターを用いることができる。減速機としては、例えば、遊星ギア型の減速機、波動歯車装置等を用いることができる。また、ロボット１は、モーターまたは減速機の回転軸の回転角度を検出する角度センサー１４０を有する。角度センサー１４０としては、例えば、ロータリーエンコーダー等を用いることができる。また、駆動部１３０および角度センサー１４０は、各アーム１１〜１６に対応して設けられており、本実施形態では、ロボット１は、６つの駆動部１３０および６つの角度センサー１４０を有する。
【００４４】
また、各駆動部１３０は、図示はしないが、例えば図１に示す基台１１０に内蔵されたモータードライバーと電気的に接続（以下、単に「接続」とも言う）されている。各駆動部１３０は、対応するモータードライバーを介してロボット制御装置２により制御される。また、各角度センサー１４０は、ロボット制御装置２に電気的に接続されている。また、ツール１７を駆動する駆動部（図示せず）は、ロボット制御装置２により制御される。
【００４５】
以上、ロボット１の構成について簡単に説明した。このようなロボット１は、後述するロボット制御装置２によって制御される。これにより、ロボット１は、適切な動作を行うことができる。
【００４６】
なお、ロボット１は、図示はしないが、例えばツール１７に加わる力（モーメントを含む）を検出する６軸力覚センサー等で構成された力検出装置（力検出部）を備えていてもよい。力検出装置は、例えば、アーム１６とツール１７との間に配置され、ロボット制御装置２に電気的に接続される。力検出装置を設けることにより、例えば、インピーダンス制御等の力制御を行うことが可能になる。
【００４７】
〈ロボット制御装置〉
ロボット制御装置２は、ロボット１の動作を制御する。このロボット制御装置２は、ロボット１が有する各部の機能をつかさどるロボットコントローラーで構成されており、ロボット１およびシミュレーション装置５に対して通信可能に接続されている。
【００４８】
ロボット制御装置２とロボット１とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。また、ロボット制御装置２は、ロボット１と別体であってもよく、また、ロボット１（例えば、基台１１０等）にその一部または全部が内蔵されていてもよい。
【００４９】
また、ロボット制御装置２とシミュレーション装置５とは、例えばケーブル等を用いて有線方式で通信可能に接続されていてもよく、また、無線方式で通信可能に接続されていてもよい。
【００５０】
図２に示すように、ロボット制御装置２は、プロセッサーを備える制御部２１と、制御部２１に通信可能に接続されたメモリー等を備える記憶部２２と、外部インターフェース（Ｉ／Ｆ）を備える外部入出力部２３（受付部）と、を含む。外部入出力部２３は、ロボット制御装置２の受付部の１例である。ロボット制御装置２の各構成要素は、種々のバスを介して相互通信可能に接続されている。
【００５１】
制御部２１は、記憶部２２に記憶された各種プログラム等を実行する。これにより、ロボット１の動作の制御や各種演算および判断等の処理を実現できる。
【００５２】
記憶部２２には、制御部２１により実行可能な各種プログラムが保存（記憶）されている。また、記憶部２２には、外部入出力部２３で受け付けた各種データの保存が可能である。記憶部２２は、例えばＲＡＭ（Random Access Memory）等の揮発性メモリーや、ＲＯＭ（Read Only Memory）等の不揮発性メモリー等を含んで構成されている。なお、記憶部２２は、非着脱式に限らず、着脱式の外部記憶装置（図示せず）を有する構成であってもよい。
【００５３】
各種プログラムとしては、シミュレーション装置５から出力された動作プログラムや、動作プログラムの修正や変更をするプログラム等が挙げられる。各種データとしては、例えば、ツールセンターポイントＰの位置姿勢、各アーム１１〜１６の回動角度等に関するデータ等が挙げられる。
【００５４】
外部入出力部２３は、外部インターフェース（Ｉ／Ｆ）を備え、ロボット１およびシミュレーション装置５の各接続のために用いられる。
【００５５】
このようなロボット制御装置２は、後述するシミュレーション装置５によるシミュレーション結果（動作プログラム）に基づいて（を用いて）ロボット１を制御する。これにより、シミュレーション装置５で作成した動作プログラムを用いて、ロボット１に適切な動作を行わせることができる。また、シミュレーション装置５で作成した動作プログラムを用いてロボット１を動作させることができるので、実機でのティーチング作業を省略することができる。そのため、作業者が実際にロボット１を動作させてティーチングすることに比べ、ティーチング時間を大幅に短縮することができる。
【００５６】
なお、ロボット制御装置２は、前述した構成に加えて、さらに他の構成が付加されていてもよい。また、ロボット制御装置２には、ディスプレイ等を有する表示装置や、例えばマウスやキーボード等の入力装置が接続されていてもよい。また、記憶部２２に保存されている各種プログラムやデータ等は、予め記憶部２２に記憶されたものであってもよいし、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供されたものでもよいし、ネットワーク等を介して提供されたものであってもよい。
【００５７】
〈シミュレーション装置〉
シミュレーション装置５は、仮想空間上で、実機であるロボット１を仮想化した仮想ロボット１Ａを動作させ、実機であるロボット１の動作のシミュレーションを行う（図３等参照）。なお、仮想ロボット１Ａは、前述した実機であるロボット１に対応している（図１および図３参照）。具体的には、仮想ロボット１Ａは、仮想基台１１０Ａと、複数の仮想アーム１１Ａ〜１６Ａを有する仮想マニピュレーター２０Ａと仮想ツール１７Ａ（仮想保持部）とを備える仮想ロボットアーム１０Ａとを有する。また、仮想ロボット１Ａの各部の符号は、それぞれ、実際のロボット１の対応する各部の符号の後に「Ａ」を付けて表記する。また、同様に、対象物は、シミュレーション装置５では、仮想対象物８０Ａとする（図７参照）。なお、ツールセンターポイントＰについては「Ａ」を追加した表記を省略している。
【００５８】
図２に示すシミュレーション装置５は、例えばＰＣ（Personal Computer）等の種々のコンピューターで構成されており、ロボット制御装置２に対して通信可能に接続されている。
【００５９】
シミュレーション装置５は、プロセッサーを備える制御部５１と、制御部５１に通信可能に接続されたメモリー等を備える記憶部５２と、外部Ｉ／Ｆ（インターフェース）を備える外部入出力部５３（受付部）と、を含む。外部入出力部５３は、シミュレーション装置５の受付部の１例である。シミュレーション装置５の各構成要素は、種々のバスを介して相互通信可能に接続されている。
【００６０】
制御部５１は、記憶部５２に記憶された各種プログラム等を実行する。これにより、仮想ロボット１Ａの動作の制御や各種演算および判断等の処理を実現できる。
【００６１】
記憶部５２には、制御部５１により実行可能な各種プログラムが保存されている。また、記憶部５２には、外部入出力部５３で受け付けた各種データの保存が可能である。記憶部５２は、例えばＲＡＭ（Random Access Memory）等の揮発性メモリーや、ＲＯＭ（Read Only Memory）等の不揮発性メモリー等を含んで構成されている。なお、記憶部５２は、非着脱式に限らず、着脱式の外部記憶装置（図示せず）を有する構成であってもよい。
【００６２】
各種プログラムとしては、仮想ロボット１Ａによるオフラインティーチング（ロボット１のティーチング作業を、実機であるロボット１を使用しないで行うティーチング）の設定および実行に関するプログラム等が挙げられる。当該プログラムには、仮想ロボット１Ａを動作させる動作命令や、表示装置３１に表示させる信号を出力する出力命令等が含まれる。各種データとしては、例えば、ツールセンターポイントＰの位置姿勢、各仮想アーム１１Ａ〜１６Ａの回動角度等に関するデータ等が挙げられる。
【００６３】
外部入出力部５３は、外部Ｉ／Ｆ（インターフェース）を備え、ロボット制御装置２、表示装置３１および入力装置３２との各接続のために用いられる。したがって、外部入出力部５３は、作業者による入力装置３２の操作（指令）を受け付ける受付部としての機能を有する。また、外部入出力部５３は、表示装置３１のモニターに各種画面（例えば、図３の画面ＷＤ１等）に関する信号を出力する出力部としての機能を有する。
【００６４】
なお、シミュレーション装置５は、前述した構成に加えて、さらに他の構成が付加されていてもよい。また、記憶部５２に保存されている各種プログラムやデータ等は、予め記憶部５２に記憶されたものであってもよいし、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供されたものでもよいし、ネットワーク等を介して提供されたものであってもよい。
【００６５】
〈表示装置および入力装置〉
図２に示す表示装置３１（表示部）は、ディスプレイを備えており、例えば図３に示す画面ＷＤ１等の各種画面を表示する機能を有する。したがって、作業者は、表示装置３１を介して仮想ロボット１Ａの動作等を確認することができる。また、表示装置３１としては、特に限定されず、例えば、液晶表示装置、有機ＥＬ表示装置等の直視型の表示装置、プロジェクター等の投射型表示装置等が挙げられる。
【００６６】
入力装置３２（入力部）は、例えばマウスやキーボード等を含んで構成されている。したがって、作業者は、入力装置３２を操作することで、シミュレーション装置５に対して各種処理等の指示を行うことができる。
【００６７】
なお、シミュレーション装置５には、表示装置３１および入力装置３２がそれぞれ１つ接続されていてもよいし、それぞれ複数接続されていてもよい。また、表示装置３１および入力装置３２の代わりに、表示装置３１および入力装置３２の機能を兼ね備えた表示入力装置（図示せず）を用いてもよい。表示入力装置としては、例えばタッチパネル等を用いることができる。
【００６８】
以上、ロボットシステム１００の基本的な構成について簡単に説明した。かかるロボットシステム１００は、シミュレーション装置５と、シミュレーション装置５によるシミュレーション結果（動作プログラム）に基づいてロボット１の動作の制御を行うロボット制御装置２と、ロボット制御装置２により制御されるロボット１と、を有する。このようなロボットシステム１００によれば、実機であるロボット１を用いることなく、表示装置３１が有するディスプレイ上（シミュレーション上の空間）で、仮想ロボット１Ａに対して所定の作業を教示（ティーチング）し、その教示された作業を検証することができる。そのため、実機であるロボット１を用いずとも、例えば、ロボット１による作業におけるサイクルタイム等を検討することができる。
【００６９】
≪シミュレーション≫
次に、シミュレーション装置５が行うシミュレーションについて説明する。
【００７０】
〈コマンドによる制御〉
シミュレーション装置５の制御部５１は、表示装置３１の駆動を制御し、表示装置３１が有するディスプレイに画面ＷＤ１を表示し（図３参照）、その画面ＷＤ１に、仮想ロボット１Ａ、仮想対象物８０Ａ等を表示する（図４、図６参照）。すなわち、制御部５１は、表示装置３１に仮想ロボット１Ａによるシミュレーションを表示させる。
【００７１】
このシミュレーションでは、仮想ツール１７Ａによる仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を指示するコマンド（以下、他のコマンドと区別するため「コマンドＣ」と言う）が用いられる。
【００７２】
すなわち、シミュレーションでは、制御部５１は、コマンドＣに基づいて、仮想ツール１７Ａによる仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を行う（制御）する。
【００７３】
具体的には、コマンドＣが仮想対象物８０Ａの把持（保持）を指示する場合は、制御部５１は、仮想ツール１７Ａに仮想対象物８０Ａを把持させる。すなわち、制御部５１は、仮想ロボット１Ａの仮想ロボットアーム１０Ａの所定部分（この所定部分は、第４の引数で設定されるものであるが、本実施形態では１例として仮想ツール１７Ａとする）と仮想対象物８０Ａとの位置および姿勢の関係を保持（固定）し、仮想ツール１７Ａとともに仮想対象物８０Ａを移動させたり（位置を変更したり）、仮想ツール１７Ａとともに仮想対象物８０Ａの姿勢を変更する。
【００７４】
また、コマンドＣが仮想対象物８０Ａの解放を指示する場合は、制御部５１は、仮想ツール１７Ａに仮想対象物８０Ａを解放させる。すなわち、制御部５１は、仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係の保持を中止する。
【００７５】
また、コマンドＣは、作業者が入力装置３２を操作することにより、シミュレーション装置５に入力され、シミュレーションのプログラムに書き込むことが可能である。シミュレーションでは、仮想ツール１７Ａによる仮想対象物８０Ａの把持、解放の少なくとも一方を行う場合、作業者は、入力装置３２により、コマンドＣを入力する。そして、シミュレーション装置５の外部入出力部５３は、入力されたコマンドＣを受け付ける。また、そのコマンドＣは、プログラムに書き込まれる。そして、制御部５１は、外部入出力部５３が受け付けたコマンドＣに基づいて、仮想ツール１７Ａによる仮想対象物８０Ａの把持、解放の少なくとも一方を行う。この場合、把持、解放のいずれを行うかは、後述する第２の引数で決まる。
【００７６】
コマンドＣの１例を説明すると、例えば、下記のような構成が挙げられる。この構成例では、コマンドＣは、パラメーターを指定する第１の引数、第２の引数、第３の引数および第４の引数を有している。なお、コマンドＣの引数の数は、４つに限定されず、３つ以下でもよく、また、５つ以上でもよい。
【００７７】
コマンドＣ（第１の引数、第２の引数、第３の引数、第４の引数）
以下、各引数について説明する。
【００７８】
第１の引数は、仮想ロボット１Ａに関する情報を示す。仮想ロボット１Ａに関する情報としては、例えば、ロボット番号等が挙げられる。具体的には、複数の種類のロボットに対して、それぞれ、ロボット番号が付けられており、そのロボット番号を選択（指定）することにより、シミュレーションで用いるロボットを選択（指定）することができる。
【００７９】
第２の引数は、仮想ツール１７Ａによる仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を示す。具体的には、コマンドＣが仮想ツール１７Ａによる仮想対象物８０Ａの把持を指示する場合は、第２の引数は、「把持（保持）」であり、また、コマンドＣが仮想ツール１７Ａによる仮想対象物８０Ａの解放を指示する場合は、第２の引数は、「解放」である。また、コマンドＣにより、仮想ツール１７Ａによる仮想対象物８０Ａの把持、解放を時間をおいて指示することも可能であり、この場合は、第２の引数は、「把持、解放」である。
【００８０】
第３の引数は、仮想対象物８０Ａに関する情報を示す。仮想対象物８０Ａに関する情報としては、例えば、仮想対象物８０Ａの種類（仮想対象物８０Ａとして何を用いるか）等が挙げられる。
【００８１】
第４の引数は、仮想ロボット１Ａの仮想ロボットアーム１０Ａのうち、仮想対象物８０Ａと、位置および姿勢の関係を保持する部分（所定部分）に関する情報を示す。前記所定部分に関する情報としては、例えば、仮想ロボットアーム１０Ａに設定されている座標系（ツール座標系）の番号等が挙げられる。具体的には、仮想ロボットアーム１０Ａに設定されている複数の座標系（ツール座標系）に対して、番号が付けられており、その番号を選択（指定）することにより、その番号の座標系が設定されている仮想ロボットアーム１０Ａの部分を選択（指定）することができる。これにより、第２の引数が「把持」の場合は、仮想ロボットアーム１０Ａの前記指定された部分と仮想対象物８０Ａとの位置および姿勢の関係が保持される。なお、仮想対象物８０Ａとの位置および姿勢の関係を保持する仮想ロボットアーム１０Ａの所定部分の候補としては、仮想ツール１７Ａの他、例えば、アーム１１、１２、１３、１４、１５、１６等が挙げられる。
【００８２】
また、第４の引数が入力されておらず、第２の引数が「把持」の場合は、そのコマンドＣが実行されたときの仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係を保持する。すなわち、外部入出力部５３が第４の引数の入力がなく、仮想対象物８０Ａの把持を指示するコマンドＣ（第２の引数が「把持」）を受け付けた場合は、制御部５１は、そのコマンドＣが実行されたときの仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係を保持する。
【００８３】
ここで、仮想対象物８０Ａの把持を指示するコマンドＣが実行されたときに、仮想ツール１７Ａと仮想対象物８０Ａとが離間していた場合は、その離間状態で、仮想ロボット１Ａの所定部分、例えば、仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係が保持され、仮想ツール１７Ａが移動すると、その仮想ツール１７Ａとともに仮想対象物８０Ａも移動する。これにより、仮想ツール１７Ａが仮想対象物８０Ａを把持する位置の教示点が誤っていることを知ることができる。
【００８４】
また、コマンドＣは、ロボット制御装置２の制御部２１が行うロボット１の制御では実行されない。コマンドＣをロボット１の制御でも実行可能なようにすると、コマンドＣをロボット１の制御に用いる場合と、シミュレーションで用いる場合との整合が取り難いので、コマンドＣがロボット１の制御では実行されないようにすることにより、そのような問題を解消することができる。また、コマンドＣがロボット１の制御では実行されないようにすることにより、ロボット１が不本意な動作を行うことを抑制することができる。
【００８５】
また、コマンドＣの入力（設定）においては、制御部５１は、表示装置３１に、第１の引数、第２の引数、第３の引数、第４の引数について、それぞれ、リスト（図示せず）を表示させる。代表的に第１の引数についてのリストについて説明すると、第１の引数についてのリストには、例えば、複数のロボット番号、すなわち、「１」、「２」、「３」、「４」、「５」等が表示される。また、作業者は、入力装置３２により、「１」、「２」、「３」、「４」、「５」のうちから１つを選択する。これにより、第１の引数が入力される。また、シミュレーション装置５の外部入出力部５３は、入力された第１の引数を受け付ける。そして、制御部５１は、外部入出力部５３が受け付けた第１の引数を設定する。なお、第２の引数、第３の引数および第４の引数についてのリストも同様であり、その説明は省略する。
【００８６】
ここで、シミュレーション装置５は、複数の表示モードを有していてもよい。例えば、シミュレーション装置５は、表示装置３１に、仮想対象物８０Ａを通常に表示させる第１の表示モード（表示状態）と、仮想対象物８０Ａを表示させない第２の表示モードと（非表示状態）と、仮想対象物８０Ａを半透明に表示させる第３の表示モード（半透明表示状態）とを有し、入力装置３２により表示モードの入力を行うことで、第１の表示モードと第２の表示モードと第３の表示モードとのうちからいずれか１つを選択可能にしてもよい。換言すれば、制御部５１は、表示装置３１に仮想対象物８０Ａが表示された表示状態と、表示されない非表示状態と、半透明に表示された半透明表示状態とを切り替えることが可能であり、入力装置３２により表示モードの入力を行うことで、その切り替えがなされる。なお、シミュレーション装置５は、第２の表示モードと第３の表示モードとの一方を有していなくてもよい。
【００８７】
〈衝突の検出、報知〉
シミュレーション装置５の制御部５１は、シミュレーションにおいて、仮想ロボット１Ａの衝突（接触）の検出を行う。本実施形態では、制御部５１は、仮想ロボット１Ａの仮想ツール１７Ａにより把持された仮想対象物８０Ａの衝突の検出を行う。
【００８８】
また、制御部５１は、仮想対象物８０Ａの衝突を検出した場合は、その衝突を報知する。衝突の報知の方法としては、特に限定されず、例えば、表示装置３１での表示、図示しないスピーカーやブザー等による音声や音等が挙げられる。したがって、衝突を報知する報知部としては、例えば、表示装置３１、スピーカー、ブザー等が挙げられる。
【００８９】
また、表示装置３１で表示する方法を採用した場合は、制御部５１は、仮想対象物８０Ａが実際の物体を仮想化した仮想物体８６Ａに衝突した場合、表示装置３１の表示態様を変更する。本実施形態では、表示装置３１で表示する方法を採用しており、仮想対象物８０Ａが仮想物体８６Ａに衝突した場合、図４に示すように、仮想対象物８０Ａ全体の色を他の色に変更する。なお、図４では、仮想対象物８０Ａに斜線を付して色を変更したことを示している。これにより、容易かつ適確に、仮想対象物８０Ａが仮想物体８６Ａに衝突したことを把握することができる。なお、仮想対象物８０Ａが仮想物体８６Ａに衝突した場合、仮想対象物８０Ａ全体の色ではなく、一部の色を他の色に変更してもよい。
【００９０】
また、変更後の色は、特に限定されず、諸条件に応じて適宜設定可能であり、例えば、赤色、黄色、橙色、紫色等が挙げられ、１色を用いてもよく、また、複数色を用いてもよい。また、前記の色のうちでは、赤色は、仮想対象物８０Ａが仮想物体８６Ａに衝突したことをイメージし易い色であり、その衝突の報知に適している。また、変更後の色は、種々の色に変更可能、例えば、赤色、黄色、橙色、紫色等の複数色のうちから任意の色を選択でき、また、変更も可能なようにしてもよい。
【００９１】
また、仮想物体８６Ａとしては、特に限定されず、例えば、周辺機器、仮想ロボット１Ａが行う作業に用いる装置等が挙げられる。図示の構成では、仮想物体８６Ａは、柱である。
【００９２】
また、図４に示すように、仮想対象物８０Ａが仮想物体８６Ａに衝突した位置（箇所）、すなわち、仮想対象物８０Ａと仮想物体８６Ａとの衝突箇所に、仮想対象物８０Ａおよび仮想物体８６Ａとは異なるマーク７１を表示する。これにより、容易かつ適確に、仮想対象物８０Ａが仮想物体８６Ａに衝突したことと、仮想対象物８０Ａが仮想物体８６Ａに衝突した位置とを把握することができる。
【００９３】
また、マーク７１の形状は、特に限定されず、諸条件に応じて適宜設定可能であり、本実施形態では、球である。また、マーク７１の寸法は、特に限定されず、諸条件に応じて適宜設定可能である。また、マーク７１の色は、特に限定されず、諸条件に応じて適宜設定可能であるが、仮想対象物８０Ａの変更後の色および仮想物体８６Ａの色と異なることが好ましい。また、マーク７１の色は、種々の色に変更可能にしてもよい。
【００９４】
なお、仮想対象物８０Ａが仮想物体８６Ａに衝突した場合、仮想対象物８０Ａの色の他の色への変更と、マーク７１の表示との一方を省略してもよい。
【００９５】
ここで、シミュレーション装置５は、複数の衝突表示モードを有していてもよい。例えば、シミュレーション装置５は、仮想対象物８０Ａが仮想物体８６Ａに衝突した場合、仮想対象物８０Ａの色を他の色に変更する第１の衝突表示モードと、仮想対象物８０Ａが仮想物体８６Ａに衝突した位置（箇所）、すなわち、仮想対象物８０Ａと仮想物体８６Ａとの衝突箇所に、仮想対象物８０Ａおよび仮想物体８６Ａとは異なるマーク７１を表示する第２の衝突表示モードとを有し、入力装置３２により衝突表示モードの入力を行うことで、第１の衝突表示モードと第２の衝突表示モードとの一方を選択可能にしてもよい。
【００９６】
また、シミュレーション装置５は、複数の動作モードを有していてもよい。例えば、シミュレーション装置５は、仮想ロボット１Ａの衝突の検出を行う第１の動作モードと、仮想ロボット１Ａの衝突の検出を行わない第２の動作モードとを有し、入力装置３２により動作モードの入力を行うことで、第１の動作モードと第２の動作モードとの一方を選択可能にしてもよい。
【００９７】
〈シミュレーションの具体例〉
次に、シミュレーション装置５が行うシミュレーションの具体例について説明する。
【００９８】
このシミュレーションでは、仮想ロボット１Ａは、仮想対象物８０Ａを仮想ラック９１Ａ（仮想棚）の仮想収納部９２Ａ（棚板）から取り出し、仮想対象物８０Ａを仮想秤９６Ａに載置し、仮想対象物８０Ａの計量が終了した後、仮想対象物８０Ａを仮想ラック９１Ａの仮想収納部９２Ａに収納する作業を行う（図６参照）。以下、図５に示すフローチャートに基づいて説明する。
【００９９】
図６に示すように、仮想ラック９１Ａは、複数の仮想収納部９２Ａを有しており、その複数の仮想収納部９２Ａのうちの所定の仮想収納部９２Ａには、仮想対象物８０Ａが収納されている。
【０１００】
まず、図６に示すように、仮想ロボット１Ａの仮想ツール１７Ａを初期位置に移動する（図５に示すフローチャートのステップＳ１０１）。次いで、仮想ツール１７Ａを仮想ラック９１Ａの仮想収納部９２Ａへの進入前の位置に移動する（ステップＳ１０２）。次いで、仮想ツール１７Ａを仮想収納部９２に移動する（ステップＳ１０３）。次いで、図７に示すように、コマンドＣに基づいて、仮想ツール１７Ａにより、仮想収納部９２Ａに収納されている仮想対象物８０Ａを把持する（ステップＳ１０４）。このステップＳ１０４では、仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係が保持される。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａの上空に移動する（ステップＳ１０５）。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａの外部に移動する（ステップＳ１０６）。
【０１０１】
次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａと仮想秤９６Ａとの間の経由点に移動する（ステップＳ１０７）。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想秤９６Ａの上空に移動する（ステップＳ１０８）。次いで、図８に示すように、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想秤９６Ａに移動する（ステップＳ１０９）。次いで、コマンドＣに基づいて仮想対象物８０Ａを解放する（ステップＳ１１０）。これにより、仮想対象物８０Ａは、仮想秤９６Ａに載置される。この状態で、仮想秤９６Ａにより、仮想対象物８０Ａの計量が行われる。次いで、仮想ツール１７Ａをロボット退避位置に移動する（ステップＳ１１１）。次いで、仮想ロボット１Ａは、計量が終了するまで（計量に要する所定時間）待機する（ステップＳ１１２）。次いで、仮想ツール１７Ａを仮想秤９６Ａに移動する（ステップＳ１１３）。次いで、コマンドＣに基づいて、仮想ツール１７Ａにより仮想対象物８０Ａを把持する（ステップＳ１１４）。このステップＳ１１４では、仮想ツール１７Ａと仮想対象物８０Ａとの位置および姿勢の関係が保持される。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想秤９６Ａの上空に移動する（ステップＳ１１５）。
【０１０２】
次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａと仮想秤９６Ａとの間の経由点に移動する（ステップＳ１１６）。次いで、図９に示すように、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａへの進入前の位置に移動する（ステップＳ１１７）。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａの上空に移動する（ステップＳ１１８）。次いで、仮想ツール１７Ａおよび仮想対象物８０Ａを仮想収納部９２Ａに移動する（ステップＳ１１９）。次いで、コマンドＣに基づいて仮想対象物８０Ａを解放する（ステップＳ１２０）。これにより、仮想収納部９２Ａに仮想対象物８０Ａが収納される。次いで、仮想ツール１７Ａを仮想収納部９２Ａへの進入前の位置に移動する（ステップＳ１２１）。次いで、仮想ロボット１Ａの仮想ツール１７Ａを初期位置に移動する（ステップＳ１２２）。以上で、シミュレーションを終了する。
【０１０３】
以上説明したように、ロボットシステム１００によれば、ミュレーションにおいて、仮想ロボット１Ａの仮想ツール１７Ａによる仮想対象物８０Ａの把持、解放の制御にコマンドＣを用いることにより、容易に、仮想ツール１７Ａに対し、仮想対象物８０Ａの把持、解放を実行させることができる。これにより、仮想ツール１７Ａが仮想対象物８０Ａを把持した状態で仮想ツール１７Ａが移動すると、その仮想ツール１７Ａとともに仮想対象物８０Ａが移動し、実機に即したシミュレーションを行うことができる。
【０１０４】
また、実機の作成前等、Ｉ／Ｏの割り当てが決定していない場合でもコマンドＣを用いることにより、仮想ツール１７Ａに対し、仮想対象物８０Ａの把持、解放を実行させることができる。
【０１０５】
また、シミュレーションを行って、オフラインティーチングを行うことができ、ロボット１の動作プログラムの作成、検証を行うことができる。
【０１０６】
以上説明したように、シミュレーション装置５は、ロボット１を仮想化した仮想ロボット１Ａによるシミュレーションを行う装置である。シミュレーション装置５は、仮想ロボット１Ａが有する仮想ツール１７Ａ（仮想保持部）による仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を指示するコマンドＣを受け付ける外部入出力部５３（受付部）と、外部入出力部５３（受付部）が受け付けたコマンドＣに基づいて、仮想ツール１７Ａ（仮想保持部）による仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を行う制御部５１と、を備える。
【０１０７】
このようなシミュレーション装置５によれば、コマンドＣを用いることにより、容易に、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。これにより、仮想ツール１７Ａ（仮想保持部）が仮想対象物８０Ａを保持した状態で仮想ツール１７Ａ（仮想保持部）が移動すると、その仮想ツール１７Ａ（仮想保持部）とともに仮想対象物８０Ａが移動し、実機に即したシミュレーションを行うことができる。また、実機の作成前等、Ｉ／Ｏの割り当てが決定していない場合でもコマンドＣを用いることにより、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。
【０１０８】
また、コマンドＣは、仮想ロボット１Ａに関する情報を示す第１の引数と、把持（保持）と解放との少なくとも一方を示す第２の引数と、仮想対象物８０Ａに関する情報を示す第３の引数と、を有する。これにより、適確に、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。
【０１０９】
また、制御部５１は、仮想ツール１７Ａ（仮想保持部）により仮想対象物８０Ａを把持（保持）する場合は、仮想ロボット１Ａの所定部分と仮想対象物８０Ａとの位置および姿勢の関係を保持し、コマンドＣは、前記所定部分に関する情報を示す第４の引数を有する。これにより、適確に、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。
【０１１０】
また、外部入出力部５３（受付部）が第４の引数の入力がなく、仮想対象物８０Ａの把持（保持）を指示するコマンドＣを受け付けた場合、制御部５１は、そのコマンドＣが実行されたときの仮想ツール１７Ａ（仮想保持部）と仮想対象物８０Ａとの位置および姿勢の関係を保持する。これにより、容易に、仮想ツール１７Ａ（仮想保持部）と仮想対象物８０Ａとの位置および姿勢の関係を把握することができる。
【０１１１】
また、制御部５１は、仮想対象物８０Ａの衝突の検出を行い、仮想対象物８０Ａの衝突を検出した場合は、仮想対象物８０Ａの衝突を報知することが好ましい。これにより、容易に、仮想対象物８０Ａが衝突したことを把握することができる。
【０１１２】
また、制御部５１は、表示装置３１（表示部）の駆動を制御し、表示装置３１（表示部）にシミュレーションを表示させ、表示装置３１（表示部）に表示されている仮想対象物８０Ａの色を変更することにより、仮想対象物８０Ａの衝突を報知する。これにより、容易に、仮想対象物８０Ａが衝突したことを把握することができる。
【０１１３】
また、制御部５１は、表示装置３１（表示部）の駆動を制御し、表示装置３１（表示部）にシミュレーションを表示させ、表示装置３１（表示部）に表示されている仮想対象物８０Ａが衝突した位置にマーク７１を表示することにより、仮想対象物８０Ａの衝突を報知する。これにより、容易に、仮想対象物８０Ａが衝突したことと、仮想対象物８０Ａが衝突した位置とを把握することができる。
【０１１４】
また、制御部５１は、表示装置３１（表示部）の駆動を制御し、表示装置３１（表示部）にシミュレーションを表示させることが好ましい。これにより、作業者は、表示装置３１（表示部）を介して仮想ロボット１Ａによるシミュレーションを見ることができ、仮想ロボット１Ａによる作業を容易かつ適確に把握することができる。
【０１１５】
また、制御部５１は、表示装置３１（表示部）に仮想対象物８０Ａが表示される表示状態と、表示されない非表示状態とを切り替えることが可能である。これにより、仮想対象物８０Ａを表示したい場合と表示したくない場合とで、表示状態と非表示状態とを選択することができ、利便性が高い。
【０１１６】
また、制御部５１は、表示装置３１（表示部）に、コマンドＣが有する引数について、リストを表示させる。これにより、容易に、コマンドＣを設定することができる。
【０１１７】
また、ロボット制御装置２は、シミュレーション装置５によるシミュレーション結果に基づいてロボット１を制御する。
【０１１８】
このようなロボット制御装置２によれば、シミュレーション装置５で作成した動作プログラムを用いてロボット１に適切な動作を行わせることができる。
【０１１９】
また、コマンドＣは、ロボット１の制御では実行されない。コマンドＣをロボット１の制御でも実行可能なようにすると、コマンドＣをロボット１の制御に用いる場合と、シミュレーションで用いる場合との整合が取り難いので、コマンドＣがロボット１の制御では実行されないようにすることにより、そのような問題を解消することができる。また、コマンドＣがロボット１の制御では実行されないようにすることにより、ロボット１が不本意な動作を行うことを抑制することができる。
【０１２０】
また、ロボット１は、対象物８０を保持することが可能なツール１７（保持部）を有し、ロボット制御装置２によって制御される。
【０１２１】
このようなロボット１によれば、ロボット制御装置２の制御により、適切な動作を行うことができる。
【０１２２】
また、シミュレーション装置５は、ロボット１を仮想化した仮想ロボット１Ａによるシミュレーションを行う装置である。シミュレーション装置５は、プロセッサーを備えており、そのプロセッサーは、仮想ロボット１Ａが有する仮想ツール１７Ａ（仮想保持部）による仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を指示するコマンドＣを受け付け、受け付けたコマンドＣに基づいて、仮想ツール１７Ａ（仮想保持部）による仮想対象物８０Ａの把持（保持）と解放との少なくとも一方を行う。
【０１２３】
このようなシミュレーション装置５によれば、コマンドＣを用いることにより、容易に、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。これにより、仮想ツール１７Ａ（仮想保持部）が仮想対象物８０Ａを保持した状態で仮想ツール１７Ａ（仮想保持部）が移動すると、その仮想ツール１７Ａ（仮想保持部）とともに仮想対象物８０Ａが移動し、実機に即したシミュレーションを行うことができる。また、実機の作成前等、Ｉ／Ｏの割り当てが決定していない場合でもコマンドＣを用いることにより、仮想ツール１７Ａ（仮想保持部）に対し、仮想対象物８０Ａの把持（保持）、解放を実行させることができる。
【０１２４】
以上、ロボットシステム１００について説明した。なお、「ロボットシステム」は、図１０、図１１に示す形態であってもよい。
【０１２５】
図１０、図１１は、それぞれ、ロボットシステムの他の構成例を示す図（ブロック図）である。
【０１２６】
図１０には、ロボット１に直接コンピューター６３が接続されたロボットシステム１００Ｂの全体構成図を示す。ロボット１の制御はコンピューター６３に存在するプロセッサーによりメモリーにある指令を読み出して直接実行される。コンピューター６３は、前述したロボット制御装置２およびシミュレーション装置５の機能を有する。
【０１２７】
図１１には、コントローラー６１が内蔵させたロボット１とコンピューター６６とが接続され、コンピューター６６がＬＡＮ（Local Area Network）等のネットワーク６５を介してクラウド６４に接続されているロボットシステム１００Ｃの全体構成図を示す。ロボット１の制御はコンピューター６６に存在するプロセッサーによりメモリーにある指令を読み出して実行されてもよいし、クラウド６４上に存在するプロセッサーによりコンピューター６６を介してメモリーにある指令を読み出して実行されてもよい。コントローラー６１が、前述したロボット制御装置２の機能を有し、コンピューター６６またはクラウド６４が、前述したシミュレーション装置５の機能を有する。
【０１２８】
また、ロボットシステム１００Ｂ、１００Ｃでは、各プロセッサーは、それぞれ、１つの装置で構成されていてもよく、また、複数の装置で構成されていてもよい、すなわち、複数の単位プロセッサーに分かれていてもよい。
【０１２９】
以上、本発明のシミュレーション装置、ロボット制御装置およびロボットを図示の実施形態に基づいて説明したが、本発明は、これに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物が付加されていてもよい。
【０１３０】
また、前述した実施形態では、コマンドにより、仮想保持部による仮想対象物の保持、解放を行っているが、これに限定されず、例えば、Ｉ／Ｏによるトリガーにより、仮想保持部による仮想対象物の保持、解放を行ってもよい。この場合、例えば、Ｉ／ＯをＯＮにすると、仮想保持部が仮想対象物を保持し、Ｉ／ＯをＯＦＦにすると、仮想保持部が仮想対象物を解放するように設定する。または、Ｉ／ＯをＯＮにすると、仮想保持部が仮想対象物を解放し、Ｉ／ＯをＯＦＦにすると、仮想保持部が仮想対象物を保持するように設定する。また、コマンドとＩ／Ｏの両方を用いてもよい。
【０１３１】
また、前述した実施形態では、本発明のロボットシステムが有するロボットとして、いわゆる６軸の垂直多関節ロボットを例示したが、当該ロボットは、例えば、スカラーロボット等の他のロボットであってもよい。また、当該ロボットは、単腕ロボットに限定されず、例えば、双腕ロボット等の他のロボットであってもよい。したがって、可動部の数は、１つに限定されず、２つ以上であってもよい。また、可動部が備えるロボットアームが有するアームの数は、前述した実施形態では、６つであるが、１〜５つまたは７つ以上であってもよい。
【符号の説明】
【０１３２】
１…ロボット、１Ａ…仮想ロボット、２…ロボット制御装置、５…シミュレーション装置、１０…ロボットアーム、１０Ａ…仮想ロボットアーム、１１…アーム、１１Ａ…仮想アーム、１２…アーム、１２Ａ…仮想アーム、１３…アーム、１３Ａ…仮想アーム、１４…アーム、１４Ａ…仮想アーム、１５…アーム、１５Ａ…仮想アーム、１６…アーム、１６Ａ…仮想アーム、１７…ツール、１７Ａ…仮想ツール、２０…マニピュレーター、２０Ａ…仮想マニピュレーター、２１…制御部、２２…記憶部、２３…外部入出力部、３１…表示装置、３２…入力装置、５１…制御部、５２…記憶部、５３…外部入出力部、６１…コントローラー、６３…コンピューター、６４…クラウド、６５…ネットワーク、６６…コンピューター、７０…設置箇所、７１…マーク、８０Ａ…仮想対象物、８６Ａ…仮想物体、９１Ａ…仮想ラック、９２Ａ…仮想収納部、９６Ａ…仮想秤、１００…ロボットシステム、１００Ｂ…ロボットシステム、１００Ｃ…ロボットシステム、１１０…基台、１１０Ａ…仮想基台、１３０…駆動部、１４０…角度センサー、Ｐ…ツールセンターポイント、Ｓ１０１…ステップ、Ｓ１０２…ステップ、Ｓ１０３…ステップ、Ｓ１０４…ステップ、Ｓ１０５…ステップ、Ｓ１０６…ステップ、Ｓ１０７…ステップ、Ｓ１０８…ステップ、Ｓ１０９…ステップ、Ｓ１１０…ステップ、Ｓ１１１…ステップ、Ｓ１１２…ステップ、Ｓ１１３…ステップ、Ｓ１１４…ステップ、Ｓ１１５…ステップ、Ｓ１１６…ステップ、Ｓ１１７…ステップ、Ｓ１１８…ステップ、Ｓ１１９…ステップ、Ｓ１２０…ステップ、Ｓ１２１…ステップ、Ｓ１２２…ステップ、ＷＤ１…画面
【図１】
2019063879.tif 000003
【図２】
2019063879.tif 000004
【図３】
2019063879.tif 000005
【図４】
2019063879.tif 000006
【図５】
2019063879.tif 000007
【図６】
2019063879.tif 000008
【図７】
2019063879.tif 000009
【図８】
2019063879.tif 000010
【図９】
2019063879.tif 000011
【図１０】
2019063879.tif 000012
【図１１】
2019063879.tif 000013