Matlab Coder fails generation for slerp() call with double quaternions

2 Ansichten (letzte 30 Tage)
I am using MATLAB coder to generate code for following function.
function [D] = getInterpolatedTransforms(q0,t0,q1,t1,steps,correction)
D = zeros(4,4,steps);
for i = 0:1:steps-1
coeff = single(i/steps);
qt = slerp(q0,q1,coeff);
tt = [t0*(1-coeff)+t1*coeff,1]';
D(1:3,1:3,i+1) = (quat2rotm(qt))*correction;
D(1:4,4,i+1) = tt;
end
end
I get following error while generating code at the "check for issues" step
??? This assignment writes a 'single' value into a 'double' type. Code generation does
not support changing types through assignment. Check preceding assignments or input
type specifications for type mismatches.
Error in ==>> quaternioncg Line: 48 Column: 17
Code generation failed: View Error Report
??? This assignment writes a 'single' value into a 'double' type. Code generation does
not support changing types through assignment. Check preceding assignments or input
type specifications for type mismatches.
Error in ==>> quaternioncg Line: 48 Column: 17
Code generation failed: View Error Report
The location of the error is in Matlab internal file quaternioncg.m
Please help me reolve the issue. I am new to this tool.
  1 Kommentar
James Tursa
James Tursa am 2 Nov. 2020
Maybe you could tell us which line is generating the error?
Could you use double types instead? E.g.,
coeff = double(i/steps);

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Darshan Ramakant Bhat
Darshan Ramakant Bhat am 2 Nov. 2020
Solution 1 : Remove the single cast
function [D] = getInterpolatedTransforms(q0,t0,q1,t1,steps,correction)
D = zeros(4,4,steps);
for i = 0:1:steps-1
coeff = i/steps;
qt = slerp(q0,q1,coeff);
tt = [t0*(1-coeff)+t1*coeff,1]';
D(1:3,1:3,i+1) = (quat2rotm(qt))*correction;
D(1:4,4,i+1) = tt;
end
end
Solution 2: Make the input quaternion as single
>> a = quaternion(single([45,0,0]),'eulerd','ZYX','frame');
>> c = quaternion(single([-45,0,0]),'eulerd','ZYX','frame');
>> codegen getInterpolatedTransforms -args {a,1:3,c,3:5,10,0.5} -report

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by