V-REP教程(一)--bubbleRob详细操作步骤(详细图文步骤操作)
该教程参考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创建的球将...
该教程参考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是dynamic和respondable的,这意味着Sphere具有运动学属性并且可以和其他物体发生相互作用,这种属性在object properties里面也可以看到
进行仿真(官方教程里的一部分,复制粘贴Sphere,由于两小球的相互作用,两小球分开)
(3)为了让Sphere能够为calculation modules(这个在后面传感器计算物体之间的距离会用到)所用,需要使能Sphere的Collidable、Measurable、Renderable和Detectable属性,这个在object properties里面设置。除此之外,可以在Shape里面设置Sphere的外观属性比如颜色。
(4)将对象的位置沿Z轴向上移动2cm(注意V-REP默认是以m为单位,Position为绝对坐标位置,Translation 为相对坐标位置(即移动多少)。此处按照下图设置,也可以将Position 的** Z-coord** 设置为0.12,即在原来的基础上+0.02。自行体会Position和Tranlation的关系)(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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)