(57)【要約】【課題】ロボット装置の関節トルクの適正化を簡易な作業でもって実現すること。【解決手段】ロボット装置は複数の関節部Ｊ１−Ｊ６を有する多関節アーム機構を装備する。モータドライバ２１０は、関節部の動力源としてのステッピングモータ３１０に対するパルス信号を位置又は速度に関する指令値に従って発生させ、トルク指令値に従って励磁電流を発生させる。脱調検知部２１７はステッピングモータの脱調状態を検知する。トルクキャリブレーション制御部１１０はアーム機構の手首基準点又は手先基準点を予定軌道の始点から終点まで移動させ、予定軌道上の位置又は区間においてワークに対する作業を実行させるために指令値をトルク指令値とともにモータドライバに所定周期で繰り返し供給させ、ステッピングモータの脱調状態に基づいてトルク指令値を更新するトルクキャリブレーション処理を繰り返す。【選択図】      図４
2018149605.tif 000002
【特許請求の範囲】
【請求項１】
複数の関節部を有する多関節アーム機構を装備するロボット装置において、
前記関節部の動力源としてのステッピングモータと、
前記ステッピングモータに対するパルス信号を位置又は速度に関する指令値に従って発生し、トルク指令値に従って励磁電流を発生するモータドライバと、
前記ステッピングモータの脱調状態を検知する脱調検知部と、
前記アーム機構の手首基準点又は手先基準点を予定軌道の始点から終点まで移動させ、前記予定軌道上の位置又は区間においてワークに対する作業を実行させるために前記指令値を前記トルク指令値とともに前記モータドライバに所定周期で繰り返し供給させ、前記ステッピングモータの脱調状態に基づいて前記トルク指令値を更新するトルクキャリブレーション処理を繰り返すトルクキャリブレーション制御部とを具備するロボット装置。
【請求項２】
前記モータドライバは前記ステッピングモータが脱調を発生したとき前記ステッピングモータの励磁位置を変更して回転停止を回避するために前記パルス信号を再発生する請求項１記載のロボット装置。
【請求項３】
前記トルクキャリブレーション制御部は、前記トルクキャリブレーション処理を前記予定軌道の全域わたって前記ステッピングモータの脱調が解消するまで繰り返す請求項１記載のロボット装置。
【請求項４】
前記トルクキャリブレーション制御部は、前記トルク指令値を所定の最大トルクを表す値に初期化させ、前記ステッピングモータの脱調が発生した脱調時点の前記トルク指令値を前記脱調時点のトルクを所定の増分量で増加させたトルクを表す値に更新させ、前記ステッピングモータの脱調が発生していない非脱調時点の前記トルク指令値を前記非脱調時点のトルクを所定の減少量で減少させたトルクを表す値に更新させる請求項１記載のロボット装置。
【請求項５】
前記増分量は前記減少量より大きい請求項４記載のロボット装置。
【請求項６】
前記増分量は前記減少量の２倍より小さい請求項５記載のロボット装置。
【請求項７】
前記トルクキャリブレーション制御部はユーザ指示に従って前記増分量と前記減少量とを任意に設定させる請求項４記載のロボット装置。
【請求項８】
前記増分量は前記減少量と等価である請求項４記載のロボット装置。
【請求項９】
前記トルクキャリブレーション制御部は、前記ステッピングモータの脱調に伴って更新されたトルク指令値により実行したトルクキャリブレーション処理で脱調が発生しないとき、前記脱調時点のトルク指令値として確定させる請求項１記載のロボット装置。
【請求項１０】
前記トルクキャリブレーション制御部は前記ステッピングモータの脱調が複数の時点で連続して発生したとき、前記連続する複数の時点のうち最初の時点とそれに連続する少なくとも一つの時点の前記トルク指令値を更新させ、前記連続する複数の時点のうち前記少なくとも一つの時点より後方の時点の前記トルク指令値を維持させる請求項１記載のロボット装置。
【請求項１１】
前記トルクキャリブレーション制御部は前記ステッピングモータの脱調が複数の時点で連続して発生したとき、前記連続する複数の時点のうち最初の時点の前記トルク指令値を更新させ、前記連続する複数の時点のうち前記最初の時点より後方の時点の前記トルク指令値を維持させる請求項１記載のロボット装置。
【請求項１２】
前記トルクキャリブレーション制御部は、前記ステッピングモータの脱調が発生した脱調時点の前記トルク指令値を、前記脱調時点の直前の少なくとも一つの時点の脱調状態に応じて前記脱調時点のトルクを所定の増分量で増加させたトルクと前記脱調時点のトルクで維持させたトルクとのいずれかを表す値に更新させる請求項４記載のロボット装置。
【請求項１３】
前記トルクキャリブレーション制御部は、前記ステッピングモータの脱調が発生した脱調時点の前記トルク指令値を前記脱調時点のトルクを所定の増分量で増加させたトルクを表す値に更新させる請求項１記載のロボット装置。
【請求項１４】
前記トルクキャリブレーション制御部は、前記ステッピングモータの脱調が発生していない非脱調時点の前記トルク指令値は前記非脱調時点のトルクを所定の減少量で減少させたトルクを表す値に更新させる請求項１記載のロボット装置。
【請求項１５】
前記トルクキャリブレーション制御部は、前記トルク指令値を所定の最大トルクより低いトルクを表す値に初期化させ、前記ステッピングモータの脱調が発生した脱調時点の前記トルク指令値を前記脱調時点のトルクを所定の増分量で増加させたトルクを表す値に更新させ、前記ステッピングモータの脱調が発生していない非脱調時点の前記トルク指令値を前記非脱調時点のトルクを所定の減少量で減少させたトルクを表す値に更新させる請求項１記載のロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はロボット装置に関する。
【背景技術】
【０００２】
基板等の様々なワークをハンドリングする垂直多関節アーム構造を有するロボット装置の適用範囲が産業現場だけでなく医療介護現場その他多くの現場に拡大しようとしている。多くのロボット装置では事前のティーチングによりロボット装置に予定軌道が設定され、またこの軌道上の複数の時点で必要な関節トルク（以下単にトルクという）が計算される。トルク計算にはワーク質量、各関節にかかる質量、リンク長、手先加速度、慣性モーメント等の変数に従って綿密に計算することが要求される。
【０００３】
従来のトルクの計算処理は非常に専門性が高く、専門員が不在の状況、特にロボット装置が設置されている現場においては適時にトルクを設定することができなかった。
【０００４】
またトルクが不足しているときは予定したタスクタイムを達成できなくなったり、ワークを取り落としてしまう事態が生じることがあり、その一方で、トルクを過度に高く設定したときは安全性が低下する恐れが無いとはいえない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
目的は、ロボット装置の関節トルクの適正化を簡易な作業でもって実現することにある。
【課題を解決するための手段】
【０００６】
本実施形態にかかるロボット装置は複数の関節部を有する多関節アーム機構を装備する。モータドライバは、関節部の動力源としてのステッピングモータに対するパルス信号を位置又は速度に関する指令値に従って発生させ、トルク指令値に従って励磁電流を発生させる。脱調検知部はステッピングモータの脱調状態を検知する。トルクキャリブレーション制御部はアーム機構の手首基準点又は手先基準点を予定軌道の始点から終点まで移動させ、予定軌道上の位置又は区間においてワークに対する作業を実行させるために指令値をトルク指令値とともにモータドライバに所定周期で繰り返し供給させ、ステッピングモータの脱調状態に基づいてトルク指令値を更新するトルクキャリブレーション処理を繰り返す。
【図面の簡単な説明】
【０００７】
【図１】図１は、本実施形態に係るロボット装置のロボットアーム機構の外観斜視図である。
【図２】図２は、図１のロボットアーム機構の内部構造を示す側面図である。
【図３】図３は、図１のロボットアーム機構の構成を図記号表現により示す図である。
【図４】図４は、本実施形態によるロボット装置の構成を示すブロック図である。
【図５】図５は、図４のタスクプログラム記憶部に記憶されているタスクプログラムで規定されている手先軌道を示す平面図である。
【図６】図６は、図４のタスクコントローラ１０６の処理を説明するための補足説明図である。
【図７】図７は、図４の脱調フラグマップ発生部１０７により発生される脱調フラグマップの一例を示す図である。
【図８】図８は、図４の脱調フラグマップ発生部１０７により発生されるフラグを説明するための補足説明図である。
【図９】図９は、図４のトルクマップ記憶部１０８に記憶されているトルクマップの一例を示す図である。
【図１０】図１０は、本実施形態に係るロボット装置のトルクキャリブレーション処理を示すフローチャートである。
【図１１】図１１は、図１０の工程Ｓ７を説明するための補足説明図である。
【図１２】図１２は、図１０の工程Ｓ７のトルクマップの更新規則を説明するための図である。
【図１３】図１３は、図１０の工程Ｓ７のトルクマップの更新規則を説明するための図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら本実施形態に係るロボット装置を説明する。ロボット装置は、ステッピングモータをアクチュエータとする関節部を有するロボットアーム機構を備える。当該ロボット装置としては、垂直多関節アーム機構、特に複数の関節部のうち一が直動伸縮関節を備えた垂直多関節アーム機構を例に説明する。以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０００９】
図１は、本実施形態に係るロボット装置の外観斜視図である。ロボット装置を構成するロボットアーム機構は、略円筒形状の基部１０と基部１０に接続されるアーム部２とアーム部２の先端に取り付けられる手首部４とを有する。手首部４には図示しないアダプタが設けられている。例えば、アダプタは後述の第６回転軸ＲＡ６の回転部に設けられる。手首部４に設けられたアダプタには、ハンド装置３が取り付けられる。
【００１０】
ロボットアーム機構は、複数、ここでは６つの関節部Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５，Ｊ６を有する。複数の関節部Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５，Ｊ６は基部１０から順番に配設される。一般的に、第１、第２、第３関節部Ｊ１，Ｊ２，Ｊ３は根元３軸と呼ばれ、第４、第５、第６関節部Ｊ４，Ｊ５，Ｊ６はハンド装置３の姿勢を変化させる手首３軸と呼ばれる。手首部４は第４、第５、第６関節部Ｊ４，Ｊ５，Ｊ６を有する。根元３軸を構成する関節部Ｊ１，Ｊ２，Ｊ３の少なくとも一つは直動伸縮関節である。ここでは第３関節部Ｊ３が直動伸縮関節部、特に伸縮距離の比較的長い関節部として構成される。アーム部２は直動伸縮関節部Ｊ３（第３関節部Ｊ３）の伸縮部分を表している。
【００１１】
第１関節部Ｊ１は基台面に対して例えば垂直に支持される第１回転軸ＲＡ１を中心としたねじり関節である。第２関節部Ｊ２は第１回転軸ＲＡ１に対して垂直に配置される第２回転軸ＲＡ２を中心とした曲げ関節である。第３関節部Ｊ３は、第２回転軸ＲＡ２に対して垂直に配置される第３軸（移動軸）ＲＡ３を中心として直線的にアーム部２が伸縮する関節である。
【００１２】
第４関節部Ｊ４は、第４回転軸ＲＡ４を中心としたねじり関節である。第４回転軸ＲＡ４は、後述の第７関節部Ｊ７が回転していないとき、つまりアーム部２の全体が直線形状にあるとき、第３移動軸ＲＡ３と略一致する。第５関節部Ｊ５は第４回転軸ＲＡ４に対して直交する第５回転軸ＲＡ５を中心とした曲げ関節である。第６関節部Ｊ６は第４回転軸ＲＡ４に対して直交し、第５回転軸ＲＡ５に対して垂直に配置される第６回転軸ＲＡ６を中心とした曲げ関節である。
【００１３】
基部１０を成すアーム支持体（第１支持体）１１は、第１関節部Ｊ１の第１回転軸ＲＡ１を中心に形成される円筒形状の中空構造を有する。第１関節部Ｊ１は図示しない固定台に取り付けられる。第１関節部Ｊ１が回転するとき、アーム部２は第１支持体１１の軸回転とともに左右に旋回する。なお、第１支持体１１が接地面に固定されていてもよい。その場合、第１支持体１１とは独立してアーム部２が旋回する構造に設けられる。第１支持体１１の上部には第２支持部１２が接続される。
【００１４】
第２支持部１２は第１支持部１１に連続する中空構造を有する。第２支持部１２の一端は第１関節部Ｊ１の回転部に取り付けられる。第２支持部１２の他端は開放され、第３支持部１３が第２関節部Ｊ２の第２回転軸ＲＡ２において回動自在に嵌め込まれる。第３支持部１３は第１支持部１１及び第２支持部に連通する鱗状の外装からなる中空構造を有する。第３支持部１３は、第２関節部Ｊ２の曲げ回転に伴ってその後部が第２支持部１２に収容され、また送出される。ロボットアーム機構の直動伸縮関節部Ｊ３（第３関節部Ｊ３）を構成するアーム部２の後部はその収縮により第１支持部１１と第２支持部１２の連続する中空構造の内部に収納される。
【００１５】
第３支持部１３はその後端下部において第２支持部１２の開放端下部に対して第２回転軸ＲＡ２を中心として回動自在に嵌め込まれる。それにより第２回転軸ＲＡ２を中心とした曲げ関節部としての第２関節部Ｊ２が構成される。第２関節部Ｊ２が回動するとき、アーム部２は第２回転軸ＲＡ２を中心に垂直方向に回動、つまり起伏動作をする。
【００１６】
第４関節部Ｊ４は、アーム部２の伸縮方向に沿ったアーム中心軸、つまり第３関節部Ｊ３の第３移動軸ＲＡ３に典型的には接する第４回転軸ＲＡ４を有するねじり関節である。第４関節部Ｊ４が回転すると、手首部４及び手首部４に取り付けられたハンド装置３は第４回転軸ＲＡ４を中心に回転する。第５関節部Ｊ５は、第４関節部Ｊ４の第４回転軸ＲＡ４に対して直交する第５回転軸ＲＡ５を有する曲げ関節部である。第５関節部Ｊ５が回転すると、第５関節部Ｊ５から先端にかけてハンド装置３とともに上下（第５回転軸ＲＡ５を中心に垂直方向）に回動する。第６関節部Ｊ６は、第４関節部Ｊ４の第４回転軸ＲＡ４に直交し、第５関節部Ｊ５の第５回転軸ＲＡ５に垂直な第６回転軸ＲＡ６を有する曲げ関節である。第６関節部Ｊ６が回転すると、ハンド装置３は左右に旋回する。
【００１７】
上記の通り手首部４のアダプタに取り付けられたハンド装置３は、第１、第２、第３関節部Ｊ１．Ｊ２．Ｊ３により任意位置に移動され、第４、第５、第６関節部Ｊ４、Ｊ５、Ｊ６により任意姿勢に配置される。特に第３関節部Ｊ３のアーム部２の伸縮距離の長さは、基部１０の近接位置から遠隔位置までの広範囲の対象にハンド装置３を到達させることを可能にする。第３関節部Ｊ３はそれを構成する直動伸縮機構により実現される直線的な伸縮動作とその伸縮距離の長さとが特徴的である。
【００１８】
（ハンド装置３）  
ロボット装置１はハンド装置３を備える。ハンド装置３は、チューブ容器８０を把持によりピッキングするための把持機構と紙箱を吸着によりピッキングするための吸着機構とを備える。具体的には、ハンド装置３は、ハンド本体３１を有する。ハンド本体３１は角柱形状を有し、その上方端面に取り付け部を備える。この取り付け部を介して、ハンド装置３は手首部４のアダプタに装着される。ハンド本体３１の下方には、エアチャック構造３２が取り付けられる。エアチャック構造３２は一対のスライダ３３を有する。一対のスライダ３３は接近／離反自在に支持される。一対のスライダ３３には一対の把持部３４と一対の吸着部３５とがそれぞれ取り付けられる。
【００１９】
把持部３４は、外観略円柱形状を有する。円柱状体の先端部分には、弾性材料として例えばシリコン樹脂で成形された円筒状体の吸着パッドが取り付けられている。吸着パッドの先端面をワークと接触する接触面という。一対の把持部３４は、円筒状体の吸着パッドの軸方向が、スライド方向に平行になるように、且つ互いの吸着パッドの接触面が対向するようにスライダ３３に取り付けられる。吸着パッドの後方部分は、エジェクタ装置の出力部に接続される。吸着パッドの胴体部分は、径方向外側に突出した山部と径方向内側に窪んだ谷部とが交互に連続する蛇腹形状に成形される。把持部３３の吸着パッドの胴体部分を蛇腹形状に成形することで、ワークを狭持する際のワークへの過度な力を吸収し、かつワークの形状にあわせて蛇腹部分が変形することで接触面をワーク表面に密着させることを実現する。このように、把持部３４の吸着パッドに蛇腹部分が構成されることで、ハンド装置３は表面形状の異なる複数種類のワークを吸着パッドで把持することができる。
【００２０】
吸着部３５は弾性材料として例えばシリコン樹脂で円筒状体に成形される。吸着部３５は円筒状体の軸方向の向きに対象を吸着する。この吸着方向がスライド方向に垂直になるように、吸着部３５はスライダ３３に取り付けられる。吸着部３５の後方部分は、エジェクタ装置の出力部に接続される。吸着部３５の胴体部分は、径方向外側に突出した山部と径方向内側に窪んだ谷部とが交互に連続する蛇腹形状に成形される。吸着部３５の胴体部分を蛇腹形状に成形することで、ワークに接触する際のワークへの過度な力を吸収し、かつワークの形状にあわせて蛇腹部分が変形することで接触面をワーク表面に密着させることを実現する。このように、吸着部３５の胴体部分を蛇腹形状に構成することで、ハンド装置３は表面形状の異なる複数種類のワークを吸着部３５で吸着することができる。
【００２１】
把持部３４と吸着部３５とは真空吸着機能と真空破壊機能とを有する。把持部３４と吸着部３５とにはそれぞれエアチューブが接続されている。エアチューブ各々はエアポンプ（図示しない）に接続されている。エアポンプとしては圧縮式と真空式のいずれでも良いがここでは圧縮ポンプとして説明する。以下、把持部３４を例に真空吸着機能と真空破壊機能について説明する。
【００２２】
把持部３４の吸着パッドとエアポンプとの間は負圧経路と正圧経路との２系統の配管経路で接続される。負圧経路には負圧弁とエジェクタ装置とが介在される。正圧経路には正圧弁が介在される。負圧弁と正圧弁とは電磁弁である。電磁弁ドライバ（図示しない）により負圧弁の開閉と正圧弁の開閉とは逆相に制御される。負圧弁が開放され正圧弁が閉じられているとき、負圧経路が確保される。負圧経路が確保されているとき把持部３４の吸着パッドの内部は負圧に導入される。正圧弁が開放され負圧弁が閉じられているとき、正圧経路が確保される。正圧経路が確保されているとき把持部３４の吸着パッドの内部は正圧に導入される。
【００２３】
真空吸着機能がＯＮされると、電磁弁ドライバの制御に従って負圧弁が開放され正圧弁が閉鎖される。エアポンプで発生された圧縮空気は、負圧弁と把持部３４の吸着パッドとの間に介在されたエジェクタに供給される。エジェクタは吸気口とノズルと排気口とを有する。吸気口には吸着パッドの接続口が接続されている。エジェクタに供給された圧縮空気は、ノズルから噴射され高速な空気の束となって排気口から排気される。すると、エジェクタのチャンバの内圧が低下し、これにより吸気口から空気が吸い込まれる。吸気口から吸いこまれた空気は、圧縮空気とともに排気口から排気される。これにより、吸気口に接続された吸着パッドに負圧が発生する。エジェクタに通常装備されている真空破壊機能がＯＮされると、電磁弁ドライバの制御に従って負圧弁が閉鎖され、正圧弁が開放される。それにより吸着パッド、エジェクタ及びエアポンプらのエアサイクルが逆転し、エアポンプで発生された圧縮空気は直接的に吸着パッドに供給される。これにより、吸着パッドに正圧が発生する。
【００２４】
例えば、一対のスライダ３３が接近する方向に移動され、一対の把持部３４の吸着パッドの接触面がワークの表面に両側から密着した状態で、真空吸着機能がＯＮされていると、ワーク表面と吸着パッドの筒状部分とで規定される閉空間の空気がエジェクタにより吸引され、ワークに対して負圧が働く。これにより、ワークの表面と吸着パッドの接触面との間に摩擦力が生じ、さらに、ワークに対して負圧が働くことで、その摩擦力を大きくすることでき、これにより、ハンド装置３はワークを把持することができる。真空破壊機能がＯＮされると、ワークに対して正圧が働く。この状態で、一対のスライダ３３が離反する方向に移動されると、ハンド装置３によるワークの把持状態が解除され、把持していたワークをリリースすることができる。なお、ハンド装置３に真空破壊機能が装備されていなくても、ハンド装置３の真空吸着機能をＯＦＦにし、吸着パッドの内圧を大気圧に戻した上で、一対のスライダ３３が離反する方向に移動されることで、ハンド装置３によるワークの把持状態が解除される。
【００２５】
（ロボット装置の内部構造）  
図２は、図１のロボットアーム機構の内部構造を示す斜視図である。直動伸縮機構はアーム部２と射出部３０とを有する。アーム部２は第１連結コマ列２１と第２連結コマ列２２とを有する。第１連結コマ列２１は複数の第１連結コマ２３からなる。第１連結コマ２３は略平板形に構成される。前後の第１連結コマ２３は、互いの端部箇所においてピンにより屈曲自在に列状に連結される。第１連結コマ列２１は内側や外側に自在に屈曲できる。
【００２６】
第２連結コマ列２２は複数の第２連結コマ２４からなる。第２連結コマ２４は横断面コ字形状の短溝状体に構成される。前後の第２連結コマ２４は、互いの底面端部箇所においてピンにより屈曲自在に列状に連結される。第２連結コマ列２２は内側に屈曲できる。第２連結コマ２４の断面はコ字形状であるので、第２連結コマ列２２は、隣り合う第２連結コマ２４の側板同士が衝突して、外側には屈曲しない。なお、第１、第２連結コマ２３、２４の第２回転軸ＲＡ２に向いた面を内面、その反対側の面を外面というものとする。第１連結コマ列２１のうち先頭の第１連結コマ２３と、第２連結コマ列２２のうち先頭の第２連結コマ２４とは結合コマ２７により接続される。例えば、結合コマ２７は第２連結コマ２４と第１連結コマ２３とを合成した形状を有している。
【００２７】
射出部３０は、複数の上部ローラ３１と複数の下部ローラ３２とが角筒形状のフレーム３５に支持されてなる。例えば、複数の上部ローラ３１は第１連結コマ２３の長さと略等価な間隔を隔ててアーム中心軸に沿って配列される。同様に、複数の下部ローラ３２は第２連結コマ２４の長さと略等価な間隔を隔ててアーム中心軸に沿って配列される。射出部３０の後方には、ガイドローラ４０とドライブギア５０とが第１連結コマ列２１を挟んで対向するように設けられる。ドライブギア５０は図示しない減速器を介してステッピングモータ３３０に接続される。第１連結コマ２３の内面には連結方向に沿ってリニアギアが形成されている。複数の第１連結コマ２３が直線状に整列されたときに互いのリニアギアは直線状につながって、長いリニアギアを構成する。ドライブギア５０は、直線状のリニアギアにかみ合わされる。直線状につながったリニアギアはドライブギア５０とともにラックアンドピニオン機構を構成する。
【００２８】
アーム伸長時、モータ５５が駆動し、ドライブギア５０が順回転すると、第１連結コマ列２１はガイドローラ４０により、アーム中心軸と平行な姿勢となって、上部ローラ３１と下部ローラ３２との間に誘導される。第１連結コマ列２１の移動に伴い、第２連結コマ列２２は射出部３０の後方に配置された図示しないガイドレールにより射出部３０の上部ローラ３１と下部ローラ３２との間に誘導される。上部ローラ３１と下部ローラ３２との間に誘導された第１、第２連結コマ列２１，２２は互いに押圧される。これにより、第１、第２連結コマ列２１，２２による柱状体が構成される。射出部３０は、第１、第２連結コマ列２１，２２を接合して柱状体を構成するとともに、その柱状体を上下左右に支持する。第１、第２連結コマ列２１、２２の接合による柱状体が射出部３０により堅持されることで、第１、第２連結コマ列２１，２２の接合状態が保持される。第１、第２連結コマ列２１、２２の接合状態が維持されているとき、第１、第２連結コマ列２１，２２の屈曲は互いに拘束される。それにより第１、第２連結コマ列２１、２２は、一定の剛性を備えた柱状体を構成する。柱状体とは、第２連結コマ列２２に第１連結コマ列２１が接合されてなる柱状の棒体を言う。この柱状体は第２連結コマ２４が第１連結コマ２３とともに全体として様々な断面形状の筒状体に構成される。筒状体とは上下左右が天板、底板及び両側板で囲まれ、前端部と後端部とが開放された形状として定義される。第１、第２連結コマ列２１、２２の接合による柱状体は、結合コマ２７が始端となって、第３移動軸ＲＡ３に沿って直線的に第３支持部１３の開口から外に向かって送り出される。
【００２９】
アーム収縮時、モータ５５が駆動し、ドライブギア５０が逆回転されると、ドライブギア５０と係合している第１連結コマ列２１が第１支持体１１内に引き戻される。第１連結コマ列の移動に伴って、柱状体が第３支持体１３内に引き戻される。引き戻された柱状体は射出部３０後方で分離される。例えば、柱状体を構成する第１連結コマ列２１はガイドローラ４０とドライブギア５０とに挟まれ、柱状体を構成する第２連結コマ列２２は重力により下方に引かれ、それにより第２連結コマ列２２と第１連結コマ列２１とは互いに離反される。離反された第１、第２連結コマ列２１，２２はそれぞれ屈曲可能な状態に復帰する。収納に際しては、射出部３０から、第１支持体１１（基部１０）の内部の収納部に第２連結コマ列２２は内側に屈曲されて搬送され、第１連結コマ列２１も第２連結コマ列２２と同じ方向（内側）に屈曲されて搬送される。第１連結コマ列２１は第２連結コマ列２２に略平行な状態で格納される。
【００３０】
（ロボット装置の図記号表示）  
図３は、図１のロボットアーム機構を図記号表現により示す図である。ロボットアーム機構において、根元３軸を構成する第１関節部Ｊ１と第２関節部Ｊ２と第３関節部Ｊ３とにより３つの位置自由度が実現される。また、手首３軸を構成する第４関節部Ｊ４と第５関節部Ｊ５と第６関節部Ｊ６とにより３つの姿勢自由度が実現される。
【００３１】
ロボット座標系Σbは第1関節部Ｊ１の第１回転軸ＲＡ１上の任意位置を原点とした座標系である。ロボット座標系Σｂにおいて、直交３軸（Ｘｂ、Ｙｂ，Ｚｂ）が規定されている。Ｚｂ軸は第１回転軸ＲＡ１に平行な軸である。Ｘｂ軸とＹｂ軸とは互いに直交し、且つＺb軸に直交する軸である。手先座標系Σｈは、手首部４に取り付けられたハンド装置３の任意位置（手先基準点）を原点とした座標系である。例えば、ハンド装置３が２指ハンドのとき、手先基準点（以下、単に手先という。）の位置は２指先間中央位置に規定される。手先座標系Σｈにおいて、直交３軸（Ｘｈ、Ｙｈ，Ｚｈ）が規定されている。Ｚｈ軸は第６回転軸ＲＡ６に平行な軸である。Ｘｈ軸とＹｈ軸とは互いに直交し、且つＺｈ軸に直交する軸である。例えば、Ｘｈ軸は、ハンド装置３の前後方向に平行な軸である。手先姿勢とは、手先座標系Σhのロボット座標系Σｂに対する直交３軸各々周りの回転角（Ｘｈ軸周りの回転角（ヨウ角）α、Ｙｈ軸周りの回転角（ピッチ角）β、Ｚｈ軸周りの回転角（ロール角）γとして与えられる。
【００３２】
第１関節部Ｊ１は、第１支持部１１と第２支持部１２との間に配設されており、回転軸ＲＡ１を中心としたねじり関節として構成されている。回転軸ＲＡ１は第１関節部Ｊ１の固定部が設置される基台の基準面ＢＰに垂直に配置される。
【００３３】
第２関節部Ｊ２は回転軸ＲＡ２を中心とした曲げ関節として構成される。第２関節部Ｊ２の回転軸ＲＡ２は空間座標系上のＸb軸に平行に設けられる。第２関節部Ｊ２の回転軸ＲＡ２は第１関節部Ｊ１の回転軸ＲＡ１に対して垂直な向きに設けられる。さらに第２関節部Ｊ２は、第１関節部Ｊ１に対して、第１回転軸ＲＡ１の方向（Ｚb軸方向）と第１回転軸ＲＡ１に垂直なＹb軸方向との２方向に関してオフセットされる。第２関節部Ｊ２が第１関節部Ｊ１に対して上記２方向にオフセットされるように、第２支持体１２は第１支持体１１に取り付けられる。第１関節部Ｊ１に第２関節部Ｊ２を接続する仮想的なアームロッド部分（リンク部分）は、先端が直角に曲がった２つの鈎形状体が組み合わされたクランク形状を有している。この仮想的なアームロッド部分は、中空構造を有する第１、第２支持体１１、１２により構成される。
【００３４】
第３関節部Ｊ３は移動軸ＲＡ３を中心とした直動伸縮関節として構成される。第３関節部Ｊ３の移動軸ＲＡ３は第２関節部Ｊ２の回転軸ＲＡ２に対して垂直な向きに設けられる。第２関節部Ｊ２の回転角がゼロ度、つまりアーム部２の起伏角がゼロ度であってアーム部２が水平な基準姿勢においては、第３関節部Ｊ３の移動軸ＲＡ３は、第２関節部Ｊ２の回転軸ＲＡ２とともに第１関節部Ｊ１の回転軸ＲＡ１にも垂直な方向に設けられる。空間座標系上では、第３関節部Ｊ３の移動軸ＲＡ３はＸb軸及びＺb軸に対して垂直なＹb軸に平行に設けられる。さらに、第３関節部Ｊ３は、第２関節部Ｊ２に対して、その回転軸ＲＡ２の方向（Ｙb軸方向）と、移動軸ＲＡ３に直交するＺb軸の方向との２方向に関してオフセットされる。第３関節部Ｊ３が第２関節部Ｊ２に対して上記２方向にオフセットされるように、第３支持体１３は第２支持体１２に取り付けられる。第２関節部Ｊ２に第３関節部Ｊ３を接続する仮想的なアームロッド部分（リンク部分）は、先端が垂直に曲がった鈎形状体を有している。この仮想的なアームロッド部分は、第２、第３支持体１２、１３により構成される。
【００３５】
第４関節部Ｊ４は回転軸ＲＡ４を中心としたねじり関節として構成される。第４関節部Ｊ４の回転軸ＲＡ４は第３関節部Ｊ３の移動軸ＲＡ３に略一致するよう配置される。  
第５関節部Ｊ５は回転軸ＲＡ５を中心とした曲げ関節として構成される。第５関節部Ｊ５の回転軸ＲＡ５は第３関節部Ｊ３の移動軸ＲＡ３及び第４関節部Ｊ４の回転軸ＲＡ４に略直交するよう配置される。  
第６関節部Ｊ６は回転軸ＲＡ６を中心としたねじり関節として構成される。第６関節部Ｊ６の回転軸ＲＡ６は第４関節部Ｊ４の回転軸ＲＡ４及び第５関節部Ｊ５の回転軸ＲＡ５に略直交するよう配置される。第６関節部Ｊ６は手先効果器としてのハンド装置３を左右に旋回するために設けられている。なお、第６関節部Ｊ６は、その回転軸ＲＡ６が第４関節部Ｊ４の回転軸ＲＡ４及び第５関節部Ｊ５の回転軸ＲＡ５に略直交する曲げ関節として構成されてもよい。
【００３６】
このように複数の関節部Ｊ１−Ｊ６の根元３軸のうちの一つの曲げ関節部を直動伸縮関節部に換装し、第１関節部Ｊ１に対して第２関節部Ｊ２を２方向にオフセットさせ、第２関節部Ｊ２に対して第３関節部Ｊ３を２方向にオフセットさせることにより、本実施形態に係るロボット装置のロボットアーム機構は、特異点姿勢を構造上解消している。
【００３７】
（ロボット装置の構成）  
図４は、本実施形態に係るロボット装置の構成を示すブロック図である。本実施形態に係るロボット装置のロボットアーム機構の関節部Ｊ１，Ｊ２，Ｊ３，Ｊ４，Ｊ５、Ｊ６には、アクチュエータとして、それぞれステッピングモータ３１０，３２０，３３０，３４０，３５０，３６０が設けられている。ステッピングモータ３１０，３２０，３３０，３４０，３５０，３６０には、ドライバユニット２１０、２２０，２３０，２４０，２５０，２６０が電気的に接続されている。ドライバユニット２１０は、制御装置１００からの制御信号に従って、ステッピングモータ３１０を駆動する。制御装置１００からの制御信号は具体的には、ステッピングモータ３１０，３２０，３３０，３４０，３５０，３６０各々の位置（関節角度）又は速度を指令する位置指令と、ステッピングモータ３１０，３２０，３３０，３４０，３５０，３６０各々の発生トルクを指令するトルク指令とからなる。位置指令及びトルク指令は制御装置１００から一定周期（制御周期△ｔ）で繰り返し供給される。他のドライバユニット２２０−２６０は、ドライバユニット２１０と同一の構成を有し、それぞれステッピングモータ３２０−３６０を駆動する。ここではドライバユニット２１０の構成及び動作を説明する。他のドライバユニット２２０―２６０の構成及び動作は、それぞれドライバユニット２１０の構成及び動作と同一であるので説明は省略する。
【００３８】
（ドライバユニット）  
ドライバユニット２１０は、ステッピングモータ３１０の駆動および停止を制御する。ドライバユニット２１０は、制御部２１１と、電源回路２１２と、パルス信号発生部２１３と、ロータリーエンコーダ２１５と、脱調判定部２１６と、カウンタ２１７とを有する。制御部２１１は、制御装置１００から入力された制御信号に従って、ドライバユニット２１０を統括して制御する。
【００３９】
制御部２１１には、制御装置１００から、制御周期Δｔ毎に位置指令がトルク指令とともに入力される。トルク指令は、ステッピングモータ３１０に発生させるトルクの値を表すコード信号である。制御部２１１は、ステッピングモータ３１０に関する励磁電流値とトルク値とを対応付けた対応表のデータを保持する。制御部２１１は電源回路２１２に対してトルク指令に従った励磁電流を発生させるための制御を実行する。電源回路２１２は、電流可変のＡＣ／ＤＣ変換方式電源回路であり、トルク指令により指定された励磁電流値で電流を発生する。発生された励磁電流はステッピングモータ３１０のステータコイルに供給される。
【００４０】
位置指令は、ステッピングモータ３１０の関節角度を表すコード信号である。位置指令は制御周期Δｔ（例えば、１０ｍｓ）ごとに供給される。位置指令は次の制御周期Δｔの時点での関節角度を表している。関節角度とは、基準位置（原点）からの正負の回転角度を表す。なお、関節部Ｊ３のドライバユニット２３０において、位置指令は、次の伸縮距離として与えられる。伸縮距離とはアーム部２が最も収縮した状態からの距離を指す。関節角度と伸縮距離とを関節変数と総称する。制御部２１１は、パルス信号発生部２１３に対して位置指令に応じたパルス信号を発生させるための制御を実行する。制御部２１１は、関節部Ｊ１が現在の関節角度から次（制御周期Δｔ後）の関節角度との角度差を変位するために必要なステッピングモータ３１０の回転角度をステップ角で除算することによりパルス数を決定し、制御周期△ｔをパルス数で除算しその逆数によりパルス周波数を決定する。制御部２１１は、決定したパルス条件（パルス数とパルス周波数）に対応するパルス制御信号をパルス信号発生部２１３に対して出力する。
【００４１】
パルス信号発生部２１３は、制御部２１１から出力されたパルス制御信号で与えられたパルス数のパルスを、ステータコイルと電源回路２１２との間のスイッチング素子に対して決定したパルス周波数で順次切り替えながら供給する。これにより制御周期Δｔ後にステッピングモータ３１０は上記角度差を変位するために必要な回転角度だけ回転し、それにより、関節部Ｊ１は指令された関節角度まで回転する。同様に、関節部Ｊ２，Ｊ４、Ｊ５，Ｊ６に対応するドライバユニット２２０、２４０，２５０，２６０各々には、制御装置１００から、次の関節角度を表す位置指令がトルク指令とともに入力され、これにより関節部Ｊ１，Ｊ２，Ｊ４，Ｊ５，Ｊ６各々は指令された関節角度まで回転する。同様に、関節部Ｊ３に対応するドライバユニット２３０には、制御装置１００から次の伸縮距離を表す位置指令が入力され、これにより関節部Ｊ３のアーム部２は指令された伸縮距離まで伸縮する。なお、パルス信号発生部２１３から出力されたパルスは後述の脱調判定部２１６にも取り込まれる。
【００４２】
ドライブシャフトエンコーダ２１５は、ドライブシャフトが一定の回転角（エンコーダステップ角）を回転する毎にパルスをカウンタ２１７に対して出力する。ドライブシャフトは関節部Ｊ１の回転軸をいう。ここではダイレクトドライブ方式が採用されるので、関節部Ｊ１の回転軸はステッピングモータ３１０の駆動軸に一致する。なお、ドライブシャフトエンコーダ２１５から出力されたパルスは後述の脱調判定部２１６にも取り込まれる。実際には順／逆の回転方向を識別するためにＡ相／Ｂ相の２種のパルスが出力される。ドライブシャフトエンコーダ２１５は、ドライブシャフトが１回転する毎に原点用のパルス（Ｚ相パルス）をカウンタ２１７に対して出力する。
【００４３】
カウンタ２１７は、ドライブシャフトエンコーダ２１５から出力されたＡ相（又はＢ相）パルスを回転方向に応じて加減算をする。カウンタ２１７は、ドライブシャフトエンコーダ２１５からＺ相パルスが出力されると、カウント値をリセットする。したがって、エンコーダパルスのカウント値は、ドライブシャフトの原点からの回転変位（回転角度）を表す。カウンタ２１７は、ドライブシャフトエンコーダ２１５から出力されたＺ相パルスも計数する。Ｚ相パルスのカウント値は“回転数”を表す。以下、単に「カウント値」というときは、回転角度を表すカウント値と回転数を表すカウント値との総称するものとし、両者を区別する場合には「回転角度を表すカウント値」と「回転数を表すカウント値」を称するものとする。カウント値は、関節部Ｊ１の関節角度（関節座標上の位置）を表している。カウンタ２１７からは一定周期ごとにカウント値が出力される。この周期は上記制御周期△ｔと同一でも良いし、相違するものであっても良い。カウンタ２１７から出力されるドライブシャフトの回転に係るカウント値のデータは、制御部２１１のＲＯＭに記憶される。制御部２１１は、カウント値にステップ角を乗算することにより関節部Ｊ１の現在の関節角度（関節位置）を計算する。
【００４４】
ステッピングモータ３１０はモータドライバユニット２１０との組み合わせにより脱調時に回転停止しない脱調回復機能を備える。モータドライバユニット２１０はステッピングモータ３１０が脱調を発生したときステッピングモータ３１０の励磁位置を変更して回転停止を回避する。制御部２１１は、関節部Ｊ１の現在の関節角度から、複数のステータコイルに対するロータの現在位置を計算する。制御部２１１は、ロータの現在位置に従って、励磁を開始するステータコイルを決定する。パルス信号発生部２１３は、パルス制御信号で与えられたパルス数のパルスを、複数のステータコイルと電源回路２１２との間の複数のスイッチング素子に対して、制御部２１１により決定されたステータコイルに対応するスイッチング素子から順次供給する。これにより、ステッピングモータ３１０は、脱調が生じても、脱調した位置から回転を再開することができる。つまり、本実施形態に係るモータドライバユニット２１０は、脱調によるステッピングモータ３１０の回転停止を回避できる。
【００４５】
（脱調判定部）  
脱調判定部２１６は、パルス信号発生部２１３から出力されたパルス信号に対するエンコーダパルスのカウント数を比較することによりステッピングモータ３１０が脱調を生じたか、脱調を生じていないかを判定する。脱調判定部２１６は、パルス信号に同期してエンコーダパルスのカウント／リセットを繰り返す。パルス信号の一周期で回転するステップ角は固定である。ステップ角に対応するエンコーダパルスの数は固定である。エンコーダパルスのカウント数がステップ角に対応する数に一致していれば、パルス信号に対してステッピングモータ３１０の回転が同期している、つまり脱調は生じていない。一方、エンコーダパルスのカウント数がステップ角に対応する数に一致していなければ、パルス信号に対してステッピングモータ３１０の回転が同期していない、つまり脱調が生じている。ステッピングモータ３１０が脱調を生じているとき、脱調判定部２１６は、脱調検知信号を発生する。
【００４６】
（制御装置１００）  
制御装置１００は、システム制御部１０１と、操作部インターフェース１０２と、表示制御部１０３と、ドライバユニットインターフェース１０４と、タスクプログラム記憶部１０５と、タスクコントローラ１０６と、脱調フラグマップ発生部１０７と、トルクマップ記憶部１０８と、トルクマップ更新部１０９と、トルクキャリブレーションコントローラ１１０とを有する。  
システム制御部１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と半導体メモリ等を有し、制御装置１００を統括して制御する。システム制御部１０１には、制御／データバス１２０を介して各部が接続されている。
【００４７】
制御装置１００には、操作部５０Ｉ／Ｆを介して操作部５０が接続されている。操作部５０は、トルクキャリブレーションの初期条件を作業者が入力するための入力インターフェースとして機能する。操作部５０は、マウス、キーボード、タッチパネル等の入力デバイスにより構成される。また、操作部５０は、トルクキャリブレーションの開始スイッチ、タスクの開始スイッチ等の入力デバイスを備える。
【００４８】
システム制御部１０１は、トルクキャリブレーションの開始スイッチが作業者により押されたのを契機に、トルクキャリブレーションプログラムを起動し、トルクキャリブレーションの設定画面のデータを発生し、表示制御部１０３のフレームメモリに書き込む。表示制御部１０３は、フレームメモリに格納されたデータを読み出し、表示部６０に表示する。表示部６０としては、典型的に例えばＣＲＴディスプレイや液晶ディスプレイ、有機ＥＬディスプレイ、プラズマディスプレイ等が挙げられる。
【００４９】
制御装置１００には、ドライバユニットＩ／Ｆを介してドライバユニット２１０−２６０が接続されている。制御装置１００には、ドライバユニット２１０−２６０各々から、脱調検知信号が、ドライバユニットインターフェースを介して所定の制御周期△ｔ毎（例えば、１０ｍｓ毎）に供給される。
【００５０】
（タスクプログラム記憶部）  
タスクプログラム記憶部は、タスクプログラムのデータを記憶する。タスクプログラムは、ロボット装置にタスクを実行させるための手順が時間スケールとともに記述されているシーケンスプログラムである。タスクプログラムには、手先基準点又は手首基準点（以下、手先基準点とする）の移動軌道、移動軌道上の作業点／区間、作業内容、作業時間、作業点の間の移動時間等が記述されている。作業点は、ハンド装置３の着目点（手先着目点）の位置とハンド装置３の姿勢とで与えられる。これらは、ロボット座標系で与えられる。また、作業点は、関節変数ベクトルで与えられてもよい。関節変数ベクトルとは関節部Ｊ１−Ｊ６の６つの関節変数、つまり回転関節部Ｊ１、Ｊ２、Ｊ４−Ｊ６の回転角と直動伸縮関節部Ｊ３のアーム伸縮距離との６変数をいう。タスクプログラムは、例えば、事前のティーチングにより提供される。
【００５１】
図５は、図１のロボット装置のタスクプログラムで記述されている軌道、軌道上の作業点を示す平面図である。このタスクプログラムでは、タスクの開始点をPstart、タスクの終了点をＰend、作業点をＰp1、Ｐr1、Ｐp2、Ｐp2と表記する。これらの点は例えばロボット装置のロボット座標系で記述されている。作業点Ｐp1は、搬送ラインの幅の中心線の上方に設定されている。作業点Ｐr1は、搬出シュータ上に設定されている。作業点Ｐp2は、搬入シュータ上の箱の搬送位置に設定されている。作業点Ｐr2は、搬送ラインの幅の中心線の上方に設定されている。作業点Ｐr2は作業点Ｐp1よりも搬送ラインの下流に設定されている。
【００５２】
作業点Ｐp1、Ｐr1、Ｐp2、Ｐr2で、ロボット装置による所定の作業が行われるようにタスクプログラムに作業内容が記述されている。具体的には、作業点Ｐp1には、作業内容として把持によるピッキング動作が記述されている。作業点Ｐr1には、把持によりピッキングしたワークのリリース動作が記述されている。作業点Ｐp2には、吸着によるピッキング動作が記述されている。作業点Ｐr2には、吸着によりピッキングしたワークのリリース動作が記述されている。
【００５３】
（タスクコントローラ１０６）  
タスクコントローラ１０６は、通過検知センサ７３から通過検知信号が出力されたのを契機に、タスクプログラムの実行を開始する。タスクコントローラ１０６がタスクプログラムに基づいて位置指令を発生する。位置指令を受けたモータドライバ２１０−２６０がステッピングモータ３１０−３６０を駆動する。手先基準点が開始点Ｐstartから、作業点Ｐp1、Ｐr1、Ｐp2、Ｐr2を経由して終了点Ｐendまで移動する。作業点Ｐp1、Ｐr1、Ｐp2、Ｐr2ではタスクコントローラ１０６は各作業内容に応じてハンド装置３のアクチュエータの動作を制御する。これにより、ロボット装置は、コンベア装置の搬送ライン７１上を搬送されるチューブ容器３００をピッキングし、ピッキングしたチューブ容器３００を搬出シュータ８０上にリリースし、その後、搬入シュータ９０上の箱をピッキングし、ピッキングした箱を搬送ライン７１上に戻すまでの一連のタスクを実行する。
【００５４】
タスクコントローラ１０６は、タスク開始からタスク終了までの間、制御周期Δｔ毎に位置指令とトルク指令とを、モータドライバユニット２１０−２６０各々に送信する。トルクの値を表すトルク指令は、トルクマップ記憶部１０８に記憶されているトルクマップにより与えられる。タスクの開始時刻ｔ０から終了時刻ｔNまでの期間にわたって制御周期△ｔの間隔で配列される制御時刻ｔ各々の関節角度（関節位置）を表す位置指令は、タスクプログラムで規定されている複数の作業点を例えば補間する処理によりタスクコントローラ１０６による計算処理により与えられる。
【００５５】
図６は、図４のタスクコントローラ１０６による位置指令を説明するための補足説明図である。タスクコントローラ１０６は、予定軌道と、作業点Ｐstart、Ｐp1、Ｐr1、Ｐp2、Ｐp2と、作業点の間の移動時間とに基づいて、タスク開始時刻ｔ0から制御周期Δｔを経過する時刻ｔ1，ｔ2，…，ｔNにおける制御上の位置（制御点）ｐ0〜pＮを計算する。これら制御点ｐ0〜pＮはロボット座標系で与えられる。次に、タスクコントローラ１０６は、時刻が前後する２つの制御点の間の距離を制御周期Δｔで除算することにより、２つの制御点の間の手先速度を計算し、計算した手先速度をヤコビアン逆行列を用いて関節部Ｊ１−Ｊ６の関節角速度に変換する。ヤコビアン逆行列は、手先着目点の位置・手先姿勢を表すベクトルの関節変数による編微分で与えられ、手先速度（手先位置・姿勢の微小変化）を関節角速度（関節角度・伸縮長の微小変化）に変換する行列である。ヤコビアン逆行列は、アーム構造のリンクパラメータと制御点ｐ0〜pＮ各々における関節変数ベクトルとにより計算される。タスクコントローラ１０６は、関節角速度に制御周期△ｔを乗算することにより、制御周期△ｔの間の関節部Ｊ１−Ｊ６各々の変位量を計算し、計算した関節部Ｊ１−Ｊ６各々の変位量を直前の関節変数ベクトルに加算することにより、制御周期△ｔ後の関節変数ベクトルを計算する。
【００５６】
例えば、タスクコントローラ１０６は、制御時刻ｔ0に、次の制御点ｐ1に対応する関節変数をドライバユニット２１０−２６０各々に送信する。
【００５７】
（脱調フラグマップ発生部１０７）  
脱調フラグマップ発生部１０７１０６は、ドライバユニット２１０−２６０各々からの脱調検知信号に基づいて、脱調フラグマップを発生する。タスクプログラムは、事前に設定される。タスクプログラムでは、アーム機構の手先基準点又は手首基準点が移動する軌道、さらに軌道上の位置又は区間においてワークに対する作業が記述されている。実際のワークを用いてタスクプログラムがトルクキャリブレーション処理の中で実行される。トルクキャリブレーション処理は繰り返される。トルクキャリブレーション処理の繰り返し過程の中で、各関節部のステッピングモータのトルクが漸近的に最適値に近似されていく。脱調フラグマップは、トルクキャリブレーション処理の繰り返し過程の中で繰り返し発生される。
【００５８】
図７は、図４の脱調フラグマップ発生部１０７で発生される脱調フラグマップの一例を示す図である。脱調フラグマップは、トルクキャリブレーション処理の中でタスクを実行しているときにおける関節部Ｊ１−Ｊ６各々のステッピングモータの脱調状態を表すフラグの一覧である。タスクプログラムを実行する時間軸上の開始時刻から終了時刻までのタスク期間における関節部Ｊ１、Ｊ２，Ｊ３，Ｊ４，Ｊ５，Ｊ６各々のステッピングモータの脱調状態を制御周期Δｔ毎に一覧で示す表を脱調フラグマップと定義する。
【００５９】
脱調フラグマップ上において、タスク開始時刻を制御時刻ｔ0、タスク終了時刻を制御時刻ｔ(N)と表記する。制御時刻ｔ1は、制御時刻ｔ0から制御周期Δｔ後の時刻を表し、制御時刻ｔ2は、制御時刻ｔ1から制御周期Δｔ後の時刻を表している。
【００６０】
脱調フラグマップ発生部１０７は、ドライバユニット２１０−２６０各々から制御周期Δｔ毎に入力される脱調検知信号に基づいて、各制御時刻ｔnの脱調状態を識別するフラグ（脱調フラグという）を立てる。初期状態の脱調フラグマップは全てブランクである。脱調フラグには３種類の脱調状態を表す「０」、「１−」および「１＋」と、フラグを確定させることを表す確定フラグ「２」とが用意されている。
【００６１】
フラグ「０」は脱調が発生していない状態を表し、フラグ「１−」は予定トルクがトルク不足であることを原因として脱調が発生している状態を表し、フラグ「１＋」は予定トルクがトルク不足である以外の原因で脱調が発生している状態を表している。
【００６２】
フラグ「０」は、脱調が発生しなかったときに選択されるフラグである。図７に示すように例えば関節部Ｊ２に対応するドライバユニット２２０から制御時刻ｔ1で脱調検知信号が入力されなければ、脱調フラグマップ発生部１０７は、関節部Ｊ２と制御時刻ｔ1とに関連付けてフラグ「０」をセットする。
【００６３】
フラグ「２」は、フラグ確定条件を満たしたときに選択されるフラグである。具体的には、トルクキャリブレーション処理の繰り返し過程において、あるキャリブレーションサイクル(n-1)でフラグ「１−」が立てられたとき、その関節部のその時刻のトルク値を増加させ、増加させたトルク値を用いた次のキャリブレーションサイクル(n)で脱調しなかったとき、またはさらに次のサイクル(n+1)まで脱調しなかったとき、増加させたトルク値を確定させるために、その関節部Ｊ２と制御時刻ｔ1とに関連付けてフラグ「２」がセットされる。後述のトルクマップ更新部１０９は、タスクを実行する際に用いたトルクマップのフラグ「２」がセットされたセル（例えば関節部Ｊ２と制御時刻ｔ1）に対応するトルクの値を確定する。そのため、フラグ「２」は確定フラグともいう。
【００６４】
フラグ「１−」、「１＋」は脱調が発生したときにセットされるフラグである。フラグ「１−」は予定トルクで動作させたにも関わらずトルク不足を引き起こしてそれが原因で脱調が発生したことを表し、フラグ「１＋」は上記原因以外の原因で脱調が発生したことを表している。フラグ「１−」によりトルク値が増加され、フラグ「１＋」によりトルク値は維持される。フラグ「１−」、「１＋」の相違について図８を参照して具体的に説明する。
【００６５】
（フラグ「１−」とフラグ「１＋」の説明）  
図８は、図７のフラグを説明するための補足図である。ここでは、関節部Ｊ１を例に説明する。横軸は制御時刻を表し、縦軸は関節角度を表す。ｐJ1(n-1)〜ｐJ1(n+5)は、それぞれ制御時刻ｔ(n-1)〜ｔ(n+5)において予定されている、関節部Ｊ１の関節角度を表している。つまり、ドライバユニット２１０には、制御装置１００から制御時刻ｔ(n-1)〜ｔ(n+5)に、それぞれ次に予定している関節角度ｐJ1(n)〜ｐJ1(n+6)が位置指令として入力される。ｐJ1´(n-1)〜ｐJ1´(n+5)は、それぞれ制御時刻ｔ(n-1)〜ｔ(n+5)における、実際の関節角度を表している。実際の関節角度ｐJ1´(n-1)〜ｐJ1´(n+5)は、それぞれロータリーエンコーダ２１５から出力されたエンコーダパルスに基づいて計算される。
【００６６】
制御時刻ｔ(n-1)から制御時刻ｔ(n+5)にかけて、ドライバユニット２１０から制御装置１００に、脱調検知信号が入力されなければ、それは、ステッピングモータ３１０が脱調しない状態で予定軌道上を移動していることを示す。一方、脱調検知信号が入力されたとき、それは、ステッピングモータ３１０に脱調が生じ、それが原因で関節部Ｊ１が指令された関節角度まで達していない状態を示す。
【００６７】
図８に示すように、ここでは、制御時刻ｔ(n)、ｔ(n+1)、ｔ(n+2)およびｔ(n+3)において、関節部Ｊ１の実際の関節角度が、指令された関節角度に対してズレているとき、制御装置１００にドライバユニット２１０から脱調検知信号が出力されている。ここではこの脱調検知信号が連続して出力されている期間ｔ(n)〜ｔ(n+3)を脱調検出期間という。脱調検出期間のうち、脱調検出期間の始期から所定の時間幅の期間を脱調期という。また、脱調検出期間のうち、脱調期の終点から脱調検出期間の終期までの期間を回復期という。脱調期は、指令されたトルク値で関節部が回転したときそのトルクが負荷に対して不足している過負荷が原因でステッピングモータ３１０に脱調が生じたとみなす期間であり、その時間長は作業者により任意に設定される。例えば脱調期は制御周期Δｔの２倍に初期値として設定される。作業者は任意に変更可能である。最初の時刻ｔ(n)の脱調、さらに次の時刻ｔ(n+1)の脱調が過負荷による脱調とみなす。回復期内の時刻、ここでは時刻ｔ(n+2) 、ｔ(n+3)ではステッピングモータ３１０に脱調が生じたが、その原因が上記トルク不足ではなく、例えば脱調による位置ずれを回復させるために急加速させ、関節角速度を高めたときにそれに伴ってステッピングモータの特性上トルクが低下したことが原因であろうとみなす期間である。
【００６８】
つまり、フラグ「１−」、「１＋」はともにその関節部のその時刻に脱調は発生しているが、その脱調原因が予定トルクそれ自体が負荷に対して低すぎることにあるのか、それ以外の原因によるものであるかを区別するために用意されている。なお、脱調原因がトルク不足であるときはトルクを増加する処理がなされ、一方、脱調原因がトルク不足以外の原因によるときには直ちにトルクを増加すべきではなく、トルクを維持する処理がなされる。
【００６９】
脱調フラグマップ発生部１０７は、当該関節部に関する脱調検出期間内の脱調期の制御時刻に関連付けてフラグ「１−」をセットし、回復期内の制御時刻に関連付けてフラグ「１＋」をセットする。すなわち、図８に示すように、関節部Ｊ１の脱調検出期間ｔ(n)〜ｔ(n+3)のうち、制御時刻ｔ(n)、ｔ(n+1)にはフラグ「１−」がセットされ、制御時刻ｔ(n+2)、ｔ(n+3)にはフラグ「１＋」がセットされる。
【００７０】
例えば、図８に示すように、制御時刻ｔ(n-1)、ｔ(n)でステッピングモータ３１０に脱調が生じたとき、時刻ｔ(n)の関節角度ｐJ1´(n)は指令位置ｐJ1(n)まで達しない。時刻ｔ(n)の位置指令は次の時刻ｔ(n+1)に達すべき位置ｐJ1(n+1)を指令する。制御部２１１は脱調が発生しなかった場合よりも、次の時刻ｔ(n+1)に達すべき位置ｐJ1(n+1)まで回転させるために必要な多くのパルス信号を発生する。パルス信号は、予定周波数よりも高い周波数で発生される。それによりステッピングモータ３１０の回転角速度は脱調が発生しなかった場合に比べて高くなる。ステッピングモータ３１０の特性上、回転数が高くなるとトルクが低下する。従って制御時刻ｔ(n)からｔ(n+1)にかけて、ステッピングモータ３１０が発生するトルクは、予定トルクよりも低下する。このように、ステッピングモータ３１０に一旦脱調が生じると、ステッピングモータ３１０の脱調状態が回復されるまでの間、ステッピングモータ３１０は予定していたトルクよりも低いトルクで動作する。そのため、脱調期では、予定していたトルクの値では、トルクが不足していたと推定できるが、回復期では、脱調による位置ずれを回復させるために急加速させ、また関節角速度を高めたときにそれに伴ってステッピングモータの特性上トルクが低下したことが原因であろうとみなされるため、実際に予定していたトルクを正常に発揮させたときには脱調が生じない可能性がある。なおここでは「トルク不足」とは、指令されたトルクで動作したときに発生する脱調の原因に限定的に用いるものとし、上記回復期の脱調にように、指令されたトルクより低いトルクで動作したときに発生する脱調の原因には用いないものとする。
【００７１】
そのため脱調は生じている時点全てトルクを増加させるのではなく、脱調検出されたとしても、その原因によってトルクを増加／維持を選択する。脱調期に対応するフラグ「１＋」がセットされたときに、後述のトルクマップ更新部１０９によるトルクの値の更新処理を実行させ、脱調検出期間の脱調期以降の回復期に対応するフラグ「１−」がセットされたときに、後述のトルクマップ更新部１０９によるトルクの値の更新処理を保留させるように更新規則を設けることで、次のサイクルで、回復期に対応する制御時刻で再度同じトルクの値でタスクを実行させることができる。それによりトルク不足を解消するとともに、過度に高いトルクを設定してしまう事態を回避できる。
【００７２】
（トルクマップ記憶部１０８）  
トルクマップ記憶部１０８はトルクマップのデータを記憶する。このトルクマップは、対応するタスクプログラムと関連付けされている。あるタスクプログラムを起動するときにそのタスクプログラム関連付けされているトルクマップが読み出される。  
図９は、図４のトルクマップ記憶部１０８に記憶されているトルクマップの一例を示す図である。トルクマップは、関節部Ｊ１、Ｊ２，Ｊ３，Ｊ４，Ｊ５，Ｊ６各々のステッピングモータに発生させるトルクの値を、タスクプログラムを実行する時間軸上の開始時刻ｔ0から終了時刻ｔ(N)までのタスク期間内における制御周期Δｔ毎の制御時刻に対応つけた一覧表と定義される。換言すると、トルクマップはタスクが開始されてから終了されるまでの期間における関節部各々のステッピングモータが発生すべきトルクの時間変化を表している。ここでは、トルクの値は、ステッピングモータの仕様上の最大トルクに対する割合で表記する。トルクマップ上の値「９０」は、ステッピングモータの仕様上の最大トルクに対して、９０％のトルクを発揮させることを表している。
【００７３】
タスク期間内における制御周期Δｔ毎の制御時刻に位置指令とトルク指令とが制御装置１００から制御部２１１に次々と供給される。時刻ｔ1は、時刻ｔ0から制御周期Δｔ経過後の時刻を表している。このトルクマップによれば、制御時刻ｔ1に、関節部Ｊ１のステッピングモータ２１０には、最大トルクの９０％のトルクを発生させることを表している。
【００７４】
（トルクマップ更新部１０９）  
トルクマップ更新部１０９は、トルクマップ記憶部１０８に記憶されているトルクマップを後述の脱調フラグマップに基づいて、以下の更新規則により更新する。あるトルクマップのもとでトルクキャリブレーション処理が実行され、そのトルクキャリブレーション処理で発生した脱調フラグマップに従ってそのトルクマップが更新され、更新されたトルクマップを用いて次のトルクキャリブレーション処理が実行される。このようにトルクマップはトルクキャリブレーション処理の繰り返し過程の期間中、順次更新される。
【００７５】
なお、トルクキャリブレーション処理は、実際のタスクに先立って事前準備として実行しても良いし、実際のタスクの期間中にタスクと並行して実行させてもよい。
【００７６】
（トルク更新規則）  
原則的なトルク更新規則としては、ある関節部についてトルク不足に起因する脱調を示すフラグ「１−」をトルクキャリブレーション処理の繰り返しの中で一度も経験していない状態で発生している非脱調フラグ「０」に対してはトルクを所定の減少分ΔＴdownだけ減少させる。さらにトルク不足に起因する脱調を示すフラグ「１−」を経験した後に発生している非脱調フラグ「０」に対してはそのトルクを維持させ、又は安全のために少しだけトルク（後述のマージンα）を増加させ、そのトルク値をその関節部及びその時刻に対して確定させる（確定フラグ「２」をたてる）。或る関節部についてトルク不足に起因する脱調を示すフラグ「１−」が或る時刻に立てられているときは、そのトルクに所定の増分量ΔＴupを加えたトルク、又は増分量ΔＴupとマージンαとを加えたトルクに更新する。或る関節部の或る時刻についてトルク不足以外の原因で脱調が発生したことを示すフラグ「１＋」が立てられているときは、トルクを維持させる。
【００７７】
フラグ「２」は確定フラグである。脱調フラグマップでフラグ「２」がセットされたセルに対応するトルクの値は、更新前のトルクの値に確定する。詳細には後述する。
【００７８】
実際の本作業としてのタスクプログラムの実行の前段階でその準備作業として、トルクキャリブレーションコントローラ１１０は、システム制御部１０１によりトルクキャリブレーションプログラムが起動されたのを契機に、トルクキャリブレーションプログラムで記述されている処理を実行する。なお、実際の本作業としてタスクプログラムを繰り返し実行中にそれと並行してトルクキャリブレーション処理を繰り返し実行するものであってもよい。以下、トルクキャリブレーション処理について図１０を参照して説明する。
【００７９】
（トルクキャリブレーション処理）  
本実施形態に係るロボット装置は、トルクキャリブレーション機能を備える。トルクキャリブレーションは、タスク実行中のステッピングモータ３１０−３６０各々に発生させるトルク値を、本番のタスク実行前の準備期間に、又は本番のタスク実行中に最適値に近似させるための処理である。事前処理であっても、トルクキャリブレーション処理は、実際のタスクプログラムをロボット装置に実際のワークを用いて実行される。
【００８０】
図１０は、本実施形態に係るロボット装置のトルクキャリブレーションの手順を示すフローチャートである。トルクキャリブレーションはトルクキャリブレーションコントローラ１１０の制御に従って実行される。
【００８１】
（工程Ｓ１）  
システム制御部１０１の制御に従って、トルクキャリブレーションプログラムが起動される。  
（工程Ｓ２）  
トルクキャリブレーションコントローラ１１０の制御に従って、表示制御部１０３により、表示部６０にトルクキャリブレーション処理の初期条件の設定画面が表示される。作業者は、操作部５０を操作して設定画面を介してトルクキャリブレーション処理の初期条件を入力することができる。操作部５０を介して、作業者により初期トルクＴ0、増分量ΔＴup、減少量ΔＴdown、トルクマージン量（以下単にマージンという）α、及び最大サイクル数Ｌmaxが入力される。マージンαはトルク更新に際して本番でトルク不足による脱調の発生リスクをできるだけ軽減しながら、最適値に近似させるために設けられている。増分量とは、増分量ΔＴup、又はこの増分量ΔＴupにマージンαを加えた新たな増分量（ΔＴup＋α）のいずれかに定義される。
【００８２】
トルクキャリブレーションコントローラ１１０は増分量ΔＴupと減少量ΔＴdownとマージンαとに対してそれぞれデフォルト値を設定する。デフォルト値として、増分量ΔＴupは、例えば最大トルクの１０％に設定される。減少量ΔＴdownのデフォルト値は典型的には増分量ΔＴupと等価、例えば最大トルクの１０％に設定される。マージンαは、増分量ΔＴupよりも低い値、典型的には増分量ΔＴupの１／２に設定される。マージンαを考慮するとき、増分量（ΔＴup＋α）は減少量ΔＴdownよりも大きな値であって、増分量（ΔＴup＋α）は減少量ΔＴdownの２倍より小さい値に設定される。もちろん、これらデフォルト値は操作部５０を介してユーザ指示により任意に設定され得る。
【００８３】
（工程Ｓ３）  
トルクキャリブレーションコントローラ１１０の制御に従って、トルクマップ記憶部１０８に記憶されているトルクマップ上の全てのトルク値が初期トルクＴiniに初期化される。トルクキャリブレーションコントローラ１１０により。工程２で入力された初期トルクＴiniが記述された初期トルクマップが発生され、発生された初期トルクマップのデータはトルクマップ記憶部１０８に記憶される。
【００８４】
（工程Ｓ４）
タスクプログラム記憶部１０５から所望のタスクプログラムが選択的に読み出され、トルクキャリブレーションコントローラ１１０にロードされる。タスクコントローラ１０６はタスクプログラムを展開して、各関節部Ｊ１−Ｊ６に関する制御周期Δｔ毎の位置指令を生成する。またトルクマップ記憶部１０８からタスクプログラムに関連付けられているトルクマップが選択的に読み出され、トルクキャリブレーションコントローラ１１０にロードされる。タスクコントローラ１０６はトルクマップから各関節部Ｊ１−Ｊ６に関する制御周期Δｔ毎のトルク指令を生成する。タスクコントローラ１０６は関節部Ｊ１−Ｊにそれぞれ対応するドライバユニット２１０―２６０各々に制御周期Δｔ毎に位置指令とトルク指令とを繰り返し出力する。
【００８５】
（工程Ｓ５）  
タスクが実行されている間、ドライバユニット２１０−２６０各々から、脱調検知信号が制御周期Δｔ毎に入力される。この脱調検知信号に基づいて、脱調フラグマップ発生部１０７により脱調フラグマップのデータが発生される。
【００８６】
（工程Ｓ６）  
終了条件を満たさないとき、つまり工程Ｓ５で発生された脱調フラグマップが全てフラグ「２」がセットされていない場合は、工程Ｓ７に処理が移行される。一方、工程Ｓ５で発生された脱調フラグマップの全てのセルにフラグ「２」がセットされた場合は、トルクキャリブレーションが終了される。
【００８７】
（工程Ｓ７）  
トルクマップ更新部１０９により、工程Ｓ４で使用されたトルクマップが、工程Ｓ５で発生された脱調フラグマップを用いて更新規則にしたがって更新される。工程Ｓ７の処理の後、工程Ｓ４に戻り、工程Ｓ７で更新されたトルクマップを用いて、実際のワークを用いたタスクが実行される。工程Ｓ４〜工程Ｓ７のサイクルは、工程Ｓ５で発生された脱調フラグマップの全てのセルにフラグ「２」がセットされるまで繰り返し実行される。なお、トルクキャリブレーション処理は、工程Ｓ４〜工程Ｓ７のサイクル数Ｌが、最大サイクル数Ｌmaxに達した時点で強制的に終了されてもよい。このときは、工程Ｓ２で設定したトルクキャリブレーションの初期条件が不適切だった場合が想定される。そのため、作業者は、トルクキャリブレーションプログラムを再度起動し、工程Ｓ２のトルクキャリブレーションの初期条件の再設定等を行う。
【００８８】
（サイクルの説明）  
図１１は、図１０のトルクキャリブレーションの１サイクルを説明するための補足説明図である。トルクマップを「ＴＭ」、脱調フラグマップを「ＦＭ」と表記する。  
現在のトルクキャリブレーションサイクル（Ｌ）では、直前サイクル（Ｌ−１）で更新したトルクマップＴＭ(L-1)を用いてタスクを実行する。そのタスク実行に伴って発生した脱調フラグマップＦＭ(L)を用いて、今回のタスク実行に用いたトルクマップＴＭ(L-1)を更新する。それにより新たなトルクマップＴＭ(L)が生成される。新たなトルクマップＴＭ(L)は、次のトルクキャリブレーションサイクル（Ｌ＋１）でのタスク実行に用いられる。
【００８９】
（更新規則の説明）  
例えば７０以上の比較的高いトルクを初期値として与えたときの更新規則で特徴的なのは、比較的高いトルクを初期値としてトルクキャリブレーション処理を繰り返すとき、当初には脱調が発生しない傾向が当然強くなる。連続して脱調が発生していない間は減少量「１０」ずつトルクを減少させていき、その繰り返し過程の中で脱調が発生した時点でそのトルクに増分量「１０」とマージン「５」とを増加させてそのトルクで確定させる点にある。脱調が発生した時点のトルク値に、増分量「１０」に加えてマージン「５」を増加させることにより、本番タスク実行に際して予定トルクではトルク不足を生じさせてしまい、それが原因で脱調が発生してしまうリスクを軽減しながら、最適値に近似させることができる。以下より詳細な更新規則とともに具体的に説明する。
【００９０】
図１２は、図１０のトルクキャリブレーションの工程Ｓ８のトルクマップの更新規則を詳細に説明するために、ある関節部Ｊ１に着目して脱調フラグマップとトルクマップの変遷を示している。制御時刻ｔ(n)から制御時刻ｔ(n+6)の関節部Ｊ１に関するトルクマップが確定されるまでのトルクの値の更新規則について説明する。増分量Δupが「最大トルクの１０％」、減少量Δdownが「最大トルクの１０％」およびマージンαが「最大トルクの５％」、初期トルクが「最大トルクの９０％」に設定されているものとして説明する。以下ではトルクを単に「９０」等により簡易に表記する。
【００９１】
トルクキャリブレーションの１回目のサイクルでは、初期トルクマップＴＭ(0)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(1)が発生される。例えば脱調が発生しなかったとき、脱調フラグマップＦＭ(1)において、すべてのセルにフラグ「０」がセットされる。トルクマップ更新部１０９は、脱調フラグマップＦＭ(1)を用いて、更新規則により、当該１回目のサイクルで用いた初期トルクマップＴＭ(0)を更新する。更新されたトルクマップＴＭ(1)において、すべてのセル各々に対応するトルクの値は、初期トルクマップＴＭ(0)で規定されていたトルクの値（「９０」）から減少量「１０」を減少させた値（「８０」）に更新される。
【００９２】
トルクキャリブレーションの２回目のサイクルでは、１回目のサイクルで更新されたトルクマップＴＭ(1)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(2)が発生される。脱調フラグマップＦＭ(2)において、脱調が発生していない制御時刻ｔ(n)にはフラグ「０」が立てられる。脱調が発生しており、しかもそれが脱調期であるときその制御時刻ｔ(n+1)、ｔ(n+2)各々にはフラグ「１−」が立てられる。脱調が発生しており、しかもそれが回復期であるとき制御時刻ｔ(n+3)からｔ(n+6)各々にフラグ「１＋」がそれぞれセットされる。
【００９３】
トルクマップ更新部１０９は、脱調フラグマップＦＭ(2)を用いて、更新規則により、トルクマップＴＭ(1)をトルクマップＴＭ(2)に更新する。フラグ「０」を示した制御時刻ｔ(n)に対応するトルクの値は、トルクの値（「８０」）から「１０」下げた値（「７０」）に設定される。  
「１−」が立てられている制御時刻ｔ(n+1)、ｔ(n+2)各々のトルク値は、当該サイクルのタスク実行に使用したトルクマップＴＭ(1)のトルク値（「８０」）に像分量「１０」とマージン「５」とを加算した値（「９５」）に設定される。  
「１＋」が立てられている制御時刻ｔ(n+3)からｔ(n+6)各々に対応するトルクの値は、そのタスクに使用したトルク値（「８０」）に維持される。
【００９４】
トルクキャリブレーションの３回目のサイクルでは、更新されたトルクマップＴＭ(2)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(3)が発生される。脱調フラグマップＦＭ(3)において、制御時刻ｔ(n)、ｔ(n+3)〜ｔ(n+6)各々では脱調が発生していないのでフラグ「０」、制御時刻ｔ(n+1)、ｔ(n+2)各々では前回のサイクルで増加させたトルク「９５」でサイド脱調が発生しなかったので、確定フラグ「２」がそれぞれセットされる。トルクマップ更新部１０９は、脱調フラグマップＦＭ(3)を用いて、更新規則により、トルクマップＴＭ(2)を更新する。
【００９５】
フラグ「０」を示す制御時刻ｔ(n)、ｔ(n+3)〜ｔ(n+6)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(2)で規定されていたトルクの値（制御時刻ｔ(n)は「７０」、ｔ(n+3)〜ｔ(n+6)各々は「８０」）から減少量「１０」を減少させた値（制御時刻ｔ(n)は「６０」、ｔ(n+3)〜ｔ(n+6)各々は「７０」）に設定される。確定フラグ「２」が立てられた制御時刻ｔ(n+1)、ｔ(n+2)は今回のサイクルのタスクで使用したトルクマップＴＭ(2)で規定されていたトルクの値（「９５」）に確定される。
【００９６】
トルクキャリブレーションの４回目のサイクルでは、更新されたトルクマップＴＭ(3)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(4)が発生される。今回のサイクル中のタスク実行による脱調状況に従って、制御時刻ｔ(n+6)に対応するセルにフラグ「０」、制御時刻ｔ(n)、ｔ(n+3)、ｔ(n+4)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n+5)に対応するセルにフラグ「１＋」、制御時刻ｔ(n+1)、ｔ(n+2)各々に対応するセルにフラグ「２」がそれぞれセットされた脱調フラグマップＦＭ(4)が発生される。トルクマップ更新部１０９は、脱調フラグマップＦＭ(4)を用いて、更新規則により、今回用いたトルクマップＴＭ(3)を更新する。更新されたトルクマップＴＭ(4)において、フラグ「０」の制御時刻ｔ(n+6)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(3)で規定されていたトルクの値（「７０」）から「１０」下げた値（「６０」）に設定される。脱調発生に伴って「１−」が立てられた制御時刻ｔ(n)、ｔ(n+3)、ｔ(n+4)各々のトルク値は、今回のタスクに使用したトルクマップＴＭ(3)のトルク値（制御時刻ｔ(n)は「６０」、ｔ(n+3)とｔ(n+4)各々は「７０」）に、像分量「１０」とマージン「５」とを増加させたトルク値（制御時刻ｔ(n)は「７５」、ｔ(n+3)とｔ(n+4)各々は「８５」）に設定される。「１＋」が立てられた制御時刻ｔ(n+5)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(3)で規定されていたトルクの値（「７０」）で維持される。
【００９７】
トルクキャリブレーションの５回目のサイクルでは、前回サイクルで更新されたトルクマップＴＭ(4)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(5)が発生される。脱調フラグマップＦＭ(5)において、脱調発生していない制御時刻ｔ(n+5)、ｔ(n+6)各々に対応するセルにフラグ「０」、前回サイクルでトルクを増加更新された制御時刻ｔ(n)からｔ(n+4)では脱調が発生していないので確定フラグ「２」がセットされる。
【００９８】
トルクマップ更新部１０９は、脱調フラグマップＦＭ(5)を用いて、更新規則により、トルクマップＴＭ(4)を更新する。フラグ「０」が立てられている制御時刻ｔ(n+5)、ｔ(n+6)のトルク値は、今回のタスクに使用したトルクマップＴＭ(4)で規定されていたトルク値（制御時刻ｔ(n+5)は「７０」、ｔ(n+6)は「６０」）から、減少料「１０」を減少させたトルク値（制御時刻ｔ(n+5)は「６０」、ｔ(n+6)は「５０」）に更新される。新たに確定フラグ「２」が立った制御時刻ｔ(n)、ｔ(n+3)、ｔ(n+4)各々に対応するトルクの値は、今回のタスクで用いたトルク値（制御時刻ｔ(n)は「７５」、ｔ(n+3)とｔ(n+4)各々は「８５」）に確定される。
【００９９】
トルクキャリブレーションの６回目のサイクルでは、更新されたトルクマップＴＭ(5)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(6)が発生される。脱調フラグマップＦＭ(6)において、制御時刻ｔ(n+6)に対応するセルにフラグ「０」、制御時刻ｔ(n+5)に対応するセルにフラグ「１−」、制御時刻ｔ(n)からｔ(n+4)各々に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(6)を用いて、更新規則により、トルクマップＴＭ(5)を更新する。更新されたトルクマップＴＭ(6)において、フラグ「０」の制御時刻ｔ(n+6)に対応するトルク値は、タスクに使用したトルクマップＴＭ(5)で規定されていたトルクの値（「５０」）から「１０」下げた値（「４０」）に設定される。フラグ「１−」の制御時刻ｔ(n+5)に対応するトルクの値は、タスクに使用したトルク値（「６０」）に像分量とマージンとで「１５」を加算した値（「７５」）に更新される。
【０１００】
トルクキャリブレーションの７回目のサイクルでは、更新されたトルクマップＴＭ(6)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(7)が発生される。脱調フラグマップＦＭ(7)において、制御時刻ｔ(n+6)に対応するセルにフラグ「１−」、制御時刻ｔ(n)からｔ(n+5)各々に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(6)を用いて、更新規則により、トルクマップＴＭ(6)を更新する。更新されたトルクマップＴＭ(7)において、制御時刻ｔ(n+5)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(6)のトルク値（「４０」）に像分量とマージンとの「１５」を加算した値（「５５」）に設定される。制御時刻ｔ(n+5)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(6)で規定されていたトルクの値（「７５」）に確定される。
【０１０１】
トルクキャリブレーションの８回目のサイクルでは、更新されたトルクマップＴＭ(7)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(8)が発生される。脱調フラグマップＦＭ(8)において、すべてのセルにフラグ「２」がセットされる。脱調フラグマップＦＭ(8)は、図１０の工程Ｓ６のトルクキャリブレーションの終了条件を満たす。そのため、トルクキャリブレーションは８回目のサイクルで終了され、トルクマップＴＭ(7)がトルクマップ記憶部１０８に記憶される。
【０１０２】
（更新規則の説明）  
上述では７０以上の比較的高いトルクを初期値として与えた場合の更新手順を説明した。７０未満の比較的低いトルクが初期値として与えられたとき、更新規則が少し変更される。図１３に示すように初期トルクマップＴＭ(0)の全てのセルが初期トルク「５０」に設定されている例を説明する。  
７０未満の比較的低いトルクを初期値として与えたときの更新規則が、７０以上の比較的高いトルクを初期値として与えたときの更新規則と大きく異なるのは次の点である。  
比較的低いトルクを初期値としてトルクキャリブレーション処理を繰り返すとき、当初では脱調が発生する傾向が当然強くなる。連続して脱調が発生している間は増分量「１０」ずつトルクを増加させていき、その繰り返し過程の中で脱調が発生しなかった時点でそのトルクにマージンを増加させ、そのマージンを加えたトルクで確定させる。  
トルクキャリブレーションの１回目のサイクルでは、初期トルクマップＴＭ(0)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(1)が発生される。脱調フラグマップＦＭ(1)において、制御時刻ｔ(n)、ｔ(n+6)各々に対応するセルにフラグ「０」、制御時刻ｔ(n+1)、ｔ(n+2)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n+3)からｔ(n+5)各々に対応するセルにフラグ「１＋」がそれぞれセットされている。トルクマップ更新部１０９は、更新規則により、トルクマップＴＭ(0)を更新する。脱調発生していないフラグ「０」の制御時刻ｔ(n)、ｔ(n+6)のトルクの値は、タスクに使用したトルクマップＴＭ(0)で規定されていたトルクの値（「５０」）から「１０」下げた値（「４０」）に設定される。トルク不足により脱調発生したフラグ「１−」の制御時刻ｔ(n+1)、ｔ(n+2)各々に対応するトルクの値は増分量「１０」を増加させたトルク値（「６０」）に設定される。トルク不足以外の原因で脱調発生したフラグ「１＋」の制御時刻ｔ(n+3)からｔ(n+5)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(0)で規定されていたトルクの値（「５０」）で維持される。
【０１０３】
トルクキャリブレーションの２回目のサイクルでは、１回目のサイクルで更新されたトルクマップＴＭ(1)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(2)が発生される。脱調発生していない制御時刻ｔ(n+6)に対応するセルにフラグ「０」、制御時刻ｔ(n)、ｔ(n+1)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n+2)からｔ(n+5)各々に対応するセルにフラグ「１＋」がそれぞれセットされている。
【０１０４】
トルクマップ更新部１０９は、脱調フラグマップＦＭ(2)を用いて、更新規則により、トルクマップＴＭ(1)を更新する。フラグ「０」が連続した制御時刻ｔ(n+6)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(1)で規定されていたトルクの値（「４０」）から「１０」下げた値（「３０」）に設定される。フラグ「０」後に初めて脱調したフラグ「１−」の制御時刻ｔ(n)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(1)のトルクの値（「４０」）に増分量とマージンとの（「１５」）を加算した値（「５５」）に設定される。フラグ「１−」が連続する制御時刻ｔ(n+1)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(1)で規定されていたトルクの値（「６０」）から「１０」上げた値（「７０」）に設定される。制御時刻ｔ(n+2)からｔ(n+5)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(1)で規定されていたトルクの値（制御時刻ｔ(n+2)は「６０」、制御時刻ｔ(n+3)からｔ(n+5)各々は「５０」）で維持される。
【０１０５】
トルクキャリブレーションの３回目のサイクルでは、トルクマップＴＭ(2)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(3)が発生される。脱調フラグマップＦＭ(3)において、制御時刻ｔ(n+6)に対応するセルにフラグ「０」、制御時刻ｔ(n+1)、ｔ(n+2)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n+3)からｔ(n+5)各々に対応するセルにフラグ「１＋」、制御時刻ｔ(n)に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(3)を用いて、更新規則により、トルクマップＴＭ(2)を更新する。更新されたトルクマップＴＭ(3)において、制御時刻ｔ(n+6)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(2)で規定されていたトルクの値（「３０」）から「１０」下げた値（「２０」）に設定される。制御時刻ｔ(n+1)、ｔ(n+2)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(2)で規定されていたトルクの値（制御時刻ｔ(n+1)は「７０」、制御時刻ｔ(n+2)は「６０」）から「１０」上げた値（制御時刻ｔ(n+1)は「８０」、制御時刻ｔ(n+2)は「７０」）に設定される。制御時刻ｔ(n+3)からｔ(n+5)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(2)で規定されていたトルクの値（「５０」）で維持される。制御時刻ｔ(n)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(2)で規定されていたトルクの値（「５５」）に確定される。
【０１０６】
トルクキャリブレーションの４回目のサイクルでは、トルクマップＴＭ(3)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(4)が発生される。脱調フラグマップＦＭ(4)において、制御時刻ｔ(n+1)、ｔ(n+2)各々に対応するセルにフラグ「０」、制御時刻ｔ(n+3)、ｔ(n+4)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n+5)、ｔ(n+6)各々に対応するセルにフラグ「１＋」、制御時刻ｔ(n)に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(4)を用いて、更新規則により、トルクマップＴＭ(3)を更新する。更新されたトルクマップＴＭ(4)において、前回サイクルではフラグ「０」の制御時刻ｔ(n+1)、ｔ(n+2)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(3)で規定されていたトルクの値（制御時刻ｔ(n+1)は「８０」、制御時刻ｔ(n+2)は「７０」）にマージン（「５」）を加算した値（制御時刻ｔ(n+1)は「８５」、制御時刻ｔ(n+2)は「７５」）に設定される。
【０１０７】
トルク不足により脱調が発生したことを表すフラグ「１−」の制御時刻ｔ(n+3)、ｔ(n+4)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(3)で規定されていたトルクの値（「５０」）から「１０」を増加させた値（「６０」）に設定される。
【０１０８】
トルク不足以外の原因で脱調が発生したことを表すフラグ「１＋」の制御時刻ｔ(n+5)、ｔ(n+6)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(3)で規定されていたトルクの値（制御時刻ｔ(n+5)は「５０」、制御時刻ｔ(n+6)は「２０」）で維持される。
【０１０９】
トルクキャリブレーションの５回目のサイクルでは、トルクマップＴＭ(4)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(5)が発生される。脱調フラグマップＦＭ(5)において、制御時刻ｔ(n+3)、ｔ(n+4)各々に対応するセルにフラグ「０」、制御時刻ｔ(n+5)、ｔ(n+6)各々に対応するセルにフラグ「１−」、制御時刻ｔ(n)からｔ(n+2)各々に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(5)を用いて、更新規則により、トルクマップＴＭ(4)を更新する。
【０１１０】
初めて脱調が発生しなかった制御時刻ｔ(n+3)、ｔ(n+4)各々に対応するトルクの値は、その脱調しなかったトルクの値（「６０」）にマージン（「５」）を加算した値（「６５」）に設定される。
【０１１１】
トルク維持を連続させた後、初めて脱調が発生した制御時刻ｔ(n+5)では、トルク値は、脱調発生したトルク値（「５０」）に増分量「１０」を増加させた値（「６０」）に設定される。
【０１１２】
脱調が発生していない状態が連続した後にトルク不足以外の原因で脱調が発生した制御時刻ｔ(n+6)に対応するトルクの値は、その時点のトルクマップＴＭ(4)のトルク値（「２０」）に増分量とマージンとの（「１５」）を増加させたトルク値（「３５」）に設定される。
【０１１３】
トルクキャリブレーションの６回目のサイクルでは、トルクマップＴＭ(5)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(6)が発生される。脱調フラグマップＦＭ(6)において、制御時刻ｔ(n+5)に対応するセルにフラグ「０」、制御時刻ｔ(n)〜ｔ(n+4)、ｔ(n+6)各々に対応するセルにフラグ「２」がそれぞれセットされている。トルクマップ更新部１０９は、脱調フラグマップＦＭ(6)を用いて、更新規則により、トルクマップＴＭ(5)を更新する。更新されたトルクマップＴＭ(6)において、制御時刻ｔ(n+5)に対応するトルクの値は、タスクに使用したトルクマップＴＭ(5)で規定されていたトルクの値（「６０」）にマージン（「５」）を加算した値（「６５」）に設定される。制御時刻ｔ(n+3)、ｔ(n+4)、ｔ(n+6)各々に対応するトルクの値は、タスクに使用したトルクマップＴＭ(4)で規定されていたトルクの値（制御時刻ｔ(n+3)、ｔ(n+4)は「６５」、制御時刻ｔ(n+6)は「３５」）に確定される。
【０１１４】
トルクキャリブレーションの７回目のサイクルでは、更新されたトルクマップＴＭ(6)を用いてタスクが実行され、そのタスク中に発生された脱調検知信号に基づいて脱調フラグマップＦＭ(7)が発生される。脱調フラグマップＦＭ(7)において、すべてのセルにフラグ「２」がセットされる。脱調フラグマップＦＭ(7)は、図１０の工程Ｓ６のトルクキャリブレーションの終了条件を満たす。そのため、トルクキャリブレーションは７回目のサイクルで終了され、トルクマップＴＭ(6)がトルクマップ記憶部１０８に記憶される。
【０１１５】
以上説明した本実施形態に係るロボット装置は、トルクマップを事前に決定するためのトルクキャリブレーション機能を備える。トルクマップは、タスクが開始されてから終了されるまでの、関節部Ｊ１―Ｊ６各々のステッピングモータに発生させるトルクの値の制御周期Δｔ毎の時間変化を規定する。タスクプログラムが起動されると、タスクコントローラ１０６は、トルクマップを参照してトルク指令を決定し、決定したトルク指令を、位置指令とともに、制御周期Δｔ毎にドライバユニット２１０−２６０各々に対して供給する。ドライバユニット２１０−２６０各々の制御部は、トルク指令と位置指令とに従って、ステッピングモータ２１０−２６０各々を制御する。これにより、関節部Ｊ１−Ｊ６各々のステッピングモータは、指示されたトルクで指示された関節角度まで回転され、ロボット装置は、タスクプログラムで規定されている作業を実行することができる。
【０１１６】
本実施形態に係るロボット装置のトルクキャリブレーション処理は、ロボット装置に実際のタスクを実行させ、制御周期Δｔ毎の関節部Ｊ１−Ｊ６各々のステッピングモータの脱調状態に基づいて、タスクに使用したトルクマップを更新する処理を繰り返し行う処理である。基本的なトルクの値の更新規則としては、実際のタスクを実行させた結果、ステッピングモータが脱調していればトルクの値を上げ、ステッピングモータが脱調していないのであればトルクの値を下げる。また、１サイクル前のタスクでステッピングモータが脱調し、それにより増加させたトルクで実行した現在のタスクでステッピングモータが脱調しなければ、トルクの値は、現在のタスクで使用したトルクの値に確定される。同様に、１サイクル前のタスクでステッピングモータが脱調せず、現在のタスクでステッピングモータが脱調すれば、トルクの値は１サイクル前のタスクで使用したトルクの値に決定される。
【０１１７】
以上説明した、トルクキャリブレーション処理によれば、トルクマップで規定されているトルクの値を、実際のタスク実行中にステッピングモータ３１０−３６０各々が脱調しないために必要な最低限の値に漸近させた値に決定することができる。これにより、トルク不足が原因で予定したタスクタイムを達成できなくなったり、ワークを取り落としてしまうリスクを回避し、さらに、作業者がロボットアーム機構に接触するとすぐに脱調する状態であるため、ロボット装置を稼働する安全性を確保することができる。
【０１１８】
なお、実際のタスクを実行させる際、実際に使用するワークを用いることで、上述のリスクをより回避することができ、さらに、ロボット装置を稼働する安全性を確保することができる。
【０１１９】
また、ワークの重量はバラつく場合や、経年劣化等の理由により、想定したトルクが発生しない場合がある。そのため、トルクの値を確定する際に、マージンαを加算するようにしてもよい。
【０１２０】
本実施形態に係るロボット装置が備えるトルクキャリブレーション処理は、本番のタスク開始前の準備作業としてだけでなく、本番でタスクと並行して行われてもよい。本番時のトルクキャリブレーション処理では、脱調フラグマップ発生部１０７により、複数のフラグから確定フラグが選択されないように制限されている。これにより、図１０のトルクキャリブレーション処理は、本番のタスクが開始されてから終了されるまで、繰り返し行われる。例えば、準備時では、繰り返し処理数を少なくしてトルクキャリブレーション処理を行ってもよい。また、本番時のトルクキャリブレーション処理の初期条件において、減少量と増分量とが準備時よりも少なく設定されていてもよい。例えば、準備時では、減少量と増分量とを例えば「１０」に設定してトルクキャリブレーション処理を行い、本番時では、減少量と増分量とを例えば「１」に設定してトルクキャリブレーション処理を行ってもよい。これらにより、準備時にステッピングモータ３１０−３６０各々が脱調しないための大まかなトルクの値を決めておき、本番時に、準備時に決めたトルクの値をステッピングモータ３１０−３６０各々が脱調しない最低のトルクの値に漸近させることができ、準備時間を短縮することができる。
【０１２１】
また、本番のタスクと並行してトルクキャリブレーション処理が実行できることで、本番時に使用するワークが、準備時に想定していたワークから変更された場合や、本番のタスク実行中に、ワークが変更された場合、さらに質量にばらつきのあるワークを処理するときに、トルクの値を本番のタスク実行中に動的に変更することができる。これにより、本番のタスクを中断することなく、また、タスクを中断して準備作業を再度行う煩雑さを解消し、それによるダウンタイムを解消させることができる。
【０１２２】
さらに、トルクキャリブレーション処理を行う区間を、タスクの一部区間に制限してもよい。例えば、トルクキャリブレーション処理を、ロボット装置が作業員と協働して作業を行う区間に制限することで、ロボット装置は、その区間で過度なトルクで動作しない。作業員がアーム等に接触した場合でも、接触してすぐにステッピングモータが脱調するため、作業員の安全性を確保することができる。
【０１２３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１２４】
５０…操作部、６０…表示部、１００…制御装置、１０１…システム制御部、１０２…操作部Ｉ／Ｆ、１０３…表示制御部、１０４…ドライバユニットＩ／Ｆ、１０５…タスクプログラム記憶部、１０６…タスクコントローラ、１０７…脱調フラグマップ発生部、１０８…トルクマップ記憶部、１０９…トルクマップ更新部、１１０…トルクキャリブレーションコントローラ、１２０…制御／データバス、２１０〜２６０…ドライバユニット、２１１…制御部、２１２…電源回路、２１３…パルス信号発生部、２１５…エンコーダ、２１６…カウンタ、２１７…脱調判定部、３１０〜３６０…ステッピングモータ。
【図１】
2018149605.tif 000003
【図２】
2018149605.tif 000004
【図３】
2018149605.tif 000005
【図４】
2018149605.tif 000006
【図５】
2018149605.tif 000007
【図６】
2018149605.tif 000008
【図７】
2018149605.tif 000009
【図８】
2018149605.tif 000010
【図９】
2018149605.tif 000011
【図１０】
2018149605.tif 000012
【図１１】
2018149605.tif 000013
【図１２】
2018149605.tif 000014
【図１３】
2018149605.tif 000015