Matlab Coder fails generation for slerp() call with double quaternions
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kunal Patel
am 30 Okt. 2020
Kommentiert: Kunal Patel
am 9 Nov. 2020
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
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);
Akzeptierte Antwort
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)
Siehe auch
Kategorien
Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!