機器人模擬平台V-REP學習入門
- 常用的模擬工具
模擬在機器人設計過程中十分重要,可以進行快速演算法驗證。同時,對於機器人學習者來說,模擬工具可以大大降低學習成本。
與機器人設計工具(如Solidworks, Blender)不同,機器人模擬平台集成了物理引擎,物理引擎可以根據物體的物理屬性計算運動、旋轉和碰撞,廣泛應用於遊戲、模擬中。如下圖,Nao可以推動小箱子,卻推不動更重的大箱子,這是由物理引擎中的牛頓定理計算得到的。常用的機器人模擬物理引擎有Bullet, ODE, MuJoCo等,其中Bullet和ODE開源,而MuJoCo是商業引擎,Deep Mind本月發布的新的增強學習環境Control Suite中使用的引擎即是MuJoCo。(關於這幾個物理引擎的比較可以見15年ICRA的論文)。
機器人中常用的模擬工具有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。
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中,嵌入式腳本是一種很重要的編程方式,從上圖可以看出其編程語言目前只支持Lua。Lua是由C語言編寫的一門面向對象的編程語言,具有輕簡、可嵌入、可跨平台等優點,也是現在人工智慧的一大編程語言。有C基礎的話可以很快入門Lua語言,可以參考我的筆記:Lua Tutorial
- 學習V-REP
V-REP的官方文檔是學習V-REP的第一手資料,國內資料目前較少,推薦冬木遠景的博客和vrep_tutorial 。此外,Github上有很多有趣的開源項目,如
Virtual Robot Challenge
V-REP Car Simulation
Maze Runner
更多項目:
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安裝包里也帶了非常有趣的很多場景。
推薦閱讀:
※如何使用Solidworks做受力分析-Simulation應力分析
※Sentaurus TCAD安裝之jedit+TCAD宏包
※電力電子中PI參數的計算之二—— 應配置成什麼樣的系統呢?
※電影里撐傘跳樓的場景,到底靠譜嗎?