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

11 visualizaciones (últimos 30 días)
koya tanaka
koya tanaka el 24 de Abr. de 2019
Respondida: Shoumei el 25 de Abr. de 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

Respuesta aceptada

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

Más respuestas (0)

Categorías

Más información sobre MATLAB Coder en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!