function [sys,x0,str,ts] = admittance_ctrl(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2, 4, 9 }
sys = [];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 2;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 4;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0 = [0 0];
str = [];
ts = [];
function sys = mdlDerivatives(t,x,u)
% 质量与估计质量
% m = 1.0; % 单位:kg
mhat = 0.8; % 单位:kg
% 弹簧刚度
ke = 10; % 单位:N/m
% % 粘性系数和库仑摩擦系数(coefficients of viscous and Coulomb friction)
% cv = 1.0; % 单位:N*s/m
% Fc = 3.0; % 单位:N
% PD控制系数
kp = 1e6; % 单位:N/m
% kd = 2*0.7*sqrt(kp*m); % 单位:N*s/m
Md = mhat; % 单位:kg
Kd = 100; % 单位:N/m
Dd = 2*0.7*sqrt(kp*Md); % 单位:N*s/m
% 设定值
X0 = u(1); dX0 = u(2); ddX0 = u(3);
Fext = u(4);
% Fext = -ke*X;
Xd = x(1);
dXd = x(2);
ddXd = 1/Md*(Fext - Kd*(Xd-X0) - Dd*(dXd-dX0)) + ddX0;
sys(1) = dXd;
sys(2) = ddXd;
function sys = mdlOutputs(t,x,u)
sys(1) = x(1);
sys(2) = x(2);
导纳和阻抗控制仿真资源
需积分: 1 62 浏览量
2024-03-25
16:56:59
上传
评论
收藏 23KB ZIP 举报
松雪远航
- 粉丝: 33
- 资源: 2
最新资源
- 部署yolov8的tensorrt模型支持检测分割姿态估计的C++源码+部署步骤.zip
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈