因为最近在做一个四足机器人的仿真在网上找了一些资料基本上都不是说得很明白。下面是我参考了一些资料自己做的一个项目和对一些细节做的总结,希望对大家有所帮助和解惑。本次联合仿真用到的软件主要是这三个Solidworks2018、Adams2018、Matlab2018b。

一、Solidworks2018绘制三维模型

因为本次做的是四足机器人的仿真模型比较复杂如果直接在Adams里面建模效率很慢,因为Adams本身在建模上面就不是很方便,建一些简单的可以直接在Adams里面建对于一些复杂的模型我还是建议用一些专业的软件进行建模

图(1)是我建好的一个模型,在这里我要说明一下因为四足机器人是通过八个电机作为动力源来驱动的所以建模的时候应把四条腿分解后装配,

图(1)

模型创建好后另存为.x_t格式,文件名建议不要带有中文,因为带有中文在Adams里面识别会报错。

二、ADAMS模型导入及建立运动副

打开Adams选择文件目录下的导入

文件类型选择Parasolid (*.xmt txt, *.x_ t, *.xmt_ bin,*.x_ b)

双击读取文件选择之前保存的.x_t格式的文件

选择模型名称随便命一个名字然后确认

这个时候模型已经成功导入了,接下来还要做一些仿真前的处理,Adams导入Solidworks2018模型后所有零件的名称都会变成一些字符,所以我们要修改一下零件的名字方便我们后续添加运动副,点击物体把所有的零件重新重命名

名字命名好后然后就是添加移动副点击连接

然后根据每个关节的需要添加旋转副和其他的

添加每条腿的驱动选择旋转驱动

这里的驱动是在之前添加的旋转副上继续添加的

添加足端的接触和重力设置如下不同的摩擦力可以根据具体的环境修改

接下来添加系统单元里面的状态变量,这个变量是用MATLAB来驱动的。

这里VARIABLE_y是机器人的质心位置在水平方向的变化,添加完八个状态变量后要把驱动函数修改一下,点击驱动把八个驱动里面的函数分别修改成VARVAL( Algebraic_Variable_Name )然后把之前创的八个状态变量名复制到对应的驱动即可

接下来创建MATLAB和Adams的联系,选择Adams Controls插件,导出机械系统

输入选择

VARIABLE_zq1

VARIABLE_zq2

VARIABLE_yq1

VARIABLE_yq2

VARIABLE_zh1

VARIABLE_zh2

VARIABLE_yh1

VARIABLE_yh2

输出选择VARIABLE_y

这个时候在Adams里面的设置算是已经完成了,

三、Matlab中与Adams联合仿真

在MATLAB中找到Adams导出Controls_Plant_2.m文件点击运行

在命令行窗口输入adams_sys点回车键弹出simulink界面

复制adams_sub创建一个新的空白模板

点击Library Browsrt

这里我们用的输入量是斜坡函数,在Simulink模块里面找到斜坡函数直接把他拖出来即可

每条大腿的转动副这里我们用“S函数”进行控制的编写,S-函数是系统函数(System Function)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。用户可以采用MATLAB代码,C,C++,FORTRAM等语言编写S-函数。S-函数由一种特定的语法构成,用来描述并实现连续系统、离散系统以及复合系统等动态系统;S-函数能够接受来自Simulink求解器的相关信息,并对求解器发出的命令作出适当的响应。

S-函数模板中的函数特别多,但目前主要使用到的有“mdlInitializeSizes“(模型初始化函数)与”mdlOutputs(t,x,u)“(计算输出函数)。

其初始化部分设置如下:

function [sys,x0,str,ts] = yhk(t,x,u,flag)
%t表示时间;x表示状态量;u输入量;flag特有的变量;
switch flag%判断flag当前处于哪个状态
    case 0%运行初始化函数,这个必须有
     [sys,x0,str,ts]=mdlInitializeSizes;
    case 1%微分
     sys=mdlDerivatives(t,x,u);%连续状态的导数
    case 2%更新
     sys=mdlUpdate(t,x,u);
    case 3%输出函数,这个几乎都是需要用到
     sys=mdlOutputs(t,x,u);
    case 4%输入函数
     sys=mdlGetTimeOfNextVarHit(t,x,u);
    case 9
    sys=mdlTerminate(t,x,u);
     otherwise
    DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
 
end

function [sys, x0 ,str, ts]= mdlInitializeSizes  %初始化,这块特别关键
sizes = simsizes;
sizes.NumContStates  = 1;%连续变量个数
sizes.NumDiscStates  = 0;%离散变量个数
sizes.NumOutputs     = 1;%输出个数;输入与输出个数必须完全对应
sizes.NumInputs      = 1;%输入个数
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0 =[0];
str = []; 
% Ts=0.0001;
ts  = [0 0];
function sys=mdlDerivatives(t,x,u)

sys =1;
function sys=mdlUpdate(t,x,u)

sys = [];

function sys=mdlOutputs(t,x,u)      %u表示输入量
%sys=Move(u,1);  %调用编写的函数

function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1;    %  Example, set the next hit to be one second later.
sys = t + sampleTime;

function sys=mdlTerminate(t,x,u)

sys = [];

为了以后修改方便,将所有使用的S-函数调用同一个“Move(t,n)”函数(t表示时间,n表示腿的时序)。为每条腿上的驱动构建一个S-函数。打开simulink的库,点击“User-Defined Function“, 将右侧框图中的“S-Function”拖入图6.5所以界面中,双击拖入的图形,在“S-function name:”中填入自己编写的S-函数名称。之后在库中点击“Sources”,拖入“Ramp”信号作为S-函数的输入。

修改adams_sub,双击adams_sub进入子模块,再双击MSC Spftware设置如下:

点击Run进行仿真,Adams会被自动打开,可以看到仿真动画效果,

输出结果可以点击示波器查看

基于Adams联合MATLAB的联合仿真设置相关推荐

  1. matlab 二自由度振动仿真,基于Adams和Matlab二自由度系统振动的仿真分析研究

    化学工程与装备 2017 年 第 11 期 28 Chemical Engineering & Equipment 2017 年 11 月 基于 Adams 和 Matlab 二自由度 系统振 ...

  2. 基于matlab 宗晓萍,基于ADAMS和MATLAB的机械臂控制仿真

    基于ADAMS和MATLAB的机械臂控制仿真 宗晓萍;李月月 [期刊名称]<微计算机信息> [年(卷),期]2009(000)035 [摘要]运用多体系统动力学分析软件ADAMS建立虚拟模 ...

  3. 风机变桨控制基于FAST与MATLAB SIMULINK联合仿真模型非线性风力发电机的

    风机变桨控制基于FAST与MATLAB SIMULINK联合仿真模型非线性风力发电机的 PID独立变桨和统一变桨控制下仿真模型,对于5WM非线性风机风机进行控制 链接simulink的scope出转速 ...

  4. Matlab对科氏力建模,基于ADAMS和MATLAB的惯性组件联合仿真研究

    4 联合仿真模型验证 一般希望加速度计的振动位移仅仅是载体的加速运动造成的,陀螺敏感到的仅仅是科氏力,实际上,重力和离心力也会使加速度计和陀螺产生振动,载体的加速运动也会使陀螺产生不必要的振动,在AD ...

  5. matlab adams 机械臂,基于ADAMS与MATLAB/SIMULINK的二杆机械臂动力学仿真与验证

    川七 一 , , , 乓 基于 与 的二杆机械臂动力学仿真与验证 贾雪峰' , 宋洪军' , 荣学文 , 李贻斌 山东农业大学机械与电子工程学院 , 山东泰安 , 一 ] 」 山东大学控制科学与工程学 ...

  6. 基于LABVIEW和MATLAB的联合编程图像降噪

  7. Adams与Matlab的机器人联合仿真【附源文件】

    文章目录 前言 一.本文介绍 二.具体步骤 1.建立函数变量 2 .在ADAMS中设置驱动函数 3.ADAMS插件设置 4 MATLAB Simulink设置 5 仿真实现与数据交互 三. 总结 前言 ...

  8. abaqus生成adams柔性体_基于ADAMS 的大型反铲挖泥机加装破碎锤 结构动力学分析

    刘 斌 徐沪萍 王 磊 武汉理工大学物流工程学院 武汉 430063 摘 要:以配备液压破碎锤的反铲挖泥船反铲挖泥机为研究对象,简单介绍加装液压破碎锤方案,然后运用动力学理论和相关的动态仿真软件,通过 ...

  9. Adams 与MATLAB联合仿真 失败,adams与matlab联合仿真例子(正确没商量).doc

    adams与matlab联合仿真例子(正确没商量) Adams与Matlab联合仿真例子 作者寄语:这个文件是基于李增刚<adams入门详解与实例>一书中,Adams与Matlab联合仿真 ...

最新文章

  1. 如何用“区块链+稳定币”技术来提升资产证券化市场运作效率
  2. JQuery播放器代理--IE下支持wma格式
  3. maven配置项目根路径_Maven基本概念——根目录、项目创建、坐标
  4. Java API For WebSocket(七)Java EE环境
  5. Builder模式的简单示例
  6. Java进阶之FileUpload完成上传
  7. vue-better-scroll引用报错[BScroll warn]: Can not resolve the wrapper DOM.
  8. 微信小程序引入echarts图表
  9. STM32压力传感器信号采集-24位AD HX720 HX711 原理介绍
  10. 公众号数据分析总结怎么做?教你玩转公众号后台数据
  11. 刘强东,一个农村孩子的自卑!
  12. 北京航空大学计算机录取分数线,北京航空航天大学录取分数线2021是多少分(附历年录取分数线)...
  13. MBP远程控制Windows NUC
  14. 【信息】三方协议签订相关问题及解答
  15. 混频锁相环相关拓扑,性能以及错锁问题梳理
  16. 精华 | 恩墨学院侯圣文:大数据时代下的 DBA 该何去何从?
  17. notempty注解报红_@NotBlank注解使用不生效的解决办法
  18. html 自动隐藏属性,hidden
  19. 微距摄影,如何用单反相机拍好昆虫照片
  20. 网络安全技术——ACL技术(访问控制列表)

热门文章

  1. python 卡方分布函数_卡方检验2-python代码实现
  2. 学人工智能必备的数学课,再也不怕学AI了
  3. Mesosphere DCOS安装
  4. 智慧校园人脸识别解决方案
  5. 基于图灵api实现微信聊天机器人
  6. Azure Synapse Analytics(Azure SQL DW) 性能优化指南(2)——使用具体化视图优化性能(上)
  7. python矩阵变成图片_Python图片转换成矩阵,矩阵数据转换成图片
  8. html图片重叠鼠标点击更换,html实现点击预览图切换图片方法
  9. 常用的数据类型有哪些?简单数据类型与复杂数据类型之间的区别?
  10. 高效短眠的10个好处及如何进行高效的睡眠