(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024035977
(43)【公開日】2024-03-15
(54)【発明の名称】多関節ロボットのオフラインティーチング方法、プログラム、多関節ロボット、および、情報処理装置
(51)【国際特許分類】
B25J 9/22 20060101AFI20240308BHJP
【FI】
B25J9/22 A
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022140645
(22)【出願日】2022-09-05
(71)【出願人】
【識別番号】503027931
【氏名又は名称】学校法人同志社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】廣垣 俊樹
(72)【発明者】
【氏名】青山 栄一
(72)【発明者】
【氏名】加藤 大暉
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707BS12
3C707LS08
3C707LV15
3C707LV19
3C707LW12
(57)【要約】
【課題】多関節ロボットの意図しない挙動を効率よく抑制することが可能なオフラインティーチング方法を提供する。
【解決手段】多関節ロボットのオフラインティーチング方法は、多関節ロボットの仮想化モデルが取り得る姿勢のうち、仮想化モデルの特異点と特異点近傍とを含む範囲を、シミュレータが決定するステップと、シミュレータが、仮想化モデルにおける各関節の角度を制御することにより、仮想化モデルの姿勢を第1の姿勢から第2の姿勢へと遷移させるステップとを備える。仮想化モデルの姿勢を第1の姿勢から第2の姿勢に遷移させるステップでは、仮想化モデルの姿勢が範囲外のときには、シミュレータは、ヤコビ行列を用いて各関節の角度を算出し、仮想化モデルの姿勢が範囲内のときには、シミュレータは、予め生成された学習済みモデルを用いて各関節の角度を算出する。
【選択図】
図22
【特許請求の範囲】
【請求項1】
シミュレータを用いた多関節ロボットのオフラインティーチング方法であって、
前記多関節ロボットの仮想化モデルが取り得る姿勢のうち、前記仮想化モデルの特異点と特異点近傍とを含む範囲を、前記シミュレータが決定するステップと、
前記シミュレータが、前記仮想化モデルにおける各関節の角度を制御することにより、前記仮想化モデルの姿勢を第1の姿勢から第2の姿勢へと遷移させるステップとを備え、
前記仮想化モデルの姿勢を前記第1の姿勢から前記第2の姿勢に遷移させるステップでは、
前記仮想化モデルの姿勢が前記範囲外のときには、前記シミュレータは、ヤコビ行列を用いて各前記関節の角度を算出し、
前記仮想化モデルの姿勢が前記範囲内のときには、前記シミュレータは、予め生成された学習済みモデルを用いて各前記関節の角度を算出する、多関節ロボットのオフラインティーチング方法。
【請求項2】
前記範囲は、前記仮想化モデルの姿勢を変化させる速度に応じて個別に決定される、請求項1に記載の多関節ロボットのオフラインティーチング方法。
【請求項3】
前記速度が第1の速度の場合の前記範囲は、前記速度が第1の速度よりも遅い第2の速度の場合の前記範囲よりも広い、請求項2に記載の多関節ロボットのオフラインティーチング方法。
【請求項4】
前記範囲は、前記多関節ロボットの仮想化モデルが取り得る姿勢のうち、前記仮想化モデルにおける複数の前記関節のうちの所定の関節の角速度が、前記所定の関節を動かすモータの最高回転速度を超える範囲である、請求項1に記載の多関節ロボットのオフラインティーチング方法。
【請求項5】
Nを3以上の自然数とし、jを1以上かつN-2以下の任意の自然数とすると、
前記多関節ロボットは、第1関節から第N関節を有するN軸の垂直多関節ロボットであり、
第j関節と、第j関節の隣の隣の第j+2関節とを結ぶ線分上に、第j関節と第j+2関節との間の第j+1関節が位置しており、
前記第j関節の回転角度を角度θ
j、前記第j+1関節の回転角度を角度θ
j+1、前記第j+2関節の回転角度を角度θ
j+2とすると、
前記学習済みモデルは、入力を以下の式(1)に示す3行3列の回転行列
j-1R
j+2とし、かつ、出力を角度θ
j、θ
j+1、θ
j+2とした教師データを用いて生成されたものである、請求項1から4のいずれか1項に記載の多関節ロボットのオフラインティーチング方法。
【数1】
【請求項6】
前記Nは6であり、前記jは4であり、
前記教師データにおける、角度θ4および角度θ6は、0°以上かつ180°以下であり、角度θ5は-100°以上かつ100°以下である、請求項5に記載の多関節ロボットのオフラインティーチング方法。
【請求項7】
前記学習済みモデルは、前記回転行列j-1Rj+2を入力として受け付けることにより、各前記関節の角度として、前記角度θj、θj+1、θj+2を出力する、請求項5に記載の多関節ロボットのオフラインティーチング方法。
【請求項8】
コンピュータに、請求項1に記載の多関節ロボットのオフラインティーチング方法を実行させる、プログラム。
【請求項9】
請求項1に記載の多関節ロボットのオフラインティーチング方法によって生成されたオフラインティーチングデータに基づいて動作する、多関節ロボット。
【請求項10】
情報処理装置であって、
プロセッサと、
多関節ロボットのシミュレーションプログラムが格納されたメモリとを備え、
前記プロセッサは、前記シミュレーションプログラムを実行することにより、
前記多関節ロボットの仮想化モデルが取り得る姿勢のうち、前記仮想化モデルの特異点と特異点近傍とを含む範囲を決定し、
前記仮想化モデルにおける各関節の角度を制御することにより、前記仮想化モデルの姿勢を第1の姿勢から第2の姿勢へと遷移させ、
前記プロセッサは、前記仮想化モデルの姿勢を前記第1の姿勢から前記第2の姿勢に遷移させる際に、前記仮想化モデルの姿勢が前記範囲外のときには、ヤコビ行列を用いて各前記関節の角度を算出し、前記仮想化モデルの姿勢が前記範囲内のときには、予め生成された学習済みモデルを用いて各前記関節の角度を算出する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、多関節ロボットのオフラインティーチング方法、プログラム、多関節ロボット、および、情報処理装置に関する。
【背景技術】
【0002】
従来、産業用ロボットとして多関節ロボットが知られている。このような多関節ロボットを生産ライン等で使用する場合、多関節ロボットに所望の動作を行わせるために、事前に多関節ロボットに対してティーチングを行う必要がある。
【0003】
このようなティーチングの手法として、オンラインティーチングと、オフラインティーチングとが知られている。オンラインティーチングは、ティーチングペンダントを用いて、現場でロボットに直接ティーチングを行う手法である。オフラインティーチングは、コンピュータ上でティーチングデータを生成し、かつ当該ティーチングデータをロボットへ送信することにより、当該ロボットに対してティーチングを行う手法である。前者のオンラインティーチングは、生産ラインを停止させた状態で、専門的な教育を受けた作業員が行う必要がある。このため、近年、後者のオフラインティーチングが積極的に活用されている。
【0004】
オフラインティーチングを行う際に、多関節ロボット姿勢(マニピュレータ手先の位置および姿勢)から各関節の変位を求める必要がある。このような運動学は、「逆運動学」と称される。逆運動学の解法として、局所的に線形な関係を作って各関節の変位を求めるヤコビ法が知られている。ヤコビ法では、局所的な線形空間で逆問題を解き、次の局所的な線形空間で逆問題を解くといったことが繰り返される。その際、制御したい変数の微分(マニピュレータ手先の位置および姿勢の微分)をどれだけ小さくしたとしても、制御する変数(当該リンクを移動させる関節の変位)が発散してしまうことが起こる。このようなロボットの姿勢は、「特異点」と称されている。特異点は、ロボットの構造上、制御できなくなる姿勢である。なお、マニピュレータ手先とは、エンドエフェクタの部分を指す。
【0005】
特開2006-227724号公報(特許文献1)には、位置指令と関節データと特異点領域情報とに基づいてロボットが特異点領域に進入したか否かを判定する進入判断部と、進入判断部の判定結果に基づいて起動され、特異点領域に進入したロボットが特異点領域を通過する際の位置指令を生成出力する特異点通過位置指令生成部を具備する特異点通過位置生成部とを備えたロボットの制御装置が開示されている([要約])。
【0006】
また、日本工業規格(JIS)のB8439-1992(特許文献2)には、ロボットの手首部分の形態として、FLIPと、NONFLIP(FLIPの形態から、手首部の姿勢を変えずに、腕を腕の軸回りに180°回転させた形態)といったフラグが定義されている。
【0007】
上述した特許文献1の制御装置は、ロボットに対して手首部分の動作を指令する際に、FLIPと、NONFLIPとの何れかを指定する。具体的には、当該制御装置は、常時、FLIPの姿勢とNONFLIPの姿勢とを計算し、参照位置との差が小さい方を採用する。参照位置は、始点から終点を関節補間したときの角度である。具体的には、参照位置は、特異点領域の進入側の関節データと、退出側の関節データと、補間周期とに基づき算出される。
【0008】
また、近年、様々な分野で、ニューラルネットワークを有する学習済みモデルを用いた演算処理がなされている。たとえば、特開平6-339884号公報(特許文献3)には、ニューラルネットワークによるマニピュレータの逆運動学モデルの学習方法が開示されている。
【0009】
詳しくは、特許文献3では、マニピュレータの手先の位置と姿勢pとからマニピュレータの各関節角度θへの関数fと三角関数(正弦、余弦)との合成関数でありかつ不連続な領域のない関数としてg1=sin(f(p))=sinθおよびg2=cos(f(p))=cosθを考えて、マニピュレータの手先の位置と姿勢pを入力としてsinθとcosθとを出力とするようなニューラルネットワークによって、逆キネマティクスモデルの学習を行なう([要約])。このような構成により、学習しようとする逆キネマティクスモデルの入力pと出力θとの関数fに不連続な領域があっても、マニピュレータの作業領域を分割することなく、作業領域全体の関数fを一つのニューラルネットワークで学習可能としている([要約])。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006-227724号公報
【特許文献2】日本工業規格(JIS)B8439-1992(産業用ロボット-プログラム言語SLIM)
【特許文献3】特開平6-339884号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
特異姿勢を通過するためにはロボットの姿勢を一意に決定する必要がある。このため、特許文献1では、手首特異姿勢を通過する場合には、FLIPの姿勢(1つ目の解)とNONFLIPの姿勢(2つ目の解)との各々において参照位置(基準の関節角度)との差を算出し、かつ、算出結果に基づいてFLIPの姿勢とNONFLIPの姿勢とのうちの何れかを選択する必要がある。また、特許文献1では、手首特異姿勢以外の特異姿勢(肩特異姿勢、肘特異姿勢)には対応できない。
【0012】
特許文献3では、「(x,y)から各関節角度の正弦および余弦である(sinθ1,cosθ1,sinθ2,cosθ2)への関数には不連続な領域はない(特異点は除く)ので、ニューラルネットワークに学習させることが可能である。」との開示があるように、特異点およびその近傍を学習対象とはしていない。
【0013】
本開示は、特異点およびその近傍において、多関節ロボットの意図しない挙動(暴走、停止等)を効率よく抑制することが可能なオフラインティーチング方法、プログラム、多関節ロボット、および、情報処理装置を提供することにある。
【課題を解決するための手段】
【0014】
本開示のある局面に従うと、シミュレータを用いた多関節ロボットのオフラインティーチング方法は、多関節ロボットの仮想化モデルが取り得る姿勢のうち、仮想化モデルの特異点と特異点近傍とを含む範囲を、シミュレータが決定するステップと、シミュレータが、仮想化モデルにおける各関節の角度を制御することにより、仮想化モデルの姿勢を第1の姿勢から第2の姿勢へと遷移させるステップとを備える。仮想化モデルの姿勢を第1の姿勢から第2の姿勢に遷移させるステップでは、仮想化モデルの姿勢が範囲外のときには、シミュレータは、ヤコビ行列を用いて各関節の角度を算出し、仮想化モデルの姿勢が範囲内のときには、シミュレータは、予め生成された学習済みモデルを用いて各関節の角度を算出する。
【0015】
本開示の他の局面に従うと、プログラムは、コンピュータに、上記多関節ロボットのオフラインティーチング方法を実行させる。
【0016】
本開示のさらに他の局面に従うと、多関節ロボットは、多関節ロボットのオフラインティーチング方法によって生成されたオフラインティーチングデータに基づいて動作する。
【0017】
本開示のさらに他の局面に従うと、情報処理装置は、プロセッサと、多関節ロボットのシミュレーションプログラムが格納されたメモリとを備える。プロセッサは、シミュレーションプログラムを実行することにより、多関節ロボットの仮想化モデルが取り得る姿勢のうち、仮想化モデルの特異点と特異点近傍とを含む範囲を決定し、仮想化モデルにおける各関節の角度を制御することにより、仮想化モデルの姿勢を第1の姿勢から第2の姿勢へと遷移させる。プロセッサは、仮想化モデルの姿勢を第1の姿勢から第2の姿勢に遷移させる際に、仮想化モデルの姿勢が範囲外のときには、ヤコビ行列を用いて各関節の角度を算出し、仮想化モデルの姿勢が範囲内のときには、予め生成された学習済みモデルを用いて各関節の角度を算出する。
【発明の効果】
【0018】
本開示によれば、特異点およびその近傍において、多関節ロボットの意図しない挙動を効率よく抑制可能となる。
【図面の簡単な説明】
【0019】
【
図1】オフラインティーチング用システムの概略構成を示した図である。
【
図2】ロボットを簡略化した構造を示した図である。
【
図3】ロボットの各リンクの座標系を説明するための図である。
【
図7】仮想化モデルの手先のY軸方向の速度を100m/sとし、X軸方向の速度とZ軸方向の速度とをゼロとしたときのシミュレーション結果と、実機におけるサーボモータの回転速度の測定値とを示した図である。
【
図8】手先のY軸方向の速度を300mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
【
図9】手先のY軸方向の速度を500mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
【
図10】手先のY軸方向の速度を1200mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
【
図11】Y軸方向にのみ手先速度を持つ場合における特異点近傍の範囲を示した図である。
【
図13】特異点および特異点近傍と、それ以外の範囲(姿勢範囲)とにおける、関節の角度の計算方法を説明するための模式図である。
【
図14】第4関節の角度変域を0°以上、かつ180°以下に制限した場合を示している。
【
図15】中間層を1層のみとし、かつニューロン数を1から50まで変化させたときの検証データの二乗平均平方根誤差を示した図である。
【
図16】ニューロン数が15である中間層の層数を1層から10層まで変化させたときの検証データの二乗平均平方根誤差を示した図である。
【
図17】学習済みモデルの性能分析として、テストデータに関する第4関節の回帰プロットを示した図である。
【
図18】テストデータに関する第5関節の回帰プロットを示した図である。
【
図19】テストデータに関する第6関節の回帰プロットを示した図である。
【
図20】第4関節の角度のシミュレーション結果を示した図である。
【
図21】第6関節の角度のシミュレーション結果を示した図である。
【
図22】オフラインティーチングの際の情報処理装置で実行される処理の流れを示すフロー図である。
【発明を実施するための形態】
【0020】
以下、図面を参照しつつ、本発明の実施の形態に係るオフラインティーチング用システムについて説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0021】
<A.システム構成>
図1は、オフラインティーチング用システムの概略構成を示した図である。
図1に示されるように、オフラインティーチング用システム1は、情報処理装置10と、ロボットシステム20とを備える。
【0022】
情報処理装置10は、シミュレータとして機能する。情報処理装置10は、典型的には、汎用のコンピュータである。情報処理装置10は、プロセッサ11と、メモリ12と、入力装置13と、表示装置14と、通信インターフェイス15と、バス16とを含む。メモリ12には、仮想化モデル200、シミュレーションプログラム300、オペレーティングシステム(図示せず)等の各種のプログラムおよび各種のデータが予め記憶されている。プロセッサ11と、メモリ12と、入力装置13と、表示装置14と、通信インターフェイス15とは、バス16によって通信可能に接続されている。
【0023】
ロボットシステム20は、ロボットコントローラ21と、ロボット22とを含む。ロボットコントローラ21は、ロボット22と通信可能に接続されている。ロボットコントローラ21は、ロボット22の動作(姿勢)を制御する。
【0024】
仮想化モデル200は、シミュレーションのために、ロボット22を仮想化したモデルである。シミュレーションプログラム300は、オフラインティーチング用のプログラムである。シミュレーションプログラム300は、プロセッサ11によって実行される。詳細については後述するが、シミュレーションプログラム300は、ヤコビ行列を用いた数値解法を実行する数値解法プログラム310と、学習済みモデル320とを含む。
【0025】
詳しくは、仮想化モデル200の開始姿勢から終了姿勢までの軌道(動作速度を含む経路情報)が入力装置13を介して情報処理装置10に入力されると、プロセッサ11は、当該経路情報と仮想化モデル200とをシミュレーションプログラム300に入力して、シミュレーションプログラム300を実行する。これにより、ティーチングデータが生成される。生成されたティーチングデータは、通信インターフェイス15を介して、ロボットコントローラ21に送られる。これにより、ロボット22のオフラインティーチングは、終了する。
【0026】
<B.ロボットの概要>
図2は、ロボット22を簡略化した構造を示した図である。
図2に示されるように、ロボット22は、本例では、6軸の多関節ロボットである。詳しくは、ロボット22は、6自由度の垂直多関節ロボット(マニピュレータ)である。以下では、このような構成の多関節ロボットを例に挙げて説明する。
【0027】
ロボット22は、第1関節(第1軸)201と、第2関節(第2軸)202と、第3関節(第3軸)203と、第4関節(第4軸)204と、第5関節(第5軸)205と、第6関節(第6軸)206と、7つのリンク250~256とを備える。各リンクは、それぞれ、腕の一部である。
【0028】
第1関節201から第6関節206を人の動きに対応付けると、以下のとおりである。第1関節201は、腰を回転させる軸である。第2関節202は、肩の関節を動かす軸である。第3関節203は、肘の関節を動かす軸である。第4関節204は、手首を回転させる軸である。第5関節205は、手首を曲げる軸である。第6関節206は、指先を回転させる軸である。
【0029】
リンク250は、土台と第1関節201とを連結する。リンク251は、第1関節201と第2関節202とを連結する。リンク252は、第2関節202と第3関節203とを連結する。リンク253は、第3関節203と第4関節204とを連結する。リンク254は、第4関節204と第5関節205とを連結する。リンク255は、第5関節205と第6関節206とを連結する。リンク256の先端には、エンドエフェクタ290が取り付けられる。
【0030】
ロボット22は、関節毎に、当該関節を駆動するサーボモータを備えている。ロボットコントローラ21からサーボモータに指令が送られることにより、当該サーボモータが指令に応じて回転する。これにより、指令を受けたサーボモータに対応する関節が駆動する。
【0031】
図3は、ロボット22の各リンクの座標系を説明するための図である。
図3に示されるように、ロボット22は、7つのリンク座標系Σ
i(0≦i≦6)が存在する。各リンク座標系Σ
iは、X
i軸とY
i軸とZ
i軸とからなる3次元直交座標系である。また、以下では、各関節の角度を、θ
iとする。なお、本例では、各座標系間の距離d1,d2,d3,d4,d5,d6を、それぞれ、640mm、1190mm、200mm、305mm、1160mm、225mmとした。
【0032】
<C.特異点と特異点近傍>
以下では、特異点と特異点近傍とについて説明する。具体的には、先ず、特異点について簡単に説明する。次いで、特異点近傍について説明する。その後、本シミュレーションを行う際の特異点と特異点近傍との設定方法について説明する。
【0033】
(c1.特異点)
以下では、xは、直交座標系におけるベクトルを表し、かつ、ロボット22の先端部の位置と姿勢とを示す。3次元直交座標系において、xは、位置と回転角とを表す。qは、関節座標系における姿勢を示す変数(ベクトル)である。この場合、ロボット22の仮想化モデル200は、以下の式(1)のように記述される。
【0034】
【0035】
式(1)において、f(q)は変数qの非線形な関数である。一連の所定の先端部の位置xに対する変数qを計算する必要がある。そこで、以下の式(2)のように、式(1)の逆関数を求めることが必要となる。
【0036】
【0037】
なお、式(2)において、右辺はqからxへの逆写像を表している。式(2)を解析的に求めることは負荷が大きい。このため、式(2)を解く数値的な方法では、式(1)の両辺を時間微分する。これにより、運動学的な以下の式(3)の関係が得られる。
【0038】
【0039】
式(3)を変形すると、式(4)が得られる。
【0040】
【0041】
ただし、J(q)は、変数に依存したヤコビ行列(ヤコビアン)である。J(q)は、式(5)に示すように、f(q)をqで微分して得られる。
【0042】
【0043】
ヤコビ行列は、変数qに依存するため、時間的に変化する関数である。このため、特異状態と呼ばれる特定の状態において、J(q)のランク(行列のランク)が下がる。このため、与えられた軌道dxに対して、式(2)の逆変換は任意の大きい値dqを導くことになる。任意の大きい値dqを導くと、軸が高速に回転することになり、ロボット22が暴走してしまう。
【0044】
このように、制御したい変数の微分(xの時間微分)をどれだけ小さくしたとしても、制御する変数(qの時間微分)が発散してしまうことが起こる。このようなロボット22の姿勢が「特異点」である。6軸の多関節ロボットであるロボット22には、以下のような3つの特異点(「特異姿勢」とも称される)がある。
【0045】
図4は、手首特異姿勢を示した図である。
図4に示すとおり、第4関節204と第6関節206とが一直線上で、この姿勢から手先(すなわち、エンドエフェクタ290)をY方向に移動させるか、手先をY方向に移動させながら当該姿勢を通過しようとすると、第4関節204および第6関節206に逆方向で非常に大きい軸角速度が指令され、その結果、ロボット22が暴走する。このとき、手先をZ方向に移動させたとしても暴走は起こらない。
【0046】
図5は、肩特異姿勢を示した図である。
図5に示されるように、破線で示すように、第1関節201の回転軸上に第5関節205がある場合、特定の方向に手先を移動させたときにロボット22が暴走する。
【0047】
図6は、肘特異姿勢を示した図である。
図6に示されるように、第2関節202と、第3関節203と、第5関節205とが一直線上にある場合、特定の方向に手先を移動させたときにロボット22が暴走する。
【0048】
以下では、説明の便宜上、
図4に示した手首特異姿勢に着目して説明する。
【0049】
(c2.特異点近傍)
可操作度wを以下の式(6)で定義した場合、可操作度wは、特異点からは離れるにつれて大きくなる。なお、「可操作度」とは、ロボットアーム先端に取付けられたエンドエフェクタ290の位置および姿勢をどの程度自由に操作できるかを定量的に評価するための運動学的指標の一つである。
【0050】
【0051】
以下の式(7)は、上述した式(4)を変形したものである。
【0052】
【0053】
式(6)では、可操作度は、ヤコビ行列の行列式しか考慮していない。式(6)では、ロボット22の手先速度ベクトルは考慮されていない。しかしながら、式(7)に示されるように、関節の角速度(qの時間微分)は、ヤコビ行列の行列式の逆数と、ヤコビ行列の余因子行列(adj(J))と、手先速度のベクトル(xの時間微分)とから決定される。特異点近傍での関節の暴走は、関節の角速度から決定されるため、特異点近傍は、関節の角速度で定義されるべきである。なお、本例では、角速度の単位を、「rpm」とする。
【0054】
そこで、本実施の形態では、以下の式(8)に示すように、シミュレーションにて指令される関節の角速度が、ロボット22の図示しないサーボモータ(詳しくは、当該関節を駆動するサーボモータ)の最高回転速度を上回る範囲を、「特異点近傍」と定義する。なお、式(8)の右辺は、サーボモータの最高回転速度である。
【0055】
【0056】
具体的には、仮想化モデル200における複数の関節のうちの所定の関節の角速度(rpm)が、当該所定の関節を動かすモータ(仮想モータ)の最高回転速度(rpm)を超えた範囲を、「特異点近傍」と定義する。モータの最高回転速度としては、たとえば、当該モータ(実機)のカタログ値を用いることができる。
【0057】
より詳しくは、特異点においても、ミュレーションにて指令される関節の角速度がサーボモータの最高回転速度を上回る。それゆえ、関節の角速度がサーボモータの最高回転速度を上回る範囲には、特異点と特異点近傍とが含まれることになる。
【0058】
図7から
図10は、第4関節204についての特異点近傍を説明する図である。
図7は、仮想化モデル200の手先のY軸方向の速度を100m/sとし、X軸方向の速度とZ軸方向の速度とをゼロとしたときのシミュレーション結果(仮想化モデル200の第4関節の最大回転速度)と、実機(ロボット22)におけるサーボモータの最大回転速度の測定値とを示した図である。なお、「手先」とは、仮想化モデル200のうち、エンドエフェクタ290のモデル部分の箇所である。
【0059】
シミュレーションでは、先ず、仮想化モデル200の手先をY軸方向に一定の範囲動かした。その後、仮想化モデル200の手先のZ軸方向の高さを所定の高さだけ変更し、仮想化モデル200をY軸方向に再度一定の範囲動かす。このような処理を繰り返した。
【0060】
この場合、仮想化モデル200の手先の高さがZ11(<2030mm)を超えると、仮想化モデル200の第4関節が暴走し始めた。仮想化モデル200の手先の高さがZ12(>2030mm)を超えると、仮想化モデル200の第4関節の暴走が収まった。このため、仮想化モデル200の手先のY軸方向の速度が100m/sのときの、第4軸のZ軸方向の特異点近傍の範囲は、Z11からZ12となった。なお、本例では、Z=2030mmが特異点となっている。
【0061】
特異点(Z=2300mm)で指令回転速度が発散することがわかる。ZがZ11以上、かつZ12以下では、実機のサーボモータは指令回転速度を達成できていない。このようなシミュレーションにより、特異点近傍において関節が急回転することがわかる。
【0062】
さらに、仮想化モデル200の手先のY軸方向の速度を、300mm/sと、500mm/sと、1200mm/sとに変更して、上記と同様のシミュレーションと、実機(ロボット22)におけるサーボモータの回転速度の測定を行った。
【0063】
図8は、手先のY軸方向の速度を300mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
図8に示すように、ZがZ
13(<Z
11)以上、かつZ
14(>Z
12)以下では、実機のサーボモータは指令回転速度を達成できていない。なお、本例では、Z
13は、1950mmであり、Z
14は、2100mmである。
【0064】
図9は、手先のY軸方向の速度を500mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
図9に示すように、ZがZ
15(<Z
13)以上、かつZ
16(>Z
14)以下では、実機のサーボモータは指令回転速度を達成できていない。
【0065】
図10は、手先のY軸方向の速度を1200mm/sとしたときのシミュレーション結果と、サーボモータの回転速度の測定値とを示した図である。
図10に示すように、ZがZ
17(<Z
15)以上、かつZ
18(>Z
16)以下では、実機のサーボモータは指令回転速度を達成できていない。
【0066】
図7から
図10に基づくと、手先速度が速くなるにつれて特異点近傍の範囲が広がることがわかる。これは、式(7)に基づき説明したように、関節の角速度は、ヤコビ行列の逆行列と手先速度とを掛け合わせたものであるため、同じ位置かつ同じ姿勢であっても、手先速度および方向によって関節の角速度が変化するためである。
【0067】
図11は、Y軸方向にのみ手先速度を持つ場合における特異点近傍の範囲を示した図である。詳しくは、
図11は、xの微分の値が以下の式(9)となる場合における特異点近傍の範囲を示した図である。
【0068】
【0069】
より詳しくは、
図11は、X座標をある値で固定したときのYZ平面における特異点近傍の範囲を手先速度別に示した図である。
図11では、式(9)におけるYの微分(Y軸方向の手先速度の大きさ)を以下の式(10)として、以下の式(11)で示される境界線を図示している。各境界線の内側が、特異点近傍となる。また、手先速度の大きさが100mm/sの境界線の内側に、特異点が存在している。
【0070】
【0071】
【0072】
図11に示されるように、Y軸方向の手先速度の大きさが大きくなるほど、特異点近傍の範囲は広くなる。また、Z軸方向にのみ手先速度を持つ場合を考え、かつ上記と同様に手先速度別の特異点近傍の範囲を調べると、手先速度の方向によって特異点近傍の形が変化することが分かった。
【0073】
以上のように、手先速度ベクトルの大きさと方向とによって特異点近傍範囲が変化することが分かった。そこで、本実施の形態では、手先速度ベクトルに応じて定義された特異点近傍を考慮して、オフラインティーチングデータを生成する。
【0074】
<D.ヤコビ行列を用いたときの特異点および特異点近傍での挙動>
上述したように、特異点および特異点近傍では、ヤコビ行列の行列式の値が小さくなり、当該行列式の逆数が発散する。それゆえ、式(7)より、制御する変数(qの時間微分)が発散する。以下、発散態様について具体的に説明する。詳しくは、逆運動学の一般解を説明する。
【0075】
再び、
図3を参照して、第1関節201の角度θ
1と、第2関節202の角度θ
2と、第3関節203の角度θ
3とが求められると、ベースの座標系Σ
0から座標系Σ
3への同次変換行列
0T
3を計算することができる。座標系Σ
3から手先の座標系Σ
6への同次変換行列
3T
6は、以下の式(12)で表すことができる。
【0076】
【0077】
0T6は、座標系Σ0から座標系Σ6への同次変換行列であり、指令値から計算可能である。よって、式(12)の右辺が計算できる。
【0078】
式(12)の左辺の3T6の回転行列成分3R6(すなわち、3T6に含まれる左上の3行3列の小行列(9個の成分))は、以下の式(13)から式(15)に示す、同次変換行列3T4の回転行列成分3R4と、同次変換行列4T5の回転行列成分4R5と、同次変換行列5T6の回転行列成分5R6とを用いて、以下の式(16)となる。なお、Ciは、cosθiを、Siは、sinθiを表す。R11,R21,R31,R12,R22,R32,R13,R23,R33は、それぞれ、回転行列成分3R6の成分(要素)である。また、以下では、回転行列成分を、単に、「回転行列」とも称する。
【0079】
【0080】
【0081】
【0082】
【0083】
式(16)より、第4関節204の角度θ4は、以下の式(17)のとおりとなる。第5関節205の角度θ5は、以下の式(18)のとおりとなる。第6関節206の角度θ6は、以下の式(19)のとおりとなる。ただし、式(17)および式(19)において、kは、任意の整数である。
【0084】
【0085】
【0086】
【0087】
式(17)および式(19)に任意の整数kが含まれているため、角度θ4の解と、角度θ6の解とは、それぞれ、複数個存在することになる。
【0088】
図12は、角度θ
4の解を示した図である。
図12に示されるように、変域を0°≦θ
4≦360°に制限しても解は二つ存在する。
【0089】
第4関節204の角度θ4は、横軸の値(R13/R33)が0となる付近で180°程度変位している。具体的には、ヤコビ行列を用いた数値解法で第4関節204の角度θ4を解いた場合、R13/R33の値が0となる付近(すなわち、特異点)においてヤコビ行列の行列式の逆行列が大きくなるため、R13/R33が負から正へ(あるいは正から負へ)と変化する際に、角度θ4は、90°から270°に急激に変化する。
【0090】
このように、特異点および特異点近傍においてヤコビ行列を用いた数値解法を用いると、ロボット22が暴走することになる。そこで、特異点および特異点近傍においてはヤコビ行列を用いた数値解法(詳しくは、数値解法プログラム310)を用いずに、以下に述べる手法を用いる。
【0091】
<E.学習済みモデルの適用>
(e1.学習済みモデルを適用する範囲)
図13は、特異点および特異点近傍と、それ以外の範囲(姿勢範囲)とにおける、関節の角度の計算方法を説明するための模式図である。すなわち、シミュレーション方法を説明するための図である。
【0092】
図13に示されるように、矢印31に示すように仮想化モデル200の姿勢が、仮想化モデル200の特異点と特異点近傍とを含む範囲30の外にある場合、プロセッサ11はヤコビ行列を用いて、各関節の角度を算出する。詳しくは、プロセッサ11は、数値解法プログラム310を用いて、各関節の角度を算出する。
【0093】
その後、仮想化モデル200の姿勢が、矢印32に示すように、点P1において範囲30内となり、その後、点P2から範囲30外となるまで、プロセッサ11は、予め生成された学習済みモデル320を用いて各関節の角度を各関節の角度を算出する。すなわち、プロセッサ11は、仮想化モデル200の姿勢が範囲30内のときには、学習済みモデル320を用いて各関節の角度を算出する。なお、範囲30の外側面が、特異点近傍を規定する境界面である。
【0094】
矢印33に示すように仮想化モデル200の姿勢が、仮想化モデルの特異点と特異点近傍とを含む範囲30の外になると、プロセッサ11は、再び、ヤコビ行列を用いて各関節の角度を算出する。
【0095】
たとえば、
図13における矢印31の起点の仮想化モデル200の姿勢を第1の姿勢とし、矢印33の終点での仮想化モデルの姿勢を第2の姿勢とすると、プロセッサ11は、以下の処理を行うと言える。
【0096】
プロセッサ11は、仮想化モデル200における各関節の角度を制御することにより、仮想化モデル200の姿勢を第1の姿勢から第2の姿勢へと遷移させる。この際、プロセッサ11は、仮想化モデル200の姿勢が範囲30外のときには、ヤコビ行列を用いて各関節の角度を算出し、仮想化モデル200の姿勢が範囲30内のときには、学習済みモデル320を用いて各関節の角度を算出する。
【0097】
また、範囲30(すなわち、特異点と特異点近傍)について小括すると、以下のとおりである。
【0098】
仮想化モデル200が取り得る姿勢のうち、仮想化モデル200の特異点と特異点近傍とを含む範囲30は、
図11に基づいて説明したように、仮想化モデル200の姿勢を変化させる速度に応じて個別に決定される。
【0099】
仮想化モデル200の姿勢を変化させる速度が第1の速度(
図11の例では、たとえば300mm/s)の場合の範囲30は、当該速度が第1の速度よりも遅い第2の速度(
図11の例では、たとえば100mm/s)の場合の範囲30よりも広い。
【0100】
詳しくは、式(8)に基づいて説明したように、範囲30は、仮想化モデル200が取り得る姿勢のうち、仮想化モデル200における複数の関節のうちの所定の関節の角速度(rpm)が、当該所定の関節を動かすサーボモータの最高回転速度(rpm)を超える範囲である。
【0101】
(e2.学習済みモデルの生成)
次に、範囲30(すなわち、特異点と特異点近傍)で利用する学習済みモデル320の生成方法について説明する。
【0102】
再び
図12を参照して、第4関節204については、上述したように、変域を0°≦θ
4≦360°に制限しても解は二つ存在する。したがって、仮に、入力をR
33,R
13とし、かつ出力をθ
4として学習用のモデル(ニューラルネットワーク)を生成しても、一入力二出力となるため、学習精度は著しく低下する。
【0103】
変域を90°≦θ4≦270°に制限とすると、一入力一出力となる。しかしながら、変域を90°≦θ4≦270°に制限した場合には、R13/R33が負から正へ(あるいは正から負へ)と変化する際に角度θ4は、180°変化してしまう。
【0104】
図14は、変域を0°≦θ
4≦180°に制限した場合を示している。
図14に示すように、変域を0°≦θ
4≦180°に制限することにより、上述した180°の変化を抑えることができる。しかしながら、R
13/R
33の値が0となる付近(すなわち、特異点)において、関数が連続していない。よって、数値解法では解の指定は困難である。
【0105】
そこで、機械学習により、変域を0°≦θ
4≦180°に制限して、解の指定を試みる。具体的には、機械学習により逆運動学モデルを構築するために、学習用データセットを生成する。少なくとも、R13/R33の値と第4関節204の角度とが、
図14の実線のグラフで示す関係を満たすような、学習用データセットを生成する。
【0106】
詳しく説明すると、以下のとおりである。第4関節204、第5関節205、および第6関節206のリンクパラメータの幾何学的誤差が存在した場合の回転行列成分3R6は、式(16)と比較して非常に煩雑となり、解析的に解くことは困難である。そこで、学習用データセットを用いて学習済みモデル320を生成し、生成された学習済みモデル320によって、上記の解を算出する。このように、本実施の形態では、不連続関数をニューラルネットワークで構築する。より詳しく説明すると、以下のとおりである。
【0107】
数値解法による3つの解である角度θ4,θ5,θ6の導出は、以下の式(20)に含まれる9つの非線形連立方程式を解く問題に帰着する。
【0108】
【0109】
ただし、右辺の回転行列成分
3R
6は、角度θ
1と角度θ
2と角度θ
3との解を用いて算出することができる3行3列の行列である。後述する学習用のモデルを予め作成しておき、上記の式(20)に基づき、プロセッサ11に、入力を
3R
6、出力をθ
4,θ
5,θ
6とする機械学習を実行させる。関節角度の180°に近い変位を回避するために、たとえば
図14に示したように、学習用データに意図的な偏りを持たせる。詳しくは、0°≦θ
4≦180°、-100°≦θ
5≦100°、0°≦θ
6≦180°として、0.1°幅の三次元格子点群を作成し、無作為に5000点抽出して5000組の学習用データ(教師データ)とする。
【0110】
なお、三次元格子点群について説明すると、以下のとおりである。角度θ4,θ5,θ6は、それぞれ、1800個、2000個、1800個の要素数を持つベクトルとなるため、これらの角度の組み合わせは,6,480,000,000(=1800×2000×1800)通りとなる。三次元格子点群は、角度θ4,θ5,θ6を各軸とする三次元直交座標系において、上記の6,480,000,000個の各点を示したものである。
【0111】
具体的には、上記のように抽出した角度θ4,θ5,θ6を式(20)の左辺に代入して、入力データを[R11,R21,R31,R12,R22,R32,R13,R23,R33]T、出力データを集出下角度θ4,θ5,θ6とするデータセット(5000組の教師データを含むデータセット)を作成する。作成したデータセットを訓練データとテストデータとに分けて、ニューラルネットワークで学習および検証を行った。なお、本例では、訓練データを3500組、テストデータを750組、検証データを750組とした。
【0112】
次に、学習用のモデルのデータ構造について説明する。ニューラルネットワークの代表的なハイパーパラメータとして、中間層の層数と、ニューロン数とがある。中間層の層数とニューロン数とが多いほど、複雑な学習に適合することが可能である。しかしながら、中間層の層数とニューロン数とが多すぎると、多すぎると過学習をおこし、汎化性能が低くなる。
【0113】
そこで、検証データの二乗平均平方根誤差(RMSE:Root Mean Squared Error)に着目し、ニューロン数および層数と残差との関係を調べた。最初に単層ニューラルネットワークで中間層のニューロン数を確定し、その後、ニューロン数が同数の中間層を増やしていくことで中間層の層数を確定する。
【0114】
図15は、中間層を1層のみとし、かつニューロン数を1から50まで変化させたときの検証データの二乗平均平方根誤差を示した図である。
図15に示した結果に基づき、学習用のモデルの中間層のニューロン数を15とした。
【0115】
図16は、ニューロン数が15である中間層の層数を1層から10層まで変化させたときの検証データの二乗平均平方根誤差を示した図である。
図16に示した結果に基づき、学習用のモデルの中間層の層数を3とした。
【0116】
その他のニューラルネットワークの緒元として、学習用プログラムの学習アルゴリズムはレーベンバーグ・マルカート法とし、誤差関数は平均二乗誤差とした。
【0117】
図17から
図19は、学習済みモデル320の性能分析結果を示した図である。
図17は、テストデータに関する第4関節204の回帰プロットを示した図である。同様に、
図18は、テストデータに関する第5関節205の回帰プロットを示した図である。
図19は、テストデータに関する第6関節206の回帰プロットを示した図である。
【0118】
図17~
図19により、ニューラルネットワークによって逆運動学モデルを精度よく学習することができていることが分かる。ただし、数点がy=x線上から外れ、予測誤差が生じた。
【0119】
(e3.シミュレーション結果)
図20は、第4関節204の角度θ
4のシミュレーション結果を示した図である。
図21は、第6関節206の角度θ
6のシミュレーション結果を示した図である。
【0120】
図20および
図21に示すように、学習済みモデル320を用いた場合、Y座標の値が負から正へと変化する際(特異点または特異点近傍を通過する際)、第4関節204と第6関節206とにおいて180°の急激な変位が生じていないことが分かる。
【0121】
<F.オフラインティーチングの制御構造>
図22は、オフラインティーチングの際の情報処理装置10で実行される処理の流れを示すフロー図である。
【0122】
図22に示されるように、ステップS1において、情報処理装置10(詳しくは、プロセッサ11)は、
図11に示したように、ロボット22の仮想化モデル200の特異点と特異点近傍との範囲を動作速度別に決定する。ステップS2において、プロセッサ11は、ユーザの入力に基づき、仮想化モデル200の移動の開始姿勢から終了姿勢(目標姿勢)までの軌道の指定を受け付ける。当該軌道は、動作速度を含む経路情報である。ステップS3において、ステップS1において決定された複数の範囲のうちから、指定された動作速度に応じた範囲(たとえば、
図13に示す範囲30)を設定する。
【0123】
ステップS4において、プロセッサ11は、指定された軌道に沿って、仮想化モデル200の移動を開始する。すなわち、プロセッサ11は、シミュレーションを開始する。ステップS5において、プロセッサ11は、仮想化モデル200の姿勢が設定された範囲外にあるか否かを判断する。
【0124】
範囲外にあると判断された場合(ステップS6においてYES)、プロセッサ11は、ステップS6において、ヤコビ行列を用いて仮想化モデル200の関節の角度θiを算出し、かつ、算出結果を演算周期に基づく時刻情報に関連付けてメモリ12に記憶させる。すなわち、プロセッサ11は、数値解法プログラム310を用いて、数値解法により関節の角度θiを算出する。
【0125】
範囲内にあると判断された場合(ステップS6においてNO)、プロセッサ11は、ステップS8において、仮想化モデル200の関節の角度θiを上述した学習済みモデル320を用いて算出し、かつ、算出結果を演算周期に基づく時刻情報に関連付けてメモリ12に記憶させる。
【0126】
ステップS7において、プロセッサ11は、仮想化モデル200の姿勢が終了姿勢となったか否かを判断する。終了姿勢となったと判断された場合(ステップS7においてYES)、プロセッサ11は、一連の処理を終了する。終了姿勢となっていないと判断された場合(ステップS7においてNO)、プロセッサ11は、ステップS9において、次の演算周期が到来したか否かを判断する。
【0127】
次の演算周期が到来したと判断された場合(ステップS9においてYES)、プロセッサ11は、処理をステップS5に進める。次の演算周期が到来していない場合(ステップS9においてNO)、プロセッサ11は、次の演算周期が到来するまで待つ。
【0128】
上述した処理が情報処理装置10にて終了すると、メモリ12に記憶された情報(すなわち、オフラインティーチングデータ)をロボットシステム20のロボットコントローラ21(
図1参照)に送信する。
【0129】
<G.小括>
(g1.オフラインティーチング方法)
上述した、シミュレータを用いたロボット22のオフラインティーチング方法を小括すると以下のとおりである。
【0130】
(1)オフラインティーチング方法は、ロボット22の仮想化モデル200が取り得る姿勢のうち、仮想化モデル200の特異点と特異点近傍とを含む範囲を決定するステップと、仮想化モデル200における各関節の角度を制御することにより、仮想化モデル200の姿勢を第1の姿勢から第2の姿勢へと遷移させるステップとを備える。
【0131】
仮想化モデル200の姿勢を第1の姿勢から第2の姿勢に遷移させるステップでは、仮想化モデル200の姿勢が上記範囲外のときには、プロセッサ11はヤコビ行列を用いて各関節の角度を算出し、仮想化モデル200の姿勢が上記範囲内のときには、プロセッサ11は学習済みモデル320を用いて各関節の角度を算出する。
【0132】
このような構成によれば、特異点と特異点近傍とを含む範囲においは、学習済みモデル320を用いて各関節の角度を算出するため、ヤコビ行列を用いた数値解法を行う必要がない。また、このような構成によれば、たとえば手首についての特異点と特異点近傍とを含む範囲を通過する場合においては、FLIPの姿勢とNONFLIPの姿勢との各々において基準の関節角度との差を算出する処理と、当該算出結果に基づいてFLIPの姿勢とNONFLIPの姿勢とのうちの何れかを選択する処理とを行う必要がない。
【0133】
このため、上述したオフラインティーチング方法によれば、特異点およびその近傍において、ロボット22の意図しない挙動(暴走、停止等)を効率よく抑制することが可能となる。
【0134】
(2)上述した範囲は、仮想化モデル200の姿勢を変化させる速度に応じて個別に決定される。このような構成によれば、ヤコビ行列の代わりに学習済みモデル320を用いる範囲を、仮想化モデル200の姿勢を変化させる速度に応じて設定することができる。
【0135】
(3)上記速度が第1の速度の場合の範囲は、速度が第1の速度よりも遅い第2の速度の場合の範囲よりも広い。仮想化モデル200の姿勢を変化させる速度が早いほど、特異点近傍の範囲が広くなる。このため、速度が速いほど学習済みモデル320を用いる範囲を広くすることにより、ロボット22の意図しない挙動を抑制することが可能となる。
【0136】
(4)上記範囲は、ロボット22の仮想化モデル200が取り得る姿勢のうち、仮想化モデル200における複数の関節のうちの所定の関節の角速度が、当該所定の関節を動かすモータの最高回転速度を超える範囲である。これにより、特異点および特異点近傍を定義することができる。
【0137】
(5)ロボット22は、6軸の垂直多関節ロボットである。ロボット22の第4関節204の回転角度を角度θ4、第5関節205の回転角度を角度θ5、第6関節206の回転角度を角度θ6とすると、学習済みモデル320は、入力を上述した式(20)に示す3行3列の回転行列3R6とし、かつ、出力を角度θ4、θ5、θ6とした教師データを用いて生成されたものである。
【0138】
(6)教師データにおける、角度θ4および角度θ6は、0°以上かつ180°以下であり、角度θ5は-100°以上かつ100°以下である。これによれば、第4関節204と、第5関節205と、第6関節206とが、急激に変化することを抑制できる。
【0139】
(7)学習済みモデル320は、回転行列3R6を入力として受け付けることにより、各関節の角度として、角度θ4、θ5、θ6を出力する。
【0140】
(g2.情報処理装置10)
情報処理装置10について小括すると、以下のとおりである。
【0141】
情報処理装置10は、プロセッサ11と、ロボット22のシミュレーションプログラム300が格納されたメモリ12とを備える。プロセッサ11は、シミュレーションプログラム300を実行することにより、(i)ロボット22の仮想化モデル200が取り得る姿勢のうち、仮想化モデル200の特異点と特異点近傍とを含む範囲を決定し、(ii)仮想化モデル200における各関節の角度を制御することにより、仮想化モデル200の姿勢を第1の姿勢から第2の姿勢へと遷移させる。
【0142】
プロセッサ11は、仮想化モデル200の姿勢を第1の姿勢から第2の姿勢に遷移させる際に、仮想化モデル200の姿勢が上記範囲外のときには、ヤコビ行列を用いて各関節の角度を算出し、仮想化モデル200の姿勢が上記範囲内のときには、学習済みモデル320を用いて各関節の角度を算出する。また、このような構成によれば、たとえば手首についての特異点と特異点近傍とを含む範囲を通過する場合においては、プロセッサ11は、FLIPの姿勢とNONFLIPの姿勢との各々において基準の関節角度との差を算出する処理と、当該算出結果に基づいてFLIPの姿勢とNONFLIPの姿勢とのうちの何れかを選択する処理とを行う必要がない。
【0143】
このため、情報処理装置10によれば、特異点およびその近傍において、多関節ロボットの意図しない挙動(暴走、停止等)を効率よく抑制することが可能となる。
【0144】
<H.変形例>
(1)ロボット22は6軸に限定されるものではない。上述したような、特異点および特異点近傍において学習済みモデルを用いる処理手法を、N軸(Nは3以上の任意の自然数とする)の多関節ロボットに対しても適用できる。
【0145】
具体的には、上述した学習済みモデルを用いる処理手法は、N個の軸のうち任意の連続する3つの軸(回転軸の仮想軸線同士)が一点で交わる構成を有するロボットに対して適用できる。詳しくは、このような連続する3つの軸の動作に関し、学習済みモデルを適用できる。
【0146】
すなわち、jを1以上かつN-2以下の自然数とすると、上述した学習済みモデルを用いる処理手法は、第j関節と、第j関節の隣の隣の第j+2関節とを結ぶ線分上に、第j関節と第j+2関節との間の第j+1関節が位置するような構成(3つの関節が一直線上になり得る構成)を有するロボットに対して適用できる。たとえば、6軸の例の
図2のように、第4関節204と第6関節206とを結ぶ線分上に第5関節205が位置するような構成であればよい。このような構成であれば、逆運動学の解析解を導出できるためである。
【0147】
この場合、第j関節の回転角度を角度θj、第j+1関節の回転角度を角度θj+1、第j+2関節の回転角度を角度θj+2とすると、学習済みモデルは、入力を以下の式(21)に示す3行3列の回転行列j-1Rj+2とし、かつ、出力を角度θj、θj+1、θj+2とした教師データを用いて生成されたものとすればよい。なお、式(21)は、式(20)をjを用いて拡張したものである。
【0148】
【0149】
なお、このような構成の場合、学習済みモデルは、回転行列j-1Rj+2を入力として受け付けることにより、各関節の角度として、角度θj、θj+1、θj+2を出力することになる。
【0150】
このような構成であっても、特異点およびその近傍において、当該ロボットの意図しない挙動(暴走、停止等)を効率よく抑制することが可能となる。
【0151】
(2)上記においては、関節の角速度と、関節を動かすモータの最高回転速度との単位系として、同一の単位系(rpm)を用いた場合を例に挙げて説明したが、必ずしも、同一の単位系を用いる必要はない。2つのうちの少なくとも一方の単位系が、「rad/s」、「deg/s」、「rps」であってもよい。この場合、「所定の関節の角速度が、前記所定の関節を動かすモータの最高回転速度を超える範囲である」とは、両者の単位を統一したときに(たとえば、一方の単位系を他方の単位系に変換しときに)、このような大小関係があることを含む。
【0152】
今回開示された実施の形態は例示であって、上記内容のみに制限されるものではない。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0153】
1 オフラインティーチング用システム、10 情報処理装置、11 プロセッサ、12 メモリ、13 入力装置、14 表示装置、15 通信インターフェイス、16 バス、20 ロボットシステム、21 ロボットコントローラ、22 ロボット、30 範囲、31,32,33 矢印、200,220 仮想化モデル、201 第1関節、202 第2関節、203 第3関節、204 第4関節、205 第5関節、206 第6関節、250,251,252,253,254,255,256 リンク、290 エンドエフェクタ、300 シミュレーションプログラム、310 数値解法プログラム、320 学習済みモデル。