メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

accelcal

加速度計のキャリブレーション パラメーター

R2023b 以降

説明

[A,b] = accelcal(D) は、キャリブレーションされていない加速度計の測定値をキャリブレーション データ D に基づいて修正するために使用される行列 A とベクトル b を返します。

Ab の取得後、キャリブレーションされたデータ C をキャリブレーションされていないデータ U から C = U*A + b を使用して取得します。ここで、UM 行 3 列の行列、U の各行はキャリブレーションされていない加速度計の測定値です。

[A,b] = accelcal(XUP,XDOWN,YUP,YDOWN,ZUP,ZDOWN) は、加速度計のキャリブレーション方向に示す 6 つのキャリブレーション方向の測定データを指定します。

[A,b] = accelcal(___,Gravity=g) は、地球重力定数 g の値を指定します。

すべて折りたたむ

測定データの生成用に imuSensor オブジェクトを作成します。既定では、オブジェクトの基準座標系は北-東-下 (NED) 座標系です。測定値が一定のバイアスといくつかのランダム ノイズをもつように加速度計のパラメーターを指定します。

accelParams =  accelparams(ConstantBias=[.1 .2 -.1],...
    NoiseDensity=1e-2*ones(1,3));
imu = imuSensor(Accelerometer=accelParams);
disp(imu.ReferenceFrame)
NED

6 つのキャリブレーション方向のオイラー角を定義し、それらを四元数に変換します。

orients = [...
    0 90 0 % xUp
    0 0 -90 % yUp
    0 180 0 % zUp
    0 -90 0 % xDown 
    0 0 90 % yDown    
    0 0 0]; % zDown
quats = quaternion(orients,"eulerd","ZYX","frame");
N = numel(quats);

外部の加速度と角速度はいずれも 0 であると仮定します。IMU センサーをシミュレートしてキャリブレーション測定値を取得します。

exAcc = zeros(N,3);
angVel = zeros(N,3);
D = imu(exAcc,angVel,quats)
D = 6×3

   -9.6490    0.2225   -0.1925
    0.0146   -9.5593    0.0153
   -0.0210    0.1928   -9.9271
    9.9363    0.1840   -0.0210
    0.0008    9.9094   -0.0655
    0.2828    0.1528    9.7232

accelcal 関数を使用してキャリブレーション パラメーターを取得します。

[A,b] = accelcal(D)
A = 3×3

    1.0018    0.0019   -0.0087
    0.0006    1.0078    0.0041
   -0.0154    0.0020    0.9986

b = 1×3

   -0.0956   -0.1852    0.0779

キャリブレーション測定値を使用してキャリブレーション パラメーターを検証します。

DCali = D*A+b
DCali = 6×3

   -9.7587    0.0199   -0.0298
   -0.0872   -9.8187    0.0534
    0.0365   -0.0111   -9.8339
    9.8589    0.0196   -0.0284
   -0.0875    9.8012    0.0535
    0.0380   -0.0109    9.7852

ランダムな方向をいくつか作成して加速度計の測定値を取得し、測定値をキャリブレーションします。

M = 10;
randomQuats = randrot(M,1);
U = imu(zeros(M,3),zeros(M,3),randomQuats);
C = U*A+b
C = 10×3

    9.1400    3.5374   -1.3008
   -7.1185   -6.8126   -0.7088
    7.1372   -6.8065   -0.5943
   -7.9362    1.5605    5.6203
    7.4397   -2.3143   -6.2363
    7.0758   -4.0794   -5.7321
    3.1250   -5.4306    7.2655
    0.8261   -9.7286    1.3509
    0.8486    2.8606   -9.2705
   -2.4922    8.5000   -3.9532

入力引数

すべて折りたたむ

加速度計の 6 つのキャリブレーション方向の測定値。N 行 3 列の行列として指定します。N は測定値の総数です。行列の各行は加速度計のキャリブレーション方向に示す 6 つのキャリブレーション方向のいずれかにおける加速度計の測定値です。最良の結果を得るには、6 つのすべての方向について、等しい数の測定値を行列に含める必要があります。

関数は D のデータを解釈するとき、既定では、地球重力定数 g を 9.81m/s2 または 1 のいずれかの、データのノルムの平均に近い方と仮定します。

データ型: single | double

加速度計の x が上向きの方向の測定値。N1 行 3 列の行列として指定します。N1 は x が上向きの測定値の総数です。行列の各行は加速度計の測定値です。x が上向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

加速度計の x が下向きの方向の測定値。N2 行 3 列の行列として指定します。N2 は x が下向きの測定値の総数です。行列の各行は加速度計の測定値です。x が下向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

加速度計の y が上向きの方向の測定値。N3 行 3 列の行列として指定します。N3 は y が上向きの測定値の総数です。行列の各行は加速度計の測定値です。y が上向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

加速度計の y が下向きの方向の測定値。N4 行 3 列の行列として指定します。N4 は y が下向きの測定値の総数です。行列の各行は加速度計の測定値です。y が下向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

加速度計の z が上向きの方向の測定値。N5 行 3 列の行列として指定します。N5 は z が上向きの測定値の総数です。行列の各行は加速度計の測定値です。z が上向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

加速度計の z が下向きの方向の測定値。N6 行 3 列の行列として指定します。N6 は z が下向きの測定値の総数です。行列の各行は加速度計の測定値です。z が下向きの方向の定義については、加速度計のキャリブレーション方向のセクションを参照してください。

データ型: single | double

地球重力定数。正のスカラーとして指定します。この引数を指定しない場合、関数は地球重力定数 g を 9.81m/s2 または 1 のいずれかの、D のデータのノルムの平均に近い方と仮定します。

例: 9.807

データ型: single | double

出力引数

すべて折りたたむ

キャリブレーション行列。3 行 3 列の行列として返されます。

データ型: single | double

キャリブレーション オフセット ベクトル。1 行 3 列のベクトルとして返されます。

データ型: single | double

詳細

すべて折りたたむ

バージョン履歴

R2023b で導入