最近用simscape进行机器人的仿真,记录和总结一下学习心得和踩过的坑。
参照B站一位up主的视频做的仿真:
4自由度机械臂从Solidworks to Simscape 实现运动仿真
我也做了一个自己的简单小demo:
注意几点:
Simulink-PS Converter
模块PS-Simulink Converter
模块
①仿真时把速度调到最大 256×\times× 可以实现实时拖动实时显示。
②仿真时坐标系角度不对,原因是导出的坐标系可能定义和我们的定义不一样,比如实际转角为0度,simulink里却转动了90度。为了统一定义采用相对角度的思路,是通过子系统来实现的。
打开内部其实就是和90度做个加减法运算:
子系统封装可以参考文章
Simulink仿真教程3—子系统的创建与封装
这就不用我们去想怎么把坐标系和我们定义的坐标系统一起来,同样可以得到正确的仿真运动。
另外这个90度是怎么来的呢,我们打开旋转副Revolute,
关注这个初始角:
在我的上一篇文章simscape仿真总结1-坐标系查看和自定义坐标系说的,这个数据在同文件目录下的***_DataFile.m
下定义。
找到这个smiData.RevoluteJoint(2).Rz.Pos的角度,我们看到确实是90度。
smiData.RevoluteJoint(2).Rz.Pos
③各个旋转副要注意使用位置输入,力矩Torque设置为Automatically Computed,位置Motion设置为Provided by Input,不能都设置成Provided by Input,会报错的。
关于具体的设置建议还是看matlab的官方文档,很详细,每个控件的定义都很详细,不过都是英文,要锻炼自己看英文的能力!
④把文件夹移动到了其他地方打开初始化出现了错误Cannot reload workspace from non-existing data source file,原因是找不到原来的Data_File文件了,解决办法:
关于打开Simulink文件报Cannot reload workspace from non-existing data source file警告的解决方案