1

simulink の可変サイズの信号に大きな問題があります。可変サイズ (実行時) 配列を受け入れる必要がある関数を含む matlab 関数ブロックがあり、出力を評価する必要があります。特に、入力配列は整数を含む 1xn 配列であり、すべての整数は軌跡のセクションを表します (たとえば、直線、直線、円、半円、直線のシーケンスは配列 [1 1 2 で表すことができます) 3 1])。この配列、つまり軌道は、シミュレーション (ロボットの経路計画) で変更される可能性がありますが、大量のエラーが発生します。入力 (サイズなし) と出力 (上限を表すサイズ) のデータ/ポートに可変サイズを入れました。入力に上限を設定すると、可変サイズを設定しても、simulink はその次元の入力を正確に期待します。

入力サイズがわからないため、メモリを割り当てることができないため、Simulink はエラーを生成すると思います。手助け?

ありがとうございました

コードの一部...prim は可変サイズの入力ですが、すべての出力は可変サイズです。

function [x, y, vx, vy, ax, ay, tf] = trajectoryPlanUniform(prim, discr, xdiscr, 

ydiscr, xi, yi, vmax, amax)

len = size(prim, 2);

tf = zeros(1, len+1); tf(1, 1) = 0;
x = zeros(6, len); y = zeros(6, len); 
vx = zeros(6, len); vy = zeros(6, len); 
ax = zeros(6, len); ay = zeros(6, len);

xitemp = xdiscr; yitemp = ydiscr;
vxitemp = 0; vyitemp = 0; vftemp = vmax;
axitemp = 0; ayitemp = 0; aftemp = amax;

xytot = zeros(2,len+1);
xytot(1,1) = xi; xytot(2,1) = yi;

for i = 1:len
    [x(:,i), y(:,i), vx(:,i), vy(:,i), ax(:,i), ay(:,i), tf(i+1)] = trajectoryCallUniform(prim(i), discr, xitemp, yitemp, vxitemp, vyitemp, vftemp, axitemp, ayitemp, aftemp, tf(i), vmax, amax);

    [xitemp, yitemp, vxitemp, vyitemp, axitemp, ayitemp] = calculateTrajectoryUniform(prim(i), x(:,i), y(:,i), vx(:,i), vy(:,i), ax(:,i), ay(:,i), tf(i+1));

    xytot(1,i+1) = xitemp;
    xytot(2,i+1) = yitemp;

    if i == (len - 1)
        vftemp = 0;
        aftemp = 0;
    end
end

end
4

0 に答える 0