Vrep入门:使用Vrep实现一个可以转动的豌豆射手

今天初步入门了一下Vrep,为了防止忘记踩过的坑和一些细节,记录一下。

为了快速使用Vrep,我拿出了几个月没有用过的鼠标。在开始之前,先介绍三个基本的鼠标操作:

  1. 按住鼠标左键拖动,可以移动视图。
  2. 滚动鼠标滚轴,可以放大缩小视图。
  3. 按住中键拖动,可以改变视角。(这大概是我第一次用到这个鼠标操作……)

打开Vrep,新建一个视图,可以看到这样一个界面:


打开Vrep

场景里有一个水平面,右下角还有一个小小的直角坐标系。按住中键拖动时,这个直角坐标系也会随之旋转。

实现旋转功能非常简单,只需要转动轴和物体即可。

首先创建一个球体(或正方体等whatever)。点击Add->Primitive Shape->Sphere,在弹出的对话框中可以设置球的半径等参数。确认之后场景中出现一个球体,貌似在默认情况下球下边沿就是和水平面对齐了的。

创建球体对话框
创建球体

接下来创建一个旋转关节,点击Add->Joint->Revolute。


创建关节

通过菜单栏中的object/item shift和object/item rotate将旋转关节和球体的中轴重合(即x和y坐标设为一致的,z坐标只需将关节下边沿和水平面对齐即可)。


对齐关节和球体

一个方便的对齐方法如下。同时选中关节和球体,将一个的位置应用到另一个。


另一个对齐的方法

接下来设置两个物体的层级关系,在Scene hierarchy中将Sphere拖入Revolute_joint。


设置层级关系

之后,为了能够使用lua脚本给旋转关节设置速度,建立一个随便什么物体,使旋转关节和球体层级关系上属于这个物体。右键Scene hierarchy中这个物体,Add->Associated Child Script->Non threaded。之后这个物体名字右侧会出现一个小的文件图标,双击这个图标就可以查看并修改lua脚本。


设置lua脚本

在lua脚本中,sysCall_init函数添加以下两句。

1
2
v0=1
handle=sim.getObjectHandle('Revolute_joint')

在sysCall_actuation函数中添加以下一句给关节设置速度。

1
sim.setJointTargetVelocity(handle,v0)

双击Scene hierarchy中旋转关节的图标,在属性中点击最下的Show dynamic properties dialog,然后在新弹出的对话框中,选中Motor enabled。理论上现在就可以转动了。


打开关节转动

最后一步,把豌豆射手的网格模型贴上去。网格模型是我从网上下载的STL模型,通过File->Import->Mesh导入即可。为了美观,让这个网格模型叶子的中心和关节的x、y轴对齐。效果差不多是这个样子。


插入网格模型

然后将网格模型从属于球体。运行之后,这个豌豆射手就可以旋转了。最后我们将除网格之外的所有东西隐藏掉(可以看到Scene Hierarchy中名字变暗了),就可以实现一个旋转的豌豆射手了。隐藏物体时,把对勾全部消掉。


隐藏物体

最后效果如下:

2018-7-12 2018-6-29

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×