• 常用的仿真工具

仿真在机器人设计过程中十分重要,可以进行快速算法验证。同时,对于机器人学习者来说,仿真工具可以大大降低学习成本。

与机器人设计工具(如Solidworks, Blender)不同,机器人仿真平台集成了物理引擎,物理引擎可以根据物体的物理属性计算运动、旋转和碰撞,广泛应用于游戏、仿真中。如下图,Nao可以推动小箱子,却推不动更重的大箱子,这是由物理引擎中的牛顿定理计算得到的。常用的机器人仿真物理引擎有Bullet, ODE, MuJoCo等,其中Bullet和ODE开源,而MuJoCo是商业引擎,Deep Mind本月发布的新的增强学习环境Control Suite中使用的引擎即是MuJoCo。(关于这几个物理引擎的比较可以见15年ICRA的论文)。

V-REP仿真视频

机器人中常用的仿真工具有Gazebo,V-REP,Webot。其中Webot是商业仿真工具,这里只详细比较gazebo和V-REP:

Gazebo:开源,是ROS的默认仿真器,支持Bullet和ODE引擎,由OSRF(Open Source Robotics Foundation)维护(也是现在ROS的维护者),因此对于ROS的兼容性好。Gazebo中的模型格式是基于XML的SDF(Simulation Description Format),这有点像命令行,学习曲线较陡,但是学会后可以创造出很复杂的模型。

V-REP (Virtual Robot Experiment Platform):教育版本可免费使用,支持Bullet、ODE和Vortex(用于流体仿真)引擎,由Coppelia Robotics开发。相比于Gazebo,V-REP内集成了大量的常见模型,建模更加简单,同时V-REP也兼容ROS。

Gazebo(左)和V-REP(右)的仿真环境

14年的一篇论文从对ROS的兼容度、环境建模、机器人模型修改、可编程控制、CPU占用率几个方面详细比较了Gazebo和V-REP,得出的结论是Gazebo的优势在于与ROS完全兼容性、开源,而V-REP更为直观、方便使用,集成了更多的特性。

  • V-REP

V-REP是一款灵活、可拓展的通用机器人仿真器,可以支持多种控制方式和编程方式。

控制方式:支持远程控制(another machine)、异步控制(another thread)和同步控制(the same thread)三种控制方式。

编程方式:支持嵌入式脚本(Embedded Scripts)、加载项(Add-ons)、插件(Plugins)、远程API、ROS节点等,交互方式如下:

V-REP框架

在V-REP中,嵌入式脚本是一种很重要的编程方式,从上图可以看出其编程语言目前只支持Lua。Lua是由C语言编写的一门面向对象的编程语言,具有轻简、可嵌入、可跨平台等优点,也是现在人工智能的一大编程语言。有C基础的话可以很快入门Lua语言,可以参考我的笔记:Lua Tutorial

  • 学习V-REP

V-REP的官方文档是学习V-REP的第一手资料,国内资料目前较少,推荐冬木远景的博客vrep_tutorial, 以及知乎专栏Vrep机器人动力学建模仿真 。此外,Github上有很多有趣的开源项目,如

Virtual Robot Challenge

SLAM

V-REP Car Simulation

自动驾驶

NarrowDoor

增强学习

更多项目:

vrep_youbot_plugin: control the v-rep youBot using ROS

quadcopter_ctrl: a framework to control a swarm of quadcopters simulated in V-Rep by using ROS

同时,V-REP安装包里也带了非常有趣的很多场景。