自分はロボットをシリ​アル通信で動かしてい​るのですが、 滑らかに動かすために​、時間を経過時間で表​したいのですが、どの​ように表したらよいか​教えて頂けますでしょ​うか。よろしくお願い​します。

3 次查看(过去 30 天)
雷太 鈴木
雷太 鈴木 2022-12-9
omega = 3.0;
m = 0.5;
P = [];
t0 = 0; %基準時間
t1 = 1;%現在の時間
for t1 = 1 : n
t = (t1 - t0) ; %時刻
theta = a * sin(omega * t); %角度θ
value = ((4095.0/(2.0*pi))*theta)+2048; %指令値
Value = round(value); %指令値valueを切り捨てたValue
str1 = sprintf("%d",Value); %数値を文字列に
writeline(s,str1);
writeline(s,"R");
pause(m)
P=[P; t,theta,Value];
end
  1 个评论
Atsushi Ueno
Atsushi Ueno 2022-12-9
前の質問を踏まえた追加質問です。

请先登录,再进行评论。

回答(1 个)

Atsushi Ueno
Atsushi Ueno 2022-12-9
编辑:Atsushi Ueno 2022-12-9
前の質問も踏まえ:posixtime関数でUNIX時間 - Wikipediaを得ています。例えば今日2022年12月9日21時10分なら1670588089になります。小数以下第6位(マイクロ秒単位)まで時刻値が取得されます。
omega = 3.0; m = 0.5; a = 1; P = [];
while true
t = posixtime(datetime); % t = (t1 - t0) ; % 時刻
theta = a * sin(omega * t); %角度θ
value = ((4095.0/(2.0*pi))*theta)+2048; %指令値
Value = round(value); %指令値valueを切り捨てたValue
%% ここは置いときます
% str1 = sprintf("%d",Value); % 数値を文字列に
% writeline(s,str1);
% writeline(s,"R");
%% ここで結果をコマンドウィンドウで確認できます
% fprintf('value = %i\n',value);
pause(m);
P = [P; t,theta,Value]
end
P = 100×3
1.0e+09 * 1.670587637203717 -0.000000000078181 0.000001997000000 1.670587637205053 -0.000000000074185 0.000002000000000 1.670587637205461 -0.000000000072964 0.000002000000000 1.670587637205850 -0.000000000071800 0.000002001000000 1.670587637206386 -0.000000000070196 0.000002002000000 1.670587637207956 -0.000000000065497 0.000002005000000 1.670587637208044 -0.000000000065233 0.000002005000000 1.670587637208089 -0.000000000065098 0.000002006000000 1.670587637208201 -0.000000000064763 0.000002006000000 1.670587637208380 -0.000000000064227 0.000002006000000
  1 个评论
雷太 鈴木
雷太 鈴木 2022-12-13
ありがとうございます.おかげで実行通り出来ました.

请先登录,再进行评论。

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!