好消息,我要在过年前更新Vrep的一系列教程了,大家有什么需求可以在下面留言或者私信给我!!
声明:本文参考V-REP官网教程文档,英语好的同学可以直接阅读 原文 。由于原文中很多 *** 作仅给出文字说明,学习时候容易造成困惑,本文尽量在原文基础上进行一点完善。
V-REP是开源仿真软件,有EDU教育版是免费的,安装也是非常简单的(貌似只能安装到C盘),我现在使用的是3.3.2版本。这个文章是介绍一个BubbleRob机器人构建过程,教程最终的结果可以在V-REP安装目录文件夹下的tutorials/BubbleRob这个路径中找到,如果你现在安装好了V-REP软件,可以打开看看。效果图如下:
现在开始进行实例建模。
首先向场景中添加一个直径为0.2m的球体(命令为: [Menu bar -->Add -->Primitive shape -->Sphere] ),在d出窗口中在X-size处填入0.2,点击OK就可以了。这个球体将作为小车的车身。
现在可以下面图1视角变换的工具,查看发现球体的Z轴方向坐标为零,直接置于floor(后面都翻译为地板)上面,因为后面要给小车加入轮子,所以要将球体进行适当的抬高。选择图2中平移工具,对球体进行平移。最后球体的Z轴坐标为0.12m,x、y的坐标均为0(过程参考图3)。完成平移 *** 作后,双击球体的名称Sphere,将名字改为bubbleRob。
恭喜完成上面的平移 *** 作,如果你能对我备注里的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.
完成上述 *** 作后,选择左轮,利用复制粘贴快捷键,得到左轮的副本,将其重命名为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个支撑点。
完成上述 *** 作之后需要增加第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。此时再次运行仿真,发现机器人基本处于静止状态,符合预设物理规律。
此时,我们完成了小车模型基本模型的建立。
(待添加)
(待添加)
关于物理引擎 “Bullet, ODE, 和 Newton” (Vortex 自动忽略)使用经验对于复杂系统(32个自由度),如果涉及到 V-rep 和 MATLAB, Python, 或 ROS 某一个或者某几个之间的通讯问题,ODE 最佳,Bullet 可用,Newton 不推荐。
不涉及通讯,直接 LUA,ODE 依然最佳,Newton 相差无几,甚至会比 ODE 更稳定,Bullet 也可用。不展开了,纯个人经验。
=======================================================================
先快速回答问题:
1. 最好的快速入门的资料,官方的 Tutorials V-REP User Manual
2. 最好有中文版的,据我所知,没发现有太好的。
好了,直接略去关于V-rep 最基本的介绍和与其他常用机器人仿真软件 Gazebo 的详细比较(感兴趣参阅 Draft:Comparison of Robotic Simulators ),直接上使用一个多月来的一些心得。
正如上面所说,个人感觉最好的快速入门资料就是官方的 Tutorials,尤其是 Bubble Rob tutorial, Inverse kinematics tutorial,Importing and preparing rigid bodies tutorial,和Hexapod tutorial,一边做一边点开蓝色的关键词学习,一天便可对软件有个整体的把握。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)