以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序などは、本発明の一例である。また、以下の説明において、同じ構成には同じ符号を付けて、適宜、説明を省略する。また、図面は、理解を容易にするために、簡略化している。
(実施の形態)
図1は、本発明の実施の形態のパラレルリンクロボット100の概略構成図である。図1において、パラレルリンクロボット100は、固定プレート2と可動プレート3とを、アーム4およびロッド7で連結している。そして、パラレルリンクロボット100では、このアーム4およびロッド7の位置または姿勢を制御することで、可動プレート3の動作を制御する。
アーム4は、固定プレート2に内蔵されたモータ5の主軸に接続されている。モータ5は、そのフランジ面がプレート6に固定されることにより、固定プレート2に固定されている。プレート6は、固定プレート2に固定されている。モータ5は、関節角度検出手段としてのエンコーダ5aを備えている。エンコーダ5aを用いることで、アーム4の角度を検出することができる。モータ5は、パラレルリンクロボット100の動力源の一例である。図1では、図を簡略化するためにモータ5を一つだけ図示しているが、本実施の形態のパラレルリンクロボット100は、6つのアーム4それぞれにモータ5が接続されている。すなわち、本実施の形態のパラレルリンクロボット100の固定プレート2には、プレート6およびモータ5およびエンコーダ5aが、6つ内蔵されている。
ここで、所定の空間内に設定される固定座標系において、パラレルリンクロボット100の可動プレート3の位置および姿勢が自由に定義されるためには、可動プレート3が6つの自由度(可動軸)を有することが必要である。本実施の形態のパラレルリンクロボット100は、1つのアーム4および1つのロッド7および1つのモータ5からなる組を6組用いると共に、モータ5の回転を1組毎に独立に制御することによって、可動プレート3の位置および姿勢を空間内で自在に設定することができる。つまり、可動プレート3は、6つのアーム4の回転角度に応じてその位置および姿勢が変化する。すなわち、可動プレート3の位置および姿勢は、当該6つのアーム4の回転角度を示すエンコーダ5aの値によって求めることができる。
アーム4は、その一端が固定プレート2に取り付けられており、所定の1軸周りに所定の面内を旋回するように構成されている。ロッド7の両端は、空間内を自由旋回することが可能なユニバーサルジョイント(図10参照)で構成される軸受9で接続されている。ロッド7の一端は軸受9によりアーム4の他端に接続され、ロッド7の他端は軸受9により可動プレート3に接続されている。そして、可動プレート3の位置および姿勢は、アーム4およびロッド7によって連結および拘束されることにより、アーム4およびロッド7の位置および姿勢に応じて、空間内で変化することができる。つまり、可動プレート3の位置および姿勢は、アーム4の回転角度をモータ5などの駆動源で制御することによって、変えることができる。なお、可動プレート3には、例えば、対象物を把持するためのエンドエフェクタ8が取り付けられる。なお、軸受9は、本発明で必要な機能を満たすことができれば、ボールジョイントによる球面対偶などで構成しても良い。
本実施の形態のパラレルリンクロボット100の可動プレート3は、駆動源等の重量物がなく極めて軽量な構造であるため、可動プレート3を高速に動作させる高速動作またはダイレクト教示などに有用である。なお、「ダイレクト教示」とは、可動プレート3をユーザが直接手に取って直接的に移動させ、このユーザの手による教示の動作軌跡を記録することにより、可動プレート3の動作軌跡をダイレクトにパラレルリンクロボット100に教示する方法である。
また、本実施の形態では、パラレルリンクロボット100の現物を見ながら、教示された動作が示す可動プレート3の位置および姿勢を編集して変更することが可能である。このように、本実施の形態では、現物を見ながら編集可能とすることで、教示上省きたいデータの削除またはパラレルリンクロボット100の姿勢の数値での管理など、従来のダイレクト教示では困難であったオペレーションを可能としている。
このパラレルリンクロボット100の教示動作を実現するための各構成は、制御部10によって制御される。制御部10は、例えば、CPUおよびメモリ等が搭載されたコンピュータによって実現される。制御部10は、取得部11と、記憶部12と、判定部13と、作成部14と、編集部15と、変更部16と、再生確認部17と、減速部18と、動作制御部19とを有する。制御部10には、ユーザからの入力を受け付ける入力部20と、制御部10により作成された教示動作を示すグラフやその編集画面を表示するための表示部21とが接続されている。入力部20は、例えば、マウスなどのポインティングデバイスまたはキーボードからなる。表示部21は、例えば、液晶ディスプレイまたはタッチパネルなどのモニタからなる。表示部21がタッチパネルの場合、このタッチパネルは、入力部20としての機能も有する。
取得部11は、ユーザが可動プレート3を直接動かすことでダイレクト教示した教示動作における可動プレート3の各時点での時系列座標値を取得する。取得部11は、予め定められた異なる複数のタイミング(例えば0.15s間隔のタイミング)で、可動プレート3の6軸座標を取得する。このとき、取得部11は、可動プレート3の6軸座標を取得するために、その時の複数のモータ5の各エンコーダ5aが示す値を取得する。つまり、取得部11は、パラレルリンクロボット100の可動プレート3に対するユーザから教示された教示動作を、取得する。具体的には、取得部11は、異なる複数のタイミングにおける可動プレート3の位置を示すX軸およびY軸およびZ軸の座標と、可動プレート3の姿勢を示すθx軸およびθy軸およびθz軸の座標とを、可動プレート3に対するユーザからの教示動作として取得する。また、取得部11は、後述する編集部15により編集された後の教示動作と、再生確認部17によって再生される時(後述参照。以下、「再生確認時」と言う。)の教示動作を、ユーザから教示された教示動作として取得する。ここで、ユーザが可動プレート3を直接動かすことでダイレクト教示された教示動作は、第1教示動作の一例である。
記憶部12は、取得部11により取得された教示動作を記憶する。つまり、記憶部12は、ユーザが可動プレート3を動かすことでダイレクト教示した教示動作、編集後の教示動作、および再生確認時の教示動作を記憶する。
判定部13では、取得部11において取得された教示動作について、パラレルリンクロボット100が再生できる教示動作であるか否かの判定(以下、「教示動作適否判定」と言う。)が行われる。判定部13は、教示動作的否判定を、ロード時および編集後および再生確認時の3つの場面において行う。ここで、ロード時とは、ユーザから直接教示された時点である。ロード時の教示動作は、ユーザが可動プレート3に対してダイレクト教示を行った際に、エンコーダ5aによって異なる複数のタイミングで取得された生データからなる。また、編集後とは、既に取得された教示動作について、ユーザが所望する理想的な動作となるように編集した後である。また、再生確認時とは、取得された教示動作または編集された教示動作について、パラレルリンクロボット100に実際に再生させて確認する時点である。再生確認時の教示動作は、例えば、確認したい教示動作のうちで再生区間および再生時間を指定し、この再生区間および再生時間で再生するときの教示動作である。ここで、ユーザが可動プレート3を直接動かすことでダイレクト教示された後に編集された教示動作は、第2教示動作の一例である。
判定部13での教示動作適否判定について、詳しく説明する。判定部13は、パラレルリンクロボット100の動力源である複数のモータ5が許容するトルクである許容トルクと複数のモータ5の許容可能な回転数である許容回転数とに基づいて、取得部11によって取得されたパラレルリンクロボット100の教示動作を再生できるか否かを判定する。具体的には、判定部13は、複数のモータ5の全てのトルクが許容トルクを基準とする許容トルク基準値以下である場合に、当該教示動作をパラレルリンクロボット100が再生できると判定し、複数のモータ5のいずれかのトルクが許容トルク基準値を超える場合に、当該教示動作をパラレルリンクロボット100が再生できないと判定する。また、判定部13は、さらに、教示動作をパラレルリンクロボット100において再生したと仮定した場合、複数のモータ5の全ての回転速度が許容回転速度を基準とする許容回転速度基準値以下である場合に、当該教示動作をパラレルリンクロボットが再生できると判定し、複数のモータ5のいずれかの回転速度が許容回転速度基準値を超える場合に、当該教示動作をパラレルリンクロボット100が再生できないと判定する。ここで、許容トルクと許容回転速度は、パラレルリンクロボット100が実際に動作可能か否かを判定するための許容判定値の一例である。この許容判定値は、予め設定されて記憶されていても良いし、動作の度に計算して算出しても良い。また、ここで、教示動作をパラレルリンクロボット100が再生できるとは、パラレルリンクロボット100が教示動作を実際に実行可能であり、教示動作をパラレルリンクロボット100の動作が実現可能であることを示す。
作成部14は、取得部11により取得された教示動作を示すグラフを作成する。このグラフは、可動プレート3の位置および姿勢の経時的変化を示すグラフであり、教示の動作軌跡を示すグラフである。すなわち、作成部14は、異なる複数のタイミングにおける可動プレート3の位置を示すX軸およびY軸およびZ軸の座標と、可動プレート3の姿勢を示すθx軸およびθy軸およびθz軸の座標とに基づいて、可動プレート3の教示動作として入力された動作軌跡を示すグラフを作成する。作成部14により作成されたグラフは、記憶部12に記憶される。
編集部15は、入力部20により入力されたユーザからの操作を受け付けて、当該操作に応じて記憶部12に記憶されたグラフを編集する。ここで、入力部20により入力されたユーザからの操作とは、入力部20を用いて表示部21上でボタンが選択された場合、およびタッチパネルである表示部21上でボタンが選択された場合を含む。具体的には、編集部15は、ユーザから指定された時点における可動プレート3の位置および姿勢を示すグラフ上の点(以下、「編集点」と言う。)について、ユーザからの操作に応じて編集点を変更することにより、グラフを編集する。教示の動作軌跡を示すグラフが編集されることにより、教示動作におけるそれぞれの時点での可動プレート3の位置および姿勢が変更される。ユーザは、例えば、後述する表示部21の一例であるディスプレイに表示されたグラフ上の編集点を変更することで、グラフを確認しながら可動プレート3の動作軌跡を編集することができる。表示部21で表示される内容は、可動プレート3の位置および姿勢を示す6軸座標の軸ごとの時系列の動作座標値、または現在のパラレルリンクロボット100の可動プレート3の位置(以下、「現在位置」と言う。)を少なくとも含む。また、編集部15で編集できる機能は、動作座標の追加、削除、圧縮、伸張、平滑化、を少なくとも含む。なお、動作座標の追加、削除、圧縮、伸張、平滑化についての詳細は、後述する。
編集されたグラフが示す教示動作は、編集部15によりグラフが編集された直後に、取得部11により取得される。そして、判定部13は、編集部15により編集されたグラフが示す教示動作をパラレルリンクロボット100において再生したと仮定した場合に、所定の区間において、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。ここでの所定の区間とは、編集された後のグラフにおいて、編集の対象となった編集点より第一所定時間前の第一時点から編集点までの第一区間と、編集点から編集点より第二所定時間後の第二時点までの第二区間とを合わせた区間である。なお、ここで、例えば編集の対象とできるグラフ上の点が、予め定められた異なる複数のタイミングである所定間隔(例えば、0.15s間隔のタイミング)で可動プレート3の位置および姿勢が取得された時の値に対してである場合には、「第一所定時間」および「第二所定時間」は、所定時間である。また、判定部13は、さらに、編集部15により編集されたグラフが示す教示動作が、予め算出されて記憶部12に記憶されたパラレルリンクロボット100の可動範囲内に基づいて、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。
変更部16は、判定部13によってパラレルリンクロボット100が動作できないと判定された場合に、入力部20を介してユーザによって操作されることで編集されたグラフ上の点(編集点)を、編集点を含む所定の区間における複数のモータ5の回転数が許容回転数以下であると共にトルクが許容トルク以下となるように、自動的に変更する。ここでの所定の区間は、第一時点から編集点までの区間および編集点から第二時点までの区間を合わせた区間である。ここで、変更部16によって編集点を自動的に変更する制御は、ユーザによる入力部20からの入力が途絶えた時点(例えば、ユーザがマウスのクリックを解除した時点)で行うことが望ましい。また、変更部16によって編集点が変更されたことがユーザに伝わるように、例えば、変更の状況を表示部21にアニメーション動作で表示することが望ましい。
再生確認部17は、ユーザの入力に基づいて、確認したい教示動作のうちの所定の区間と、教示動作の所定の区間が取得された時の時間よりも短い時間である再生時間とを、受け付ける。ここでの所定の区間とは、第三時点から第四時点までの間の区間である。すなわち、再生確認部17は、グラフにおける第三時点および第三時点よりも後の第四時点と、第三時点から第四時点までの時間よりも短い再生時間とを、受け付ける。なお、再生確認部17により受け付けられた所定の区間の教示動作は、1倍速よりも速い再生速度の教示動作である。そして、再生確認部17で受け付けられた所定の区間の教示動作は、取得部11によって取得され記憶部12に記憶される。このとき、判定部13は、第三時点から第四時点までのグラフが示す教示動作をパラレルリンクロボット100において再生したと仮定した場合、当該教示動作をパラレルリンクロボット100が再生時間で再生できるか否かを判定する。
減速部18は、教示動作をパラレルリンクロボット100が再生できないと判定部13により判定された場合、複数のモータ5のトルクが許容トルク以下となるように、パラレルリンクロボット100の再生速度を遅くする。また、減速部18は、この場合、複数のモータ5のそれぞれの回転速度が許容回転速度以下となるように、パラレルリンクロボット100の再生速度を遅くする。
動作制御部19は、記憶部12に記憶されている教示動作に基づいて、複数のモータ5を制御する制御部である。
以下、現物を見ながら編集が可能な本実施の形態のパラレルリンクロボット100の動作制御について、説明する。
図2は、表示部21に表示される画面イメージを示す図である。
表示部21の画面左側(図2の紙面左側)には、パラレルリンクロボット100の教示動作軌跡が、軸ごとに時系列でグラフ化されている。これら各グラフは、横軸が時間軸であり、縦軸が各軸の座標値である。現在の可動プレート3の位置および姿勢は、現在位置ポインタ31によって示されている。現在位置ポインタ31は、マウスなどの入力部20により、表示部21であるディスプレイ上で操作可能である。パラレルリンクロボット100の可動プレート3の座標は、6軸(X軸、Y軸、Z軸、θx軸、θy軸、θz軸)で管理されている。ここで、現在位置は、現在の可動プレート3の中央の仮想点座標(X軸、Y軸、Z軸)と、この仮想点を含む可動プレート3の面のX軸、Y軸、Z軸の各軸周りの回転量(θx軸、θy軸、θz軸)とで表現される。本実施の形態のパラレルリンクロボット100は、この6軸の座標によって可動プレート3の位置および姿勢を数値管理している。
表示部21の画面右側(図2の紙面右側)には、各種の数値情報21a(現在値、変更値)、設定ボタン21b(追加、削除、変更値に変更、圧縮など)、および動作ボタン21c(再生、コマ送り、停止)が表示されている。これら各種の数値情報21aおよび設定ボタン21bおよび動作ボタン21cは、入力部20の一例であるマウスの操作によって選択され、図2に示す各種設定および動作を実行するための指令を、制御部10に送信する。なお、本実施の形態のパラレルリンクロボット100では、動作ボタン21cが選択された場合、パラレルリンクロボット100は再生モードで動作し、それ以外の場合、パラレルリンクロボット100は編集モードで動作する。
ユーザは、入力部20を介した制御部10での操作によって、現在位置とは別に、動作軌跡の情報の編集対象となる動作指定領域32を設定することができる。動作指定領域32は、開始点33および終了点34を含み、これらの点間の領域として定義される。開始点33は、終了点34と同一か、これよりも時刻の早い側(図2の紙面左側)に設定される必要がある。
編集部15は、ユーザによる設定ボタン21bの選択により、現在位置もしくは動作指定領域32内の動作点群に対して、追加(図2の「現在位置を追加」)、削除(図2の「現在位置を削除」)、変更値に変更(図2の「現在値を変更値に変更」)、圧縮(図2の「指定領域内を圧縮」)、伸張(図2の「指定領域内を伸張」)、平滑化(図2の「指定領域内を平滑化」)を行う。動作点とは、動作指定領域32内の教示動作軌跡上の点である。動作点は、前述のように、例えば0.15sおきに記録された可動プレート3の現在位置である。
ここで、追加とは、設定した動作指定領域32内において、動作指定領域32内の先頭の動作点と同一座標の点を等間隔で生成する機能である。生成された動作点群の座標を変更したい場合は、後述する「変更値に変更」による座標値の変更機能によって最適な座標値へ変更する。
また、削除とは、設定した動作指定領域32内の動作点を削除すると共に、動作指定領域32内において削除された動作点の前後の動作点群を結ぶ機能である。
また、変更値に変更とは、設定した動作指定領域32内の動作点群の座標値を、別途設定された座標値に置き換えることで、座標値を変更する機能である。別途設定される座標値は、ユーザにより設定されてもよいし、予め記憶部12に記憶されたルールに基づいて設定されてもよい。
また、圧縮とは、設定した動作指定領域32内の動作点群に対して、別途設定する間引き数に基づき、該当動作点を削除し、削除された動作点の前後の動作点群を結ぶ機能である。間引き数が1の場合、動作指定領域32内において1つおきの動作点が削除対象となり、動作指定領域32内の動作点群の数は半数となる。間引き数が2の場合、動作指定領域32内において2つおきの動作点が削除対象となり、動作指定領域32内の動作点群の数は2/3となる。
また、伸張とは、設定した動作指定領域32内の動作点群に対して、別途設定する生成数に基づいて該当動作点を追加し、追加された動作点の前後の動作点群を結ぶ機能である。生成数が1の場合、動作指定領域32内において1つおきの動作点が追加対象となり、動作指定領域32内の動作点群の数は2倍となる。生成数が2の場合、動作指定領域32内において2つおきの動作点が追加対象となり、動作指定領域32内の動作点群の数は3/2倍となる。
また、平滑化とは、設定した動作指定領域32内の動作点群に対して、動作点間の連結が滑らかに繋がるように、個々の動作点の座標値を自動変更する機能である。具体的には、平滑化とは、動作点に対し、一般的な近似法に基づいてスプライン関数等を用いて曲線近似し、この曲線上の点となるように動作点の座標値を変更する機能である。
さらに、本実施の形態のパラレルリンクロボット100では、編集後の動作軌跡の確認のために動作指定領域32内で可動プレート3を実際に動作させる指定領域内再生の機能、または、動作点ごとにコマ送りでパラレルリンクロボット100を動作させて動作軌跡を詳細に確認する指定領域内コマ送りの機能が、実行可能である。これらの機能は、制御部10による制御により実行される。
ここで、指定領域内再生とは、動作指定領域32を設定した後に再生ボタン(図2の指定領域内再生のボタン)をユーザが選択することで、可動プレート3が現在位置からグラフ上に設定された動作指定領域32の先頭点が示す位置および姿勢へゆっくりと直線移動し、先頭点への到達後、動作指定領域32内の動作点群を順次トレースする動作である。この指定領域内再生を実行することによって、ユーザは、教示した可動プレート3の教示動作軌跡を、パラレルリンクロボット100の可動プレート3の動作を目視等で直接的に確認することができる。
また、指定領域内コマ送りとは、前述の指定領域内再生での再生中に用いる機能である。指定領域内再生中にコマ送りボタン(図2の指定領域内コマ送りのボタン)をユーザが選択すると、まず、可動プレート3の動作が一時停止する。以降、コマ送りボタンを押すたびに、現在位置より後の動作軌跡上の動作点を、1点ずつトレースする。このように動作点を1点ずつトレースすることによって、ユーザは、パラレルリンクロボット100に教示した教示動作が実際に再生される際の動作軌跡を、目視等で直接的にじっくりと時間をかけて確認することができる。また、コマ送り後に再生ボタンをユーザが選択することで、一時停止を解除し、動作指定領域32内の現在位置より後の動作点群を順次連続的にトレースすることも可能である。
次に、ロード時(ユーザから直接教示された時点)に行われる教示動作適否判定に係る処理(教示動作適否判定処理)について、説明する。
図3は、ロード時の教示動作適否判定の処理の流れを示すフローチャートである。図4は、ダイレクト教示された教示動作を示すグラフのうちの一つの座標軸を示す図である。つまり、図4は、可動プレート3がダイレクト教示されたときに、可動プレート3の位置および姿勢を示す6軸座標のうちの一つの座標軸において、経時的な変化を示すグラフである。ここで、ダイレクト教示された教示動作についての教示動作適否判定の処理を、図3および図4を用いて説明する。なお、ここでは、一つの座標軸について説明するが、6軸座標のうちの他の座標軸についても同様に処理することができる。
まず、ユーザが、パラレルリンクロボット100の可動プレート3に対してダイレクト教示を行って、教示動作軌跡の入力を行う。具体的には、ユーザが可動プレート3を手に持って所望の動作をさせ、当該動作によって経時的に変化する複数のモータ5のエンコーダ5aの値を予め定められた所定間隔(例えば、0.15s間隔)で取得部11により取得することで、教示動作軌跡の入力を行う(S11)。つまり、ここでは、取得部11が教示動作取得ステップとして、パラレルリンクロボット100の可動プレート3に対してユーザからダイレクト教示された教示動作を取得する。取得部11は、このように可動プレート3の位置および姿勢を示す6軸座標を所定間隔毎に取得することにより、動作点群P(n)を得る。この動作点群P(n)は、教示動作を示すためのものである。なお、ステップS11では、予め入力されていた教示動作を取得部11が取得してもよいし、記憶部12に記憶されていた教示動作を取得部11が取得してもよい。
続いて、取得部11により取得されると共に対象となるn点の動作点群P(n)について、判定部13は、動作速度S(n)を算出する(S12)。なお、ここで、動作速度S(n)は、 S(n)=(各軸の変位量)/Δt である。
続いて、このS(n)の最大値であるmax{S(n)}が、第一条件に適合するか否かを確認する(S13)。
ここで、第一条件とは、 max{S(n)}≦(モータの許容回転速度) である。モータの許容回転速度とは、モータ5が許容する回転最高速度である。つまり、判定部13は、パラレルリンクロボット100が教示動作を再生できるか否かの判定として、複数のモータ5の全ての回転速度が、許容回転速度を基準とする許容回転速度基準値(回転最高速度)以下であるときに、当該教示動作をパラレルリンクロボット100が再生できると判定し、複数のモータ5のいずれかの回転速度が許容回転速度基準値を超えるときに、当該教示動作をパラレルリンクロボット100が再生できないと判定する。
続いて、第一条件に適合する場合(S13:yes)、複数のモータ5のモータトルクT(n)に基づいて、ヤコビ行列演算によって各動作点における最大モータトルクmax{T(n)}を算出する(S14)。
続いて、モータトルクT(n)の最大値である最大モータトルクmax{T(n)}が、第二条件に適合するか否かを確認する(S15)。
ここで、第二条件とは、 max{T(n)}≦(モータの許容トルク)×a である。ただし、aは、安全率係数(0<a≦1)であり、(モータの許容トルク)×aは、モータの許容トルクを基準とする許容トルク基準値である。つまり、判定部13は、パラレルリンクロボット100が教示動作を再生できるか否かの判定として、複数のモータ5の全てのトルクが許容トルク基準値以下であるときに、当該教示動作をパラレルリンクロボット100が再生できると判定し、複数のモータ5のいずれかのトルクが許容トルク基準値を超えるときに、当該教示動作をパラレルリンクロボットが再生できないと判定する。
第一条件および第二条件を設定するのは、モータ5の過負荷を防止するためである。モータ5に急峻な動作をさせた場合、モータ5の負荷が高まって過負荷になり、最悪の場合、サーボ制御がダウンすることがある。そのため、第一条件および第二条件を設定して、複数のモータ5の過負荷を防止することが有効である。
以上のように、判定部13は、ステップS12〜ステップS15において、教示動作取得ステップにおいて取得した教示動作をパラレルリンクロボット100において再生したと仮定した場合、パラレルリンクロボット100の動力源である複数のモータ5の許容トルクおよび許容回転速度に基づいて、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。このように、動作判定ステップとして、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。
続いて、第二条件に適合する場合(S15:yes)、当該動作点群P(n)で示される教示動作を、記憶部12に記憶させる(S16)。
また、第一条件および第二条件のいずれか一方に適合しない場合(S13:noおよび/またはS15:no)、動作点群P(n)のうちで上記条件に適合しない箇所が分かるように出力する。ここでは、例えば、表示部に表示されているグラフのうちで上記条件に適合しない範囲について赤などの警告色でエラー表示するなどして、上記条件に適合しない部分であることを通知する(S17)。ここで、エラー表示の方法としては、警告色で表示するほかに、エラーが出たことを警告音で伝える方法、エラーメッセージを表示する方法などを用いることができる。なお、適合しない範囲を警告色でエラー表示すると、エラーが発生した箇所をユーザに伝えることができるため、エラー表示としては特に有効である。
ステップS16またはステップS17が終了すると、ロード時の教示動作適否判定処理を終了する。
図5は、編集後の教示動作について行われる教示動作適否判定に係る処理の流れを示すフローチャートである。図6(a)は、パラレルリンクロボットの可動プレートの動作点を示す図であり、図6(b)は、パラレルリンクロボットの可動プレートの動作点を編集したときのイメージを示す図である。
図5に示す処理フローは、図6(a)に示すような連続する動作点P(n−1)、P(n)、P(n+1)、・・・に対して、変更対象である動作点P(n)がP(n)’に変更されたとき(図6(b)参照)、以下に説明するように処理するフローである。なお、本実施の形態では、動作点P(n)からP(n)’への変更は、表示部21に表示される画面上で入力部20によって動作点P(n)を上下方向にドラッグ&ドロップすることで、直感的に行うことができる。また、動作点P(n)がP(n)’に変更されたときに、制御部10の作成部14は、可動プレート3の位置および姿勢の経時的変化を示すためにグラフ作成ステップで作成されたグラフを編集している。
図5において、まず、編集部15は、入力部20に対するユーザからの操作を受け付けて、当該操作に応じてグラフ作成ステップにより作成されたグラフを編集する(S21)。そして、取得部11は、編集部15により動作点P(n)が編集されたことを認識して(S22)、動作点P(n)が編集された後の教示動作を取得する。
続いて、判定部13は、編集された後のP(n)’の座標が可動範囲内かを判断する(S23)。つまり、判定部13は、編集された後のグラフが示す教示動作が、予め設定されたパラレルリンクロボット100の可動範囲内にあるか否かに基づいて、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。具体的には、予め求めたパラレルリンクロボット100の可動範囲を示す可動範囲マップと教示動作とを比較することにより、編集された後のP(n)’の座標が可動範囲内であるか否かを判定する。可動範囲マップは、例えば3D−CADやシミュレータ等を用いて、予め可動プレート3が動作可能な範囲を求めたものである。この可動範囲マップのイメージを、図7に示す。パラレルリンクロボット100の可動プレート3は、アーム4やロッド7の長さ、軸受9の屈曲範囲などのメカニカルな制約によって、動作可能な領域(可動範囲)が制限される。図7は、上述した制約について、X軸,Y軸,Z軸,θx軸,θy軸,θz軸の軸ごとに分割を行い、各分割交点において動作可能かどうかを判断し、6次元のマトリクスデータに置き換えたものである。なお、各軸の分割交点が離散的なものであるため、対象となるP(n)’が分割交点と一致しているとは限らない。このため、P(n)’に値が近い交点であると共に原点より外側の分割交点を求め、この分割交点が可動範囲内であるか否かを判定する。具体的には、例えば,X軸が・・・,−1,0,1,2,3,・・・と分割されており、P(n)’のX=0.7である場合、X=1を分割交点のX座標として採用する。同様に、X軸以外のY軸,Z軸,θx軸,θy軸,θz軸の軸ごとに分割交点の各軸座標値を求め、これらの座標値によって示される分割交点が、可動範囲内であるか否かを求める。
ここで、P(n)’が可動範囲外であると判定部13で判定された場合(S23:no)、可動範囲外エラーメッセージとして対象点を赤などの警告色でエラー表示するなどして、ユーザに可動範囲外であることを通知する(S26)。
それに対し、P(n)’が可動範囲内であると判定部13で判定された場合(S23:yes)、続いて、P(n−1)〜P(n)’の回転速度およびモータトルクが許容範囲内か否かを判断する(S24)。この判断は、前述の図3にて説明したステップS12〜ステップS15において行われた内容と同様の方法で行う。すなわち、P(n−1)〜P(n)’への移動時間をΔtとすると、 S(n)=(各軸の変位量)/Δt であり、これが第一条件に適合するか否かを判定する。ここで、第一条件とは、 max{S(n)}≦(モータの許容回転速度) である。
また、各動作点におけるモータトルクT(n)を算出し、これが第二条件に適合するか否かを判定する。ここで、第二条件とは、 max{T(n)}≦(モータの許容トルク)×a である。ただし、aは、安全率係数(0<a≦1)である。
なお、P(n)が動作の開始点である場合、ステップS24の判定処理は不要である。
P(n−1)〜P(n)’の回転速度およびモータトルクが許容範囲内にあると判定部13により判定された場合(S24:yes)、P(n)’〜P(n+1)の回転速度およびモータトルクが許容範囲内か否かを判定するする(S25)。この判断もステップS24と同様に、前述の図3にて説明した方法と同様の方法で判断する。また、P(n)が動作の終了点である場合、ステップS25の判定処理は不要である。ステップS24またはステップS25において、モータ5の回転速度やモータトルクに無理があり、動作できないと判定された場合(S24:noまたはS25:no)、対象点を赤などの警告色で表示し、動作負荷オーバーである旨を表示するなどにより、ユーザに通知する(S27)。
つまり、判定部13は、編集された後のグラフにおいて、編集の対象となった編集点であるP(n)’より第一所定時間前の第一時点であるP(n−1)から編集点P(n)’までの第一区間(P(n−1)〜P(n)’)、および、編集点P(n)’から編集点P(n)’より第二所定時間後の第二時点P(n+1)までの第二区間(P(n)’〜P(n+1))が示す教示動作をパラレルリンクロボット100において再生したと仮定した場合、当該教示動作をパラレルリンクロボット100が再生できるか否かを判定する。
P(n−1)〜P(n)’およびP(n)’〜P(n+1)の回転速度およびモータトルクが許容範囲内にあると判定部13により判定された場合(S24:yesおよびS25:yes)、編集された教示動作を記憶部12に記憶させ、表示部21に表示させる(S28)。
ステップS25、ステップS27またはステップS28が終了すると、動作適否判定処理を終了する。
図8は、再生確認時の教示動作について行われる教示動作適否判定に係る処理の流れを示すフローチャートである。図9は、ロボットの動作点変更イメージを示す図であり、図2の紙面左側グラフの一部を模式的に示している。図8および図9を用いて、開始点33から終了点34へパラレルリンクロボット100の可動プレート3の現在位置を示す現在位置ポインタ31を移動させた場合について、説明する。図9は、図2の紙面左側グラフの一部を模式的に示したものである。以下、図9を用いてグラフの一部の座標軸のみ説明するが、その他の座標軸についても同様の考え方を適用する。
図9において、現在位置ポインタ31は、可動プレート3の現在位置を示しており、図2における現在位置ポインタ31と同一である。ユーザは、グラフに表示される教示動作のうちでユーザが指定した動作指定領域32の再生確認を行うときに、動作指定領域32の開始点33と終了点34とを指定する。より具体的には、ユーザは、現在位置ポインタ31を最初に指定した位置を開始点33として指定し、現在位置ポインタ31を時間軸左右方向にドラッグさせてドラッグさせ終わったところを終了点34として指定することで、動作指定領域32が設定されるように処理させることができる。つまり、教示動作を示すグラフ上でユーザが現在位置ポインタ31をドラッグさせて再生させたいと所望した区間(動作指定領域32)において、ドラッグの開始位置が開始点33として認識され、ドラッグの終了位置が終了点34として認識される。そして、再生確認部17は、グラフにおける第三時点(開始点33)および第三時点(開始点33)よりも後の第四時点(終了点34)と、第三時点(開始点33)から第四時点(終了点34)までの時間よりも短い再生時間とを受け付ける。このときの再生時間は、開始点33から終了点34までの時間に対して、現在位置ポインタ31をドラッグさせるのに要した時間である。このようにして、再生確認部17により受け付けられた開始点33、終了点34、および再生時間により示される教示動作が、取得部11により取得される(S31)。
以下、ステップS32〜ステップS35の処理では、判定部13により図3で説明したステップS12〜S15と同様の処理が行われるため説明を省略する。
続いて、第二条件に適合する場合(S35:yes)、パラレルリンクロボット100の可動プレート3を実際に動作させて、次に現在位置ポインタ31が示している時点における可動プレート3の位置および姿勢に、パラレルリンクロボット100の可動プレート3の位置および姿勢を更新する(S36)。
また、第一条件および第二条件のいずれかに適合しない場合(S33:noまたはS35:no)は、ドラッグするスピードが急峻すぎる場合である。つまり、開始点33から終了点34までの間における再生時間が短く、再生速度が速すぎる場合である。この場合は、可動プレート3の動作に構造上の無理が発生するため、開始点33から終了点34までに行われる再生時間を第一条件および第二条件の両方に適合するように長く設定することで、再生速度を遅く設定する(S37)。つまり、ここでは、減速部18が、複数のモータ5の回転速度が許容回転速度以下となるように、パラレルリンクロボット100の再生速度を遅くする。
ステップS36またはステップS37が終了すると、図8に示す処理フローを終了する。
以上説明した、図8に示す処理フローでの処理を行い、動作可能な現在位置ポインタ31をドラッグしてパラレルリンクロボット100を実際に動作させることで、ダイレクト教示した教示動作軌跡や編集内容を、ユーザが目視等で直接的に確認することができる。
本実施の形態に係るパラレルリンクロボット100の教示動作方法では、ダイレクト教示を行った直後のロード時の場合、教示動作に編集を加えた後の場合、および、再生確認時の再生速度を速く設定した場合、の3つの場合の教示動作について、パラレルリンクロボット100の可動プレート3が動作可能であるか否かを判定している。また、教示動作をパラレルリンクロボット100が再生できるか否かを、モータ5が許容する許容回転速度および許容トルクに基づいて、第一条件および第二条件を満たすか否かを用いて判定している。
このため、教示動作を最初に取得したロード時、教示動作に編集を加えた編集後、および再生確認時のように、初めて教示動作を取得した時、または、教示動作に変更が加えられた時における教示動作が、パラレルリンクロボット100で再生可能か否かを確実に判定することができる。そして、判定結果として再生不可である場合には、リアルタイムにユーザに再生不可である旨を通知するため、ユーザはその時に例えば再生不可とならないように編集を行なって、再生不可である教示動作を再生可にすることができる。これにより、パラレルリンクロボット100の動作教示方法として、直感的でわかりやすいダイレクト教示方法を用いつつ、パラレルリンクロボット100の容易な動作教示を可能とする。
また、本実施の形態に係るパラレルリンクロボット100の動作教示方法によれば、動作点の編集中に、予め編集対象となる動作点が動作可能か否かを判定し、動作可能な場合には、パラレルリンクロボット100の可動プレート3の実際の位置および姿勢を動かしながら、実際の動作を見て編集結果の妥当性を直接確認することができる。そのため、従来のダイレクト教示では困難であった簡易かつ直感的なオペレーションが可能となり、その活用の幅を拡大することができ、本技術分野や産業の進展に大きく寄与することが可能である。
ここで、本実施の形態のパラレルリンクロボット100におけるジョイント部の構造を、図10(a)、(b)を用いて説明する。
図10(a)は、本実施の形態のパラレルリンクロボット100において、アーム4とロッド7とのジョイント部の要部拡大図である。図10(b)は、本実施の形態のパラレルリンクロボット100において、ロッド7と可動プレート3とのジョイント部の要部拡大図である。これらのジョイント部は、それぞれ、ユニバーサルジョイントである。
図10(a)に示すように、アーム4とロッド7とのジョイント部において、各回転軸は1軸で交わり、2軸周りに回転が可能である。また、アーム4とロッド7とのジョイント部は、各軸ともに、その内部に転がりのベアリングが入っている。
図10(b)に示すように、ロッド7と可動プレート3とのジョイント部において、各回転軸は1点で交わり、3軸周りに回転が可能である。また、ロッド7と可動プレート3とのジョイント部は、各軸ともに、その内部に転がりのベアリングが入っている。本実施の形態のパラレルリンクロボット100は、ロッド7と可動プレート3とのジョイント部において、十字になっている2軸周りは、各方向45°傾けることが可能である。
なお、本実施の形態では、パラレルリンクロボット100の動作教示方法において、編集後のポインタである動作点P(n)’の座標や動作範囲およびモータトルクが許容範囲外である場合に、許容範囲内で且つできる限り編集後のポインタに近い値を、次候補の動作点として表示部21に表示してもよい。許容範囲内で且つ編集後のポインタに近い値を表示部21に表示することで、ユーザがポインタを変更する際に、どの程度まで動作可能なのかの判断をサポートすることができる。
なお、本実施の形態では、図5のステップS24およびステップS25において「no」と判定された場合にエラー表示を行なったが、エラー表示を行わずに、編集された動作点P(n)’を許容回転速度以下かつ許容トルク以下となるように、編集された動作点P(n)’を自動的に変更してもよい。この場合、編集された動作点P(n)’における回転速度以下かつモータトルク以下で、かつ最大の回転速度以下かつ最大のモータトルク以下になるような動作点P(n)’’を判定部13で算出して、編集された動作点P(n)’をP(n)’’に変更し、表示部21に表示する。
なお、編集されている動作点P(n)’について、上記のようにパラレルリンクロボット100が再生できないと判定された場合、編集点(動作点P(n)’)を基準とした時間範囲である編集時間範囲内の編集された後のグラフが示す教示動作を再生したと仮定したときの複数のモータの回転速度およびトルクがそれぞれ許容回転速度以下および許容トルク以下となるように、編集時間内における編集点以外の可動プレートの位置および姿勢を示すグラフを第二変更ステップとして変更部16が変更してもよい。つまり、動作点P(n)’を基準とした例えば1s間の編集時間内の動作点P(n−5)〜P(n+5)の点を編集点(動作点P(n)’)の値を維持できるように変更してP(n−5)’〜P(n+5)’とし、P(n−5)’〜P(n+5)’を再生した時の複数のモータの回転速度およびトルクがそれぞれ許容回転速度以下および許容トルク以下となるようにP’(n−5)〜P(n−1)’、および、P(n+1)’〜P(n+5)’の値を変更する。より具体的には、動作点P’(n)としたことにより動作が急峻にならないように、P(n−5)’〜P(n−1)’、および、P(n+1)’〜P(n+5)’の値を動作点P(n)から動作点P(n)’に編集した方向と同じ方向(つまり、動作点P(n)’を上方向に移動させた場合には上方向であり、下方向に移動させた場合には下方向)に変更することにより、動作点P(n)’が急峻にならないように変更する。