最近用simscape进行机器人的仿真,记录和总结一下学习心得和踩过的坑。
关于simscape的入门可以看这个专栏:
【MATLAB 学习笔记】 SimMechanics 流程攻略
全部看一遍操作一下就能理解了。当然如果学过多体动力学理解得感觉会更快。
我是从SolidWorks导入到matlab里的,详细的可以看这个博主的文章:
SolidWorks转Simscape Multibody(两种方案)
我导出的是xml格式的文件,还有一种urdf的,我还没有试过。
我想讲点不一样的,发现的一些小经验和技巧。
坐标系的查看
在simulink里面打开会看到很多坐标系的变换,坐标系可以看这篇文章Simscape/Multibody/Frames and Transforms坐标系使用详解
我想讲讲坐标系怎么查看的问题。举个例子,下面是我的仿真图,红色方框框起来的是对应的两个刚体,可以看到名字叫做cylinder_joint_1_RIGID。
cylinder_joint_1_RIGID可以再simulink里面看到:
两个是一一对应的,
双击打开模块:
可以看到和仿真界面红色方框框起来的是一一对应的(再放一次仿真界面的图)。
所有的标号都是一一对应的,我们可以点击一个坐标系查看在实际仿真中的位置,可以看到青色的坐标系:
左下角方框框起来的对应simulink框图模块的端口说明ReferenceFrame的端口R是和Solid的B、Transform1的B,Transform的端口B连在一起的,指代一个东西。
双击打开其中的坐标变换Transform
我们就看到下面的界面,解释了怎么进行旋转和平移进行坐标系的变换。
这里的Axis.Angle、Offset等我们看到是一些类似结构体的东西:比如smiDataRigidTransform(1).axis,我们怎么查看这些数据的值呢?
可以在文件目录下找到这样一个文件***_DataFile.m
:
数据都是在这里定义的。
如果觉得坐标系不符合自己的要求,当然可以在这个文件里面进行修改,当然这还得自己计算,另一种方式就是在GUI里进行修改。
旋转的方式:
平移的方式:
另外坐标系不太理解的其他参考: