该教程参考V-REP官方示例教程Tutorials–BubbleRob tutorial。
官方教程链接

1. 添加bubbleRob

(1)在场景中添加一个直径为0.2的球。【Menu bar --> Add --> Primitive shape --> Sphere】
在这里插入图片描述(2)在弹出的对话框中为Sphere指定大小为0.2。即设置【X-size】为0.2,点击OK

在这里插入图片描述创建的球将出现在可视化层1中,并且是动态可响应的。(因为(2)中【Create dynamic and respondable shape】是勾选的)
在这里插入图片描述另外这个添加的球体Sphere是dynamicrespondable的,这意味着Sphere具有运动学属性并且可以和其他物体发生相互作用,这种属性在object properties里面也可以看到
在这里插入图片描述进行仿真(官方教程里的一部分,复制粘贴Sphere,由于两小球的相互作用,两小球分开)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述(3)为了让Sphere能够为calculation modules(这个在后面传感器计算物体之间的距离会用到)所用,需要使能Sphere的CollidableMeasurableRenderableDetectable属性,这个在object properties里面设置。除此之外,可以在Shape里面设置Sphere的外观属性比如颜色。
在这里插入图片描述(4)将对象的位置沿Z轴向上移动2cm(注意V-REP默认是以m为单位,Position为绝对坐标位置,Translation 为相对坐标位置(即移动多少)。此处按照下图设置,也可以将Position 的** Z-coord** 设置为0.12,即在原来的基础上+0.02。自行体会PositionTranlation的关系)在这里插入图片描述(5)修改对象名称为bubbleRob
在这里插入图片描述

2.为 bubbleRob 添加 proximity sensor(接近传感器)

(1)添加。[Menu bar --> Add --> Proximity sensor --> Cone type]
在这里插入图片描述(2)修改传感器的位置(即坐标)和朝向(即方向)
修改朝向
在这里插入图片描述修改位置
在这里插入图片描述(3)修改proximity sensor(接近传感器)的参数
在这里插入图片描述(4)修改proximity sensor(接近传感器)的名称为【bubbleRob_sensingNose】(图中名称有错误)
在这里插入图片描述(5)将对象【bubbleRob_SensingNose】添加到【bubbleRob】下
在这里插入图片描述

3.为bubbleRob 添加轮子

(1)新建一个场景【Menu bar --> File --> New scene】
在这里插入图片描述(2)添加左轮

  • 添加一个圆柱
    在这里插入图片描述
  • 确定圆柱的大小尺寸,在弹出的对话框中为Cylinder设置大小(0.08,0.08,0.02)
    在这里插入图片描述
  • 作为bubbleRob身体的一部分,对其进行属性调整,如同bubbleRob一样使能Cylinder的Collidable、Measurable、Renderable和Detectable属性
    在这里插入图片描述
  • 修改轮子的位置和方向,设置Cylinder的绝对位置(Position)为(0.05,0.1,0.04),绝对欧拉角(Orientation)(-90,0,0)
    在这里插入图片描述在这里插入图片描述
  • 修改对象的名称为bubbleRob_leftWheel(修改名称参考步骤1中的(4)

(3)创建右轮,复制粘贴左轮,并修改右轮的位置,并重命名bubbleRob_rightWheel
在这里插入图片描述(4)将两个轮子复制到场景1中去(分别选中两个轮子对象,Ctrl+C,切换到场景1中Ctrl+V即可)
在这里插入图片描述

4. 添加关节(为bubbleRob添加rightMotor和leftMotor)

在这里插入图片描述(1)将左轮的位置和角度信息添加到左关节上
在这里插入图片描述在这里插入图片描述(2)修改关节属性,并重命名为bubbleRob_leftMotor
在这里插入图片描述(3)以同样的方式创建右关节,并设置属性
在这里插入图片描述(4)将两个轮子与两个电机联系起来,并添加到bubbleRob下
在这里插入图片描述(5)运行仿真,小车翻滚不能保持平衡
在这里插入图片描述

5. 为bubbleRob添加slider(or caster)即为小车添加一个滑块或者脚轮

(1)创建slider

  • 创建一个new scene,添加一个半径大小为0.05的sphere
    在这里插入图片描述
  • 设置属性并重命名bubbleRob_slider
    在这里插入图片描述
  • 设置材料属性
    在这里插入图片描述

(2)为了将脚轮与bubble_Rob的其他部分连接起来,添加一个Force sensor【力传感器】

  • 【Menu bar --> Add --> Force sensor】
    在这里插入图片描述
  • 重命名force_sensor为bubbleRob_connection并把【力传感器】抬高0.05(下图有错误,应该是选择Translation中的Along-Z设置为0.05。如果用下图方式设置的话,应该在第4步修改Z-coord的值时,不应该直接改为0.05,而是在原来值的基础上加上0.05。因为Position是坐标的绝对坐标,Translation是相对坐标即移动了多少)
    在这里插入图片描述(3)将【力传感器】与脚轮联系起来,并复制到场景一中,并添加到bubbleRob下
    在这里插入图片描述
    (4)修改【力传感器】和脚轮的位置(将bubbleRob_connection沿x绝对方向移动-0.07。)
    在这里插入图片描述

6. 使bubbleRob具有稳定性

(1)点击仿真,会发现bubbleRob_slider相对于bubbleRob有微小的振动,这是bubbleRob_slider和bubbleRob相互作用的结果,,进行以下操作进行改进
在这里插入图片描述在这里插入图片描述(2)再次进行仿真,振动不再发生了,但是整个bubble有缓慢的移动。为此进行以下操作,将two wheels和slider的质量和惯性矩都放大八倍,一次放大两倍,所以一共放大三次
在这里插入图片描述(3)再次进行仿真,可以看到增加了质量和惯性之后机器人稳定性增强。给机器人一个前进的速度(修改电机速度时最好一个一个修改)
在这里插入图片描述

7. 创建bubbleRob collection

将对象【bubbleRob】设置为模型【bubbleRob】中所有对象的基础。同时,我们希望定义一个表示BubbleRob的对象集合。为此,我们定义了一个集合对象。【Menu bar --> Tools --> Collections】
在这里插入图片描述

8. 创建calculation module

为机器人bubbleRob添加一个最小距离函数,【Menu bar --> Tools --> Calculation module properties】
在这里插入图片描述

9. 创建graph

进行仿真,没有发现什么不同,因为环境中没有其他物体,为了显示这个最小距离,我们建立一个图【graph】
(1)【Menu bar --> Add --> Graph】
在这里插入图片描述(2)重命名为bubbleRob_graph,并将其与bubbleRob联系起来,设置绝对坐标为(0,0,0.005)
在这里插入图片描述(3)将具体参数添加进图表里
在这里插入图片描述以相同的方式添加Y和Z的数据流
(4)现在我们有3个数据流表示BubbleRob的x-、y-和z-轨迹。我们将再添加一个数据流,这样我们就能够跟踪机器人与其环境之间的最小距离
在这里插入图片描述(5)对四个数据流进行重命名
在这里插入图片描述(6)分别对X,Y,Z在进行以下操作(仅以X操作为例)
在这里插入图片描述(7)建立一个三维曲线来显示bubbleRob的轨迹
在这里插入图片描述

  • 设置参数
    在这里插入图片描述
  • 给电机设置速度,进行仿真,可以看到运动轨迹(粉色轨迹)
    在这里插入图片描述

10. 添加obstacles(即为场景添加障碍物)

(1)创建大小为(0.1,0.1,0.2)的Cylinder
在这里插入图片描述在这里插入图片描述(2)设置障碍物的属性(我们希望这个圆柱体是静态的(即不受重力或碰撞的影响),但仍然对非静态可响应形状施加一些碰撞响应。)
在这里插入图片描述在这里插入图片描述(3)拖动障碍物到合适的位置
在这里插入图片描述再按相同的方式添加多个障碍物
(4)设置一个电机的速度为50,开始仿真,可以在图中看到最近的距离
在这里插入图片描述

11. 完成bubbleRob model模型构建

(1)选中bubbleRob,在object properties里面check Object is model base和 Object/model can transfer or accept DNA
在这里插入图片描述(2)模型包围框现在忽略了两个关节和接近传感器:(分别选中两个motors、graph和已有的一个proximity sensor,在object properties的common界面勾选ignored by model bounding box,然后点击Apple to selection;)
在这里插入图片描述(3)隐藏两个电机和力传感器
在这里插入图片描述(4)依次对右电机和力传感器进行上述操作
在这里插入图片描述(5)分别选中两个wheels、一个graph、一个slider、一个proximity sensor,然后再object properties的common界面勾选 Select base of model instead,这样当我们试图选中其中的任何一个object的时候,选中的都会是bubbleRob,这样可以保护模型;
在这里插入图片描述

12. 添加vision sensor

(1)【Menu bar --> Add --> Vision sensor --> Perspective type】
在这里插入图片描述(2)对视觉传感器进行设置
在这里插入图片描述在这里插入图片描述(3)我们添加一个浮动视图到场景中
在这里插入图片描述(4)将视图与视觉传感器联系起来
在这里插入图片描述(5)设置视觉传感器相对于 bubbleRob_sensingNose的位置和姿态角为(0,0,0)和(0,0,0)(即让接近传感器和视觉传感器的位置和角度一致)
在这里插入图片描述在这里插入图片描述(6)进行仿真
在这里插入图片描述

13. 最后一步:添加代码

(1)添加脚本控制机器人运动
在这里插入图片描述在这里插入图片描述(2)进行仿真
在这里插入图片描述
建议:还是多看看官方教程,多操作几遍,体会各种操作的意义。
如果操作过程中有什么问题,大家可以一起交流学习。QQ:807561027

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐