角度がラジアンの場合、私の Matlab プログラムは適切に動作するため、以下のコードで cos 関数と sin 関数を呼び出します。角度が度単位であるため、cosd と sind を呼び出すと、プログラムが期待どおりに動作しません。
%Initial configuration of robot manipulator
%There are 7DOF( degrees of freedom) - 1 prismatic, 6 revolute
%vector qd represents these DOF
%indexes : d = gd( 1), q1 = qd( 2), ..., q6 = qd( 7)
qd( 1) = 1; % d = 1 m
qd( 2) = pi / 2; % q1 = 90 degrees
qd( 3 : 6) = 0; % q2 = ... = q6 = 0 degrees
qd( 7) = -pi / 2;
%Initial position of each joint - the tool is manipulated separately
%calculate sinusoids and cosines
[ c, s] = sinCos( qd( 2 : length( qd)));
ここにsinCosコードがあります
function [ c, s] = sinCos( angles)
%takes a row array of angles in degrees and returns all the
%sin( angles( 1) + angles( 2) + ... + angles( i)) and
%cos( angles( 1) + angles( 2) + ... + angles( i)) where
%1 <= i <= length( angles)
sum = 0;
s = zeros( 1, length( angles)); % preallocate for speed
c = zeros( 1, length( angles));
for i = 1 : length( angles)
sum = sum + angles( i);
s( i) = sin( sum); % s( i) = sin( angles( 1) + ... + angles( i))
c( i) = cos( sum); % c( i) = cos( angles( 1) + ... + angles( i))
end % for
% end function
プログラム全体で約700行になるので、上の部分だけ表示しました。私のプログラムは、2 つの障害物を避けながらゴールに到達しようとする冗長ロボットの動きをシミュレートします。
それで、私の問題は cos と cosd に関連していますか? cos と cosd には、私のプログラムに影響を与える異なる動作がありますか? または、明らかになった私のプログラムにバグがありますか?