「11kg」と書いてあったサーボが、100gを持ち上げられなかった
MG996R を2個買って、アルミアングルで30cmのアームを組んだ。18cmの上腕に12cmの前腕、先端に100gほどの小箱。電源を入れて指令を送ると、根元のサーボが唸って、腕は水平からわずかに上がったところで止まった。
カタログには「11kg」と書いてある。100g に負けるわけがない——そう思ったのが間違いだった。この「11kg」は 11 kgf·cm、つまり軸から1cmのところで 11 kgf を出せるという意味だ。30cm 先で見れば単純に割って 11/30 ≒ 0.37 kgf、370g ぶんしか残らない。しかもアーム自身の重さが先に食っている。
さらに悪いことに、11 kgf·cm は**ストールトルク(拘束トルク)**だ。軸を止めた状態でようやく出る最大値であって、連続的に出せる値ではない。
このツールの既定値は、そのときの構成をそのまま入れてある。2関節30cm・ペイロード100g・MG996R 6.0V。返ってくる答えは必要トルク 9.39 kgf·cm、ストールトルクに対する使用率 85.3%、判定は「余裕なし」。買う前に1分だけ入力していれば済んだ話だった。
なぜ作ったのか — カタログトルクは3重に読み違えられる
このツールの出発点は、ホビーサーボのカタログトルクが3つの意味で誤読されるという点にある。しかも3つとも同時に効くので、掛け合わさると答えが1桁ずれる。
(a) 単位を質量だと思ってしまう。 「20kgサーボ」の 20 は 20 kgf·cm であって、20kg を持ち上げられるという意味ではない。単位の中に cm という長さが埋まっているので、腕の長さを変えれば持てる質量は変わる。1cm で 20 kgf、10cm なら 2 kgf、30cm なら 0.67 kgf。ここを飛ばすと、リーチの長いアームで必ず事故が起きる。
(b) 電圧が書かれていない。 同じ MG996R でも、TowerPro の公式製品ページの値は 4.8V で 9.4 kgf·cm、6.0V で 11.0 kgf·cm だ。通販ページやまとめ記事は「11kg」とだけ書くことが多く、5V電源で使う人が 11.0 のつもりで選定してしまう。実際に出るのは 9.4 のほうに近い。
(c) ストールトルクを連続トルクだと思ってしまう。 公表値は軸を拘束した状態の最大値だ。その状態のサーボは大電流を引き続け、発熱してギヤと基板を傷める。連続使用の目安は 1/3 程度で、ここは仕様書に書かれない。
そしてこの3点を潰すには、照合するサーボの値そのものが正確でなければならない。だから収録した10エントリを、全部メーカーの一次資料(公式製品ページか公式データシートPDF)に当たり直した。結果、二次まとめサイトと食い違うものが実際に出てきた。
- DS3218 の5V側は 18 kg-cm。 DSServo の公式データシートは 5V で 18、6.8V で 21.5 と書いている。servodatabase や複数の販売店が揃って書く「19 kg/cm (5V)」はメーカーの規格書に一致しない(6.8V の 21.5 は一致していた)。
- MG90S の高電圧側は 6.0V ではなく 6.6V。 TowerPro の MG90S 製品ページは「Stall torque: 1.8kg/cm (4.8V); 2.2kg/cm (6.6V)」と明記している。広く出回る「2.2 kg·cm @ 6V」は誤りだ。
- Futaba S3003 の「4.1 kg-cm @ 6.0V」はメーカー資料に存在しない。 Futaba の公式データシートに載っているのは 4.8V の 3.2 kg-cm だけ。だから 4.8V の1エントリしか収録していない。
10件のうち3件で一次資料と二次情報が食い違った。「20kg」という表記の読み違えを直すツールが、その参照値を孫引きで固めていては本末転倒だ。だから電圧を含んだ形(型番×電圧)でキーを持ち、選択肢のラベルにも電圧を必ず入れる設計にした。ROBOTIS の Dynamixel AX-12A のように公表単位が最初から N·m の機種もあるので、そこも「カタログは 1.5 N·m、kgf·cm 換算は本ツールの係数によるもの」と分けて扱っている。
サーボ トルク 計算 とは — 売られているのは力ではなく「力×距離」
トルク とは — ドアノブを押す位置で重さが変わる
ドアを開けるとき、ノブの側を押せば軽い。蝶番の近くを押すと、同じ力ではびくとも動かない。指が出している力は同じなのに結果が違うのは、回転のしにくさを決めているのが力そのものではなく、力 × 回転軸からの距離だからだ。この積がトルクで、単位は N·m(ニュートンメートル)。定義そのものはWikipediaの「トルク」が詳しい。
ロボットアームの関節は、まさにこの蝶番だ。先端に載せた100g は、関節から10cm のところにあれば 0.1 kg × 9.80665 m/s² × 0.10 m ≒ 0.098 N·m、30cm なら 0.294 N·m の負担になる。質量は変わっていないのに、距離だけで3倍だ。
kgf・cm N・m 換算 — 単位のなかに長さが埋まっている
ホビーサーボの世界では N·m ではなく kgf·cm が使われる。1 kgf·cm は「軸から1cmのところで 1 kgf(約9.8N)を出せる」という意味で、これは「10cm のところで 0.1 kgf」とまったく同じ量だ。単位の中に長さが入っているから、腕の長さを変えると持てる質量が変わる。ここが「20kg サーボなのに 500g が持てない」の正体になる。
換算は 1 kgf = 9.80665 N と 1 cm = 0.01 m の2つだけで出る。
1 kgf·cm = 9.80665 N × 0.01 m = 0.0980665 N·m
1 N·m = 1 / 0.0980665 = 10.19716213 kgf·cm
本ツールは内部を全部 N·m(SI)で計算し、表示の直前に 10.19716213 を掛けて kgf·cm を併記している。丸めた 10.1972 を使うと、極端な入力(上限側で 290万 kgf·cm まで振れる)で桁が読める領域に誤差が乗るので、係数のほうを厳密値にしてある。
慣性モーメント 求め方 — 同じ質量でも遠いほど回しにくい
ここまでは「支える」話で、実際のアームは動き出す。静止から回し始めるぶんのトルクが別に要る。
バットを思い出してほしい。グリップを持って振ると重いが、先端側を持って短く構えると同じバットが軽く振れる。質量は1gも変わっていないのに、回しにくさが変わる。この「回しにくさ」が慣性モーメント J で、質量に距離の2乗を掛けた量として効く。距離が2倍なら4倍、3倍なら9倍だ。詳しい定義はWikipediaの「慣性モーメント」にある。
均一な棒を自分の重心まわりで回す場合は m·L²/12。回転軸を重心から距離 d だけずらすと、平行軸の定理で m·d² を足せばいい。
J = m·L²/12 + m·d² (平行軸の定理)
自リンク(軸が端= d = L/2)のとき:
J = m·L²/12 + m·L²/4 = (1/3)·m·L²
つまり「棒の端まわりは (1/3)mL²」という教科書の公式は、平行軸の定理の特別な場合にすぎない。本ツールは先端側の全リンクを同じ式で扱うので、自リンクだけでなく2本先・3本先のリンクにも同じ計算が使える(この一般形が必要な理由は §8 で数字とともに書く)。
回し始めに必要なトルクは、この J と角加速度 α の積だ。角加速度は「目標角速度に達するまでの速度の変化率」で、度からラジアンに直して加速時間で割る。
α[rad/s²] = (ω[°/s] × π/180) / t[s]
T_a[N·m] = J × α
90°/s を 0.3秒で立ち上げるなら α = 5.24 rad/s²。同じ 90°/s でも 0.01秒で立ち上げれば α は30倍になる。加速トルクは加速時間に反比例する——この一言が、後で「軽量化より加速時間を延ばすほうが効く」という結論に効いてくる。
トルクが足りないアームは「動かない」だけでは済まない
トルク不足の症状は、静かに壊れる方向に進む。
そもそも持ち上がらない。 これは一番マシなケースで、少なくとも被害はない。
持ち上がるがギヤが欠ける。 SG90 のような樹脂(POM)ギヤは、無理な負荷で最終段の歯が飛ぶ。飛んだあとは、電源を入れると軸が空回りしてピクリとも角度が変わらない。分解すると欠けた歯の破片が出てくる。金属ギヤ機(MG90S・MG996R・DS3218)は歯が飛ぶ代わりに軸受けとポテンショメータが先に痛む。
電源が落ちるか、サーボが焼ける。 ストール状態のサーボは大電流を引く。MG996R で 1A 以上、DS3218 では 2.2A に達する。USB のバスパワーや小容量の DC アダプタでは電圧が落ち、電圧が落ちればカタログトルクは出ない。トルク不足→ストール→電圧降下→さらにトルク不足、という悪循環に入る。マイコンごとリセットが掛かって「原因不明の再起動」に見えることもある。
樹脂ホーンのスプラインが舐める。 サーボ本体が無事でも、出力軸とホーンの噛み合いが先に負ける。ネジを締め直しても角度がずれ続けるようになったら、これを疑う。
そして設計側で効いてくるのが、必要トルクはリーチにほぼ比例するという性質だ。同じペイロード・同じ構成でアームを1.5倍に伸ばせば、必要トルクもおおむね1.5倍になる。逆に言えば、トルクが足りないときに一番効く手はリンクを短くすることで、これは軽量化より効く場合が多い。
もうひとつ、関節を増やしたときの効き方も直感に反する。第2・第3関節のサーボ自身の質量が、根元関節にとってはペイロードとして効く。手首側に 60g のサーボを1個足しただけで、それが根元から40cm の位置にあれば 0.06 × 9.80665 × 0.40 ≒ 0.235 N·m、2.4 kgf·cm ぶんが根元に上乗せされる。3関節構成で根元だけ極端に苦しくなるのはこのためだ(§7 の3関節ケースで内訳を数字で見てほしい)。
ロボコンや課題製作で「組んだけど動かない」の相当な割合がここにある。しかもトルク不足が判明した時点で打てる手は、サーボの交換かフレームの作り直し。3Dプリントしたリンクを短く作り直すには、印刷からやり直しになる。選定は買う前・切る前・印刷する前に済ませておくのがいちばん安い。
サーボを買う前・切る前・組む前の4場面
Arduino・ラズパイでロボットアームを初めて組むとき。 「SG90 と MG996R のどっちを何個買えばいいのか」に答えが要る場面。アームの長さと持たせたい物の重さだけ決まっていれば、必要トルクは先に出る。買ってから足りないと分かるのが一番高くつく。
3Dプリンタでアームを設計しているとき。 リンク長を何cm まで伸ばせるかを逆算できる。長さを変えて再計算すれば、必要トルクがどこでサーボの許容を超えるかが見える。印刷前に決着させれば、フィラメントも時間も無駄にならない。
手持ちのサーボで何ができるかを調べたいとき。 「SG90 が10個ある」「MG996R が2個余っている」という状況から、そのサーボで成立する構成を逆に探せる。ペイロードとリンク長を動かして、使用率が33%以下に収まる組み合わせを見つければいい。
ロボコンで「動かない」の原因を切り分けるとき。 トルク不足なのか速度不足なのかは、症状が似ていて区別しづらい。使用率と、無負荷最高速に対する目標速度の割合が別々に出るので、どちらで詰まっているかが分かれる。片方だけの問題なら、対策も片方だけで済む。
使い方は3ステップ — 構成・動かし方・照合
ステップ1: アームの構成を入れる。 関節数を1〜3から選び、リンクごとに長さと自重を入力する。自重にはその先に付くサーボやブラケットの重さも含める(重心はリンクの中央と仮定して計算している)。最後に先端で持ち上げるペイロードの質量を入れる。ペイロード0も正当な入力で、その場合はアームの自重を支えるだけで必要なトルクが出る。ゼロから入力するのが面倒なら、構成プリセット4件(1関節グリッパー/2関節30cm/3関節45cm/ベルト減速1:5の40cm)のどれかを選ぶと、寸法・運動条件・照合サーボまでまとめて入る。
ステップ2: 動かし方と駆動方式を決める。 目標角速度と、静止からその速度に達するまでの加速時間、安全率の3つ。安全率は摩擦や組立誤差を吸収する係数で、1.5 が出発点になる。サーボを関節に直結するのか、外部にベルトや歯車を挟むのかを選び、挟む場合だけ減速比と伝達効率を入力する(サーボ内部のギヤ比はカタログトルクに織り込み済みなので、ここには入れない)。
ステップ3: 必要トルクと使用率を読む。 最大必要トルクが kgf·cm と N·m の両方で表示される。照合するサーボを選べば、そのストールトルクに対する使用率と4段階の判定(余裕あり/間欠使用なら可/余裕なし/トルク不足)が出る。関節が2つ以上あれば関節ごとの内訳も並ぶので、どの関節が効いているかが分かる。足りなければ、ペイロード・リンク長・減速比・サーボの4つのどれかを動かして再計算すればいい。
使用例7ケース — 数字が判定を変える瞬間
以下はすべて実装した計算エンジンに同じ入力を与えて得た値で、記事のために手で作った数字ではない。
ケース1: 2関節30cm・MG996R 6.0V — 動機そのものの構成
入力: 2関節、リンク1が180mm/120g、リンク2が120mm/60g、ペイロード100g、90°/s を 0.3秒で立ち上げ、安全率1.5、サーボ直結、MG996R 6.0V。
結果: リーチ300mm、根元関節の保持トルク 0.541 N·m、慣性モーメント 0.0138 kg·m²、α = 5.24 rad/s²、加速トルク 0.0724 N·m。必要トルクは 0.9206 N·m = 9.39 kgf·cm。第2関節は 2.48 kgf·cm。加速ぶんの割合は 11.8%。MG996R の 6.0V ストールトルク 11.0 kgf·cm に対して使用率 85.3%、余裕は 1.61 kgf·cm、判定は「余裕なし」。
解釈: カタログ 11.0 に対して 9.39 なので「入っている」ように見えるが、ストールトルクの85%は動かせる領域ではない。電源の電圧降下と摩擦で簡単に足りなくなる。連続使用の目安 1/3 に収めたければ、必要トルクを 3.6 kgf·cm 以下にするか、減速機を入れるしかない。
ケース2: 1関節6cmグリッパー・SG90 — 同じサーボでも腕次第
入力: 1関節、リンク60mm/15g、ペイロード20g、120°/s を 0.2秒、安全率1.5、直結、SG90 4.8V。
結果: 保持トルク 0.0162 N·m、J = 9.00e-5 kg·m²、必要トルク 0.26 kgf·cm。SG90 の 1.8 kgf·cm に対して使用率 14.6%、判定は「余裕あり(連続使用可)」。目標速度 120°/s は無負荷最高速 600°/s の 20%。
解釈: ケース1で全然足りなかったのと同じ土俵で、9g のマイクロサーボが余裕を持っている。違いは腕の長さと持つ物の重さだけだ。「サーボが弱い」のではなく「腕が長い」のが問題だという感覚は、この2ケースを並べると掴める。
ケース3: 3関節45cm・DS3218 6.8V — 20kg級でも根元は足りない
入力: 3関節、200mm/180g + 150mm/110g + 100mm/60g、ペイロード200g、60°/s を 0.4秒、安全率1.5、直結、DS3218 6.8V。
結果: 第1関節 26.78 kgf·cm、第2関節 11.17 kgf·cm、第3関節 3.54 kgf·cm。根元の J は 0.0611 kg·m²、加速ぶんの割合は 9.1%。DS3218 の 6.8V ストールトルク 21.5 kgf·cm に対して使用率 124.6%、5.28 kgf·cm 足りず、判定は「トルク不足」。
解釈: 手首から根元に向かって 3.54 → 11.17 → 26.78 と跳ね上がる。3.2倍、2.4倍という増え方は、リンク長の比だけでは説明できない。先端側のリンク自重(110g と 60g)が根元から見れば遠くにあるペイロードとして効いているからだ。「20kgサーボ」として売られている機種でも、45cm の3関節では根元が持たない。
ケース4: 同じ構成に 1:5 のベルト減速を入れる — 判定が2段変わる
入力(減速あり): 2関節、250mm/200g + 150mm/100g、ペイロード300g、45°/s を 0.5秒、安全率2.0、減速比5・伝達効率0.8、DS3218 6.8V。 入力(直結): 上とまったく同じで、駆動方式だけ「サーボ直結」に変更。
結果: 関節側の必要トルクはどちらも 37.52 kgf·cm で同一。ところがモータ軸換算は、減速ありで 37.52/(5×0.8) = 9.38 kgf·cm、直結では 37.52 kgf·cm のまま。使用率は 43.6%(間欠使用なら可)と 174.5%(トルク不足)に分かれる。
解釈: 変えたのは駆動方式の1項目だけで、関節に要るトルクは1ミリも変わっていない。それでも判定が2段変わるのは、サーボが出すべきなのは減速前のトルクだからだ。ベルト1段で持てなかった構成が持てるようになる。代わりに関節側の角速度は 1/5 になるので、45°/s を出すにはサーボ側で 225°/s 必要になる点は別途チェックが要る。
ケース5: 加速時間0.01秒 — 重力より動き出しが支配する
入力: 1関節、リンク300mm/200g、ペイロード200g、300°/s をわずか0.01秒で立ち上げ、安全率1.5、直結。
結果: α = 523.60 rad/s²、J = 0.0240 kg·m²、加速トルク 12.57 N·m。保持トルクは 0.883 N·m しかないので、加速ぶんが14倍。必要トルクは 20.17 N·m = 205.7 kgf·cm、加速ぶんの割合は 93.4%。
解釈: 同じアームでも動かし方だけで桁が変わる。ここまで来ると軽量化はほとんど効かない。加速トルクは加速時間に反比例するので、0.01秒を0.1秒にすれば加速ぶんは1/10になる。「重力支配」か「動特性支配」かで打つ手が正反対になるので、加速ぶんの割合はそれ自体を判定値として表示している。
ケース6: トルクは余っているのに速度が出ない
入力: 1関節、リンク60mm/15g、ペイロード20g、500°/s を0.5秒、安全率1.5、直結、SG90 4.8V。
結果: 必要トルク 0.27 kgf·cm、使用率 15.1% で判定は「余裕あり」。ところが目標の 500°/s は SG90 の無負荷最高速 600°/s の 83.3% にあたる。
解釈: トルクの判定と速度の判定は独立している。サーボは負荷が掛かるほど遅くなるので、無負荷値の8割という指令は実機では出ない。緑の判定を見て安心すると、組んでから「指令どおりの速度で動かない」に突き当たる。トルク側と速度側を別々に出しているのはこのためだ。
ケース7: Dynamixel AX-12A — カタログが N·m の機種と100%直前の境界
入力: 2関節、200mm/150g + 150mm/90g、ペイロード150g、60°/s を0.4秒、安全率1.5、直結、Dynamixel AX-12A 12V。
結果: 第1関節 1.4644 N·m = 14.93 kgf·cm、第2関節 4.55 kgf·cm、J = 0.0274 kg·m²、加速ぶん 7.3%。AX-12A のカタログは 1.5 N·m(12V・1.5A)なので kgf·cm に直すと 15.30。使用率 97.6%、余裕はわずか 0.36 kgf·cm、判定は「余裕なし」。
解釈: 使用率が100%を割っているので判定は「トルク不足」ではないが、余裕 0.36 kgf·cm は誤差の範囲だ。100%という線は「ここまでなら安全」の線ではなく「ここを超えたら確実にストールする」の線でしかない。この機種のようにカタログが最初から N·m で書かれている場合、kgf·cm 換算は本ツールの係数によるものである点も、そのまま表示している。
仕組み — 最悪姿勢を1つに固定して積算する
候補は2つあった
(A) ニュートン-オイラー法による多関節動力学。 各リンクの慣性テンソル、関節角、角速度・角加速度ベクトルを与えて、遠心力とコリオリ力を含む関節トルクを厳密に解く。産業用ロボットの制御設計はこの路線で、既存の解析ソルバもここに立っている。
(B) 水平伸展を最悪姿勢として固定し、静的保持トルク+加速トルクを積算する。
採ったのは (B) だ。理由は用途にある。このツールの読者が最初に知りたいのは「どのサーボを買えばいいか」であって、任意姿勢での関節トルクの時系列ではない。(A) を実装すると、慣性テンソルと姿勢の入力が必須になり、まだアームが存在しない設計段階の人には入力できない。しかも重力トルクが最大になるのは腕を水平にまっすぐ伸ばした姿勢なので、選定に必要な最悪値はこの1姿勢で決まる。関節間の運動連成を無視する代償は、最悪姿勢の値だけを見るという用途では安全率に吸収できる範囲に収まる。
計算フロー
// 1) リンク配列を関節数で切る(余った入力欄の値は混入させない)
const links = allLinks.slice(0, n); // { L: m, m: kg }
// 2) 関節の位置を根元から積む
x[0] = 0; x[k + 1] = x[k] + links[k].L; // reach = x[n]
// 3) 関節 j から見た、先端側リンク i (i >= j) の重心距離
d_i = (x[i] + links[i].L / 2) - x[j]; // 重心はリンク中央と仮定
// 4) 静的保持トルク(重力ぶん)
T_s = Σ_{i>=j} links[i].m * g * d_i + mPay * g * (reach - x[j]);
// 5) 慣性モーメント(平行軸の定理)
J = Σ_{i>=j} links[i].m * (links[i].L ** 2 / 12 + d_i ** 2)
+ mPay * (reach - x[j]) ** 2;
// 6) 角加速度と加速トルク
alpha = (omegaDegS * Math.PI / 180) / t;
T_a = J * alpha;
// 7) 必要トルク → kgf·cm → モータ軸換算
T_req = (T_s + T_a) * sf;
T_kgfcm = T_req * 10.19716213;
T_motor = T_reqMax / (ratio * eta); // 直結なら ratio = 1, eta = 1
ポイントは (3) と (5) だ。関節 j のトルクを出すとき、j より先端側にあるリンクを全部たどって、それぞれの重心距離で積算する。第3リンクは第1関節から見れば遠くにある錘であって、第3関節から見れば自分自身だ。同じリンクが関節ごとに違う距離で効くので、この二重ループが要る。ケース3で 3.54 → 11.17 → 26.78 と跳ね上がったのは、この積算が返した結果そのものだ。
平行軸の定理で書いた式が、教科書の公式に一致することの検算
(5) の式は先端側の任意のリンクに使える一般形だが、自リンクに限れば教科書の「棒の端まわり」公式に落ちるはずだ。落ちなければ実装が間違っている。1関節・リンク300mm/200g・ペイロード0 の構成で確かめた。
// 実装(平行軸の定理の一般形)
J = 0.2 * (0.3 ** 2 / 12 + 0.15 ** 2)
= 0.2 * (0.0075 + 0.0225)
= 0.006 kg·m²
// 教科書の「棒の端まわり」
J = (1/3) * 0.2 * 0.3 ** 2
= 0.006 kg·m²
一致した。この構成では保持トルク 0.2942 N·m、必要トルク 0.4884 N·m = 4.98 kgf·cm になる。ここで注意したいのは、この一致が使えるのは自リンクだけだという点だ。第1関節から見た第2リンクは軸が端ではないので (1/3)mL² では計算できない。手計算で検算するときに一番踏みやすい落とし穴がここにある。
安全率が素直に効いていることも同じ構成で確認できる。ケース1(安全率1.5)の 9.387140992 kgf·cm に対して、安全率だけ1.0に落とすと 6.258093995 kgf·cm。割り算すると厳密に1.5だ。安全率は保持ぶんにも加速ぶんにも同じように掛かるので、加速ぶんの割合は安全率を変えても動かない(分子と分母で相殺する)。
サーボ照合を「モータ軸換算トルク」で行った理由
判定に使う値は、関節の必要トルクではなくモータ軸に換算したトルクにしてある。減速機を挟むなら、サーボが実際に出さなければならないのは減速前の値だからだ。ケース4がその根拠で、関節側 37.52 kgf·cm という同じ値に対して、1:5・効率0.8 なら 9.38 kgf·cm、直結なら 37.52 kgf·cm。同じ DS3218 で使用率が 43.6% と 174.5% に分かれる。関節側の値で照合していたら、減速機を入れた構成が永遠に「トルク不足」と出続けることになる。
なお「減速機を介する」を選んだうえで減速比1・効率1.00 を入れた場合も、直結とまったく同じ値になる。分岐の判定は駆動方式の選択そのものではなく、減速比×効率が1とみなせるかという1つの真偽値に集約してあるので、この入力でも直結と同じ表示に切り替わる。
サーボ側のデータにも同じ考え方を通してある。無負荷最高速は、トルクと同じ電圧で公表されている機種にだけ入れた。TowerPro の MG90S はトルクが 6.6V、動作速度が 6.0V という別々の電圧で公表されているので、6.6V エントリの速度は未収録にして、代わりに「この電圧での速度公表値なし」と示すようにした。電圧を勝手に揃えて計算するくらいなら、その項目を出さないほうが正しい。
動力学ソルバでもなく、掛け算1本でもない立ち位置
「サーボ 必要トルク 計算」で辿り着くものは、だいたい両極端に割れる。片方は NovaSolver のような多関節動力学ソルバで、ニュートン-オイラー法で遠心力やコリオリ力まで解いてくれる代わりに、各リンクの慣性テンソル・関節角・角速度ベクトルを揃えないと1回も回せない。もう片方は「質量 × 腕の長さ」で終わる換算ページで、動き出しの加速ぶんも、そのサーボが本当にそのトルクを出せるのかも扱わない。前半で触れたとおり、初めてアームを組む人が知りたいのは「で、どれを買えばいいのか」の一点なので、そこに合わせて設計した。
違いは3つに整理できる。
1. 出力がホビーサーボのカタログ単位に着地する。 計算そのものは SI(N·m)で回すが、主表示は kgf·cm。通販ページに「20kg」と書かれている、あの数字と直接比べられる形で出す。N·m も併記するので、報告書に SI で書く用途でも読み替えは要らない。
2. 照合値がメーカーの一次資料で、必ず電圧とセット。 収録している10エントリは TowerPro・Futaba・近藤科学・ROBOTIS・DSServo の公式ページか公式データシートから取った。MG996R は 4.8V で 9.4、6.0V で 11.0 kgf·cm。DS3218 は 5.0V で 18.0、6.8V で 21.5 kgf·cm。同じ型番でも電圧で2割近く動くので、選択肢のラベルにも結果の表示にも電圧を必ず添えてある。ROBOTIS の AX-12A のようにカタログが N·m の機種は、換算後の値と元の単位の両方が分かるようにしてある。
3. 使用率を4段階で読む。 必要トルクをストールトルクで割った%を出し、33%以下・50%以下・100%以下・超過で判定を分ける。○×の2値だと「100%を割っているから大丈夫」に見えてしまう帯——動くには動くが連続では回せない領域——が、段階を分けて初めて見える。
関連ツールとの役割分担も書いておく。産業用サーボのイナーシャマッチングや実効トルクの判定は「サーボモーター選定ツール」の担当で、扱う相手がアンプ付きの産業用サーボなので入力項目も読者層も別物。円柱や板といった基本形状から慣性モーメントそのものを出したいときは「慣性モーメント計算機」、減速機を選ぶ段階に入ったら「減速機選定計算ツール」が受け持つ。本ツールが引き受けるのは、ホビーサーボの kgf·cm カタログ値と自作アームの寸法を突き合わせる一点だけだ。リンクはまとめに置いてある。
kgf という単位が、サーボの世界だけで生き残っている理由
重量キログラム(kgf)は SI では非推奨の単位で、日本の計量法でも取引・証明に使うことはできない。力の法定計量単位はニュートンだ。それなのに、ホビーサーボのカタログはいまだに kgf·cm で書かれ、通販ページには「20kgサーボ」が並ぶ。
生き残っている理由は、たぶんこの単位が現場の関心にそのまま繋がっているからだ。「何グラム持てるのか」を知りたい人にとって、ニュートンは一度割り算を挟まないと体感に変換できない。kgf·cm なら腕の長さで割るだけでグラムに戻る(換算の導出は前半の解説にある)。RC が模型の世界から育ってきた事情も大きい。計量器として取引に使うわけではないので、法定計量単位に揃える圧力がそもそも弱い。参考: Wikipedia「重量キログラム」「計量法」。
面白いのは、この業界の「事実上の標準」が単位だけでなく寸法にも及んでいること。ホビーサーボのいわゆる標準サイズは 40×20×36mm 前後だが、これは規格書で決まったものではなく、Futaba S3003 のような初期の標準機が基準になった結果だ。S3003 の公式データシートを見ると実寸は 40.4×19.8×36mm・37.2g。いま各社が出している「スタンダードサーボ」がほぼこの箱に収まるので、MG996R も DS3218 も同じブラケットに載る。3Dプリンタでマウントを作るときに設計を流用できるのは、この暗黙の合意のおかげ。
一方で、揃わなかった部分もある。出力軸のスプライン(ギザギザ)の歯数はメーカーごとに違い、25T が Futaba・Savox 系、24T が Hitec、23T が JR・三和・KO 系。1歯の差は見た目でほとんど区別が付かないうえ、力を掛ければ入ってしまうことがある。入った時点でどちらかの歯が削れているので、アームを組む前にホーンの歯数を確認しておきたい。
単位の話をもう一つ。すべてのメーカーが kgf·cm を使っているわけではなく、ROBOTIS の Dynamixel シリーズはカタログを N·m で書く。AX-12A の e-Manual は 12V・1.5A で 1.5 N·m。本ツールでは他機種と並べるために kgf·cm へ換算して収録しているが、メーカーが公表しているのは N·m のほうだ、という区別は覚えておいて損はない。
サーボ選定でつまずかないための Tips
1. 迷ったら「必要トルクの3倍」から候補を作る
連続して出せるトルクの目安が、ストールトルクのおよそ1/3。つまり使用率33%以下。必要トルクが出たらまず3倍して、その値以上のストールトルクを持つ機種から探すと、組んでから買い直す確率がぐっと下がる。
2. 足りないときの手は4つ。効くのは大抵リンク短縮
ペイロードを減らす/リンクを短くする/減速機を入れる/上位機種に替える。必要トルクはリーチにほぼ比例するので、数cm 詰めるだけでも効き方が変わる。減速機は最も劇的に効くが、そのぶん関節が遅くなる(使用例のベルト減速のケースと、同じ構成で直結にしたケースを見比べてほしい)。
3. 電源で負けると、カタログ値は出ない
カタログのトルクは、その電圧がサーボの端子まで届いていることが前提。ストール付近ではアンペア級の電流が流れるので、USB 端子やブレッドボードの細い配線から取ると電圧が落ちる。収録値でも同じ型番の低電圧側と高電圧側で1割以上の差があり、落ちた電圧の側の値しか出ないと考えたほうがいい。サーボ用の電源はマイコンと別系統で用意する。
4. 加速が支配的なら、軽量化より「立ち上がりを緩める」
角加速度は加速時間に反比例するので、加速時間を2倍にすれば加速トルクは半分になる。加速トルクの割合が高い結果が出たときは、部品を削って軽くする前に、目標角速度と加速時間を見直すほうが早い。
5. ペイロード0で「自重だけ」を先に見る
ペイロードは0を受け付ける。まず何も持たない状態で何トルク要るのかを見ておくと、フレームを重く作ったときにどれだけ食われるかの感覚がつかめる。
よくある質問
関節数を3から2に減らしたが、リンク3の値が計算に残っていない?
残らない。計算は選んだ関節数のぶんだけリンクを切り出してから走るので、画面から消えた欄の長さ・自重は一切参照されない。確認したいときは結果の「アーム全長(リーチ)」を見てほしい。関節数を減らした瞬間にリーチが短くなっていれば、余ったリンクは入っていない。逆に、隠れている欄に極端な値や空欄が残っていても、それが理由で計算がブロックされることもない。
「サーボ直結」を選んでいると、減速比を変えても結果が動かない
仕様どおりの挙動。駆動方式が直結の間、計算は減速比と伝達効率を一切参照せず、減速比1・効率1として扱う。入力欄そのものが出てこないのはそのためで、以前入れた値は保持されるが計算には入らない。減速機を挟むとどう変わるかは、使用例のベルト減速のケースと、同じ構成で直結にしたケースの対比が分かりやすい。関節側に必要なトルクは同じままで、モータ軸換算の値と使用率だけが動く。
使用率が100%を切っていれば、そのサーボで大丈夫?
大丈夫とは限らない。照合しているストールトルクは、出力軸を完全に拘束したときに出る最大値であって、その状態を維持できる値ではない。使用率100%は「一瞬だけ出せる最大トルクを常時要求している」状態にあたる。連続して動かすなら33%以下、間欠動作でも50%以下に収めたい。判定が「余裕なし」に落ちている構成は、動きはするが発熱・ギヤ寿命・消費電流の面で余裕がない、と読むのが正しい。
使いたい電圧が、サーボの選択肢に無い
選択肢は「型番 × 電圧」の組で持っていて、メーカーが公表している電圧の値しか収録していない。トルクは電圧に対してきれいな比例にならないので、公表値の間を勝手に内挿すると根拠のない数字になってしまう。中間の電圧で使うなら、低いほうの公表値で照合して、差は安全率で吸収するのが安全側の読み方。高いほうの値で照合すると、実機では出ないトルクを前提に選定することになる。
入力した寸法やペイロードは保存される?
保存されない。計算はすべてブラウザの中で完結していて、入力値がサーバーに送信されることはない。ページを離れれば値は残らないので、複数の構成を比べたいときは結果のコピー機能でテキストを控えておくのがいい。裏を返せば、公開前の機体寸法を入れても外に出ることはない。
まとめ
「20kgサーボ」が20kgを持ち上げるわけではない。この一点さえ押さえれば、あとはリンクの長さと重さ、持ちたい物の重さ、動かしたい速さを入れるだけで、各関節に要るトルクと手持ちサーボの余裕が読める。買う前に3分で確かめてほしい。
- 産業用サーボのイナーシャマッチングと実効トルクまで踏み込むなら サーボモーター選定ツール
- 円柱や板など基本形状から慣性モーメントを出したいときは 慣性モーメント計算機
- 減速機そのものを選ぶ段階に入ったら 減速機選定計算ツール
収録サーボの追加要望や、計算式について気づいた点があれば お問い合わせページ から知らせてほしい。
Mahiro
Mahiro Appの開発者。MG996R を2個買って30cmのアームを組み、100gの小箱を持ち上げられずに「11kg」の意味を調べ直した人間が作っている。収録した10機種のカタログ値は全部メーカーの一次資料に当たり直した。
運営者情報を見る