ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

産業用 3 自由度ロボット:ベクトル/行列パラメーターを使用した MIMO システムの C MEX ファイル モデリング

この例では、スカラー、ベクトル、行列パラメーターを使用する C MEX モデル ファイルの設計方法を説明します。モデル化の基礎として、多少理想化された産業用ロボットを使用します。ここでは、導出された状態空間方程式の左辺は明示的に与えられていません。わかりやすくするため、複数の実験データを同定部分で使用します。

Manutec R3 ロボットのモデル化

検討するロボットの Manutec r3 は、Siemens の子会社である Manutec が製造したものです。実際には、ロボットには 6 種類のリンクがあり、3 つはツールを中央に位置決めし、3 つはツール自体の方向を決めます。ここで、ツールの中央への移動に関して 3 自由度をもつロボットのモデル化のみを検討します。ロボットのコンポーネントは、自由度 1 の回転ジョイントで接続された剛体としてモデル化されます。ギア ボックスでの摩擦およびその他の複雑な現象、およびモーターとセンサーのダイナミクスは無視されます。このように簡略化しても、結果として得られるモデル構造は複雑になります。

以下で実施される同定実験に使用されるモデル構造は、次の文献で詳細に記述されています。

M. Otter、S. Turk 著、『The DFVLR Models 1 and 2 of the Manutec r3 Robot』Institute for Robotics and System Dynamics、German Aerospace Research Establishment (DLR)、Oberpfaffenhofen、1988 年 5 月

また、簡略化された Manutec r3 ロボットに基づくパラメーター推定は、次の書籍でこれまでに検討されています。

K. Schittkowski 著、『Numerical Data Fitting in Dynamical Systems』Kluwer Academic Publishers、239-242 ページ、2002 年

図 1 に、Manutec r3 ロボットの概略図を示します。

図 1: Manutec r3 ロボットの概略図

簡略化した Manutec r3 ロボットのダイナミクスは、ベクトル方程式で与えられます。

          d^2                               d
  M(q(t)) ---- q(t) = F(u(t)) + G(q(t)) + H(-- q(t), q(t))
          dt^2                              dt
                                                    T
where the column vector q(t) = [q_1(t) q_2(t) q_3(t)]  describes the
relative angle between arm i-1 and arm i for i = 1, 2, 3, with arm 0
corresponding to the coordinate of the fundament. The torque controls
u(t) = [u_1(t) u_2(t) u_3(t)]^T applied to the three motors represent the
exogenous force moving the robot. These signals are individually scaled
(via the force coefficients Fc(1), Fc(2) and Fc(3))) to provide the
driving force:
                                                    T
  F(u(t)) = [Fc(1)*u_1(t) Fc(2)*u_2(t) Fc(3)*u_3(t)]

質量行列 M(q(t)) は複雑な対称正有限 3 行 3 列の行列で、次の要素があります。

  M(1, 1) = c_1(p) + c_2(p)*cos(q_2(t))^2 + c_3(p)*sin(q_2(t))^2 +
            c_4(p)*cos(q_2(t)+q_3(t)) + c_5(p)*sin(q_2(t)+q_3(t)) +
            c_6(p)*sin(q_2(t))*sin(q_2(t)+q_3(t))
  M(1, 2) = c_7(p)*cos(q_2(t)) + c_8(p)*cos(q_2(t)+q_3(t))
  M(1, 3) = c_9(p)*cos(q_2(t)+q_3(t))
  M(2, 1) = M(1, 2)
  M(2, 2) = c_10(p) + c_11(p)*cos(q_3(t))
  M(2, 3) = c_12(p) + c_13(p)*cos(q_3(t))
  M(3, 1) = M(1, 3)
  M(3, 2) = M(2, 3)
  M(3, 3) = c_14(p)

ここで、c_1(p)、...、c_14(p) はロボット パラメーター p の 14 の関数です。

ロボットは 2 つのその他の力の影響も受けます。最初の力は G(q(t)) で、重力によって発生し、次の要素をもちます。

         G_1(p) = 0
  G(p) = G_2(p) = b_1(p)*sin(q_2(t)) + b_2(p)*sin(q_2(t)+q_3(t))
         G_3(p) = b_3(p)*sin(q_2(t)+q_3(t))

ここで、b_1(p)、...、b_3(p) はパラメーター p の 3 つの関数です。2 番目の力 h(d/dt q(t), q(t)) はコリオリ力および遠心力によって生じ、Christoffel 記号によって計算されます。

                   d                  d                  d
  g_ijk = -0.5*(-------- M(i, j) + -------- M(i, k) - -------- M(j, k))
                d q_k(t)           d q_j(t)           d q_k(t)

は、次のように計算されます。

      d                 3   3        d          d
  H_i(-- q(t), q(t)) = sum(sum(g_ijk*-- q_k(t))*-- q_j(t))
      dt               j=1 k=1       dt         dt

for i = 1, 2, 3.

質量行列 M(q(t)) は可逆 (物理的に対象となる角度について) で、ロボットのダイナミクスは次のように記述できます。

  d^2                -1                       d
  ---- q(t) = M(q(t))  (F(u(t)) + G(q(t)) + H(-- q(t), q(t)))
  dt^2                                        dt

状態を次のように導入します。

  x_1(t) = q_1(t)         relative angle between fundament and arm 1.
  x_2(t) = q_2(t)         relative angle between arm 1 and arm 2.
  x_3(t) = q_3(t)         relative angle between arm 2 and arm 3.
  x_4(t) = d/dt q_1(t)    relative velocity between fundament and arm 1.
  x_5(t) = d/dt q_2(t)    relative velocity between arm 1 and arm 2.
  x_6(t) = d/dt q_3(t)    relative velocity between arm 2 and arm 3.

IDNLGREY モデリングに適した、状態空間モデル構造が得られます。まとめると、このモデルには 3 つの入力、6 つの状態、3 つの出力、28 の異なるモデル パラメーターまたは定数があります。

IDNLGREY Manutec R3 ロボット モデル オブジェクト

このアプリケーションに開発された C MEX モデル ファイルはきわめて複雑です。詳細の多くを省き、概略のみを提供します。興味のある読者は、robot_c.c で全体像を確認してください。上記の方程式により、28 (= Np) 個の異なるパラメーターまたは定数があるロボット モデルが得られ、論理的な理由で 10 (= Npo) 個の一意の次のパラメーター オブジェクトに入力されます。3 つのスカラー、5 つのベクトル、2 つの行列。状態更新関数 compute_dx には、次の縮小された入力引数リストがあります。

  void compute_dx(double *dx, double *x, double *u, double **p)

ここで p には 10 個のパラメーター オブジェクトが格納されます。

  A. g = p[0], pl = p[5] and Ia1 = p[8] are scalars.
  B. Fc = p[1], r = p[2], Im = p[3], m = p[4] and L = p[6] are column
     vectors with two or three entries.
  C. com = p[7] is a 2-by-2 matrix and Ia = p[9] a 4-by-2 matrix.

スカラーは通常どおり p[0] として参照され (MATLAB ファイルでは p(1))、i 番目のベクトル要素は p[i-1] で参照されます (MATLAB ファイルでは p(i))。C MEX モデル ファイルに渡される行列は、明白な順序で列が相互に積み上げられるという点で異なります。したがって、com(1, 1) は com[0]、com(2, 1) は com[1]、com(1, 2) は com[3]、com(2, 2) は com[3] として参照されます。同様に、Ia の 8 番目の要素は Ia[i] (i = 0、1、...、7) で取得されます。

これにより、compute_dx は次の計算ステップを実行します (ここでは多くの割り当てを省いています)。ステップ A ~ E の目的は、方程式を再構成して、状態を明示的に計算できるようにすることです。

  void compute_dx(double *dx, double *x, double *u, double **p)
  {
      /* Declaration of model parameters and intermediate variables. */
      double *g, *Fc, *r, *Im, *m, *pl, *L, *com, *Ia1, *Ia;
      double M[3][3];      /* Mass matrix.                                */
      ...
      /* Retrieve model parameters. */
      ...
      /* A. Components of the symmetric and positive definite mass matrix M(x, p), a 3x3 matrix. */
      M[0][0] = Ia1[0] + r[0]*r[0]*Im[0] + com[2]*com[2]*m[1] ...
      ...
      M[2][2] = Ia[4] + r[2]*r[2]*Im[2] + com[3]*com[3]*m[1] + L[1]*L[1]*pl[0];
      /* B. Inputs. */
      F[0] = Fc[0]*u[0]; ...
      /* C. Gravitational forces G. */
      G[0] = 0; ...
      /* D. Coriolis and centrifugal force components Gamma and forces H. */
      Gamma[1] = (Ia[6] - Ia[5] - com[3]*com[3]*m[1] ...
      /* E. Compute inverse of M. */
      Det = M[0][0]*M[1][1]*M[2][2] + 2*M[0][1]*M[1][2]*M[0][2] ...
      /* State equations. */
      /* x[0]: Relative angle between fundament and arm 1. */
      /* x[1]: Relative angle between arm 1 and arm 2. */
      /* x[2]: Relative angle between arm 2 and arm 3. */
      /* x[3]: Relative velocity between fundament and arm 1. */
      /* x[4]: Relative velocity between arm 1 and arm 2. */
      /* x[5]: Relative velocity between arm 2 and arm 3. */
      dx[0] = x[3];
      dx[1] = x[4];
      dx[2] = x[5];
      dx[3] = Minv[0][0]*(F[0]+G[0]+H[0]) + Minv[0][1]*(F[1]+G[1]+H[1]) + Minv[0][2]*(F[2]+G[2]+H[2]);
      dx[4] = Minv[0][1]*(F[0]+G[0]+H[0]) + Minv[1][1]*(F[1]+G[1]+H[1]) + Minv[1][2]*(F[2]+G[2]+H[2]);
      dx[5] = Minv[0][2]*(F[0]+G[0]+H[0]) + Minv[1][2]*(F[1]+G[1]+H[1]) + Minv[2][2]*(F[2]+G[2]+H[2]);
  }

出力更新関数 compute_y はかなりシンプルです。

  /* Output equations. */
  void compute_y(double y[], double x[])
  {
      /* y[0]: Relative angle between fundament and arm 1. */
      /* y[1]: Relative angle between arm 1 and arm 2. */
      /* y[2]: Relative angle between arm 2 and arm 3. */
      y[0] = x[0];
      y[1] = x[1];
      y[2] = x[2];
  }

C MEX モデル ファイルについての詳細は、「非線形グレー ボックス モデルの同定に関するチュートリアル: IDNLGREY モデル ファイルの作成」を参照してください。

これで、簡略化された Manutec r3 ロボットの移動を反映する IDNLGREY オブジェクトを作成するための十分な知識が得られました。入力の記述から始めます。

InputName = {'Voltage applied to motor moving arm 1'; ...
             'Voltage applied to motor moving arm 2'; ...
             'Voltage applied to motor moving arm 3'};
InputUnit = {'V'; 'V'; 'V'};

次に、6 つの状態を定義します。最初の 3 つは出力です。

StateName  = {'\Theta_1'; ...   % Relative angle between fundament and arm 1
              '\Theta_2'; ...   % Relative angle between arm 1 and arm 2
              '\Theta_3'; ...   % Relative angle between arm 2 and arm 3
              'Vel_1'; ...     % Relative velocity between fundament and arm 1
              'Vel_2'; ...     % Relative velocity between arm 1 and arm 2
              'Vel_3'...       % Relative velocity between arm 2 and arm 3
              };
StateUnit  = {'rad'; 'rad'; 'rad'; 'rad/s'; 'rad/s'; 'rad/s'};
OutputName = StateName(1:3);
OutputUnit = StateUnit(1:3);

前述したように、モデルには 28 個の異なるパラメーターまたは定数があり、つぎのように 10 個のパラメーター オブジェクトにまとめられます。一部のパラメーターは物理的な理由から、独自の最小値が指定されています。これらの最小パラメーター値は、パラメーター値の指定に使用されたものと同じサイズの要素のセル配列で定義されます。

ParName  = {'Gravity constant';                          ... % g, scalar.
            'Voltage-force constant of motor';           ... % Fc, 3-by-1 vector, for motor 1, 2, 3.
            'Gear ratio of motor';                       ... % r, 3-by-1 vector, for motor 1, 2, 3.
            'Moment of inertia of motor';                ... % Im, 3-by-1 vector, for motor 1, 2, 3.
            'Mass of arm 2 and 3 (incl. tool)';          ... % m, 2-by-1 vector, for arm 2 and 3.
            'Point mass of payload';                     ... % pl, scalar.
            'Length of arm 2 and 3 (incl. tool)';        ... % L, 2-by-1 vector, for arm 2 and 3.
            'Center of mass coordinates of arm 2 and 3'; ... % com, 2-by-2 matrix, 1:st column for arm 2 (x-,z-coord), 2:nd for arm 3.
            'Moment of inertia arm 1, element (3,3)';    ... % Ia1, scalar.
            'Moment of inertia arm 2 and 3'              ... % Ia, 4-by-2 matrix. 1:st column for arm 2, 2:nd for arm 3;
                                                         ... %    column elements: 1: (1,1); 2: (2,2); 3: (3,3); 4: (1,3) and (3,1).
           };
ParUnit  = {'m/s^2'; 'N*m/V'; ''; 'kg*m^2'; 'kg'; 'kg'; 'm'; 'm'; 'kg*m^2'; 'kg*m^2'};
ParValue = {9.81; [-126; 252; 72]; [-105; 210; 60]; [1.3e-3; 1.3e-3; 1.3e-3]; ...
            [56.5; 60.3]; 10; [0.5; 0.98]; [0.172 0.028; 0.205 0.202];        ...
            1.16; [2.58 11.0; 2.73 8.0; 0.64 0.80; -0.46 0.50]};
ParMin   = {eps(0); -Inf(3, 1); -Inf(3, 1); eps(0)*ones(3, 1); [40; 40]; ...
            eps(0); eps(0)*ones(2, 1); eps(0)*ones(2); -Inf; -Inf(4, 2)};
ParMax   = Inf;   % No maximum constraint.

モデル ファイルや初期状態などを指定した後、Manutec r3 IDNLGREY モデル オブジェクトは次のように作成されます。

FileName      = 'robot_c';               % File describing the model structure.
Order         = [3 3 6];                 % Model orders [ny nu nx].
Parameters    = struct('Name', ParName, 'Unit', ParUnit, 'Value', ParValue, ...
                       'Minimum', ParMin, 'Maximum', ParMax, 'Fixed', false);
InitialStates = struct('Name', StateName, 'Unit', StateUnit, 'Value', 0, ...
                       'Minimum', -Inf, 'Maximum', Inf, 'Fixed', true);
Ts            = 0;                       % Time-continuous system.
nlgr = idnlgrey(FileName, Order, Parameters, InitialStates, Ts,     ...
                'Name', 'Manutec r3 robot', 'InputName', InputName, ...
                'InputUnit', InputUnit, 'OutputName', OutputName,   ...
                'OutputUnit', OutputUnit,  'TimeUnit', 's');

入出力データ

次に、使用できる入出力データを読み込みます。出力は、上記のIDNLGREY モデル構造を使用してシミュレートされています。保存する前に、出力は一部のノイズの影響を受けています。

load(fullfile(matlabroot, 'toolbox', 'ident', 'iddemos', 'data', 'robotdata'));

ファイルには 2 つの異なる (シミュレーションの) 実験から得られたデータが含まれ、それぞれサンプリング レート (Ts) 0.02 秒を使用して生成された入出力サンプルが 101 個含まれています。初期状態ゼロから始めて、実験に使用された 3 つのモーターへの入力 [V] はすべて定数に維持されていました。

  u(t) = [u_1(t) u_2(t) u_3(t)]^T =  [0.20 0.05 0.03]^T   % Experiment 1.
  u(t) = [u_1(t) u_2(t) u_3(t)]^T = -[0.20 0.05 0.03]^T   % Experiment 2.

生成された出力には、上記の記述に従ってデータが保持されます。このモデル化の目的のため、2 つの実験から得られたデータをもつ 1 つの IDDATA オブジェクト z を作成します。

z = merge(iddata(y1, u1, 0.02), iddata(y2, u2, 0.02));
z.Name = 'Manutec r3 robot';
z.InputName = nlgr.InputName;
z.InputUnit = nlgr.InputUnit;
z.OutputName = nlgr.OutputName;
z.OutputUnit = nlgr.OutputUnit;
z.Tstart = 0;
z.TimeUnit = 's';

初期 Manutec R3 ロボット モデルの性能

パラメーター推定に進む前に、初期パラメーター値を使用してモデルをシミュレートします。既定の微分方程式ソルバー (ode45) を、既定の設定で使用されるよりは相対精度が高い要件で使用します。シミュレーションの出力と実出力がプロット ウィンドウに表示され、示されるように一致は改善されています (3 番目の出力である、アーム 2 とアーム 3 の間の相対角度の実際の値とシミュレーションの値は除く)

nlgr.Algorithm.SimulationOptions.RelTol = 1e-5;
compare(z, nlgr);

図 2: 初期の Manutec r3 ロボット モデルの実際の出力とシミュレーションの出力の比較

パラメーター推定

Manutec r3 パラメーターの同定は非常に困難です。その理由の一部は、使用できるデータは励起の点で限定されており、ロボット ダイナミクスは非線形であるためです。タスクを簡略化するため、最後の 4 つのパラメーターのみを推定します。これは、アーム 3 とツールに関連する慣性モーメントです。

for k = 1:size(nlgr, 'Npo')-1   % Fix all parameters of the first 9 parameter objects.
    nlgr.Parameters(k).Fixed = true;
end
nlgr.Parameters(end).Fixed(:, 1) = true;   % Fix the moment of inertia parameters for arm 2.

今度は、Levenberg-Marquardt パラメーター推定アルゴリズムを使用します。

nlgr = pem(z, nlgr, 'SearchMethod', 'lm', 'Display', 'On');

推定された Manutec R3 ロボット モデルの性能

次に、推定された Manutec r3 ロボットの性能をシミュレーションによって調べます。

compare(z, nlgr);

図 3: 推定された Manutec r3 ロボット モデルの実際の出力とシミュレーションの出力の比較

図からわかるように、シミュレーションの出力と実出力との一致は大幅に改善され、特に 3 番目の出力については顕著です (アーム 2 とアーム 3 の間の相対角度)。実パラメーターと推定されたパラメーターは互いに似通っています。

disp('   True     Estimated parameter vector');
ptrue = [9.81; -126; 252; 72; -105; 210; 60; 1.3e-3; 1.3e-3; 1.3e-3; ...
         56.5; 60.3; 10; 0.5; 0.98; 0.172; 0.205; 0.028; 0.202; 1.16; ...
         2.58; 2.73; 0.64; -0.46; 5.41; 5.60; 0.39; 0.33];
fprintf('   %1.3f    %1.3f\n', ptrue(25), nlgr.Parameters(end).Value(1, 2));
fprintf('   %1.3f    %1.3f\n', ptrue(26), nlgr.Parameters(end).Value(2, 2));
fprintf('   %1.3f    %1.3f\n', ptrue(27), nlgr.Parameters(end).Value(3, 2));
fprintf('   %1.3f    %1.3f\n', ptrue(28), nlgr.Parameters(end).Value(4, 2));
   True     Estimated parameter vector
   5.410    5.414
   5.600    5.609
   0.390    0.390
   0.330    0.330

推定された Manutec r3 ロボット モデルを、PRESENT コマンドでさらに調べてみます。

present(nlgr);
                                                                                                             
nlgr =                                                                                                       
Continuous-time nonlinear grey-box model defined by 'robot_c' (MEX-file):                                    
                                                                                                             
   dx/dt = F(t, u(t), x(t), p1, ..., p10)                                                                    
    y(t) = H(t, u(t), x(t), p1, ..., p10) + e(t)                                                             
                                                                                                             
 with 3 inputs, 6 states, 3 outputs, and 4 free parameters (out of 28).                                      
                                                                                                             
 Inputs:                                                                                                     
    u(1)   Voltage applied to motor moving arm 1(t) [V]                                                      
    u(2)   Voltage applied to motor moving arm 2(t) [V]                                                      
    u(3)   Voltage applied to motor moving arm 3(t) [V]                                                      
 States:                       initial value                                                                 
    x(1)   \Theta_1(t) [rad]   xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
    x(2)   \Theta_2(t) [rad]   xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
    x(3)   \Theta_3(t) [rad]   xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
    x(4)   Vel_1(t) [rad/s]    xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
    x(5)   Vel_2(t) [rad/s]    xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
    x(6)   Vel_3(t) [rad/s]    xinit@exp1   0   (fix) in [-Inf, Inf]                                         
                               xinit@exp2   0   (fix) in [-Inf, Inf]                                         
 Outputs:                                                                                                    
    y(1)   \Theta_1(t) [rad]                                                                                 
    y(2)   \Theta_2(t) [rad]                                                                                 
    y(3)   \Theta_3(t) [rad]                                                                                 
 Parameters:                                                    value      standard dev                      
    p1        Gravity constant [m/s^2]                              9.81             0   (fix) in ]0, Inf]   
   p2(1)      Voltage-force constant of motor [N*m/V]               -126             0   (fix) in [-Inf, Inf]
   p2(2)                                                             252             0   (fix) in [-Inf, Inf]
   p2(3)                                                              72             0   (fix) in [-Inf, Inf]
   p3(1)      Gear ratio of motor                                   -105             0   (fix) in [-Inf, Inf]
   p3(2)                                                             210             0   (fix) in [-Inf, Inf]
   p3(3)                                                              60             0   (fix) in [-Inf, Inf]
   p4(1)      Moment of inertia of motor [kg*m^2]                 0.0013             0   (fix) in ]0, Inf]   
   p4(2)                                                          0.0013             0   (fix) in ]0, Inf]   
   p4(3)                                                          0.0013             0   (fix) in ]0, Inf]   
   p5(1)      Mass of arm 2 and 3 (incl. tool) [kg]                 56.5             0   (fix) in [40, Inf]  
   p5(2)                                                            60.3             0   (fix) in [40, Inf]  
    p6        Point mass of payload [kg]                              10             0   (fix) in ]0, Inf]   
   p7(1)      Length of arm 2 and 3 (incl. tool) [m]                 0.5             0   (fix) in ]0, Inf]   
   p7(2)                                                            0.98             0   (fix) in ]0, Inf]   
   p8(1,1)    Center of mass coordinates of arm 2 and 3 [m]        0.172             0   (fix) in ]0, Inf]   
   p8(2,1)                                                         0.205             0   (fix) in ]0, Inf]   
   p8(1,2)                                                         0.028             0   (fix) in ]0, Inf]   
   p8(2,2)                                                         0.202             0   (fix) in ]0, Inf]   
    p9        Moment of inertia arm 1, element (3,3) [kg*m^2]       1.16             0   (fix) in [-Inf, Inf]
   p10(1,1)   Moment of inertia arm 2 and 3 [kg*m^2]                2.58             0   (fix) in [-Inf, Inf]
   p10(2,1)                                                         2.73             0   (fix) in [-Inf, Inf]
   p10(3,1)                                                         0.64             0   (fix) in [-Inf, Inf]
   p10(4,1)                                                        -0.46             0   (fix) in [-Inf, Inf]
   p10(1,2)                                                      5.41361    0.00179232   (est) in [-Inf, Inf]
   p10(2,2)                                                      5.60864    0.00808859   (est) in [-Inf, Inf]
   p10(3,2)                                                      0.38998   0.000167059   (est) in [-Inf, Inf]
   p10(4,2)                                                     0.330494   0.000221084   (est) in [-Inf, Inf]
                                                                                                             
The model was estimated from the data set 'Manutec r3 robot', which                                          
contains 202 data samples.                                                                                   
Loss function 9.40846e-25 and Akaike's FPE 9.78107e-25                                                       
Created:       09-Aug-2013 03:08:24                                                                          
Last modified: 09-Aug-2013 03:08:33                                                                          

一部の同定結果

この場合、実パラメーターに非常に近いパラメーターが得られます。ただし、一般には、実パラメーターが見つからない理由がいくつかあります。

  1. The available data is not "informative enough" for identifying the
     parameters (the data is not persistently exciting).
  2. The data is corrupted by so much noise that it is virtually
     impossible to find the true parameters.
  3. A local and not the searched-for global minimum is found. This risk
     is always present when using iterative search algorithms.
  4. The parameters of the model structure are not uniquely
     identifiable. Generally speaking, this risk becomes larger when
     more parameters are estimated. (Estimating all 28 parameters of the
     Manutec r3 robot, e.g., typically leads to some physically
     impossible parameter values.)
  5. The model structure is just "too complex" or contains
     nonlinearities that are not "sufficiently smooth".

まとめ

このチュートリアルの主な目的は、IDNLGREY C MEX モデリング フレームワークにベクトルまたは行列であるパラメーターを含める方法を説明しました。また、ロボット モデリングの例について実施し、要求される明示的な状態空間フォームに一致させるために方程式を操作しました。

その他の情報

System Identification Toolbox™ を使った動的システムの同定についての詳細は、System Identification Toolbox 製品の情報ページを参照してください。

この情報は役に立ちましたか?