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

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

声明:本文参考V-REP官网教程文档,英语好的同学可以直接阅读原文。由于原文中很多操作仅给出文字说明,学习时候容易造成困惑,本文尽量在原文基础上进行一点完善。

简介

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


从上面的图中可以看出,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这个选项暂时还没有搞清楚有什么影响。如果设置过程中有时候忘了有没有勾选,也不用着急删除,可以在属性对话框中进行修改。

添加球体的窗口

现在可以下面图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. 平移和旋转变换的工具
图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.

图1 设置属性
图2 左轮的属性对话框
图3 左轮Common选项卡

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

左右两轮的建立
机器人初样

此时,我们需要加入电机来驱动左轮和右轮,通过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个支撑点。

图1 关节与左轮对齐
图2 配置关节属性
图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。此时再次运行仿真,发现机器人基本处于静止状态,符合预设物理规律。

图1 构建完成小车模型
图2 bubbleRob配置情况
图3 bubbleRob_slider质量设置

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

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

(待添加)

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

(待添加)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容