该教程参考V-REP官方示例教程Tutorials–BubbleRob tutorial。
官方教程链接
(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
(1)添加。[Menu bar --> Add --> Proximity sensor --> Cone type]
(2)修改传感器的位置(即坐标)和朝向(即方向)
修改朝向
修改位置
(3)修改proximity sensor(接近传感器)的参数
(4)修改proximity sensor(接近传感器)的名称为【bubbleRob_sensingNose】(图中名称有错误)
(5)将对象【bubbleRob_SensingNose】添加到【bubbleRob】下
(1)新建一个场景【Menu bar --> File --> New scene】
(2)添加左轮
(3)创建右轮,复制粘贴左轮,并修改右轮的位置,并重命名bubbleRob_rightWheel
(4)将两个轮子复制到场景1中去(分别选中两个轮子对象,Ctrl+C,切换到场景1中Ctrl+V即可)
(1)将左轮的位置和角度信息添加到左关节上
(2)修改关节属性,并重命名为bubbleRob_leftMotor
(3)以同样的方式创建右关节,并设置属性
(4)将两个轮子与两个电机联系起来,并添加到bubbleRob下
(5)运行仿真,小车翻滚不能保持平衡
(1)创建slider
(2)为了将脚轮与bubble_Rob的其他部分连接起来,添加一个Force sensor【力传感器】
(1)点击仿真,会发现bubbleRob_slider相对于bubbleRob有微小的振动,这是bubbleRob_slider和bubbleRob相互作用的结果,,进行以下操作进行改进
(2)再次进行仿真,振动不再发生了,但是整个bubble有缓慢的移动。为此进行以下操作,将two wheels和slider的质量和惯性矩都放大八倍,一次放大两倍,所以一共放大三次
(3)再次进行仿真,可以看到增加了质量和惯性之后机器人稳定性增强。给机器人一个前进的速度(修改电机速度时最好一个一个修改)
将对象【bubbleRob】设置为模型【bubbleRob】中所有对象的基础。同时,我们希望定义一个表示BubbleRob的对象集合。为此,我们定义了一个集合对象。【Menu bar --> Tools --> Collections】
为机器人bubbleRob添加一个最小距离函数,【Menu bar --> Tools --> Calculation module properties】
进行仿真,没有发现什么不同,因为环境中没有其他物体,为了显示这个最小距离,我们建立一个图【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的轨迹
(1)创建大小为(0.1,0.1,0.2)的Cylinder
(2)设置障碍物的属性(我们希望这个圆柱体是静态的(即不受重力或碰撞的影响),但仍然对非静态可响应形状施加一些碰撞响应。)
(3)拖动障碍物到合适的位置
再按相同的方式添加多个障碍物
(4)设置一个电机的速度为50,开始仿真,可以在图中看到最近的距离
(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,这样可以保护模型;
(1)【Menu bar --> Add --> Vision sensor --> Perspective type】
(2)对视觉传感器进行设置
(3)我们添加一个浮动视图到场景中
(4)将视图与视觉传感器联系起来
(5)设置视觉传感器相对于 bubbleRob_sensingNose的位置和姿态角为(0,0,0)和(0,0,0)(即让接近传感器和视觉传感器的位置和角度一致)
(6)进行仿真
(1)添加脚本控制机器人运动
(2)进行仿真
建议:还是多看看官方教程,多操作几遍,体会各种操作的意义。
如果操作过程中有什么问题,大家可以一起交流学习。QQ:807561027