<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、ロボットシステム1の構成について説明する。
図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、ロボット制御装置30を内蔵するロボット20を備える。なお、ロボットシステム1は、ロボット20に加えて、ロボット20と別体の撮像部、ロボット20と別体の教示装置(ティーチングペンダント)等のロボット20と別体の他の装置を備える構成であってもよい。
ロボット20は、第1アームと、第2アームと、第1アーム及び第2アームを支持する支持台と、支持台の内側にロボット制御装置30を備える双腕ロボットである。なお、ロボット20は、双腕ロボットに代えて、3本以上のアームを備える複腕ロボットであってもよく、1本のアームを備える単腕ロボットであってもよい。また、ロボット20は、水平多関節ロボット等の他のロボットであってもよい。
第1アームは、第1エンドエフェクターE1と、第1マニピュレーターM1を備える。なお、第1アームは、これに代えて、第1エンドエフェクターE1を備えず、第1マニピュレーターM1を備える構成であってもよい。また、第1アームは、力検出部(例えば、力センサーやトルクセンサー)を備える構成であってもよい。
第1エンドエフェクターE1は、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、第1エンドエフェクターE1は、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
第1エンドエフェクターE1は、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、第1エンドエフェクターE1は、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、第1エンドエフェクターE1は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第1マニピュレーターM1は、図示しない関節J11〜関節J17の7つの関節と、第1撮像部21を備える。また、関節J11〜関節J17のそれぞれは、図示しないアクチュエーターを備える。すなわち、第1マニピュレーターM1を備える第1アームは、7軸垂直多関節型のアームである。第1アームは、支持台と、第1エンドエフェクターE1と、第1マニピュレーターM1と、関節J11〜関節J17それぞれのアクチュエーターとによる連携した動作によって7軸の自由度の動作を行う。なお、第1アームは、8軸以上の自由度で動作する構成であってもよい。
この一例において、関節J11、関節J13、関節J15、関節J17のそれぞれは、回転関節(捩り関節)である。回転関節は、回転関節の回動軸の回動によって回動軸に接続された2つのリンク間の角度を変化させない関節である。当該リンクは、第1マニピュレーターM1が有する部材であって関節間を繋ぐ部材である。また、関節J12、関節J14、関節J16のそれぞれは、旋回関節(曲げ関節)である。旋回関節は、旋回関節の回動軸の回動によって回動軸に接続された2つの当該リンク間の角度を変化させる関節である。
第1アームが7軸の自由度で動作する場合、第1アームは、6軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第1アームは、例えば、動作が滑らかになり、更に第1アームの周辺に存在する物体との干渉を容易に回避することができる。また、第1アームが7軸の自由度で動作する場合、第1アームの制御は、第1アームが8軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
第1マニピュレーターM1が備える7つのアクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、第1マニピュレーターM1を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第1マニピュレーターM1が備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第1撮像部21は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。この一例において、第1撮像部21は、第1マニピュレーターM1の一部に備えられる。そのため、第1撮像部21は、第1アームの動きに応じて移動する。また、第1撮像部21が撮像可能な範囲は、第1アームの動きに応じて変化する。第1撮像部21は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
また、第1撮像部21は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第1撮像部21は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2アームは、第2エンドエフェクターE2と、第2マニピュレーターM2を備える。なお、第2アームは、これに代えて、第2エンドエフェクターE2を備えず、第2マニピュレーターM2を備える構成であってもよい。また、第2アームは、力検出部(例えば、力センサーやトルクセンサー)を備える構成であってもよい。
第2エンドエフェクターE2は、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、第2エンドエフェクターE2は、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
第2エンドエフェクターE2は、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、第2エンドエフェクターE2は、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第2エンドエフェクターE2は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2マニピュレーターM2は、図示しない関節J21〜関節J27の7つの関節と、第2撮像部22を備える。また、関節J21〜関節J27のそれぞれは、図示しないアクチュエーターを備える。すなわち、第2マニピュレーターM2を備える第2アームは、7軸垂直多関節型のアームである。第2アームは、支持台と、第2エンドエフェクターE2と、第2マニピュレーターM2と、関節J21〜関節J27それぞれのアクチュエーターとによる連携した動作によって7軸の自由度の動作を行う。なお、第2アームは、8軸以上の自由度で動作する構成であってもよい。
この一例において、関節J21、関節J23、関節J25、関節J27のそれぞれは、回転関節(捩り関節)である。回転関節は、回転関節の回動軸の回動によって回動軸に接続された2つのリンク間の角度を変化させない関節である。当該リンクは、第2マニピュレーターM2が有する部材であって関節間を繋ぐ部材である。また、関節J22、関節J24、関節J26のそれぞれは、旋回関節(曲げ関節)である。旋回関節は、旋回関節の回動軸の回動によって回動軸に接続された2つの当該リンク間の角度を変化させる関節である。
第2アームが7軸の自由度で動作する場合、第2アームは、6軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これにより第2アームは、例えば、動作が滑らかになり、更に第2アームの周辺に存在する物体との干渉を容易に回避することができる。また、第2アームが7軸の自由度で動作する場合、第2アームの制御は、第2アームが8軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
第2マニピュレーターM2が備える7つのアクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、第2マニピュレーターM2を動作させる。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、第2マニピュレーターM2が備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第2撮像部22は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。この一例において、第2撮像部22は、第2マニピュレーターM2の一部に備えられる。そのため、第2撮像部22は、第2アームの動きに応じて移動する。また、第2撮像部22が撮像可能な範囲は、第2アームの動きに応じて変化する。第2撮像部22は、当該範囲の静止画像を撮像する構成であってもよく、当該範囲の動画像を撮像する構成であってもよい。
また、第2撮像部22は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第2撮像部22は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
また、ロボット20は、第3撮像部23と、第4撮像部24を備える。
第3撮像部23は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。第3撮像部23は、第4撮像部24が撮像可能な範囲を第4撮像部24とともにステレオ撮像可能な部位に備えられる。第3撮像部23は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第3撮像部23は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
第4撮像部24は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。第4撮像部24は、第3撮像部23が撮像可能な範囲を第3撮像部23とともにステレオ撮像可能な部位に備えられる。第4撮像部24は、ケーブルによって通信可能にロボット制御装置30と接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第4撮像部24は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
上記で説明したロボット20が備える各機能部は、この一例において、ロボット20に内蔵されたロボット制御装置30から制御信号を取得する。そして、当該各機能部は、取得した制御信号に基づいた動作を行う。なお、ロボット20は、ロボット制御装置30を内蔵する構成に代えて、外部に設置されたロボット制御装置30により制御される構成であってもよい。この場合、ロボット20と、ロボット制御装置30とは、ロボットシステムを構成する。また、ロボット20は、第1撮像部21、第2撮像部22、第3撮像部23、第4撮像部24のうちの一部又は全部を備えない構成であってもよい。
ロボット制御装置30は、この一例において、ロボット20を制御する(動作させる)コントローラーである。ロボット制御装置30は、例えば、予め記憶された動作プログラムに基づいた制御信号を生成する。ロボット制御装置30は、生成した制御信号をロボット20に出力し、ロボット20に所定の作業を行わせる。所定の作業は、例えば、図示しない給材領域に載置された物体を把持し、把持した物体を図示しない除材領域に載置する作業である。なお、所定の作業は、これに代えて、他の作業であってもよい。なお、ロボット制御装置30は、動作プログラムに基づいて所定の作業をロボット20に行わせる構成に代えて、ビジュアルサーボやインピーダンス制御等によって所定の作業をロボット20に行わせる構成であってもよい。
<ロボット制御装置がロボットに所定の作業を行わせる処理の概要>
以下、ロボット制御装置30がロボット20に所定の作業を行わせる処理の概要について説明する。
ロボット制御装置30は、第1エンドエフェクターE1に予め対応付けられた位置に、第1エンドエフェクターE1とともに動く第1制御点T1を設定する。第1エンドエフェクターE1に予め対応付けられた位置は、例えば、第1エンドエフェクターE1の重心の位置である。第1制御点T1は、例えば、第1アームのTCP(Tool Center Point)である。なお、第1制御点T1は、当該TCPに代えて、第1マニピュレーターM1の一部に対応付けられた仮想的な点等の他の仮想的な点であってもよい。すなわち、第1制御点T1は、第1エンドエフェクターE1に対応付けられた位置に代えて、第1エンドエフェクターE1の他の部位の位置に設定される構成であってもよく、第1マニピュレーターM1に対応付けられた何らかの位置に設定される構成であってもよい。
ロボット制御装置30は、ユーザーから予め入力された第1制御点設定情報に基づいて第1制御点T1を設定する。第1制御点設定情報は、例えば、第1エンドエフェクターE1の重心の位置及び姿勢と第1制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、第1制御点設定情報は、これに代えて、第1エンドエフェクターE1に対応付けられた何らかの位置及び姿勢と第1制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、第1マニピュレーターM1に対応付けられた何らかの位置及び姿勢と第1制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット20の他の部位に対応付けられた何らかの位置及び姿勢と第1制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
第1制御点T1には、第1制御点T1の位置を示す情報である第1制御点位置情報と、第1制御点T1の姿勢を示す情報である第1制御点姿勢情報とが対応付けられている。なお、第1制御点T1には、これらに加えて、他の情報が対応付けられる構成であってもよい。
この一例において、第1制御点T1の位置は、第1制御点座標系TC1の原点のロボット座標系RCにおける位置によって表される。また、第1制御点T1の姿勢は、第1制御点座標系TC1における各座標軸のロボット座標系RCにおける方向によって表される。第1制御点座標系TC1は、第1制御点T1とともに動くように第1制御点T1に対応付けられた三次元局所座標系である。
ロボット制御装置30は、予め記憶された動作プログラムに基づいてロボット20を動作させる際、例えば、動作プログラムによって指定された第1制御点位置情報が示す位置と、動作プログラムによって指定された第1制御点姿勢情報が示す姿勢とを、第1制御点T1の位置及び姿勢を変化させる目標となる位置及び姿勢として特定する。以下では、説明の便宜上、第1制御点T1の位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第1アーム位置と称して説明する。また、以下では、第1制御点T1の位置及び姿勢を変化させる目標となる位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第1目標位置と称して説明する。なお、第1アーム位置は、第1制御点T1の位置のみによって表されてもよい。この場合、第1目標位置は、第1制御点T1の位置を変化させる目標となる位置のみによって表される。また、第1アーム位置は、第1アームに基づく他の位置及び姿勢によって表されてもよく、第1アームに基づく他の位置のみによって表されてもよい。
また、ロボット制御装置30は、予め記憶された動作プログラムによって、第1制御点位置情報及び第1制御点姿勢情報とともに、第1冗長自由度を示す第1冗長自由度情報が指定される。
第1冗長自由度は、7軸の自由度で動作する第1アームが有する冗長自由度のことである。第1冗長自由度は、この一例において、第1基準平面に対する第1対象平面の角度のことである。
第1対象平面は、ある第1目標位置に第1アーム位置が一致している場合において、第1アームが備える関節のうちの関節J12と、関節J14と、関節J16とのそれぞれを直線により結ぶことによって形成される三角形を含む平面のことである。より具体的には、例えば、第1対象平面は、当該場合において、関節J12の重心の位置と、関節J14の重心の位置と、関節J16の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面である。なお、第1対象平面は、これに代えて、当該場合において、関節J12の他の位置と、関節J14の他の位置と、関節J16の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であってもよい。
第1基準平面は、当該場合において、関節J12、関節J14、関節J16のそれぞれを直線によって結ぶことによって形成される三角形を含む平面のことであり、且つ関節J12及び関節J16のそれぞれの回動角が第1所定回動角と一致している場合における当該平面のことである。より具体的には、例えば、第1基準平面は、当該場合において、関節J12の重心の位置と、関節J14の重心の位置と、関節J16の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節J12及び関節J16のそれぞれの回動角が第1所定回動角と一致している場合における当該平面のことである。
第1所定回動角は、如何なる回動角であってもよい。また、関節J12の第1所定回動角と、関節J16の第1所定回動角とは、この一例において、同じ回動角であるが、これに代えて、互いに異なる回動角であってもよい。なお、第1基準平面は、これに代えて、当該場合において、関節J12の他の位置と、関節J14の他の位置と、関節J16の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節J12及び関節J16のそれぞれの回動角が第1所定回動角と一致している場合における当該平面のことである構成であってもよい。
ロボット制御装置30は、動作プログラムによって指定された第1冗長自由度情報が示す第1冗長自由度を、第1アームが有する第1冗長自由度を変化させる目標となる第1目標冗長自由度として特定する。
ロボット制御装置30は、このようにして特定した第1目標位置と、第1目標冗長自由度とに基づく逆運動学によって、特定した第1目標位置に第1アーム位置が一致している場合、且つ第1目標冗長自由度に第1アームが有する第1冗長自由度が一致している場合における回動角であって第1アームが備える関節J11〜関節J17それぞれの回動角を算出する。ロボット制御装置30は、関節J11〜関節J17のそれぞれを動作させ、関節J11〜関節J17それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第1アーム位置を、算出した第1目標位置と一致させる。この一例において、第1アームの姿勢である第1アーム姿勢は、関節J11〜関節J17それぞれの回動角の組み合わせによって表される。すなわち、ロボット制御装置30は、特定した第1目標位置と、第1目標冗長自由度とに基づく逆運動学によって、特定した第1目標位置に第1アーム位置が一致している場合、且つ第1目標冗長自由度に第1アームが有する第1冗長自由度が一致している場合における第1アーム姿勢を算出する。そして、ロボット制御装置30は、関節J11〜関節J17のそれぞれを動作させ、現在の第1アーム姿勢を、算出した第1アーム姿勢と一致させるとともに、現在の第1アーム位置を、当該第1目標位置と一致させる。このようにして、ロボット制御装置30は、動作プログラムに基づいて第1アームを動作させることができる。なお、第1アーム姿勢は、第1アームに基づく他の値によって表されてもよい。
ここで、動作プログラムに第1冗長自由度をロボット制御装置30に対して指定させる場合、例えば、第1アーム位置を第1制御点位置情報及び第1制御点姿勢情報が示す第1目標位置と一致させる際に第1アームが備える各アクチュエーターに加わる負荷が最小となる第1冗長自由度を示す第1冗長自由度情報が指定させる方法が知られている。
しかし、このような方法で動作プログラムに第1冗長自由度情報をロボット制御装置30に対して指定させた場合、ロボット制御装置30により動作された第1アームの第1アーム姿勢は、ユーザーが所望する第1アーム姿勢と一致しない場合がある。第1アーム姿勢のうちユーザーが所望する第1アーム姿勢は、例えば、図1に示したようにロボット20の形状が人の形状に対応した形状である場合(すなわち、ロボット20の形状が人の形状に似た形状である場合)、第1アーム姿勢のうちの人が取ることのできる姿勢に対応した第1アーム姿勢である。ユーザーが所望する第1アーム姿勢と第1アーム姿勢とが一致していない場合、ユーザーは、ロボット20に不具合が生じる状況、ロボット20が他の物体と干渉を起こす状況、ロボット20がロボット20自身と干渉を起こす状況等を想起してしまうことがある。その結果、ユーザーは、不安を感じながらロボット20に作業を行わせることになる。
ユーザーに不安を感じさせてしまうことを抑制するため、この一例におけるロボット制御装置30は、ロボット20が備える7軸以上の第1アームに対応付けられた第1アーム位置を変化させる目標となる第1目標位置に第1アーム位置が一致した場合において第1アームが取ることが可能な複数の第1アーム姿勢の中で使用可能な第1アーム姿勢が決められている第1使用可否情報に基づいて第1アームを動かす。そして、ロボット制御装置30は、所定の作業をロボット20に行わせる。第1使用可否情報は、1以上の第1アーム姿勢のそれぞれを示す第1アーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。第1使用可否情報は、使用可否情報の一例である。また、第1アーム姿勢は、アーム姿勢の一例である。また、第1アーム姿勢情報は、アーム姿勢情報の一例である。これにより、ロボット制御装置30は、ロボット20の第1アーム姿勢をユーザーが所望する第1アーム姿勢と一致させながら第1アームを動かすことができる。
ロボット制御装置30は、第2エンドエフェクターE2に予め対応付けられた位置に、第2エンドエフェクターE2とともに動く第2制御点T2を設定する。第2エンドエフェクターE2に予め対応付けられた位置は、例えば、第2エンドエフェクターE2の重心の位置である。第2制御点T2は、例えば、第2アームのTCPである。なお、第2制御点T2は、当該TCPに代えて、第2マニピュレーターM2の一部に対応付けられた仮想的な点等の他の仮想的な点であってもよい。すなわち、第2制御点T2は、第2エンドエフェクターE2に対応付けられた位置に代えて、第2エンドエフェクターE2の他の部位の位置に設定される構成であってもよく、第2マニピュレーターM2に対応付けられた何らかの位置に設定される構成であってもよい。
ロボット制御装置30は、ユーザーから予め入力された第2制御点設定情報に基づいて第2制御点T2を設定する。第2制御点設定情報は、例えば、第2エンドエフェクターE2の重心の位置及び姿勢と第2制御点T2の位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、第2制御点設定情報は、これに代えて、第2エンドエフェクターE2に対応付けられた何らかの位置及び姿勢と第2制御点T2の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、第2マニピュレーターM2に対応付けられた何らかの位置及び姿勢と第2制御点T2の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット20の他の部位に対応付けられた何らかの位置及び姿勢と第2制御点T2の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
第2制御点T2には、第2制御点T2の位置を示す情報である第2制御点位置情報と、第2制御点T2の姿勢を示す情報である第2制御点姿勢情報とが対応付けられている。なお、第2制御点T2には、これらに加えて、他の情報が対応付けられる構成であってもよい。
この一例において、第2制御点T2の位置は、第2制御点座標系TC2の原点のロボット座標系RCにおける位置によって表される。また、第2制御点T2の姿勢は、第2制御点座標系TC2における各座標軸のロボット座標系RCにおける方向によって表される。第2制御点座標系TC2は、第2制御点T2とともに動くように第2制御点T2に対応付けられた三次元局所座標系である。
ロボット制御装置30は、予め記憶された動作プログラムに基づいてロボット20を動作させる際、例えば、動作プログラムによって指定された第2制御点位置情報が示す位置と、動作プログラムによって指定された第2制御点姿勢情報が示す姿勢とを、第2制御点T2の位置及び姿勢を変化させる目標となる位置及び姿勢として特定する。以下では、説明の便宜上、第2制御点T2の位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第2アーム位置と称して説明する。また、以下では、第2制御点T2の位置及び姿勢を変化させる目標となる位置及び姿勢を区別する必要がない限り、当該位置及び当該姿勢をまとめて第2目標位置と称して説明する。なお、第2アーム位置は、第2制御点T2の位置のみによって表されてもよい。この場合、第2目標位置は、第2制御点T2の位置を変化させる目標となる位置のみによって表される。また、第2アーム位置は、第2アームに基づく他の位置及び姿勢によって表されてもよく、第2アームに基づく他の位置のみによって表されてもよい。
また、ロボット制御装置30は、予め記憶された動作プログラムによって、第2制御点位置情報及び第2制御点姿勢情報とともに、第2冗長自由度を示す第2冗長自由度情報が指定される。
第2冗長自由度は、7軸の自由度で動作する第2アームが有する冗長自由度のことである。第2冗長自由度は、この一例において、第2基準平面に対する第2対象平面の角度のことである。
第2対象平面は、ある第2目標位置に第2アーム位置が一致している場合において、第2アームが備える関節のうちの関節J22と、関節J24と、関節J26とのそれぞれを直線により結ぶことによって形成される三角形を含む平面のことである。より具体的には、例えば、第2対象平面は、当該場合において、関節J22の重心の位置と、関節J24の重心の位置と、関節J26の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面である。なお、第2対象平面は、これに代えて、当該場合において、関節J22の他の位置と、関節J24の他の位置と、関節J26の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であってもよい。
第2基準平面は、当該場合において、関節J22、関節J24、関節J26のそれぞれを直線によって結ぶことによって形成される三角形を含む平面のことであり、且つ関節J22及び関節J26のそれぞれの回動角が第2所定回動角と一致している場合における当該平面のことである。より具体的には、例えば、第2基準平面は、当該場合において、関節J22の重心の位置と、関節J24の重心の位置と、関節J26の重心の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節J22及び関節J26のそれぞれの回動角が第2所定回動角と一致している場合における当該平面のことである。
第2所定回動角は、如何なる回動角であってもよい。また、関節J22の第2所定回動角と、関節J26の第2所定回動角とは、この一例において、同じ回動角であるが、これに代えて、互いに異なる回動角であってもよい。なお、第2基準平面は、これに代えて、当該場合において、関節J22の他の位置と、関節J24の他の位置と、関節J26の他の位置とのそれぞれを直線により結ぶことによって形成される三角形を含む平面であり、且つ関節J22及び関節J26のそれぞれの回動角が第2所定回動角と一致している場合における当該平面のことである構成であってもよい。
ロボット制御装置30は、動作プログラムによって指定された第2冗長自由度情報が示す第2冗長自由度を、第2アームが有する第2冗長自由度を変化させる目標となる第2目標冗長自由度として特定する。
ロボット制御装置30は、このようにして特定した第2目標位置と、第2目標冗長自由度とに基づく逆運動学によって、特定した第2目標位置に第2アーム位置が一致している場合、且つ第2目標冗長自由度に第2アームが有する第2冗長自由度が一致している場合における回動角であって第2アームが備える関節J21〜関節J27それぞれの回動角を算出する。ロボット制御装置30は、関節J21〜関節J27のそれぞれを動作させ、関節J21〜関節J27それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第2アーム位置を、当該第2目標位置と一致させる。この一例において、第2アームの姿勢である第2アーム姿勢は、関節J21〜関節J27それぞれの回動角の組み合わせによって表される。すなわち、ロボット制御装置30は、特定した第2目標位置と、第2目標冗長自由度とに基づく逆運動学によって、特定した第2目標位置に第2アーム位置が一致している場合、且つ第2目標冗長自由度に第2アームが有する第2冗長自由度が一致している場合における第2アーム姿勢を算出する。そして、ロボット制御装置30は、関節J21〜関節J27のそれぞれを動作させ、現在の第2アーム姿勢を、算出した第2アーム姿勢と一致させるとともに、現在の第2アーム位置を、算出した第2目標位置と一致させる。このようにして、ロボット制御装置30は、動作プログラムに基づいて第2アームを動作させることができる。なお、第2アーム姿勢は、第2アームに基づく他の値によって表されてもよい。
ここで、動作プログラムに第2冗長自由度をロボット制御装置30に対して指定させる場合、例えば、第2アーム位置を第2制御点位置情報及び第2制御点姿勢情報が示す第2目標位置と一致させる際に第2アームが備える各アクチュエーターに加わる負荷が最小となる第2冗長自由度を示す第2冗長自由度情報が指定させる方法が知られている。
しかし、このような方法で動作プログラムに第2冗長自由度情報をロボット制御装置30に対して指定させた場合、ロボット制御装置30により動作された第2アームの第2アーム姿勢は、ユーザーが所望する第2アーム姿勢と一致しない場合がある。第2アーム姿勢のうちユーザーが所望する第2アーム姿勢は、例えば、図1に示したようにロボット20の形状が人の形状に対応した形状である場合(すなわち、ロボット20の形状が人の形状に似た形状である場合)、第2アーム姿勢のうちの人が取ることのできる姿勢に対応した第2アーム姿勢である。ユーザーが所望する第2アーム姿勢と第2アーム姿勢とが一致していない場合、ユーザーは、ロボット20に不具合が生じる状況、ロボット20が他の物体と干渉を起こす状況、ロボット20がロボット20自身と干渉を起こす状況等を想起してしまうことがある。その結果、ユーザーは、不安を感じながらロボット20に作業を行わせることになる。
ユーザーに不安を感じさせてしまうことを抑制するため、この一例におけるロボット制御装置30は、ロボット20が備える7軸以上の第2アームに対応付けられた第2アーム位置を変化させる目標となる第2目標位置に第2アーム位置が一致した場合において第2アームが取ることが可能な複数の第2アーム姿勢の中で使用可能な第2アーム姿勢が決められている第2使用可否情報に基づいて第2アームを動かす。そして、ロボット制御装置30は、所定の作業をロボット20に行わせる。第2使用可否情報は、1以上の第2アーム姿勢のそれぞれを示す第2アーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。第2使用可否情報は、使用可否情報の一例である。また、第2アーム姿勢は、アーム姿勢の一例である。また、第2アーム姿勢情報は、アーム姿勢情報の一例である。これにより、ロボット制御装置30は、ロボット20の第2アーム姿勢をユーザーが所望する第2アーム姿勢と一致させながら第2アームを動かすことができる。
以下では、一例として、第2使用可否情報が第1使用可否情報と同じ情報である場合について説明する。この場合、ロボット制御装置30には、第1アーム姿勢と第2アーム姿勢とを対応づける対応情報が予め記憶される。これにより、ロボット制御装置30は、第1使用可否情報に基づいて第2アームを動かすことができる。なお、第2使用可否情報は、第1使用可否情報と互いに異なる情報であってもよい。
以下では、ロボット制御装置30がロボット20に所定の作業を行わせる処理について説明する。ここで、当該処理のうちの第2アームをロボット制御装置30が制御する処理は、以下において説明する処理であって第1アームをロボット制御装置30が制御する処理と同様の処理である。このため、以下では、第2アームをロボット制御装置30が制御する処理についての説明を省略する。また、ロボットシステム1において、第1アームの役割と第2アームの役割は、逆であってもよい。
<ロボット制御装置のハードウェア構成>
以下、図2を参照し、ロボット制御装置30のハードウェア構成について説明する。図2は、ロボット制御装置30のハードウェア構成の一例を示す図である。
ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。また、ロボット制御装置30は、通信部34を介してロボット20と通信を行う。
CPU31は、記憶部32に格納された各種プログラムを実行する。
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)等を含む。なお、記憶部32は、ロボット制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部32は、ロボット制御装置30が処理する各種情報、前述の動作プログラムを含む各種プログラム、各種画像等を格納する。
入力受付部33は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部33は、表示部35と一体に構成されたタッチパネルであってもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部35は、例えば、液晶ディスプレイパネル、あるいは、有機EL(ElectroLuminescence)ディスプレイパネルである。
<ロボット制御装置の機能構成>
以下、図3を参照し、ロボット制御装置30の機能構成について説明する。図3は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、記憶部32と、入力受付部33と、表示部35と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、表示制御部40と、使用可否情報取得部42と、使用可否情報生成部44と、記憶制御部46と、使用可否判定部48と、ロボット制御部50を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
表示制御部40は、ユーザーから受け付けた操作に基づいて、表示部35に表示させる各種の画面を生成する。表示制御部40は、生成した画面を表示部35に表示させる。
使用可否情報取得部42は、記憶部32に記憶された第1使用可否情報を記憶部32から読み出す。
使用可否情報生成部44は、第1使用可否情報を生成する。
記憶制御部46は、使用可否情報生成部44が生成した第1使用可否情報を記憶部32に記憶させる。
使用可否判定部48は、第1使用可否情報に含まれない第1アーム姿勢情報が示す第1アーム姿勢が、ユーザーが所望する第1アーム姿勢であるか否かを判定する。使用可否判定部48は、当該第1アーム姿勢が、ユーザーが所望する第1アーム姿勢であると判定した場合、当該第1アーム姿勢が使用可能な第1アーム姿勢であると判定する。一方、使用可否判定部48は、当該第1アーム姿勢が、ユーザーが所望する第1アーム姿勢ではないと判定した場合、当該第1アーム姿勢が使用不可能な第1アーム姿勢であると判定する。
ロボット制御部50は、ロボット制御部50を動作させる。
<ロボット制御装置が第1使用可否情報を生成する処理>
以下、図4を参照し、ロボット制御装置30が第1使用可否情報を生成する処理について説明する。図4は、ロボット制御装置30が第1使用可否情報を生成する処理の流れの一例を示すフローチャートである。
ロボット制御部50は、第1使用可否情報を生成する操作をユーザーから受け付けるまで待機する。そして、ロボット制御部50は、当該操作をユーザーから受け付けた場合(ステップS110)、ロボット制御装置30が第1使用可否情報を生成する際に第1制御点T1を移動させる目標となる1以上の仮想的な点である試験用教示点のそれぞれを示す試験用教示点情報を生成する(ステップS120)。ここで、ステップS120の処理について説明する。
試験用教示点には、試験用教示点位置情報と、試験用教示点識別情報とが対応付けられている。試験用教示点位置情報は、試験用教示点の位置を示す情報である。試験用教示点識別情報は、試験用教示点を識別する情報である。この一例において、試験用教示点の位置は、試験用教示点に対応付けられた三次元局所座標系である試験用教示点座標系の原点のロボット座標系RCにおける位置によって表される。この一例において、ある試験用教示点と第1制御点T1が一致している場合、第1制御点T1の位置は、試験用教示点の位置と一致している。
ステップS120において、ロボット制御部50は、記憶部32に予め記憶された作業領域を示す作業領域情報を記憶部32から読み出す。作業領域は、ロボット20が第1アーム及び第2アームによって作業を行うことが可能な領域である。なお、作業領域は、これに代えて、第1アームと第2アームのいずれか一方のみによって作業を行う場合において当該一方によって作業を行うことが可能な領域であってもよい。ロボット制御部50は、読み出した作業領域情報に基づいて、当該作業領域情報が示す作業領域を、互いに同じ形状及び大きさの立方体形状の部分領域に仮想的に分割する。そして、ロボット制御部50は、作業領域を仮想的に分割している直線同士の交点のそれぞれ毎に、交点を試験用教示点として特定し、特定した試験用教示点に交点の位置を示す情報を試験用教示点位置情報として対応付ける。ロボット制御部50は、特定した試験用教示点のそれぞれを示す試験用教示点情報を生成する。なお、当該部分領域の一部又は全部の形状及び大きさは、互いに同じ形状及び大きさに代えて、互いに異なる形状及び大きさであってもよい。
ステップS120の処理が行われた後、表示制御部40は、第1アーム姿勢が、ユーザーが所望する第1アーム姿勢であるか否か(すなわち、使用可能であるか否か)をユーザーから受け付ける画面である判定画面を生成する。そして、表示制御部40は、生成した判定画面を表示部35に表示させる(ステップS130)。ここで、図5を参照し、ステップS130の処理について説明する。
図5は、判定画面の一例を示す図である。図5に示した判定画面G1は、表示制御部40が表示部35に表示させる判定画面の一例である。判定画面G1には、例えば、画像表示領域RAと、ボタンB1と、ボタンB2とが含まれる。なお、判定画面G1には、これらのGUI(Graphical User Interface)に加えて、他のGUIが含まれる構成であってもよく、これらのGUIに代えて、他のGUIが含まれる構成であってもよい。
画像表示領域RAは、記憶部32の記憶領域内における仮想空間内に表示制御部40が配置した仮想的なロボット20を表す画像である仮想ロボット画像が表示される領域である。表示制御部40は、ステップS130において、当該仮想空間を記憶部32の記憶領域内に生成する。表示制御部40は、生成した当該仮想空間内に、当該仮想的なロボット20を生成して配置する。そして、表示制御部40は、ロボット20が備える各アクチュエーターから関節J11〜関節J17それぞれの回動角と、関節J21〜関節J27それぞれの回動角とを取得する。表示制御部40は、取得したこれらの回動角に基づいて、当該仮想的なロボット20の姿勢を現実のロボット20の現在の姿勢と一致させる。ロボット20の姿勢は、この一例において、第1アーム姿勢及び第2アーム姿勢のことである。そして、表示制御部40は、生成した当該仮想空間内における当該仮想的なロボット20を表す仮想ロボット画像を生成し、生成した仮想ロボット画像を画像表示領域RAに表示させる。なお、仮想ロボット画像は、この一例において、三次元画像であるが、これに代えて、二次元画像であってもよい。
ボタンB1は、画像表示領域RAに表示された仮想ロボット画像が表す仮想的なロボット20の姿勢のうちの第1アーム姿勢が、ユーザーが所望する第1アーム姿勢であることを確定するボタンである。ユーザーがボタンB1に選択操作(クリックやタップ等)を行った場合、使用可否判定部48は、現在の第1アーム姿勢が、ユーザーが所望する第1アーム姿勢であると判定し、その結果、現在の第1アーム姿勢が使用可能であると判定する。
ボタンB2は、画像表示領域RAに表示された仮想ロボット画像が表す仮想的なロボット20の姿勢のうちの第1アーム姿勢が、ユーザーが所望する姿勢ではないことを確定するボタンである。ユーザーがボタンB2に選択操作(クリックやタップ等)を行った場合、使用可否判定部48は、現在の第1アーム姿勢が、ユーザーが所望する第1アーム姿勢ではないと判定し、その結果、現在の第1アームの姿勢が使用不可能であると判定する。
ステップS130の処理が行われた後、ロボット制御部50は、ステップS120において生成した試験用教示点情報が示す1以上の試験用教示点のそれぞれ毎に、ステップS155〜ステップS190の処理を繰り返し行う(ステップS150)。
ステップS150において試験用教示点が選択された後、ロボット制御部50は、記憶部32に予め記憶された試験用姿勢情報を記憶部32から読み出す。試験用姿勢情報は、1以上の試験用姿勢のそれぞれを示す情報である。試験用姿勢は、第1制御点T1が取り得る姿勢の中からユーザーが選択した1以上の姿勢のそれぞれである。試験用姿勢は、第1制御点座標系TC1における各座標軸のロボット座標系RCにおける方向によって表される。当該方向は、ロボット座標系RCにおけるU軸、V軸、W軸のそれぞれの座標によって表される。当該U軸は、第1制御点座標系TC1をロボット座標系RCにおけるX軸周りに回転させた場合の回転角を表す座標軸である。また、当該V軸は、第1制御点座標系TC1をロボット座標系RCにおけるY軸周りに回転させた場合の回転角を表す座標軸である。また、当該W軸は、第1制御点座標系TC1をロボット座標系RCにおけるZ軸周りに回転させた場合の回転角を表す座標軸である。
ロボット制御部50は、記憶部32から読み出した試験用姿勢情報が示す1以上の試験用姿勢のそれぞれ毎に、ステップS160〜ステップS190の処理を繰り返し行う(ステップS155)。
ステップS155において試験用姿勢が選択された後、ロボット制御部50は、記憶部32に予め記憶された試験用冗長自由度情報を記憶部32から読み出す。試験用冗長自由度情報は、1以上の試験用冗長自由度のそれぞれを示す情報である。試験用冗長自由度は、第1冗長自由度として選択可能な回動角の中からユーザーが選択した1以上の回動角のそれぞれである。
ロボット制御部50は、記憶部32から読み出した試験用冗長自由度情報が示す1以上の試験用冗長自由度のそれぞれ毎に、ステップS170〜ステップS190の処理を繰り返し行う(ステップS160)。
ロボット制御部50は、第1アームの第1冗長自由度をステップS160において選択した試験用冗長自由度と一致させ、第1制御点T1の姿勢をステップS155において選択した試験用姿勢と一致させ、第1制御点T1の位置をステップS150において選択した試験用教示点の位置と一致させることにより、第1アーム位置及び第1アーム姿勢を変化させる(ステップS170)。より具体的には、ロボット制御部50は、ステップS160において選択した試験用冗長自由度を示す情報を第1冗長自由度情報として指定することにより、第1冗長自由度を当該試験用冗長自由度と一致させる。また、ロボット制御部50は、ステップS155において選択した試験用姿勢を示す情報を第1制御点姿勢情報として指定するとともに、ステップS150において選択した試験用教示点の位置を示す情報を第1制御点位置情報として指定することにより、第1制御点T1の位置を当該試験用教示点の位置と一致させるとともに第1制御点T1の姿勢を当該試験用姿勢と一致させる。
次に、表示制御部40は、ロボット20が備える各アクチュエーターから関節J11〜関節J17それぞれの回動角と、関節J21〜関節J27それぞれの回動角とを取得する。表示制御部40は、取得したこれらの回動角に基づいて、ステップS130において生成した仮想的なロボット20の姿勢を、現実のロボット20の現在の姿勢と一致させる。そして、表示制御部40は、仮想的なロボット20を表す仮想ロボット画像を生成し、生成した仮想ロボット画像を画像表示領域RAに表示させる。ここで、画像表示領域RAに仮想ロボット画像が既に表示されている場合、表示制御部40は、新たに生成した仮想ロボット画像を画像表示領域RAに表示させ直す、すなわち画像表示領域RAに表示された仮想ロボット画像を更新する(ステップS175)。
次に、使用可否判定部48は、表示部35に表示された判定画面G1において、ボタンB1又はボタンB2のいずれか一方に選択操作(クリックやタップ)が行われるまで待機する。使用可否判定部48は、ボタンB1又はボタンB2のいずれか一方に選択操作が行われた場合(ステップS180)、現在の第1アーム姿勢に対応付ける可否情報を生成する。使用可否判定部48は、ボタンB1に選択操作が行われた場合、現在の第1アームの姿勢に対応付ける可否情報として、使用可能を示す可否情報を生成する。一方、使用可否判定部48は、ボタンB2に選択操作が行われた場合、現在の第1アームの姿勢に対応付ける可否情報として、使用不可能を示す可否情報を生成する。使用可否判定部48が可否情報を生成した後、記憶制御部46は、現在指定されている第1制御点位置情報、第1制御点姿勢情報を含む第1アーム位置情報を生成する。そして、記憶制御部46は、生成した第1アーム位置情報と、当該第1アーム位置情報を識別する第1アーム位置識別IDを対応付ける。また、記憶制御部46は、当該第1アーム位置識別IDと、当該第1アーム位置情報と、現在指定されている第1冗長自由度情報を識別する第1冗長自由度識別IDが対応付けられた当該第1冗長自由度情報とを対応付けた第1アーム姿勢情報を生成する。記憶制御部46は、生成した第1アーム姿勢情報と、生成した可否情報とを対応付けて、記憶部32に記憶された第1使用可否情報に格納する(ステップS190)。ここで、図6を参照し、第1使用可否情報について説明する。
図6は、記憶部32に記憶された第1使用可否情報の一例を示す図である。図6に示したように、第1使用可否情報は、第1アーム位置識別IDであるi(iは1以上の整数)と、当該iが対応付けられた第1アーム姿勢情報と、当該第1アーム姿勢情報に対応付けられた可否情報とが対応付けられた情報が格納されたテーブルである。また、当該第1アーム姿勢情報には、当該iが対応付けられた第1アーム位置情報が含まれている。また、当該第1アーム位置情報には、当該iに対応付けられた第1制御点位置情報及び第1制御点姿勢情報が含まれている。また、当該iが対応付けられた第1冗長自由度情報には、当該第1冗長自由度情報の第1冗長自由度識別IDであるj(jは1以上の整数)が対応付けられている。
図6に示した例では、第1アーム位置識別IDがiである場合における第1制御点位置情報は、第1制御点T1の位置を示す3つの座標である。当該3つの座標は、第1制御点T1の位置であってロボット座標系RCにおけるX軸方向の位置を示すX座標Xiと、第1制御点T1の位置であってロボット座標系RCにおけるY軸方向の位置を示すY座標Yiと、第1制御点T1の位置であってロボット座標系RCにおけるZ軸方向の位置を示すZ座標Ziとのことである。
また、図6に示した例では、第1アーム位置識別IDがiである場合における第1制御点姿勢情報は、第1制御点T1の姿勢を示す3つの座標である。当該3つの座標は、第1制御点T1の姿勢であってロボット座標系RCにおけるU軸方向の姿勢を示すU座標Uiと、第1制御点T1の姿勢であってロボット座標系RCにおけるV軸方向の姿勢を示すV座標Viと、第1制御点T1の姿勢であってロボット座標系RCにおけるW軸方向の姿勢を示すW座標Wiとのことである。
また、第1アーム位置識別IDがiである場合、且つ第1冗長自由度識別IDがjである場合における第1冗長自由度を示す情報は、回動角φijのことである。また、第1アーム位置識別IDがiの場合、且つ第1冗長自由度識別IDがjの場合における可否情報は、可否情報Vijのことである。
具体的には、図6に示した例において第1アーム位置識別IDであるiが1である場合、且つ第1冗長自由度識別IDであるjが1である場合における第1アーム姿勢情報は、X座標X1=−250.0、Y座標Y1=550.0、Z座標Z1=−130.0、U座標U1=−180.0、V座標V1=0.0、W座標W1=−180.0、回動角φ11=−20.0のそれぞれを含んでいる。また、当該場合における可否情報V11は、使用可能である。なお、可否情報Vijは、フラグ、すなわち1又は0によって使用可能又は使用不可能を示す構成であってもよい。
なお、第1使用可否情報は、図6に示したテーブルに代えて、第1アーム姿勢情報と可否情報と第1アーム位置識別IDとが対応付けられた情報が格納された他の情報であってもよい。また、記憶制御部46は、記憶部32に第1使用可否情報が生成されていない場合、記憶部32に第1使用可否情報を生成し、生成した第1使用可否情報に、第1アーム姿勢情報と可否情報と第1アーム位置識別IDとが対応付けられた情報を格納する。
ロボット制御装置30は、ステップS150〜ステップS190の処理を繰り返し行うことにより、1以上の試験用教示点、1以上の試験用姿勢、1以上の試験用冗長自由度の組み合わせ毎の第1アーム姿勢情報と第1アーム位置識別IDと可否情報とを対応付けた情報を第1使用可否情報に格納する。これにより、ロボット制御装置30は、以下において説明する処理であってロボット制御装置30がロボット20に所定の作業を行わせる処理を実行することができる。
<ロボット制御装置がロボットに所定の作業を行わせる処理の具体例1>
以下、図7を参照し、ロボット制御装置30がロボット20に所定の作業を行わせる処理の具体例1について説明する。図7は、ロボット制御装置30がロボット20に所定の作業を行わせる処理の具体例1の流れを示すフローチャートである。
ロボット制御部50は、記憶部32に予め記憶された作業用教示点情報を記憶部32から読み出す(ステップS210)。作業用教示点情報は、1以上の作業用教示点のそれぞれを示す情報である。作業用教示点は、ロボット制御装置30がロボット20に所定の作業を行わせる際に第1制御点T1を移動させる目標となる1以上の仮想的な点である。作業用教示点には、作業用教示点位置情報と、作業用教示点姿勢情報と、作業用教示点識別情報とが対応付けられている。作業用教示点位置情報は、作業用教示点の位置を示す情報である。作業用教示点姿勢情報は、作業用教示点の姿勢を示す情報である。作業用教示点識別情報は、作業用教示点を識別する情報である。この一例において、作業用教示点の位置は、作業用教示点に対応付けられた三次元局所座標系である作業用教示点座標系の原点のロボット座標系RCにおける位置によって表される。また、作業用教示点の姿勢は、作業用教示点座標系における各座標軸のロボット座標系RCにおける方向によって表される。この一例において、ある作業用教示点と第1制御点T1が一致している場合、第1制御点T1の位置及び姿勢(すなわち、第1アーム位置)は、作業用教示点の位置及び姿勢と一致している。
作業用教示点情報は、ユーザーによる教示装置を用いたオンラインティーチングやダイレクトティーチング等によってロボット制御装置30の記憶部32に予め記憶される。ロボット制御装置30では、前述した動作プログラムにより作業用教示点が1つずつ指定された場合、指定された作業用教示点の位置を示す情報が第1教示点位置情報として指定され、指定された作業用教示点の姿勢を示す情報が第1教示点姿勢情報として指定される。
ステップS210の処理が行われた後、使用可否情報取得部42は、記憶部32に予め記憶された第1使用可否情報を記憶部32から読み出す(ステップS220)。次に、使用可否情報生成部44は、ステップS210において読み出した作業用教示点情報が示す1以上の作業用教示点毎にステップS235〜ステップS320の処理を繰り返し行う(ステップS230)。
ステップS230において作業用教示点が選択された後、使用可否情報生成部44は、記憶部32に予め記憶された作業用冗長自由度情報を記憶部32から読み出す。作業用冗長自由度情報は、1以上の作業用冗長自由度のそれぞれを示す情報である。作業用冗長自由度は、ロボット20に所定の作業を行わせる際に第1冗長自由度として選択可能な回動角の中からユーザーが選択した1以上の回動角のそれぞれである。作業用冗長自由度は、試験用冗長自由度と同じであってもよく、試験用冗長自由度と異なっていてもよい。
使用可否情報生成部44は、記憶部32から読み出した作業用冗長自由度情報が示す1以上の作業用冗長自由度のそれぞれ毎に、ステップS240〜ステップS320の処理を繰り返し行う(ステップS235)。
使用可否情報生成部44は、ステップS220において読み出した第1使用可否情報に含まれる第1アーム位置識別IDを1つずつ選択し、選択した第1アーム位置識別ID毎にステップS250〜ステップS275の処理を繰り返し行う(ステップS240)。
使用可否情報生成部44は、第1使用可否情報に含まれる第1アーム姿勢情報のうちステップS240において読み出した第1アーム位置識別IDが示す第1アーム位置情報に含まれる第1制御点位置情報及び第1制御点姿勢情報が示す位置及び姿勢と、ステップS230において選択した作業用教示点の位置及び姿勢との差分である第1差分を算出する(ステップS250)。当該第1制御点位置情報及び当該第1制御点姿勢情報が示す位置及び姿勢は、当該第1制御点位置情報が示す位置及び当該第1制御点姿勢情報が示す姿勢のことである。ここで、ステップS250の処理について説明する。
使用可否情報生成部44は、ステップS240において読み出した第1アーム位置識別IDが示す第1アーム位置情報に含まれる第1制御点位置情報及び第1制御点姿勢情報が示す位置及び姿勢に基づく第1アーム位置ベクトルと、ステップS230において選択した作業用教示点の位置及び姿勢に基づく作業用教示点位置姿勢ベクトルとの差分ベクトルのノルムを第1差分として算出する。第1アーム位置ベクトルは、当該第1制御点位置情報が示す位置を表す3つの座標(すなわち、X座標Xi、Y座標Yi、Z座標Zi)と当該第1制御点姿勢情報が示す姿勢を表す3つの座標(すなわち、U座標Ui、V座標Vi、W座標Wi)のそれぞれを成分として、X座標Xi、Y座標Yi、Z座標Zi、U座標Ui、V座標Vi、W座標Wiの順に有するベクトルである。作業用教示点位置姿勢ベクトルは、当該作業用教示点の位置及び姿勢を示すX座標、Y座標、Z座標、U座標、V座標、W座標のそれぞれを成分として、X座標、Y座標、Z座標、U座標、V座標、W座標の順に有するベクトルである。なお、第1差分は、第1アーム位置ベクトルと作業用教示点位置姿勢ベクトルとの差分ベクトルのノルムに代えて、当該第1制御点位置情報が示す位置を表す3つの座標と当該第1制御点姿勢情報が示す姿勢を表す3つの座標のそれぞれと、当該作業用教示点の位置及び姿勢を示すX座標、Y座標、Z座標、U座標、V座標、W座標のそれぞれとに基づく他の値として使用可否情報生成部44により算出される構成であってもよい。
ステップS250の処理が行われた後、使用可否情報生成部44は、ステップS250において算出した第1差分が所定の第1閾値未満であるか否かを判定する(ステップS260)。ここで、ステップS260が最初に実行される場合において、使用可否情報生成部44は、この一例において、第1差分として得られる最大の値以上の値を第1閾値として用いる。当該最大の値は、図4に示したステップS120の処理において作業領域が分割された各部分領域のうちの最大の大きさの部分領域の形状及び大きさから幾何学的に算出することが可能である。なお、ステップS260が最初に実行される場合における第1閾値は、これに代えて、他の値であってもよい。ただし、当該第1閾値は、第1差分として得られる最小の値以下の値であってはならない。
第1差分が所定の第1閾値以上であると判定した場合(ステップS260−NO)、使用可否情報生成部44は、ステップS240に遷移し、次の第1アーム位置識別IDを選択する。ただし、ステップS240において未選択の第1アーム位置識別IDが存在しない場合、使用可否情報生成部44は、ステップS280に遷移する。一方、第1差分が所定の第1閾値未満であると判定した場合(ステップS260−YES)、使用可否情報生成部44は、ステップS240において選択した第1アーム位置識別IDを、対象第1アーム位置識別IDとして特定する(ステップS270)。ここで、対象第1アーム位置識別IDが既に特定されている場合、対象第1アーム位置識別IDを更新し、当該第1アーム位置識別IDを新たな対象第1アーム位置識別IDとして特定し直す。
次に、使用可否情報生成部44は、前述の第1閾値を、ステップS250において算出した第1差分に更新する(ステップS275)。これにより、次にステップS260が実行される際に使用可否情報生成部44が用いる第1閾値は、当該第1差分に変更される。そして、使用可否情報生成部44は、ステップS240に遷移し、次の第1アーム位置識別IDを選択する。ただし、ステップS240において未選択の第1アーム位置識別IDが存在しない場合、使用可否情報生成部44は、ステップS280に遷移する。
このように、ステップS240〜ステップS275の処理を繰り返し行うことにより、使用可否情報生成部44は、ステップS230において選択した作業用教示点と第1制御点T1とが一致した場合における第1アーム位置と最も近い(差が小さい)第1アーム位置を示す第1制御点位置情報及び第1制御点姿勢情報を含む第1アーム位置情報の第1アーム位置識別IDを特定することができる。当該第1アーム位置情報は、ステップS220において読み出された第1使用可否情報に含まれる第1アーム位置情報のことである。
ステップS240〜ステップS275の繰り返し処理が行われた後、使用可否情報生成部44は、ステップS220において読み出した第1使用可否情報に含まれる第1冗長自由度識別IDのうちの重複していない第1冗長自由度識別IDのそれぞれ毎に、ステップS290〜ステップS315の処理を繰り返し行う(ステップS280)。
使用可否情報生成部44は、ステップS235において選択した作業用冗長自由度と、ステップS280において選択した第1冗長自由度識別IDが示す第1冗長自由度との差分の二乗の平方根を第2差分として算出する(ステップS290)。
次に、使用可否情報生成部44は、ステップS290において算出した第2差分が所定の第2閾値未満であるか否かを判定する(ステップS300)。ここで、ステップS300が最初に実行される場合において、使用可否情報生成部44は、この一例において、360°を第2閾値として用いる。なお、ステップS300が最初に実行される場合における第2閾値は、これに代えて、他の値であってもよいが、以下において説明する処理において、ステップS235において選択した作業用冗長自由度に最も近い(差が小さい)第1冗長自由度を示す第1冗長自由度識別IDを特定するために、360°に近い値であることが望ましい。
第2差分が所定の第2閾値以上であると判定した場合(ステップS300−NO)、使用可否情報生成部44は、ステップS280に遷移し、次の第1冗長自由度識別IDを選択する。ただし、ステップS280において未選択の第1冗長自由度識別IDが存在しない場合、使用可否情報生成部44は、ステップS320に遷移する。一方、第2差分が所定の第2閾値未満であると判定した場合(ステップS300−YES)、使用可否情報生成部44は、ステップS280において選択した第1冗長自由度識別IDを、対象第1冗長自由度識別IDとして特定する(ステップS310)。ここで、対象第1冗長自由度識別IDが既に特定されている場合、対象第1冗長自由度識別IDを更新し、当該第1冗長自由度識別IDを新たな対象第1冗長自由度識別IDとして特定し直す。
次に、使用可否情報生成部44は、前述の第2閾値を、ステップS290において算出した第2差分に更新する(ステップS315)。これにより、次にステップS300が実行される際に使用可否情報生成部44が用いる第2閾値は、当該第2差分に変更される。そして、使用可否情報生成部44は、ステップS280に遷移し、次の第1冗長自由度識別IDを選択する。ただし、ステップS280において未選択の第1冗長自由度識別IDが存在しない場合、使用可否情報生成部44は、ステップS320に遷移する。
このように、ステップS280〜ステップS315の処理を繰り返し行うことにより、使用可否情報生成部44は、ステップS235において選択した作業用冗長自由度と最も近い(差が小さい)第1冗長自由度を示す第1冗長自由度識別IDを特定することができる。当該第1冗長自由度識別IDは、ステップS280において選択可能な第1冗長自由度識別IDのことである。
ステップS280〜ステップS315の繰り返し処理が行われた後、使用可否情報生成部44は、ステップS270において特定した対象第1アーム位置識別IDと、ステップS310において特定した対象第1冗長自由度識別IDとの両方を含む第1アーム姿勢情報に対応付けられた可否情報を、ステップS220において読み出した第1使用可否情報の中から特定する。また、使用可否情報生成部44は、特定した可否情報に基づいて、ステップS230において選択した作業用教示点と第1制御点T1とが一致している場合、且つステップS235において選択した作業用冗長自由度と第1アームの第1冗長自由度とが一致している場合の第1アーム姿勢を示す第1アーム姿勢情報を生成する。使用可否情報生成部44は、生成した第1アーム姿勢情報に、特定した可否情報と、当該第1アーム姿勢情報に含まれるアーム位置情報を識別する第1アーム位置識別IDとを対応付けた情報を第1使用可否情報に格納する(ステップS320)。当該第1アーム位置識別IDは、第1使用可否情報において他の第1アーム位置識別IDと重複することがないIDである。
このように、ステップS230〜ステップS320の処理を繰り返すことにより、ロボット制御装置30は、ステップS210において読み出した作業用教示点情報が示す1以上の作業用教示点のそれぞれに第1制御点T1が一致している場合に取り得る第1アーム姿勢の使用可否を示す情報(すなわち、ステップS320において第1使用可否情報に格納した情報)を含む第1使用可否情報を生成することができる。これにより、ロボット制御装置30は、ロボット20に所定の作業を行わせる際、第1使用可否情報に基づいて、第1アームにユーザーが所望する第1アーム姿勢を取らせながら所定の作業をロボット20に行わせることができる。
ステップS230〜ステップS320の繰り返し処理が行われた後、ロボット制御部50は、記憶部32に予め記憶された動作プログラムと、記憶部32に記憶された作業用教示点情報及び第1使用可否情報とに基づいて、ロボット20に所定の作業を行わせ(ステップS350)、処理を終了する。具体的には、ステップS350において、ロボット制御装置30では、当該動作プログラムによって当該作業用教示点情報が示す1以上の作業用教示点を1つずつ選択され、選択された作業用教示点の位置を示す情報が第1制御点位置情報として指定されるとともに当該作業用教示点の姿勢を示す情報が第1制御点姿勢情報として指定される。また、ロボット制御装置30は、当該第1使用可否情報に含まれる第1アーム位置情報のうち、指定された第1制御点位置情報及び第1制御点姿勢情報を含む第1アーム位置情報を特定する。ロボット制御装置30は、特定した第1アーム位置情報に対応付けられた第1冗長自由度情報のうち、使用可能を示す可否情報が対応付けられた第1冗長自由度情報を特定する。ロボット制御装置30は、特定した第1冗長自由度情報から所定の適合条件を満たす第1冗長自由度情報を選択する。適合条件は、以下に示した3つの条件のいずれかを満たすことである。
条件1)選択可能な第1冗長自由度情報が1つのみであること
条件2)第1アームを動作させる際に第1アームが備える各関節の回転変化量を足し合わせた値が最小となること
条件3)第1アームを動作させる際に第1アームが備える各アクチュエーターに加わる負荷が最小となること
なお、適合条件は、他の条件であってもよい。例えば、ロボット制御装置30は、特定した第1冗長自由度情報からランダムに1つの第1冗長自由度情報を選択する構成であってもよい。
ロボット制御装置30は、選択した第1冗長自由度情報が示す第1冗長自由度と、指定された第1制御点位置情報が示す位置と、指定された第1制御点姿勢情報が示す姿勢とに基づく逆運動学によって、当該位置及び当該姿勢である第1目標位置に第1アーム位置が一致している場合、且つ当該第1冗長自由度である第1目標冗長自由度に第1アームが有する第1冗長自由度が一致している場合における回動角であって第1アームが備える関節J11〜関節J17それぞれの回動角を算出する。ロボット制御装置30は、関節J11〜関節J17のそれぞれを動作させ、関節J11〜関節J17それぞれの回動角を、算出した回動角のそれぞれと一致させるとともに、第1アーム位置を、当該第1目標位置と一致させる。これにより、ロボット制御装置30は、ロボット20の第1アーム姿勢をユーザーが所望する第1アーム姿勢と一致させながら第1アームを動かすことができる。
<ロボット制御装置がロボットに所定の作業を行わせる処理の具体例2>
以下、図8〜図12を参照し、ロボット制御装置30がロボット20に所定の作業を行わせる処理の具体例2について説明する。
ロボット制御装置30がロボット20に所定の作業を行わせる処理の具体例2では、ロボット制御装置30は、図4に示したフローチャートの処理によって生成された第1使用可否情報に含まれる1以上の第1アーム姿勢情報のそれぞれと、当該第1アーム姿勢情報のそれぞれに対応付けられた可否情報が示す使用可能又は使用不可能との対応関係である対象対応関係の機械学習を行う。この一例では、ロボット制御装置30は、当該機械学習を、教師あり機械学習の手法を用いて行う。より具体的には、ロボット制御装置30は、当該手法として、サポートベクターマシンを用いる。そして、ロボット制御装置30は、機械学習が行われた対象対応関係に基づいて、第1使用可否情報に含まれていない第1アーム姿勢情報に対応付ける可否情報として使用可能と使用不可能とのいずれを示す可否情報が尤もらしいかを判定する。ロボット制御装置30は、この判定の結果に基づいて、当該第1アーム姿勢情報と、当該第1アーム姿勢情報に対応付ける可否情報として尤もらしいと判定された可否情報とが対応付けられた情報を第1使用可否情報に格納する。これにより、ロボット制御装置30は、第1使用可否情報に基づいて、第1アーム姿勢をユーザーが所望する第1アーム姿勢と一致させながらロボット20に所定の作業を行わせることができる。なお、サポートベクターマシンについては、公知技術であるため詳細な説明を省略する。また、対象対応関係の機械学習を行う手法は、サポートベクターマシン等の教師あり機械学習の手法に代えて、他の手法を用いてもよい。また、教師あり機械学習の手法は、サポートベクターマシンに代えて、他の手法を用いてもよい。
図8は、対象対応関係の機械学習を行うロボット制御装置30の処理の流れの一例を示すフローチャートである。
使用可否判定部48は、記憶部32に予め記憶された第1使用可否情報を記憶部32から読み出す(ステップS360)。当該第1使用可否情報は、図4に示したフローチャートの処理によってロボット制御装置30が記憶部32に記憶させた第1使用可否情報である。次に、使用可否判定部48は、ステップS360において読み出した第1使用可否情報に含まれる第1アーム姿勢情報のそれぞれを回動角情報へ変換した第1使用可否情報である変換後第1使用可否情報を生成する(ステップS370)。ここで、図9を参照し、ステップS370の処理について説明する。
図9は、変換後第1使用可否情報の一例を示す図である。図9に示した例では、変換後第1使用可否情報は、図6に示した第1アーム位置識別IDであるiと第1冗長自由度識別IDであるjとの組み合わせのそれぞれを識別する第1アーム姿勢識別IDであるkと、変換後第1アーム姿勢情報であるθ1〜θ7と、当該kに対応付けられた可否情報Vkとが対応付けられて格納されたテーブルである。ここで、θ1は、関節J11の回動角であり、θ2は、関節J12の回動角であり、θ3は、関節J13の回動角であり、θ4は、関節J14の回動角であり、θ5は、関節J15の回動角であり、θ6は、関節J16の回動角であり、θ7は、関節J17の回動角である。
例えば、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードは、図6に示したテーブルに含まれるレコードのうち第1アーム位置識別IDであるiが1、第1冗長自由度識別IDであるjが1のレコードに対応している。すなわち、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードに含まれるθ1〜θ7のそれぞれは、図6に示したテーブルに含まれるレコードのうち第1アーム位置識別IDであるiが1、第1冗長自由度識別IDであるjが1のレコードに含まれる第1アーム姿勢情報及び第1冗長自由度情報に基づく逆運動学によって算出された関節J11〜関節J17それぞれの回動角である。
また、例えば、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが2のレコードは、図6に示したテーブルに含まれるレコードのうち第1アーム位置識別IDであるiが1、第1冗長自由度識別IDであるjが2のレコードに対応している。すなわち、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが2のレコードに含まれるθ1〜θ7のそれぞれは、図6に示したテーブルに含まれるレコードのうち第1アーム位置識別IDであるiが1、第1冗長自由度識別IDであるjが2のレコードに含まれる第1アーム姿勢情報及び第1冗長自由度情報に基づく逆運動学によって算出された関節J11〜関節J17それぞれの回動角である。
ステップS370の処理が行われた後、使用可否判定部48は、ステップS370において生成した変換後第1使用可否情報に含まれる変換後第1アーム姿勢情報を、当該変換後第1アーム姿勢情報が示す第1アーム姿勢を表す1以上のパラメーターに変換した変換後第1使用可否情報であるパラメーター情報を生成する(ステップS380)。以下では、一例として、ステップS380におけるロボット制御装置30が、ステップS370において生成した変換後第1使用可否情報に含まれる変換後第1アーム姿勢情報を、当該変換後第1アーム姿勢情報が示す第1アーム姿勢を表す6種類のパラメーターに変換した変換後第1使用可否情報であるパラメーター情報を生成する場合について説明する。当該6種類のパラメーターは、前述したサポートベクターマシンに学習させるパラメーター(すなわち、前述の対象対応関係)の一部である。ここで、図10及び図11を参照し、ステップS370の処理について説明する。
使用可否判定部48は、記憶部32に予め記憶された第1アームを構成する各部材の形状や大きさ等を示す第1アーム情報を記憶部32から読み出す。使用可否判定部48は、読み出した第1アーム情報と、ステップS370において生成した変換後第1使用可否情報に含まれる変換後第1アーム姿勢情報とに基づいて、当該変換後第1アーム姿勢情報が示す第1アーム姿勢におけるパラメーターであって以下の7種類のパラメーターを算出する。
・関節J12の位置
・関節J12の姿勢
・関節J14の位置
・関節J14の姿勢
・関節J16の位置
・関節J16の姿勢
・関節J17の姿勢
関節J12の位置は、関節J12の重心に対応付けられた三次元局所座標系である関節座標系JT12の原点のロボット座標系RCにおける位置を表す3つの座標(ロボット座標系RCにおける当該位置を表すX座標XJ12、Y座標YJ12、Z座標ZJ12)である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。
関節J12の姿勢は、関節座標系JT12におけるZ軸のロボット座標系RCにおける方向を表す3つの座標(ロボット座標系RCにおける当該方向を表すU座標UJ12、V座標VJ12、W座標WJ12)である。この一例において、当該Z軸の方向は、関節J12の回動軸に沿った方向のうち関節J13側の方向と一致している。なお、当該Z軸の方向は、関節J12の回動軸に沿った方向のうち関節J13側の方向と一致していない構成であってもよい。
関節J14の位置は、関節J14の重心に対応付けられた三次元局所座標系である関節座標系JT14の原点のロボット座標系RCにおける位置を表す3つの座標(ロボット座標系RCにおける当該位置を表すX座標XJ14、Y座標YJ14、Z座標ZJ14)である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。この一例において、当該Z軸の方向は、関節J14の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Z軸の方向は、関節J14の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
関節J14の姿勢は、関節座標系JT14におけるZ軸のロボット座標系RCにおける方向を表す3つの座標(ロボット座標系RCにおける当該方向を表すU座標UJ14、V座標VJ14、W座標WJ14)である。この一例において、当該Z軸の方向は、関節J14の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Z軸の方向は、関節J14の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
関節J16の位置は、関節J16の重心に対応付けられた三次元局所座標系である関節座標系JT16の原点のロボット座標系RCにおける位置を表す3つの座標(ロボット座標系RCにおける当該位置を表すX座標XJ16、Y座標YJ16、Z座標ZJ16)である。この一例において、当該原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。
関節J16の姿勢は、関節座標系JT16におけるZ軸のロボット座標系RCにおける方向を表す3つの座標(ロボット座標系RCにおける当該方向を表すU座標UJ16、V座標VJ16、W座標WJ16)である。この一例において、当該Z軸の方向は、関節J16の回動軸に沿った方向のうちのいずれか一方と一致している。なお、当該Z軸の方向は、関節J16の回動軸に沿った方向のうちのいずれとも一致していない構成であってもよい。
関節J17の姿勢は、関節J17の重心に対応付けられた三次元局所座標系である関節座標系JT17におけるZ軸のロボット座標系RCにおける方向を表す3つの座標(ロボット座標系RCにおける当該方向を表すU座標UJ17、V座標VJ17、W座標WJ17)である。この一例において、当該Z軸の方向は、関節J17の回動軸に沿った方向のうち第1エンドエフェクターE1側の方向と一致している。この一例において、関節座標系JT17の原点は、当該重心と一致している。なお、当該原点は、当該重心と一致していない構成であってもよい。また、当該Z軸の方向は、関節J17の回動軸に沿った方向のうち第1エンドエフェクターE1側の方向と一致していない構成であってもよい。
ここで、図10は、第1アームの論理的な構造の一例を示す図である。図10に示した点P2は、関節座標系JT12の原点のロボット座標系RCにおける位置を表す。また、矢印N2は、関節座標系JT12におけるZ軸のロボット座標系RCにおける方向を表す。また、点P4は、関節座標系JT14の原点のロボット座標系RCにおける位置を表す。また、矢印N4は、関節座標系JT14におけるZ軸のロボット座標系RCにおける方向を表す。また、点P6は、関節座標系JT16の原点のロボット座標系RCにおける位置を表す。また、矢印N6は、関節座標系JT16におけるZ軸のロボット座標系RCにおける方向を表す。また、矢印N7は、関節座標系JT17におけるZ軸のロボット座標系RCにおける方向を表す。なお、前述の7種類のパラメーターの一部又は全部は、変換後第1アーム姿勢情報が示す第1アーム姿勢を表す他のパラメーターであってもよい。
使用可否判定部48は、記憶部32から読み出した第1アーム情報と、ステップS370において生成した変換後第1使用可否情報に含まれる変換後第1アーム姿勢情報とに基づいて、当該変換後第1アーム姿勢情報が示す第1アーム姿勢を表す前述の7種類のパラメーターに変換した変換後第1使用可否情報であるパラメーター情報を生成する。ここで、図11は、パラメーター情報の一例を示す図である。
例えば、図11に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードは、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードに対応している。すなわち、図11に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードに含まれる7種類のパラメーターのそれぞれは、図9に示したテーブルに含まれるレコードのうち第1アーム姿勢識別IDであるkが1のレコードに含まれる変換後第1アーム姿勢情報を、ロボット制御装置30が変換したパラメーターである。
ステップS380の処理が行われた後、使用可否判定部48は、記憶部32に予め記憶されたサポートベクターマシンに対して、ステップS380において生成したパラメーター情報に含まれる第1アーム姿勢識別IDのそれぞれに対応付けられたパラメーター及び可否情報の組み合わせのそれぞれを対象対応関係として学習させ(ステップS390)、処理を終了する。
ロボット制御装置30は、このようにしてサポートベクターマシンに対象対応関係を学習させる。そして、ロボット制御装置30は、対象対応関係を学習した後のサポートベクターマシンを用いて、ロボット20に所定の作業を行わせる。
図12は、ロボット制御装置30がロボット20に所定の作業を行わせる処理の流れの他の例を示すフローチャートである。
ロボット制御部50は、記憶部32に予め記憶された作業用教示点情報を記憶部32から読み出す(ステップS410)。次に、使用可否情報生成部44は、ステップS210において読み出した作業用教示点情報が示す1以上の作業用教示点毎にステップS425〜ステップS470の処理を繰り返し行う(ステップS420)。
ステップS420において作業用教示点が選択された後、使用可否情報生成部44は、記憶部32に予め記憶された作業用冗長自由度情報を記憶部32から読み出す。使用可否情報生成部44は、読み出した作業用冗長自由度情報が示す1以上の作業用冗長自由度のそれぞれ毎に、ステップS440〜ステップS470の処理を繰り返し行う(ステップS425)。
使用可否情報生成部44は、ステップS420において選択した作業用教示点に第1制御点T1を一致させた場合、且つステップS425において選択した作業用冗長自由度に第1アームが有する第1冗長自由度を一致させた場合における関節J11〜関節J17それぞれの回動角を逆運動学によって算出する(ステップS440)。次に、使用可否情報生成部44は、記憶部32から前述の第1アーム情報を読み出す。そして、使用可否情報生成部44は、読み出した第1アーム情報と、ステップS440において算出した回動角とに基づいて、当該回動角を前述の7種類のパラメーターに変換する(ステップS450)。
次に、使用可否判定部48は、ステップS450において算出されたパラメーターを、記憶部32に記憶されたサポートベクターマシンに入力し、当該パラメーターが表す第1アーム姿勢に対応付ける可否情報として使用可能又は使用不可能のいずれを示す可否情報が尤もらしいかを示す情報をサポートベクターマシンに出力させる。使用可否判定部48は、この出力に基づいて、当該第1アーム姿勢に対応付ける可否情報が使用可能又は使用不可能のいずれを示す可否情報であるかを判定する(ステップS460)。すなわち、当該サポートベクターマシンは、当該パラメーターが入力された場合に、当該パラメーターが表す第1アーム姿勢に対応付ける可否情報として使用可能又は使用不可能のいずれを示す可否情報が尤もらしいかを示す情報を出力する関数である。
次に、使用可否情報生成部44は、ステップS460において行われた判定の結果に基づく可否情報と、ステップS420において選択された作業用教示点の位置及び姿勢を示す第1アーム位置情報と、当該第1アーム位置情報を識別する第1アーム位置識別IDと、ステップS425において選択された作業用冗長自由度を示す第1冗長自由度情報を識別する第1冗長自由度識別IDが対応付けられた第1冗長自由度情報とを対応付けた情報を、第1使用可否情報に格納する。当該第1アーム位置識別IDは、第1使用可否情報において他の第1アーム位置識別IDと重複することがないIDである。また、当該第1冗長自由度識別IDは、第1使用可否情報において他の第1冗長自由度識別IDと重複することがないIDである。そして、使用可否情報生成部44は、ステップS425に遷移し、次の作業用冗長自由度を選択する。ただし、ステップS425において未選択の作業用冗長自由度が存在しない場合、使用可否情報生成部44は、ステップS420に遷移し、次の作業用教示点を選択する。ただし、ステップS420において未選択の作業用教示点が存在しない場合、ロボット制御部50は、ステップS480に遷移する。
ステップS420〜ステップS470の繰り返し処理が行われた後、ロボット制御部50は、記憶部32に予め記憶された動作プログラムと、記憶部32に記憶された作業用教示点情報及び第1使用可否情報とに基づいて、ロボット20に所定の作業を行わせ(ステップS480)、処理を終了する。なお、ステップS480の処理は、図7に示したステップS350の処理と同様な処理であるため説明を省略する。
このように、ロボット制御装置30は、ロボット20が備える7軸以上の第1アームに対応付けられた第1アーム位置を変化させる目標となる第1目標位置に第1アーム位置が一致した場合において第1アームが取ることが可能な複数の第1アーム姿勢の中で使用可能な第1アーム姿勢が決められている第1使用可否情報に基づいて第1アームを動かす。そして、ロボット制御装置30は、所定の作業をロボット20に行わせる。その結果、ロボット制御装置30は、ロボット20の第1アーム姿勢をユーザーが所望する第1アーム姿勢と一致させながら第1アームを動かすことができる。
以上のように、ロボット制御装置30は、ロボット(この一例において、ロボット20)が備える7軸以上のアーム(この一例において、第1アーム)に対応付けられたアーム位置を変化させる目標となる目標位置(この一例において、第1目標位置)にアーム位置(この一例において、第1アーム位置)が一致した場合においてアームが取ることが可能な複数のアーム姿勢(この一例において、第1アーム姿勢)の中で使用可能なアーム姿勢が決められている使用可否情報(この一例において、第1使用可否情報)に基づいてアームを動かす。これにより、ロボット制御装置30は、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
また、ロボット制御装置30において、使用可否情報は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報(この一例において、第1アーム姿勢情報)に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた情報である。これにより、ロボット制御装置30は、複数のアーム姿勢のそれぞれを示すアーム姿勢情報に対して使用可能又は使用不可能のいずれかを示す可否情報が対応付けられた使用可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
また、ロボット制御装置30は、受け付けたアーム姿勢情報であって使用可否情報に含まれていないアーム姿勢情報を、受け付けた可否情報と対応付けて使用可否情報に記憶する。これにより、ロボット制御装置30は、受け付けたアーム姿勢情報と、受け付けた可否情報とに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
また、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報を、当該アーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報であって使用可否情報に含まれているアーム姿勢情報に対応付けられた可否情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢と最も近いアーム姿勢を示すアーム姿勢情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
また、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定し、特定した可否情報を当該アーム姿勢を示すアーム姿勢情報に対応付けて使用可否情報に記憶する。これにより、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢に対応付ける可否情報として特定した尤もらしい可否情報に基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
また、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す1以上のパラメーター(この一例において、6種類のパラメーター)に基づいて、当該アーム姿勢に対応付ける可否情報として尤もらしい可否情報を特定する。これにより、ロボット制御装置30は、使用可否情報に含まれていないアーム姿勢情報が示すアーム姿勢を表す1以上のパラメーターに基づいて、ロボットのアーム姿勢をユーザーが所望するアーム姿勢と一致させながらアームを動かすことができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。