(57)【要約】【課題】ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができるロボット制御装置を提供すること。【解決手段】ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置に前記アーム位置が一致した場合において前記アームが取ることが可能な複数のアーム姿勢の中で使用可能な前記アーム姿勢が決められている使用可否情報に基づいて前記アームを動かす、ロボット制御装置。【選択図】図３
2018051647.tif 000002
【特許請求の範囲】
【請求項１】
ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置に前記アーム位置が一致した場合において前記アームが取ることが可能な複数のアーム姿勢の中で使用可能な前記アーム姿勢が決められている使用可否情報に基づいて前記アームを動かす、
ロボット制御装置。
【請求項２】
前記使用可否情報は、前記複数の前記アーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である、
請求項１に記載のロボット制御装置。
【請求項３】
受け付けた前記アーム姿勢情報であって前記使用可否情報に含まれていない前記アーム姿勢情報を、受け付けた前記可否情報と対応付けて前記使用可否情報に記憶する、
請求項２に記載のロボット制御装置。
【請求項４】
前記使用可否情報に含まれていない前記アーム姿勢情報を、当該アーム姿勢情報が示すアーム姿勢と最も近い前記アーム姿勢を示す前記アーム姿勢情報であって前記使用可否情報に含まれている前記アーム姿勢情報に対応付けられた前記可否情報に対応付けて前記使用可否情報に記憶する、
請求項２又は３に記載のロボット制御装置。
【請求項５】
前記使用可否情報に含まれていない前記アーム姿勢情報が示す前記アーム姿勢に対応付ける前記可否情報として尤もらしい前記可否情報を特定し、特定した前記可否情報を当該アーム姿勢を示す前記アーム姿勢情報に対応付けて前記使用可否情報に記憶する、
請求項２から４のうちいずれか一項に記載のロボット制御装置。
【請求項６】
前記使用可否情報に含まれていない前記アーム姿勢情報が示す前記アーム姿勢を表す１以上のパラメーターに基づいて、前記尤もらしい前記可否情報を特定する、
請求項５に記載のロボット制御装置。
【請求項７】
請求項１から６のうちいずれか一項に記載のロボット制御装置に制御される、
ロボット。
【請求項８】
請求項１から６のうちいずれか一項に記載のロボット制御装置と、
前記ロボット制御装置に制御される前記ロボットと、
を備えるロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボット制御装置、ロボット、及びロボットシステムに関する。
【背景技術】
【０００２】
７軸以上の自由度で動作するアームを備えたロボットを制御する技術の研究や開発が行われている。
【０００３】
これに関し、作業自由度に対して少なくとも１つの冗長自由度を備えるように複数のリンクが各関節軸にて連結されたマニピュレーターを備え、関節軸を当該関節毎に設けられた回転系アクチュエーターにより駆動するロボットの制御方法において、手先位置姿勢を目標値とした拘束条件の下で、冗長自由度が許容するリンク位置姿勢を変化させた場合の、少なくとも各リンクの関節軸の慣性力と遠心力・コリオリ力と重力に基づく負荷トルクを算出し、変化させた場合のリンク位置姿勢の中で、負荷トルクと回転系アクチュエーターの定格トルク比が最小となるリンク位置姿勢を求め、手先位置姿勢を目標値とした各関節軸の回転系アクチュエーターの制御指令に、負荷トルクと回転系アクチュエーターの定格トルク比が最小となる時の各負荷トルクとなるフィードフォワード値を付与するロボットの制御方法が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１９３１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような制御方法では、求めたリンク位置姿勢が、ユーザーが所望するリンク位置姿勢と一致しない場合があった。
【課題を解決するための手段】
【０００６】
上記課題の少なくとも一つを解決するために本発明の一態様は、ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置に前記アーム位置が一致した場合において前記アームが取ることが可能な複数のアーム姿勢の中で使用可能な前記アーム姿勢が決められている使用可否情報に基づいて前記アームを動かす、ロボット制御装置である。
この構成により、ロボット制御装置は、ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置にアーム位置が一致した場合においてアームが取ることが可能な複数のアーム姿勢の中で使用可能なアーム姿勢が決められている使用可否情報に基づいてアームを動かす。これにより、ロボット制御装置は、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０００７】
また、本発明の他の態様は、ロボット制御装置において、前記使用可否情報は、前記複数の前記アーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である、構成が用いられてもよい。
この構成により、ロボット制御装置において、使用可否情報は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。これにより、ロボット制御装置は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた使用可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０００８】
また、本発明の他の態様は、ロボット制御装置において、受け付けた前記アーム姿勢情報であって前記使用可否情報に含まれていない前記アーム姿勢情報を、受け付けた前記可否情報と対応付けて前記使用可否情報に記憶する、構成が用いられてもよい。
この構成により、ロボット制御装置は、受け付けたアーム姿勢情報であって使用可否情報に含まれていないアーム姿勢情報を、受け付けた可否情報と対応付けて使用可否情報に記憶する。これにより、ロボット制御装置は、受け付けたアーム姿勢情報と、受け付けた可否情報とに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０００９】
また、本発明の他の態様は、ロボット制御装置において、前記使用可否情報に含まれていない前記アーム姿勢情報を、当該アーム姿勢情報が示すアーム姿勢と最も近い前記アーム姿勢を示す前記アーム姿勢情報であって前記使用可否情報に含まれている前記アーム姿勢情報に対応付けられた前記可否情報に対応付けて前記使用可否情報に記憶する、構成が用いられてもよい。
この構成により、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報を、当該アーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報であって使用可否情報に含まれているアーム姿勢情報に対応付けられた可否情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【００１０】
また、本発明の他の態様は、ロボット制御装置において、前記使用可否情報に含まれていない前記アーム姿勢情報が示す前記アーム姿勢に対応付ける前記可否情報として尤もらしい前記可否情報を特定し、特定した前記可否情報を当該アーム姿勢を示す前記アーム姿勢情報に対応付けて前記使用可否情報に記憶する、構成が用いられてもよい。
この構成により、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定し、特定した可否情報を当該アーム姿勢を示すアーム姿勢情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として特定した尤もらしい可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【００１１】
また、本発明の他の態様は、ロボット制御装置において、前記使用可否情報に含まれていない前記アーム姿勢情報が示す前記アーム姿勢を表す１以上のパラメーターに基づいて、前記尤もらしい前記可否情報を特定する、構成が用いられてもよい。
この構成により、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す１以上のパラメーターに基づいて、当該アーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定する。これにより、ロボット制御装置は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す１以上のパラメーターに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【００１２】
また、本発明の他の態様は、上記に記載のロボット制御装置に制御される、ロボットである。
この構成により、ロボットは、ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置にアーム位置が一致した場合においてアームが取ることが可能な複数のアーム姿勢の中で使用可能なアーム姿勢が決められている使用可否情報に基づいてアームを動かす。これにより、ロボットは、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【００１３】
また、本発明の他の態様は、上記に記載のロボット制御装置と、前記ロボット制御装置に制御されるロボットと、を備えるロボットシステムである。
この構成により、ロボットシステムは、ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置にアーム位置が一致した場合においてアームが取ることが可能な複数のアーム姿勢の中で使用可能なアーム姿勢が決められている使用可否情報に基づいてアームを動かす。これにより、ロボットシステムは、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【００１４】
以上により、ロボット制御装置、ロボット、及びロボットシステムは、ロボットが備える７軸以上のアームに対応付けられたアーム位置を変化させる目標となる目標位置にアーム位置が一致した場合においてアームが取ることが可能な複数のアーム姿勢の中で使用可能なアーム姿勢が決められている使用可否情報に基づいてアームを動かす。これにより、ロボット制御装置、ロボット、及びロボットシステムは、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【図面の簡単な説明】
【００１５】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】ロボット制御装置３０が第１使用可否情報を生成する処理の流れの一例を示すフローチャートである。
【図５】判定画面の一例を示す図である。
【図６】記憶部３２に記憶された第１使用可否情報の一例を示す図である。
【図７】ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の具体例１の流れを示すフローチャートである。
【図８】対象対応関係の機械学習を行うロボット制御装置３０の処理の流れの一例を示すフローチャートである。
【図９】変換後第１使用可否情報の一例を示す図である。
【図１０】第１アームの論理的な構造の一例を示す図である。
【図１１】パラメーター情報の一例を示す図である。
【図１２】ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の流れの他の例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。
【００１７】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、ロボット制御装置３０を内蔵するロボット２０を備える。なお、ロボットシステム１は、ロボット２０に加えて、ロボット２０と別体の撮像部、ロボット２０と別体の教示装置（ティーチングペンダント）等のロボット２０と別体の他の装置を備える構成であってもよい。
【００１８】
ロボット２０は、第１アームと、第２アームと、第１アーム及び第２アームを支持する支持台と、支持台の内側にロボット制御装置３０を備える双腕ロボットである。なお、ロボット２０は、双腕ロボットに代えて、３本以上のアームを備える複腕ロボットであってもよく、１本のアームを備える単腕ロボットであってもよい。また、ロボット２０は、水平多関節ロボット等の他のロボットであってもよい。
【００１９】
第１アームは、第１エンドエフェクターＥ１と、第１マニピュレーターＭ１を備える。なお、第１アームは、これに代えて、第１エンドエフェクターＥ１を備えず、第１マニピュレーターＭ１を備える構成であってもよい。また、第１アームは、力検出部（例えば、力センサーやトルクセンサー）を備える構成であってもよい。
【００２０】
第１エンドエフェクターＥ１は、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、第１エンドエフェクターＥ１は、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
【００２１】
第１エンドエフェクターＥ１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第１エンドエフェクターＥ１は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ（Universal  Serial  Bus）等の規格によって行われる。また、第１エンドエフェクターＥ１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２２】
第１マニピュレーターＭ１は、図示しない関節Ｊ１１〜関節Ｊ１７の７つの関節と、第１撮像部２１を備える。また、関節Ｊ１１〜関節Ｊ１７のそれぞれは、図示しないアクチュエーターを備える。すなわち、第１マニピュレーターＭ１を備える第１アームは、７軸垂直多関節型のアームである。第１アームは、支持台と、第１エンドエフェクターＥ１と、第１マニピュレーターＭ１と、関節Ｊ１１〜関節Ｊ１７それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第１アームは、８軸以上の自由度で動作する構成であってもよい。
【００２３】
この一例において、関節Ｊ１１、関節Ｊ１３、関節Ｊ１５、関節Ｊ１７のそれぞれは、回転関節（捩り関節）である。回転関節は、回転関節の回動軸の回動によって回動軸に接続された２つのリンク間の角度を変化させない関節である。当該リンクは、第１マニピュレーターＭ１が有する部材であって関節間を繋ぐ部材である。また、関節Ｊ１２、関節Ｊ１４、関節Ｊ１６のそれぞれは、旋回関節（曲げ関節）である。旋回関節は、旋回関節の回動軸の回動によって回動軸に接続された２つの当該リンク間の角度を変化させる関節である。
【００２４】
第１アームが７軸の自由度で動作する場合、第１アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第１アームは、例えば、動作が滑らかになり、更に第１アームの周辺に存在する物体との干渉を容易に回避することができる。また、第１アームが７軸の自由度で動作する場合、第１アームの制御は、第１アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００２５】
第１マニピュレーターＭ１が備える７つのアクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第１マニピュレーターＭ１を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第１マニピュレーターＭ１が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２６】
第１撮像部２１は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤ（Charge  Coupled  Device）やＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）等を備えたカメラである。この一例において、第１撮像部２１は、第１マニピュレーターＭ１の一部に備えられる。そのため、第１撮像部２１は、第１アームの動きに応じて移動する。また、第１撮像部２１が撮像可能な範囲は、第１アームの動きに応じて変化する。第１撮像部２１は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００２７】
また、第１撮像部２１は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第１撮像部２１は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００２８】
第２アームは、第２エンドエフェクターＥ２と、第２マニピュレーターＭ２を備える。なお、第２アームは、これに代えて、第２エンドエフェクターＥ２を備えず、第２マニピュレーターＭ２を備える構成であってもよい。また、第２アームは、力検出部（例えば、力センサーやトルクセンサー）を備える構成であってもよい。
【００２９】
第２エンドエフェクターＥ２は、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、第２エンドエフェクターＥ２は、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
【００３０】
第２エンドエフェクターＥ２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、第２エンドエフェクターＥ２は、ロボット制御装置３０から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２エンドエフェクターＥ２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３１】
第２マニピュレーターＭ２は、図示しない関節Ｊ２１〜関節Ｊ２７の７つの関節と、第２撮像部２２を備える。また、関節Ｊ２１〜関節Ｊ２７のそれぞれは、図示しないアクチュエーターを備える。すなわち、第２マニピュレーターＭ２を備える第２アームは、７軸垂直多関節型のアームである。第２アームは、支持台と、第２エンドエフェクターＥ２と、第２マニピュレーターＭ２と、関節Ｊ２１〜関節Ｊ２７それぞれのアクチュエーターとによる連携した動作によって７軸の自由度の動作を行う。なお、第２アームは、８軸以上の自由度で動作する構成であってもよい。
【００３２】
この一例において、関節Ｊ２１、関節Ｊ２３、関節Ｊ２５、関節Ｊ２７のそれぞれは、回転関節（捩り関節）である。回転関節は、回転関節の回動軸の回動によって回動軸に接続された２つのリンク間の角度を変化させない関節である。当該リンクは、第２マニピュレーターＭ２が有する部材であって関節間を繋ぐ部材である。また、関節Ｊ２２、関節Ｊ２４、関節Ｊ２６のそれぞれは、旋回関節（曲げ関節）である。旋回関節は、旋回関節の回動軸の回動によって回動軸に接続された２つの当該リンク間の角度を変化させる関節である。
【００３３】
第２アームが７軸の自由度で動作する場合、第２アームは、６軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第２アームは、例えば、動作が滑らかになり、更に第２アームの周辺に存在する物体との干渉を容易に回避することができる。また、第２アームが７軸の自由度で動作する場合、第２アームの制御は、第２アームが８軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
【００３４】
第２マニピュレーターＭ２が備える７つのアクチュエーターはそれぞれ、ケーブルによってロボット制御装置３０と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置３０から取得される制御信号に基づいて、第２マニピュレーターＭ２を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。また、第２マニピュレーターＭ２が備える７つのアクチュエーターのうちの一部又は全部は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３５】
第２撮像部２２は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。この一例において、第２撮像部２２は、第２マニピュレーターＭ２の一部に備えられる。そのため、第２撮像部２２は、第２アームの動きに応じて移動する。また、第２撮像部２２が撮像可能な範囲は、第２アームの動きに応じて変化する。第２撮像部２２は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
【００３６】
また、第２撮像部２２は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第２撮像部２２は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３７】
また、ロボット２０は、第３撮像部２３と、第４撮像部２４を備える。
第３撮像部２３は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第３撮像部２３は、第４撮像部２４が撮像可能な範囲を第４撮像部２４とともにステレオ撮像可能な部位に備えられる。第３撮像部２３は、ケーブルによってロボット制御装置３０と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第３撮像部２３は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３８】
第４撮像部２４は、例えば、集光された光を電気信号に変換する撮像素子であるＣＣＤやＣＭＯＳ等を備えたカメラである。第４撮像部２４は、第３撮像部２３が撮像可能な範囲を第３撮像部２３とともにステレオ撮像可能な部位に備えられる。第４撮像部２４は、ケーブルによって通信可能にロボット制御装置３０と接続されている。ケーブルを介した有線通信は、例えば、イーサネット（登録商標）やＵＳＢ等の規格によって行われる。なお、第４撮像部２４は、Ｗｉ−Ｆｉ（登録商標）等の通信規格により行われる無線通信によってロボット制御装置３０と接続される構成であってもよい。
【００３９】
上記で説明したロボット２０が備える各機能部は、この一例において、ロボット２０に内蔵されたロボット制御装置３０から制御信号を取得する。そして、当該各機能部は、取得した制御信号に基づいた動作を行う。なお、ロボット２０は、ロボット制御装置３０を内蔵する構成に代えて、外部に設置されたロボット制御装置３０により制御される構成であってもよい。この場合、ロボット２０と、ロボット制御装置３０とは、ロボットシステムを構成する。また、ロボット２０は、第１撮像部２１、第２撮像部２２、第３撮像部２３、第４撮像部２４のうちの一部又は全部を備えない構成であってもよい。
【００４０】
ロボット制御装置３０は、この一例において、ロボット２０を制御する（動作させる）コントローラーである。ロボット制御装置３０は、例えば、予め記憶された動作プログラムに基づいた制御信号を生成する。ロボット制御装置３０は、生成した制御信号をロボット２０に出力し、ロボット２０に所定の作業を行わせる。所定の作業は、例えば、図示しない給材領域に載置された物体を把持し、把持した物体を図示しない除材領域に載置する作業である。なお、所定の作業は、これに代えて、他の作業であってもよい。なお、ロボット制御装置３０は、動作プログラムに基づいて所定の作業をロボット２０に行わせる構成に代えて、ビジュアルサーボやインピーダンス制御等によって所定の作業をロボット２０に行わせる構成であってもよい。
【００４１】
＜ロボット制御装置がロボットに所定の作業を行わせる処理の概要＞
以下、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の概要について説明する。
【００４２】
ロボット制御装置３０は、第１エンドエフェクターＥ１に予め対応付けられた位置に、第１エンドエフェクターＥ１とともに動く第１制御点Ｔ１を設定する。第１エンドエフェクターＥ１に予め対応付けられた位置は、例えば、第１エンドエフェクターＥ１の重心の位置である。第１制御点Ｔ１は、例えば、第１アームのＴＣＰ（Tool  Center  Point）である。なお、第１制御点Ｔ１は、当該ＴＣＰに代えて、第１マニピュレーターＭ１の一部に対応付けられた仮想的な点等の他の仮想的な点であってもよい。すなわち、第１制御点Ｔ１は、第１エンドエフェクターＥ１に対応付けられた位置に代えて、第１エンドエフェクターＥ１の他の部位の位置に設定される構成であってもよく、第１マニピュレーターＭ１に対応付けられた何らかの位置に設定される構成であってもよい。
【００４３】
ロボット制御装置３０は、ユーザーから予め入力された第１制御点設定情報に基づいて第１制御点Ｔ１を設定する。第１制御点設定情報は、例えば、第１エンドエフェクターＥ１の重心の位置及び姿勢と第１制御点Ｔ１の位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、第１制御点設定情報は、これに代えて、第１エンドエフェクターＥ１に対応付けられた何らかの位置及び姿勢と第１制御点Ｔ１の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、第１マニピュレーターＭ１に対応付けられた何らかの位置及び姿勢と第１制御点Ｔ１の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット２０の他の部位に対応付けられた何らかの位置及び姿勢と第１制御点Ｔ１の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
【００４４】
第１制御点Ｔ１には、第１制御点Ｔ１の位置を示す情報である第１制御点位置情報と、第１制御点Ｔ１の姿勢を示す情報である第１制御点姿勢情報とが対応付けられている。なお、第１制御点Ｔ１には、これらに加えて、他の情報が対応付けられる構成であってもよい。
【００４５】
この一例において、第１制御点Ｔ１の位置は、第１制御点座標系ＴＣ１の原点のロボット座標系ＲＣにおける位置によって表される。また、第１制御点Ｔ１の姿勢は、第１制御点座標系ＴＣ１における各座標軸のロボット座標系ＲＣにおける方向によって表される。第１制御点座標系ＴＣ１は、第１制御点Ｔ１とともに動くように第１制御点Ｔ１に対応付けられた三次元局所座標系である。
【００４６】
ロボット制御装置３０は、予め記憶された動作プログラムに基づいてロボット２０を動作させる際、例えば、動作プログラムによって指定された第１制御点位置情報が示す位置と、動作プログラムによって指定された第１制御点姿勢情報が示す姿勢とを、第１制御点Ｔ１の位置及び姿勢を変化させる目標となる位置及び姿勢として特定する。以下では、説明の便宜上、第１制御点Ｔ１の位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第１アーム位置と称して説明する。また、以下では、第１制御点Ｔ１の位置及び姿勢を変化させる目標となる位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第１目標位置と称して説明する。なお、第１アーム位置は、第１制御点Ｔ１の位置のみによって表されてもよい。この場合、第１目標位置は、第１制御点Ｔ１の位置を変化させる目標となる位置のみによって表される。また、第１アーム位置は、第１アームに基づく他の位置及び姿勢によって表されてもよく、第１アームに基づく他の位置のみによって表されてもよい。
【００４７】
また、ロボット制御装置３０は、予め記憶された動作プログラムによって、第１制御点位置情報及び第１制御点姿勢情報とともに、第１冗長自由度を示す第１冗長自由度情報が指定される。
【００４８】
第１冗長自由度は、７軸の自由度で動作する第１アームが有する冗長自由度のことである。第１冗長自由度は、この一例において、第１基準平面に対する第１対象平面の角度のことである。
【００４９】
第１対象平面は、ある第１目標位置に第１アーム位置が一致している場合において、第１アームが備える関節のうちの関節Ｊ１２と、関節Ｊ１４と、関節Ｊ１６とのそれぞれを直線により結ぶことによって形成される三角形を含む平面のことである。より具体的には、例えば、第１対象平面は、当該場合において、関節Ｊ１２の重心の位置と、関節Ｊ１４の重心の位置と、関節Ｊ１６の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面である。なお、第１対象平面は、これに代えて、当該場合において、関節Ｊ１２の他の位置と、関節Ｊ１４の他の位置と、関節Ｊ１６の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であってもよい。
【００５０】
第１基準平面は、当該場合において、関節Ｊ１２、関節Ｊ１４、関節Ｊ１６のそれぞれを直線によって結ぶことによって形成される三角形を含む平面のことであり、且つ関節Ｊ１２及び関節Ｊ１６のそれぞれの回動角が第１所定回動角と一致している場合における当該平面のことである。より具体的には、例えば、第１基準平面は、当該場合において、関節Ｊ１２の重心の位置と、関節Ｊ１４の重心の位置と、関節Ｊ１６の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節Ｊ１２及び関節Ｊ１６のそれぞれの回動角が第１所定回動角と一致している場合における当該平面のことである。
【００５１】
第１所定回動角は、如何なる回動角であってもよい。また、関節Ｊ１２の第１所定回動角と、関節Ｊ１６の第１所定回動角とは、この一例において、同じ回動角であるが、これに代えて、互いに異なる回動角であってもよい。なお、第１基準平面は、これに代えて、当該場合において、関節Ｊ１２の他の位置と、関節Ｊ１４の他の位置と、関節Ｊ１６の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節Ｊ１２及び関節Ｊ１６のそれぞれの回動角が第１所定回動角と一致している場合における当該平面のことである構成であってもよい。
【００５２】
ロボット制御装置３０は、動作プログラムによって指定された第１冗長自由度情報が示す第１冗長自由度を、第１アームが有する第１冗長自由度を変化させる目標となる第１目標冗長自由度として特定する。
【００５３】
ロボット制御装置３０は、このようにして特定した第１目標位置と、第１目標冗長自由度とに基づく逆運動学によって、特定した第１目標位置に第１アーム位置が一致している場合、且つ第１目標冗長自由度に第１アームが有する第１冗長自由度が一致している場合における回動角であって第１アームが備える関節Ｊ１１〜関節Ｊ１７それぞれの回動角を算出する。ロボット制御装置３０は、関節Ｊ１１〜関節Ｊ１７のそれぞれを動作させ、関節Ｊ１１〜関節Ｊ１７それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第１アーム位置を、算出した第１目標位置と一致させる。この一例において、第１アームの姿勢である第１アーム姿勢は、関節Ｊ１１〜関節Ｊ１７それぞれの回動角の組み合わせによって表される。すなわち、ロボット制御装置３０は、特定した第１目標位置と、第１目標冗長自由度とに基づく逆運動学によって、特定した第１目標位置に第１アーム位置が一致している場合、且つ第１目標冗長自由度に第１アームが有する第１冗長自由度が一致している場合における第１アーム姿勢を算出する。そして、ロボット制御装置３０は、関節Ｊ１１〜関節Ｊ１７のそれぞれを動作させ、現在の第１アーム姿勢を、算出した第１アーム姿勢と一致させるとともに、現在の第１アーム位置を、当該第１目標位置と一致させる。このようにして、ロボット制御装置３０は、動作プログラムに基づいて第１アームを動作させることができる。なお、第１アーム姿勢は、第１アームに基づく他の値によって表されてもよい。
【００５４】
ここで、動作プログラムに第１冗長自由度をロボット制御装置３０に対して指定させる場合、例えば、第１アーム位置を第１制御点位置情報及び第１制御点姿勢情報が示す第１目標位置と一致させる際に第１アームが備える各アクチュエーターに加わる負荷が最小となる第１冗長自由度を示す第１冗長自由度情報が指定させる方法が知られている。
【００５５】
しかし、このような方法で動作プログラムに第１冗長自由度情報をロボット制御装置３０に対して指定させた場合、ロボット制御装置３０により動作された第１アームの第１アーム姿勢は、ユーザーが所望する第１アーム姿勢と一致しない場合がある。第１アーム姿勢のうちユーザーが所望する第１アーム姿勢は、例えば、図１に示したようにロボット２０の形状が人の形状に対応した形状である場合（すなわち、ロボット２０の形状が人の形状に似た形状である場合）、第１アーム姿勢のうちの人が取ることのできる姿勢に対応した第１アーム姿勢である。ユーザーが所望する第１アーム姿勢と第１アーム姿勢とが一致していない場合、ユーザーは、ロボット２０に不具合が生じる状況、ロボット２０が他の物体と干渉を起こす状況、ロボット２０がロボット２０自身と干渉を起こす状況等を想起してしまうことがある。その結果、ユーザーは、不安を感じながらロボット２０に作業を行わせることになる。
【００５６】
ユーザーに不安を感じさせてしまうことを抑制するため、この一例におけるロボット制御装置３０は、ロボット２０が備える７軸以上の第１アームに対応付けられた第１アーム位置を変化させる目標となる第１目標位置に第１アーム位置が一致した場合において第１アームが取ることが可能な複数の第１アーム姿勢の中で使用可能な第１アーム姿勢が決められている第１使用可否情報に基づいて第１アームを動かす。そして、ロボット制御装置３０は、所定の作業をロボット２０に行わせる。第１使用可否情報は、１以上の第１アーム姿勢のそれぞれを示す第１アーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。第１使用可否情報は、使用可否情報の一例である。また、第１アーム姿勢は、アーム姿勢の一例である。また、第１アーム姿勢情報は、アーム姿勢情報の一例である。これにより、ロボット制御装置３０は、ロボット２０の第１アーム姿勢をユーザーが所望する第１アーム姿勢と一致させながら第１アームを動かすことができる。
【００５７】
ロボット制御装置３０は、第２エンドエフェクターＥ２に予め対応付けられた位置に、第２エンドエフェクターＥ２とともに動く第２制御点Ｔ２を設定する。第２エンドエフェクターＥ２に予め対応付けられた位置は、例えば、第２エンドエフェクターＥ２の重心の位置である。第２制御点Ｔ２は、例えば、第２アームのＴＣＰである。なお、第２制御点Ｔ２は、当該ＴＣＰに代えて、第２マニピュレーターＭ２の一部に対応付けられた仮想的な点等の他の仮想的な点であってもよい。すなわち、第２制御点Ｔ２は、第２エンドエフェクターＥ２に対応付けられた位置に代えて、第２エンドエフェクターＥ２の他の部位の位置に設定される構成であってもよく、第２マニピュレーターＭ２に対応付けられた何らかの位置に設定される構成であってもよい。
【００５８】
ロボット制御装置３０は、ユーザーから予め入力された第２制御点設定情報に基づいて第２制御点Ｔ２を設定する。第２制御点設定情報は、例えば、第２エンドエフェクターＥ２の重心の位置及び姿勢と第２制御点Ｔ２の位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、第２制御点設定情報は、これに代えて、第２エンドエフェクターＥ２に対応付けられた何らかの位置及び姿勢と第２制御点Ｔ２の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、第２マニピュレーターＭ２に対応付けられた何らかの位置及び姿勢と第２制御点Ｔ２の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット２０の他の部位に対応付けられた何らかの位置及び姿勢と第２制御点Ｔ２の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
【００５９】
第２制御点Ｔ２には、第２制御点Ｔ２の位置を示す情報である第２制御点位置情報と、第２制御点Ｔ２の姿勢を示す情報である第２制御点姿勢情報とが対応付けられている。なお、第２制御点Ｔ２には、これらに加えて、他の情報が対応付けられる構成であってもよい。
【００６０】
この一例において、第２制御点Ｔ２の位置は、第２制御点座標系ＴＣ２の原点のロボット座標系ＲＣにおける位置によって表される。また、第２制御点Ｔ２の姿勢は、第２制御点座標系ＴＣ２における各座標軸のロボット座標系ＲＣにおける方向によって表される。第２制御点座標系ＴＣ２は、第２制御点Ｔ２とともに動くように第２制御点Ｔ２に対応付けられた三次元局所座標系である。
【００６１】
ロボット制御装置３０は、予め記憶された動作プログラムに基づいてロボット２０を動作させる際、例えば、動作プログラムによって指定された第２制御点位置情報が示す位置と、動作プログラムによって指定された第２制御点姿勢情報が示す姿勢とを、第２制御点Ｔ２の位置及び姿勢を変化させる目標となる位置及び姿勢として特定する。以下では、説明の便宜上、第２制御点Ｔ２の位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第２アーム位置と称して説明する。また、以下では、第２制御点Ｔ２の位置及び姿勢を変化させる目標となる位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第２目標位置と称して説明する。なお、第２アーム位置は、第２制御点Ｔ２の位置のみによって表されてもよい。この場合、第２目標位置は、第２制御点Ｔ２の位置を変化させる目標となる位置のみによって表される。また、第２アーム位置は、第２アームに基づく他の位置及び姿勢によって表されてもよく、第２アームに基づく他の位置のみによって表されてもよい。
【００６２】
また、ロボット制御装置３０は、予め記憶された動作プログラムによって、第２制御点位置情報及び第２制御点姿勢情報とともに、第２冗長自由度を示す第２冗長自由度情報が指定される。
【００６３】
第２冗長自由度は、７軸の自由度で動作する第２アームが有する冗長自由度のことである。第２冗長自由度は、この一例において、第２基準平面に対する第２対象平面の角度のことである。
【００６４】
第２対象平面は、ある第２目標位置に第２アーム位置が一致している場合において、第２アームが備える関節のうちの関節Ｊ２２と、関節Ｊ２４と、関節Ｊ２６とのそれぞれを直線により結ぶことによって形成される三角形を含む平面のことである。より具体的には、例えば、第２対象平面は、当該場合において、関節Ｊ２２の重心の位置と、関節Ｊ２４の重心の位置と、関節Ｊ２６の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面である。なお、第２対象平面は、これに代えて、当該場合において、関節Ｊ２２の他の位置と、関節Ｊ２４の他の位置と、関節Ｊ２６の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であってもよい。
【００６５】
第２基準平面は、当該場合において、関節Ｊ２２、関節Ｊ２４、関節Ｊ２６のそれぞれを直線によって結ぶことによって形成される三角形を含む平面のことであり、且つ関節Ｊ２２及び関節Ｊ２６のそれぞれの回動角が第２所定回動角と一致している場合における当該平面のことである。より具体的には、例えば、第２基準平面は、当該場合において、関節Ｊ２２の重心の位置と、関節Ｊ２４の重心の位置と、関節Ｊ２６の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節Ｊ２２及び関節Ｊ２６のそれぞれの回動角が第２所定回動角と一致している場合における当該平面のことである。
【００６６】
第２所定回動角は、如何なる回動角であってもよい。また、関節Ｊ２２の第２所定回動角と、関節Ｊ２６の第２所定回動角とは、この一例において、同じ回動角であるが、これに代えて、互いに異なる回動角であってもよい。なお、第２基準平面は、これに代えて、当該場合において、関節Ｊ２２の他の位置と、関節Ｊ２４の他の位置と、関節Ｊ２６の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節Ｊ２２及び関節Ｊ２６のそれぞれの回動角が第２所定回動角と一致している場合における当該平面のことである構成であってもよい。
【００６７】
ロボット制御装置３０は、動作プログラムによって指定された第２冗長自由度情報が示す第２冗長自由度を、第２アームが有する第２冗長自由度を変化させる目標となる第２目標冗長自由度として特定する。
【００６８】
ロボット制御装置３０は、このようにして特定した第２目標位置と、第２目標冗長自由度とに基づく逆運動学によって、特定した第２目標位置に第２アーム位置が一致している場合、且つ第２目標冗長自由度に第２アームが有する第２冗長自由度が一致している場合における回動角であって第２アームが備える関節Ｊ２１〜関節Ｊ２７それぞれの回動角を算出する。ロボット制御装置３０は、関節Ｊ２１〜関節Ｊ２７のそれぞれを動作させ、関節Ｊ２１〜関節Ｊ２７それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第２アーム位置を、当該第２目標位置と一致させる。この一例において、第２アームの姿勢である第２アーム姿勢は、関節Ｊ２１〜関節Ｊ２７それぞれの回動角の組み合わせによって表される。すなわち、ロボット制御装置３０は、特定した第２目標位置と、第２目標冗長自由度とに基づく逆運動学によって、特定した第２目標位置に第２アーム位置が一致している場合、且つ第２目標冗長自由度に第２アームが有する第２冗長自由度が一致している場合における第２アーム姿勢を算出する。そして、ロボット制御装置３０は、関節Ｊ２１〜関節Ｊ２７のそれぞれを動作させ、現在の第２アーム姿勢を、算出した第２アーム姿勢と一致させるとともに、現在の第２アーム位置を、算出した第２目標位置と一致させる。このようにして、ロボット制御装置３０は、動作プログラムに基づいて第２アームを動作させることができる。なお、第２アーム姿勢は、第２アームに基づく他の値によって表されてもよい。
【００６９】
ここで、動作プログラムに第２冗長自由度をロボット制御装置３０に対して指定させる場合、例えば、第２アーム位置を第２制御点位置情報及び第２制御点姿勢情報が示す第２目標位置と一致させる際に第２アームが備える各アクチュエーターに加わる負荷が最小となる第２冗長自由度を示す第２冗長自由度情報が指定させる方法が知られている。
【００７０】
しかし、このような方法で動作プログラムに第２冗長自由度情報をロボット制御装置３０に対して指定させた場合、ロボット制御装置３０により動作された第２アームの第２アーム姿勢は、ユーザーが所望する第２アーム姿勢と一致しない場合がある。第２アーム姿勢のうちユーザーが所望する第２アーム姿勢は、例えば、図１に示したようにロボット２０の形状が人の形状に対応した形状である場合（すなわち、ロボット２０の形状が人の形状に似た形状である場合）、第２アーム姿勢のうちの人が取ることのできる姿勢に対応した第２アーム姿勢である。ユーザーが所望する第２アーム姿勢と第２アーム姿勢とが一致していない場合、ユーザーは、ロボット２０に不具合が生じる状況、ロボット２０が他の物体と干渉を起こす状況、ロボット２０がロボット２０自身と干渉を起こす状況等を想起してしまうことがある。その結果、ユーザーは、不安を感じながらロボット２０に作業を行わせることになる。
【００７１】
ユーザーに不安を感じさせてしまうことを抑制するため、この一例におけるロボット制御装置３０は、ロボット２０が備える７軸以上の第２アームに対応付けられた第２アーム位置を変化させる目標となる第２目標位置に第２アーム位置が一致した場合において第２アームが取ることが可能な複数の第２アーム姿勢の中で使用可能な第２アーム姿勢が決められている第２使用可否情報に基づいて第２アームを動かす。そして、ロボット制御装置３０は、所定の作業をロボット２０に行わせる。第２使用可否情報は、１以上の第２アーム姿勢のそれぞれを示す第２アーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。第２使用可否情報は、使用可否情報の一例である。また、第２アーム姿勢は、アーム姿勢の一例である。また、第２アーム姿勢情報は、アーム姿勢情報の一例である。これにより、ロボット制御装置３０は、ロボット２０の第２アーム姿勢をユーザーが所望する第２アーム姿勢と一致させながら第２アームを動かすことができる。
【００７２】
以下では、一例として、第２使用可否情報が第１使用可否情報と同じ情報である場合について説明する。この場合、ロボット制御装置３０には、第１アーム姿勢と第２アーム姿勢とを対応づける対応情報が予め記憶される。これにより、ロボット制御装置３０は、第１使用可否情報に基づいて第２アームを動かすことができる。なお、第２使用可否情報は、第１使用可否情報と互いに異なる情報であってもよい。
【００７３】
以下では、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理について説明する。ここで、当該処理のうちの第２アームをロボット制御装置３０が制御する処理は、以下において説明する処理であって第１アームをロボット制御装置３０が制御する処理と同様の処理である。このため、以下では、第２アームをロボット制御装置３０が制御する処理についての説明を省略する。また、ロボットシステム１において、第１アームの役割と第２アームの役割は、逆であってもよい。
【００７４】
＜ロボット制御装置のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。
【００７５】
ロボット制御装置３０は、例えば、ＣＰＵ（Central  Processing  Unit）３１と、記憶部３２と、入力受付部３３と、通信部３４と、表示部３５を備える。これらの構成要素は、バスＢｕｓを介して相互に通信可能に接続されている。また、ロボット制御装置３０は、通信部３４を介してロボット２０と通信を行う。
【００７６】
ＣＰＵ３１は、記憶部３２に格納された各種プログラムを実行する。
記憶部３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、記憶部３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部３２は、ロボット制御装置３０が処理する各種情報、前述の動作プログラムを含む各種プログラム、各種画像等を格納する。
【００７７】
入力受付部３３は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部３３は、表示部３５と一体に構成されたタッチパネルであってもよい。
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
表示部３５は、例えば、液晶ディスプレイパネル、あるいは、有機ＥＬ（ElectroLuminescence）ディスプレイパネルである。
【００７８】
＜ロボット制御装置の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。
【００７９】
ロボット制御装置３０は、記憶部３２と、入力受付部３３と、表示部３５と、制御部３６を備える。
【００８０】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、表示制御部４０と、使用可否情報取得部４２と、使用可否情報生成部４４と、記憶制御部４６と、使用可否判定部４８と、ロボット制御部５０を備える。制御部３６が備えるこれらの機能部は、例えば、ＣＰＵ３１が、記憶部３２に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）やＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００８１】
表示制御部４０は、ユーザーから受け付けた操作に基づいて、表示部３５に表示させる各種の画面を生成する。表示制御部４０は、生成した画面を表示部３５に表示させる。
使用可否情報取得部４２は、記憶部３２に記憶された第１使用可否情報を記憶部３２から読み出す。
使用可否情報生成部４４は、第１使用可否情報を生成する。
記憶制御部４６は、使用可否情報生成部４４が生成した第１使用可否情報を記憶部３２に記憶させる。
【００８２】
使用可否判定部４８は、第１使用可否情報に含まれない第１アーム姿勢情報が示す第１アーム姿勢が、ユーザーが所望する第１アーム姿勢であるか否かを判定する。使用可否判定部４８は、当該第１アーム姿勢が、ユーザーが所望する第１アーム姿勢であると判定した場合、当該第１アーム姿勢が使用可能な第１アーム姿勢であると判定する。一方、使用可否判定部４８は、当該第１アーム姿勢が、ユーザーが所望する第１アーム姿勢ではないと判定した場合、当該第１アーム姿勢が使用不可能な第１アーム姿勢であると判定する。
ロボット制御部５０は、ロボット制御部５０を動作させる。
【００８３】
＜ロボット制御装置が第１使用可否情報を生成する処理＞
以下、図４を参照し、ロボット制御装置３０が第１使用可否情報を生成する処理について説明する。図４は、ロボット制御装置３０が第１使用可否情報を生成する処理の流れの一例を示すフローチャートである。
【００８４】
ロボット制御部５０は、第１使用可否情報を生成する操作をユーザーから受け付けるまで待機する。そして、ロボット制御部５０は、当該操作をユーザーから受け付けた場合（ステップＳ１１０）、ロボット制御装置３０が第１使用可否情報を生成する際に第１制御点Ｔ１を移動させる目標となる１以上の仮想的な点である試験用教示点のそれぞれを示す試験用教示点情報を生成する（ステップＳ１２０）。ここで、ステップＳ１２０の処理について説明する。
【００８５】
試験用教示点には、試験用教示点位置情報と、試験用教示点識別情報とが対応付けられている。試験用教示点位置情報は、試験用教示点の位置を示す情報である。試験用教示点識別情報は、試験用教示点を識別する情報である。この一例において、試験用教示点の位置は、試験用教示点に対応付けられた三次元局所座標系である試験用教示点座標系の原点のロボット座標系ＲＣにおける位置によって表される。この一例において、ある試験用教示点と第１制御点Ｔ１が一致している場合、第１制御点Ｔ１の位置は、試験用教示点の位置と一致している。
【００８６】
ステップＳ１２０において、ロボット制御部５０は、記憶部３２に予め記憶された作業領域を示す作業領域情報を記憶部３２から読み出す。作業領域は、ロボット２０が第１アーム及び第２アームによって作業を行うことが可能な領域である。なお、作業領域は、これに代えて、第１アームと第２アームのいずれか一方のみによって作業を行う場合において当該一方によって作業を行うことが可能な領域であってもよい。ロボット制御部５０は、読み出した作業領域情報に基づいて、当該作業領域情報が示す作業領域を、互いに同じ形状及び大きさの立方体形状の部分領域に仮想的に分割する。そして、ロボット制御部５０は、作業領域を仮想的に分割している直線同士の交点のそれぞれ毎に、交点を試験用教示点として特定し、特定した試験用教示点に交点の位置を示す情報を試験用教示点位置情報として対応付ける。ロボット制御部５０は、特定した試験用教示点のそれぞれを示す試験用教示点情報を生成する。なお、当該部分領域の一部又は全部の形状及び大きさは、互いに同じ形状及び大きさに代えて、互いに異なる形状及び大きさであってもよい。
【００８７】
ステップＳ１２０の処理が行われた後、表示制御部４０は、第１アーム姿勢が、ユーザーが所望する第１アーム姿勢であるか否か（すなわち、使用可能であるか否か）をユーザーから受け付ける画面である判定画面を生成する。そして、表示制御部４０は、生成した判定画面を表示部３５に表示させる（ステップＳ１３０）。ここで、図５を参照し、ステップＳ１３０の処理について説明する。
【００８８】
図５は、判定画面の一例を示す図である。図５に示した判定画面Ｇ１は、表示制御部４０が表示部３５に表示させる判定画面の一例である。判定画面Ｇ１には、例えば、画像表示領域ＲＡと、ボタンＢ１と、ボタンＢ２とが含まれる。なお、判定画面Ｇ１には、これらのＧＵＩ（Graphical  User  Interface）に加えて、他のＧＵＩが含まれる構成であってもよく、これらのＧＵＩに代えて、他のＧＵＩが含まれる構成であってもよい。
【００８９】
画像表示領域ＲＡは、記憶部３２の記憶領域内における仮想空間内に表示制御部４０が配置した仮想的なロボット２０を表す画像である仮想ロボット画像が表示される領域である。表示制御部４０は、ステップＳ１３０において、当該仮想空間を記憶部３２の記憶領域内に生成する。表示制御部４０は、生成した当該仮想空間内に、当該仮想的なロボット２０を生成して配置する。そして、表示制御部４０は、ロボット２０が備える各アクチュエーターから関節Ｊ１１〜関節Ｊ１７それぞれの回動角と、関節Ｊ２１〜関節Ｊ２７それぞれの回動角とを取得する。表示制御部４０は、取得したこれらの回動角に基づいて、当該仮想的なロボット２０の姿勢を現実のロボット２０の現在の姿勢と一致させる。ロボット２０の姿勢は、この一例において、第１アーム姿勢及び第２アーム姿勢のことである。そして、表示制御部４０は、生成した当該仮想空間内における当該仮想的なロボット２０を表す仮想ロボット画像を生成し、生成した仮想ロボット画像を画像表示領域ＲＡに表示させる。なお、仮想ロボット画像は、この一例において、三次元画像であるが、これに代えて、二次元画像であってもよい。
【００９０】
ボタンＢ１は、画像表示領域ＲＡに表示された仮想ロボット画像が表す仮想的なロボット２０の姿勢のうちの第１アーム姿勢が、ユーザーが所望する第１アーム姿勢であることを確定するボタンである。ユーザーがボタンＢ１に選択操作（クリックやタップ等）を行った場合、使用可否判定部４８は、現在の第１アーム姿勢が、ユーザーが所望する第１アーム姿勢であると判定し、その結果、現在の第１アーム姿勢が使用可能であると判定する。
【００９１】
ボタンＢ２は、画像表示領域ＲＡに表示された仮想ロボット画像が表す仮想的なロボット２０の姿勢のうちの第１アーム姿勢が、ユーザーが所望する姿勢ではないことを確定するボタンである。ユーザーがボタンＢ２に選択操作（クリックやタップ等）を行った場合、使用可否判定部４８は、現在の第１アーム姿勢が、ユーザーが所望する第１アーム姿勢ではないと判定し、その結果、現在の第１アームの姿勢が使用不可能であると判定する。
【００９２】
ステップＳ１３０の処理が行われた後、ロボット制御部５０は、ステップＳ１２０において生成した試験用教示点情報が示す１以上の試験用教示点のそれぞれ毎に、ステップＳ１５５〜ステップＳ１９０の処理を繰り返し行う（ステップＳ１５０）。
【００９３】
ステップＳ１５０において試験用教示点が選択された後、ロボット制御部５０は、記憶部３２に予め記憶された試験用姿勢情報を記憶部３２から読み出す。試験用姿勢情報は、１以上の試験用姿勢のそれぞれを示す情報である。試験用姿勢は、第１制御点Ｔ１が取り得る姿勢の中からユーザーが選択した１以上の姿勢のそれぞれである。試験用姿勢は、第１制御点座標系ＴＣ１における各座標軸のロボット座標系ＲＣにおける方向によって表される。当該方向は、ロボット座標系ＲＣにおけるＵ軸、Ｖ軸、Ｗ軸のそれぞれの座標によって表される。当該Ｕ軸は、第１制御点座標系ＴＣ１をロボット座標系ＲＣにおけるＸ軸周りに回転させた場合の回転角を表す座標軸である。また、当該Ｖ軸は、第１制御点座標系ＴＣ１をロボット座標系ＲＣにおけるＹ軸周りに回転させた場合の回転角を表す座標軸である。また、当該Ｗ軸は、第１制御点座標系ＴＣ１をロボット座標系ＲＣにおけるＺ軸周りに回転させた場合の回転角を表す座標軸である。
【００９４】
ロボット制御部５０は、記憶部３２から読み出した試験用姿勢情報が示す１以上の試験用姿勢のそれぞれ毎に、ステップＳ１６０〜ステップＳ１９０の処理を繰り返し行う（ステップＳ１５５）。
【００９５】
ステップＳ１５５において試験用姿勢が選択された後、ロボット制御部５０は、記憶部３２に予め記憶された試験用冗長自由度情報を記憶部３２から読み出す。試験用冗長自由度情報は、１以上の試験用冗長自由度のそれぞれを示す情報である。試験用冗長自由度は、第１冗長自由度として選択可能な回動角の中からユーザーが選択した１以上の回動角のそれぞれである。
【００９６】
ロボット制御部５０は、記憶部３２から読み出した試験用冗長自由度情報が示す１以上の試験用冗長自由度のそれぞれ毎に、ステップＳ１７０〜ステップＳ１９０の処理を繰り返し行う（ステップＳ１６０）。
【００９７】
ロボット制御部５０は、第１アームの第１冗長自由度をステップＳ１６０において選択した試験用冗長自由度と一致させ、第１制御点Ｔ１の姿勢をステップＳ１５５において選択した試験用姿勢と一致させ、第１制御点Ｔ１の位置をステップＳ１５０において選択した試験用教示点の位置と一致させることにより、第１アーム位置及び第１アーム姿勢を変化させる（ステップＳ１７０）。より具体的には、ロボット制御部５０は、ステップＳ１６０において選択した試験用冗長自由度を示す情報を第１冗長自由度情報として指定することにより、第１冗長自由度を当該試験用冗長自由度と一致させる。また、ロボット制御部５０は、ステップＳ１５５において選択した試験用姿勢を示す情報を第１制御点姿勢情報として指定するとともに、ステップＳ１５０において選択した試験用教示点の位置を示す情報を第１制御点位置情報として指定することにより、第１制御点Ｔ１の位置を当該試験用教示点の位置と一致させるとともに第１制御点Ｔ１の姿勢を当該試験用姿勢と一致させる。
【００９８】
次に、表示制御部４０は、ロボット２０が備える各アクチュエーターから関節Ｊ１１〜関節Ｊ１７それぞれの回動角と、関節Ｊ２１〜関節Ｊ２７それぞれの回動角とを取得する。表示制御部４０は、取得したこれらの回動角に基づいて、ステップＳ１３０において生成した仮想的なロボット２０の姿勢を、現実のロボット２０の現在の姿勢と一致させる。そして、表示制御部４０は、仮想的なロボット２０を表す仮想ロボット画像を生成し、生成した仮想ロボット画像を画像表示領域ＲＡに表示させる。ここで、画像表示領域ＲＡに仮想ロボット画像が既に表示されている場合、表示制御部４０は、新たに生成した仮想ロボット画像を画像表示領域ＲＡに表示させ直す、すなわち画像表示領域ＲＡに表示された仮想ロボット画像を更新する（ステップＳ１７５）。
【００９９】
次に、使用可否判定部４８は、表示部３５に表示された判定画面Ｇ１において、ボタンＢ１又はボタンＢ２のいずれか一方に選択操作（クリックやタップ）が行われるまで待機する。使用可否判定部４８は、ボタンＢ１又はボタンＢ２のいずれか一方に選択操作が行われた場合（ステップＳ１８０）、現在の第１アーム姿勢に対応付ける可否情報を生成する。使用可否判定部４８は、ボタンＢ１に選択操作が行われた場合、現在の第１アームの姿勢に対応付ける可否情報として、使用可能を示す可否情報を生成する。一方、使用可否判定部４８は、ボタンＢ２に選択操作が行われた場合、現在の第１アームの姿勢に対応付ける可否情報として、使用不可能を示す可否情報を生成する。使用可否判定部４８が可否情報を生成した後、記憶制御部４６は、現在指定されている第１制御点位置情報、第１制御点姿勢情報を含む第１アーム位置情報を生成する。そして、記憶制御部４６は、生成した第１アーム位置情報と、当該第１アーム位置情報を識別する第１アーム位置識別ＩＤを対応付ける。また、記憶制御部４６は、当該第１アーム位置識別ＩＤと、当該第１アーム位置情報と、現在指定されている第１冗長自由度情報を識別する第１冗長自由度識別ＩＤが対応付けられた当該第１冗長自由度情報とを対応付けた第１アーム姿勢情報を生成する。記憶制御部４６は、生成した第１アーム姿勢情報と、生成した可否情報とを対応付けて、記憶部３２に記憶された第１使用可否情報に格納する（ステップＳ１９０）。ここで、図６を参照し、第１使用可否情報について説明する。
【０１００】
図６は、記憶部３２に記憶された第１使用可否情報の一例を示す図である。図６に示したように、第１使用可否情報は、第１アーム位置識別ＩＤであるｉ（ｉは１以上の整数）と、当該ｉが対応付けられた第１アーム姿勢情報と、当該第１アーム姿勢情報に対応付けられた可否情報とが対応付けられた情報が格納されたテーブルである。また、当該第１アーム姿勢情報には、当該ｉが対応付けられた第１アーム位置情報が含まれている。また、当該第１アーム位置情報には、当該ｉに対応付けられた第１制御点位置情報及び第１制御点姿勢情報が含まれている。また、当該ｉが対応付けられた第１冗長自由度情報には、当該第１冗長自由度情報の第１冗長自由度識別ＩＤであるｊ（ｊは１以上の整数）が対応付けられている。
【０１０１】
図６に示した例では、第１アーム位置識別ＩＤがｉである場合における第１制御点位置情報は、第１制御点Ｔ１の位置を示す３つの座標である。当該３つの座標は、第１制御点Ｔ１の位置であってロボット座標系ＲＣにおけるＸ軸方向の位置を示すＸ座標Ｘｉと、第１制御点Ｔ１の位置であってロボット座標系ＲＣにおけるＹ軸方向の位置を示すＹ座標Ｙｉと、第１制御点Ｔ１の位置であってロボット座標系ＲＣにおけるＺ軸方向の位置を示すＺ座標Ｚｉとのことである。
【０１０２】
また、図６に示した例では、第１アーム位置識別ＩＤがｉである場合における第１制御点姿勢情報は、第１制御点Ｔ１の姿勢を示す３つの座標である。当該３つの座標は、第１制御点Ｔ１の姿勢であってロボット座標系ＲＣにおけるＵ軸方向の姿勢を示すＵ座標Ｕｉと、第１制御点Ｔ１の姿勢であってロボット座標系ＲＣにおけるＶ軸方向の姿勢を示すＶ座標Ｖｉと、第１制御点Ｔ１の姿勢であってロボット座標系ＲＣにおけるＷ軸方向の姿勢を示すＷ座標Ｗｉとのことである。
【０１０３】
また、第１アーム位置識別ＩＤがｉである場合、且つ第１冗長自由度識別ＩＤがｊである場合における第１冗長自由度を示す情報は、回動角φｉｊのことである。また、第１アーム位置識別ＩＤがｉの場合、且つ第１冗長自由度識別ＩＤがｊの場合における可否情報は、可否情報Ｖｉｊのことである。
【０１０４】
具体的には、図６に示した例において第１アーム位置識別ＩＤであるｉが１である場合、且つ第１冗長自由度識別ＩＤであるｊが１である場合における第１アーム姿勢情報は、Ｘ座標Ｘ１＝−２５０．０、Ｙ座標Ｙ１＝５５０．０、Ｚ座標Ｚ１＝−１３０．０、Ｕ座標Ｕ１＝−１８０．０、Ｖ座標Ｖ１＝０．０、Ｗ座標Ｗ１＝−１８０．０、回動角φ１１＝−２０．０のそれぞれを含んでいる。また、当該場合における可否情報Ｖ１１は、使用可能である。なお、可否情報Ｖｉｊは、フラグ、すなわち１又は０によって使用可能又は使用不可能を示す構成であってもよい。
【０１０５】
なお、第１使用可否情報は、図６に示したテーブルに代えて、第１アーム姿勢情報と可否情報と第１アーム位置識別ＩＤとが対応付けられた情報が格納された他の情報であってもよい。また、記憶制御部４６は、記憶部３２に第１使用可否情報が生成されていない場合、記憶部３２に第１使用可否情報を生成し、生成した第１使用可否情報に、第１アーム姿勢情報と可否情報と第１アーム位置識別ＩＤとが対応付けられた情報を格納する。
【０１０６】
ロボット制御装置３０は、ステップＳ１５０〜ステップＳ１９０の処理を繰り返し行うことにより、１以上の試験用教示点、１以上の試験用姿勢、１以上の試験用冗長自由度の組み合わせ毎の第１アーム姿勢情報と第１アーム位置識別ＩＤと可否情報とを対応付けた情報を第１使用可否情報に格納する。これにより、ロボット制御装置３０は、以下において説明する処理であってロボット制御装置３０がロボット２０に所定の作業を行わせる処理を実行することができる。
【０１０７】
＜ロボット制御装置がロボットに所定の作業を行わせる処理の具体例１＞
以下、図７を参照し、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の具体例１について説明する。図７は、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の具体例１の流れを示すフローチャートである。
【０１０８】
ロボット制御部５０は、記憶部３２に予め記憶された作業用教示点情報を記憶部３２から読み出す（ステップＳ２１０）。作業用教示点情報は、１以上の作業用教示点のそれぞれを示す情報である。作業用教示点は、ロボット制御装置３０がロボット２０に所定の作業を行わせる際に第１制御点Ｔ１を移動させる目標となる１以上の仮想的な点である。作業用教示点には、作業用教示点位置情報と、作業用教示点姿勢情報と、作業用教示点識別情報とが対応付けられている。作業用教示点位置情報は、作業用教示点の位置を示す情報である。作業用教示点姿勢情報は、作業用教示点の姿勢を示す情報である。作業用教示点識別情報は、作業用教示点を識別する情報である。この一例において、作業用教示点の位置は、作業用教示点に対応付けられた三次元局所座標系である作業用教示点座標系の原点のロボット座標系ＲＣにおける位置によって表される。また、作業用教示点の姿勢は、作業用教示点座標系における各座標軸のロボット座標系ＲＣにおける方向によって表される。この一例において、ある作業用教示点と第１制御点Ｔ１が一致している場合、第１制御点Ｔ１の位置及び姿勢（すなわち、第１アーム位置）は、作業用教示点の位置及び姿勢と一致している。
【０１０９】
作業用教示点情報は、ユーザーによる教示装置を用いたオンラインティーチングやダイレクトティーチング等によってロボット制御装置３０の記憶部３２に予め記憶される。ロボット制御装置３０では、前述した動作プログラムにより作業用教示点が１つずつ指定された場合、指定された作業用教示点の位置を示す情報が第１教示点位置情報として指定され、指定された作業用教示点の姿勢を示す情報が第１教示点姿勢情報として指定される。
【０１１０】
ステップＳ２１０の処理が行われた後、使用可否情報取得部４２は、記憶部３２に予め記憶された第１使用可否情報を記憶部３２から読み出す（ステップＳ２２０）。次に、使用可否情報生成部４４は、ステップＳ２１０において読み出した作業用教示点情報が示す１以上の作業用教示点毎にステップＳ２３５〜ステップＳ３２０の処理を繰り返し行う（ステップＳ２３０）。
【０１１１】
ステップＳ２３０において作業用教示点が選択された後、使用可否情報生成部４４は、記憶部３２に予め記憶された作業用冗長自由度情報を記憶部３２から読み出す。作業用冗長自由度情報は、１以上の作業用冗長自由度のそれぞれを示す情報である。作業用冗長自由度は、ロボット２０に所定の作業を行わせる際に第１冗長自由度として選択可能な回動角の中からユーザーが選択した１以上の回動角のそれぞれである。作業用冗長自由度は、試験用冗長自由度と同じであってもよく、試験用冗長自由度と異なっていてもよい。
【０１１２】
使用可否情報生成部４４は、記憶部３２から読み出した作業用冗長自由度情報が示す１以上の作業用冗長自由度のそれぞれ毎に、ステップＳ２４０〜ステップＳ３２０の処理を繰り返し行う（ステップＳ２３５）。
【０１１３】
使用可否情報生成部４４は、ステップＳ２２０において読み出した第１使用可否情報に含まれる第１アーム位置識別ＩＤを１つずつ選択し、選択した第１アーム位置識別ＩＤ毎にステップＳ２５０〜ステップＳ２７５の処理を繰り返し行う（ステップＳ２４０）。
【０１１４】
使用可否情報生成部４４は、第１使用可否情報に含まれる第１アーム姿勢情報のうちステップＳ２４０において読み出した第１アーム位置識別ＩＤが示す第１アーム位置情報に含まれる第１制御点位置情報及び第１制御点姿勢情報が示す位置及び姿勢と、ステップＳ２３０において選択した作業用教示点の位置及び姿勢との差分である第１差分を算出する（ステップＳ２５０）。当該第１制御点位置情報及び当該第１制御点姿勢情報が示す位置及び姿勢は、当該第１制御点位置情報が示す位置及び当該第１制御点姿勢情報が示す姿勢のことである。ここで、ステップＳ２５０の処理について説明する。
【０１１５】
使用可否情報生成部４４は、ステップＳ２４０において読み出した第１アーム位置識別ＩＤが示す第１アーム位置情報に含まれる第１制御点位置情報及び第１制御点姿勢情報が示す位置及び姿勢に基づく第１アーム位置ベクトルと、ステップＳ２３０において選択した作業用教示点の位置及び姿勢に基づく作業用教示点位置姿勢ベクトルとの差分ベクトルのノルムを第１差分として算出する。第１アーム位置ベクトルは、当該第１制御点位置情報が示す位置を表す３つの座標（すなわち、Ｘ座標Ｘｉ、Ｙ座標Ｙｉ、Ｚ座標Ｚｉ）と当該第１制御点姿勢情報が示す姿勢を表す３つの座標（すなわち、Ｕ座標Ｕｉ、Ｖ座標Ｖｉ、Ｗ座標Ｗｉ）のそれぞれを成分として、Ｘ座標Ｘｉ、Ｙ座標Ｙｉ、Ｚ座標Ｚｉ、Ｕ座標Ｕｉ、Ｖ座標Ｖｉ、Ｗ座標Ｗｉの順に有するベクトルである。作業用教示点位置姿勢ベクトルは、当該作業用教示点の位置及び姿勢を示すＸ座標、Ｙ座標、Ｚ座標、Ｕ座標、Ｖ座標、Ｗ座標のそれぞれを成分として、Ｘ座標、Ｙ座標、Ｚ座標、Ｕ座標、Ｖ座標、Ｗ座標の順に有するベクトルである。なお、第１差分は、第１アーム位置ベクトルと作業用教示点位置姿勢ベクトルとの差分ベクトルのノルムに代えて、当該第１制御点位置情報が示す位置を表す３つの座標と当該第１制御点姿勢情報が示す姿勢を表す３つの座標のそれぞれと、当該作業用教示点の位置及び姿勢を示すＸ座標、Ｙ座標、Ｚ座標、Ｕ座標、Ｖ座標、Ｗ座標のそれぞれとに基づく他の値として使用可否情報生成部４４により算出される構成であってもよい。
【０１１６】
ステップＳ２５０の処理が行われた後、使用可否情報生成部４４は、ステップＳ２５０において算出した第１差分が所定の第１閾値未満であるか否かを判定する（ステップＳ２６０）。ここで、ステップＳ２６０が最初に実行される場合において、使用可否情報生成部４４は、この一例において、第１差分として得られる最大の値以上の値を第１閾値として用いる。当該最大の値は、図４に示したステップＳ１２０の処理において作業領域が分割された各部分領域のうちの最大の大きさの部分領域の形状及び大きさから幾何学的に算出することが可能である。なお、ステップＳ２６０が最初に実行される場合における第１閾値は、これに代えて、他の値であってもよい。ただし、当該第１閾値は、第１差分として得られる最小の値以下の値であってはならない。
【０１１７】
第１差分が所定の第１閾値以上であると判定した場合（ステップＳ２６０−ＮＯ）、使用可否情報生成部４４は、ステップＳ２４０に遷移し、次の第１アーム位置識別ＩＤを選択する。ただし、ステップＳ２４０において未選択の第１アーム位置識別ＩＤが存在しない場合、使用可否情報生成部４４は、ステップＳ２８０に遷移する。一方、第１差分が所定の第１閾値未満であると判定した場合（ステップＳ２６０−ＹＥＳ）、使用可否情報生成部４４は、ステップＳ２４０において選択した第１アーム位置識別ＩＤを、対象第１アーム位置識別ＩＤとして特定する（ステップＳ２７０）。ここで、対象第１アーム位置識別ＩＤが既に特定されている場合、対象第１アーム位置識別ＩＤを更新し、当該第１アーム位置識別ＩＤを新たな対象第１アーム位置識別ＩＤとして特定し直す。
【０１１８】
次に、使用可否情報生成部４４は、前述の第１閾値を、ステップＳ２５０において算出した第１差分に更新する（ステップＳ２７５）。これにより、次にステップＳ２６０が実行される際に使用可否情報生成部４４が用いる第１閾値は、当該第１差分に変更される。そして、使用可否情報生成部４４は、ステップＳ２４０に遷移し、次の第１アーム位置識別ＩＤを選択する。ただし、ステップＳ２４０において未選択の第１アーム位置識別ＩＤが存在しない場合、使用可否情報生成部４４は、ステップＳ２８０に遷移する。
【０１１９】
このように、ステップＳ２４０〜ステップＳ２７５の処理を繰り返し行うことにより、使用可否情報生成部４４は、ステップＳ２３０において選択した作業用教示点と第１制御点Ｔ１とが一致した場合における第１アーム位置と最も近い（差が小さい）第１アーム位置を示す第１制御点位置情報及び第１制御点姿勢情報を含む第１アーム位置情報の第１アーム位置識別ＩＤを特定することができる。当該第１アーム位置情報は、ステップＳ２２０において読み出された第１使用可否情報に含まれる第１アーム位置情報のことである。
【０１２０】
ステップＳ２４０〜ステップＳ２７５の繰り返し処理が行われた後、使用可否情報生成部４４は、ステップＳ２２０において読み出した第１使用可否情報に含まれる第１冗長自由度識別ＩＤのうちの重複していない第１冗長自由度識別ＩＤのそれぞれ毎に、ステップＳ２９０〜ステップＳ３１５の処理を繰り返し行う（ステップＳ２８０）。
【０１２１】
使用可否情報生成部４４は、ステップＳ２３５において選択した作業用冗長自由度と、ステップＳ２８０において選択した第１冗長自由度識別ＩＤが示す第１冗長自由度との差分の二乗の平方根を第２差分として算出する（ステップＳ２９０）。
【０１２２】
次に、使用可否情報生成部４４は、ステップＳ２９０において算出した第２差分が所定の第２閾値未満であるか否かを判定する（ステップＳ３００）。ここで、ステップＳ３００が最初に実行される場合において、使用可否情報生成部４４は、この一例において、３６０°を第２閾値として用いる。なお、ステップＳ３００が最初に実行される場合における第２閾値は、これに代えて、他の値であってもよいが、以下において説明する処理において、ステップＳ２３５において選択した作業用冗長自由度に最も近い（差が小さい）第１冗長自由度を示す第１冗長自由度識別ＩＤを特定するために、３６０°に近い値であることが望ましい。
【０１２３】
第２差分が所定の第２閾値以上であると判定した場合（ステップＳ３００−ＮＯ）、使用可否情報生成部４４は、ステップＳ２８０に遷移し、次の第１冗長自由度識別ＩＤを選択する。ただし、ステップＳ２８０において未選択の第１冗長自由度識別ＩＤが存在しない場合、使用可否情報生成部４４は、ステップＳ３２０に遷移する。一方、第２差分が所定の第２閾値未満であると判定した場合（ステップＳ３００−ＹＥＳ）、使用可否情報生成部４４は、ステップＳ２８０において選択した第１冗長自由度識別ＩＤを、対象第１冗長自由度識別ＩＤとして特定する（ステップＳ３１０）。ここで、対象第１冗長自由度識別ＩＤが既に特定されている場合、対象第１冗長自由度識別ＩＤを更新し、当該第１冗長自由度識別ＩＤを新たな対象第１冗長自由度識別ＩＤとして特定し直す。
【０１２４】
次に、使用可否情報生成部４４は、前述の第２閾値を、ステップＳ２９０において算出した第２差分に更新する（ステップＳ３１５）。これにより、次にステップＳ３００が実行される際に使用可否情報生成部４４が用いる第２閾値は、当該第２差分に変更される。そして、使用可否情報生成部４４は、ステップＳ２８０に遷移し、次の第１冗長自由度識別ＩＤを選択する。ただし、ステップＳ２８０において未選択の第１冗長自由度識別ＩＤが存在しない場合、使用可否情報生成部４４は、ステップＳ３２０に遷移する。
【０１２５】
このように、ステップＳ２８０〜ステップＳ３１５の処理を繰り返し行うことにより、使用可否情報生成部４４は、ステップＳ２３５において選択した作業用冗長自由度と最も近い（差が小さい）第１冗長自由度を示す第１冗長自由度識別ＩＤを特定することができる。当該第１冗長自由度識別ＩＤは、ステップＳ２８０において選択可能な第１冗長自由度識別ＩＤのことである。
【０１２６】
ステップＳ２８０〜ステップＳ３１５の繰り返し処理が行われた後、使用可否情報生成部４４は、ステップＳ２７０において特定した対象第１アーム位置識別ＩＤと、ステップＳ３１０において特定した対象第１冗長自由度識別ＩＤとの両方を含む第１アーム姿勢情報に対応付けられた可否情報を、ステップＳ２２０において読み出した第１使用可否情報の中から特定する。また、使用可否情報生成部４４は、特定した可否情報に基づいて、ステップＳ２３０において選択した作業用教示点と第１制御点Ｔ１とが一致している場合、且つステップＳ２３５において選択した作業用冗長自由度と第１アームの第１冗長自由度とが一致している場合の第１アーム姿勢を示す第１アーム姿勢情報を生成する。使用可否情報生成部４４は、生成した第１アーム姿勢情報に、特定した可否情報と、当該第１アーム姿勢情報に含まれるアーム位置情報を識別する第１アーム位置識別ＩＤとを対応付けた情報を第１使用可否情報に格納する（ステップＳ３２０）。当該第１アーム位置識別ＩＤは、第１使用可否情報において他の第１アーム位置識別ＩＤと重複することがないＩＤである。
【０１２７】
このように、ステップＳ２３０〜ステップＳ３２０の処理を繰り返すことにより、ロボット制御装置３０は、ステップＳ２１０において読み出した作業用教示点情報が示す１以上の作業用教示点のそれぞれに第１制御点Ｔ１が一致している場合に取り得る第１アーム姿勢の使用可否を示す情報（すなわち、ステップＳ３２０において第１使用可否情報に格納した情報）を含む第１使用可否情報を生成することができる。これにより、ロボット制御装置３０は、ロボット２０に所定の作業を行わせる際、第１使用可否情報に基づいて、第１アームにユーザーが所望する第１アーム姿勢を取らせながら所定の作業をロボット２０に行わせることができる。
【０１２８】
ステップＳ２３０〜ステップＳ３２０の繰り返し処理が行われた後、ロボット制御部５０は、記憶部３２に予め記憶された動作プログラムと、記憶部３２に記憶された作業用教示点情報及び第１使用可否情報とに基づいて、ロボット２０に所定の作業を行わせ（ステップＳ３５０）、処理を終了する。具体的には、ステップＳ３５０において、ロボット制御装置３０では、当該動作プログラムによって当該作業用教示点情報が示す１以上の作業用教示点を１つずつ選択され、選択された作業用教示点の位置を示す情報が第１制御点位置情報として指定されるとともに当該作業用教示点の姿勢を示す情報が第１制御点姿勢情報として指定される。また、ロボット制御装置３０は、当該第１使用可否情報に含まれる第１アーム位置情報のうち、指定された第１制御点位置情報及び第１制御点姿勢情報を含む第１アーム位置情報を特定する。ロボット制御装置３０は、特定した第１アーム位置情報に対応付けられた第１冗長自由度情報のうち、使用可能を示す可否情報が対応付けられた第１冗長自由度情報を特定する。ロボット制御装置３０は、特定した第１冗長自由度情報から所定の適合条件を満たす第１冗長自由度情報を選択する。適合条件は、以下に示した３つの条件のいずれかを満たすことである。
【０１２９】
条件１）選択可能な第１冗長自由度情報が１つのみであること
条件２）第１アームを動作させる際に第１アームが備える各関節の回転変化量を足し合わせた値が最小となること
条件３）第１アームを動作させる際に第１アームが備える各アクチュエーターに加わる負荷が最小となること
【０１３０】
なお、適合条件は、他の条件であってもよい。例えば、ロボット制御装置３０は、特定した第１冗長自由度情報からランダムに１つの第１冗長自由度情報を選択する構成であってもよい。
【０１３１】
ロボット制御装置３０は、選択した第１冗長自由度情報が示す第１冗長自由度と、指定された第１制御点位置情報が示す位置と、指定された第１制御点姿勢情報が示す姿勢とに基づく逆運動学によって、当該位置及び当該姿勢である第１目標位置に第１アーム位置が一致している場合、且つ当該第１冗長自由度である第１目標冗長自由度に第１アームが有する第１冗長自由度が一致している場合における回動角であって第１アームが備える関節Ｊ１１〜関節Ｊ１７それぞれの回動角を算出する。ロボット制御装置３０は、関節Ｊ１１〜関節Ｊ１７のそれぞれを動作させ、関節Ｊ１１〜関節Ｊ１７それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第１アーム位置を、当該第１目標位置と一致させる。これにより、ロボット制御装置３０は、ロボット２０の第１アーム姿勢をユーザーが所望する第１アーム姿勢と一致させながら第１アームを動かすことができる。
【０１３２】
＜ロボット制御装置がロボットに所定の作業を行わせる処理の具体例２＞
以下、図８〜図１２を参照し、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の具体例２について説明する。
【０１３３】
ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の具体例２では、ロボット制御装置３０は、図４に示したフローチャートの処理によって生成された第１使用可否情報に含まれる１以上の第１アーム姿勢情報のそれぞれと、当該第１アーム姿勢情報のそれぞれに対応付けられた可否情報が示す使用可能又は使用不可能との対応関係である対象対応関係の機械学習を行う。この一例では、ロボット制御装置３０は、当該機械学習を、教師あり機械学習の手法を用いて行う。より具体的には、ロボット制御装置３０は、当該手法として、サポートベクターマシンを用いる。そして、ロボット制御装置３０は、機械学習が行われた対象対応関係に基づいて、第１使用可否情報に含まれていない第１アーム姿勢情報に対応付ける可否情報として使用可能と使用不可能とのいずれを示す可否情報が尤もらしいかを判定する。ロボット制御装置３０は、この判定の結果に基づいて、当該第１アーム姿勢情報と、当該第１アーム姿勢情報に対応付ける可否情報として尤もらしいと判定された可否情報とが対応付けられた情報を第１使用可否情報に格納する。これにより、ロボット制御装置３０は、第１使用可否情報に基づいて、第１アーム姿勢をユーザーが所望する第１アーム姿勢と一致させながらロボット２０に所定の作業を行わせることができる。なお、サポートベクターマシンについては、公知技術であるため詳細な説明を省略する。また、対象対応関係の機械学習を行う手法は、サポートベクターマシン等の教師あり機械学習の手法に代えて、他の手法を用いてもよい。また、教師あり機械学習の手法は、サポートベクターマシンに代えて、他の手法を用いてもよい。
【０１３４】
図８は、対象対応関係の機械学習を行うロボット制御装置３０の処理の流れの一例を示すフローチャートである。
【０１３５】
使用可否判定部４８は、記憶部３２に予め記憶された第１使用可否情報を記憶部３２から読み出す（ステップＳ３６０）。当該第１使用可否情報は、図４に示したフローチャートの処理によってロボット制御装置３０が記憶部３２に記憶させた第１使用可否情報である。次に、使用可否判定部４８は、ステップＳ３６０において読み出した第１使用可否情報に含まれる第１アーム姿勢情報のそれぞれを回動角情報へ変換した第１使用可否情報である変換後第１使用可否情報を生成する（ステップＳ３７０）。ここで、図９を参照し、ステップＳ３７０の処理について説明する。
【０１３６】
図９は、変換後第１使用可否情報の一例を示す図である。図９に示した例では、変換後第１使用可否情報は、図６に示した第１アーム位置識別ＩＤであるｉと第１冗長自由度識別ＩＤであるｊとの組み合わせのそれぞれを識別する第１アーム姿勢識別ＩＤであるｋと、変換後第１アーム姿勢情報であるθ１〜θ７と、当該ｋに対応付けられた可否情報Ｖｋとが対応付けられて格納されたテーブルである。ここで、θ１は、関節Ｊ１１の回動角であり、θ２は、関節Ｊ１２の回動角であり、θ３は、関節Ｊ１３の回動角であり、θ４は、関節Ｊ１４の回動角であり、θ５は、関節Ｊ１５の回動角であり、θ６は、関節Ｊ１６の回動角であり、θ７は、関節Ｊ１７の回動角である。
【０１３７】
例えば、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードは、図６に示したテーブルに含まれるレコードのうち第１アーム位置識別ＩＤであるｉが１、第１冗長自由度識別ＩＤであるｊが１のレコードに対応している。すなわち、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードに含まれるθ１〜θ７のそれぞれは、図６に示したテーブルに含まれるレコードのうち第１アーム位置識別ＩＤであるｉが１、第１冗長自由度識別ＩＤであるｊが１のレコードに含まれる第１アーム姿勢情報及び第１冗長自由度情報に基づく逆運動学によって算出された関節Ｊ１１〜関節Ｊ１７それぞれの回動角である。
【０１３８】
また、例えば、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが２のレコードは、図６に示したテーブルに含まれるレコードのうち第１アーム位置識別ＩＤであるｉが１、第１冗長自由度識別ＩＤであるｊが２のレコードに対応している。すなわち、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが２のレコードに含まれるθ１〜θ７のそれぞれは、図６に示したテーブルに含まれるレコードのうち第１アーム位置識別ＩＤであるｉが１、第１冗長自由度識別ＩＤであるｊが２のレコードに含まれる第１アーム姿勢情報及び第１冗長自由度情報に基づく逆運動学によって算出された関節Ｊ１１〜関節Ｊ１７それぞれの回動角である。
【０１３９】
ステップＳ３７０の処理が行われた後、使用可否判定部４８は、ステップＳ３７０において生成した変換後第１使用可否情報に含まれる変換後第１アーム姿勢情報を、当該変換後第１アーム姿勢情報が示す第１アーム姿勢を表す１以上のパラメーターに変換した変換後第１使用可否情報であるパラメーター情報を生成する（ステップＳ３８０）。以下では、一例として、ステップＳ３８０におけるロボット制御装置３０が、ステップＳ３７０において生成した変換後第１使用可否情報に含まれる変換後第１アーム姿勢情報を、当該変換後第１アーム姿勢情報が示す第１アーム姿勢を表す６種類のパラメーターに変換した変換後第１使用可否情報であるパラメーター情報を生成する場合について説明する。当該６種類のパラメーターは、前述したサポートベクターマシンに学習させるパラメーター（すなわち、前述の対象対応関係）の一部である。ここで、図１０及び図１１を参照し、ステップＳ３７０の処理について説明する。
【０１４０】
使用可否判定部４８は、記憶部３２に予め記憶された第１アームを構成する各部材の形状や大きさ等を示す第１アーム情報を記憶部３２から読み出す。使用可否判定部４８は、読み出した第１アーム情報と、ステップＳ３７０において生成した変換後第１使用可否情報に含まれる変換後第１アーム姿勢情報とに基づいて、当該変換後第１アーム姿勢情報が示す第１アーム姿勢におけるパラメーターであって以下の７種類のパラメーターを算出する。
【０１４１】
・関節Ｊ１２の位置
・関節Ｊ１２の姿勢
・関節Ｊ１４の位置
・関節Ｊ１４の姿勢
・関節Ｊ１６の位置
・関節Ｊ１６の姿勢
・関節Ｊ１７の姿勢
【０１４２】
関節Ｊ１２の位置は、関節Ｊ１２の重心に対応付けられた三次元局所座標系である関節座標系ＪＴ１２の原点のロボット座標系ＲＣにおける位置を表す３つの座標（ロボット座標系ＲＣにおける当該位置を表すＸ座標ＸＪ１２、Ｙ座標ＹＪ１２、Ｚ座標ＺＪ１２）である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。
【０１４３】
関節Ｊ１２の姿勢は、関節座標系ＪＴ１２におけるＺ軸のロボット座標系ＲＣにおける方向を表す３つの座標（ロボット座標系ＲＣにおける当該方向を表すＵ座標ＵＪ１２、Ｖ座標ＶＪ１２、Ｗ座標ＷＪ１２）である。この一例において、当該Ｚ軸の方向は、関節Ｊ１２の回動軸に沿った方向のうち関節Ｊ１３側の方向と一致している。なお、当該Ｚ軸の方向は、関節Ｊ１２の回動軸に沿った方向のうち関節Ｊ１３側の方向と一致していない構成であってもよい。
【０１４４】
関節Ｊ１４の位置は、関節Ｊ１４の重心に対応付けられた三次元局所座標系である関節座標系ＪＴ１４の原点のロボット座標系ＲＣにおける位置を表す３つの座標（ロボット座標系ＲＣにおける当該位置を表すＸ座標ＸＪ１４、Ｙ座標ＹＪ１４、Ｚ座標ＺＪ１４）である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。この一例において、当該Ｚ軸の方向は、関節Ｊ１４の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Ｚ軸の方向は、関節Ｊ１４の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
【０１４５】
関節Ｊ１４の姿勢は、関節座標系ＪＴ１４におけるＺ軸のロボット座標系ＲＣにおける方向を表す３つの座標（ロボット座標系ＲＣにおける当該方向を表すＵ座標ＵＪ１４、Ｖ座標ＶＪ１４、Ｗ座標ＷＪ１４）である。この一例において、当該Ｚ軸の方向は、関節Ｊ１４の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Ｚ軸の方向は、関節Ｊ１４の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
【０１４６】
関節Ｊ１６の位置は、関節Ｊ１６の重心に対応付けられた三次元局所座標系である関節座標系ＪＴ１６の原点のロボット座標系ＲＣにおける位置を表す３つの座標（ロボット座標系ＲＣにおける当該位置を表すＸ座標ＸＪ１６、Ｙ座標ＹＪ１６、Ｚ座標ＺＪ１６）である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。
【０１４７】
関節Ｊ１６の姿勢は、関節座標系ＪＴ１６におけるＺ軸のロボット座標系ＲＣにおける方向を表す３つの座標（ロボット座標系ＲＣにおける当該方向を表すＵ座標ＵＪ１６、Ｖ座標ＶＪ１６、Ｗ座標ＷＪ１６）である。この一例において、当該Ｚ軸の方向は、関節Ｊ１６の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Ｚ軸の方向は、関節Ｊ１６の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
【０１４８】
関節Ｊ１７の姿勢は、関節Ｊ１７の重心に対応付けられた三次元局所座標系である関節座標系ＪＴ１７におけるＺ軸のロボット座標系ＲＣにおける方向を表す３つの座標（ロボット座標系ＲＣにおける当該方向を表すＵ座標ＵＪ１７、Ｖ座標ＶＪ１７、Ｗ座標ＷＪ１７）である。この一例において、当該Ｚ軸の方向は、関節Ｊ１７の回動軸に沿った方向のうち第１エンドエフェクターＥ１側の方向と一致している。この一例において、関節座標系ＪＴ１７の原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。また、当該Ｚ軸の方向は、関節Ｊ１７の回動軸に沿った方向のうち第１エンドエフェクターＥ１側の方向と一致していない構成であってもよい。
【０１４９】
ここで、図１０は、第１アームの論理的な構造の一例を示す図である。図１０に示した点Ｐ２は、関節座標系ＪＴ１２の原点のロボット座標系ＲＣにおける位置を表す。また、矢印Ｎ２は、関節座標系ＪＴ１２におけるＺ軸のロボット座標系ＲＣにおける方向を表す。また、点Ｐ４は、関節座標系ＪＴ１４の原点のロボット座標系ＲＣにおける位置を表す。また、矢印Ｎ４は、関節座標系ＪＴ１４におけるＺ軸のロボット座標系ＲＣにおける方向を表す。また、点Ｐ６は、関節座標系ＪＴ１６の原点のロボット座標系ＲＣにおける位置を表す。また、矢印Ｎ６は、関節座標系ＪＴ１６におけるＺ軸のロボット座標系ＲＣにおける方向を表す。また、矢印Ｎ７は、関節座標系ＪＴ１７におけるＺ軸のロボット座標系ＲＣにおける方向を表す。なお、前述の７種類のパラメーターの一部又は全部は、変換後第１アーム姿勢情報が示す第１アーム姿勢を表す他のパラメーターであってもよい。
【０１５０】
使用可否判定部４８は、記憶部３２から読み出した第１アーム情報と、ステップＳ３７０において生成した変換後第１使用可否情報に含まれる変換後第１アーム姿勢情報とに基づいて、当該変換後第１アーム姿勢情報が示す第１アーム姿勢を表す前述の７種類のパラメーターに変換した変換後第１使用可否情報であるパラメーター情報を生成する。ここで、図１１は、パラメーター情報の一例を示す図である。
【０１５１】
例えば、図１１に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードは、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードに対応している。すなわち、図１１に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードに含まれる７種類のパラメーターのそれぞれは、図９に示したテーブルに含まれるレコードのうち第１アーム姿勢識別ＩＤであるｋが１のレコードに含まれる変換後第１アーム姿勢情報を、ロボット制御装置３０が変換したパラメーターである。
【０１５２】
ステップＳ３８０の処理が行われた後、使用可否判定部４８は、記憶部３２に予め記憶されたサポートベクターマシンに対して、ステップＳ３８０において生成したパラメーター情報に含まれる第１アーム姿勢識別ＩＤのそれぞれに対応付けられたパラメーター及び可否情報の組み合わせのそれぞれを対象対応関係として学習させ（ステップＳ３９０）、処理を終了する。
【０１５３】
ロボット制御装置３０は、このようにしてサポートベクターマシンに対象対応関係を学習させる。そして、ロボット制御装置３０は、対象対応関係を学習した後のサポートベクターマシンを用いて、ロボット２０に所定の作業を行わせる。
【０１５４】
図１２は、ロボット制御装置３０がロボット２０に所定の作業を行わせる処理の流れの他の例を示すフローチャートである。
【０１５５】
ロボット制御部５０は、記憶部３２に予め記憶された作業用教示点情報を記憶部３２から読み出す（ステップＳ４１０）。次に、使用可否情報生成部４４は、ステップＳ２１０において読み出した作業用教示点情報が示す１以上の作業用教示点毎にステップＳ４２５〜ステップＳ４７０の処理を繰り返し行う（ステップＳ４２０）。
【０１５６】
ステップＳ４２０において作業用教示点が選択された後、使用可否情報生成部４４は、記憶部３２に予め記憶された作業用冗長自由度情報を記憶部３２から読み出す。使用可否情報生成部４４は、読み出した作業用冗長自由度情報が示す１以上の作業用冗長自由度のそれぞれ毎に、ステップＳ４４０〜ステップＳ４７０の処理を繰り返し行う（ステップＳ４２５）。
【０１５７】
使用可否情報生成部４４は、ステップＳ４２０において選択した作業用教示点に第１制御点Ｔ１を一致させた場合、且つステップＳ４２５において選択した作業用冗長自由度に第１アームが有する第１冗長自由度を一致させた場合における関節Ｊ１１〜関節Ｊ１７それぞれの回動角を逆運動学によって算出する（ステップＳ４４０）。次に、使用可否情報生成部４４は、記憶部３２から前述の第１アーム情報を読み出す。そして、使用可否情報生成部４４は、読み出した第１アーム情報と、ステップＳ４４０において算出した回動角とに基づいて、当該回動角を前述の７種類のパラメーターに変換する（ステップＳ４５０）。
【０１５８】
次に、使用可否判定部４８は、ステップＳ４５０において算出されたパラメーターを、記憶部３２に記憶されたサポートベクターマシンに入力し、当該パラメーターが表す第１アーム姿勢に対応付ける可否情報として使用可能又は使用不可能のいずれを示す可否情報が尤もらしいかを示す情報をサポートベクターマシンに出力させる。使用可否判定部４８は、この出力に基づいて、当該第１アーム姿勢に対応付ける可否情報が使用可能又は使用不可能のいずれを示す可否情報であるかを判定する（ステップＳ４６０）。すなわち、当該サポートベクターマシンは、当該パラメーターが入力された場合に、当該パラメーターが表す第１アーム姿勢に対応付ける可否情報として使用可能又は使用不可能のいずれを示す可否情報が尤もらしいかを示す情報を出力する関数である。
【０１５９】
次に、使用可否情報生成部４４は、ステップＳ４６０において行われた判定の結果に基づく可否情報と、ステップＳ４２０において選択された作業用教示点の位置及び姿勢を示す第１アーム位置情報と、当該第１アーム位置情報を識別する第１アーム位置識別ＩＤと、ステップＳ４２５において選択された作業用冗長自由度を示す第１冗長自由度情報を識別する第１冗長自由度識別ＩＤが対応付けられた第１冗長自由度情報とを対応付けた情報を、第１使用可否情報に格納する。当該第１アーム位置識別ＩＤは、第１使用可否情報において他の第１アーム位置識別ＩＤと重複することがないＩＤである。また、当該第１冗長自由度識別ＩＤは、第１使用可否情報において他の第１冗長自由度識別ＩＤと重複することがないＩＤである。そして、使用可否情報生成部４４は、ステップＳ４２５に遷移し、次の作業用冗長自由度を選択する。ただし、ステップＳ４２５において未選択の作業用冗長自由度が存在しない場合、使用可否情報生成部４４は、ステップＳ４２０に遷移し、次の作業用教示点を選択する。ただし、ステップＳ４２０において未選択の作業用教示点が存在しない場合、ロボット制御部５０は、ステップＳ４８０に遷移する。
【０１６０】
ステップＳ４２０〜ステップＳ４７０の繰り返し処理が行われた後、ロボット制御部５０は、記憶部３２に予め記憶された動作プログラムと、記憶部３２に記憶された作業用教示点情報及び第１使用可否情報とに基づいて、ロボット２０に所定の作業を行わせ（ステップＳ４８０）、処理を終了する。なお、ステップＳ４８０の処理は、図７に示したステップＳ３５０の処理と同様な処理であるため説明を省略する。
【０１６１】
このように、ロボット制御装置３０は、ロボット２０が備える７軸以上の第１アームに対応付けられた第１アーム位置を変化させる目標となる第１目標位置に第１アーム位置が一致した場合において第１アームが取ることが可能な複数の第１アーム姿勢の中で使用可能な第１アーム姿勢が決められている第１使用可否情報に基づいて第１アームを動かす。そして、ロボット制御装置３０は、所定の作業をロボット２０に行わせる。その結果、ロボット制御装置３０は、ロボット２０の第１アーム姿勢をユーザーが所望する第１アーム姿勢と一致させながら第１アームを動かすことができる。
【０１６２】
以上のように、ロボット制御装置３０は、ロボット（この一例において、ロボット２０）が備える７軸以上のアーム（この一例において、第１アーム）に対応付けられたアーム位置を変化させる目標となる目標位置（この一例において、第１目標位置）にアーム位置（この一例において、第１アーム位置）が一致した場合においてアームが取ることが可能な複数のアーム姿勢（この一例において、第１アーム姿勢）の中で使用可能なアーム姿勢が決められている使用可否情報（この一例において、第１使用可否情報）に基づいてアームを動かす。これにより、ロボット制御装置３０は、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６３】
また、ロボット制御装置３０において、使用可否情報は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報（この一例において、第１アーム姿勢情報）に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。これにより、ロボット制御装置３０は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた使用可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６４】
また、ロボット制御装置３０は、受け付けたアーム姿勢情報であって使用可否情報に含まれていないアーム姿勢情報を、受け付けた可否情報と対応付けて使用可否情報に記憶する。これにより、ロボット制御装置３０は、受け付けたアーム姿勢情報と、受け付けた可否情報とに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６５】
また、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報を、当該アーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報であって使用可否情報に含まれているアーム姿勢情報に対応付けられた可否情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６６】
また、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定し、特定した可否情報を当該アーム姿勢を示すアーム姿勢情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として特定した尤もらしい可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６７】
また、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す１以上のパラメーター（この一例において、６種類のパラメーター）に基づいて、当該アーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定する。これにより、ロボット制御装置３０は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す１以上のパラメーターに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
【０１６８】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１６９】
また、以上に説明した装置（例えば、ロボット制御装置３０）における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１７０】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【符号の説明】
【０１７１】
１…ロボットシステム、２０…ロボット、２１…第１撮像部、２２…第２撮像部、２３…第３撮像部、２４…第４撮像部、３０…ロボット制御装置、３１…ＣＰＵ、３２…記憶部、３３…入力受付部、３４…通信部、３５…表示部、３６…制御部、４０…表示制御部、４２…使用可否情報取得部、４４…使用可否情報生成部、４６…記憶制御部、４８…使用可否判定部、５０…ロボット制御部
【図１】
2018051647.tif 000003
【図２】
2018051647.tif 000004
【図３】
2018051647.tif 000005
【図４】
2018051647.tif 000006
【図５】
2018051647.tif 000007
【図６】
2018051647.tif 000008
【図７】
2018051647.tif 000009
【図８】
2018051647.tif 000010
【図９】
2018051647.tif 000011
【図１０】
2018051647.tif 000012
【図１１】
2018051647.tif 000013
【図１２】
2018051647.tif 000014