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

3 次查看(过去 30 天)
koya tanaka
koya tanaka 2019-4-24
回答: Shoumei 2019-4-25
いつもお世話になっています。
現在、マイコンオンボードの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

采纳的回答

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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB Coder 的更多信息

Community Treasure Hunt

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

Start Hunting!