目录
一、相位角振荡器描述
当系统运动时,通过相平面分析,确定系统在重复环还是极限环中运动[6]。当系统为重复环时,说明系统运动为周期性运动。此时,通过创建“相位角振荡器”,以人体的相位角为变量进行添加能量,增加的能量可以有助于运动。同样,负相位角也可以用来从运动中减去能量,实现阻碍运动。这样在外骨骼机器人中使用“相位角振荡器”控制器,可以帮助穿戴者降低或提高代谢成本[1]。
二、二阶系统方程
将人体看做二阶系统,如下所示
其中,m表示质量,b表示阻尼,k表示刚度。
2.1 强迫函数
使用基于正弦(相位角)或正弦(相位角)+余弦(相位角)的非线性强迫函数。因为正弦函数不可能大于或小于1或- 1,所以函数是有界的。
2.2 强制函数为sin函数[2]
使用“相位角振荡器”来增加机械系统的能量。在图1中,定义了正弦相位角。
如果c是正的,系统来回振荡。能量总是有界的,因为当在极限上,分母和分子消去,等于c。如果c为负,则能量耗散,系统状态归零。所以,基于相位角的强迫函数可以将能量泵入系统或从系统中耗散能量。
图1.相位角定义
图2.关节角度和力矩图
图3.相角图
2.3 强制函数为sin函数+cos函数[3]
其中,sin函数调节幅值,cos函数调节频率。
三、代码实现
dt = 0.02;
t_end = 3;
t = linspace(0, t_end, t_end/dt+1);
%% 关节轨迹曲线表达式[5]
trj = 0.12268 + 0.3675 * sin(2 * pi * t + 2.03) + 0.04 * sin(4 * pi * t + 4.76) + 0.02 * sin(6 * pi * t + 0.24);
figure(1)
plot(t, trj);
hold on
%% 计算角速度
angular_velocity = diff(trj) / dt; % 角速度
t_diff = t(1:end-1); % 调整时间向量以匹配角速度的长度
% 计算相角phi
phi = atan2(angular_velocity, trj(1:end-1));
% 计算F
F = sin(phi);
%% 绘制F力矩
figure(1) //图2关节角度和辅助力矩图
plot(t_diff, F);%绘制力矩值=sin(相角),呈现方波形式
xlabel('Time (s)');
ylabel('F = sin(phi)');
title('F vs Time');
hold on
plot(t_diff,trj(1:end-1))%绘制关节角度曲线
%% 绘制相角
figure(2) //相角图
plot(phi)
备注:当数据为人体关节轨迹曲线时,F = sin(phi)为重复环,当数据为人体髋关节角度时,F = sin(phi)为极限环,需要多个周期后,当为周期运动后才可以变为重复环。
参考博客及文献:
[1].ADDING AND SUBTRACTING ENERGY TO BODY MOTION – PHASE OSCILLATOR,2014
[2].Limit Cycles to Enhance Human Performance Based on Phase Oscillators,2015
[3].Nonlinear, Phase-Based Oscillator to Generate and Assist Periodic Motions,2017
[4].基于振荡器的助行外骨骼跟随助力控制研究,2019
[5].A robust phase oscillator design for wearable robotic systems,2020