Matlab を使用してエンコーダーで回転オブジェクトを追跡しようとしています。オブジェクトの角度位置を提供するエンコーダーを持っており、この情報をレーザーに渡しますが、オブジェクトと同じ速度でレーザーを動かすにはどうすればよいでしょうか? これは、レーザーがオブジェクトよりも遅く、オブジェクトにうまく追従していないためです! 私はこのコードを書きましたが、誰かアドバイスはありますか?
Alpha=pi/2
Positions = [];
t0 = clock;
while etime(clock,t0)<20;
position = data.Position; %here I read the angular position from the encoder
Positions = [Positions position];
A = [floor(Positions/360)];
angPos = position-(floor(position/360))*360;
AngPos = [Positions - A*360];
angRad = angPos*pi/180;
AngRad = [AngPos*pi/180];
Angle = angRad+Alpha;
thetaX = atan(cos(Angle).*(r/d));
thetaY = atan(sin(Angle).*(r/d));
VoltX=-(5/20)*thetaX*180/pi;
VoltY=(5/20)*thetaY*180/pi;
VoltageLimit = 10;
if (max(abs(VoltX))>VoltageLimit) || (max(abs(VoltY))>VoltageLimit)
error('Voltages too large');
end
session.outputSingleScan([VoltX VoltY]); %here I send the laser the angular position obtained before
data = motorA.ReadFromNXT();
end
速度を追加する必要があることはわかっているので、オブジェクトと同じ速度でレーザーを動かすことができますが、レーザーにその速度値を与える方法がわかりません!!
sec = etime(clock,t0);
Sec = [Sec sec];
vel=(diff(Positions)/diff(Sec));
Vel = [Vel vel]; %(deg/s);
ばかげた質問かもしれませんが、私は Matlab の初心者です! ありがとうございました!!!