PAGE

IMUの座標系と取付変換|CV7のSensor Frame・Vehicle Frame・NED/ENU

INERTIAL GUIDE

IMUの座標系と取付変換|CV7のSensor Frame・Vehicle Frame・NED/ENU

IMUのSensor Frame、Vehicle Frame、NED/ENUを整理し、3DM-CV7の取付変換、符号、二重補正を防ぐ考え方を解説します。

IMUのデータを装置やロボットへ組み込むときは、センサー自身の軸、車体・装置の軸、地球基準の座標系を分けて考える必要があります。

軸を取り違えると、値の大きさが正しくても方向や符号が間違います。また、センサー内部とアプリケーションの両方で同じ取付変換を行う「二重補正」にも注意が必要です。

このページでは3DM-CV7を中心に、取付変換とNED/ENUの考え方を整理します。

このページでできること

  • Sensor Frame / Vehicle Frame / World Frameを区別する
  • Sensor to Vehicle Transformの向きを理解する
  • Euler角とDCMを扱うときの注意点を確認する
  • 二重補正を防ぐ
  • NED / ENU / ROS機体軸の違いを整理する
  • 実機で軸と符号を確認する

1. 3種類の座標系を分ける

Sensor Frame

センサー筐体に固定された座標系です。

CV7本体に定義されたX/Y/Z軸を基準に、センサー出力や一部のバイアス値が表されます。

Vehicle Frame

装置、車両、ロボットなどに固定した座標系です。

CV7の標準Vehicle Frameは、

  • X:前
  • Y:右
  • Z:下

です。

World / Navigation Frame

地球に対する方向を表す座標系です。

NEDやENUなどがあります。

Vehicle Frameの「前」が常に北を意味するわけではありません。


2. Sensor to Vehicle Transformを設定する

CV7をVehicle Frameと同じ向きに取り付けられない場合は、Sensor to Vehicle Frame Transformationを設定します。

Sensor to Vehicle Frame Transformation
SensorConnectの取付変換設定例。Euler角の単位表示を確認してから入力します。

CV7ではEuler角またはDirection Cosine Matrix(DCM)で取付変換を指定できます。

MIPのEuler角コマンドではradを使用します。

度で測った角度をそのまま入力しないようにしてください。


3. 変換の向きを明記する

行列を扱うときは、

R_vehicle←sensor

のように「何座標のベクトルを何座標へ変換するか」を明記すると間違いを減らせます。

例えば、センサーX軸がVehicleの右方向を向き、センサーY軸がVehicleの後方を向く単純な例では、

R_vehicle←sensor =
[ 0  -1   0 ]
[ 1   0   0 ]
[ 0   0   1 ]

となります。

このとき、Sensor FrameのX基底ベクトル (1,0,0) はVehicle Frameでは (0,1,0) になります。

これは行列の読み方を説明する例で、実際の取付設定値ではありません。


4. Euler角は回転順序も確認する

Euler角はRoll / Pitch / Yawの数値だけでは変換を一意に理解できません。

  • どの軸の周りに回すか
  • 正方向
  • 回転順序
  • Sensor→VehicleかVehicle→Sensorか

を合わせて確認します。

CV7のVehicle Frame資料には、Sensor to Vehicle変換の定義と設定例があります。

別の数学ライブラリやROSドライバのEuler角規約が同じとは限らないため、そのまま数値を移植しないでください。


5. DCMは3つの基底ベクトルで確認する

DCMを設定するときは、行列の数字だけを見るより、Sensor Frameの3つの基底ベクトルがVehicle Frameのどちらへ向くか確認すると分かりやすくなります。

  • Sensor X → Vehicleのどの方向か
  • Sensor Y → Vehicleのどの方向か
  • Sensor Z → Vehicleのどの方向か

を1軸ずつ確認します。

CV7のDCMコマンドでは9要素をrow-majorで扱います。


6. SensorConnectのVisualizationで確認する

SensorConnectではSensor FrameとVehicle Frameの関係を可視化できます。

Sensor FrameとVehicle FrameのVisualization
取付変換を確認するVisualizationの例。画面表示だけでなく、実物の取付方向とも照合します。

画面上で軸が合って見えても、実物の装置側で定義した前後・左右・上下と一致しているか確認してください。


7. 二重補正を防ぐ

次のような構成では、同じ取付変換を2回適用してしまうことがあります。

  1. CV7内部でSensor→Vehicle変換
  2. ROSドライバでもSensor→Vehicle変換
  3. アプリケーションでも同じ回転を適用

どのレイヤーで変換するかを決め、1回だけ適用します。

データ列名にvehicleと書かれているだけで判断せず、そのソフトウェアが実際に何を変換しているか確認してください。


8. 旧製品の設定値をそのまま移植しない

世代の異なるMicroStrain製品では、取付変換コマンドの定義や変換方向に違いがある場合があります。

旧機種のRoll/Pitch/Yaw値をCV7へそのままコピーするのではなく、

  • 変換方向
  • 単位
  • 回転順序
  • 正方向

を現行マニュアルで確認します。

複数軸の回転では「3つの角度の符号を全部反転」しても逆変換にならない場合があります。

行列として変換を確認する方が安全です。


9. NEDとENUを区別する

代表的なWorld Frameには、

NED

  • X:North
  • Y:East
  • Z:Down

ENU

  • X:East
  • Y:North
  • Z:Up

があります。

同じベクトルをNEDからENUへ表す場合、軸の入替えとZ方向の反転が必要です。

ただし、姿勢角やQuaternionを単純な成分入替えだけで変換できるとは限りません。

姿勢表現では、回転の向き、基準Frame、Quaternionの成分順序も確認します。


10. ROSの機体軸も確認する

REP-103の標準的なROS機体軸は、

  • X:前
  • Y:左
  • Z:上

です。

CV7の標準Vehicle Frameは、

  • X:前
  • Y:右
  • Z:下

なので、YとZの向きが異なります。

ROSドライバ側ですでに変換されている場合は、アプリ側で重ねて変換しないでください。


11. 実機では既知の動きで確認する

取付変換を設定したら、許容範囲内で方向が分かる動きを与えて確認します。

例えば、

  • 装置を前方向へ加速させる
  • 右側を持ち上げる
  • 既知方向へYaw回転する

などです。

そのとき、

  • どの軸が変化したか
  • 符号は正しいか
  • 単位は正しいか
  • Sensor DataとFilter Dataのどちらを見ているか
  • Filter Stateは正常か

を確認します。


記録しておくとよい項目

  • センサー型式・ファームウェア
  • センサー本体の軸方向
  • Vehicle Frameの定義
  • Sensor→Vehicle変換
  • Euler / DCMのどちらを使用したか
  • 角度単位
  • ROS / ドライバ側での変換
  • 出力データのFrame
  • 既知動作で確認した軸と符号

参考資料

既存の関連ページもあわせて確認

既存の技術解説・ソフトウェア説明と相互に参照できるよう、本番反映時に現在のURLへ接続します。

技術相談
当サイトでは、サイトの利便性向上のため、クッキー(Cookie)を使用しています