MATLAB Coderのコード生成時エラーの詳細
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
koya tanaka
le 24 Avr 2019
Réponse apportée : Shoumei
le 25 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にかけると、
以下の図のようになりました。
以下のエラーの出現理由がわからず、
(エラーの説明文もよく分かっていません。)
どのように対処すれば良いのか分かりません。
解決方法をご教示いただきたく思います。
0 commentaires
Réponse acceptée
Shoumei
le 25 Avr 2019
最初エラーメッセージに出ていますが、ahrsfilterのサンプルレートは動的可変にできない仕様となっています。
ですので、Coderで入力引数のデータ型を設定する際に、定数として定義する必要があります。
GUIですと、図のようにデータ型設定の一番下の選択肢「定数の定義」を選択します。
コマンドでコード生成しているのであれば、coder.Constantを使うと良いと思います。
0 commentaires
Plus de réponses (0)
Voir également
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!