JP2024035061A - 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 - Google Patents

多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 Download PDF

Info

Publication number
JP2024035061A
JP2024035061A JP2023086110A JP2023086110A JP2024035061A JP 2024035061 A JP2024035061 A JP 2024035061A JP 2023086110 A JP2023086110 A JP 2023086110A JP 2023086110 A JP2023086110 A JP 2023086110A JP 2024035061 A JP2024035061 A JP 2024035061A
Authority
JP
Japan
Prior art keywords
joint
link
axis
drive mechanism
joints
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023086110A
Other languages
English (en)
Inventor
知秀 繁田
秀行 中西
聡史 谷村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Laurel Bank Machine Co Ltd
Laurel Precision Machines Co Ltd
Laurel Machinery Co Ltd
Original Assignee
Laurel Bank Machine Co Ltd
Laurel Precision Machines Co Ltd
Laurel Machinery Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Laurel Bank Machine Co Ltd, Laurel Precision Machines Co Ltd, Laurel Machinery Co Ltd filed Critical Laurel Bank Machine Co Ltd
Priority to PCT/JP2023/029630 priority Critical patent/WO2024048286A1/ja
Publication of JP2024035061A publication Critical patent/JP2024035061A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Manipulator (AREA)

Abstract

【課題】逆運動学計算の結果がエラーとなる頻度を低減する。【解決手段】ロボット10の制御方法は、7個以上の複数の関節を有する多関節ロボットの制御方法であり、ロボット10を動作させる複数の関節機構JEの変位量を計算する逆運動学計算を実行することにより、複数の関節機構JEの各々の状態に関する関節値を算出する状態算出処理と、複数の関節機構JEのうち、関節値に基づく状態が、あらかじめ定められた特定状態である関節機構JEに対して実行する状態固定処理と、を含む単位処理を繰り返し実行し、状態固定処理を実行した場合、状態算出処理において算出された複数の関節機構JEの関節値のうち、特定状態の関節機構JEの関節値は実質的に変位することなく、特定状態でない関節機構JEの関節値を変位させる。【選択図】図3

Description

特許法第30条第2項適用申請有り 1:令和4年10月24日 ローレルバンクマシン株式会社のウェブサイト https://www.lbm.co.jp/news/2022/1024/ 2:令和4年10月31日 アペルザTVのウェブサイト https://tv.aperza.com/watch/829 3:令和4年10月31日 PR TIMESのウェブサイト https://prtimes.jp/main/html/rd/p/000000004.000105949.html 4:令和4年10月31日 @Pressのウェブサイト https://www.atpress.ne.jp/news/332637 5:令和4年11月8日~13日 JIMTOF2022(第31回日本国際工作機械見本市) 東京ビッグサイト(東京都江東区有明3-11-1) 6:令和4年11月25日 アペルザカタログのウェブサイト https://rd.tr.aperza.com/v1/tmc?a=ntxO7uPnkyk9hYnCUVQInACaE5m7MPV%2F3zdASCJy1TAo6LqYlmtDnUMBT9TeTbPUxhzZML8KK043NmajLjvh33CHB4kQHk4ZgWsIz2mHUdw%3D&b=&url_id=5&test=on 7:令和5年4月27日 ローレルバンクマシン株式会社のウェブサイト https://www.lbm.co.jp/news/2023/0426/ 8:令和5年4月27日 PR TIMESのウェブサイト https://prtimes.jp/main/html/rd/p/000000006.000105949.html 9:令和5年5月10日~12日 未来ものつくり国際EXPO インデックス大阪(大阪市住之江区南港北1-5-102)
本発明は、多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法に関する。
人と同様の動作を行うロボットとして、6自由度の多関節ロボットが知られている。また、近年では、6自由度に冗長自由度を加えた7自由度以上の多関節ロボットの研究が行われている。例えば、特許文献1には、7自由度の多関節ロボットの制御方式が開示されている。
特開平6-143172号公報
ところで、一般的な多関節ロボットでは、複数の関節のうちの一部又は全部に可動範囲が定められる。このため、例えば、ロボットの位置及び姿勢から各関節の変位量を求める逆運動学計算では、複数の関節のいずれかが可動範囲を超えた場合、計算結果がエラーとなり、正しい解(各関節を可動範囲内で動作させる解)を求めることができない。従って、逆運動学計算の結果がエラーとなる場合、ロボットに所望の動作を実行させることができない。このため、逆運動学計算の結果がエラーとなる頻度を低減することが望まれている。
本発明の好適な態様に係る多関節ロボットの制御方法は、7個以上の複数の関節を有する多関節ロボットの制御方法であって、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、を含む単位処理を繰り返し実行し、前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる。
本発明の好適な態様に係るロボットシステムは、7個以上の複数の関節を有する多関節ロボットと、前記多関節ロボットの動作を制御する制御装置と、を備え、前記制御装置は、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、を含む単位処理を繰り返し実行する動作制御部を有し、前記動作制御部は、前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる。
本発明の好適な態様に係る物品の製造方法は、上述のロボットシステムにより、部品を組み付ける、又は、部品を取り除く。
本発明の好適な態様に係るプログラムは、7個以上の複数の関節を有する多関節ロボットの動作を制御するプログラムであって、プロセッサを、前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、を含む単位処理を繰り返し実行する動作制御部として機能させ、前記動作制御部は、前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる。
本発明によれば、逆運動学計算の結果がエラーとなる頻度を低減することができる。
実施形態に係るロボットシステムの概要を説明するための説明図である。 図1に示したロボットコントローラのハードウェア構成の一例を示す図である。 図1に示したロボットコントローラの動作の一例を示すフローチャートである。 ロボットの手先の位置及び姿勢を複数の目標の位置及び姿勢に順に変化させる場合のロボットコントローラの動作の一例を示すフローチャートである。 図4に示した関節値更新処理の一例を示すフローチャートである。 ロボットの手先の位置及び姿勢を複数の目標の位置及び姿勢に順に変化させる場合のロボットコントローラの動作の別の例を示すフローチャートである。 ロボットの手先の位置及び姿勢を複数の目標の位置及び姿勢に順に変化させる場合のロボットコントローラの動作の別の例を示すフローチャートである。 図7に示した関節値初回更新処理の一例を示すフローチャートである。 シミュレーションに用いられたモデルを説明するための説明図である。 図9に示したシミュレーションモデルの初期関節値の一例を説明するための説明図である。 シミュレーションに用いられた手先移動量を説明するための説明図である。 対比例の制御方法に用いられるヤコビ行列を説明するための説明図である。 図12に示したヤコビ行列の擬似逆行列を説明するための説明図である。 図13に示した擬似逆行列を用いて算出された関節移動量を示す図である。 図14に示した関節移動量に基づいて算出された最終関節値を示す図である。 特定状態の関節機構が固定された場合のヤコビ行列Jを説明するための説明図である。 図16に示したヤコビ行列の擬似逆行列を説明するための説明図である。 図17に示した擬似逆行列を用いて算出された関節移動量を示す図である。 図18に示した関節移動量に基づいて算出された最終関節値を示す図である。 図10に示した初期関節値と異なる初期関節値を用いたシミュレーションの結果を説明するための説明図である。 第1変形例に係るロボットの一例を説明するための説明図である。 第2変形例に係る先端部の一例を説明するための説明図である。 旋回の一例を説明するための説明図である。
以下、本発明を実施するための形態について図面を参照して説明する。なお、各図において、各部の寸法及び縮尺は、実際のものと適宜に異ならせてある。また、以下に述べる実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの形態に限られるものではない。
[1.実施形態]
先ず、図1を参照しながら、実施形態に係るロボットシステム1の概要の一例について説明する。
図1は、実施形態に係るロボットシステム1の概要を説明するための説明図である。
なお、以下では、説明の便宜上、ロボット10のベース座標系として、現実空間に固定された基準座標系Σ0を導入する。例えば、基準座標系Σ0は、後述するロボット10の底面BDPbtの中心に原点を有し、互いに直交するX0軸、Y0軸、及び、Z0軸を有する3軸の直交座標系である。本実施形態では、基準座標系Σ0及び後述する図9に示す座標系Σ1からΣ8が右手座標系である場合を想定する。
ロボットシステム1は、例えば、ロボット10と、ロボット10に着脱可能に取り付けられるエンドエフェクタ20と、ロボット10及びエンドエフェクタ20の動作を制御するロボットコントローラ30とを有する。ロボット10は、「多関節ロボット」の例であり、ロボットコントローラ30は、「制御装置」の例である。
ロボット10及びロボットコントローラ30は、例えば、有線を用いた接続により、互いに通信可能に接続されている。なお、ロボット10とロボットコントローラ30との接続は、無線を用いた接続であってもよいし、有線及び無線の両方を用いた接続であってもよい。また、ロボットコントローラ30は、ロボット10に取り付けられたエンドエフェクタ20と通信可能である。ロボットコントローラ30としては、他の装置と通信可能な任意の情報処理装置を採用することができる。
ロボット10は、例えば、農場、工場及び倉庫等での作業に用いられる多関節ロボットである。具体的には、ロボット10は、回転関節に対応する6個の関節機構JEr(JEr1、JEr2、JEr3、JEr4、JEr5及びJEr6)を有する6軸多関節ロボットに、直動関節に対応する2個の関節機構JEp(JEp1及びJEp2)を追加した8軸多関節ロボットである。例えば、ロボット10は、6個の関節機構JErと、2個の関節機構JEpと、ボディ部BDPと、2個のリンクLK(LK1及びLK2)と、先端部TP1とを有する。なお、図1に示す例では、関節機構JEr1は、ボディ部BDPに含まれ、関節機構JEr5及びJEr6は、先端部TP1に含まれる。また、関節機構JEp1は、リンクLK1に設けられ、関節機構JEp2は、リンクLK2に設けられる。以下では、関節機構JEr及びJEpは、特に区別せずに、関節機構JEとも称される。例えば、ロボット10は、複数の関節機構JEを駆動する複数のモータをさらに有する。図1では、図を見やすくするために、複数の関節機構JEを駆動する複数のモータ、複数のモータの各々に設けられる減速機及びエンコーダ等の記載を省略している。複数の関節機構JEは、「複数の関節」の例である。
ボディ部BDPは、「基部」の例である。また、リンクLK1は、「第1リンク」の例であり、リンクLK2は、「第2リンク」の例である。例えば、リンクLK1及びLK2は、ボディ部BDPと先端部TP1を接続する。
ここで、例えば、部材の接続は、2個の部材が直接的に接続される場合と、2個の部材が間接的に接続される場合との両方を含む。2個の部材が直接的に接続されるとは、2個の部材が互いに接触する状態、及び、2個の部材が互いに接触する状態と同視できる状態を含む。2個の部材が互いに接触する状態と同視できる状態とは、例えば、2個の部材の一方が他方に接着剤等により固定される状態である。また、2個の部材が間接的に接続されるとは、2個の部材の間に他の部材が配置されることを意味する。
関節機構JEr1は、「第1駆動機構」の例であり、関節機構JEr2は、「第2駆動機構」の例である。関節機構JEr3は、「第3駆動機構」の例であり、関節機構JEr4は、「第4駆動機構」の例である。また、関節機構JEr5は、「第5駆動機構」の例であり、関節機構JEr6は、「第6駆動機構」の例である。また、関節機構JEp1は、「第1移動機構」の例であり、関節機構JEp2は、「第2移動機構」の例である。
ボディ部BDPは、例えば、床等の所定の場所に固定される土台部BDPbaと、関節機構JEr2に接続される関節機構JEr1とを含む。関節機構JEr1は、ボディ部BDPの底面BDPbtに垂直な軸Ax1を回転軸として、ボディ部BDPの一部分を回転させる。例えば、関節機構JEr1は、関節機構JEr1のうち、関節機構JEr2と接続される部分を含む外壁を、軸Ax1を回転軸として土台部BDPbaに対して回転させる。すなわち、関節機構JEr1は、軸Ax1を回転軸として、関節機構JEr2をボディ部BDPに対して回転させる。なお、軸Ax1は、「第1回転軸」の例である。
ここで、「垂直」は、厳密な垂直だけではなく、実質的な垂直(例えば、誤差範囲内の垂直)も含む。同様に、後述する「平行」は、厳密な平行だけではなく、実質的な平行(例えば、誤差範囲内の平行)も含む。図1の回転方向Dr1は、ボディ部BDPの一部分が軸Ax1を回転軸として回転する場合のボディ部BDPの一部分の回転方向を示す。
関節機構JEr2は、ボディ部BDPとリンクLK1を接続し、ボディ部BDPの底面BDPbtに平行な軸Ax2を回転軸としてリンクLK1をボディ部BDPに対して回転させる。図1の回転方向Dr2は、リンクLK1が軸Ax2を回転軸として回転する場合のリンクLK1の回転方向を示す。なお、軸Ax2は、「第2回転軸」の例である。
リンクLK1は、例えば、中空であり、長尺に形成される。また、リンクLK1は、リンクLK1が延在する方向De1に延在する開口Hlk1を有する。方向De1は、「第1リンクの延在方向」である。
開口Hlk1は、例えば、リンクLK1のうち、リンクLK2に対向する部分を含む面に形成される。リンクLK1の内部には、関節機構JEr3の一部及び関節機構JEp1が設けられる。例えば、関節機構JEr3の一部は、リンクLK1の内部に位置し、関節機構JEr3の他の部分は、開口Hlk1からリンクLK1の外部に出ている。なお、関節機構JEr3のうち、リンクLK1の外部に出ている部分、又は、リンクLK1の外部に出ている部分の一部は、後述するリンクLK2の開口Hlk2を通り、リンクLK2の内部に位置する。
なお、リンクLK1は、関節機構JEr1により、軸Ax1を回転軸としてボディ部BDPに対して回転し、関節機構JEr2により、軸Ax2を回転軸としてボディ部BDPに対して回転する。
関節機構JEr3は、リンクLK1とリンクLK2を接続し、リンクLK1が延在する方向De1に垂直な軸Ax3を回転軸としてリンクLK2をリンクLK1に対して回転させる。図1の回転方向Dr3は、リンクLK2が軸Ax3を回転軸として回転する場合のリンクLK2の回転方向を示す。なお、軸Ax3は、「第3回転軸」の例である。
関節機構JEp1は、方向De1に沿って、関節機構JEr3をリンクLK1に対して相対的に移動させる。関節機構JEr3が方向De1に沿って移動することにより、リンクLK2は、方向De1に沿って、リンクLK1に対して相対的に移動する。関節機構JEp1による関節機構JEr3の移動範囲は、リンクLK1の実質的な長さ(制御上の長さ)を、リンクLK1の半分以下の長さから半分以上の長さとすることが可能な範囲が好ましい。
リンクLK2は、例えば、中空であり、長尺に形成される。また、リンクLK2は、リンクLK2が延在する方向De2に延在する開口Hlk2を有する。方向De2は、「第2リンクの延在方向」である。
開口Hlk2は、例えば、リンクLK2のうち、リンクLK1に対向する部分を含む面に形成される。リンクLK2の内部には、関節機構JEr3の一部及び関節機構JEp2が設けられる。例えば、関節機構JEr3の一部は、リンクLK2の内部に位置し、関節機構JEr3の他の部分は、開口Hlk2からリンクLK2の外部に出ている。
関節機構JEp2は、リンクLK2が延在する方向De2に沿って、リンクLK2を関節機構JEr3に対して相対的に移動させる。これにより、リンクLK2は、方向De2に沿って、関節機構JEr3に対して相対的に移動する。すなわち、リンクLK2は、方向De2に沿って、リンクLK1に対して相対的に移動する。関節機構JEp2による関節機構JEr3の移動範囲は、リンクLK2の実質的な長さ(制御上の長さ)を、リンクLK2の半分以下の長さから半分以上の長さとすることが可能な範囲が好ましい。
このように、リンクLK2は、関節機構JEp1により、方向De1に沿って、リンクLK1に対して相対的に移動し、関節機構JEp2により、方向De2に沿って、リンクLK1に対して相対的に移動する。
関節機構JEr4は、リンクLK2と先端部TP1を接続し、方向De2に垂直な軸Ax4を回転軸として、先端部TP1をリンクLK2に対して回転させる。図1の回転方向Dr4は、先端部TP1が軸Ax4を回転軸として回転する場合の先端部TP1の回転方向を示す。なお、軸Ax4は、「第4回転軸」の例である。
先端部TP1には、例えば、物品を把持するエンドエフェクタ20が取り付けられる。例えば、先端部TP1の端面TP1sfにエンドエフェクタ20が取り付けられる。先端部TP1は、リンクLK2に接続される第1部分TP11と、第1部分TP11に接続される第2部分TP12と、関節機構JEr5と、関節機構JEr6とを含む。第1部分TP11は、例えば、関節機構JEr4を介してリンクLK2に接続される。従って、第1部分TP11は、軸Ax4を回転軸としてリンクLK2に対して回転する。
関節機構JEr5は、第1部分TP11と第2部分TP12を接続し、軸Ax4に垂直な軸Ax5を回転軸として、第2部分TP12を第1部分TP11に対して回転させる。図1の回転方向Dr5は、第2部分TP12が軸Ax5を回転軸として回転する場合の第2部分TP12の回転方向を示す。なお、軸Ax5は、「第5回転軸」の例である。
関節機構JEr6は、軸Ax5に垂直な軸Ax6を回転軸として、先端部TP1の少なくとも一部分を回転させる。図1に示す例では、関節機構JEr6は、軸Ax6を回転軸として、先端部TP1の端面TP1sfを回転させる。すなわち、関節機構JEr6は、軸Ax6を回転軸として、先端部TP1のうち、エンドエフェクタ20が取り付けられる部分(端面TP1sf)を回転させる。図1の回転方向Dr6は、端面TP1sfが軸Ax6を回転軸として回転する場合の端面TP1sfの回転方向を示す。なお、軸Ax6は、「第6回転軸」の例である。
図1に示す例では、関節機構JEr6の表面が端面TP1sfに該当する。なお、関節機構JEr6が第2部分TP12に含まれる構成等では、第2部分TP12の端面が端面TP1sfであってもよい。
また、エンドエフェクタ20により行われる作業は、物品の把持に限定されない。エンドエフェクタ20としては、ロボット10の作業目的に応じて適切な部品(例えば、ロボットハンド及びロボットフィンガー等)を適用することができる。すなわち、各種作業に適したエンドエフェクタ20が先端部TP1に取り付けられる。
ここで、本実施形態では、特定の方向とのなす角度が所定角度より大きい軸を回転軸とした回転を、特定の方向とのなす角度が所定角度以下の軸を回転軸とした回転と区別して、「旋回」と称する場合がある。所定角度は、例えば、45°であってもよい。なお、所定角度は、45°に限定されない。
例えば、軸Ax1及びAx2の各々を回転軸とする回転では、ボディ部BDPの底面BDPbtに垂直な方向Dv1が特定の方向に該当する。この場合、軸Ax1は、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸に該当し、軸Ax2は、方向Dv1とのなす角度が所定角度より大きい軸に該当する。従って、軸Ax2を回転軸とするリンクLK1の回転は、旋回に該当する。なお、本実施形態では、ボディ部BDPが底面BDPbtに垂直な方向Dv1に沿って延在しているため、ボディ部BDPが延在する方向Debを特定の方向としてもよい。
また、軸Ax3を回転軸とする回転では、リンクLK1が延在する方向De1が特定の方向に該当し、軸Ax4を回転軸とする回転では、リンクLK2が延在する方向De2が特定の方向に該当する。この場合、軸Ax3は、リンクLK1が延在する方向De1とのなす角度が所定角度より大きい軸に該当し、軸Ax4は、リンクLK2が延在する方向De2とのなす角度が所定角度より大きい軸に該当する。従って、軸Ax3を回転軸とするリンクLK2の回転、及び、軸Ax4を回転軸とする第1部分TP11の回転は、旋回に該当する。
また、軸Ax5を回転軸とする回転では、方向De11が特定の方向に該当し、軸Ax6を回転軸とする回転では、方向De12が特定の方向に該当する。方向De11は、第1部分TP11の端部のうち、関節機構JEr5が接続される所定の端部の反対側の端部から所定の端部に向かう方向である。なお、方向De11は、第1部分TP11が延在する方向と捉えられてもよい。また、方向De12は、第2部分TP12の端部のうち、関節機構JEr6が接続される所定の端部(端面TP1sfを含む端部)の反対側の端部から所定の端部に向かう方向である。なお、方向De12は、第2部分TP12が延在する方向と捉えられてもよい。
方向De11が特定の方向である場合、軸Ax5は、方向De11とのなす角度が所定角度以下の軸に該当する。また、方向De12が特定の方向である場合、軸Ax6は、方向De12とのなす角度が所定角度以下の軸に該当する。なお、本実施形態では、方向De11が軸Ax4に垂直な方向であり、方向De12が軸Ax5に垂直な方向である場合を想定する。この場合、方向De11とのなす角度が所定角度以下の軸Ax5は、軸Ax4とのなす角度が所定角度より大きい軸に該当し、方向De12とのなす角度が所定角度以下の軸Ax6は、軸Ax5とのなす角度が所定角度より大きい軸に該当する。
このように、本実施形態では、ロボット10の複数の部分(ボディ部BDP、リンクLK1、リンクLK2及び先端部TP1等)の各々が軸Ax1、Ax2、Ax3、Ax4、Ax5及びAx6の各々を回転軸として回転可能である。これにより、本実施形態では、ロボット10は、人と同様の動作を実行できる。
例えば、関節機構JEr2と関節機構JEr3との間のリンクLK1が上腕に相当し、関節機構JEr3と関節機構JEr4との間のリンクLK2が前腕に相当する。そして、ロボット10は、関節機構JEr1により、人の腰のねじりを模した動作を行うことができ、関節機構JEr2により、肩の旋回を模した動作を行うことができる。また、ロボット10は、関節機構JEr3により、肘の旋回を模した動作を行うことができ、関節機構JEr4により、手首の旋回を模した動作を行うことができる。また、ロボット10は、関節機構JEr5により、手首のねじりを模した動作を行うことができ、関節機構JEr6により、指先のねじりを模した動作を行うことができる。
さらに、本実施形態では、リンクLK1内に設けられた関節機構JEp1により、リンクLK1が延在する方向De1に沿って、リンクLK2をリンクLK1に対して相対的に移動させることができる。また、本実施形態では、リンクLK2内に設けられた関節機構JEp2により、リンクLK2が延在する方向De2に沿って、リンクLK2をリンクLK1に対して相対的に移動させることができる。従って、本実施形態では、関節機構JEp1及びJEp2により、ロボット10の先端部TP1をボディ部BDPの周辺に容易に移動させることができる。また、本実施形態では、関節機構JEp1及びJEp2により、先端部TP1(より詳細には、端面TP1sf)が到達可能な領域を広くすることができるため、ロボット10に取り付けられるエンドエフェクタ20が到達可能な領域を広くすることができる。
なお、ロボットシステム1の構成は、図1に示す例に限定されない。例えば、ロボットコントローラ30は、ロボット10に内蔵されてもよい。また、図1では、ロボット10が床等の所定の場所に固定される場合を想定したが、ロボット10は、所定の場所に固定されずに、ロボット10自体が移動可能であってもよい。また、ボディ部BDPの土台部BDPbaは、床等の所定の場所に関節機構JEr1を介して固定されてもよい。この場合、ボディ部BDPは、関節機構JEr1を含まずに定義されてもよい。土台部BDPbaが所定の場所に関節機構JEr1を介して固定される構成では、関節機構JEr1は、軸Ax1を回転軸として、土台部BDPbaを回転させてもよい。また、土台部BDPbaが所定の場所に関節機構JEr1を介して固定される構成では、土台部BDPbaが関節機構JEr2と接続されてもよい。
次に、ロボットコントローラ30の動作を簡単に説明する。なお、ロボットコントローラ30の構成は、後述する図2において説明され、ロボットコントローラ30の動作フローは、後述する図3において説明される。
ロボットコントローラ30は、例えば、ロボット10の位置及び姿勢を目標の位置及び姿勢にするために、各関節機構JEの状態(関節の状態)に関する関節値を算出する。関節機構JEの状態は、関節の運動の状態であってもよい。具体的には、関節機構JEの状態は、例えば、関節機構JEの位置(関節の位置)、及び、関節機構JErによる回転の回転角度(関節の方向)等であってもよい。この場合、関節値は、例えば、関節機構JEの位置(関節の位置)、及び、関節機構JErによる回転の回転角度(関節の方向)等を示す。以下では、関節機構JEの状態(関節の状態)に関する関節値は、単に、関節機構JE(関節)の関節値とも称される。
例えば、ロボット10の手先(例えば、エンドエフェクタ20の先端)の速度(以下、手先速度とも称する)と関節速度との関係は、式(1)で表される。
Figure 2024035061000002
なお、手先速度r(・)は、式(2)で表される。また、m個(mは2以上の自然数)の関節を有する多関節ロボットでは、関節速度θ(・)は、式(3)で表され、ヤコビ行列Jは、式(4)で表される。
Figure 2024035061000003
Figure 2024035061000004
Figure 2024035061000005
ヤコビ行列Jは、例えば、6行m列の行列で表され、第i列の要素が第i関節に係る要素Jに該当する。第i関節に係る要素Jは、第i関節が回転関節の場合、式(5)で表され、第i関節が直動関節の場合、式(6)で表される。なお、式(6)の0は、例えば、ベクトル値が0であることを示す。
Figure 2024035061000006
なお、第i関節が回転関節の場合、関節機構JErの回転軸がZ軸に対応し、第i関節が直動関節の場合、関節機構JEpの移動方向に沿う軸、又は、リンクLKの伸縮方向に沿う軸がZ軸に対応する。
また、ロボット10の手先速度と関節速度との関係は、ヤコビ行列Jの擬似逆行列Jを用いて、式(7)で表される。
Figure 2024035061000007
例えば、ロボットコントローラ30は、目標の手先速度r(・)に対する各関節機構JEの関節速度θ(・)を、式(7)を用いて計算し、計算結果に基づいて各関節機構JEを動作させる。具体的には、例えば、ロボットコントローラ30は、式(7)を用いて算出した各関節機構JEの関節速度θ(・)に基づいて、各関節機構JEの関節値を算出する。そして、ロボットコントローラ30は、各関節機構JEの関節値に基づいて、各関節機構JEを動作させる。例えば、ロボットコントローラ30は、各関節機構JEの状態が各関節機構JEの関節値に基づく状態になるように、各関節機構JEを動作させる。
これにより、本実施形態では、例えば、ロボット10をジョグ動作させることができる。なお、ジョグ動作は、例えば、ロボット10の関節及び手先等を少しずつ動かして、ロボット10の位置及び姿勢を目標の位置及び姿勢に到達させる動作である。関節速度θ(・)、及び、関節速度θ(・)に基づいて算出される関節機構JEの状態等を示す情報は、関節値に対応する。関節機構JEの関節速度θ(・)の計算は、逆運動学計算の例である。また、ヤコビ行列Jから擬似逆行列Jが算出されるため、式(7)を用いて、関節機構JEの関節速度θ(・)を計算することは、ヤコビ行列を用いて逆運動学計算を実行することに該当する。
ここで、ジョグ動作が行われる場合、複数の関節機構JEの全てについて、関節速度θ(・)が計算される。このため、工夫をせずにヤコビ行列Jが用いられる制御方法(以下、対比例の制御方法)では、複数の関節機構JEのいずれかが、関節速度θ(・)に基づいて算出される関節機構JEの状態が関節機構JEの可動範囲(可動領域)外の状態となる場合がある。この場合、所望のジョグ動作を実行することができない。また、対比例の制御方法では、例えば、8個以上の関節を有する多関節ロボットにおいて、動作させる関節の数を関節の全数よりも少ない数(例えば、6個又は7個等)に制限して、多関節ロボットを動作させることができない。
このため、本実施形態では、動作させる関節の数を関節の全数よりも少ない数に制限して、ロボット10を動作させる場合、ヤコビ行列Jの複数の要素のうち、特定の第i関節に係る要素Jのベクトル値を0に固定する。第i関節に係る要素Jのベクトル値を0にした場合のヤコビ行列Jは、式(8)となる。この場合、上述の式(7)から得られる関節速度θ(・)は、式(9)で表される関節速度ベクトルとなる。
Figure 2024035061000008
式(9)に示されるように、第i関節の関節速度θ(・)は、0となる。このように、本実施形態では、ヤコビ行列Jの複数の要素のうち、第i関節に係る要素Jのベクトル値を0に固定することより、第i関節の関節値は変位することがないため、m個の関節のうちの第i関節を固定関節と見なすことができる。すなわち、本実施形態では、ヤコビ行列Jの第i関節に係る要素Jのベクトル値を0に固定することより、第i関節以外の(m-1)個の関節について、関節速度θ(・)を計算することができる。この結果、本実施形態では、動作させる関節の数を関節の全数よりも少ない数に制限して、ロボット10を動作させることができる。なお、本実施形態ではベクトル値を0に固定しているが、第i関節の関節値が、ロボット制御に影響せず実質的に変位しないのであれば、必ずしも0である必要はなく、微小な値(実質的に0)であっても構わない。ここで、「実質的に0」とは、0のほか、0と見なせる微小な値も包含する。また、「実質的に変位しない」とは、厳密に変位しない場合のほか、変位していないと見なせる場合(例えば、ロボット制御に影響しない程度の微小な変化)も包含する。
例えば、本実施形態では、複数の関節のうちの所定の関節(第i関節)において、あらかじめ特定状態が定められていたとする。本発明における特定状態とは、所定の関節において関節値に関する制約(例えば可動領域など)が設定されている場合、関節値が、制約の限界値の近傍の値(例えば可動領域の領域内で、可動領域の領域外との近傍の境界領域の値)となった状態である。
ロボットコントローラ30は、関節値に基づく状態が特定状態である関節(第i関節)を、ヤコビ行列Jの要素の値(ベクトル値)が実質的に0に固定される固定関節とする。以下では、関節の変位に関する制約が満たされる限界の状態は、限界状態とも称される。所定の余裕は、例えば、関節の状態(関節機構JEの状態)が限界状態に到達する前に、関節の状態が限界状態に近づいたことをロボットコントローラ30に認識させるために設定されたマージンである。
なお、関節の変位に関する制約は、例えば、関節機構JEの可動に関する制約である。関節機構JEの可動に関する制約としては、例えば、関節機構JEp1による関節機構JEr3の移動範囲、及び、関節機構JEp2による関節機構JEr3の移動範囲等が挙げられる。
例えば、関節機構JEp1により、関節機構JEr3がリンクLK1に対して相対的に移動する場合、関節機構JEr3の移動範囲は、リンクLK1の長さ等に基づいて制限される。具体的には、例えば、リンクLK1の2個の端部の一方の端部付近が関節機構JEp1による関節機構JEr3の移動範囲の上限であり、リンクLK1の2個の端部の他方の端部付近が関節機構JEp1による関節機構JEr3の移動範囲の下限である。従って、関節機構JEr3が関節機構JEp1による関節機構JEr3の移動範囲の上限又は下限に位置する場合、関節機構JEp1の状態は、限界状態である。例えば、ロボットコントローラ30は、関節機構JEr3がリンクLK1の端部の近傍に位置する場合、関節機構JEp1の状態が特定状態(限界状態に所定の余裕を持たせた状態)であると特定する。
同様に、関節機構JEp2により、関節機構JEr3がリンクLK2に対して相対的に移動する場合、関節機構JEr3の移動範囲は、リンクLK2の長さ等に基づいて制限される。具体的には、例えば、リンクLK2の2個の端部の一方の端部付近が関節機構JEp2による関節機構JEr3の移動範囲の上限であり、リンクLK2の2個の端部の他方の端部付近が関節機構JEp2による関節機構JEr3の移動範囲の下限である。従って、関節機構JEr3が関節機構JEp2による関節機構JEr3の移動範囲の上限又は下限に位置する場合、関節機構JEp2の状態は、限界状態である。例えば、ロボットコントローラ30は、関節機構JEr3がリンクLK2の端部の近傍に位置する場合、関節機構JEp2の状態が特定状態であると特定する。
そして、例えば、ロボットコントローラ30は、複数の関節機構JEの中に、関節値に基づく状態が特定状態である関節機構JEが存在する場合、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値を0に固定する。ヤコビ行列を用いて逆運動学計算が実行される場合、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値が0に固定されることにより、特定状態の関節機構JEの関節値が固定値に設定される。
ロボットコントローラ30は、例えば、ロボット10の位置及び姿勢が目標の位置及び姿勢になるまで、各関節機構JEの関節値を算出する状態算出処理、及び、特定状態の関節機構JEの関節値を変位させないようにする状態固定処理を含む単位処理を繰り返す。状態算出処理は、「算出処理」の例であり、状態固定処理は、「固定処理」の例である。
このように、ロボットコントローラ30は、繰り返し実行する単位処理に含まれる状態算出処理において、ロボット10を動作させる場合の関節機構JEの変位量を計算する逆運動学計算を実行することにより、各関節機構JEの関節値を算出する。また、ロボットコントローラ30は、繰り返し実行する単位処理に含まれる状態固定処理において、複数の関節機構JEの中に、関節値に基づく状態が特定状態である関節機構JEが存在する場合、特定状態の関節機構JEの関節値を固定値に設定する。なお、上述したように、ロボットコントローラ30は、状態算出処理において、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、複数の関節機構JEのうち、特定状態の関節機構JE以外の関節機構JEを用いて、逆運動学計算を実行する。
これにより、本実施形態では、逆運動学計算の結果がエラーとなる頻度を低減することができる。この結果、本実施形態では、複数の関節機構JEの各々において、関節値に基づく関節機構JEの状態が関節機構JEの可動範囲外の状態となることを抑止することができる。
なお、ロボット10の構成は、図1に示す例に限定されず、例えば、後述する図9に示したシミュレーションモデルの構成であっても構わない。図9に示したシミュレーションモデルは、図1におけるロボット10の関節機構JEp1によりリンクLK1自体が伸縮し、関節機構JEp2によりリンクLK2自体が伸縮する構成となっている。また、関節機構JEの可動に関する制約は、関節機構JEp1による関節機構JEr3の移動範囲、及び、関節機構JEp2による関節機構JEr3の移動範囲に限定されない。例えば、関節機構JEの可動に関する制約には、特異点を回避するための制約が含まれてもよい。なお、特異点は、例えば、ロボット10の姿勢が、ロボット10を制御できなくなる姿勢になることである。すなわち、関節機構JEの可動に関する制約は、複数の関節機構JEのうちの一部の関節機構JEに対する制約であってもよいし、複数の関節機構JEのうちの全部の関節機構JEに対する制約であってもよい。なお、複数の関節機構JEのうちの一部の関節機構JEは、1個の関節機構JEであってもよいし、複数の関節機構JEであてもよい。
次に、図2を参照しながら、ロボットコントローラ30のハードウェア構成について説明する。
図2は、図1に示したロボットコントローラ30のハードウェア構成の一例を示す図である。
ロボットコントローラ30は、ロボットコントローラ30の各部を制御する処理装置32と、各種情報を記憶するメモリ35と、通信装置36と、作業者等による操作を受け付ける操作装置37と、表示装置38と、ドライバ回路39とを有する。
メモリ35は、例えば、処理装置32の作業領域として機能するRAM(Random Access Memory)等の揮発性メモリと、制御プログラムPGr等の各種情報を記憶するEEPROM(Electrically Erasable Programmable Read-Only Memory)等の不揮発性メモリとの、一方又は両方を含む。なお、メモリ35は、ロボットコントローラ30に着脱可能であってもよい。具体的には、メモリ35は、ロボットコントローラ30に着脱されるメモリカード等の記憶媒体であってもよい。また、メモリ35は、例えば、ロボットコントローラ30とネットワーク等を介して通信可能に接続された記憶装置(例えば、オンラインストレージ)であってもよい。
図2に示すメモリ35は、制御プログラムPGrを記憶している。制御プログラムPGrは、「プログラム」の例である。本実施形態では、制御プログラムPGrは、例えば、ロボットコントローラ30がロボット10の動作を制御するためのアプリケーションプログラムを含む。但し、制御プログラムPGrは、例えば、処理装置32がロボットコントローラ30の各部を制御するためのオペレーティングロボットシステムプログラムを含んでもよい。
処理装置32は、ロボットコントローラ30の全体を制御するプロセッサであり、例えば、1又は複数のCPU(Central Processing Unit)を含んで構成される。処理装置32は、例えば、メモリ35に記憶された制御プログラムPGrを実行し、制御プログラムPGrに従って動作することで、動作制御部33として機能する。例えば、動作制御部33は、ロボット10の位置及び姿勢が目標の位置及び姿勢になるまで、図1において説明した単位処理を繰り返す。そして、動作制御部33は、各関節機構JEの関節値等に基づいて、ロボット10を、後述するドライバ回路39を介して駆動する。なお、制御プログラムPGrは、ネットワーク等を介して他の装置から送信されてもよい。
また、例えば、処理装置32が複数のCPUを含んで構成される場合、処理装置32の機能の一部又は全部は、これら複数のCPUが制御プログラムPGr等のプログラムに従って協働して動作することで実現されてもよい。また、処理装置32は、1又は複数のCPUに加え、又は、1又は複数のCPUのうち一部又は全部に代えて、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、又は、FPGA(Field Programmable Gate Array)等のハードウェアを含んで構成されるものであってもよい。この場合、処理装置32の機能の一部又は全部は、DSP等のハードウェアにより実現されてもよい。
通信装置36は、ロボットコントローラ30の外部に存在する外部装置と通信を行うためのハードウェアである。例えば、通信装置36は、近距離無線通信によって外部装置と通信する機能を有する。なお、通信装置36は、移動体通信網又はネットワークを介して外部装置と通信する機能をさらに有してもよい。
操作装置37は、外部からの入力を受け付ける入力デバイス(例えば、キーボード、マウス、スイッチ、ボタン及びセンサ等)である。例えば、操作装置37は、作業者の操作を受け付け、操作に応じた操作情報を処理装置32に出力する。なお、例えば、表示装置38の表示面に対する接触を検出するタッチパネルが、操作装置37として採用されてもよい。
表示装置38は、外部への出力を実施するディスプレイ等の出力デバイスである。表示装置38は、例えば、処理装置32による制御のもとで、画像を表示する。なお、操作装置37及び表示装置38は、一体となった構成(例えば、タッチパネル)であってもよい。
ドライバ回路39は、処理装置32(より詳細には、動作制御部33)による制御のもとで、ロボット10を駆動するための信号をロボット10に出力するハードウェアである。例えば、ドライバ回路39は、各関節機構JEの関節値等に基づく信号を、モータMOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1及びMOp2等を駆動する信号として、ロボット10に出力する。なお、モータMOr1、MOr2、MOr3、MOr4、MOr5及びMOr6は、関節機構JEr1、JEr2、JEr3、JEr4、JEr5及びJEr6をそれぞれ駆動するモータである。また、モータMOp1及びMOp2は、関節機構JEp1及びJEp2をそれぞれ駆動するモータである。以下では、モータMOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1及びMOp2をモータMOと総称する場合がある。
このように、ロボットコントローラ30は、複数のモータMOを制御することにより、ロボット10の動作を制御する。
次に、図3を参照しながら、ロボットコントローラ30の動作の概要について説明する。
図3は、図1に示したロボットコントローラ30の動作の一例を示すフローチャートである。なお、図3に示す動作では、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値(例えば、関節機構JEの位置、及び、関節機構JErによる回転の回転角度等を示す情報)を算出する処理が行われる。例えば、図3に示す動作は、動作制御部33として機能する処理装置32により、実行される。すなわち、図3に示す動作(ステップS100からステップS520までの一連の処理)では、処理装置32は、動作制御部33として機能する。
先ず、ステップS100において、動作制御部33は、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分を算出する。例えば、動作制御部33は、各関節機構JEの現在の関節値に基づいて、ロボット10の手先の位置及び姿勢を算出する。そして、動作制御部33は、各関節機構JEの現在の関節値に基づいて算出されたロボット10の手先の位置及び姿勢とロボット10の手先の目標の位置及び姿勢との差分を算出する。
次に、ステップS120において、動作制御部33は、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分が許容値以下であるか否かを判定する。許容値は、例えば、ロボット10の手先の位置及び姿勢と目標の位置及び姿勢との差分が許容値以下であれば、ロボット10の手先の位置及び姿勢が目標の位置及び姿勢と一致していると見なせる値に設定される。
ステップS120における判定の結果が肯定の場合、動作制御部33は、図3に示す動作を終了する。この場合、ステップS100においてロボット10の手先の位置及び姿勢の算出に用いられた各関節機構JEの関節値(最新の関節値)が、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値として算出される。なお、ステップS100からステップS520までの一連の処理が2回以上繰り返されている場合、今回のステップS100の処理に用いられた最新の関節値は、前回のステップS420の処理において更新された関節値である。
一方、ステップS120における判定の結果が否定の場合、動作制御部33は、処理をステップS200に進める。
ステップS200において、動作制御部33は、各関節機構JEの現在の関節値に基づいて、ヤコビ行列Jを算出する。そして、動作制御部33は、処理をステップS300に進める。
ステップS300において、動作制御部33は、複数の関節機構JEの中に、特定状態の関節機構JEが存在するか否かを判定する。ステップS300における判定の結果が肯定の場合、動作制御部33は、処理をステップS320に進める。一方、ステップS300における判定の結果が否定の場合、動作制御部33は、処理をステップS400に進める。
ステップS320において、動作制御部33は、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに対応する要素の値を実質的に0に設定する。これにより、例えば、ヤコビ行列Jの特定状態の関節機構JEに対応する列の要素の値が実質的に0に設定される。そして、動作制御部33は、処理をステップS400に進める。
ステップS400において、動作制御部33は、ヤコビ行列Jの擬似逆行列Jを用いて、各関節機構JEの変位量(例えば、各関節機構JEの関節速度θ(・))を算出する。なお、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、特定状態の関節機構JEの変位量は、ヤコビ行列Jの特定状態の関節機構JEに対応する列の要素の値が実質的に0に設定されているため、0又はほぼ0となる。動作制御部33は、ステップS400の処理を実行した後、処理をステップS420に進める。なお、ほぼ0は、例えば、0と見なせる値である。
ステップS420において、動作制御部33は、各関節機構JEの変位量に基づいて、各関節機構JEの関節値を更新する。例えば、動作制御部33は、ステップS100においてロボット10の手先の位置及び姿勢の算出に用いられた各関節機構JEの関節値に各関節機構JEの変位量を加算することにより、各関節機構JEの関節値を更新する。なお、複数の関節機構JEの中に特定状態の関節機構JEが存在する場合、特定状態の関節機構JEの変位量が0又はほぼ0であるため、ステップS420の処理による更新後の特定状態の関節機構JEの関節値は、更新前の値と同じ又はほぼ同じ値となる。なお、更新前の値とほぼ同じ値は、例えば、更新前の値と同じと見なせる値である。従って、特定状態の関節機構JEでは、状態は変化せずに維持される。これにより、本実施形態では、関節機構JEの状態が制約を満たさない状態(例えば、可動範囲外の状態)になることを抑制することができる。
次に、ステップS500において、動作制御部33は、ループカウントをインクリメントする。なお、ループカウントは、図3に示す動作が実行される前に、0に初期化されている。
次に、ステップS520において、動作制御部33は、ループカウントが上限値以下か否かを判定する。上限値は、ステップS100からステップS520までの一連の処理の繰り返し回数の上限値であり、図3に示す動作が収束しない場合に図3に示す動作を終了させるために設定される。
ステップS520における判定の結果が否定の場合、動作制御部33は、図3に示す動作を終了する。この場合、ステップS420の処理において更新された各関節機構JEの関節値(最新の関節値)が、各関節機構JEの関節値として算出される。但し、ループカウントが上限値を超えたことにより、図3に示す動作が終了した場合、図3に示す動作により算出された各関節機構JEの関節値は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にする関節値になるとは限らない。このため、動作制御部33は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値を算出する処理が収束しなかったことを示すエラー情報を作業者等に通知してもよい。例えば、動作制御部33は、エラー情報を表示装置38に表示させてもよい。
一方、ステップS520における判定の結果が肯定の場合、動作制御部33は、処理をステップS100に戻す。このように、ステップS100からステップS520までの一連の処理は、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするための各関節機構JEの関節値が算出されるまで、又は、ループカウントが上限値を超えるまで、繰り返される。
ここで、例えば、ステップS400及びS420の一連の処理は、図1において説明した状態算出処理に該当し、ステップS300及びS320の一連の処理は、図1において説明した状態固定処理に該当する。従って、ステップS100からステップS520までの一連の処理は、状態算出処理及び状態固定処理を含む単位処理に該当する。すなわち、ステップS100からステップS520までの一連の処理は、「単位処理」の例であり、ステップS400及びS420の一連の処理は、「算出処理」の例であり、ステップS300及びS320の一連の処理は、「固定処理」の例である。なお、状態算出処理は、ステップS400及びS420の一連の処理に加えて、ステップS200の処理を含んでもよい。従って、ステップS200、S400及びS420の一連の処理が「算出処理」として捉えられてもよい。
なお、ロボットコントローラ30の動作は、図3に示した例に限定されない。例えば、ステップS500及びS520の処理は、省かれてもよい。この場合、動作制御部33は、ステップS420の処理を実行した後、処理をステップS100に戻す。また、ステップS500及びS520の処理が省かれる場合、割り込み処理等により、図3に示した動作を終了させてもよい。また、ステップS300及びS320の処理は、ステップS200の処理に含まれてもよい。
次に、図4及び図5を参照しながら、ロボット10の状態を複数の目標状態を経由して最終的な目標状態に変化させる場合のロボットコントローラ30の動作の概要について説明する。
図4は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の一例を示すフローチャートである。図4に示す動作では、複数の目標の位置PP及び姿勢PSがn個(nは2以上の自然数)である場合を想定する。以下では、n個の目標の位置PP及び姿勢PSをn個の目標状態と称する場合がある。
なお、図4に示す動作では、ステップS8の処理、ステップS600の処理、及び、ステップS700からステップS760までの一連の処理が、図3に示した動作に追加されている。また、図4に示す動作では、図3に示したステップS200からステップS420までの一連の処理に対応する処理として、ステップS140の関節値更新処理が実行される。ステップS140の関節値更新処理の詳細については、後述する図5において説明される。例えば、ステップS140の関節値更新処理は、特定状態の関節機構JEが複数の関節機構JEの中に存在する場合に図5に示すステップS310の処理が実行されることを除いて、図3に示したステップS200からステップS420までの一連の処理と同様である。すなわち、ステップS140の関節値更新処理により、各関節機構JEの関節値が更新される。
本実施形態では、図4に示す動作が開始される前のロボット10の状態(初期状態)が、特定状態の関節機構JEが複数の関節機構JEの中に存在しない状態である場合を想定する。また、図4に示す動作では、変数k(kは1以上n以下の自然数)の初期値が1である場合を想定する。また、以下では、k番目の目標の位置PP及び姿勢PSを位置PPk及び姿勢PSkとそれぞれ称する場合がある。例えば、位置PP1及び姿勢PS1は、1番目の目標の位置PP及び姿勢PSであり、位置PPn及び姿勢PSnは、n番目の目標(最終的な目標)の位置PP及び姿勢PSである。
図4に示す動作では、ロボット10の初期状態から最終的な目標状態までのロボット10の軌道として、n個の目標の位置PP及び姿勢PSがロボットコントローラ30に定義されている。例えば、ロボットコントローラ30は、変数kを1からnまで順に変化させることにより、ロボット10の手先の目標の位置PPk及び姿勢PSkを順に更新する。
先ず、ステップS8において、動作制御部33は、ロボット10の手先のk番目の目標の位置PPk及び姿勢PSkを設定する。例えば、図4に示す動作が開始された場合、動作制御部33は、ステップS8において、1番目(k=1)の目標の位置PP1及び姿勢PS1を設定する。動作制御部33は、ステップS8の処理を実行した後、処理をステップS100に進める。
ステップS100及びS120の一連の処理は、図3に示したステップS100及びS120の一連の処理と同様である。但し、ステップS120における判定の結果が肯定の場合、動作制御部33は、処理をステップS700に進める。また、ステップS120における判定の結果が否定の場合、動作制御部33は、ステップS140の関節値更新処理を実行した後、処理をステップS500に進める。
ステップS500及びS520の一連の処理は、図3に示したステップS500及びS520の一連の処理と同様である。なお、図4に示す動作では、ステップS520における判定の結果が否定の場合、動作制御部33は、ステップS600において、ロボット10の動作をエラーとして停止する。この場合、図4に示す動作が終了する。一方、ステップS520における判定の結果が肯定の場合、動作制御部33は、図3に示した動作と同様に、処理をステップS100に戻す。
また、上述したように、ステップS120における判定の結果が肯定の場合、ステップS700の処理が実行される。
ステップS700において、動作制御部33は、各関節機構JEを、ステップS140の関節値更新処理により更新された各関節機構JEの関節値に従って制御する。これにより、ロボット10の手先の位置及び姿勢は、目標の位置PPk及び姿勢PSkに変化する。なお、ロボット10に動作を教示する場合、動作制御部33は、ステップS700において、ステップS140の関節値更新処理により更新された各関節機構JEの関節値を目標の位置PPk及び姿勢PSkの関節値としてメモリ35に記憶する。
ここで、例えば、ロボット10の初期状態における手先の位置及び姿勢と目標の位置PP1及び姿勢PS1との差分が許容値以下である場合、ステップS140の関節値更新処理が1回も実行されずに、ステップS120における判定の結果が肯定となる。この場合、上述の「ステップS140の関節値更新処理により更新された各関節機構JEの関節値」は、「ロボット10の初期状態における各関節機構JEの関節値」に読み替えられる。例えば、ステップS140の関節値更新処理が1回も実行されずにステップS120における判定の結果が肯定となる場合、動作制御部33は、ステップS700において、各関節機構JEの関節値をロボット10の初期状態における各関節機構JEの関節値に維持する。
動作制御部33は、ステップS700の処理を実行した後、処理をステップS720に進める。
ステップS720において、動作制御部33は、変数kがnより小さいか否かを判定する。ステップS720における判定の結果が否定の場合、すなわち、ロボット10の手先の位置及び姿勢が最終的な目標の位置PPn及び姿勢PSnに変化した場合、動作制御部33は、図3に示す動作を終了する。一方、ステップS720における判定の結果が肯定の場合、動作制御部33は、ステップS740においてループカウントを0にリセットした後、処理をステップS760に進める。
ステップS760において、動作制御部33は、変数kをインクリメントする(k=k+1)。そして、動作制御部33は、処理をステップS8に戻す。これにより、ステップS8において、ロボット10の手先の次の目標の位置PPk及び姿勢PSkが設定される。
このように、図4に示す動作では、n個の目標状態(位置PP及び姿勢PS)の各々において、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分が許容値以下になるまで、ステップS100からステップS520までの一連の処理(単位処理)が繰り返される。
次に、図5を参照しながら、ステップS140の関節値更新処理について説明する。
図5は、図4に示した関節値更新処理の一例を示すフローチャートである。例えば、動作制御部33として機能する処理装置32は、図4に示したステップS140の関節値更新処理として、図5に示すステップS200からステップS420までの一連の処理を実行する。従って、ステップS200の処理は、図4に示したステップS120における判定の結果が否定の場合に実行される。また、ステップS420の処理が実行された後、図4に示したステップS500の処理が実行される。
また、以下では、目標の位置PP及び姿勢PSがk番目の目標の位置PPk及び姿勢PSkである場合に実行される処理を、k番目の目標状態において実行される処理及びk番目の目標状態における処理等のように、「k番目の目標状態」を用いて称する場合がある。また、図5の説明では、特に断りがない場合、関節値更新処理は、k番目の目標状態における関節値更新処理を意味する。
ステップS200及びS300の一連の処理は、図3に示したステップS200及びS300の一連の処理と同様である。但し、図5に示す動作では、ステップS300における判定の結果が肯定の場合、動作制御部33は、処理をステップS310に進める。また、ステップS300における判定の結果が否定の場合、動作制御部33は、図3に示した動作と同様に、処理をステップS400に進める。
ステップS310において、動作制御部33は、各関節機構JEの関節値を更新前の値に戻す。すなわち、動作制御部33は、前回の関節値更新処理のステップS420の処理による各関節機構JEの関節値の更新をキャンセルする。具体的には、動作制御部33は、各関節機構JEの関節値(すなわち、前回の関節値更新処理のステップS420の処理により更新された各関節機構JEの関節値)を、前回の関節値更新処理のステップS420の処理により更新される前の関節値に戻す。
ここで、目標の位置PPk及び姿勢PSkが更新された後の最初の関節値更新処理において、ステップS300における判定の結果が肯定となる場合、前回の関節値更新処理は、(k-1)番目の目標状態において最後に実行された関節値更新処理である。この場合、動作制御部33は、ステップS310において、各関節機構JEの関節値を、(k-1)番目の目標状態において最後に実行された関節値更新処理のステップS420の処理により更新される前の関節値に戻す。
動作制御部33は、ステップS310の処理を実行した後、処理をステップS320に進める。ステップS320の処理は、図3に示したステップS320の処理と同様である。なお、図5に示す例では、ステップS320の処理に用いられるヤコビ行列Jは、ステップS310の処理が実行される前にステップS200において算出されたヤコビ行列Jである。但し、ステップS320の処理に用いられるヤコビ行列Jは、ステップS310の処理が実行された後の各関節機構JEの関節値に基づいて算出されたヤコビ行列J(例えば、前回の関節値更新処理のステップS200において算出されたヤコビ行列J)であってもよい。
なお、ステップS320の処理(状態固定処理)の対象となる特定状態の関節機構JEは、ステップS310の処理(各関節機構JEの関節値の更新のキャンセル)が実行される前に、ステップS300において特定される。すなわち、ステップS320の処理の対象となる特定状態の関節機構JEは、各関節機構JEの関節値の更新がキャンセルされる前の関節値に基づいて、特定される。
動作制御部33は、ステップS320の処理を実行した後、処理をステップS400に進める。ステップS400及びS420の一連の処理(状態算出処理)は、図3に示したステップS400及びS420の一連の処理(状態算出処理)と同様である。なお、図5に示す関節値更新処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合にステップS310の処理が実行されるため、常に、特定状態でない複数の関節機構JEの関節値に対して、ステップS420の処理による更新が実行される。
このように、図5に示す関節値更新処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、前回の関節値更新処理のステップS420の処理による各関節機構JEの関節値の更新が、今回の関節値更新処理のステップS320においてキャンセルされる。すなわち、前回の関節値更新処理のステップS400及びS420の一連の処理(状態算出処理)において算出された複数の関節機構JEの各々の関節値への複数の関節機構JEの各々の関節値の更新がキャンセルされる。なお、ステップS320の処理(状態固定処理)の対象となる特定状態の関節機構JEは、上述したように、関節値の更新がキャンセルされる前の関節値に基づいて特定される。そして、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、ステップS310及びS320の一連の処理(キャンセル及び状態固定処理)が実行された後に、ステップS400及びS420の一連の処理が実行される。
従って、図5に示す関節値更新処理では、上述したように、常に、特定状態でない複数の関節機構JEの関節値に対して、ステップS420の処理による更新が実行される。すなわち、図4及び図5に示す動作では、関節機構JEが特定状態に固定された状態で、ステップS100からステップS520までの一連の処理(単位処理)が繰り返されることを抑制することができる。
なお、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作は、図4及び図5に示す例に限定されない。例えば、ステップS740の処理は、ステップS760の処理より後に実行されてもよいし、ステップS760の処理と並列に実行されてもよい。あるいは、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作は、図6又は図7に示す動作であってもよい。
図6は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の別の例を示すフローチャートである。図6に示す動作は、図4に示したステップS140の関節値更新処理の代わりにステップS140Aの関節値更新処理が実行され、ステップS780及びS782の一連の処理が図4に示した動作に追加されていることを除いて、図4に示した動作と同様である。
なお、ステップS140Aの関節値更新処理は、図3に示したステップS200からステップS420までの一連の処理である。すなわち、図6に示すステップS100からステップS520までの一連の処理は、図3に示したステップS100からステップS520までの一連の処理と同様である。従って、図6に示すステップS100からステップS520までの一連の処理では、図5に示したステップS310の処理(各関節機構JEの関節値の更新のキャンセル)は、実行されない。図6に示す動作では、図5に示したステップS310の処理がステップS140Aの関節値更新処理において実行されない代わりに、ステップS780及びS782の一連の処理がステップS760の後に実行される。以下では、ステップS780及びS782の一連の処理を中心に説明する。
動作制御部33は、ステップS760の処理を実行した後、処理をステップS780に進める。
ステップS780において、動作制御部33は、複数の関節機構JEの中に、特定状態の関節機構JEが存在するか否かを判定する。なお、ステップS780の処理で参照される複数の関節機構JEは、ステップS700において手先の位置及び姿勢が目標の位置PPk及び姿勢PSkに変化したロボット10の複数の関節機構JEである。
ステップS780における判定の結果が否定の場合、動作制御部33は、処理をステップS8に戻す。すなわち、動作制御部33は、ステップS700において手先の位置及び姿勢が目標の位置PPk及び姿勢PSkに変化したロボット10の複数の関節機構JEの中に、特定状態の関節機構JEが存在しない場合、処理をステップS8に戻す。一方、ステップS780における判定の結果が肯定の場合、動作制御部33は、処理をステップS782に進める。
ステップS782において、動作制御部33は、特定状態の関節機構JEの関節値を、特定状態の関節機構JEの可動範囲内で、かつ、特定状態でない状態に対応する関節値に変更する。そして、動作制御部33は、処理をステップS8に戻す。ステップS782の処理により、n個の目標状態(位置PP及び姿勢PS)の各々において、各関節機構JEの関節値の初期値は、特定状態でない状態に対応する関節値となる。
なお、ステップS782の処理により変更される関節値の変更後の値は、特定状態の関節機構JEの可動範囲内で、かつ、特定状態でない状態に対応する関節値の範囲のうち、変更前の値との差が最小となる値であることが好ましい。
このように、図6に示す動作では、ステップS100からステップS520までの一連の処理(単位処理)が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、繰り返し実行される単位処理のうちの1回目の単位処理が実行される前に、特定状態の関節機構JEの関節値を、特定状態でない状態に対応する関節値に変更される。これにより、図6に示す動作では、n個の目標状態(位置PP及び姿勢PS)の各々において、各関節機構JEの関節値の初期値が特定状態に対応する関節値になることを抑制することができる。この結果、図6に示す動作では、k番目の目標状態において特定状態に変化した関節機構JEが(k+1)番目以降の目標状態において特定状態に固定されることを抑制することができる。
なお、図6に示す動作においても、例えば、ステップS740の処理は、ステップS760の処理より後に実行されてもよいし、ステップS760の処理と並列に実行されてもよい。
次に、図7を参照しながら、ロボット10の状態を複数の目標状態を経由して最終的な目標状態に変化させる場合のロボットコントローラ30の動作の別の例について説明する。
図7は、ロボット10の手先の位置及び姿勢を複数の目標の位置PP及び姿勢PSに順に変化させる場合のロボットコントローラ30の動作の別の例を示すフローチャートである。図7に示す動作は、図4に示したステップS140の関節値更新処理の代わりにステップS140Aの関節値更新処理が実行され、ステップS10からステップS50までの一連の処理が図4に示した動作に追加されていることを除いて、図4に示した動作と同様である。以下では、ステップS10からステップS50までの一連の処理を中心に説明する。
ステップS10の処理、ステップS12の処理、及び、ステップS50の処理は、ステップS100の処理、ステップS120の処理、及び、ステップS500の処理とそれぞれ同様である。また、ステップS14の関節値初回更新処理は、ステップS140Aの関節値更新処理からステップS300及びS320の一連の処理が省かれた処理と同様である。なお、ステップS14の関節値初回更新処理については、後述する図8において説明される。
動作制御部33は、ステップS8の処理を実行した後、処理をステップS10に進める。
ステップS10において、動作制御部33は、ステップS100の処理と同様に、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分を算出する。そして、ステップS12において、動作制御部33は、ステップS120の処理と同様に、ロボット10の手先の位置及び姿勢と目標の位置PPk及び姿勢PSkとの差分が許容値以下であるか否かを判定する。
ステップS12における判定の結果が肯定の場合、動作制御部33は、処理をステップS700に進める。一方、ステップS12における判定の結果が否定の場合、動作制御部33は、処理をステップS14に進める。
ステップS14において、動作制御部33は、ステップS200、S400及びS420の一連の処理と同様な関節値初回更新処理を実行する。ステップS14の関節値初回更新処理により、各関節機構JEの関節値の初回の更新が実行される。
動作制御部33は、ステップS14の関節値初回更新処理を実行した後、ステップS50においてループカウントをインクリメントし、処理をステップS100に進める。
次に、図8を参照しながら、ステップS14の関節値初回更新処理について説明する。
図8は、図7に示した関節値初回更新処理の一例を示すフローチャートである。例えば、動作制御部33として機能する処理装置32は、図7に示したステップS14の関節値初回更新処理として、図8に示すステップS20からステップS42までの一連の処理を実行する。従って、ステップS20の処理は、図4に示したステップS12における判定の結果が否定の場合に実行される。また、ステップS42の処理が実行された後、図7に示したステップS50の処理が実行される。
ステップS20において、動作制御部33は、ステップS200の処理と同様に、各関節機構JEの現在の関節値に基づいて、ヤコビ行列Jを算出する。そして、動作制御部33は、処理をステップS40に進める。
ステップS40において、動作制御部33は、ステップS400の処理と同様に、ヤコビ行列Jの擬似逆行列Jを用いて、各関節機構JEの変位量を算出する。そして、動作制御部33は、処理をステップS42に進める。
ステップS42において、動作制御部33は、ステップS420の処理と同様に、各関節機構JEの変位量に基づいて、各関節機構JEの関節値を更新する。そして、動作制御部33は、処理を図7に示したステップS50に進める。
このように、図8に示す関節値初回更新処理では、図3に示したステップS300及びS320の一連の処理(状態固定処理)が実行されない。従って、図8に示す関節値初回更新処理では、関節機構JEの状態が特定状態でありか否かに拘わらず、各関節機構JEの関節値が更新される。このため、図8に示す関節値初回更新処理では、例えば、(k-1)番目の目標状態において実行されたステップS700の処理の後の状態が特定状態である関節機構JEの関節値が、特定状態でない状態に対応する関節値に更新される場合がある。この場合、繰り返し実行される単位処理(ステップS100からステップS520までの一連の処理)の1回目の単位処理が特定状態に対応する関節値から開始されることを抑制することができる。
但し、図8に示す関節値初回更新処理では、特定状態の関節機構JEの関節値が、特定状態の関節機構JEを可動範囲外にする方向に更新される場合がある。例えば、関節値初回更新処理は、目標の位置PPk及び姿勢PSkが更新される度に実行されるため、特定状態の関節機構JEを可動範囲外にする方向への関節値の更新が繰り返される場合がある。この場合、繰り返し実行される関節値初回更新処理において、特定状態の関節機構JEの関節値が、特定状態の関節機構JEを可動範囲外にする関節値に更新されるおそれがある。
このため、特定状態の範囲は、1回の更新で変化する関節値の変化量に対応する範囲よりも大きい範囲であることが好ましい。より好ましくは、特定状態の範囲は、特定状態の関節機構JEを可動範囲外にする方向への関節値の更新が複数回(例えば、n回)繰り返された場合の関節値の合計の変化量に対応する範囲よりも大きい範囲である。あるいは、図7に示す動作において、図6に示したステップS780及びS782の一連の処理と同様の処理が、ステップS14の処理が実行された後で、ステップS100の処理が実行される前までに実行されてもよい。
次に、図9から図20を参照しながら、ロボット10の手先の位置及び姿勢を目標の位置及び姿勢にするシミュレーションの結果の一例について説明する。
図9は、シミュレーションに用いられたモデルを説明するための説明図である。以下では、シミュレーションに用いられたモデルは、シミュレーションモデルとも称される。
以下に説明するシミュレーションでは、シミュレーション結果を分かり易くするために、図1に示した関節機構JEp(JEp1及びJEp2)の代わりに関節機構JEe(JEe1及びJEe2)を有するロボット10がモデル化されている。なお、複数の関節機構JEをそれぞれ駆動する複数のモータMOの制御に着目した場合、図1に示したロボット10も図9に示すロボット10と同様な制御値になる。例えば、図9に示すロボット10では、リンクLK1A自体が伸縮することにより、関節機構JEr3がリンクLK1Aの延在方向に沿って移動する。また、リンクLK2A自体が伸縮することにより、リンクLK2Aの2つの端部のうち、関節機構JEr4が接続された端部が、リンクLK2Aの延在方向に沿って、関節機構JEr3に対して相対的に移動する。先ず、関節機構JEe1及びJEe2について説明する。
関節機構JEe1は、支持部分LK1a、可動部分LK1b及び可動部分LK1cを含むリンクLK1Aを軸Axe1に沿って伸縮させる直動関節であり、「第1伸縮機構」の例である。関節機構JEe2は、支持部分LK2a、可動部分LK2b及び可動部分LK2cを含むリンクLK2Aを軸Axe2に沿って伸縮させる直動関節であり、「第2伸縮機構」の例である。軸Axe1は、リンクLK1Aの延在方向に沿う軸であり、軸Axe2は、リンクLK2Aの延在方向に沿う軸である。
リンクLK1Aは、「第1リンク」の例であり、リンクLK2Aは、「第2リンク」の例である。また、支持部分LK1aは、「第1支持部分」の例であり、関節機構JEr2を介してボディ部BDPに接続される。可動部分LK1cは、「第1可動部分」の例であり、関節機構JEr3を介してリンクLK2Aの支持部分LK2aに接続される。支持部分LK2aは、「第2支持部分」の例である。可動部分LK2cは、「第2可動部分」の例であり、関節機構JEr4を介して先端部TP1に接続される。
例えば、可動部分LK1bは、可動部分LK1cと一体的に移動するように可動部分LK1cに接続され、支持部分LK1aに対して移動可能に支持部分LK1aに接続される。そして、関節機構JEe1は、支持部分LK1aに対して可動部分LK1bを軸Axe1に沿って移動させることにより、支持部分LK1aに対して可動部分LK1cを軸Axe1に沿って移動させる。これにより、リンクLK1Aは、軸Axe1に沿って伸縮する。
また、例えば、可動部分LK2bは、可動部分LK2cと一体的に移動するように可動部分LK2cに接続され、支持部分LK2aに対して移動可能に支持部分LK2aに接続される。そして、関節機構JEe2は、支持部分LK2aに対して可動部分LK2bを軸Axe2に沿って移動させることにより、支持部分LK2aに対して可動部分LK2cを軸Axe2に沿って移動させる。これにより、リンクLK2Aは、軸Axe2に沿って伸縮する。
図9に示すシミュレーションモデルでは、複数の関節機構JEと1対1に対応する複数の座標系Σが導入されている。複数の座標系Σの各々には、対応する関節機構JEがボディ部BDPに近い順に、数字の1から8のいずれかが付されている。例えば、関節機構JEr1が1番目の関節であり、関節機構JEr2が2番目の関節であり、関節機構JEe1が3番目の関節である。また、関節機構JEr3が4番目の関節であり、関節機構JEe2が5番目の関節であり、関節機構JEr4が6番目の関節である。そして、関節機構JEr5が7番目の関節であり、関節機構JEr6が8番目の関節である。
i番目の関節機構JE(第i関節)に対応する座標系Σiは、互いに直交するXi軸、Yi軸、及び、Zi軸を有する3軸の直交座標系である。図9に示す例では、iは1以上8以下の自然数である。8番目の関節機構JEr6に対応する座標系Σ8は、ロボット10の先端座標系に対応する。なお、図9では、図を見やすくするために、座標系Σ1から座標系Σ7までのY軸の記載が省略されている。
例えば、座標系ΣiのZi軸は、i番目の関節機構JEが回転関節である場合、i番目の関節機構JEによる回転の回転軸に対応し、i番目の関節機構JEが直動関節である場合、i番目の関節機構JEにより伸縮するリンクLKの伸縮方向に沿う軸に対応する。また、例えば、座標系ΣiのXi軸は、基本的に、Zi軸とZi+1軸との共通垂線となるように定められる。
また、i番目の関節機構JEは、例えば、ヤコビ行列Jのi列目の要素Jに対応付けられる。例えば、ヤコビ行列Jの1列目の要素Jは、関節機構JEr1に対応し、ヤコビ行列Jの2列目の要素Jは、関節機構JEr2に対応し、ヤコビ行列Jの3列目の要素Jは、関節機構JEe1に対応する。また、ヤコビ行列Jの4列目の要素Jは、関節機構JEr3に対応し、ヤコビ行列Jの5列目の要素Jは、関節機構JEe2に対応し、ヤコビ行列Jの6列目の要素Jは、関節機構JEr4に対応する。そして、ヤコビ行列Jの7列目の要素Jは、関節機構JEr5に対応し、ヤコビ行列Jの8列目の要素Jは、関節機構JEr6に対応する。
また、シミュレーションでは、基準座標系Σ0及び座標系Σ1の原点間の距離に対応するリンク長L1は0.2409[m]に設定され、座標系Σ5及びΣ6の原点間の距離に対応するリンク長L6は0.1[m](シミュレーションにおけるパラメータとしては-0.1[m])に設定されている。また、座標系Σ6及びΣ7の原点間の距離に対応するリンク長L7は0.1[m]に設定され、座標系Σ7及びΣ8の原点間の距離に対応するリンク長L8は0.05[m]に設定されている。また、関節機構JEe1によるリンクLK1Aの可動範囲(伸縮範囲)は、0.25[m]から0.5[m]に設定され、関節機構JEe2によるリンクLK2Aの可動範囲(伸縮範囲)は、0.3[m]から0.5[m]に設定されている。
また、シミュレーションでは、ロボット10の各関節機構JEの初期の関節値が図10に示す初期関節値θintであり、ロボット10の手先がX0軸の正方向に移動する場合を想定する。
図10は、図9に示したシミュレーションモデルの初期関節値θintの一例を説明するための説明図である。
図10の星印で示されるように、関節機構JEe1の初期関節値θintは、リンクLK1Aの可動範囲の上限である0.5[m]に設定され、関節機構JEe2の初期関節値θintは、リンクLK2Aの可動範囲の上限である0.5[m]に設定されている。すなわち、関節機構JEe1及びJEe2は、両方とも限界状態である。このため、本実施形態では、後述の図16に示すように、ヤコビ行列Jの複数の要素のうち、関節機構JEe1及びJEe2にそれぞれ対応する要素J及びJの値は、0に設定される。なお、本実施形態と対比される対比例の制御方法(状態固定処理が実行されない制御方法)では、図12に示すように、ヤコビ行列Jの複数の要素のうちの関節機構JEe1及びJEe2にそれぞれ対応する要素J及びJの値は、特に固定されない。
図11は、シミュレーションに用いられた手先移動量Δrを説明するための説明図である。本シミュレーションでは、ジョグ動作によりロボット10の手先をX0軸の正方向に0.00272[m]だけ移動させる場合を想定する。従って、図11に示すように、X0軸の正方向への移動量(0.00272[m])が手先移動量Δrに該当する。
すなわち、本シミュレーションでは、関節機構JEe1及びJEe2によりリンクLK1A及びLK2Aが上限まで伸びた限界状態から、ロボット10の手先がX0軸の正方向に0.00272[m]だけ移動する。本シミュレーションでは、上述の式(7)の関係“θ(・)=Jr(・)”を用いて、手先移動量Δrに対する関節移動量Δθが算出される。そして、関節移動量Δθを初期関節値θintに加算することにより、手先が移動した後の関節値が最終関節値θendとして算出される。
先ず、図12から図15を参照しながら、対比例の制御方法(状態固定処理が実行されない制御方法)によるシミュレーションについて説明する。
図12は、対比例の制御方法に用いられるヤコビ行列Jを説明するための説明図である。また、図13は、図12に示したヤコビ行列Jの擬似逆行列Jを説明するための説明図である。
ヤコビ行列Jは、図9において説明したシミュレーションモデル及び図10に示した初期関節値θintに基づいて算出される。ヤコビ行列Jの算出方法については、既知であるため、説明を省略する。対比例の制御方法では、8個の関節機構JEの全て(8個の軸Ax)を動作させることを前提にして、ヤコビ行列Jが算出される。このため、図12に示すように、限界状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J及びJの値は、0に固定されていない。
図12に示すヤコビ行列Jから図13に示す擬似逆行列Jが算出される。擬似逆行列Jの算出方法については、既知であるため、説明を省略する。図13に示す擬似逆行列Jが上述の式(7)の擬似逆行列Jとして用いられ、関節移動量Δθが算出される。
図14は、図13に示した擬似逆行列Jを用いて算出された関節移動量Δθを示す図である。対比例の制御方法では、状態固定処理が実行されないため、図14の星印で示されるように、限界状態の関節機構JEe1及びJEe2が変位することを示す値が、関節移動量Δθとして算出される。手先が移動した後の関節値である最終関節値θendの算出に図14に示す関節移動量Δθが用いられた場合、関節機構JEe1及びJEe2の状態は、図15に示すように、可動範囲外の状態になる。
図15は、図14に示した関節移動量Δθに基づいて算出された最終関節値θendを示す図である。最終関節値θendは、図14に示した関節移動量Δθを図10に示した初期関節値θintに加算することにより算出される。なお、図15に示す最終関節値θendは、関節移動量Δθと初期関節値θintとの加算結果を小数点第7位で四捨五入した値である。
図15の星印で示されるように、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の上限である0.5[m]を超えた値になり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の上限である0.5[m]を超えた値になる。すなわち、対比例の制御方法では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)が得られず、計算結果がエラーとなる。この場合、ロボット10に所望の動作を実行させることができない。
次に、図16から図19を参照しながら、状態固定処理が実行される本実施形態によるシミュレーションについて説明する。
図16は、特定状態の関節機構JEが固定された場合のヤコビ行列Jを説明するための説明図である。また、図17は、図16に示したヤコビ行列Jの擬似逆行列Jを説明するための説明図である。
関節機構JEe1及びJEe2の状態は、図10において説明したように、限界状態である。すなわち、関節機構JEe1及びJEe2の状態は、限界状態に所定の余裕を持たせた特定状態でもある。このため、本実施形態では、図16に示すように、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J及びJの値は、0に設定される。なお、図16に示すヤコビ行列Jは、要素J及びJの値が0に設定されることを除いて、図12に示したヤコビ行列Jと同じである。
このように、本実施形態では、要素J及びJの値が0に設定されるため、要素J及びJにそれぞれ対応する関節機構JEe1及びJEe2を、状態が変位しない固定関節と見なして、逆運動学計算を実行することができる。
例えば、図16に示すヤコビ行列Jから図17に示す擬似逆行列Jが算出される。そして、図17に示す擬似逆行列Jが上述の式(7)の擬似逆行列Jとして用いられ、関節移動量Δθが算出される。
図18は、図17に示した擬似逆行列Jを用いて算出された関節移動量Δθを示す図である。本実施形態では、ヤコビ行列Jの要素J及びJの値が0に設定されているため、図17の星印で示されるように、要素J及びJにそれぞれ対応する関節機構JEe1及びJEe2の関節移動量Δθは、0と見なせる値になる。このように、本実施形態では、限界状態の関節機構JEe1及びJEe2の関節移動量Δθは、0と見なせる値になる。従って、図18に示す関節移動量Δθを用いて算出された最終関節値θendに基づく関節機構JEe1及びJEe2の状態は、図19に示すように、可動範囲内の状態になる。
図19は、図18に示した関節移動量Δθに基づいて算出された最終関節値θendを示す図である。最終関節値θendは、図18に示した関節移動量Δθを図10に示した初期関節値θintに加算することにより算出される。なお、図19に示す最終関節値θendは、図15に示した最終関節値θendと同様に、関節移動量Δθと初期関節値θintとの加算結果を小数点第7位で四捨五入した値である。
図19の星印で示されるように、関節機構JEe1の最終関節値θendは、関節機構JEe1の初期関節値θintと同じ値(リンクLK1Aの可動範囲の上限である0.5[m])である。同様に、関節機構JEe2の最終関節値θendは、関節機構JEe2の初期関節値θintと同じ値(リンクLK2Aの可動範囲の上限である0.5[m])である。このように、本実施形態では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)を得ることができる。
図20は、図10に示した初期関節値θintと異なる初期関節値θintを用いたシミュレーションの結果を説明するための説明図である。
図20の星印で示されるように、関節機構JEe1の初期関節値θintは、リンクLK1Aの可動範囲の下限である0.25[m]に設定され、関節機構JEe2の初期関節値θintは、リンクLK2Aの可動範囲の下限である0.3[m]に設定されている。すなわち、関節機構JEe1及びJEe2は、両方とも限界状態である。本シミュレーションでは、ジョグ動作によりロボット10の手先をX0軸の負方向に0.00272[m]だけ移動させる場合(手先移動量ΔrのX0軸の移動量が-0.00272[m]、X0軸以外の軸の移動量は0[m])を想定する。
すなわち、本シミュレーションでは、関節機構JEe1及びJEe2によりリンクLK1A及びLK2Aが下限まで縮んだ限界状態から、ロボット10の手先がX0軸の負方向に0.00272[m]だけ移動する。
図20では、対比例の制御方法(状態固定処理が実行されない制御方法)のシミュレーション結果(全軸駆動)と、本実施形態の制御方法(状態固定処理が実行される制御方法)のシミュレーション結果(2軸固定)が示されている。
対比例の制御方法では、全軸駆動を前提に算出されたヤコビ行列Jの擬似逆行列Jが関節移動量Δθの算出に用いられるため、最終関節値θendは、図20の“全軸駆動”に示すように、関節機構JEe1及びJEe2の状態が可動範囲外の状態になる。例えば、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の下限である0.25[m]よりも小さい値になり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の下限である0.3[m]よりも小さい値になる。
これに対し、本実施形態の制御方法では、限界状態の関節機構JEe1及びJEe2にそれぞれ対応する要素J3及びJ4の値が0に設定されたヤコビ行列Jの擬似逆行列Jが関節移動量Δθの算出に用いられる。このため、本実施形態の制御方法では、図20の“2軸固定”に示すように、関節機構JEe1及びJEe2の状態は、可動範囲内の状態に維持される。例えば、関節機構JEe1の最終関節値θendは、リンクLK1Aの可動範囲の下限である0.25[m]であり、関節機構JEe2の最終関節値θendは、リンクLK2Aの可動範囲の下限である0.3[m]である。
このように、限界状態の関節機構JEが存在する場合のジョグ動作を考えた場合、全軸(8軸)での逆運動学計算では、限界状態の関節機構JEが可動範囲外の状態になる。これに対し、本実施形態では、限界状態の関節機構JEを固定関節と見なして、残りの6軸で逆運動学計算が行われるため、限界状態の関節機構JEは、変位しない。従って、本実施形態では、各関節機構JEを可動範囲内でジョグ動作を継続させることができる。
なお、図9から図20において説明したシミュレーションでは、限界状態の関節機構JEが2個である場合を想定したが、限界状態の関節機構JEの数は、2個に限定されない。例えば、限界状態の関節機構JEの数は、1個でもよいし、3個以上m個未満(mは、関節機構JEの全数)でもよい。また、限界状態に所定の余裕を持たせた特定状態の関節機構JEが固定関節と見なされてもよい。
ここで、逆運動学計算を実際に行う場面の例を以下に示す。1つ目は、ロボット10をジョグ動作させる場合である。ジョグ動作では、ロボット10に、目標位置が指示されるため、指示された目標位置に移動するための各関節の角度(移動量)が逆運動学計算により算出される。2つ目は、ロボット10の軌道生成時である。ロボット10に繰り返し動作を実行させる場合、事前に軌道を覚えこませておく必要がある。事前に軌道生成する場合に、軌道上の複数の点における各関節の角度が逆運動学計算により算出される。なお、軌道上の点の数が少ない場合には、ロボット10を実際に動作させる際に、点と点の間の軌道を算出して補完することもある。3つ目は、ロボット10にビジョンカメラ等が搭載されており、ビジョン情報等に基づいて、ロボット10の軌道を生成(又は軌道修正)する場合である。この場合も、1つ目のジョグ動作と同様に新たな目標位置が指示される。
以上、本実施形態では、ロボットシステム1は、7個以上の複数の関節機構JEを有する多関節ロボットであるロボット10と、ロボット10の動作を制御するロボットコントローラ30と、を有する。
ロボット10の制御方法は、ロボット10を動作させる複数の関節機構JEの変位量を計算する逆運動学計算を実行することにより、複数の関節機構JEの各々の状態に関する関節値を算出する状態算出処理と、複数の関節機構JEのうち、関節値に基づく状態が、あらかじめ定められた特定状態(例えば、関節機構JEの変位に関する制約が満たされる限界の状態に所定の余裕を持たせた状態)である関節機構JEに対して実行する状態固定処理と、を含む単位処理を繰り返し実行し、状態固定処理を実行した場合、状態算出処理において算出された複数の関節機構JEの関節値のうち、特定状態の関節機構JEの関節値は実質的に変位させることなく、特定状態でない関節機構JEの関節値を変位させる。なお、特定状態は、関節値が、あらかじめ定められた各関節機構JEの可動領域の領域内の、可動領域の領域外との境界領域の値となる状態であってもよい。
ロボットコントローラ30は、上述の単位処理を繰り返し実行する動作制御部33を有する。例えば、制御プログラムPGrは、ロボットコントローラ30に含まれる処理装置32を上述の動作制御部33として機能させる。
このように、本実施形態では、特定状態の関節機構JEを状態が変位しない固定関節と見なして、残りの関節機構JEを用いて逆運動学計算を実行する。このため、本実施形態では、特定状態の関節機構JEを変位させずに、逆運動学計算を実行することができる。この結果、本実施形態では、逆運動学計算の正しい解(各関節機構JEを可動範囲内で動作させる解)を得ることができる。すなわち、本実施形態では、逆運動学計算の結果がエラー(例えば、各関節機構JEを可動範囲内で動作させる解が得られないエラー)となる頻度を低減することができる。この結果、本実施形態では、各関節機構JEを可動範囲内でロボット10を継続して動作させることができる。
また、本実施形態では、ロボットコントローラ30は、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、複数の関節機構JEの関節値の更新をキャンセルしてもよい。この場合、単位処理では、複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、前回の単位処理の状態算出処理において算出された複数の関節機構JEの各々の関節値への複数の関節機構JEの各々の関節値の更新がキャンセルされ、関節値の更新がキャンセルされる前の関節値に基づいて、状態固定処理の対象となる特定状態の関節が特定され、状態固定処理が実行された後に状態算出処理が実行される。これにより、本実施形態では、状態算出処理において算出された関節値への更新を、常に、特定状態でない複数の関節機構JEの関節値に対して実行することができる。この結果、本実施形態では、関節機構JEが特定状態に固定された状態で、単位処理が繰り返されることを抑制することができる。
また、本実施形態では、ロボットコントローラ30は、単位処理が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合、繰り返し実行される単位処理のうちの1回目の単位処理が実行される前に、特定状態の関節機構JEの関節値を、特定状態でない状態に対応する関節値に変更してもよい。これにより、本実施形態では、繰り返し実行される単位処理のうちの1回目の単位処理において、各関節機構JEの関節値の初期値が特定状態に対応する関節値になることを抑制することができる。この結果、本実施形態では、単位処理が繰り返し実行される前の初期状態の複数の関節機構JEの中に特定状態の関節機構JEが含まれる場合においても、当該関節機構JEの状態が特定状態に固定されることを抑制することができる。
また、本実施形態では、ロボットコントローラ30は、状態算出処理において、ヤコビ行列Jを用いて逆運動学計算を実行し、状態固定処理において、ヤコビ行列Jの複数の要素のうち、特定状態の関節機構JEに係る要素の値を実質的に0に設定することにより、特定状態の関節機構JEの関節値を固定値に設定する。このように、本実施形態では、ヤコビ行列Jの複数の要素のうちの特定状態の関節機構JEに係る要素の値を実質的に0に設定することにより、特定状態の関節機構JEの関節値を固定値に容易に設定することができる。すなわち、特定状態の関節が有った場合でも、ヤコビ行列Jの行数及び列数を変更することなく、また複数の行列に分割することなく、逆運動学計算を継続して実行し各関節の関節値を算出することができる。
また、本実施形態では、複数の関節機構JEが、少なくとも1個の直動関節(例えば、関節機構JEp又はJEe等)を含む。この場合においても、本実施形態では、可動範囲の上限又は下限に近い特定状態の直動関節を固定関節と見なして、残りの関節機構JEを用いて逆運動学計算を実行するため、逆運動学計算の結果がエラーとなる頻度を低減することができる。従って、本実施形態では、直動関節を含む多関節ロボット等の多種多様な多関節ロボットを継続して動作させることができる。
また、本実施形態では、ロボット10は、ボディ部BDPと、リンクLK1と、リンクLK2と、先端部TP1と、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸Ax1を第1回転軸として、ボディ部BDPの少なくとも一部分を回転させる関節機構JEr1と、ボディ部BDPとリンクLK1を接続し、ボディ部BDPの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度より大きい軸Ax2を第2回転軸としてリンクLK1を回転させる関節機構JEr2と、リンクLK1とリンクLK2を接続し、リンクLK1が延在する方向De1とのなす角度が所定角度より大きい軸Ax3を第3回転軸としてリンクLK2をリンクLK1に対して回転させる関節機構JEr3と、リンクLK2と先端部TP1を接続し、リンクLK2が延在する方向De2とのなす角度が所定角度より大きい軸Ax4を第4回転軸として、先端部TP1をリンクLK2に対して回転させる関節機構JEr4と、リンクLK1の延在方向(方向De1)に沿って、関節機構JEr3をリンクLK1に対して相対的に移動させる関節機構JEp1と、リンクLK2の延在方向(方向De2)に沿って、リンクLK2を関節機構JEr3に対して相対的に移動させる関節機構JEp2と、有する。先端部TP1は、リンクLK2に接続される第1部分TP11と、第1部分TP11に接続される第2部分TP12と、第1部分TP11と第2部分TP12を接続し、第4回転軸とのなす角度が所定角度より大きい軸Ax5を第5回転軸として、第2部分TP12を第1部分TP11に対して回転させる関節機構JEr5と、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1の少なくとも一部分を回転させる関節機構JEr6と、を含む。複数の関節機構JEは、関節機構JEr1、関節機構JEr2、関節機構JEr3、関節機構JEr4、関節機構JEr5、関節機構JEr6、関節機構JEp1及び関節機構JEp2である。
このように、本実施形態では、6個の回転関節及び2個の直動関節を含む多関節ロボットであるロボット10を継続して動作させることができる。このようなロボットの場合、2個の直動関節は冗長関節として機能することが多く、関節値が頻繁に特定状態となってしまう。従って直動関節を有するロボットの場合は、図9から図20を用いて説明したシミュレーションのように、本直動関節に固定処理を実行することにより、非常に効率的にロボットの制御を実行することができる。
また、本実施形態では、部品を組み付ける、又は、部品を取り除くことを含む物品の製造方法にロボットシステム1が用いられてもよい。この場合、部品を組み付ける、又は、部品を取り除く作業が、逆運動学計算の結果がエラーとなることにより停止することを、抑止することができる。すなわち、本実施形態では、部品を組み付ける、又は、部品を取り除く作業を効率よく実行することができる。
[2.変形例]
本発明は、以上に例示した実施形態に限定されない。具体的な変形の態様を以下に例示する。以下の例示から任意に選択された2以上の態様を併合してもよい。
[第1変形例]
上述した実施形態では、関節機構JEr4が、リンクLK2と先端部TP1を接続する場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2に含まれてもよい。
図21は、第1変形例に係るロボット10の一例を説明するための説明図である。図1から図9において説明した要素と同様の要素については、同様の符号を付し、詳細な説明を省略する。
本変形例に係るロボット10は、例えば、図1に示した関節機構JEp(JEp1及びJEp2)の代わりに関節機構JEe(JEe1及びJEe2)を有する8軸多関節ロボットである。例えば、ロボット10は、関節機構JEr1A、JEr2、JEr3A、JEr4A、JEr5A、JEr6、JEe1及びJEe2と、ボディ部BDPaと、リンクLK1A及びLK2Aと、先端部TP1Aとを有する。なお、関節機構JEe1は、リンクLK1Aに設けられ、関節機構JEe2及びJEr4Aは、リンクLK2Aに設けられる。
ボディ部BDPaは、「基部」の例である。関節機構JEr1Aは、「第1駆動機構」の例であり、関節機構JEr3Aは、「第3駆動機構」の例であり、関節機構JEr5Aは、「第5駆動機構」の例である。
ボディ部BDPaは、関節機構JEr1Aを介して床等の所定の場所に固定される。関節機構JEr1Aは、ボディ部BDPaの底面BDPbtに垂直な軸Ax1を回転軸として、ボディ部BDPaを回転させる。
関節機構JEr2は、ボディ部BDPaとリンクLK1Aの支持部分LK1aを接続し、ボディ部BDPaの底面BDPbtに平行な軸Ax2を回転軸としてリンクLK1Aをボディ部BDPaに対して回転させる。
リンクLK1Aは、例えば、リンクLK1Aが延在する方向De1に沿って伸縮可能に構成される。例えば、リンクLK1Aは、ボディ部BDPaに接続される支持部分LK1aと、可動部分LK1b及びLK1cと、関節機構JEe1とを含む。また、リンクLK2Aは、例えば、リンクLK2Aが延在する方向De2に沿って伸縮可能に構成される。例えば、リンクLK2Aは、リンクLK1Aの可動部分LK1cに接続される支持部分LK2aと、可動部分LK2b及びLK2cと、関節機構JEe2と、関節機構JEr4Aとを含む。
リンクLK(LK1A及びLK2A)と関節機構JEe(JEe1及びJEe2)とについては、図9において説明しているため、詳細な説明を省略する。例えば、支持部分LK1aは、中空である。そして、リンクLK1Aが収縮した場合、可動部分LK1bの少なくとも一部が支持部分LK1aの内部に格納される。また、例えば、支持部分LK2aは、中空である。そして、リンクLK2Aが収縮した場合、可動部分LK2bの少なくとも一部が支持部分LK2aの内部に格納される。
関節機構JEr3Aは、リンクLK1Aの可動部分LK1cとリンクLK2Aの支持部分LK2aを接続し、リンクLK1Aが延在する方向De1に垂直な軸Ax3を回転軸としてリンクLK2AをリンクLK1Aに対して回転させる。
関節機構JEr4Aは、リンクLK2Aが延在する方向De2と平行な軸Ax4Aを回転軸として、可動部分LK2cを支持部分LK2aに対して回転させる。関節機構JEr4Aは、「第4駆動機構」の例であり、軸Ax4Aは、「第4回転軸」の例である。
関節機構JEr5Aは、リンクLK2Aの可動部分LK2cと先端部TP1Aを接続し、リンクLK2Aが延在する方向De2に垂直な軸Ax5を回転軸として先端部TP1AをリンクLK2Aに対して回転させる。
先端部TP1Aは、関節機構JEr5Aを介してリンクLK2の可動部分LK2cに接続される第2部分TP12Aと、関節機構JEr6とを含む。関節機構JEr6は、図1に示した関節機構JEr6と同様である。
なお、本変形例に係るロボット10の構成は、図21に示す例に限定されない。例えば、図21に示す例では、関節機構JEr4Aは、方向De2に沿って、リンクLK2Aの可動部分LK2cと一体的に支持部分LK2aに対して移動するが、支持部分LK2aに固定されていてもよい。この場合、関節機構JEr4Aは、軸Ax4Aを回転軸として可動部分LK2bを支持部分LK2aに対して回転させ、関節機構JEe2は、可動部分LK2cを可動部分LK2bに対して移動させてもよい。可動部分LK2cが可動部分LK2bに対して移動する構成では、例えば、可動部分LK2bは、中空である。そして、リンクLK2Aが収縮した場合、可動部分LK2cの少なくとも一部が可動部分LK2bの内部に格納される。また、関節機構JEe1及びJEe2の一方は、省かれてもよい。
以上、本変形例では、ロボット10は、ボディ部BDPaと、支持部分LK1a及び可動部分LK1cを含むリンクLK1Aと、支持部分LK2a及び可動部分LK2cを含むリンクLK2Aと、先端部TP1Aと、ボディ部BDPaの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度以下の軸Ax1を第1回転軸として、ボディ部BDPaの少なくとも一部分を回転させる関節機構JEr1Aと、ボディ部BDPaと支持部分LK1aを接続し、ボディ部BDPaの底面BDPbtに垂直な方向Dv1とのなす角度が所定角度より大きい軸Ax2を第2回転軸としてリンクLK1Aをボディ部BDPaに対して回転させる関節機構JEr2と、可動部分LK1cと支持部分LK2aを接続し、リンクLK1Aが延在する方向De1とのなす角度が所定角度より大きい軸Ax3を第3回転軸としてリンクLK2AをリンクLK1Aに対して回転させる関節機構JEr3Aと、リンクLK2Aが延在する方向De2とのなす角度が所定角度以下の軸Ax4Aを第4回転軸として、可動部分LK2cを支持部分LK2aに対して回転させる関節機構JEr4Aと、可動部分LK2cと先端部TP1Aを接続し、リンクLK2Aの延在方向(方向De2)とのなす角度が所定角度より大きい軸Ax5を第5回転軸として先端部TP1AをリンクLK2Aに対して回転させる関節機構JEr5Aと、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1Aの少なくとも一部分をリンクLK2Aに対して回転させる関節機構JEr6と、支持部分LK1aに対して可動部分LK1cをリンクLK1Aの延在方向(方向De1)に沿って移動させることにより、リンクLK1Aを伸縮させる関節機構JEe1と、支持部分LK2aに対して可動部分LK2cをリンクLK2Aの延在方向(方向De2)に沿って移動させることにより、リンクLK2Aを伸縮させる関節機構JEe2と、を含む。複数の関節機構JEは、関節機構JEr1A、関節機構JEr2、関節機構JEr3A、関節機構JEr4A、関節機構JEr5A、関節機構JEr6、関節機構JEe1及び関節機構JEe2である。本変形例においても、上述した実施形態と同様の効果を得ることができる。
[第2変形例]
上述した実施形態では、関節機構JEr4が、リンクLK2が延在する方向De2に垂直な軸Ax4を回転軸として、先端部TP1をリンクLK2に対して回転させる場合を例示したが、本発明はこのような態様に限定されるものではない。例えば、関節機構JEr4は、リンクLK2が延在する方向De2とのなす角度が所定角度以下の軸を回転軸として、先端部TP1をリンクLK2に対して回転させてもよい。
図22は、第2変形例に係る先端部TP1Bの一例を説明するための説明図である。図1から図21において説明した要素と同様の要素については、同様の符号を付し、詳細な説明を省略する。
例えば、本変形例に係るロボット10は、図1に示したリンクLK2、関節機構JEr4及び先端部TP1の代わりにリンクLK2B、関節機構JEr4B及び先端部TP1Bを有することを除いて、図1に示したロボット10と同様である。リンクLK2Bは、関節機構JEr4の代わりに関節機構JEr4Bが接続されることを除いて、リンクLK2と同様である。なお、リンクLK2Bは、「第2リンク」の例であり、関節機構JEr4Bは、「第4駆動機構」の例である。
関節機構JEr4Bは、リンクLK2Bと先端部TP1Bを接続し、方向De2に平行な軸Ax4Aを回転軸として、先端部TP1BをリンクLK2Bに対して回転させる。図11の回転方向Dr4は、軸Ax4Aを回転軸として回転する場合の先端部TP1Bの回転方向を示す。なお、軸Ax4Aは、「第4回転軸」の例であり、リンクLK2Bが延在する方向De2とのなす角度が所定角度以下の軸に該当する。
先端部TP1Bにおいても、図1に示した先端部TP1と同様に、エンドエフェクタ20が端面TP1sfに取り付けられる。先端部TP1Bは、リンクLK2Bに接続される第1部分TP11Aと、第1部分TP11Aに接続される第2部分TP12Aと、関節機構JEr5Aと、関節機構JEr6とを含む。第1部分TP11Aは、例えば、関節機構JEr4Bを介してリンクLK2Bに接続される。従って、第1部分TP11Aは、軸Ax4Aを回転軸としてリンクLK2Bに対して回転する。
関節機構JEr5Aは、第1部分TP11Aと第2部分TP12Aを接続し、軸Ax4Aに垂直な軸Ax5を回転軸として、第2部分TP12Aを第1部分TP11Aに対して回転させる。図1の回転方向Dr5は、軸Ax5を回転軸として回転する場合の第2部分TP12Aの回転方向を示す。
関節機構JEr6は、図1に示した関節機構JEr6と同様である。例えば、関節機構JEr6は、軸Ax5に垂直な軸Ax6を回転軸として、先端部TP1Bの少なくとも一部分(例えば、端面TP1sf)を回転させる。図11に示す例では、図1に示した関節機構JEr6と同様に、関節機構JEr6の表面が端面TP1sfに該当する。なお、関節機構JEr6が第2部分TP12Aに含まれる構成等では、第2部分TP12Aの端面が端面TP1sfであってもよい。
以上、本変形例では、関節機構JEr4Bは、方向De2とのなす角度が所定角度以下の軸Ax4Aを第4回転軸として、先端部TP1BをリンクLK2Bに対して回転させる。先端部TP1Bは、リンクLK2Bに接続される第1部分TP11と、第1部分TP11に接続される第2部分TP12と、関節機構JEr5と、関節機構JEr6とを含む。関節機構JEr5は、第1部分TP11と第2部分TP12を接続し、第4回転軸とのなす角度が所定角度より大きい軸Ax5を第5回転軸として、第2部分TP12を第1部分TP11に対して回転させる。関節機構JEr6は、第5回転軸とのなす角度が所定角度より大きい軸Ax6を第6回転軸として、先端部TP1の少なくとも一部分を回転させる。本変形例においても、上述した実施形態と同様の効果を得ることができる。
[第3変形例]
上述した実施形態及び変形例では、6個の回転関節及び2個の直動関節を含む多関節ロボットをロボット10として例示したが、本発明はこのような態様に限定されるものではない。例えば、ロボット10は、7軸の多関節ロボットであってもよいし、9軸以上の多関節ロボットであってもよい。以上、本変形例においても、上述した実施形態及び変形例と同様の効果を得ることができる。
[3.応用例]
上述した実施形態及び変形例において説明したロボット10を含むロボットシステム1は、部品を組み付ける、又は、部品を取り除くことを含む物品の製造方法に用いられてもよい。
[4.その他]
上述した実施形態において簡単に説明した「旋回」と他の回転との区別について、いくつかの例を挙げて説明する。
図23は、旋回の一例を説明するための説明図である。図23では、長手方向を把握可能な2個のリンクLKi及びLKjの接続を例にして、旋回と他の回転との区別について説明する。図23の延在方向Deiは、リンクLKiが延在する方向を示し、延在方向Dejは、リンクLKjが延在する方向を示す。また、図23の関節機構JEriは、リンクLKiとリンクLKjを接続し、軸Axiを回転軸として、リンクLKjをリンクLKiに対して回転させる。
図23に示す例では、リンクLKiの延在方向Dei(特定の方向)と軸Axiとのなす角度βが所定角度より大きい場合、当該軸Axiを回転軸とした回転は、「旋回」に該当する。すなわち、リンクLKiの延在方向Deiと軸Axiとのなす角度βが所定角度以下の場合、当該軸Axiを回転軸とした回転は、旋回以外の回転(旋回と区別される他の回転)に該当する。図23に示す「回転」は、旋回以外の回転を示す。また、所定角度は特に限定されないが、図23では、所定角度が45°である場合を想定する。延在方向Deiと軸Axiとのなす角度βは、延在方向Deiに対する軸Axiの角度として把握される複数の角度(例えば、互いに交差する2個の直線では4個の角度、又は、平行な2個の直線では0°及び180°)のうち、0°以上90°以下の角度である。
第1パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、90°であり、所定角度(45°)よりも大きい。従って、第1パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第1パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第1パターンでは、リンクLKjが軸Axiを回転軸として回転(旋回)した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第2パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、0°であり、所定角度(45°)以下である。従って、第2パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第2パターンでは、リンクLKjの延在方向Dejは、リンクLKiの延在方向Dei及び軸Axiに平行である。すなわち、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、0°である。なお、第2パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、0°に維持され、常に一定である。
第3パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、0°であり、所定角度(45°)以下である。従って、第3パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第3パターンでは、リンクLKjの延在方向Dejは、リンクLKiの延在方向Dei及び軸Axiに垂直である。すなわち、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、90°である。なお、第3パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、90°に維持され、常に一定である。
第4パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、10°であり、所定角度(45°)以下である。従って、第4パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第4パターンでは、リンクLKjの延在方向Dejは、軸Axiに平行であり、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、10°である。なお、第4パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、10°に維持され、常に一定である。
第5パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、70°であり、所定角度(45°)よりも大きい。従って、第5パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第5パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第5パターンでは、リンクLKjが軸Axiを回転軸として回転(旋回)した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第6パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、10°であり、所定角度(45°)以下である。従って、第6パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回以外の回転である。また、第6パターンでは、リンクLKjの延在方向Dejは、軸Axiに垂直である。なお、第6パターンでは、リンクLKjが軸Axiを回転軸として回転した場合、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、変化する。
第7パターンでは、リンクLKiの延在方向Deiと軸Axiとのなす角度βは、70°であり、所定角度(45°)よりも大きい。従って、第7パターンでは、軸Axiを回転軸としたリンクLKjの回転は、旋回である。また、第7パターンでは、リンクLKjの延在方向Dejは、軸Axiに平行であり、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、70°である。なお、第7パターンでは、リンクLKjが軸Axiを回転軸として回転しても、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度は、70°に維持され、常に一定である。
このように、上述した実施形態及び変形例では、リンクLKiに対するリンクLKjの回転のうち、リンクLKiの延在方向Deiとのなす角度が所定角度より大きい軸Axiを回転軸とした回転が、旋回とも称される。但し、「旋回」の定義は、上述の例に限定されない。例えば、リンクLKiの延在方向Deiとのなす角度が所定角度より大きい軸Axiを回転軸とした回転を旋回とする上述の定義を第1定義とした場合、第1定義の代わりに、下記の第2定義又は第3定義が採用されてもよい。
第2定義では、リンクLKiに対するリンクLKjの回転により、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度が変化する場合、当該回転が旋回に該当する。従って、第2定義では、リンクLKiの延在方向Deiに対するリンクLKjの延在方向Dejの角度が、回転しても常に一定の場合、当該回転は、旋回以外の回転に該当する。例えば、第2定義では、図23に示した第1パターン、第5パターン及び第6パターンは、旋回に該当し、第2パターン、第3パターン、第4パターン及び第7パターンは、旋回以外の回転に該当する。
第3定義では、回転するリンクLKjの延在方向DejとリンクLKjの回転軸(軸Axi)とのなす角度が所定角度より大きい場合、当該回転が旋回に該当する。従って、第3定義では、リンクLKjの延在方向DejとリンクLKjの回転軸(軸Axi)とのなす角度が所定角度以下の場合、当該回転は、旋回以外の回転に該当する。例えば、第3定義では、図23に示した第1パターン、第3パターン、第5パターン及び第6パターンは、旋回に該当し、第2パターン、第4パターン及び第7パターンは、旋回以外の回転に該当する。
また、上述の第1定義、第2定義及び第3定義とは別に、互いに隣接する2個の関節機構JErのそれぞれの回転軸の関係に着目して、2個の関節機構JErによる2個の回転の相対関係を定義してもよい。具体的には、2個の回転軸のなす角度が所定角度以下である場合(典型的には、平行の場合)、2個の回転を同種の回転とし、2個の回転軸のなす角度が所定角度よりも大きい場合(典型的には、直交する場合)、2個の回転を異種の回転としてもよい。なお、同種の回転とは、2個の回転とも旋回、又は、2個の回転とも旋回以外の回転であり、異種の回転とは、2個の回転の一方が旋回で他方が旋回以外の回転である。2個の回転の相対関係の定義が用いられる場合、相対関係の起点となる回転は、例えば、上述の第1定義、第2定義及び第3定義のいずれかに基づいて決められてもよい。図23に示した第1パターンは、第1定義、第2定義及び第3定義のいずれにおいても、旋回に該当し、第2パターンは、第1定義、第2定義及び第3定義のいずれにおいても、旋回以外の回転に該当する。従って、第1パターン又は第2パターンを、相対関係の起点となる回転とすることが好ましい。
また、上述の第1定義、第2定義及び第3定義の2以上の定義を組み合わせた定義が用いられてもよい。この場合、例えば、組み合わせる2以上の定義の全てで旋回に該当する回転のみを旋回としてもよいし、組み合わせる2以上の定義の少なくとも1つで旋回に該当する回転を旋回としてもよい。
1…ロボットシステム、10…ロボット、20…エンドエフェクタ、30…ロボットコントローラ、32…処理装置、33…動作制御部、35…メモリ、36…通信装置、37…操作装置、38…表示装置、39…ドライバ回路、Ax1、Ax2、Ax3、Ax4、Ax4A、Ax5、Ax6、Axi…軸、BDP、BDPa…ボディ部、BDPbt…底面、BDPba…土台部、JEe1、JEe2、JEp1、JEp2、JEr1、JEr2、JEr3、JEr3A、JEr4、JEr4A、JEr5、JEr5A、JEr6、JEri…関節機構、LK1、LK1A、LK2、LK2A、LKi、LKj…リンク、LK1a、LK2a…支持部分、LK1b、LK1c、LK2b、LK2c…可動部分、MOr1、MOr2、MOr3、MOr4、MOr5、MOr6、MOp1、MOp2…モータ。

Claims (12)

  1. 7個以上の複数の関節を有する多関節ロボットの制御方法であって、
    前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、
    前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、
    を含む単位処理を繰り返し実行し、
    前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる、
    ことを特徴とする多関節ロボットの制御方法。
  2. 前記特定状態は、前記関節値が、あらかじめ定められた前記各関節の可動領域の領域内の、前記可動領域の領域外との境界領域の値となる状態であることを特徴とする請求項1に記載の多関節ロボットの制御方法。
  3. 前記単位処理では、前記複数の関節の中に前記特定状態の関節が含まれる場合、前回の前記単位処理の前記算出処理において算出された前記複数の関節の各々の前記関節値への前記複数の関節の各々の前記関節値の更新がキャンセルされ、前記関節値の更新がキャンセルされる前の前記関節値に基づいて、前記固定処理の対象となる前記特定状態の関節が特定され、前記固定処理が実行された後に前記算出処理が実行される、
    ことを特徴とする請求項1に記載の多関節ロボットの制御方法。
  4. 前記単位処理が繰り返し実行される前の初期状態の前記複数の関節の中に前記特定状態の関節が含まれる場合、繰り返し実行される前記単位処理のうちの1回目の前記単位処理が実行される前に、前記特定状態の関節の前記関節値を、前記特定状態でない状態に対応する前記関節値に変更する、
    ことを特徴とする請求項1に記載の多関節ロボットの制御方法。
  5. 前記算出処理において、ヤコビ行列を用いて前記逆運動学計算を実行し、
    前記固定処理において、前記ヤコビ行列の複数の要素のうち、前記特定状態の関節に係る要素の値を実質的に0に設定することにより、前記特定状態の関節の前記関節値を変位させない、
    ことを特徴とする請求項1から4のいずれか1項に記載の多関節ロボットの制御方法。
  6. 前記複数の関節が、少なくとも1個の直動関節を含む、
    ことを特徴とする請求項1に記載の多関節ロボットの制御方法。
  7. 7個以上の複数の関節を有する多関節ロボットと、
    前記多関節ロボットの動作を制御する制御装置と、
    を備え、
    前記制御装置は、
    前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、
    前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、
    を含む単位処理を繰り返し実行する動作制御部を有し、
    前記動作制御部は、
    前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる、
    ことを特徴とするロボットシステム。
  8. 前記多関節ロボットは、
    基部と、
    第1リンクと、
    第2リンクと、
    先端部と、
    前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
    前記基部と前記第1リンクを接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを回転させる第2駆動機構と、
    前記第1リンクと前記第2リンクを接続し、前記第1リンクが延在する方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
    前記第2リンクと前記先端部を接続し、前記第2リンクが延在する方向とのなす角度が前記所定角度より大きい軸を第4回転軸として、前記先端部を前記第2リンクに対して回転させる第4駆動機構と、
    前記第1リンクの延在方向に沿って、前記第3駆動機構を前記第1リンクに対して相対的に移動させる第1移動機構と、
    前記第2リンクの延在方向に沿って、前記第2リンクを前記第3駆動機構に対して相対的に移動させる第2移動機構と、
    を備え、
    前記先端部は、
    前記第2リンクに接続される第1部分と、
    前記第1部分に接続される第2部分と、
    前記第1部分と前記第2部分を接続し、前記第4回転軸とのなす角度が前記所定角度より大きい軸を第5回転軸として、前記第2部分を前記第1部分に対して回転させる第5駆動機構と、
    前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を回転させる第6駆動機構と、
    を含み、
    前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1移動機構及び前記第2移動機構である、
    ことを特徴とする請求項7に記載のロボットシステム。
  9. 前記多関節ロボットは、
    基部と、
    第1支持部分及び第1可動部分を含む第1リンクと、
    第2支持部分及び第2可動部分を含む第2リンクと、
    先端部と、
    前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
    前記基部と前記第1支持部分を接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを前記基部に対して回転させる第2駆動機構と、
    前記第1可動部分と前記第2支持部分を接続し、前記第1リンクが延在する方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
    前記第2リンクが延在する方向とのなす角度が前記所定角度以下の軸を第4回転軸として、前記第2可動部分を前記第2支持部分に対して回転させる第4駆動機構と、
    前記第2可動部分と前記先端部を接続し、前記第2リンクの延在方向とのなす角度が前記所定角度より大きい軸を第5回転軸として前記先端部を前記第2リンクに対して回転させる第5駆動機構と、
    前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を前記第2リンクに対して回転させる第6駆動機構と、
    前記第1支持部分に対して前記第1可動部分を前記第1リンクの延在方向に沿って移動させることにより、前記第1リンクを伸縮させる第1伸縮機構と、
    前記第2支持部分に対して前記第2可動部分を前記第2リンクの延在方向に沿って移動させることにより、前記第2リンクを伸縮させる第2伸縮機構と、
    を含み、
    前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1伸縮機構及び前記第2伸縮機構である、
    ことを特徴とする請求項7に記載のロボットシステム。
  10. 前記多関節ロボットは、
    基部と、
    第1リンクと、
    第2リンクと、
    先端部と、
    前記基部の底面に垂直な方向とのなす角度が所定角度以下の軸を第1回転軸として、前記基部の少なくとも一部分を回転させる第1駆動機構と、
    前記基部と前記第1リンクを接続し、前記基部の底面に垂直な方向とのなす角度が前記所定角度より大きい軸を第2回転軸として前記第1リンクを回転させる第2駆動機構と、
    前記第1リンクと前記第2リンクを接続し、前記第1リンクが延在する方向とのなす角度が前記所定角度より大きい軸を第3回転軸として前記第2リンクを前記第1リンクに対して回転させる第3駆動機構と、
    前記第2リンクと前記先端部を接続し、前記第2リンクが延在する方向とのなす角度が前記所定角度以下の軸を第4回転軸として、前記先端部を前記第2リンクに対して回転させる第4駆動機構と、
    前記第1リンクの延在方向に沿って、前記第3駆動機構を前記第1リンクに対して相対的に移動させる第1移動機構と、
    前記第2リンクの延在方向に沿って、前記第2リンクを前記第3駆動機構に対して相対的に移動させる第2移動機構と、
    を備え、
    前記先端部は、
    前記第2リンクに接続される第1部分と、
    前記第1部分に接続される第2部分と、
    前記第1部分と前記第2部分を接続し、前記第4回転軸とのなす角度が前記所定角度より大きい軸を第5回転軸として、前記第2部分を前記第1部分に対して回転させる第5駆動機構と、
    前記第5回転軸とのなす角度が前記所定角度より大きい軸を第6回転軸として、前記先端部の少なくとも一部分を回転させる第6駆動機構と、
    を含み、
    前記複数の関節は、前記第1駆動機構、前記第2駆動機構、前記第3駆動機構、前記第4駆動機構、前記第5駆動機構、前記第6駆動機構、前記第1移動機構及び前記第2移動機構である、
    ことを特徴とする請求項7に記載のロボットシステム。
  11. 請求項7に記載のロボットシステムにより、部品を組み付ける、又は、部品を取り除く、
    ことを特徴とする物品の製造方法。
  12. 7個以上の複数の関節を有する多関節ロボットの動作を制御するプログラムであって、
    プロセッサを、
    前記多関節ロボットを動作させる前記複数の関節の変位量を計算する逆運動学計算を実行することにより、前記複数の関節の各々の状態に関する関節値を算出する算出処理と、
    前記複数の関節のうち、前記関節値に基づく状態が、あらかじめ定められた特定状態である関節に対して実行する固定処理と、
    を含む単位処理を繰り返し実行する動作制御部として機能させ、
    前記動作制御部は、
    前記固定処理を実行した場合、前記算出処理において算出された前記複数の関節の前記関節値のうち、前記特定状態の関節の前記関節値は実質的に変位させることなく、前記特定状態でない関節の前記関節値を変位させる、
    ことを特徴とするプログラム。
JP2023086110A 2022-08-30 2023-05-25 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法 Pending JP2024035061A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2023/029630 WO2024048286A1 (ja) 2022-08-30 2023-08-16 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2022136884 2022-08-30
JP2022136884 2022-08-30

Publications (1)

Publication Number Publication Date
JP2024035061A true JP2024035061A (ja) 2024-03-13

Family

ID=90193714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023086110A Pending JP2024035061A (ja) 2022-08-30 2023-05-25 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法

Country Status (1)

Country Link
JP (1) JP2024035061A (ja)

Similar Documents

Publication Publication Date Title
JP5547626B2 (ja) 7軸多関節ロボットの制御装置および教示方法
KR101992149B1 (ko) 착용형 팔동작 측정 장치
KR101498835B1 (ko) 7축 다관절 로봇의 제어방법, 제어 프로그램 및 로봇 제어장치
JP6823569B2 (ja) 目標zmp軌道の生成装置
US20140031982A1 (en) Robotic system and robot control device
CN112423694B (zh) 机器人手臂结构和包括该机器人手臂结构的手术机器人的机械手
KR100525648B1 (ko) 인간형 작업로봇의 팔형체구조
JP7339806B2 (ja) 制御システム、ロボットシステム及び制御方法
JP6228097B2 (ja) 移動ロボット
JP2013166222A (ja) ロボット制御装置、ロボット制御方法およびロボット制御プログラムならびにロボットシステム
JP2007136590A (ja) 冗長関節部を有する冗長ロボットの制御装置および制御方法
TW201622920A (zh) 機器人裝置及機器人控制裝置
JP2012192518A (ja) 冗長関節部を有する冗長ロボットの制御装置および制御方法
Lo et al. Optimization of a redundant 4R robot for a shoulder exoskeleton
JP5220536B2 (ja) ロボット制御方法、ロボット制御装置、及びロボット制御システム
WO2024048286A1 (ja) 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法
JP2024035061A (ja) 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法
CN110545965B (zh) 多关节机器人以及多关节机器人系统
WO2024070568A1 (ja) 多関節ロボットの制御方法、ロボットシステム、プログラム、及び、物品の製造方法
JP2019093487A (ja) ロボットの制御装置及びロボットの逆変換処理方法
JP2009050949A (ja) ロボットアームの軌道教示方法および軌道教示装置
JPH04315589A (ja) 7自由度関節形マニプレータ
JP5371733B2 (ja) 7軸多関節ロボットの制御方法及び制御プログラム
Staicu Kinematics of a translation-rotation hybrid parallel robot
Pachouri et al. Design and modeling of a planar-to-spatial tendon-driven continuum manipulator subjected to uncertain forces

Legal Events

Date Code Title Description
A80 Written request to apply exceptions to lack of novelty of invention

Free format text: JAPANESE INTERMEDIATE CODE: A80

Effective date: 20230613