Open Source Robotics

高品質なオープンソースロボティクスプロジェクト、ツール、ソフトウェアの厳選コレクション。

Kinematic Redundancy

  • 別名: manipulator redundancy
  • カテゴリ: Foundations & spatial maths › Kinematics
  • タグ: kinematics, inverse-kinematics, null-space, manipulators, redundancy-resolution

ロボットがタスクに必要な数より多くの関節をもつとき、そのタスクに関して運動学的に冗長であり、同じエンドエフェクター位置姿勢を関節コンフィギュレーションの連続な族で実現できる。

定義

マニピュレータは、関節の数 n が制御すべきタスクの次元 m を上回るとき、そのタスクに関して運動学的に冗長(kinematically redundant)である。典型的な例は、7 関節のアームが 6 次元のエンドエフェクター位置姿勢を制御する場合で、冗長自由度が 1 つ残る。ただし冗長性はタスクに対して定義される。工具先端の位置だけを固定するタスクや、ドリル軸まわりの回転を自由に残すタスクに対しては、6 関節のアームも冗長である。固定したエンドエフェクター位置姿勢に対し、それを実現する関節コンフィギュレーションは 1 点ではなく (n − m) 次元の族をなし、これはしばしば自己運動多様体と呼ばれる。実際には、手を静止させたままアームが肘を動かせることを意味する。

速度レベルでは、冗長性は m × n のマニピュレータのヤコビ行列 J のヌル空間として現れる。このヌル空間内の関節速度はエンドエフェクターの運動を生まない。分解速度制御装置はこれを標準形 q̇ = J⁺ẋ + (I − J⁺J)q̇₀ で利用する。ここで J⁺ は擬似逆行列である。第 1 項がタスクを追従し、第 2 項が副次目標 q̇₀ をヌル空間に射影する。よく使われる副次目標は、関節可動域の限界から離れること、肘を障害物から遠ざけること、特異点を避けるために可操作度を高めること、関節トルクを減らすことである。タスク優先度付き逆運動学はこれを発展させて複数のタスクに順位を付け、優先度の低い各タスクがそれより上位のタスクのヌル空間内でのみ働くようにする。

冗長性は逆運動学のふるまいも変える。数値 IK ソルバーは無限にある解のうち 1 つを返し、それは初期値とアルゴリズムによって暗黙に選ばれるため、連続する問い合わせの間で遠く離れたコンフィギュレーションに飛ぶことがある。球形の肩と手首をもつ一般的な 7 関節設計の解析的 IK は、余分な自由度を明示的にパラメータ化し、多くの場合、肩から手首への直線まわりに肘を回転させるアーム角またはスイベル角として表す。冗長性を、肘の上下や手首の反転のような有限個の離散的な IK の分岐と混同してはならない。こうした分岐は冗長でない 6 関節のアームにもある。

重要な理由

冗長性があるからこそ、7 関節のアームは手で経路をたどりながら障害物を回り込み、関節可動域の限界を避け、特異点から離れていられる。多くの協働アームやヒューマノイドのアームが 7 関節をもつのはこのためである。一方で、連続体の中から 1 つのコンフィギュレーションを何かが選ばなければならないため、逆運動学と計画は難しくなり、選び方が悪いと関節可動域の限界での停止や肘の急な反転につながる。

主な用途

  • エンドエフェクターが経路を追従する間の、肘の障害物回避と自己衝突回避
  • 長い工具経路での関節可動域の限界と特異点の回避
  • 双腕操作と閉ループ操作。余った自由度が共有の拘束を満たすのに役立つ
  • どの単一タスクに必要な数よりもはるかに多くの関節をもつヒューマノイドとモバイルマニピュレータの全身制御
  • 協働作業でアームの姿勢を予測可能に保ち、人から離しておくこと
  • 与えられたエンドエフェクターの運動に対する関節トルクやエネルギーの低減

実際の使われ方

あるエンジニアが、人がそばで作業している中で 7 関節のアームにスポンジでテーブルを拭かせるプログラムを書く。拭き取りの経路がエンドエフェクター位置姿勢を固定するため、自由度が 1 つ残る。制御装置は拭き取り動作の関節速度をヤコビ擬似逆行列で計算し、肘を追跡している人の位置から遠ざけ、各関節の可動範囲の中央へ寄せるヌル空間項を加える。テスト中、チームは経由点ごとに普通の数値 IK ソルバーを呼ぶと、肘が反対側にある解がときどき返され、関節が大きく飛ぶことに気づく。そこで各問い合わせを直前の解からウォームスタートさせ、肘の位置をアーム角で明示的にパラメータ化するよう切り替える。こうしてプランナーは冗長自由度をソルバー任せにせず、意図的に選ぶ。

よくある誤解

  • 冗長とは単に 6 個より多くの関節をもつことだ — 冗長性はタスクに対して定義されるので、エンドエフェクターの座標を 6 個未満しか拘束しないタスクに対しては 6 関節のアームも冗長である
  • 冗長なアームは 6 関節のアームと同じように複数の IK 解をもつ — 冗長でないアームは有限個の離散的な解をもつのに対し、冗長なアームは解の連続な族をもつ
  • ヌル空間の運動はタスクにまったく影響しない — エンドエフェクター位置姿勢を変えないのは 1 次近似の範囲だけなので、誤差を補正しない限り、大きなステップや特異点付近の運動はタスクを乱しうる

知っておくべき人

  • マニピュレーションと動作計画のエンジニア
  • タスク空間制御と全身制御に取り組む制御エンジニア
  • ヒューマノイドとモバイルマニピュレータの開発者
  • マニピュレータの運動学を学ぶロボット工学の学生

関連技術

  • ヤコビ擬似逆行列(Jacobian Pseudoinverse)
  • ヌル空間射影(Null-Space Projection)
  • 解析的逆運動学(Analytic Inverse Kinematics)
  • 可操作度楕円体(Manipulability Ellipsoid)
  • 減衰最小二乗法(Damped Least Squares)

関連用語

  • Inverse Kinematics
  • Task-Priority Inverse Kinematics
  • Jacobian
  • DOF
  • Configuration Space
  • Constraint Manifold

関連プロジェクト

  • MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
  • DART: C++ physics engine for articulated rigid body dynamics and robotics simulation
  • IKPy: Pure-Python inverse kinematics library that builds chains straight from URDF
  • frax: JAX library for fast, differentiable robot kinematics, dynamics and inverse kinematics

このウェブサイトにはJavaScriptが必要です。オープンソースロボティクスプロジェクトを閲覧するにはJavaScriptを有効にしてください。