ロボットの減速機をひも解く(1/4) ―― 関節の中身と、0.009次の罠

  • python
  • ロボット
  • メカトロニクス
  • 予知保全
  • 信号処理

アームから関節、減速機、転動体1個まで潜っていくアニメーション
ロボットの腕を外から内へ、アーム、関節、減速機、転動体1個の順にズームしていきます。隅の数字はその段の部品の「次数」で、最後だけ1.991という中途半端な値になります。

ロボットの腕は、外から見ればただの棒です。けれど関節の中には減速機があり、減速機の中には歯車があり、歯車を支える軸受があり、軸受の中には転動体が並んでいます。入れ子になった、数えられる部品の集まりです。

上のアニメーションは、その入れ子を順に潜ったものです。隅に出ている数字は、その段の部品の次数。軸が1回転する間に、その部品が何回なにかを起こすかという数です。外から内へ潜ると、こう並びます。

入力軸そのもの        1.000
波動発生器の楕円      2.000
保持器の公転          0.382
転動体1個の自転       1.991

きりが悪いのは最後だけです。これは測定誤差でも丸めでもありません。転動体の自転は、原理的に整数になれないのです。歯車の歯は数えられるので必ず整数回鳴りますが、転がり軸受の転動体は、転がりながらわずかに滑ります。そしてこの整数になれないという性質が、機械を分解せずにどの部品が傷んでいるかを見分けるための、ほとんど唯一の手がかりになります。

ただし、4つの数字をもう一度見ると、1.991と2.000が隣に立っています。片方は転動体の傷とともに立ち上がる成分、もう片方は部品が楕円だという構造の印で、新品でも必ず出ます。現場での意味は正反対なのに、次数の軸の上では0.009しか離れていない。この0.009が、この連載の主題です。

以前、多関節ロボットの回で、まっすぐ動かしたいだけの腕が自分を放り出す話を書きました。あのときは関節を剛体とみなして素通りしました。今回はその中身を、4回に分けて開けます。第1回は、関節になぜその部品が要るのかと、構造が信号にどんな周期を残すか。第2回は、それをどう覗くか。第3回は、測る前の予測が公開データの上で当たるかどうか。第4回は、どこまで言えて、どこから言えないか。

連載全体の狙いをひとことで言うと、実機が壊れるのを待たずに、異常検知の仕組みを設計して検証できるか、です。予知保全ができます、とまでは言えません。その設計と検証までなら故障を待たずにできる、というところを、公開データで確かめながら進みます。

私は特定の製品を分解したわけでも、実測したわけでもありません。扱うのは一般的な機構の物理で、数値はすべて代表値、後半で使う計測データも大学や学会が公開している研究用データセットに限っています。メーカーが推奨する保全を置き換えられるとは考えていません。私にできるのは、それを使う側で信号を処理して、手がかりを少し増やすところまでです。実際の交換判断では取扱説明書とメーカーの保全指示が優先で、この記事の数字がそれを上書きすることはありません。

減速機は、トルクだけの部品ではない

代表的な中型の多関節ロボットを想定します。可搬質量20kg、リーチ1.5m、関節速度は毎秒180度、つまり毎分30回転。繰返し位置決めは±0.05mm級です。肩の関節が支えるトルクは、先端の荷重だけでも 20kg × 9.81m/s² × 1.5m で、およそ294N·mになります。腕自身の重さと加速分を足せばさらに増えますが、ここではこの数字を目安にします。

一方のACサーボモータは、高速で低トルクの機械です。1kW級で定格4N·m、定格回転数は毎分3000回転というあたりが相場で、294N·mには遠く届きません。そこで減速比 i を入れます。減速機の関係式は三つしかありません。

トルク:  τ_out = i × τ_motor × η          η は効率
速度:    ω_out = ω_motor / i
慣性:    J_reflected = J_load / i²        モータから見た負荷慣性

i = 100 を入れてみます。トルクは 4N·m × 100 × 0.8 で320N·m。届きます。速度は毎分3000回転を100で割って毎分30回転。要求の関節速度とぴったり一致します。100という減速比は恣意的な数字ではありません。サーボモータの定格回転数とロボットの関節が使う速度が、もともと100倍ずれています。その差を埋めるのが減速機の仕事です。

ただ、本当の理由はトルクよりも慣性の側にあります。先端の20kgを1.5m先の質点とみなすと、関節から見た慣性は45kg·m²。1kW級モータのロータ慣性は0.0003kg·m²ほどなので、直結すると慣性比は15万倍になります。モータが自分の15万倍の慣性を自分のロータだけで振り回すことになり、制御対象として成立しません。i = 100 の減速機を挟むと、モータから見た負荷慣性は i² で割られて0.0045kg·m²、慣性比は15。15万倍が15倍に、4桁縮みます。

減速比に対する必要トルクと換算慣性比の変化
減速比 i を振ったときの必要モータトルクと換算慣性比。必要トルクが100分の1になる間に、慣性比は1万分の1になります。両対数で見ると、傾きの違う2本の線です。

減速機はトルクを増やす部品として説明されることが多く、それは正しいのですが、私はそれで半分だと思っています。減速機は制御できる慣性比を作る部品でもあり、しかもそちらは i ではなく i² で効きます。

減速機と一緒に入ってくる部品

減速機を入れた瞬間、他の部品が芋づる式に必要になります。内部で歯車やカムやピンが回るには低摩擦の支持が要るので、転がり軸受が入ります。ここで軸受が信号に混ざり込みます。位置を閉ループで制御するためにエンコーダが要ります。ただしエンコーダは、普通はモータ側にしか付きません。これが後で効いてきます。そして減速機は基本的に自己保持しないので、停電時に腕が落ちないよう、無励磁で作動する保持ブレーキが要ります。

もうひとつ、式から出てくる話があります。大きな多関節ロボットでは、根元側と手首側で違う形式の減速機が使われます。根元側は腕全体と可搬質量を支えるので、トルクと剛性が要り、多少重くても他の軸の負担にはなりません。手首側は逆で、そこに置いた質量はそのまま根元側の軸の負荷になるため、軽さが最優先です。だから根元には剛性の高い偏心揺動形(サイクロイド式)、手首には1段で高い比が出て軽い波動歯車装置、という使い分けになります。手首の減速機を軽くすることが、肩のモータを小さくします。部品の選定が、他の軸の要求を通じて連鎖しています。

この二つの形式の中を、順に開けてみます。この連載で追いたいのは、どう動くかよりも、その構造がどんな周期を信号に残すかのほうです。

波動歯車装置 ―― 2という構造の印

部品は三つです。楕円形のカムに薄肉の軸受をはめた波動発生器が入力。薄肉のカップ状で、外周に歯を200枚持つ可撓性外歯車。剛体のリングで、内周に歯を202枚持つ剛性内歯車。歯数差は2枚です。剛性内歯車を固定して波動発生器を回すと、可撓性外歯車は1回転あたり歯2枚分だけ逆に進みます。

i = − Z_f / (Z_c − Z_f) = − 200 / 2 = − 100     負号は逆回転

1段でこの比が出るのがこの機構の強みで、だから軽く、手首に向きます。

波動歯車装置の動作アニメーション
波動発生器が1回転する間の様子。塗った1枚の歯を追うと、可撓性外歯車が歯2枚分だけ逆に進みます。そして噛み合っている場所は、常に2箇所あります。

バックラッシュがほとんど無いのもこの機構の看板です。楕円の長軸側で多数の歯が同時に噛み、弾性変形で予圧が掛かっているので、歯が遊ぶ隙間が構造的にありません。代償もあります。可撓性外歯車は名前の通りわざと撓ませて使うので、ねじり剛性は有限で、小さいトルクの領域では特に柔らかく、ヒステリシスも残ります。

波動発生器は楕円なので、1回転の間に歯は2箇所で噛みます。だから入力軸の2次成分は、この機構である限り必ず信号に現れます。故障ではなく、構造です。

偏心揺動形 ―― 部品の数だけ周期が増える

入力軸には偏心カムが付いています。外形がサイクロイド曲線になった板がカムの上に載り、首を振るように揺動しながら、外周でピン輪の内側を転がります。板のローブの数はピンより1つ少なく、ピン輪を固定して偏心軸を回すと、入力1回転あたり板はローブ1つ分だけ逆向きに進みます。実機では平歯車の前段を足した2段構成で総減速比を稼ぎ、板を2枚、180度ずらして入れて偏心の振れを打ち消します。

偏心揺動形減速機の動作アニメーション
偏心カムの速い揺動と、サイクロイド板のゆっくりした後退を分けて見せています。板に接するピンは、入力1回転で一巡します。これが後で出てくるピン通過の次数の出どころです。

強みは、荷重が多数のピンに同時に分散することです。剛性が高く、衝撃に強くなります。だから根元側に向きます。代償は部品点数の多さで、そして部品点数が多いということは、信号に現れる周期の種類が多いということでもあります。

構造が、次数を決める

ここまで周波数ではなく、次数で数えてきました。周波数で数えないのは、ロボットが動作ごとに速度を変える機械だからです。速度が変われば周波数は動きます。でも次数は動きません。構造が決めているからです。

そして各要素の次数は、性格がきれいに分かれます。歯車は歯が数えられるので、噛み合いは自分の軸の上で必ず整数次になります。波動発生器の楕円は2次、ピンの通過はピンの本数の次数。ところが転がり軸受だけは違います。転動体は転がりながらわずかに滑るので、保持器の公転は幾何で決まる非整数の比になります。外輪の傷を転動体が踏む次数(BPFO)と、内輪の傷の側(BPFI)は、幾何だけでこう決まります。

BPFO = (n/2) × (1 − (d/D)·cosα)
BPFI = (n/2) × (1 + (d/D)·cosα)

n: 転動体の数   d: 転動体径   D: ピッチ円径   α: 接触角

(d/D)·cosα は0.2から0.4あたりの中途半端な値になるので、BPFOもBPFIも整数にはなりません。だから、最初の切り分けはこうなります。部品が載っている軸を基準に数えて、整数次にピークが立てば歯車系、非整数次に立てば軸受系。

これは、測る前に計算できます。実データを1バイトも見ずに、この機械にはこの次数とこの次数があるはずで、それ以外に立つものは何かおかしい、という探索の地図が作れるということです。

地図の中に、罠があった

実際に計算してみます。歯200と202、ピン40本、支持軸受は転動体8個で直径比0.237。入力軸を基準にした次数は、これだけの情報から全部出ます。

由来 入力軸基準の次数
保持器の公転(FTF) 0.382
転動体の自転(BSF) 1.991
波動発生器の楕円 2.000
外輪の傷(BPFO) 3.052
転動体の傷(2×BSF) 3.982
内輪の傷(BPFI) 4.948
ピン通過 40.000
歯の噛み合い 200.000

特性次数の地図と、観測回転数を増やすと山が2本に割れる拡大図
歯数・ピン数・転動体数から計算した特性次数の地図。実データはまだひとつも使っていません。拡大部は2.000の近くで、観測する回転数を十分に増やしたとき、1つに見えていた山が2本に割れたところです。

この表の上から2番目と3番目に、冒頭の数字が並んでいます。転動体の自転が1.991、波動発生器の楕円が2.000。差は0.009しかありません。転動体が傷んだときの主線は2倍の3.982次に出ることが多いのですが、自転の1.991次も一緒に持ち上がります。

さきほど、軸受は非整数次だから歯車系と区別できると書きました。間違ってはいないのですが、計算してみて気づきました。非整数であることと、離れていることは、まったく別の話でした。

由来が正反対のこの2本が、分解能が足りなければ1つの山になり、しかも頂点は2.00のすぐ近くに立ちます。つまり、こう読めてしまいます。入力2次、波動発生器の構造由来、新品でも出るものだから、無視してよい。転動体が傷んでいたのに、です。

この2本を分けるには何が要るのか。それは第2回で数えます。数えてみると、答えは測り方の話にとどまらず、ロボットという機械の使われ方そのものに波及します。

新品でも出るものには、初期値がある

第1回を閉じる前に、故障と紛らわしいものを三つだけ並べておきます。どれも新品の減速機にあるものです。

角度伝達誤差。出力の角度が理想の値からずれる量で、入力角の決まった関数として周期的に現れます。1回転すれば必ず元に戻り、正味のずれは残りません。ロストモーション。荷重の向きを反転したときのヒステリシスで、わずかな隙間と弾性の合成です。ねじり剛性。有限で、腕の慣性と組み合わさって共振を作り、制御帯域の上限を決めます。

三つとも、劣化のしるしではなく、初期値があります。異常検知で見ているのは、この初期値からの変化です。新品のときに何がどれだけ出ているかを知らなければ、変化は測れないからです。

ここまでの地図と、次回

ここまでで、測る前に作れる地図が手に入りました。歯数、ピン数、転動体の数という数えられる量が、そのまま次数の地図になる。整数次は歯車系、非整数次は軸受系。そして地図の中には、0.009差で隣り合う2本がありました。

なお、この記事の次数は本文に直書きしていません。歯数やピン数や直径比といった入力を一枚の表にまとめ、図も数値もすべてそこから計算で出しています。入力をひとつ変えると、図と数値と、それらを縛る31本の検算がいっせいに動きます。この作りは連載を通して同じです。

次回は、この地図を持って、実際の信号をどう覗くかです。異常は位置に出るのか、電流に出るのか。速度が変わり続ける機械をどう数えるのか。そして0.009を分けるための条件を数えたとき、ロボットの意外な急所が見えてきます。

コード

この連載の図と数値は、すべて次のリポジトリから生成しています。

https://github.com/logicia32/reducer-health-labhttps://github.com/logicia32/reducer-health-lab

この記事は Zenn に初出したものを加筆・補足したものです ── Zenn の元記事を見る