vrep是一个很好的工具,大家如果开始使用之后更能体会的到,但是由于宣传少、用户少,我现在所知道的国内也就十几所大学有用到的,而且大部分是研究生。依稀记得本科用adams非常痛苦,MSC公司的软件设计不仅其丑无比,而且正版费用特别高,所以才做此教程,为vrep的推广尽自己的一点贡献。
此教程是基于vrep 3.5.0版本制作的,初学可以先安装此版本进行学习,后面再使用更新的版本。(旧版下载链接:链接:https://pan.baidu.com/s/1PIl5t-Pwx2dawOIHfzDelA提取码:qirx)
在推出连载1之后,很多同学问我贴纸是怎么制作的,本节就介绍如何将三维模型导入到vrep中,并进行不同的处理。这个示例采用PUMA560的模型,PUMA560机械臂是多本机器人书籍中介绍的一种机械臂,资料也非常多。
本节的安排如下:
完整的例程模型请点击
首先要在建模软件中建立机械臂模型,我这里用的是soildworks,建模完的效果如下图:
图1 PUMA560机械臂模型
请注意,下面的经验很重要!!!我就不全部加粗了!!
图2 调整前的机械臂 soildworks视图(左) vrep视图(右)
图3 调整后的机械臂 soildworks视图(左) vrep视图(右)
至于怎么调整,一般团队里都有搞机械的小伙伴,和他们说一下要求就可以了,把该对齐的面对齐就可以了。
文件-另存为-保存类型(stl)
,在选项里选择精细选项。如果你是新手并且模型的规模较小的话,建议选择精细模式,否则你需要根据需求选择精细程度。图4 导出stl过程
导出stl格式之后,会在文件夹中生成文件,这里需要注意的是有的软件导出后是一个stl文件(将装配体整体导出),soildworks导出的一堆stl文件(每个零件单独一个文件)。如果是一个文件的话,后面会增加一步,不要紧的。
好,到这里导入工作已经完成了,接下来我们将stl文件导入到vrep中。
点击菜单栏中的file - Import - Mesh..
,具体见图5,找到刚才导出的stl文件,快捷键Ctrl + a
选择所有的stl文件,然后点击确定。此时会弹出一个对话框,由于建模软件的坐标系和vrep的不一样,这里选择Y轴朝上,点击OK
完成导入,导入的结果见图7。
图5 导入stl文件
图6 导入后的对话框
图7 PUMA650导入后结果
从模型树上可以看到,导入的模型按照不同的零件已经分开,如果你的建模软件导入的是一个整体的话,需要增加一步操作,具体见图8。
图8 将一个整体分解成多个零件
vrep导入过程会随机的改变颜色,所以你导入进来的样子可能和我的不一样。
完成导入后需要整理一下零件,将一些零件进行命名,同时将不需要的一些零件删掉。我们发现导入12个零件,先浏览一遍导入的零件(见图9),发现底座上安装了六个螺栓(见图10),对于仿真是没有用处的,因此删掉。
图9 浏览一遍导入的零件
图10 对仿真无用的螺栓
现在将剩下的零件进行重命名,便于识别。我们用puma560_link0_vision
作为起始,依次命名,命名结果如图11.(对应中间文件名称为:vrep4_puam560_step2_1.ttt)
图11 将零件重命名
上面的任务都比较简单,接下来将是一大堆体力活,我们要从导入模型中提取出圆柱体从而确定回转关节位置。
实际上stl文件导入进来的是一堆三角形组合,见图12,可见我们需要从这些三角形中提取出圆柱体,然后利用圆柱体去定位关节位置。主要原因是导入后的模型由于形状特殊,其自身坐标系有可能发生不同程度的旋转,因此最好的办法是从中间提取出vrep常用的primitive shape,即可用于后面的动力学仿真,也可以比较好的约束后续的坐标位置。
注意:由于vrep不同电脑下导入结果的会有细微差异,影响后面的具体操作,因此建议直接用
vrep4_puam560_step3_1.ttt
这个文件作为起始文件,大家后面的操作从这个文件开始。
图12 stl导入后为三角形组合
这里讲一个我自己的方法,我一般是比较喜欢将要调整的模型拷贝到一个备用的scene,这样所有操作都在这个备用的scene中,避免改坏东西。因此我们先新建一个scene
,命名为puma560_backup
,将puma560_link1_vision
拷贝到这个新文件中,我们要从上面提取出两个圆柱体,从而找到机械臂的前两个回转轴。
选择puma560_link1_vision
,点击工具栏左边的按钮(见图13),打开实体编辑界面。
图13 实体操作按钮
图13 实体操作动图
实体编辑界面具有三种操作:
我们这里主要使用第一种三角形编辑模式,现在提取第一个圆柱体,我们这里直接选择这个关节的底面,选择这个面上所有的三角形,对用鼠标挨个选择。选择有两种方式,第一种是直接在窗口中选择三角形,选择之后会改变颜色,也可以在左边的浏览窗口选择。我们先选择编号从251至298的三角形。(摁住Ctrl键,鼠标挨个单击,貌似没有其他的快捷方式,所以说是体力活……)点击提取圆柱体(Extract cylinder),点击确定,生成第一个圆柱体。由于这里选择的是一个底面,因此生成的圆柱体高度几乎为零。根据图15,退出形状编辑模式。
图14 选择第一个底面
图15 退出形状编辑模式
此时在模型树里可以看到多出一个Cylinder的实体,我们现在添加一个关节,将其位置与提取出来的圆柱体进行重合。按照图16的指示(这里分别提供了动图和静态图,方便大家看)进行操作,确定好第一个关节的位置。
如果大家对上述操作不是很熟练的话,请看连载1中图7的操作。
图16 将关节与提取出圆柱体进行重合(动图)
图16 将关节与提取出圆柱体进行重合(静态操作)
获得了第一个关节的位置之后,将其重命名为puma560_joint1
,将其拷贝回到原来的文件中,这样第一个关节就完成了。
现在获取第二个关节,依然是使用puma560_link1_vision
,进入形状编辑模式,选择Triangle 203 ——Triangle 250
,提取第二个圆柱体,利用上述同样操作,得到第二个转动关节puma560_joint2
。也将其复制回到原来的文件中,此时文件中应该是图17中的结果,(对应中间文件名称为:vrep4_puam560_step3_1.ttt)
图16 提取第二个圆柱体
图17 整理好前两个关节
由于后续提取其他关节为重复工作,提取过程与提取joint1和joint2类似,因此直接放在宝贝链接的Step3提取关节.docx
文档中,大家自己打开看吧,就不占用教程篇幅了。
提取其他关节说明
至此,已经完成全部的关节添加工作,也是本教程中最繁琐的一项任务。
上面的工作基本完成了运动学的部分,接下来的内容主要用来完善动力学的部分。由于导入的stl文件是mesh属性,实际上仅仅是一层薄壳,不具备动力学特征(质量和转动惯量,就是你点开始仿真,并不会自由落体),而且如果直接用导入模型的话由于细节太丰富,所以极大的影响仿真速度,一般都会将其简化成vrep自带的primitive shape或者是凸面结构(凹面结构物理引擎可能产生很诡异的现象)
在这里,考虑到机械臂的特性,我们将模型提取出为凸面体(convex shape),因为机械臂工作状态一般旁边不会有障碍物,因此用凸面体来来检测碰撞虽然占用了更多体积,但是一般情况并不会影响结果。
由于提取凸面体会直接替换原来的结构,因此我们将机械臂的puma560_link0_vision
到puma560_link5_vision
六个结构拷贝到一个新的scene中,先选择puma560_link0_vision
,执行下图的操作(Edit->Morph selection into convex shapes
),这样就得到了第一个实体,对剩余的其他组件执行同样的操作。
提取凸面体结构
操作完成后,将各个部件重命名为puma560_link0
到puma560_link5
,此时可以得到下图:(对应文件名为vrep4_puam560_step4_1_backup.ttt
)
全部提取为凸面体结构
此时电机开始仿真发现仍然没有自由落体,因为还没有设置动力学属性。接下来我们设置凸面体的质量
和respondable
的属性。这里从**``puma560_link1**开始,根据下图设置动力学属性,注意
local respondable mask`是仅点第一个对勾。
设置link1的动力学属性
根据同样的方式设置link2——link5的动力学属性,唯一差别为local respondable mask
依次点第二个对勾、第三个对勾……例如第link5的属性为:(对应文件为vrep4_puam560_step4_1_backup2.ttt
)
link5的动力学属性
完成上述步骤之后,可以点击仿真按钮,应该会看到自由落体的情况。将这些凸面体拷贝回到原来的文件中,重新调整模型树,按照如下的方式进行排列,确定依赖关系,如下图:
整理好的模型树
我们发现拷贝回来的凸面体很丑,直接影响我们观看的心情,因此我们要将其隐藏起来,操作看下图(注意选择多个凸面体的时候按住Ctrl键
)
隐藏凸面体
此时点击仿真,发现机械臂会立即垮掉,原因是因为添加的关键无法提供足够的扭矩保持平衡,我们这里打开关节的位置控制模式,如下图:(注意要设置一下关节扭矩,默认2.5Nm太小了,这里先设置为100Nm)
设置电机为位置控制模式
(对应最终文件名称为:vrep4_puam560_step4_2.ttt)
这篇从准备内容到最后形成文稿,花费了我差不多两周左右的业余时间,真是内容有点多,以至于后面Step4里我都没有具体讲,实在是抱歉。但是也是恭喜大家能看到结尾,应该看完这篇文章的对vrep应该是真爱吧,我留一个微信,大家可以加我,欢迎多多交流~~
有同学说加载不了二维码,我直接放微信号大家搜索吧,微信号是monkey61_1,欢迎交流哈
https://u.wechat.com/MIXGPFx3pmLt0sF7d6MEh-w (二维码自动识别)