vrep初探
vrep初探
图为tx90导入vrep的示意图。
标记1可以查看更改属性 标记2是移动旋转视图,当然鼠标快捷键也可以,标记3标记4是移动和旋转,可以在添加关节时使用,用来确定关节的位置,标记5是导入的stl文件,双击可以重命名,标记6为开始仿真,标记7的乌龟和兔子可以减慢和加速仿真速度。
1.导入模型
由于tx90模型稍微复杂,本例主要从一个简单的小装配体说起,如下图所示:
将该连杆模型导入V-REP中,基座几何模型如下,坐标系为底圆中心,将其导出成stl,导入vrep的操作流程是file-import-mesh,这里我选了厘米单位,ug的是Z轴向上,solidworks导入的是Y轴向上
连杆的参数如下:
图中可看出,连杆的坐标系是在底圆孔中心,导入vrep零件坐标系将于世界坐标系重合,有两种方法可以使该连杆导入后为ug图中的位置。
法一 在vrep中移动
直接导入后效果图如下:
操作如下:
首先将连杆零件stl拖到基座零件下,形成父子关系,再移动,选择parent frame,Z向上0.14m即可移动(也可以不用形成父子关系,移动时选择world frame)
然后再选择连杆零件stl,ctr+c,ctr+v,复制一个,再拖动:
当摆放好位置后,再沿X轴走0.3m(注意看世界坐标系,红色的X轴,与我们想要移动的方向一致)
最后效果如下:
法二:在UG里事先调好坐标系,具体可看以前博客
2.添加关节:
添加关节的步骤与上述法一差不多,关节几何形状可以更改
将两个关节模式改为Passive mode,发现运行仿真时不会因为重力原因而掉落,原因是导入的是stl格式,没有设置连杆的动力学属性,选中三个stl文件,edit-morph selection into convex shapes,将stl实体化
由于底座固连打地,可以不用设置动力学属性,当然也可尝试,会有很多有趣的现象
此时运行仿真会直接掉下来
可以尝试选不同的勾,会发现很多有意思的现象,以下是一些尝试
将join模式改为力/力矩模式,这里我定义关节1目标速度为0,锁定马达,力矩默认,打钩锁死马达,关节2速度为180度/秒,操作和实现如下:
3.添加脚本(这块不太熟)
过程大致如下:
让tx90从(0,0,0,0,0,0),走到(0,0,90,0,45,0)效果如下:、
-- This is a threaded script.function sysCall_threadmain()-- Initialize some values:jointHandles={-1,-1,-1,-1,-1,-1}for i=1,6,1 dojointHandles[i]=sim.getObjectHandle('Revolute_joint_'..i)endvel=180accel=40jerk=80currentVel={0,0,0,0,0,0,0}currentAccel={0,0,0,0,0,0,0}maxVel={vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180,vel*math.pi/180}maxAccel={accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180,accel*math.pi/180}maxJerk={jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180,jerk*math.pi/180}targetVel={0,0,0,0,0,0}Config1={0,0,90*math.pi/180,0,45*math.pi/180,0}sim.rmlMoveToJointPositions(jointHandles,-1,currentVel,currentAccel,maxVel,maxAccel,maxJerk,Config1,targetVel)end
4.matlab 、c++与vrep通讯(有待研究)
5.记个小笔记,用soap通讯moveJ函数使楼下TX90机器人动,必须将示教盒打到远程控制,并且要打开程序菜单那一页,才能运行!!!
参考:https://blog.csdn.net/huangdianye/article/details/80628932
https://www.jianshu.com/p/0fb69d9af9c1