MATLAB Coderのコード生成時エラーの詳細

7 Ansichten (letzte 30 Tage)
koya tanaka
koya tanaka am 24 Apr. 2019
Beantwortet: Shoumei am 25 Apr. 2019
いつもお世話になっています。
現在、マイコンオンボードの9軸センサのログデータからオイラー角を出しています。
最終的には、マイコンボードからC++でリアルタイムにオイラー角を出したいので、
MATLABで、9DoF→オイラー角の変換関数を作成し、
これをMATLAB Coderで.cppとして生成しようとしているところです。
以下のコードが該当のコードです。
function [theta, phi, psi] = AHRS(dt, ax, ay, az, gx, gy, gz, mx, my, mz)
%#codegen
FUSE = ahrsfilter("SampleRate", 1 / dt);
[orientation, ~] = FUSE([ax ay az], [gx gy gz], [mx my mz]);
[qA, qB, qC, qD] = parts(orientation);
quatArr = [qA, qB, qC, qD];
eulZYX = quat2eul(quatArr,"ZYX");
euler = rad2deg(eulZYX);
theta = euler(3);
phi = euler(2);
psi = euler(1);
end
これを、MATLAB Coderにかけると、
以下の図のようになりました。
以下のエラーの出現理由がわからず、
(エラーの説明文もよく分かっていません。)
どのように対処すれば良いのか分かりません。
解決方法をご教示いただきたく思います。
error.png

Akzeptierte Antwort

Shoumei
Shoumei am 25 Apr. 2019
最初エラーメッセージに出ていますが、ahrsfilterのサンプルレートは動的可変にできない仕様となっています。
ですので、Coderで入力引数のデータ型を設定する際に、定数として定義する必要があります。
GUIですと、図のようにデータ型設定の一番下の選択肢「定数の定義」を選択します。
const.jpg
コマンドでコード生成しているのであれば、coder.Constantを使うと良いと思います。

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!