ロボットアームに「この座標へ動け」という指令だけを与える位置制御は、腕が自由空間を動いているあいだは問題なく働く。ところが手先が机の面やネジ穴の壁のような硬い環境に接触した瞬間、位置制御は本質的に破綻する——目標位置に到達しようとする指令と、環境が押し返してくる反力がぶつかり合い、理論上は無限大に近い力が発生しうる。この記事では、この「接触した瞬間に何が起きるか」という具体的な失敗から出発し、力とロボットの動きの関係を仮想的なバネ・ダンパ・質量で規定するインピーダンス制御、その因果関係を逆にしたアドミタンス制御、そして位置と力を空間の方向ごとに分離するハイブリッド位置/力制御までを、式を追いながら体系的に積み上げていく。

0. この記事で分かること

1. まず結論:力制御・インピーダンス制御とは何か

一言で言えば、力制御とは、ロボットの手先(または関節)が環境に及ぼす力・環境から受ける力を、位置だけでなく明示的な制御対象として扱う枠組みであり、インピーダンス制御はその中でも、位置の誤差と力の関係を仮想的なバネ・ダンパ・質量(機械インピーダンス)として規定することで、力を間接的に制御する代表的な設計である。

ここで重要なのは「力を直接指令する」ことと「力と位置の関係を規定する」ことは別の話だという点である。純粋な力制御は「この方向に10Nの力を出せ」と力そのものを目標にするのに対し、インピーダンス制御は「位置がずれたら、そのずれに比例した力で押し返す(あるいは押し返させる)」という、位置と力のあいだの振る舞いの規則を目標にする。この違いが、後の章で見るように、接触の不確実性に対する頑健性を大きく左右する。

2. なぜ位置制御だけでは接触作業ができないのか

産業用ロボットアームの多くは、関節角度の目標値を高いゲインのPD制御でひたすら追従させる位置制御を土台にしている。自由空間を動いているあいだ、これは何の問題もない——目標位置と現在位置の差(誤差)を小さくするようにトルクを出すだけで、腕は狙った軌道を正確になぞる。

問題は、手先が硬い物体に接触した瞬間に起きる。位置制御のコントローラは「目標位置に届いていない」という誤差を検出し続け、その誤差を減らそうとしてトルクを出し続ける。ところが環境(机の面やネジ穴の壁)は動かないため、手先はそれ以上先へ進めない。理想化された剛体同士の接触では、この状況は次のように定式化できる。

\tau = K_p (\theta_d - \theta) + K_d (\dot{\theta}_d - \dot{\theta})

環境が完全剛体で手先が動けない(\theta \approx 一定)場合でも、目標角度 \theta_d が環境の奥へ向かって指令され続ける限り、比例ゲイン K_p が大きいほど、位置誤差 (\theta_d - \theta) に応じたトルクは際限なく増大しようとする。実際のロボットではモーターのトルク上限やギアの弾性、関節の物理的な遊びによって力は有限にとどまるが、それでも意図しない過大な接触力が発生し、部品の破損やロボット自体の故障、人との接触であれば重大な安全上のリスクにつながる。

さらに、位置制御は「目標軌道」そのものが環境の形状と厳密に一致していることを前提にしている。ネジ穴にピンを差し込む作業を考えると、ネジ穴の中心位置がわずか0.1mmでもずれていれば、位置制御だけのロボットはその誤差ぶんだけ壁に押し付け続けてしまう。人間が手作業でこの種の作業をこなせるのは、手首や指先が自然に「力を感じて、少し逃がす」という柔らかさ(コンプライアンス)を持っているからであり、ロボットにも同様の性質を意図的に作り込む必要がある——これが力制御・インピーダンス制御が生まれた動機である。

3. 入力は何か

力制御が扱う入力は、位置制御単体よりも情報源が増える。

力覚センシングが加わる点が、位置制御との最大の違いである。力センサーの帯域(サンプリングレート)やノイズ特性が、力制御ループ全体の応答速度と安定性を直接左右する。

4. 何を求めるのか/出力は何か

力制御が最終的に出力するのは、位置制御と同じく各関節へのトルク指令 \tau である。ただし、そのトルクを計算する際に何を目標にするかが手法によって異なる。

いずれの手法も、「接触時に発生する力を、破損や事故につながらない範囲に収めつつ、作業として意味のある軌道・力加減を実現する」という共通の目的を、異なる数式の組み方で達成しようとしている。

5. 基本構成

力制御まわりのループは、位置制御ループに「力のフィードバック」がどこでどう合流するかという構造で整理できる。まずインピーダンス制御とアドミタンス制御の因果関係の違いを図で見る。

インピーダンス制御とアドミタンス制御の因果関係の違い インピーダンス制御は位置誤差を入力し力を出力する上段のループ、アドミタンス制御は力を入力し位置修正量を出力して内側の位置制御ループに渡す下段のループであることを示す図 インピーダンス制御(位置→力) 目標位置 x_d 実位置 x 仮想バネ・ダンパ・質量 M(ẍ-ẍd)+D(ẋ-ẋd)+K(x-xd) 目標反力 F 関節トルク τ = Jᵀ F アドミタンス制御(力→位置) 実測力 F_ext 仮想質量・ダンパ・バネ Mẍ+Dẋ+Kx = F_ext 位置修正量 Δx 内側の 位置制御ループ 位置制御が出した動きが再び力センサーで計測される(フィードバック)

図1 — インピーダンス制御は位置(誤差)を入力し力を出力してトルク指令に変換する。アドミタンス制御は逆に力を入力し位置の修正量を出力して、既存の位置制御ループに渡す。両者は同じ「仮想バネ・ダンパ・質量」の関係式を、入出力を逆にして使っている。

次に、ハイブリッド位置/力制御が空間をどう2つの部分空間に分割するかを見る。

ハイブリッド位置/力制御の構造 選択行列によって作業空間を位置制御方向と力制御方向に分割し、それぞれ独立した制御則を適用したのち関節トルクとして合成することを示す図 目標位置・目標力 x_d, F_d 選択行列 S, (I-S) 方向ごとに分割 自由方向(拘束なし) 位置制御 拘束方向(環境に接触) 力制御 合成 τ = τ_pos + τ_force

図2 — ハイブリッド位置/力制御は、作業空間の各方向を選択行列で「位置を制御する方向」と「力を制御する方向」に分け、それぞれ独立に計算したトルクを合成して1つの関節トルク指令にする。

6. 代表アルゴリズム

コンプライアンス制御 — 力制御の理論的な土台

力覚を使った制御を体系的に定式化した初期の重要な仕事の1つが、Matthew T. Masonが1981年にIEEE Transactions on Systems, Man, and Cyberneticsで発表した論文「Compliance and Force Control for Computer Controlled Manipulators」である。この論文は、ロボットの手先位置が作業対象の幾何形状によって拘束される状況を、拘束の種類(自然拘束・人為拘束)に応じて位置と力を分類する枠組みを与え、後述するハイブリッド位置/力制御の理論的な基礎になった。「タスク座標系のどの軸で位置を、どの軸で力を制御すべきか」を幾何学的に整理するというこの考え方は、現在の力制御の教科書的な出発点になっている。

ハイブリッド位置/力制御 — 空間を分割して同時制御する

M.H. RaibertとJ.J. Craigが1981年にASMEのJournal of Dynamic Systems, Measurement, and Controlで発表した論文「Hybrid Position/Force Control of Manipulators」は、作業空間の座標軸それぞれを、位置を制御すべき方向と力を制御すべき方向に明示的に分け、両者を同時並行に制御するハイブリッド位置/力制御(hybrid position/force control)を提案した。テーブルの上を滑らせながら組み立てる作業を例にとると、テーブル面に垂直な方向(押し付け力を一定に保ちたい)は力制御、テーブル面に平行な2方向(軌道をなぞりたい)は位置制御、というように役割を分ける。

数式では、対角成分が0か1の選択行列(selection matrix) S を使い、S が1の方向には位置制御則を、(I - S) が1の方向には力制御則を適用する。

\tau = J^{\top}\left[ S\, F_{\text{pos}} + (I - S)\, F_{\text{force}} \right]

F_{\text{pos}} は位置誤差から計算した仮想力、F_{\text{force}} は力誤差から計算した仮想力である。この方式の強みは直感的な分かりやすさにあるが、拘束方向がタスク座標系の軸と厳密に一致していることを前提にしており、環境の形状や姿勢が不確かな場合には選択行列の設計自体が難しくなるという弱点を持つ。

インピーダンス制御 — 位置と力の関係そのものを規定する

Neville Hoganが1985年にASMEのJournal of Dynamic Systems, Measurement, and Controlで発表した3部構成の論文「Impedance Control: An Approach to Manipulation」(Part I—Theory、Part II—Implementation、Part III—Applications)は、ハイブリッド制御とは異なる発想を提示した。位置と力のどちらか一方を制御対象に選ぶのではなく、位置の誤差と、それに対して手先が及ぼす(あるいは受ける)力との関係を、目標とする仮想的な質量・減衰・剛性のパラメータで規定する。

M_d\, (\ddot{\mathbf{x}} - \ddot{\mathbf{x}}_d) + D_d\, (\dot{\mathbf{x}} - \dot{\mathbf{x}}_d) + K_d\, (\mathbf{x} - \mathbf{x}_d) = -F_{\text{ext}}

M_d, D_d, K_d はそれぞれ目標とする仮想質量・仮想減衰係数・仮想剛性(バネ定数)で、設計者が作業内容に応じて選ぶパラメータである。この式は「手先が目標位置からずれるほど、外力 F_{\text{ext}} に応じてバネのように押し返す(または押し返される)」という、質量・バネ・ダンパから成る仮想的な力学系そのものを手先の振る舞いとして実現しようとしている。K_d を大きくすれば硬く、小さくすれば柔らかく反応する手先になり、D_d は振動を抑える減衰を担う。

重要なのは、インピーダンス制御は目標力そのものを直接指令しているわけではないという点である。環境が硬ければ、わずかな位置誤差でも大きな反力が生じてバランスするため、結果として過大な力を出さずに済む。逆に自由空間では外力がゼロなので、この式は通常の位置制御(バネ・ダンパによる軌道追従)とほぼ同じ振る舞いに帰着する。接触の有無や環境の硬さを明示的に切り替えることなく、同じ制御則が自由空間でも拘束空間でも自然に振る舞いを変えるという頑健性が、インピーダンス制御が力制御の中心的な考え方として広く使われている理由である。

アドミタンス制御 — 力から位置修正量を計算する逆方向の設計

インピーダンス制御が「位置(の誤差)を入力し、力を出力する」設計であるのに対し、アドミタンス制御(admittance control)は「力を入力し、位置(の修正量)を出力する」という、因果関係が逆の設計である。実測した外力 F_{\text{ext}} を、同じ質量・減衰・剛性の力学系に入力し、そこから得られる位置の修正量 \Delta \mathbf{x} を、既存の(高ゲインな)位置制御ループの目標値に足し合わせる。

M_d\, \ddot{\mathbf{x}} + D_d\, \dot{\mathbf{x}} + K_d\, \mathbf{x} = F_{\text{ext}}

この式を(数値的に、あるいは解析的に)積分して得られる \mathbf{x} が、内側の位置制御ループへ渡す修正後の目標位置になる。数式の形はインピーダンス制御の式とほぼ同じだが、何を入力とし何を出力とするかが逆になっている点が本質的な違いである。この因果関係の違いは、実装上のトルク制御能力の有無と結び付いている——関節にトルクを直接指令できる高性能なアクチュエータを持つロボットではインピーダンス制御が素直に実装できるのに対し、位置(または速度)しか指令できない、剛性の高い減速機を持つ産業用ロボットでは、力の情報を位置指令に変換するアドミタンス制御のほうが既存の位置制御ループにそのまま乗せやすい。

7. アルゴリズム同士の違い

手法 原理 精度(力の追従性) 計算コスト 環境の硬さ変化への頑健性 実装難易度
純粋な力制御 力の誤差を直接フィードバック 高い(目標力に忠実) 低い 低い(硬い環境で不安定化しやすい) 中程度
ハイブリッド位置/力制御 選択行列で方向ごとに位置制御・力制御を分離 拘束方向は高い、自由方向は位置追従が高い 中程度(選択行列の設計が必要) 中程度(拘束方向の想定がずれると弱い) 中程度〜高い(タスク座標系の設計が必要)
インピーダンス制御 位置誤差と力を仮想バネ・ダンパ・質量で結び付ける 力を間接的にしか制御できない(狙った力への追従は弱い) 中程度 高い(接触/非接触を明示的に切り替えなくてよい) 高い(トルク制御可能なアクチュエータが前提)
アドミタンス制御 力を入力し位置修正量を出力、内側の位置制御ループへ渡す インピーダンス制御と同等の間接性 中程度 高い 中程度(既存の位置制御ロボットに後付けしやすい)

大まかな傾向として、目標力そのものへの忠実さを優先するなら純粋な力制御やハイブリッド制御、環境の硬さや形状が不確かな状況での安定性・安全性を優先するならインピーダンス制御・アドミタンス制御が有利になる。実際の産業用ロボットの多くは、トルク制御可能な関節を持たない(位置・速度指令が主体の)機構であるため、インピーダンス制御そのものよりもアドミタンス制御、あるいは両者を組み合わせたハイブリッドな実装が採用されることが多い。

8. 何が苦手か/難しい環境

力制御・インピーダンス制御が実運用で直面する難しさは、大きく次のように整理できる。

極端に硬い環境での安定性: インピーダンス制御の式で目標剛性 K_d を大きくしすぎると、わずかな位置誤差でも大きな力が生じ、センサーのサンプリング遅延や関節の弾性(ギアのたわみなど)と相互作用して振動的な不安定挙動(接触振動、いわゆるcontact instability)を引き起こしやすい。逆に K_d を小さくしすぎると、目標軌道への追従性が失われる。この K_d の選び方は、環境の実際の硬さについての事前知識がないと最適化しづらい。

摩擦とアクチュエータの非線形性: 関節の減速機やベルト駆動には摩擦・バックラッシュ(遊び)が存在し、これらは理想化されたトルク制御の式には現れない外乱として働く。特に安価な減速機を使うロボットでは、この摩擦の影響でインピーダンス制御が想定する「仮想バネ・ダンパ」の振る舞いが正確に再現できないことがある。

力覚センサーのノイズと帯域: 力制御ループの応答速度は、力センサーのサンプリングレートとノイズ特性に直接制限される。ノイズの多いセンサー出力をそのままフィードバックに使うと、制御則が意図しない高周波の振動を増幅してしまうため、フィルタリングと制御帯域のトレードオフを常に考える必要がある。

環境の形状・硬さについての事前知識の不足: ハイブリッド位置/力制御は、拘束方向がどの軸に対応するかをあらかじめ知っている必要がある。実際の作業対象の姿勢や形状に誤差があると、想定していた方向とは違う方向に予期しない力が生じ、選択行列の設計そのものが崩れる。

多点接触・面接触: これまでの議論の多くは、手先の1点が環境と接触する状況を前提にしている。ロボットハンドで物体を包み込むように把持する場合のような多点・面での接触では、各接触点の力を個別に扱う必要があり、単純な1点のインピーダンス制御の枠組みをそのまま拡張するのが難しくなる。

9. 実用上の選び方

力制御・インピーダンス制御の方式をどう選ぶかは、ロボットのアクチュエータの種類、作業の性質、安全要件によって変わる。

いずれの用途でも、力制御はロボット単体の孤立した技術ではなく、力・トルクを検知する力覚・触覚センサーや、逆運動学・ヤコビアンによって関節空間と作業空間を結び付ける運動学、そして関節トルクを実際に生成するアクチュエータの特性(油圧駆動の力制御については油圧システム入門を参照)が組み合わさって初めて、実機の上で意味のある「柔らかい接触」を実現できる。

10. まとめ(3行で復習)

#力制御 #インピーダンス制御 #アドミタンス制御 #ハイブリッド位置/力制御 #コンプライアンス制御 #ロボティクス入門