Open Source Robotics

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

6D rotation representation

  • 別名: 6D rotation, continuous 6D rotation representation
  • カテゴリ: Foundations & spatial maths › Frames & transforms
  • タグ: rotations, pose-estimation, deep-learning, spatial-math, so3

3D 回転を、その回転行列の最初の 2 列である 2 本の 3D ベクトルとして符号化すること。これにより、ニューラルネットワークはオイラー角やクォータニオンの不連続性なしに回転を予測できる。

定義

6D 回転表現(6D rotation representation)は、3D 回転を 6 個の数で符号化する。すなわち 2 本の 3D ベクトルであり、これらは正規直交化の後に回転行列の最初の 2 列となる。2019 年に Zhou らが、回転を予測する、または回転を入力とするニューラルネットワークのために導入した。ネットワークの 6 個の出力を回転に変換するには、Gram-Schmidt の直交化と同様に、第 1 のベクトルを正規化し、第 2 のベクトルから第 1 のベクトル方向の成分を取り除いて結果を正規化し、第 3 列を最初の 2 列の外積とする。2 本のベクトルがゼロでなく平行でもない限り、どんな 6 個の数も有効な回転行列に写される。

動機は連続性にある。Zhou らは、4 次元以下の実数空間における 3D 回転の表現はすべて不連続であることを示した。どこかで、互いに近い回転が遠く離れた表現に写されるか、その逆が起こる。オイラー角は角度の折り返しで跳び、ジンバルロックも起こる。軸角は π の回転で折り返す。クォータニオンには q と −q が同じ回転を表す二重被覆があり、この曖昧さを除くために一方の半球に制限すると、境界で跳びが生じる。そのような目標を回帰するよう訓練したネットワークは不連続な関数を近似しなければならず、それが一部の回転で大きな誤差を生みやすい。6D 表現は完全な 9D の回転行列と同様に連続であり、彼らの実験では、これを使って訓練したネットワークのほうが回転をより正確に学習した。

6D 形式は最小ではなく冗長であり、その Gram-Schmidt のステップは第 1 列と第 2 列を異なるように扱う。よく使われる代替案は、行列の 9 個の要素すべてを予測し、特異値分解で最も近い回転へ射影する方法であり、これは列に関して対称である。損失は通常、6 個の生の数ではなく、復元した回転行列の上で、例えば測地角や Frobenius 距離として計算する。この表現は学習のための道具である。古典的な推定や最適化は、通常クォータニオンやリー代数による更新を使って回転群の上で直接行う。

重要な理由

多くのロボット学習や知覚のシステムは向きを予測する。物体や手の姿勢、人の関節の回転、エンドエフェクターの行動などである。回転表現の選び方はこれらのネットワークの学習のしやすさに影響し、6D 表現は回転である出力や入力の一般的な標準になっている。

主な用途

  • ニューラルネットワークによる物体と手の姿勢推定
  • 関節の回転を予測する人の姿勢モデルや身体モデル
  • 学習したロボットの方策や行動空間におけるエンドエフェクターの向き
  • カメラ姿勢の回帰と相対姿勢の推定
  • 動作や把持の生成モデル

実際の使われ方

あるチームが、手首に着けたセンサーから人の腕の姿勢を推定するネットワークを訓練する。ネットワークは肩と肘のオイラー角を出力する代わりに、関節ごとに 6 個の数を出力する。小さな層が、Gram-Schmidt と外積を使って 6 個の数の各組を回転行列に変換し、損失はこれらの行列とモーションキャプチャの正解データとを、両者の間の測地角によって比較する。センサーからの向きの入力にも同じ符号化を使うので、ネットワークが角度の折り返しに出会うことはない。運用時には、予測した回転行列をクォータニオンや関節角に変換して、ロボットの制御装置に渡す。

よくある誤解

  • 6D は完全な 6-DoF の姿勢を意味する — この表現が扱うのは回転だけであり、3 自由度の回転を 6 個の数で符号化している
  • ネットワークの 6 個の出力はそのまま回転である — 有効な回転行列にするには、正規直交化し、外積で補わなければならない
  • 学習にはクォータニオンが常に最良の選択である — 二重被覆と、一方の半球に制限することで生じる跳びのため、回帰の目標としては不連続である
  • 6D 表現はあらゆる場面でクォータニオンに取って代わる — ニューラルネットワークの入力と出力のために設計されたものであり、フィルタや最適化器は通常、回転群の上で直接計算する

知っておくべき人

  • 行動空間と観測空間を設計するロボット学習の研究者
  • 姿勢推定に取り組むコンピュータビジョンのエンジニア
  • 人の動作やアニメーションの研究者
  • 把持やマニピュレーションのネットワークを訓練するエンジニア

関連技術

  • 回転行列(Rotation Matrix)
  • クォータニオン(Quaternions)
  • Gram-Schmidt の直交化(Gram-Schmidt Orthogonalization)
  • SVD による直交化(SVD Orthogonalization)
  • PyTorch3D

関連用語

  • SE(3)
  • Yaw / Pitch / Roll
  • Transform
  • Coordinate Frame
  • Equivariance

関連プロジェクト

  • pySLAM: Hybrid Python/C++ visual SLAM pipeline with classic and deep-learning front-ends
  • AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
  • manif: Header-only C++ Lie theory library for robotics state estimation
  • PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization
  • Intrinsic Core: Intrinsic's open industrial robot stack: real-time control, planning and perception
  • PULP-Dronet: Visual navigation for nano-drones with CNN inference onboard a PULP processor.

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