Robot Learning 框架比较
微信公众号:robot_learning123
分享机器人与人工智能相关的技术与最新进展,欢迎关注与交流。
原文链接:Robot Learning 框架比较
现在Robot Learning方面的学习框架(环境与算法)种类繁多,而如何选择一个合适的框架也是一件令人头疼的事情。CoRL2019有一篇文章[1]开源了一个Robot Learning Framework, PyRoboLearn(PRL), 支持多种仿真环境和几十种机器人,包含了从仿真训练到真机部署的全过程,非常值得学习借鉴,目前还在开发中,其基本特点如下:
-
OS: Ubuntu 16.04 and 18.04. Also, Windows 10, and Mac OSX but does not support all interfaces.
-
Python: 2.7, 3.5, 3.6
-
PEP8 compliant (unified code style)
-
Documented functions and classes
-
Unified framework
其中,官方文档里面有一篇文章[2]对当前常见的框架进行了总结与比较,对于初学者来说是一个不错的参考资料,有助于我们选出合适的框架。作者将框架大致分成两组: -
提供仿真环境(simulator & environment)
-
提供学习模型和算法 (learning model & algorithm)
1. Simulators
这部分首先列举出各种常见的机器人仿真器,然后对他们进行比较:
-
Gazebo-ROS
- free + open source
- C++ (Python through ROS)
- Python 3.* but Python 2.7 for some ROS packages
- Gazebo, ROS
-
Bullet/PyBullet
- Free (zlib license) + open source
- C++
- Python wrapper (Python 2.7 and 3.*)
- Bullet Github repo, and Pybullet Github repo
-
Mujoco/mujoco-py
- Not free unless student but cannot be used for research (require a License) + not open-source
- C
- Python wrapper (Python 3.5)
- Main Webpage, mujoco-py
-
Dart
- free + open-source
- C++
- Python wrapper (dartpy)
- Main Webpage
-
RaiSim/RaiSimPy
- free + not open-source (the cpp files)
- C++
- Python wrapper (Python 2.7 and 3.*)
- RaiSimLib, RaiSim Ogre, RaiSimPy
-
V-REP/PyRep
- free + open-source
- C++
- Python wrapper (Python 3.*)
- V-REP, PyRep
-
Isaac Gym (PhysX and FleX)
- not available for now
- C++
-
Webots
- free + open-source
- C++
- No Python wrappers
- Main webpage, Github repo
-
Argos3
- free + open-source
- C++
- Purpose: for multiple robots
- No Python wrappers
- Main webpage, Github repo
-
Chronos/PyChronos
- free + open-source + cross-platform (BSD-3 license)
- C++
- Chronos, PyChronos
-
OpenSim
- Purpose: “to develop models of musculoskeletal structures and create dynamic simulations of movement”
- OS: Linux, Windows, Ubuntu
- C++
- Main Webpage, Documentation, Github repo
-
Airsim
- Purpose: simulator for mainly drones and cars
- Backend: Unreal Engine
- C++
- Python client
- Documentation, Github repo
-
Carla
- Purpose: simulator for autonomous driving systems
- C++
- Python client
- Main webpage, Documentation
不是真正的仿真器而更像是工具:
-
Drake
- modelling dynamical systems + solving mathematical programs + multibody kinematics and dynamics
- C++
- Python wrapper
- Main Webpage
-
Robotics toolbox
- Matlab
- No Python wrappers
- Main Webpage
不是真正的仿真器但是提供物理引擎 (i.e. dynamics/physics library):
-
ODE
- C++
- Bitbucket repo
-
SimBody
- C++
- Main Webpage, Github repo
下面的表格对以上各个仿真器进行了比较与总结:
SimBenchmark[3]对各种物理引擎进行了比较,感兴趣的可以看一看.
2. Environments
-
OpenAI Gym
- OS: Linux and OS X
- Python 2.7 or 3.5
-
gym-miniworld
- Python 3.5+
-
DeepMind Control Suite
- OS: Ubuntu 14.04 and 16.04
- Python: 2.7 and 3.5
- Simulator: Mujoco
-
Roboschool
- OS: Ubuntu/Debian and Mac OS X
- Python 3 (might be compatible with Python 2.7 but “may require non-trivial amount of work”)
- Simulator: Internal
-
Pybullet Gym
- OS: Linux, Windows and OS X
- Python 2.7 or 3.5
- Simulator: PyBullet
-
GibsonEnv
- Nvidia GPU with VRAM > 6GB
- OS: Ubuntu >= 14.04
- Python 3.5 is recommended
-
AI-habitat
- Python 3
-
Airsim
- Requirements:
- OS: Linux and Windows
- C++, Python, C# and Java
- Unreal Engine + Unity
- Requirements:
-
Carla
- OS: Linux and Windows
- Python
- Nvidia Isaac Gym/Sim
- Information unavailable for the moment
-
Surreal Robotics Suite
- OS: Mac OS X and Linux
- Python 3.5 or 3.7
- Simulator: Mujoco
- Robots: Baxter
- Devices: mouse and spacemouse
- Paradigms: Imitation and reinforcement
- Robot Manipulation
-
PyRobot
- OS: Ubuntu 16.04
- Python 2.7
- Simulator: Gazebo(+ROS)
- PyRobot is a lightweight Python framework which is built on top of Gazebo-ROS, and focuses on manipulation and navigation.
- Comparisons with PyRoboLearn: PyRoboLearn can be seen as the more heavyweight version of that framework.
-
S-RL Toolbox (Reinforcement Learning (RL) and State Representation Learning (SRL) Toolbox for Robotics)
- OS: Linux, Mac OSX, Windows
- Python 3
- Simulator: PyBullet
- use stable-baselines
-
RLBench
- OS: Ubuntu 16.04 + Windows + Mac OSX
- Python 3
- Simulator: PyRep
- Paradigms:
- https://github.com/stepjam/RLBench
-
gym-chrono
- OS: Linux, Windows, OSX
- Python
- Simulator: PyChrono
- Paradigm: reinforcement
- https://github.com/projectchrono/gym-chrono
-
ROBEL
-
“ROBEL (RObotics BEnchmarks for Learning): a collection of affordable, reliable hardware designs for studying dexterous manipulation and locomotion on real-world hardware”
-
Main webpage, Github repo
Comparisons between different robot learning frameworks that provide environments. PL stands for perception learning, SRL for state representation learning, and AV for autonomous vehicles.
和以上框架相比,PRL是模块化的,更为灵活,同时有很好的文档。下面主要和RLBench进行比较:
-
RLBench is only available in Python 3.* (not back compatible with Python 2.7), while PRL is available in both versions
-
RLBench uses the PyRep simulator while PRL is agnostic wrt the used simulator in principle
-
You currently can not load URDFs with PyRep (and thus with RLBench)
-
You have to specify the scene (environment) and the objects/robots in the scene beforehand in V-REP and generate a ttm or ttt file in a static way.
-
RLBench focuses mostly on manipulation tasks but has the advantage of providing more than 100 tasks to users. However, note that currently these are defined for the Franka Emika Panda manipulator.
-
PRL proposes more different robotic platforms, interfaces, and has in general more features (priority tasks, ROS support, and others. See following link_).
-
Regarding the 3D models that are available (in OBJ, and binary format but can be opened with VREP), I am currently not sure if their redistribution is allowed especially without providing the license and proper attribution.
3. Models & Algorithms
模型和算法依赖于后端使用的库(numpy, tensorflow, keras, pytorch, …),下面列举一些RL相关的算法库:
-
Keras-RL:
- Model and algorithm coupled
-
rllab/garage
- Python 3.5+ (officially), old branch for Python 2 (for rllab)
- Backend: TensorFlow
-
rllib
-
OS: Ubuntu 14.04, 16.04, 18.04 + Mac OSX 10.11, 10.12, 10.13, 10.14
-
Python 2 and 3
-
Backend: TensorFlow, PyTorch
-
-
pytorch
- OS: Linux, Mac, Windows
- Python 2.7, 3.5, 3.6, 3.7
-
stable-baselines
- OS: Ubuntu, Mac OSX, Windows 10
- Python >= 3.5
- Backend: TensorFlow
-
Catalyst
- Python 3.6+
- Backend: PyTorch 0.4.1+
- Modular and more flexible
-
rlpyt
- Backend: PyTorch
- https://github.com/astooke/rlpyt
- Deep Reinforcement Learning Algorithms with PyTorch
- Backend: PyTorch
- https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch
Reference:
[1] https://www.researchgate.net/profile/Leonel_Rozo/publication/337019331_PyRoboLearn_A_Python_Framework_for_Robot_Learning_Practitioners/links/5dc0dec4299bf1a47b154fc3/PyRoboLearn-A-Python-Framework-for-Robot-Learning-Practitioners.pdf
[2] https://github.com/robotlearn/pyrobolearn/blob/master/docs/source/frameworks.rst
[3] https://leggedrobotics.github.io/SimBenchmark/