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

11 vues (au cours des 30 derniers jours)
koya tanaka
koya tanaka le 24 Avr 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

Réponse acceptée

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

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB Coder dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!