Adams六关节机械臂与Matlab/Simulink的联合仿真(上)

前言:一直对于六关节机械臂与simulink的联合仿真很感兴趣,但网上关于实际模型的机械臂联合仿真的资料很少,更别说六关节的联合仿真了,所以断断续续地经历了很久才做出,期间踩过不少的坑,实属不易,现将整个仿真过程记录与此,与大家分享。

第一步. 从SolidWorks中导入模型到adams

Solidworks另存为.xmt_txt格式,adams导入此文件,导入机械臂模型如下

第二步 简化模型并且添加好运动副

  1. 模型能简化的尽量简化,以免加运动副以及后面运动仿真的时候出现麻烦。

    以下是我简化后的六关节机械臂模型,加上固定副以及转动副,可以看到即使是简化了很多部件,但还是有很多物体和运动副。

注:需要注意的是,转动副一定要添加正确,不要与其他部件产生碰撞,一定要是严格绕着转轴转动

另外可以直接使用布尔操作,省去建立末端执行器固定副的繁琐操作。

第三步 创建adams输入输出变量

在模型建立好之后,我们现在建立adams和simulink之间的接口变量,这里指的是输入输出变量。
输入变量是指Matlab传给adams的变量(这里指关节力矩)
输出变量是指自己要测量的变量(这里指各个关节角和关节角度)

1 点击adams中的单元->x 建立状态变量

因为这里的力矩值是输入变量,所以设置为0,依次建立好6个力矩变量torque1 - torque6

2 建立角度和角速度的状态变量

这里先将F表达式设置为0,后面再修改表达式。

6个关节角变量的建立和6个关节角度变量的建立

依次建立好12个状态变量angle1 - angle6 ,angular_velocity1 - angular_velocity6,此时他们的F表达式均暂时设置为0。


第四步 创建角度和角速度的测量

1 创建旋转关节的测量,我的旋转关节是revolute1 - revolute6, 特性选择Ax/Ay/Az投影旋转,分量选择旋转轴z轴,验证是否选择正确的方法是,加上旋转驱动后,测量单元是否随着变化。

2 如图所示,这里我选择驱动10d*time , 仿真时间4s,可以看到测量单元正确的测量出了旋转角度。

  • 3 类似的,可以建立起所有的旋转关节的角度和角速度的测量,角速度这里选择相对角速度,分量绕z轴,验证方法雷同。

12组测量单位的建立

注:测量单位要选择正确,不然后面得到的数据会不正确,选择好了之后均要一一验证

第五步 建立好变量与测量之间的联系

  之前的力矩变量的F表达式设置为0,这里不动力矩变量,只改变角度和角速度的F表达式。
角度表达式设置为 F = .MODEL_1.revolute1_MEA_1 ,如图所示,前面的MODEL是你的模型名称,后面是你的测量单元的名称。

  • 关节角速度与测量单元的关联,表达式F如下

  类似地,建立好6个角度变量和角度测量的关联,6个角速度变量和角速度测量的关联。至此,adams里的基本工作我们就完成了,没有的问题的话我们就可以建立联合仿真了。