(57)【要約】【課題】冗長自由度を有するロボットの障害物の回避動作を簡易に決定する。【解決手段】制御装置１０は、冗長自由度を有するロボットが有する手先の作業空間上における位置姿勢の指令値を受け付ける指令値取得部１４と、指令値に基づいて手先の位置姿勢を指令値から所定範囲に維持しつつ、ロボットの各リンクと障害物との最近接距離および近接方向を求め、最近接距離が最小のリンクｉを仮想的な手先と見做し、該リンクの最近接距離と近接方向に基づいて、該リンクの回避動作を決定する手先位置姿勢計算部１６及び回避動作決定部１８と、を備える。【選択図】図１
2016043449.tif 000002
【特許請求の範囲】
【請求項１】
冗長自由度を有するロボットの動作を決定するロボット動作決定装置であって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付ける受付部と、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する決定部と、を備えるロボット動作決定装置。
【請求項２】
前記決定部は、前記特定リンクの回避動作を決定する際に、前記障害物との距離が最短の前記特定リンク上の点を特定し、前記最近接距離と前記近接方向と前記点に基づいて、前記特定リンクの回避速度ベクトルを決定する、ことを特徴とする請求項１に記載のロボットの動作決定装置。
【請求項３】
前記決定部は、
前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルと前記特定リンクの回避速度ベクトルとの関係を算出し、
前記関係を用いて、前記特定リンク上の前記点における前記回避速度ベクトルを前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルに変換することを特徴とする請求項２に記載のロボットの動作決定装置。
【請求項４】
前記決定部は、前記ロボットの前記ベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルを前記ロボットの機構系全体の零空間に射影して、前記ロボットの機構系全体での回避動作を決定することを特徴とする請求項３に記載のロボットの動作決定装置。
【請求項５】
コンピュータに、冗長自由度を有するロボットの動作を決定させるロボット動作決定プログラムであって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、
処理を前記コンピュータに実行させるロボット動作決定プログラム。
【請求項６】
コンピュータが、冗長自由度を有するロボットの動作を決定するロボット動作決定方法であって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、
処理を前記コンピュータが実行するロボット動作決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット動作決定装置、ロボット動作決定プログラム及びロボット動作決定方法に関する。
【背景技術】
【０００２】
従来、ロボットに作業や動作を教示するには、非常に多くの労力を必要としていた。特に、空間的制約を考慮してロボット動作の教示を行う必要がある場合には、多大な工数を要していた。なお、空間的制約がある場合とは、例えば、既存の生産ラインにロボットを導入する場合のように、ロボットの動作空間が制限される場合や、ロボットが電子機器の組立等、複雑な動作が要求される作業を行う場合のように、ロボット同士を含め、周囲の物体（障害物）との衝突を回避しながら動作させる必要がある場合などである。
【０００３】
また、汎用性を高めるために自由度を多くした（冗長自由度を有する）ロボットシステムを採用する場合、さらに多くの工数を要する。冗長自由度を有するロボットシステムでは、従来は、機構系全体の関節角速度ベクトルと手先速度ベクトルとの線形関係に基づいて、その係数行列であるヤコビ行列の零空間を使う手法（零空間法）や、個別の機構的特徴に基づいて、冗長自由度をパラメータ化することで、冗長自由度を持たない形式に変換し、制御を行う手法が採用されていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−５２６７４号公報
【特許文献２】特開平９−２１２２２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記零空間法の場合、零空間へ射影するベクトルとして、ロボットの関節角速度制限や関節角度制限等のロボット自体の機構制約を反映したものがほとんどであり、障害物の回避等の、ロボットシステムの外部環境の制約を考慮したものはなかった。
【０００６】
一方、上記冗長自由度をパラメータ化する手法の場合、パラメータ化した冗長自由度を使って、障害物との距離に基づいた回避制御等が行われている。しかるに、人腕のような比較的単純な冗長機構の場合は定式化できるが、冗長自由度が多く、複雑な機構の場合は、物理的に意味のあるパラメータを見つけだし、定式化するのは難しい。
【０００７】
１つの側面では、本発明は、冗長自由度を有するロボットの障害物の回避動作を簡易に決定することが可能なロボット動作決定装置、ロボット動作決定プログラム及びロボット動作決定方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
一つの態様では、ロボット動作決定装置は、冗長自由度を有するロボットの動作を決定するロボット動作決定装置であって、前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付ける受付部と、前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する決定部と、を備えている。
【０００９】
一つの態様では、ロボット動作決定プログラムは、コンピュータに、冗長自由度を有するロボットの動作を決定させるロボット動作決定プログラムであって、前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、処理を前記コンピュータに実行させるロボット動作決定プログラムである。
【００１０】
一つの態様では、ロボット動作決定方法は、コンピュータが、冗長自由度を有するロボットの動作を決定するロボット動作決定方法であって、前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、処理を前記コンピュータが実行するロボット動作決定方法である。
【発明の効果】
【００１１】
冗長自由度を有するロボットの障害物の回避動作を簡易に決定することができる。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係る作業装置の構成を概略的に示す図である。
【図２】図１の制御装置のハードウェア構成図である。
【図３】制御装置の処理を示すフローチャートである。
【図４】作業軌道の一例を示す図である。
【図５】図３のステップＳ１６の具体的処理を示すフローチャートである。
【図６】図６（ａ）、図６（ｂ）は、ステップＳ１６の処理を説明するための図（その１）である。
【図７】図７（ａ）〜図７（ｃ）は、ステップＳ１６の処理を説明するための図（その２）である。
【図８】一実施形態の方法を適用したロボットシステムの例を示す図である。
【図９】図９（ａ）〜図９（ｃ）は、図８のロボットシステムにおいて障害物回避を行わない場合の各関節角の変化を示す図である。
【図１０】図１０（ａ）〜図１０（ｃ）は、図８のロボットシステムにおいて障害物回避を行う場合の各関節角の変化を示す図である。
【発明を実施するための形態】
【００１３】
以下、作業装置の一実施形態について、図１〜図１０に基づいて詳細に説明する。図１には、作業装置１００の構成が概略的に示されている。
【００１４】
図１に示すように、作業装置１００は、ロボット５０と、ロボット動作決定装置としての制御装置１０と、を備える。ロボット５０は、例えば、図６（ａ）に示すような垂直多関節ロボットであり、作業空間上における手先の指令値（位置・姿勢の６自由度）に対し、機構的な冗長性（７自由度以上）を有しているものとする。ロボット５０は、ベースと、ベース上に設けられ、関節で接続された複数のリンクと、手先（ハンド）と、を有する。各関節の関節角はエンコーダ等により検出可能となっており、各関節の関節角はモータ等により変更される。ロボット５０においては、各間接の関節角に応じて、手先（ハンド）の位置・姿勢が変更されるようになっている。
【００１５】
制御装置１０は、作業空間上におけるロボット５０の手先の指令値に基づいて、ロボット５０の動作を決定し、ロボット５０を制御する。この場合、制御装置１０は、ロボット５０の周辺に存在する物体（障害物）との衝突を回避するように、ロボット５０の動作を決定する。
【００１６】
図２には、制御装置１０のハードウェア構成が示されている。図２に示すように、制御装置１０は、コンピュータとしてのＣＰＵ（Central Processing Unit）９０、ＲＯＭ（Read Only Memory）９２、ＲＡＭ（Random Access Memory）９４、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、入出力インタフェース９７、表示部９３、入力部９５、及び可搬型記憶媒体用ドライブ９９等を備えている。これら制御装置１０の構成各部は、バス９８に接続されている。制御装置１０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（ロボット動作決定プログラムを含む）、或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（ロボット動作決定プログラムを含む）をＣＰＵ９０が実行することにより、図１に示す各部の機能が実現される。
【００１７】
図１に示すように、制御装置１０は、ＣＰＵ９０がプログラムを実行することにより、関節角取得部１２、受付部としての指令値取得部１４、手先位置姿勢計算部１６、及び回避動作決定部１８としての機能が実現されている。なお、手先位置姿勢計算部１６及び回避動作決定部１８は、決定部の一例として挙げられる。
【００１８】
関節角取得部１２は、ロボット５０の関節角度をロボット５０の各関節に設けられたエンコーダ等から取得する。指令値取得部１４は、ユーザ等から入力された作業空間上におけるロボット５０の手先の指令値（位置・姿勢）を取得し、回避動作決定部１８に送信する。手先位置姿勢計算部１６は、関節角取得部１２が取得した関節角から手先の位置・姿勢を計算する。回避動作決定部１８は、指令値取得部１４が取得した指令値及び手先位置姿勢計算部１６が計算した手先の位置・姿勢に基づいて、手先の位置・姿勢をほぼ指令値どおりに維持したままロボット５０の周辺に存在する障害物に各リンクが接触しないような動き（回避動作）を決定する。また、回避動作決定部１８は、決定した動きとなるように、ロボット５０の動作を制御する。
【００１９】
次に、制御装置１０の処理について、図３、図５のフローチャートに沿って、その他図面を適宜参照しつつ詳細に説明する。なお、図３、図５の処理の前提として、障害物の位置のデータ（各頂点のＸＹＺ座標など）は、回避動作決定部１８が保持しているものとする。
【００２０】
図３の処理では、まず、ステップＳ１０において、指令値取得部１４が、手先の位置姿勢に関する指令値を取得する。なお、指令値は、例えば、図４に破線にて示すような作業対象物上における作業軌道のデータ（手先が位置Ｐ１からＰ２に移動する間の、手先の位置姿勢の時系列データ）であるものとする。
【００２１】
次いで、ステップＳ１１において、関節角取得部１２が、各関節の関節角の初期値（現在の関節角度）0θを取得する。この場合、関節角取得部１２は、ロボットの各関節に設けられたエンコーダ等から関節角の初期値を取得する。
【００２２】
次いでステップＳ１２では、手先位置姿勢計算部１６が、現在の関節角度0θから手先の位置姿勢ｒ（＝0ｒ）を計算する。次いで、ステップＳ１４では、回避動作決定部１８が、手先の位置姿勢の現在値（0ｒ）と、作業軌道上の最初の手先の位置姿勢の目標値（1ｒ）との差分から手先の位置姿勢の変化量（速度ベクトル）Δｒ（＝1ｒ−0ｒ）を計算する。以下、Δｒを手先速度とも呼ぶものとする。
【００２３】
次いで、ステップＳ１６では、回避動作決定部１８が、手先速度Δｒから関節角変化量（関節角速度）Δθを計算するサブルーチンを実行する。本処理では、具体的には、図５のフローチャートに沿った処理が実行される。
【００２４】
ここで、ロボット５０の手先の位置姿勢ｒと関節角度θとの関係は、次式（１）のように、一般に非線形方程式となる。
ｒ＝ｆ（θ）      …（１）
【００２５】
作業空間上でロボット５０が作業を遂行する場合、その指令値は、ロボット５０の手先の位置姿勢ｒとして与えられ、この値からロボット５０の動作として関節角度θを求めることになる。これを式（１）から計算しようとした場合、ｆ（θ）は一般に複雑な非線形連立方程式となるため、この解を解析的に求めることは困難である。
【００２６】
そこで、式（１）の両辺を時間微分して線形関係にした次式（２）を用いる。
【００２７】
【数１】
2016043449.tif 000003
【００２８】
ここで、Ｊ（θ）はヤコビ行列と呼ばれ、その各要素Ｊij（θ）は、次式（３）で定義される。
【００２９】
【数２】
2016043449.tif 000004
式（２）をθドットについて解くと、θとｒの次元が等しい場合は、
【００３０】
【数３】
2016043449.tif 000005
θの次元がｒの次元より大きい場合は、
【００３１】
【数４】
2016043449.tif 000006
となる。本実施形態では、冗長自由度を持つロボットを対象としているので、式（４）’を用いるものとする。
【００３２】
ここで、Ｊ+（θ）はヤコビ行列の擬似逆行列で、Ｊ+＝ＪT・（ＪT・Ｊ）-1、（Ｉ−Ｊ+・Ｊ）は、零空間への射影を表す。
【００３３】
また、ξはθドットと同じ次元の任意ベクトルである。
【００３４】
式（４）’を用いると、機構系全体の関節角速度Δθは、次式（５）のように表される。
【００３５】
【数５】
2016043449.tif 000007
【００３６】
以下、上式（１）〜（５）を踏まえて、図５の処理（ステップＳ１６）について説明する。
【００３７】
図５の処理では、まず、ステップＳ５０において、回避動作決定部１８は、ロボット５０の各リンクと障害物との距離及び近接方向を計算する。具体的には、図６（ａ）において矢印で示すように、ロボットの各リンクと障害物との最近接点（矢印の先の点）および距離（矢印の長さ）を計算する。次いで、ステップＳ５２では、回避動作決定部１８は、障害物との距離が最小となるリンクｉに注目し、該リンクｉを特定リンクとしての仮想的な手先リンク（仮想手先リンクｉ）と見做す。
【００３８】
次いで、ステップＳ５４では、回避動作決定部１８は、仮想手先リンクｉまでの部分的な機構のヤコビ行列Ｊiを計算する。具体的には、以下の方法を用いる。
【００３９】
まず、回避動作決定部１８は、仮想手先リンクｉと障害物の最近接点間を結ぶベクトルを計算し、仮想手先位置の回避（速度）ベクトルをｒiドット（次式（６）参照）とする。ここで、ベクトルの向きは、障害物の点からリンクの点へ向かう方向とし、その大きさは（１／最近接距離）とする（図６（ｂ）参照）。
【００４０】
そして、回避動作決定部１８は、図７（ａ）に示すように、障害物との距離が最短となる仮想手先リンクｉ上の点までの長さを仮想手先リンクｉのリンク長Ｌとする。そして、回避動作決定部１８は、図７（ｂ）に示すように、リンク長をＬと仮定して、仮想手先リンクｉまでの機構におけるヤコビ行列Ｊiを計算する。
【００４１】
次いで、ステップＳ５６では、回避動作決定部１８は、回避ベクトルをベースからリンクｉまでの間の部分的な機構の手先速度とみなし、回避関節角速度ベクトルξを計算する。具体的には、回避ベクトル（ｒiドット）と仮想手先リンクｉまでの機構におけるヤコビ行列Ｊiから次式（６）により回避関節角速度ベクトルξを求める（図７（ｃ）の矢印参照）。
【００４２】
【数６】
2016043449.tif 000008
【００４３】
次いで、ステップＳ５８では、回避動作決定部１８は、ロボットの機構系全体の関節角速度Δθを求める。具体的には、回避動作決定部１８は、上式（５）や上式（６）で求めたξを用いて、Δθを求める。なお、本処理では、制御装置１０は、図７（ｃ）の関節角速度ベクトルをロボット５０の機構系全体の零空間に射影して、ロボットの機構系全体の関節角速度Δθを求めているといえる。その後は、図３のステップＳ１８に移行する。
【００４４】
図３のステップＳ１８に移行すると、回避動作決定部１８は、現在の関節角度θを、関節角速度Δθを用いて更新（θ←θ＋Δθ）する。
【００４５】
次いで、ステップＳ２０では、回避動作決定部１８は、更新された関節角度θnewから手先の位置姿勢ｒnewを更新する。この場合、上式（１）より、ｒnew＝ｆ（θnew）が求まる。
【００４６】
次いで、ステップＳ２２では、回避動作決定部１８は、目標値と更新された関節角度θnewから求まる手先の位置姿勢ｒnewとの誤差（ｒnew−1ｒ）が閾値以下か否かを判断する。誤差が閾値以下の場合、すなわち、手先を目標（指令値）からほとんど変更されることなく障害物を回避できる場合に、ステップＳ２２の判断は肯定され、回避動作決定部１８は、ステップＳ２４に移行する。一方、誤差が閾値より大きい場合には、ステップＳ１４に戻り、ステップＳ１４〜Ｓ２２の処理・判断を繰り返す。
【００４７】
ステップＳ２２の判断が肯定され、ステップＳ２４に移行すると、回避動作決定部１８は、手先の位置姿勢の目標値を次の値（作業軌道上の次の位置姿勢）に更新し、ステップＳ１２に戻る。なお、この場合、回避動作決定部１８は、ｒnewを0ｒと置き換える（0ｒ←ｒnew）。その後は、ステップＳ１２以降の処理を目標値が存在しなくなるまで繰り返す。
【００４８】
なお、制御装置１０は、ロボット５０を駆動する際には、ステップＳ５８で求めたロボットの機構系全体の関節角速度Δθに基づいて、ロボット５０の各モータを駆動する。これにより、障害物とロボット５０との接触を回避しつつ、ロボット５０の手先を作業軌道にほぼ沿って移動させることが可能となる。
【００４９】
ここで、図８には、ロボットとして、垂直多関節ロボットと６自由度ステージとを含む機構（ロボットシステム）を採用した場合の例が示されている。図８では、垂直多関節ロボットと６自由度ステージとにより冗長自由度を有するロボットシステムが実現されている。なお、垂直多関節ロボットと６自由度ステージは、図８に示す囲いの中に格納されているため、当該囲いが垂直多関節ロボットの障害物となりうる。
【００５０】
図９（ａ）〜図９（ｃ）には、図８のロボットシステムが障害物を回避しない場合において、垂直多関節ロボットの手先を６自由度ステージ上に載置された物体の一端から他端へ移動させる場合（図４のＰ１，Ｐ２参照）の各関節角の計算例を示している。また、図１０（ａ）〜図１０（ｃ）には、本実施形態の方法で障害物を回避する場合の各関節角の計算例を示している。なお、図９（ａ）、図１０（ａ）のｑ１〜ｑ６は、垂直多関節ロボットの各関節の角度変化を示し、図９（ｂ）、図１０（ｂ）のｔｈ１〜ｔｈ３は、６自由度ステージの各関節の角度変化（実際には、ＸＹＺ方向の移動量）を示し、図９（ｃ）、図１０（ｃ）のｔｈ４〜ｔｈ６は、６自由度ステージの各関節の角度変化（実際には、θｘ、θｙ、θｚ方向の移動量）を示している。また、各図の横軸は、作業軌道の経由点番号を示している。
【００５１】
この場合、６自由度ステージ上の物体に対する垂直多関節ロボットの手先の軌道は、障害物を回避してもしなくてもほぼ同一となるが、図９、図１０に示すように、各関節の角度変化は、障害物を回避するかしないかに応じて異なるものとなる。
【００５２】
以上、詳細に説明したように、本実施形態によると、指令値取得部１４が、冗長自由度を有するロボット５０が有する手先の作業空間上における位置姿勢の指令値を取得し、回避動作決定部１８が、指令値に基づいて手先の位置姿勢を指令値から所定範囲に（（ｒnew−1ｒ）を閾値以下に）維持しつつ、ロボットの各リンクと障害物との最近接距離および近接方向を求め、最近接距離が最小のリンクｉを仮想的な手先と見做し、該リンクｉの最近接距離と近接方向に基づいて、該リンクｉの回避動作を決定する。これにより、目標となる作業軌道（指令値）を与えることで、ロボットの自由度の冗長性を利用した回避動作を簡易に決定することができる。
【００５３】
また、本実施形態では、回避動作決定部１８は、障害物との最近接距離が最小のリンクｉの回避動作を決定する際に、障害物との距離が最短となるリンク上の点を特定し、最近接距離と近接方向と特定した点とに基づいて回避速度ベクトルを決定する。これにより、回避速度ベクトルを適切に決定することができる。
【００５４】
また、本実施形態では、回避動作決定部１８は、ロボット５０のベースとリンクｉとの間の関節における関節角速度ベクトルとリンクｉの回避ベクトルとの関係（ヤコビ行列）を算出し、この関係を用いて、リンクｉ上の点の回避ベクトルをロボット５０のベースとリンクｉとの間の関節における関節角速度ベクトルに変換する。これにより、回避ベクトルを簡易に関節角速度ベクトルに変換することができる。
【００５５】
また、本実施形態では、回避動作決定部１８は、ロボット５０のベースとリンクｉとの間に存在する関節の関節角速度ベクトルをロボット５０の機構系全体の零空間に射影して、ロボットの機構系全体での回避動作を決定する。これにより、例えば、図８のような垂直多関節ロボットと６自由度ステージとを組み合わせたような複雑なロボットシステムであっても、指令値（目標となる作業軌道）を与えることで、機構全体の関節自由度の冗長性を利用した回避動作制御が可能となる。なお、熟練のオペレータによる手動での教示の場合には、垂直多関節ロボットの単純な軌道追従の教示作業でも１，２時間を要すると想定される。また、図８のような６自由度ステージの教示作業およびそれらの相互衝突可能性を考慮した教示修正を行わなければならないとすると、作業には数日を要すると想定される。これに対し、本実施形態の方法を用いれば、指令値を与えてから数分の処理で教示作業を完了することが可能となる。
【００５６】
なお、上記実施形態では、ロボット５０と関節角取得部１２、指令値取得部１４、手先位置姿勢計算部１６、及び回避動作決定部１８の機能を有する制御装置１０とが接続されている場合について説明したが、これに限られるものではない。例えば、制御装置１０の各部１２，１４，１６，１８の機能を制御装置１０とは異なる装置が有していてもよい。この場合、制御装置１０から当該装置に対して指令値を入力し、当該装置において計算した結果を制御装置１０に対して出力するようにしてもよい。
【００５７】
なお、上記実施形態では、障害物が、図６（ａ）等に示すような障害物や、図８に示すような囲いである場合を示したが、これに限らず、障害物は、ロボット５０の近傍に位置している他のロボットであってもよい。
【００５８】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【００５９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００６０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００６１】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【００６２】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  冗長自由度を有するロボットの動作を決定するロボット動作決定装置であって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付ける受付部と、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する決定部と、を備えるロボット動作決定装置。
（付記２）  前記決定部は、前記特定リンクの回避動作を決定する際に、前記障害物との距離が最短の前記特定リンク上の点を特定し、前記最近接距離と前記近接方向と前記点に基づいて、前記特定リンクの回避速度ベクトルを決定する、ことを特徴とする付記１に記載のロボットの動作決定装置。
（付記３）  前記決定部は、
前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルと前記特定リンクの回避速度ベクトルとの関係を算出し、
前記関係を用いて、前記特定リンク上の前記点における前記回避速度ベクトルを前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルに変換することを特徴とする付記２に記載のロボットの動作決定装置。
（付記４）  前記決定部は、前記ロボットの前記ベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルを前記ロボットの機構系全体の零空間に射影して、前記ロボットの機構系全体での回避動作を決定することを特徴とする付記３に記載のロボットの動作決定装置。
（付記５）  コンピュータに、冗長自由度を有するロボットの動作を決定させるロボット動作決定プログラムであって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、
処理を前記コンピュータに実行させるロボット動作決定プログラム。
（付記６）  前記決定する処理では、前記特定リンクの回避動作を決定する際に、前記障害物との距離が最短の前記特定リンク上の点を特定し、前記最近接距離と前記近接方向と前記点に基づいて、前記特定リンクの回避速度ベクトルを決定する、ことを特徴とする付記５に記載のロボットの動作決定プログラム。
（付記７）  前記決定する処理では、
前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルと前記特定リンクの回避速度ベクトルとの関係を算出し、
前記関係を用いて、前記特定リンク上の前記点における前記回避速度ベクトルを前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルに変換することを特徴とする付記６に記載のロボットの動作決定プログラム。
（付記８）  前記決定する処理では、前記ロボットの前記ベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルを前記ロボットの機構系全体の零空間に射影して、前記ロボットの機構系全体での回避動作を決定することを特徴とする付記７に記載のロボットの動作決定プログラム。
（付記９）  コンピュータが、冗長自由度を有するロボットの動作を決定するロボット動作決定方法であって、
前記ロボットが有する手先の作業空間上における位置姿勢の指令値を受け付け、
前記指令値に基づいて前記手先の位置姿勢を指令値から所定範囲に維持しつつ、前記ロボットの各リンクと障害物との最近接距離および近接方向を求め、前記最近接距離が最小の特定リンクを仮想的な手先と見做し、該特定リンクの最近接距離と近接方向に基づいて、該特定リンクの回避動作を決定する、
処理を前記コンピュータが実行するロボット動作決定方法。
（付記１０）  前記決定する処理では、前記特定リンクの回避動作を決定する際に、前記障害物との距離が最短の前記特定リンク上の点を特定し、前記最近接距離と前記近接方向と前記点に基づいて、前記特定リンクの回避速度ベクトルを決定する、ことを特徴とする付記９に記載のロボットの動作決定方法。
（付記１１）  前記決定する処理では、
前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルと前記特定リンクの回避速度ベクトルとの関係を算出し、
前記関係を用いて、前記特定リンク上の前記点における前記回避速度ベクトルを前記ロボットのベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルに変換することを特徴とする付記１０に記載のロボットの動作決定方法。
（付記１２）  前記決定する処理では、前記ロボットの前記ベースと前記特定リンクとの間に存在する関節の関節角速度ベクトルを前記ロボットの機構系全体の零空間に射影して、前記ロボットの機構系全体での回避動作を決定することを特徴とする付記１１に記載のロボットの動作決定方法。
【符号の説明】
【００６３】
１０  制御装置（ロボット動作決定装置）
１４  指令値取得部（受付部）
１６  手先位置姿勢計算部（決定部の一部）
１８  回避動作決定部（決定部の一部）
５０  ロボット
９０  ＣＰＵ（コンピュータ）
【図１】
2016043449.tif 000009
【図２】
2016043449.tif 000010
【図３】
2016043449.tif 000011
【図４】
2016043449.tif 000012
【図５】
2016043449.tif 000013
【図６】
2016043449.tif 000014
【図７】
2016043449.tif 000015
【図８】
2016043449.tif 000016
【図９】
2016043449.tif 000017
【図１０】
2016043449.tif 000018