A-A+

机器人仿真:谈一下VREP的优缺点

2015年06月12日 Resource, robotics 评论 1 条 阅读 1 次
作者:何荣虎 中科院
感谢何老师致力于机器人教育推广事业,并在ExBot首发相关文章。
谈一下VREP的优缺点。
目前市场上有很多建模和模拟软件,最常见的建模软件无非是CAD类,比如CATIA,SOLIDWORKS等等,这些软件的侧重点在于精确的机械建模,用于生产/工厂规划等等。另外一类软件是模拟分析软件,比如FEM软件ANSYS,可以进行非常精确的应力/材料/温度分析等等。还有一类是多体动力学软件,比如MSC公司的ADAMS,韩国的Recurdyn,这些软件是基于物理引擎的动力学模拟。在对比VREP和其他软件前先说一下物理引擎。
物理引擎是一种基于牛顿力学的数学算法,也就是说,通过这种算法能够模拟真实的物理世界,所谓“真实的物理世界”所指的是包含力的效应的动力学,而不是简单的运动学。举一个简单的例子,在CAD软件中已经包含的运动学模拟,比如两个小球可以互相移动,然后碰撞,停止。现在问题来了(挖掘机哪家强?),发生碰撞效应之后,力的传导是怎样的?会不会反弹?反弹多少?这些问题都可以由理论力学根据真实的小球质量,材料特性,摩擦力等等在纸上计算出来,然而在CAD中并不包含这部分算法。所有基于物理引擎的模拟软件,像VREP,ADAMS,Recurdyn都可以解决此类问题。我们所常见的FPS游戏CS,COD,侠盗猎车,赛车游戏NFS,还有Steam公司开发的DOTA2都是基于物理引擎的游戏,所以会给玩家带来真实的物理世界游戏体验。
关于物理引擎更多的知识请自己google,这里推荐一篇文章:How Physics Engines Work

CAD软件不包含物理引擎,而模拟软件则是基于物理引擎的。
ADAMS,Recurdyn或者ANSYS,这些软件的优点在于,这些公司研发的物理引擎算法非常精确,具有针对性,比如在轮胎分析领域,FEM软件绝对是不二之选,因为橡胶材料的模拟不仅涉及到形变,还有温变,这是一个非常专业的领域。其他等等等等很多例子不再另述。然而它们也有缺点。

首当其冲的就是价格,Recurdyn的专业版售价约3万欧元,之后还要每年续费,另外如果需要特别的工具包还要每个月付租金(默认工具包少的可怜)。ADAMS更贵,因为MSC公司是多体动力学软件的领头羊。VREP售价5000欧左右,之后的续费也非常合理。第二,上手不容易,不经过培训根本别想靠自学搞出点什么名堂来。培训有两条路,学术培训(大学授课)和商业培训。国内很多软件课基本学不到什么东西,因为很多教授自己都不懂,跟工业领域实际应用脱节太厉害。商业培训是要付很多钱的,除非是像比如Continental做轮胎需要在这一块研发投入很多财力人力,不然一般公司里不会考虑这种额外的费用和精力。第三,开源和自由编程。虽然物理引擎库算法精确,但是不开源,这在一定程度上限制了作为开发人员的可拓展性。
VREP就是在这三点上具有优势的。VREP集成了建模/编程/物理引擎。它具有三款物理引擎,Bullet/ODE/Vortex。Bullet和ODE都是是开源的,曾经用于很多游戏(个人测试下来ODE不太行)。Vortex是商业物理引擎,它的开发公司是CM-Labs,这家公司自己也有类似VREP的机器人模拟软件CM-Labs,虽然引擎库的计算精确性要比Bullet好很多,但是建模和编程环境没有VREP方便。第二,VREP本身也是开源的。它使用的是LUA语言进行编程。LUA是一个体积很小的编程语言,但是却集成了C库,Python,Matlab等等其他主流语言,这使得工程师非常容易上手。开源,快速,灵活的建模和模拟,同时保证一定的模拟精度,这是研发中非常重要的一部分。

VREP本身也有一些bug,它还是一个小软件,在不断改进中,去官网看看它的版本更新就有体会了。它是一个瑞士工程师开发的(也就是论坛网管coppelia),目前还有很多问题没有解决。比如,一个程序里所有代码页(scripts)的执行顺序是未知的,这会导致输入输出变量的先后顺序错位,导致计算错误。

总之,我个人觉得VREP是一款非常有趣的软件,主要因为我以前也没有真正接触过物理引擎,只是在游戏中听到过这个词,现在真正去了解了,发现非常有趣,很多以前学的牛顿学物理知识又有进一步的深入理解。同时,因为它是软件,在编程和分析错误方面也有很多新的经验和体会。

V-REP机器人及模拟自动化软件平台
V-REP(Virtual Robot Experimentation Platform),堪称机器人仿真界的NO.1,是全球领先的机器人及模拟自动化软件平台。V-REP让使用者可以模拟整个机器人系统或其子系统(如感测器或机械结构),通过详尽的应用程序接口(API)

【详细说明】

  V-REP(Virtual Robot Experimentation Platform),堪称机器人仿真界的NO.1,是全球领先的机器人及模拟自动化软件平台。V-REP让使用者可以模拟整个机器人系统或其子系统(如感测器或机械结构),通过详尽的应用程序接口(API),可以轻易的整合机器人的各项功能。V-REP可以被使用在远程监控、硬件控制、快速原型验证、控制算法开发与参数调整、安全性检查、机器人教学、工厂自动化模拟及产品展示等各种领域。V-REP集成开发环境,基于分布式控制体系结构,每个仿真对象(模型)可以通过嵌入式脚本、一个插件、ROS节点、远程API客户端、用户定制解决方案实现单独控制。这些极大的扩展了V-REP的功能,并且成为的多机器人系统应用的理想平台。控制器的编写支持六种通用语言:C/C++、Python、Java、Lua、Matlab or Urbi。

 

V-REP主要特色

  • 分布式控制:脚本(script)驱动,通过不限定数目的操作脚本同时运作(线性或非线性),可完全客户化定制模拟机器人,同时支持C++ API函数调用。
  • 强大API(应用程序接口):拥有超过300组完整、高密度且齐全的API函数,也可从C/C++、Lua导入。(也可使用其他语言程序的API调用)。
  • 便利的模型浏览器:整合模型浏览器支持场景建立时的拖拉操作,资料库随版本更新。CAD资料导入导出:支持DXF、3DS、OBJ、STL(ASCII & binary)等格式。
  • 丰富的建模元素:提供超过10种建模元素,用户可以随意组合实现自定义模型的搭建。
  • 动力学/物理:使用者可以选择一种或两种物理计算引擎,来模拟真实的动力学情形与物件间的互动状况。最新版本还集成了目前全球最专业的商业物理引擎Vortex,可以为客户建立更加准确、高效的动力学仿真模型。
  • 正逆向运动学:反逆向运动学计算任何类型的机制(branched、closed、redundant、containing nested loops等等),采用一种混合模式允许值计算的联合动态控制值。
  • 动态粒子:支持可客户化的颗粒,可用于模拟空气或水射流、喷气发动机、螺旋桨等。
  • 碰撞检测与距离计算:在几何组件中快速判断各种干扰与碰撞,以及计算多个组件间的最小距离。
  • 切削模拟:各种定制的表面切削操作模拟。
  • 距离+视觉传感器模拟:强大、真实、精确并可自定义的距离传感器器模拟。可完全自定影像处理功能的视觉传感器模拟。
  • 路径规划:在二到六个物件自由度下规划完整路径,或车载类工具的部分路径。
  • 自定义使用者接口:在整合的编辑模式下,没有数量限制的用户自定义接口元件。
  • 完全互动:在模拟过程中,模型可以在不同运动情形下被移动、旋转、复制黏贴、尺寸重设与刪除。

PPT下载

 

1 幻灯片 1

Virtual Robot Experimentation Platform
V-REP

Many text items in this presentation are active and can be clicked

2 幻灯片 2

V-REP Overview
What is it ?
What can it do ?
Typical applications ?
General purpose robot simulator with integrated 
development environment
Sensors, mechanisms, robots and whole systems can be 
modelled and simulated in various ways 
 Fast prototyping and verification
 Fast algorithm development
 Robotics related education
 Remote monitoring
 Hardware control
 Simulation of factory automation systems
 Safety monitoring
 Product presentation
 etc.
>> Play overview video

3 幻灯片 3

Scene 
Objects
Calculation 
Modules
Control 
Mechanisms
3 Central Elements

4 幻灯片 4

Scene 
Objects
Calculation 
Modules
Control 
Mechanisms
Scene Objects
 Basic building blocks
 12 different types
 Can be combined with each other
 Can form complex systems 
together with calculation modules 
and control mechanisms
Scene Objects

5 幻灯片 5

Scene Objects
Scene 
Objects

Shapes
Joints
Cameras
Lights
Dummies / 
reference frames
Graphs
Paths / trajectories
Proximity
sensors
Force / torque
sensors
Vision sensors
Mills

Mirrors

6 幻灯片 6

Proximity Sensors & Graphs
 More than simple ray-type detection
 Configurable detection volume
 Fast minimum distance calculation within volume
 Much more realistic simulation than with ray-type sensors
 Time graphs
 X/Y graphs
 3D curves
 Can be exported

Proximity Sensors
Graphs
>> Play demo video

7 幻灯片 7

Vision Sensors

 Integrated image processing
 Extendable via plugin mechanism
Vision Sensors
>> Play demo video

8 幻灯片 8

Paths and Mills 
 Customizable cutting volume
 Cuts shapes (i.e. meshes)
Paths
Mills

 6 dim. trajectory definition
 Path can be shaped 
(i.e. automatically generate extruded meshes)
>> Play demo video

9 幻灯片 9

Cameras, Lights and Mirrors 

Cameras
 Perspective / orthographic projection
 Tracking & automatic view-fitting function
Mirrors
Mirror or scene / object clipping function
Lights
Spotlight / directional / omnidirectional
>> Play demo video

10 幻灯片 10

Joints, Shapes, Force/Torque Sensors, and Dummies 
 Revolute-type
 Prismatic-type
 Screw-type
 Spherical-type
Force/Torque Sensors
 Measures force and torque
 Can conditionally break apart
Shapes
 Random mesh, convex mesh, primitive mesh or heightfield mesh
 Can be grouped/ungrouped
 Optimized for fast calculations
Dummies
Auxiliary refenrence frame & helper object

Joints

11 幻灯片 11

Scene 
Objects
Calculation 
Modules
Control 
Mechanisms
3 Central Elements
 5 basic algorithms
  Can be combined with each other
 Can form complex systems 
together with scene objects and 
control mechanisms
Calculation modules

12 幻灯片 12

Calculation Modules
Calculation 
Modules

Minimum distance calculation
Physics / Dynamics

Forward / Inverse kinematics

Path planning
Collision detection

13 幻灯片 13

Kinematics and Distance Calculation
Inverse / forward Kinematics
 Any mesh (also open / concave / polygon soups)
Minimum Distance Calculation

 Any mechanism: redundant, branched, closed, etc.
 Damped / undamped resolution
 Weighted resolution
 Conditional resolution
 Obstacle avoidance
>> Play demo video

14 幻灯片 14

Dynamics
 2 open physics engines: Bullet and ODE
 1 preofessional dynamics engine: Vortex
 Simple mouse click to switch
 Dynamic particles to simulate air or water jets
 Can work hand-in-hand with kinematics module
Dynamics / Physics

>> Play demo video

15 幻灯片 15

Collision Detection and Path Planning
Path Planning
 Any mesh (also open / concave / polygon soups)
Collision Detection
 Holonomic in 2-6 dimensions
 Non-holonomic for car-like vehicles
>> Play demo video

16 幻灯片 16

Scene 
Objects
Calculation 
Modules
Control 
Mechanisms
3 Central Elements
 6 methods or interfaces
  >6 languages
 6 methods can be used at the same 
time, and even work hand-in-hand
Control Mechanisms

17 幻灯片 17

Control 
Mechanisms
Control Mechanisms

Add-ons

Remote 
API clients

Plugins

ROS
nodes

Custom
solutions

Embedded 
scripts

18 幻灯片 18

Control 
Mechanisms
Local and Remote Interfaces
Local (i.e. same process)
Sync.* or async.* operation
 Remote (i.e. different process / hardware)
 Async.* operation

Add-ons

Remote 
API clients

Plugins

ROS
nodes

Custom
solutions

Embedded 
scripts
*Synchronous to the simulation loop

19 幻灯片 19

Local Interfaces

Add-ons

Plugins

Embedded 
scripts
Plugins
 > 400 API functions. Extendable
 C/C++ interface
 Can customize the simulator
 Can register new embedded script commands
Add-ons
 > 300 API functions. Extendable
 Lua interface
 Can customize the simulator
 Lightweight and easy to set-up
 Many Lua extension libraries available
Embedded Scripts
 > 300 API functions. Extendable
 Can be attached to any scene object
 Many Lua extension libraries available 
 Threaded or non-threaded. Threads can be synchronized easily
 Various types: main script, child scripts, callback scripts (e.g. custom joint controllers)
 Lua interface
 Lightweight and easy to program
 Extremely portable solution

20 幻灯片 20

Remote Interfaces
Remote API
 > 100 API functions. Extendable
 C/C++, Python, Java, Matlab & Urbi interfaces
 Data streaming and partitioning modes
 Lightweight and easy to use
ROS Interface
 > 100 services, >30 publisher types, >25 subscriber types. Extendable
 Publishers/subscribers can be enabled via service calls, or via an 
embedded script function call

Remote 
API clients

ROS
nodes

21 幻灯片 21

Embedded Script Advantages 1/6
Simulation 
model
(meshes, joints, 
sensors, etc.)
Plugin
(controller)
+
2 items
Simulation 
model
(meshes, joints, 
sensors, etc.)
+
controller
1 item
Plugins
Embedded scripts
Controller Integration

22 幻灯片 22

Embedded Script Advantages 2/6
Plugin has to manage instances
Scalability is inherent
Plugins
Simulation 
model 2
Plugin
Simulation 
model 1
Simulation 
model 3
Simulation 
model 2
Simulation 
model 1
Simulation 
model 3
Embedded scripts
Scalability

23 幻灯片 23

Embedded Script Advantages 3/6
High chances for conflicts
No chances for conflicts
Simulation 
model 2
(version 1)
Plugin
(version 1)
Simulation 
model 1
(version 1)
Simulation 
model 1
(version 2)
Simulation 
model 2
(version 1)
Simulation 
model 1
(version 1)
Simulation 
model 1
(version 2)
Plugin
(version 2)
Plugins
Embedded scripts
Version Conflicts

24 幻灯片 24

Embedded Script Advantages 4/6
Plugin
Simulation 
model
Plugin source
Simulation 
model
Plugin source
Plugin source
Simulation 
model
Simulation 
model
Many files
Compilation required
OS-specific problems
1 file
No compilation required
No OS-specific problems
Same OS
Same OS
2 files
1 file
Different OS
Different OS
Plugins
Embedded scripts
Portability

25 幻灯片 25

Creation, compilation and 
installation difficulty: 
High
Creation, compilation and 
installation difficulty: 
Low
Model modification difficulty: 
High
Model modification difficulty: 
Low
Maintenance over the years: 
OS-dependant
Maintenance over the years: 
OS-independant
Embedded Script Advantages 5/6
Plugins
Embedded scripts
Other Considerations

26 幻灯片 26

Embedded Script Advantages 6/6
Difficult
Easy
Non-threaded
Non-threaded
Control routine called at
each simulation pass
Control routine called at
each simulation pass
Control routine thread can 
behave as a coroutine
e.g.
Complex synchronization 
mechanism required 
simSwitchThread()
simSetThreadSwitchTiming(delay)
simSetThreadIsFree(isFree)
simSetThreadResumeLocation(location,order)
Easy
Easy
Threaded
Threaded
Plugins
Embedded scripts
Synchronization with Simulation Loop

27 幻灯片 27

Embedded Scripts  Simple Example

Embedded
script
Hokuyo simulation 
model
Shape
Joint
Proximity
sensor
Hokuyo model hierarchial
representation
Hexapod 
simulation model
Distance sampling rays
Detected points
>> Play demo video

28 幻灯片 28

Remote API Advantages 1/2

V-REP
... . . ... .
...  . .. . .
.. .. ... . ... 
Matlab
C/C++
Python
Urbi
Java
Runs on any hardware, lightweight, several languages

29 幻灯片 29

Remote API Advantages 2/2

V-REP

... . . ... .
...  . .. . .
.. .. ... . ... 
int errorCode=simxGetJointPosition(jointHandle,&position,operationMode);
Remote API function
Regular arguments
 simx_opmode_oneshot
 simx_opmode_oneshot_wait
 simx_opmode_streaming
 simx_opmode_discontinue
 simx_opmode_buffer
 etc.
 simx_error_noerror
 simx_error_timeout_flag
 simx_error_novalue_flag
 simx_error_remote_error_flag
 simx_error_local_error_flag
 etc.
Remote API client
Very easy to use, almost like a regular API
Blocking mode

30 幻灯片 30

Collaborative Control Mechanisms

Add-ons

Remote 
API clients

Plugins

ROS
nodes

Custom
solutions

Embedded 
scripts

31 幻灯片 31

int pos[3]={1.0f,2.0f,3.0f};
simxAppendStringSignal("objCreation",(simxChar*)pos,3*4,simx_opmode_oneshot);
Example of Collaborative Mechanism 1 / 3
signalData=simGetStringSignal("objCreation")
simClearStringSignal("objCreation")
if signalData then
  data=simUnpackFloats(signalData)
  for i=0,(#data-1)/3,1 do
    handle=simCreatePureShape(2,22,{0.1,0.1,0.1},0.1)
    simSetObjectPosition(handle,-1,{data[3*i+1],data[3*i+2],data[3*i+3]})
  end
end
Appends coordinate information to the signal objCreation

Creates cylinders at the coordinates indicated in the signal objCreation

Remote 
API client

Embedded 
script

32 幻灯片 32

void SCRIPT_DO_SOME_MAGIC_CALLBACK(SLuaCallBack* p)
{
  ... ( gets called when a script calls simxExt_doSomeMagic )
}
// Initialization phase of plugin: register new script commands:
#define SCRIPT_DO_SOME_MAGIC "simExt_doSomeMagic"
int inArgs[]={2,sim_lua_arg_int,sim_lua_arg_float|sim_lua_arg_table};
simRegisterCustomLuaFunction(SCRIPT_DO_SOME_MAGIC,strConCat("number value1, 
number value2=",SCRIPT_DO_SOME_MAGIC,"(number index,table inVals)"), 
inArgs,SCRIPT_DO_SOME_MAGIC_CALLBACK);
Example of Collaborative Mechanism 2 / 3
returnData1,returnData2=simExt_doSomeMagic(arg1,arg2)
Registers and handles the custom script API function simExt_doSomeMagic

Calls the custom API function simExt_doSomeMagic

Embedded 
script

Plugin

33 幻灯片 33

Example of Collaborative Mechanism 3 / 3
-- Following in the script initialization phase (executed just once):
-- Retrieve the handle of the vision sensor we wish to stream:
visionSensorHandle=simGetObjectHandle('Vision_sensor')
-- Now enable topic publishing and streaming of the vision sensor's data:
topicName=simExtROS_enablePublisher('visionSensorData',1,
simros_strmcmd_get_vision_sensor_image,visionSensorHandle,0,'')
-- Retrieve the handle of the passive vision sensor. We will use
-- the passive vision sensor to visualize received data:
passiveSensorHandle=simGetObjectHandle('PassiveVision_sensor')
-- Now enable a topic subscription:
simExtROS_enableSubscriber(topicName,1,
simros_strmcmd_set_vision_sensor_image,passiveSensorHandle,0,'')
Enable image streaming to ROS

Enable image streaming from 
ROS

Embedded 
script

ROS
Framework

34 幻灯片 34

Architecture Overview
(1)
C/C++ API calls
(2)
cascaded child script execution
(3)
Lua API calls
(4)
custom Lua API callbacks
(5)
V-REP event callbacks
(6)
remote API function calls
(7)
ROS transit
(8)
custom communication (socket, 
serial, pipes, etc.)
(9)
Add-on calls to Lua API
(10)
 Script callback calls

35 幻灯片 35

Other Feature: Custom User Interfaces
Custom User Interfaces

 Buttons, sliders, edit boxes and labels
 Can be textured or animated (e.g. via video stream)
 Can be attached (i.e. embedded) to scene objects
 Extremely portable
 Integrated edit mode

36 幻灯片 36

Other Feature: Mesh Edit Modes
Mesh Edit Modes
 Triangle, vertex or edge edit mode
 Modify meshes (adjust vertices, add/remove triangles)
 Semi-automatic primitive shape extraction function
 Triangle, vertex or edge extraction
 Mesh decomposition
 Convex decomposition
 Convex hull extraction

37 幻灯片 37

More Features
 Import formats: OBJ, STL, 3DS, DXF, COLLADA & URDF
 Integrated Reflexxes motion library: www.reflexxes.com
 Model browser and scene hierarchy
 Multilevel undo / redo
 Movie recorder
 Simulation of wireless communication
 Simulation of paint or welding seams
 Static & dynamic textures
 Exhaustive documentation
 Etc.

38 幻灯片 38

标签:

1 条留言  访客:1 条  博主:0 条

  1. vampire

    vrep的确是一款非常好的机器人仿真软件

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: