Vrep建模教程1——BubbleRob机器人建模

好消息,我要在过年前更新Vrep的一系列教程了,大家有什么需求可以在下面留言或者私信给我!!

  • [连载 0]Vrep入门介绍
  • [连载 1]Vrep小车建模——前进和转向
  • [连载 2]Vrep小车建模——内嵌脚本
  • [连载 3]Vrep小车建模——matlab控制
  • [连载 4]Vrep导入三维模型——PUMA560机械臂
  • [连载 5]Vrep--Matlab Robitic Toolbox--PUMA560机械臂控制
  • [番外1]Vrep小车机械臂抓取
  • 知乎专栏:Vrep机器人动力学建模仿真
    声明:本文参考V-REP官网教程文档,英语好的同学可以直接阅读原文。由于原文中很多操作仅给出文字说明,学习时候容易造成困惑,本文尽量在原文基础上进行一点完善。

简介

V-REP是开源仿真软件,有EDU教育版是免费的,安装也是非常简单的(貌似只能安装到C盘),我现在使用的是3.3.2版本。这个文章是介绍一个BubbleRob机器人构建过程,教程最终的结果可以在V-REP安装目录文件夹下的tutorials/BubbleRob这个路径中找到,如果你现在安装好了V-REP软件,可以打开看看。效果图如下:

Vrep建模教程1——BubbleRob机器人建模_第1张图片

从上面的图中可以看出,V-REP设计的结构和大部分工程类软件相似,菜单栏-工具栏-层次结构-仿真环境显示。值得注意的是大家要分清scene,page,model这几个概念,看一下 Scenes and models,大概意思就是model是scene的一部分,比如里面一个小车是一个模型,scene就是你所要仿真的整个环境,包括小车,障碍物,脚本,逆运动学,page等等,page是翻译过来是页面,个人感觉就是俯视图、正视图等等的组合。

现在开始进行实例建模。

建模

小车建模

首先向场景中添加一个直径为0.2m的球体(命令为:[Menu bar --> Add --> Primitive shape --> Sphere]),在弹出窗口中在X-size处填入0.2,点击OK就可以了。这个球体将作为小车的车身。

注:在添加球体的窗口中还有一些参数,可以先解释一下,Sides 和 Faces两个参数决定这个模型的构建的精细程度,如果你取消选择Smooth shaded选项的话,你会发现球体是由多面体构成的。越是精细的模型计算越费时间,详细说这个的请看下一个教程英文版链接;勾选Create dynamic and respondable shape这个选项表明这个球体是具有动力学特征的,比如质量、转动惯量等特点。Create pure shape这个选项暂时还没有搞清楚有什么影响。如果设置过程中有时候忘了有没有勾选,也不用着急删除,可以在属性对话框中进行修改。

Vrep建模教程1——BubbleRob机器人建模_第2张图片
添加球体的窗口

现在可以下面图1视角变换的工具,查看发现球体的Z轴方向坐标为零,直接置于floor(后面都翻译为地板)上面,因为后面要给小车加入轮子,所以要将球体进行适当的抬高。选择图2中平移工具,对球体进行平移。最后球体的Z轴坐标为0.12m,x、y的坐标均为0(过程参考图3)。完成平移操作后,双击球体的名称Sphere,将名字改为bubbleRob。

注:1.在V-REP中有两种选择物体的方式,可以从仿真环境中直接点球体,也就是图3中的右边的2步骤,也可以直接从scene中选择球体。
2.在V-REP中进行操作的时候,也有两种方式。第一种为先选择好要操作的对象,然后选择操作的命令,在图3中也就是先进行步骤2的操作,在进行步骤1的操作。第二种方式为先选择命令,然后再选择要操纵的对象,也就是先进行步骤1,然后进行步骤2。
3.上面可能读起来比较绕口,通俗一点讲就是,如果你点开的命令窗口是灰色的,选项不可选的状态,那么肯定是没有进行步骤2的选择物体的操作!

图1. 视角变换的工具
图2. 平移和旋转变换的工具
Vrep建模教程1——BubbleRob机器人建模_第3张图片
图3. 平移变换操作

恭喜完成上面的平移操作,如果你能对我备注里的3条加以体会的话,后面的操作都将非常简单。接下来开始构建小机器人的轮子。这里我们选择新建一个scene,在这个临时的scene中完成轮子的构建。这样做的目的是为了保护你刚才完成的球体的构建,避免对轮子操作的过程中影响了你之前做的工作。当然,如果你不太乐意新建一个scene的话,你可以在当前的scene中完成下面的步骤。
通过Menu bar --> File --> New scene,建立一个新的场景,添加一个圆柱体Menu bar --> Add --> Primitive shape --> Cylinder(后面这种添加操作的命令将不再标出)。尺寸为0.08,0.08,0.02。对圆柱体进行平移变换操作,将其绝对坐标设置为(0.05,0.1,0.04),绝对方向为(-90,0,0)。现在将其重命名为bubbleRob_leftWheel,也就是我们的左轮。
重要这里要设置左轮的属性,设置属性的操作将重复无数次,一定要非常熟悉。设置属性对话框一般是点击图1中的标识部分(Markdown不能图片编号,所以每一段图片都重新编号)。图2表示刚才建立的左轮的属性对话框,属性对话框有两个选项卡,第一个为Shape,设置颜色、形状、几何参数还有下面的动力学属性等;第二个为Common,这个选项卡更为常用,几乎每个对象都需要设置这个页面。我们先给左轮设置其为“可碰撞,可测量,可渲染,可检测”,见图3.

Vrep建模教程1——BubbleRob机器人建模_第4张图片
图1 设置属性
Vrep建模教程1——BubbleRob机器人建模_第5张图片
图2 左轮的属性对话框
Vrep建模教程1——BubbleRob机器人建模_第6张图片
图3 左轮Common选项卡

完成上述操作后,选择左轮,利用复制粘贴快捷键,得到左轮的副本,将其重命名为bubbleRob_rightWheel,并通过平移变换操作将其Y坐标设置为-0.1,最后得到下图的样子。摁住Ctrl键,同时选中左轮和右轮,将其复制,粘贴至最初建立的球体的scene中,得到机器人的初样。

Vrep建模教程1——BubbleRob机器人建模_第7张图片
左右两轮的建立
Vrep建模教程1——BubbleRob机器人建模_第8张图片
机器人初样

此时,我们需要加入电机来驱动左轮和右轮,通过Menu bar --> Add --> Joint --> Revolute添加回转关节,通常加入的关节都是出于World坐标系的原点位置(如果有时候你原点有个很大的东西,有可能会看不到你添加的东西)。为了将关节与左轮联系一起来,快捷的方式是按照图1 的方式进行对齐,首先打开平移窗口,然后点击选择驱动关节,然后摁住Ctrl键选择你要对齐的左轮,然后点击Apply to selection,可以发现关节移动到了左轮上。将选项卡切换到Orientation/Rotation,进行同样的操作,使得电机在旋转方向上与左轮一致。(注:这个操作可以满足大部分的情况需求,但是有时候旋转方向还是需要通过手动改变欧拉角进行手动的调整)。
同样的道理,添加右轮的驱动关节,将关节重命名为bubbleRob_leftMotor和bubbleRob_rightMotor。由于这两个关节要作为电机提供动力,因此需要设置其属性。参考图2,打开bubbleRob_leftMotor的属性对话框,在Joint选项卡下选择Show dynamic properties dialog,勾选Motor enable,注意不要勾选Lock motor when target velocity i。同理,右轮电机也需要完成上述操作。(注:在勾选Motor enable之后,可以修改下面的Target velocity修改电机的输出速度。)
重要修改层次结构,V-REP可以很简单的将两个物体进行绑定。通过在Scence Hierarchy中拖拽可以快速的调整层次结构。调整后的层次结构见图3.此时你可以电机仿真工具栏中的开始按钮,进行仿真。放着结构发现机器人向后翻,因此需要增加第3个支撑点。

Vrep建模教程1——BubbleRob机器人建模_第9张图片
图1 关节与左轮对齐
Vrep建模教程1——BubbleRob机器人建模_第10张图片
图2 配置关节属性
Vrep建模教程1——BubbleRob机器人建模_第11张图片
图3 层次结构

完成上述操作之后需要增加第3个支撑点,第三个支撑点增加一个万向轮,在这里我们增加一个球体,并设置其材料属性为无摩擦。考虑到大家已经完成上述的操作,这里就直接介绍过程。新建一个scene,建立一个直径为0.05m的球体,设置其Common,勾选Object special properties下面的4个选项,即设置其为“可碰撞,可测量,可渲染,可检测”,将其重命名为bubbleRob_slider,并选择其材料Materia属性为noFrictionMaterial(无摩擦)。由于支撑点要与机器人进行刚性连接,因此需要添加一个Force sensor(力传感器),通过Menu bar --> Add --> Force sensor,并将其向上平移0.05m,并将其重命名为bubbleRob_connection 。将这两个对象选中并复制粘贴到原scene中,将其整体沿x轴正方向平移0.07m,此时的目录结构可以参考下图1。此时可以运行仿真,在bullet 2.78的求解器下,发现在没有电机驱动力的情况下小车会移动,这与设计的状态有所不同,因此需要进行一些调整。
首先考虑到由于bubbleRob与bubbleRob_slider之间采用刚性连接,而两个都是具有碰撞属性的,在动力学模拟的过程中可能产生一些问题,因此需要进行一些设置。这里首先解除两个球体之间的碰撞属性,采用的方法为改变local respondable mask,bubbleRob的设置为11110000,bubbleRob_slider设置为00001111,设置状态见图2。此时继续运行仿真,发现采用bullet 2.78求解时仍然会移动,而bullet 2.83求解时基本不动,采用ode求解器时介于两者之间。
官网给出此现象是由于动态模拟的稳定性与涉及的非静态形状的质量和惯性紧密相关。,详细的请阅读此文,这里修改的方式为修改两个驱动轮和万向轮的质量,设置过程见图3。此时再次运行仿真,发现机器人基本处于静止状态,符合预设物理规律。

Vrep建模教程1——BubbleRob机器人建模_第12张图片
图1 构建完成小车模型
Vrep建模教程1——BubbleRob机器人建模_第13张图片
图2 bubbleRob配置情况
Vrep建模教程1——BubbleRob机器人建模_第14张图片
图3 bubbleRob_slider质量设置

此时,我们完成了小车模型基本模型的建立。

距离传感器、视觉传感器创建

(待添加)

构建模型以及最终仿真结果。

(待添加)

做此教程的初衷是很少可以看到v-rep的中文教程,但是作者是深深被v-rep的便捷性感染。从软件安装到教程的学习,都感觉非常流畅,而且本身是开源软件很多开源硬件都是基于v-rep开发的。然而在刚开始学习v-rep的时候,有些操作会感觉比较困惑,通过本实例想抛砖引玉,希望更多的人投入到v-rep教程的建设当中。
做教程的复杂度和时间耗费情况远远超出我的想象,如果有人认为教程有帮助到你的话,可以回复我,我尽量将后续的教程做完。谢谢理解~

你可能感兴趣的:(Vrep建模教程1——BubbleRob机器人建模)