"複数のアームを有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とする動作プログラム作成装置。請求項1において、前記ロボットの作業エリアは、複数のエリアに分割され、前記記憶部は、前記第1の目標位置が属する移動元エリアと、前記第2の目標位置が属する移動先エリアとの組み合わせパターンに関連付けて、前記候補プログラム情報を記憶し、前記プログラム作成部は、前記組み合わせパターンに関連付けられた前記候補プログラム情報の中から、前記使用プログラム情報の前記選択処理を行って、前記動作プログラムを作成することを特徴とする動作プログラム作成装置。請求項2において、前記複数のエリアは、前記ロボットの前記複数のアームのエンドポイントのうち、第iのアームのエンドポイントと第jのアームのエンドポイントが共に届く第aのエリアと、前記第iのアームのエンドポイントだけが届く第bのエリアと、前記第jのアームのエンドポイントだけが届く第cのエリアを含み、前記記憶部は、前記第aのエリアと前記第bのエリアと前記第cのエリアのうち、一つのエリアを前記移動元エリアとし、前記第aのエリアと前記第bのエリアと前記第cのエリアのうち、一つのエリアを前記移動先エリアとする前記組み合わせパターンに関連付けて、前記候補プログラム情報を記憶することを特徴とする動作プログラム作成装置。請求項1乃至3のいずれかにおいて、前記記憶部は、前記ロボットの前記複数のアームのうちの第iのアームに設けられた把持部によりワークを把持した状態から、前記複数のアームのうちの第jのアームに設けられた把持部により前記ワークを把持する状態へ切り替える持ち替え命令を有する前記候補プログラム情報と、前記持ち替え命令を有さない前記候補プログラム情報の両方を記憶することを特徴とする動作プログラム作成装置。請求項1乃至4のいずれかにおいて、前記ロボットは、複数のアームを一体移動させる移動機構を有し、前記記憶部は、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶することを特徴とする動作プログラム作成装置。請求項5において、前記複数のエリアは、前記ロボットの前記複数のアームのエンドポイントのうち、第iのアームのエンドポイントと第jのアームのエンドポイントが共に届く第aのエリアと、前記第iのアームの前記エンドポイントだけが届く第bのエリアと、前記第jのアームの前記エンドポイントだけが届く第cのエリアを含み、前記第bのエリアは、前記移動機構を動かさない場合に前記第iのアームの前記エンドポイントが届く第dのエリアと、前記移動機構を動かす場合に前記第iのアームの前記エンドポイントが届く第eのエリアを含み、前記第cのエリアは、前記移動機構を動かさない場合に前記第jのアームの前記エンドポイントが届く第fのエリアと、前記移動機構を動かす場合に前記第jのアームの前記エンドポイントが届く第gのエリアを含み、前記記憶部は、前記第aのエリアと前記第dのエリアと前記第eのエリアと前記第fのエリアと前記第gのエリアのうち、一つのエリアを前記移動元エリアとし、前記第aのエリアと前記第dのエリアと前記第eのエリアと前記第fのエリアと前記第gのエリアのうち、一つのエリアを前記移動先エリアとする前記組み合わせパターンに関連付けて、前記候補プログラム情報を記憶することを特徴とする動作プログラム作成装置。請求項1乃至6のいずれかにおいて、前記プログラム作成部は、前記候補プログラム情報に従って前記ロボットを動作させる場合のシミュレーション処理を行い、前記シミュレーション処理の結果に基づいて、前記使用プログラム情報を選択することを特徴とする動作プログラム作成装置。請求項7において、前記プログラム作成部は、複数の候補プログラム情報を組み合わせて仮動作プログラムを生成し、前記仮動作プログラムに従って前記ロボットを動作させる場合の前記シミュレーション処理を行い、前記シミュレーション処理の結果に基づいて、前記複数の使用プログラム情報を選択し、選択した前記複数の使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とする動作プログラム作成装置。複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とする動作プログラム作成装置。複数のアームを有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部として、コンピューターを機能させ、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするプログラム。複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部として、コンピューターを機能させ、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするプログラム。複数のアームを有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボット制御システム。複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボット制御システム。複数のアームを有するロボットと、前記ロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボットシステム。複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットと、前記ロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボットシステム。複数のアームを有するロボット、例えば双腕ロボットを用いて、ワークを移動させる場合には、ロボットのどのハンドでワークを取りに行くか、どのハンドでワークを置くか、複数のハンド間で部品の持ち替えをすべきかなどといったことも判断する必要がある。さらに、ロボット自体の位置や向きを変更できる場合には、ロボットの位置や向きを変更すべきか否かといったことも判断する必要がある。しかし、前述した特許文献1や特許文献2に記載された手法では、ロボットのアームが複数設けられ、ワークが同じ場所にあるとは限らない場合に、ロボットを作業者が意図した通りに制御できない場合がある。本発明の幾つかの態様によれば、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させるための動作プログラムを作成できる動作プログラム作成装置、プログラム、ロボット制御システム及びロボットシステム等を提供することができる。本発明の一態様は、複数のアームを有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成する動作プログラム作成装置に関係する。本発明の一態様では、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させるために用いられる候補プログラム情報を記憶する。またこの際に、使用されるアームが異なる候補プログラム情報を記憶しておく。次に、このような候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行い、選択した使用プログラム情報に基づいて、動作プログラムを作成する。よって、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させる場合に、ロボットのエンドポイントやワークの位置等に応じて、自動的に動作プログラムを作成することが可能となる。また、本発明の一態様では、前記ロボットの作業エリアは、複数のエリアに分割され、前記記憶部は、前記第1の目標位置が属する移動元エリアと、前記第2の目標位置が属する移動先エリアとの組み合わせパターンに関連付けて、前記候補プログラム情報を記憶し、前記プログラム作成部は、前記組み合わせパターンに関連付けられた前記候補プログラム情報の中から、前記使用プログラム情報の前記選択処理を行って、前記動作プログラムを作成してもよい。これにより、例えば上記の処理を行った後にロボットのハンド位置等を考慮して使用プログラム情報の選択処理を行えば、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択すること等が可能になる。また、本発明の一態様では、前記複数のエリアは、前記ロボットの前記複数のアームのエンドポイントのうち、第iのアームのエンドポイントと第jのアームのエンドポイントが共に届く第aのエリアと、前記第iのアームのエンドポイントだけが届く第bのエリアと、前記第jのアームのエンドポイントだけが届く第cのエリアを含み、前記記憶部は、前記第aのエリアと前記第bのエリアと前記第cのエリアのうち、一つのエリアを前記移動元エリアとし、前記第aのエリアと前記第bのエリアと前記第cのエリアのうち、一つのエリアを前記移動先エリアとする前記組み合わせパターンに関連付けて、前記候補プログラム情報を記憶してもよい。これにより、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択すること等が可能になる。また、本発明の一態様では、前記記憶部は、前記ロボットの前記複数のアームのうちの第iのアームに設けられた把持部によりワークを把持した状態から、前記複数のアームのうちの第jのアームに設けられた把持部により前記ワークを把持する状態へ切り替える持ち替え命令を有する前記候補プログラム情報と、前記持ち替え命令を有さない前記候補プログラム情報の両方を記憶してもよい。これにより、例えば、持ち替え命令を用いる場合には、ロボット全体を移動又は回転させなくても、アームが一つである場合に比べて、ハンドが到達する領域を広く確保すること等が可能になる。また、本発明の一態様では、前記ロボットは、複数のアームを一体移動させる移動機構を有し、前記記憶部は、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶してもよい。これにより、例えば、現在のロボットの位置及び向きでは、ハンドが届かない位置に目標位置がある場合に、一体移動命令を実行することにより、ハンドを移動させること等が可能になる。また、本発明の一態様では、前記複数のエリアは、前記ロボットの前記複数のアームのエンドポイントのうち、第iのアームのエンドポイントと第jのアームのエンドポイントが共に届く第aのエリアと、前記第iのアームの前記エンドポイントだけが届く第bのエリアと、前記第jのアームの前記エンドポイントだけが届く第cのエリアを含み、前記第bのエリアは、前記移動機構を動かさない場合に前記第iのアームの前記エンドポイントが届く第dのエリアと、前記移動機構を動かす場合に前記第iのアームの前記エンドポイントが届く第eのエリアを含み、前記第cのエリアは、前記移動機構を動かさない場合に前記第jのアームの前記エンドポイントが届く第fのエリアと、前記移動機構を動かす場合に前記第jのアームの前記エンドポイントが届く第gのエリアを含み、前記記憶部は、前記第aのエリアと前記第dのエリアと前記第eのエリアと前記第fのエリアと前記第gのエリアのうち、一つのエリアを前記移動元エリアとし、前記第aのエリアと前記第dのエリアと前記第eのエリアと前記第fのエリアと前記第gのエリアのうち、一つのエリアを前記移動先エリアとする前記組み合わせパターンに関連付けて、前記候補プログラム情報を記憶してもよい。これにより、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に加え、移動機構の使用の有無に基づいて、使用プログラム情報を選択すること等が可能になる。また、本発明の一態様では、前記プログラム作成部は、前記候補プログラム情報に従って前記ロボットを動作させる場合のシミュレーション処理を行い、前記シミュレーション処理の結果に基づいて、前記使用プログラム情報を選択してもよい。これにより、例えば、最も所要時間が短い候補プログラム情報を、使用プログラム情報として選択し、動作プログラムを作成すること等が可能になる。また、本発明の一態様では、前記プログラム作成部は、複数の候補プログラム情報を組み合わせて仮動作プログラムを生成し、前記仮動作プログラムに従って前記ロボットを動作させる場合の前記シミュレーション処理を行い、前記シミュレーション処理の結果に基づいて、前記複数の使用プログラム情報を選択し、選択した前記複数の使用プログラム情報に基づいて、前記動作プログラムを作成してもよい。したがって、例えば、仮動作プログラム毎にシミュレーション処理を行うことにより、候補プログラム情報毎にシミュレーション処理を行う場合よりも、所要時間が短い動作プログラムを作成すること等が可能になる。また、本発明の他の態様では、複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成してもよい。また、本発明の他の態様では、上記各部としてコンピューターを機能させるプログラムに関係する。また、本発明の他の態様では、複数のアームを有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボット制御システムに関係する。また、本発明の他の態様では、複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボット制御システムに関係する。また、本発明の他の態様では、複数のアームを有するロボットと、前記ロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、使用される前記アームが異なる複数の候補プログラム情報を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボットシステムに関係する。また、本発明の他の態様では、複数のアームを有し、前記複数のアームを一体移動させる移動機構を有するロボットと、前記ロボットに対する命令を構成要素とする候補プログラム情報を記憶する記憶部と、前記候補プログラム情報に基づいて、前記ロボットの動作プログラムを作成するプログラム作成部と、作成された前記動作プログラムに基づいて前記ロボットを制御するロボット制御部と、を含み、前記記憶部は、第1の目標位置から第2の目標位置に、前記ロボットのエンドポイントを移動させるために用いられる前記候補プログラム情報として、前記移動機構を動かす一体移動命令を有する前記候補プログラム情報と、前記一体移動命令を有さない前記候補プログラム情報の両方を記憶し、前記プログラム作成部は、前記記憶部に記憶される前記複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した前記使用プログラム情報に基づいて、前記動作プログラムを作成することを特徴とするロボットシステムに関係する。以下、本実施形態について説明する。まず、本実施形態の概要を説明し、次に本実施形態のシステム構成例について説明する。そして、本実施形態の手法について具体例を交えつつ詳細に説明し、最後に、フローチャートを用いて本実施形態の処理の流れについて説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。1.概要産業用ロボットを動作させるためには、例えばロボットの関節ジョイントをどのように変化させ、ロボットの手先TCP:toolcenterpointをどの時刻にどの位置にもってゆくか、といった動作指令を逐一ロボットに与える必要がある。従来、このような動作指令は人間が記述しており、かつ、ロボットに動作指令を与えた後は、人間が確認しながらロボットを動作させる必要があった。人間が行うこの手続きを教示ティーチング:teachingと呼び、動作指令を人間が記述するための専用の言語をロボット言語などと呼ぶ。従来では、教示を行うことにより初めて産業用ロボットを意図したように動作させることができた。しかし、教示を行う場合に、指定した場所にロボットの手先を持ってゆくためには、ロボットの手先の位置座標をロボット言語で記述しなければならないが、この作業は非常にコストがかかるものであった。そのため、動作指令作成コスト削減のために、例えば、ロボットのアームを人間の力で容易に動かせる状態になるように電力等を制御し、実際に人間がロボットの手を取って移動させて、目標位置を教える直接教示などが行われている。しかし、実際の工程では、ロボットが部品パーツを取り上げる場合には、部品が置かれている場所が変わることが多く、直接教示により教えた目標位置に部品がない場合もある。例えば、ベルトコンベアーによって部品が運ばれてくるような場合には、部品の位置や向きが変わることが多い。そこで、このような場合には、カメラや3次元計測器などを用いて、ロボットの手先がどこにあるべきかを求めて、自動的にロボットの動作指令を出力する手法が用いられている。ロボットのアームが1本である場合には、このような手法を用いれば、部品やロボットの手先の位置が変わる場合でも、期待通りにロボットを動作させることが可能となる。ここで、複数のアームを有するロボットを用いて、ワークを移動させるような場合について考える。その一例として図1に、2本のアーム320と2つのハンド330を有するロボット300を用いて、ワーク500を移動させる様子を示す。図1では、ロボット制御システム200により、双腕ロボット300の動作プログラムを作成して、作成した動作プログラムに基づいて、ロボット300を制御している。動作プログラムの詳細については、後述する。図1のロボット300のような複数のアームを有する双腕ロボットを用いてワークを移動させる場合には、ロボットのどのハンドでワークを取りに行くか、どのハンドでワークを置くか、複数のハンド間で部品の持ち替えをすべきかなどといったことも判断する必要がある。さらに、ロボット自体の位置や向きを変更できる場合には、ロボットの位置や向きを変更すべきか否かといったことも判断する必要がある。しかし、前述した特許文献1や特許文献2に記載された手法では、ロボットのアームが複数設けられ、ワークが同じ場所にあるとは限らない場合に、ロボットを作業者が意図した通りに制御できない場合がある。具体的には、後述する図5A~図5Cのような場合である。そこで、本実施形態の動作プログラム作成装置では、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させるための動作プログラムを自動的に作成する。2.システム構成例2.1動作プログラム作成装置の構成例本実施形態の動作プログラム作成装置の構成例を図2に示す。動作プログラム作成装置100は、プログラム作成部110と、記憶部120と、を含む。また、プログラム作成部110は、使用プログラム選択部112と、シミュレーション処理部114と、動作プログラム作成部116と、を含む。なお、動作プログラム作成装置100及びプログラム作成部110は、図2の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加したりするなどの種々の変形実施が可能である。ここで、動作プログラム作成装置100の各部について説明する。まず、プログラム作成部110は、後述する記憶部120に記憶された候補プログラム情報に基づいて、複数のアームを有するロボットを動作させるための動作プログラムを作成する。次に、使用プログラム選択部112は、後述する記憶部120に候補プログラム情報が複数記憶されている場合に、複数の候補プログラム情報の中から、動作プログラムの生成に用いる使用プログラム情報を選択する。そして、シミュレーション処理部114は、使用プログラム情報又は後述する仮動作プログラムに基づいて、ロボットを動作させた場合のシミュレーション等を行う。さらに、動作プログラム作成部116は、使用プログラム選択部112により選択された使用プログラム情報に基づいて、動作プログラムを作成する。これらのプログラム作成部110及び使用プログラム選択部112と、シミュレーション処理部114と、動作プログラム作成部116の機能は、各種プロセッサーCPU等、ASICゲートアレイ等などのハードウェアーや、プログラムなどにより実現できる。また、記憶部120は、後述する候補プログラム情報などのデータベースを記憶したり、プログラム作成部110等のワーク領域となるもので、その機能はRAM等のメモリーやHDDハードディスクドライブなどにより実現できる。2.2ロボット制御システム及びロボットシステムの構成例図3に本実施形態のロボット制御システム及びこれを含むロボットシステムの構成例を示す。ロボット制御システム200は、プログラム作成部110と、記憶部120と、ロボット制御部230と、入力部I/F部240と、を含む。また、ロボットシステム400は、ロボット制御システム200と、ロボット300と、を含む。さらに、ロボット300は、制御部310と、アーム320と、把持部ハンド330と、移動機構340と、I/F部350と、を含む。なお、ロボット制御システム200と、これを含むロボットシステム400と、ロボット300は、図3の構成に限定されず、これらの一部の構成要素を省略したり、他の構成要素を追加したりするなどの種々の変形実施が可能である。また、プログラム作成部110及び記憶部120は、前述した動作プログラム作成装置100と同様の構成でも良い。ここで、ロボット制御システム200の各部について説明する。まず、ロボット制御部230は、プログラム作成部110により作成された動作プログラムに基づいて、ロボット300を制御する。そして、入力部I/F部240は、ロボット制御システム200に対する作業者からの入力を受け付けるためや、ロボット制御システム200とロボット300間で情報をやり取りするためのインターフェースである。作業者からの入力等を受け付ける場合には、入力部I/F部240は、スイッチやボタン、キーボード或いはマウス等から構成されてもよい。次に、ロボット300の各部について説明する。まず、制御部310は、ロボット制御部230からの情報に基づいて、ロボット300の各部アーム320及びハンド330、移動機構340等の制御を行う。ここで、アーム320とは、ロボット300のパーツであって、一つ以上の関節を含む可動パーツのことをいう。また、アーム320のエンドポイントとは、アーム320の先端部分のポイントであって、ロボット300のハンド330以外の他の部分と接続されていない部分のことをいう。なお、アーム320のエンドポイントは、ロボット300のエンドポイントのうちの一つであり、ロボット300のエンドポイントとは、ロボット300の先端部のことをいう。さらに、把持部ハンド330とは、ワーク500を把持したり、持ち上げたり、吊り上げたり、吸着させたりするために用いる部品のことをいう。把持部ハンド330は、ハンドであってもよいし、フックであってもよいし、吸盤等であってもよい。なお、アームのエンドポイントの位置は、ハンドの位置としてもよい。さらに、1本のアームに対して、複数のハンドを設けても良い。また、移動機構340とは、ロボット300全体を移動させたり、ロボット300全体の向きを変えたりする機構のことである。そして、I/F部350は、ロボット制御システム200とロボット300間で情報をやり取りするためのインターフェースである。なお、ロボット制御部230及び制御部310の機能は、各種プロセッサーCPU等、ASICゲートアレイ等などのハードウェアーや、プログラムなどにより実現できる。また、入力部I/F部240及びI/F部350は、有線通信または無線通信を行う通信部であってもよい。最後に、本実施形態の具体例を説明する際に用いる双腕ロボットを図4A~図4Cに示す。図4Aに示すように、ロボットRBは、AMRとAMLの2本のアームを持ち、アームAMRはJ0、J1、J2の3つの関節ジョイントを有しており、同様にアームAMLは、J3、J4、J5の3つの関節を有している。図4Aに示す通り、J0とJ3は、図の上方向に90°まで可動し、J1、J2、J4、J5は図の上方向と下方向にそれぞれ135°ずつ、合わせて270°可動する。さらに、アームAMRの先端にはハンドHDRが、アームAMLの先端にはハンドHDLが取り付けられている。そして、ロボットRBの中心には、移動機構MVSが設けられており、ロボットRB全体を360°回転移動させることができる。各関節を動かすことにより、図4Bに示すように、ハンドの位置を変えることができる。さらに、移動機構MVSを用いてロボットRBを回転させることにより、ハンドの到達可能領域を変えることができる。なお、具体例の説明を分かりやすくするために、ロボットRBを単純な構造のロボットとしているが、本実施形態で用いるロボットは本例に限定されるものではない。3.本実施形態の手法以上の本実施形態では、複数のアームを有するロボット300に対する命令を構成要素とする候補プログラム情報を記憶する記憶部120と、候補プログラム情報に基づいて、ロボット300の動作プログラムを作成するプログラム作成部110と、を含む。そして、記憶部120は、第1の目標位置から第2の目標位置に、ロボット300のエンドポイントを移動させるために用いられる候補プログラム情報として、使用されるアームが異なる複数の候補プログラム情報を記憶する。さらに、プログラム作成部110は、記憶部120に記憶される複数の候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行って、選択した使用プログラム情報に基づいて、動作プログラムを作成する。以下では、前述した教示などの従来手法と、本実施形態の手法とを比較しながら説明を行うため、図5A~図5Cに、第1の目標位置から第2の目標位置へ従来手法を用いてワークを移動させる例を示す。なお、図5A~図5CのロボットRBは、図4Aに示すロボットと同じものである。まず、図5Aのような位置に、ロボットRBと、第1の目標位置DP1と、第2の目標位置DP2があるとする。なお、ワークWKが置かれている位置が第1の目標位置DP1となる。ここで、第1の目標位置DP1から第2の目標位置DP2へワークWKを移動させるための動作プログラムとして、図5Bに示すような動作プログラムを作業者があらかじめ用意しておく。また、第1の目標位置DP1と、第2の目標位置DP2は、ロボットを実際に制御する際に、ロボット制御システムに入力してもよいし、固定位置であってもよい。ここでは、第1の目標位置DP1と第2の目標位置DP2が変わる場合について説明する。まず、第1の目標位置DP1と第2の目標位置DP2とが、図5Aに示すような位置にある場合には、図5Bに示す動作プログラムを用いて、ワークWKを移動させることができる。一方、図5Cのような位置に、第1の目標位置DP1と第2の目標位置DP2がある場合には、図5Bに示す動作プログラムを用いてもワークWKを移動させることができない。具体的に言えば、図5Bの動作プログラムでは、まずロボットRBの右ハンドHDRを第1の目標位置DP1に移動させることになるが、図5Cでは、第1の目標位置DP1は、左アームAML側にあり、左ハンドHDLを第1の目標位置DP1に移動させることはできても、右ハンドHDRを移動させることはできない。したがって、図5Bの動作プログラムは、図5Cのような場合には対応できないということになる。勿論、図5Cのような場合に対応可能な動作プログラムを、図5Bの動作プログラムとは別に作業者があらかじめ準備していれば良いが、その場合には準備コストが増加することとなる。従って、本実施形態では、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させるために用いられる候補プログラム情報を記憶する。またこの際に、使用されるアームが異なる候補プログラム情報を記憶しておく。以下で説明する具体例中では、ロボットのエンドポイントを、アームのエンドポイント又はハンドの位置と考える場合について説明するが、ロボットのエンドポイントはこれに限定されない。ここで、第1の目標位置とは、ロボットのエンドポイントを現在位置から移動させる場合の目標位置のこという。具体的には、ワークの現在位置が第1の目標位置となる場合が多い。一方、第2の目標位置とは、ロボットのエンドポイントを第1の目標位置から移動させる場合の目標位置のことをいう。具体的には、ワークの搬送先が第2の目標位置となる場合が多い。ここで、候補プログラム情報とは、ロボットに対する命令を組み合わせた情報及びそのインデックスのこという。また、ロボットに対する命令とは、ロボット制御部230がロボットを制御する際の最小単位の情報のことをいう。言い換えれば、ロボットに対する命令とは、ロボットの一動作を表す情報を、ロボット言語で記述した情報のことをいう。ロボットに対する命令の具体例としては、図6Aに示す命令1~命令8のようなものがある。一方、候補プログラム情報の具体例としては、図6Bに示す候補プログラム情報1~候補プログラム情報4のようなものがある。例えば、候補プログラム情報1は、命令1と命令5と命令3と命令6とを組み合わせたものであり、命令1、命令5、命令3、命令6の順番で命令を実行することを示している。候補プログラム情報1に基づいてロボットを制御すれば、ロボットの右ハンドを第1の目標位置に移動して命令1、ワークを掴み命令5、次に、ワークを掴んだままロボットの右ハンドを第2の目標位置へ移動させて命令3、ワークを置く命令6という動作をロボットにさせることができる。他の候補プログラム情報も、図6Aに示した命令1~命令8を組み合わせることによって作成することができる。次に、このような候補プログラム情報の中から、使用プログラム情報を選択する選択処理を行い、選択した使用プログラム情報に基づいて、動作プログラムを作成する。ここで、使用プログラム情報とは、動作プログラムを作成する際に使用される候補プログラム情報のことである。例えば、図6Bの例で、右ハンドでワークを掴んで、左ハンドでワークを置きたい場合には、候補プログラム情報2を使用プログラム情報として選択する。また、動作プログラムとは、ロボットが実行する一連の処理を表すプログラム又は情報のことをいう。多くの場合には、動作プログラムは、候補プログラム情報を組み合わせることによって作成される。さらに、選択処理とは、複数の候補プログラム情報の中から、使用プログラム情報を選択する処理を含む処理のこという。選択処理の詳細については後述する。なお、候補プログラム情報が、一つしか記憶されていない場合もあり得るが、この場合には常に同じ候補プログラム情報を選択するか、選択処理を省略してもよい。本実施形態では、以上のようにして、動作プログラムを作成する。これにより、複数のアームを有するロボットのエンドポイントを、第1の目標位置から第2の目標位置に移動させる場合に、ロボットのエンドポイントやワークの位置等に応じて、自動的に動作プログラムを作成することが可能となる。したがって、例えば、図5Aの場合には、図6Bの候補プログラム情報2を使用プログラム情報として選択し、図5Cの場合には、図6Bの候補プログラム情報4を使用プログラム情報として選択して動作プログラムを作成するため、図5Aの場合だけでなく図5Cの場合にも対応が可能になる。さらに、作業者は、ロボットに対する命令と候補プログラム情報さえ準備すればよく、実際の作業現場の一つ一つの事例に合わせて、動作プログラムを作業者が作成する必要がなくなる。これによって、ロボットを作業現場に導入する際の準備コストを大幅に削減すること等が可能となる。次に、前述した使用プログラム情報の選択処理においては、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択することが望ましい。これらの位置関係によっては、実行できない候補プログラム情報があるためである。例えば、図5Cのような場合には、図6Bの候補プログラム情報1や候補プログラム情報2は実行できない。そこで、ロボット300の作業エリアは、複数のエリアに分割され、記憶部120は、第1の目標位置が属する移動元エリアと、第2の目標位置が属する移動先エリアとの組み合わせパターンに関連付けて、候補プログラム情報を記憶してもよい。そして、プログラム作成部110は、組み合わせパターンに関連付けられた候補プログラム情報の中から、使用プログラム情報の選択処理を行って、動作プログラムを作成してもよい。分割された複数のエリアの例を図7Aと図7Bに示す。図7Aは、二つのエリアAR1とAR2とに作業エリアが分割されている。一方、図7Bは、九つのエリアAR1~AR9に作業エリアが分割されている。本実施形態では、作業エリアの分割方法は任意であるが、作業エリアの分割方法に関する特徴的な例については後述する。また、ロボット制御システム等において、本実施形態の手法を利用する場合には、複数のエリアをあらかじめ求めて記憶しておいてもよいし、ロボットのエンドエフェクター把持部が変更された時に複数のエリアを求めてもよい。他にも、動作プログラムを作成する時に複数のエリアを求めても良い。ここで、移動元エリアとは、第1の目標位置が属するエリアのことを言い、移動先エリアとは、第2の目標位置が属するエリアのことを言う。具体的には、図7Aでは、第1の目標位置DP1はエリアAR2に属しているため、エリアAR2が移動元エリアとなる。一方、第2の目標位置DP2はエリアAR1に属しているため、エリアAR1が移動先エリアとなる。同様にして、図7Bでは、エリアAR6が移動元エリアとなり、エリアAR4が移動先エリアとなる。また、組み合わせパターンとは、移動元エリアと移動先エリアの組み合わせのことをいう。以下では、組合せパターンを、組合せパターン=移動元エリア、移動先エリアと記載する。具体的には、図7Aの場合には、組合せパターン=AR2、AR1となり、図7Bの場合には、組合せパターン=AR6、AR4となる。さらに、本実施形態では、組み合わせパターンに関連付けて、候補プログラム情報を記憶するが、その具体例を図8に示す。図8は、図7Aの場合における、組み合わせパターンと候補プログラム情報との関係を表にしたものである。また、記憶する候補プログラム情報及びこれに含まれる命令は、図6A及び図6Bに示したものとする。例えば、組合せパターン=AR1、AR1の場合には、図6Bに示す候補プログラム情報のいずれも実行できる可能性があるため、候補プログラム情報1~候補プログラム情報4を、組合せパターン=AR1、AR1に関連付けて記憶する。一方、組合せパターン=AR2、AR2の場合には、ロボットRBが図7Aの状態のままでは、左ハンドHDLをエリアAR2へ移動させることができないため、実行できる可能性のある候補プログラム情報1のみを、組合せパターン=AR2、AR2に関連付けて記憶する。なお、全ての候補プログラム情報を記憶しておき、候補プログラム情報のインデックスのみを組合せパターンに関連付けて記憶する等、様々な変形が可能であるが、これらの変形例も全て本実施形態に含まれるとする。そして、プログラム作成部110は、現在の状態の組み合わせパターンに関連付けられた候補プログラム情報の中から、使用プログラム情報の選択処理を行って、動作プログラムを作成してよい。これにより、例えば上記の処理を行った後にロボットのハンド位置等を考慮して使用プログラム情報の選択処理を行えば、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択すること等が可能になる。さらに、前述したように、作業エリアの分割方法には様々な方法があるが、現在のロボットのハンド位置等に基づいて、複数のエリアを設定しておけば、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択することが可能になる。使用プログラム情報は、組み合わせパターンに関連付けられて記憶されているが、その組み合わせパターンがこれらの3つの要素ロボットのハンドの位置等、第1の目標位置、第2の目標位置に基づいて求められるためである。そこで、複数のエリアは、ロボット300の複数のアームのエンドポイントのうち、第iのアームのエンドポイントと第jのアームのエンドポイントが共に届く第aのエリアと、第iのアームのエンドポイントだけが届く第bのエリアと、第jのアームのエンドポイントだけが届く第cのエリアを含んでもよい。そして、記憶部120は、第aのエリアと第bのエリアと第cのエリアのうち、一つのエリアを移動元エリアとし、第aのエリアと第bのエリアと第cのエリアのうち、一つのエリアを移動先エリアとする組み合わせパターンに関連付けて、候補プログラム情報を記憶してもよい。なお、1≦i,j≦LLは自然数で、i≠jであり、1≦a,b,c≦MMは自然数で、a≠b≠cであるとする。説明の簡略化のため、以下では、L=2、M=3とする。ここで、ロボットRBの各ハンドの到達域に基づいて分割されたエリアの具体例を図9に示す。第aのエリアARaは、ロボットRBの両方のハンドが共に届く領域である。また、第bのエリアARbは、ロボットRBの右ハンドだけが届く領域であり、第cのエリアARcは、ロボットRBの左ハンドだけが届く領域である。最後に、エリアNGARは、現在のロボットRBの位置及び向きでは、どのハンドも移動させることができないエリアである。なお、一体移動命令が実行可能な場合については後述する。これにより、例えば、使用プログラム情報の選択処理において、組合せパターンから特定した複数の候補プログラム情報を、ロボットのハンド位置等に基づいてさらに限定するなどの処理をわざわざ行う必要がなくなり、このような処理を行わずとも、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に基づいて、使用プログラム情報を選択すること等が可能になる。また、記憶部120は、ロボット300の複数のアームのうちの第iのアームに設けられた把持部によりワークを把持した状態から、複数のアームのうちの第jのアームに設けられた把持部によりワークを把持する状態へ切り替える持ち替え命令を有する候補プログラム情報と、持ち替え命令を有さない候補プログラム情報の両方を記憶してもよい。ここで、持ち替え命令とは、ワークを把持するハンドを他のハンドに切り替えて、ワークを持ち替えることを指示する命令のことをいう。具体的には、図6Aの命令7や命令8のことである。持ち替え命令を用いる場合には、例えば、ロボット全体を移動又は回転させなくても、アームが一つである場合に比べて、ハンドが到達する領域を広く確保することができる。また、例えばワークのA面を下にしてワークを把持した時に、A面と異なるB面を下にしてワークを置くなど、ワークの向きを変更する動作を行うことができる。さらに、次の動作プログラムを実行する際に、ロボットの各部を初期位置に戻す処理の所要時間を短縮できる場合がある。本効果については、具体例を用いて後述する。他にも、第1のアームのハンドから第2のアームのハンドにワークを渡した後に、第2のアームを移動させつつ、第1のアームを他の目標位置に移動させるなど複数の命令を並行して実行すること等が可能になる。また、ロボット300は、複数のアームを一体移動させる移動機構を有し、記憶部120は、移動機構を動かす一体移動命令を有する候補プログラム情報と、一体移動命令を有さない候補プログラム情報の両方を記憶してもよい。ここで、一体移動命令とは、ロボットの移動機構を動かす命令のこという。例えば、ロボット全体を並行移動させる命令や、ロボット全体を回転移動させる命令等がある。前述したように、図4Cには、ロボット全体を回転移動させた一例を示している。一体移動命令を実行した場合には、ロボットのハンドの到達域が当然変化する。これにより、例えば、現在のロボットの位置及び向きでは、ハンドが届かない位置に目標位置がある場合に、一体移動命令を実行することにより、ハンドを移動させること等が可能になる。さらに、一体移動命令を実行可能な場合には、前述した作業エリアをさらに細かく分割することができる。すなわち、前述した第bのエリアは、移動機構を動かさない場合に第iのアームのエンドポイントが届く第dのエリアと、移動機構を動かす場合に第iのアームのエンドポイントが届く第eのエリアを含んでもよい。さらに、前述した第cのエリアは、移動機構を動かさない場合に第jのアームのエンドポイントが届く第fのエリアと、移動機構を動かす場合に第jのアームのエンドポイントが届く第gのエリアを含んでもよい。そして、記憶部120は、第aのエリアと第dのエリアと第eのエリアと第fのエリアと第gのエリアのうち、一つのエリアを移動元エリアとし、第aのエリアと第dのエリアと第eのエリアと第fのエリアと第gのエリアのうち、一つのエリアを移動先エリアとする組み合わせパターンに関連付けて、候補プログラム情報を記憶してもよい。なお、1≦i,j≦LLは自然数で、i≠jであり、1≦a,b,c,d,e,f,g≦MMは自然数で、a≠b≠c≠d≠e≠f≠gであるとする。説明の簡略化のため、以下では、L=2、M=8とする。一体移動命令を用いる場合のエリア設定例を図10Aと図10Bに示す。この場合には、図10Aに示すように、作業エリアはエリアAR1~AR9に分割される。また、各エリアの意味については、図10Bの表にまとめている。例えば、エリアAR2は、移動機構を使わない場合でも、右ハンドを移動させることができるが、左ハンドは移動機構を使わなければ移動させることができない領域という意味である。さらに、図10Aのようなエリアが設定されている場合に、第1の目標位置DP1から第2の目標位置DP2へワークWKを移動させる例を、図11A~図11Cに示す。まず、図11Aでは、第1の目標位置DP1がエリアAR5に属しており、移動元エリアはエリアAR5であることが分かる。エリアAR5は、移動機構を使うか否かに関わらず、右ハンドは届くが、左ハンドは届かない領域である。一方、第2の目標位置DP2は、エリアAR8に属しており、エリアAR8が移動先エリアであることが分かる。図10Bに示す通り、エリアAR8は、移動機構を使っても右ハンドは届かないが、左ハンドは移動機構を使えば届く領域である。従って、組み合わせパターンはAR5、AR8となる。本例では、まずは図11Aに示すように、右ハンドを第1の目標位置DP1に移動させる必要がある。この時、移動機構を使う必要はない。次に、図11Bに示すように、ワークWKを把持するハンドを右ハンドから左ハンドに切り替える必要がある。そして最後に、図11Cに示すように、一体機構を用いて、ロボットRB全体を回転させた後に、左ハンドを第2の目標位置DP2に移動させて、ワークWKを置けば目的が達せられる。したがって、組み合わせパターンAR5、AR8に関連付けて記憶されている候補プログラム情報の中から、前述した動作を行う使用プログラム情報を選択する。これにより、ロボットのハンドの位置等と、第1の目標位置と、第2の目標位置との位置関係に加え、移動機構の使用の有無に基づいて、使用プログラム情報を選択すること等が可能になる。また、プログラム作成部110は、候補プログラム情報に従ってロボット300を動作させる場合のシミュレーション処理を行い、シミュレーション処理の結果に基づいて、使用プログラム情報を選択してもよい。ここで、シミュレーション処理とは、実際にはロボットを動かさずに、候補プログラム情報や後述する仮動作プログラム等に従って、ロボットの動きやプログラム実行後のロボットの各部の位置等を演算する処理等をいう。また、シミュレーション処理の結果とは、シミュレーション処理によって得られる情報のこという。例えば、シミュレーション処理によって得られる情報には、所要時間や、ハンドの移動距離、消費電力、騒音、ロボットの各ジョイントの使用頻度などがある。具体例を図12に示す。図12は、候補プログラム情報1~候補プログラム情報4に従ってシミュレーション処理を行った場合の所要時間の一例である。本例では、所要時間が最も短い候補プログラム情報を使用プログラム情報として選択する。したがって、本例では、候補プログラム情報1に従ってシミュレーション処理を行った時の所要時間が10秒と最も短く、候補プログラム情報1が使用プログラム情報として選択される。これにより、例えば、最も所要時間が短い候補プログラム情報を、使用プログラム情報として選択し、動作プログラムを作成すること等が可能になる。これまでは、第1の目標位置から第2の目標位置へワークを移動させるための動作プログラムを作成する手法について述べてきたが、実際には、第1の目標位置から第2の目標位置へワークを移動させ、さらに第3の目標位置へワークを移動させる場合も多い。目標位置が3つ以上ある場合も当然ある。この場合には、前述した手法を繰り返し用いても良いが、第1の目標位置から第2の目標位置へワークを移動させ、さらに第3の目標位置へ移動させるまでの一連の処理を制御する動作プログラムをまとめて作成した方が、所要時間が短い動作プログラムを作成することができる場合がある。そこで、プログラム作成部110は、複数の候補プログラム情報を組み合わせて仮動作プログラムを生成し、仮動作プログラムに従ってロボット300を動作させる場合のシミュレーション処理を行ってもよい。そして、プログラム作成部110は、シミュレーション処理の結果に基づいて、複数の使用プログラム情報を選択し、選択した複数の使用プログラム情報に基づいて、動作プログラムを作成してもよい。ここで、仮動作プログラムとは、複数の候補プログラム情報を組み合わせたプログラムである。仮動作プログラムは、実際にロボットを動作させる際に用いる動作プログラムではなく、シミュレーション処理において用いるプログラムである。具体例を図13A~図13Cに示す。ここでは、図13Aのように、双腕ロボットRBを用いて、第1の目標位置DP1から第2の目標位置DP2へワークWKを移動させ、さらに第3の目標位置DP3へ移動させる場合を考える。また、作業エリアは、エリアAR1とエリアAR2とに分けられており、用いられる候補プログラム情報及びこれに含まれる命令は、図6Aと図6Bに示すものする。なお、説明の簡略化のため、一体移動命令は用いないこととする。この場合、図13Bに示すような4つの仮動作プログラムが作成される。例えば、仮動作プログラム1は、候補プログラム情報1を続けて用いるものであり、右ハンドHDRでのみワークを把持するプログラムである。また、仮動作プログラム2は、候補プログラム情報1に従って制御した後に、候補プログラム情報2を用いるプログラムである。仮動作プログラム2では、まず右ハンドHDRでワークWKを掴んで第2の目標位置DP2に移動させ、右ハンドHDRでワークWKを置いた後に、左ハンドHDLでワークWKを掴み、第3の目標位置DP3へ移動する間に、右ハンドHDRにワークWKを持ち替えて、右ハンドHDRでワークWKを置く。仮動作プログラム3は同様に持ち替え命令を一度実行するプログラムであり、仮動作プログラム4では持ち替え命令を二度実行するプログラムである。そして、仮動作プログラム1~仮動作プログラム4の全てに対して、シミュレーション処理を行い、図13Cに示すようなシミュレーション処理結果を得たとする。なお、説明の簡略化のため、図13Cに示す所要時間は、目標位置への移動に要する時間を一律10秒、ワークWKの持ち替えに要する時間を一律2秒、ロボットが現在の姿勢のままでは次の命令を実行できない場合に、命令を実行できる姿勢に修正することに要する時間を一律5秒とする。ここでは、図12の例と同様に、所要時間が最も短い仮動作プログラムに用いられている候補プログラム情報を、使用プログラム情報として選択することにする。この場合には、仮動作プログラム1が最も全体の所要時間が短いため、仮動作プログラム1に用いられている候補プログラム情報1が使用プログラム情報として選択され、動作プログラムが作成される。なお、ここでは、作成される動作プログラムは、仮動作プログラム1と同じものになるが、本実施形態ではこれに限定さない。また、例えば仮動作プログラム1のように、続けて同じアームを使うのではなく、1回以上の持ち替えを行い、異なる命令をアーム毎にそれぞれ実行したい場合などもある。この場合には、仮動作プログラム2~仮動作プログラム4の中から、最も優秀なプログラムを選択することになる。すると、仮動作プログラム4が最も所要時間が短くなる。仮動作プログラム4は、ワークWKの持ち替えを2回行うため、一見すると一番所要時間がかかるとも思われる。しかし、例えば、仮動作プログラム2に従ってロボットRBを制御する場合には、第2の目標位置DP2において、右ハンドHDRでワークWKを置いているため、次に左ハンドHDLでワークWKを掴むためには、右ハンドHDRを第2の目標位置DP2から他の位置に移動させなければならない。そのため、この処理に5秒を要してしまい、このような処理を行う必要のない仮動作プログラム4よりも遅くなってしまう。仮動作プログラム3についても同様である。そして、仮動作プログラム4を構成する候補プログラム情報が使用プログラム情報として選択される。具体的には、第1の目標位置DP1から第2の目標位置DP2への移動には、候補プログラム情報2が、第2の目標位置DP2から第3の目標位置DP3への移動には、候補プログラム情報4が、使用プログラム情報として選択され、動作プログラムが作成される。上述した例のように、第1の目標位置DP1から第2の目標位置DP2へワークWKを移動させ、さらに第3の目標位置DP3へのワークWKを移動させる場合に、続けて同じアームを使うのではなく、1回以上の持ち替えを行う必要がある場合には、先に説明したように候補プログラム情報毎にシミュレーションを行う場合と、仮動作プログラム情報毎にシミュレーションを行う場合とで、使用プログラム情報として選択される候補プログラム情報が異なる。具体的には、候補プログラム情報毎にシミュレーションを行う場合、第1の目標位置DP1から第2の目標位置DP2への移動については、候補プログラム情報1が使用プログラム情報として選択される。ここで、第3の目標位置DP3へは左ハンドHDLは届かない。さらに持ち替え命令も実行する必要がある。そのため、第2の目標位置DP2から第3の目標位置DP3への移動については、候補プログラム情報4が使用プログラム情報として選択される。すなわち、仮動作プログラム2と同様の構成になる。また、先に持ち替えを行う場合には仮動作プログラム3と同様の構成になる。したがって、例えば、仮動作プログラム毎にシミュレーション処理を行うことにより、候補プログラム情報毎にシミュレーション処理を行う場合よりも、所要時間が短い動作プログラムを作成すること等が可能になる。なお、本実施形態の動作プログラム作成装置100等は、プログラムにより実現してもよい。この場合には、CPU等のプロセッサーがプログラムを実行することで、本実施形態の動作プログラム作成装置100等が実現される。具体的には、情報記憶媒体に記憶されたプログラムが読み出され、読み出されたプログラムをCPU等のプロセッサーが実行する。ここで、情報記憶媒体コンピューターにより読み取り可能な媒体は、プログラムやデータなどを格納するものであり、その機能は、光ディスクDVD、CD等、HDDハードディスクドライブ、或いはメモリーカード型メモリー、ROM等などにより実現できる。そして、CPU等のプロセッサーは、情報記憶媒体に格納されるプログラムデータに基づいて本実施形態の種々の処理を行う。即ち、情報記憶媒体には、本実施形態の各部としてコンピューター操作部、処理部、記憶部、出力部を備える装置を機能させるためのプログラム各部の処理をコンピューターに実行させるためのプログラムが記憶される。4.処理の流れ以下では、図14のフローチャートを用いて、図4Aに示す双腕ロボットを用いて、ワークを移動させる場合に、動作プログラム作成装置が行う処理の流れについて説明する。まず、作業者が第1の目標位置~第Nの目標位置を入力するS0。ここで、Nは正の整数である。例えば、Nの範囲は、2≦N≦4であるとする。なお、第1の目標位置はワークの現在位置である。さらに、本例では、ワークを移動させる制御を行うため、二つ以上の目標位置を入力する必要がある。以下では、N=3の場合について説明する。次に、第1の目標位置~第3の目標位置が属するエリアを特定するS1。本例では、図10Aに示すエリアAR1~エリアAR9のどのエリアに各目標位置が属するかを求める。その後、カウンターiを1に初期化するS2。次に、第iの目標位置、すなわち第1の目標位置が属するエリアと、第i1の目標位置、すなわち第2の目標位置が属するエリアの組み合わせパターンを特定するS3。そして、求めた組み合わせパターンに関連付けて記憶されている候補プログラム情報を読み出すS4。その後、カウンターiがN-1であるかを判定するS5。今、i=1、N-1=2であり、条件を満たさないため、カウンターiを更新するS6。その後は、i=2の場合も同様に、ステップS3~ステップS5の処理を行う。その結果、ステップS5の条件を満たすこととなるため、読み出した候補プログラム情報に基づいて、仮動作プログラムを作成するS7。ここでは、第1の目標位置から第2の目標位置を経て、第3の目標位置へワークを移動させることができるような候補プログラム情報の組み合わせを全て求め、これを仮動作プログラムとする。次に、求めた仮動作プログラムに基づいて、ロボットを制御する場合をシミュレーションするS8。ここでは、求めた全ての仮動作プログラムについて、シミュレーションを行う。そして、シミュレーション処理の結果に基づいて、使用プログラム情報を選択するS9。本例では、第1の目標位置から第2の目標位置を経て、第3の目標位置へワークを移動させた時の所要時間が最も短くなる仮動作プログラムを動作プログラムとして用いる。そのため、所要時間が最小である仮動作プログラムに用いられた候補プログラム情報を、使用プログラム情報として選択する。最後に、使用プログラム情報を動作順に関連付けて、動作プログラムを作成するS10。先に述べたように、本ステップで作成される動作プログラムは、所要時間が最小である仮動作プログラムと同じものである。ただし、本実施形態では、動作プログラムが、所要時間が最小である仮動作プログラムと異なるものであってもよい。また、ロボット制御システム及びロボットシステムの場合には、この後に、求めた動作プログラムに基づいてロボットを実際に制御する。以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、動作プログラム作成装置、プログラム、ロボット制御システム及びロボットシステムの構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。"