Comparisons with other Frameworks ================================= Frameworks can mostly be divided into 2 groups: 1. the ones that focus on providing environments 2. the ones that focus on providing learning models and algorithms In this document, I will review and compare the various frameworks. PyRoboLearn: * 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 Simulators ---------- In this section, we first review the various robotic simulators, and provide comparisons between them: * 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 `__ Not really simulators but more like tools: * Drake * modelling dynamical systems + solving mathematical programs + multibody kinematics and dynamics * C++ * Python wrapper * `Main Webpage `__ * Robotics toolbox * Matlab * No Python wrappers * `Main Webpage `__ Not really simulators but provide physics engine (i.e. dynamics/physics library): * ODE * C++ * `Bitbucket repo `__ * SimBody * C++ * `Main Webpage `__, `Github repo `__ The following table summarizes the comparisons between the various simulators: .. csv-table:: :header: "Name", "Language", "Free", "Open-source", "Supported OS", "Python wrapper", "Main purpose", "License" "Bullet", "C/C++", "Yes", "Yes", "Linux, Mac OSX, Windows", "2.7 and 3.*", "Robotics, Game, Graphics", "Zlib" "MuJoCo", "C", "Yes", "No", "Linux, Mac OSX, Windows", "mujoco_py >=3.5", "Robotics, Game, Graphics", "Proprietary (MIT for mujoco_py)" "Dart", "C++", "Yes", "Yes", "Linux, Mac OSX, Windows", "2.7 and 3.*", "Robotics", "BSD 2" "Raisim", "C++", "Yes", "No", "Linux (Ubuntu)", "2.7 and 3.*", "Robotics", "EULA (MIT for raisimpy)" "V-Rep", "C++", "Yes", "Yes", "Linux (Ubuntu), Mac OSX, Windows", ">= 3.5", "Robotics", "Commercial or GNU GPL (MIT for PyRep)" "Gazebo + ROS", "C++", "Yes", "Yes", "NA", "ROS (2.7 and some packages >=3.5)", "Robotics", "Apache 2.0 (for Gazebo), BSD3 (for ROS)" "Isaac", "C++", "NA", "NA", "NA", "NA", "Robotics", "NA" "Chronos", "C++", "Yes", "Yes", "Linux, Mac OSX, Windows", "Yes", "Robotics", "BSD3" "OpenSim", "C++", "Yes", "Yes", "Mac OSX, Windows", "NA", "Musculoskeletal models", "Apache 2.0" "Airsim", "C++", "Yes", "Yes", "Linux and Windows", ">=3.5", "Cars and Drones", "MIT" "Carla", "C++", "Yes", "Yes", "Linux and Windows", "Yes", "Autonomous driving agents", "MIT" "Webots", "C++", "Yes", "Yes", "Linux, Mac OSX, Windows", "No", "Robotics", "Apache 2.0" "Argos3", "C++", "Yes", "Yes", "Linux, Mac OSX", "No", "Swarm Robotics", "MIT" Have also a look at `SimBenchmark `__ for a comparison between various physics engines. 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 * 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 `__ .. csv-table:: Comparisons between different robot learning frameworks that provide environments. PL stands for perception learning, SRL for state representation learning, and AV for autonomous vehicles. :header: "Name", "Supported OS", "Python", "Simulator", "Paradigm", "Robot", "Domain", "Last active" "OpenAI Gym", "Linux, Mac OSX", "2.7, 3.5", "MuJoCo", "RL", "3D chars", "Manipulation, Locomotion", "few days ago" "DeepMind Control Suite", "Ubuntu 14.04/16.04", "2.7, 3.5", "MuJoCo", "RL", "3D chars", "Locomotion, Control" "Roboschool", "Ubuntu/Debian, Mac OSX", "3", "Bullet", "RL", "3D chars", "Locomotion, Control" "Pybullet Gym", "Linux, Mac OSX, Windows", "2.7, 3.5", "PyBullet", "RL", "3D chars, Atlas", "Manipulation, Locomotion, Control", "8 months ago" "GibsonEnv", "Ubuntu", "3.5", "Bullet", "PL/RL", "3D chars, 5 robots", "Perception, Navigation" "Airsim", "Linux, Windows", "3.5+", "Unreal Engine/Unity", "IL/RL", "AV", "Navigation" "Carla", "Ubuntu 16.04+, Windows", "2.7, 3.5", "Unreal Engine", "IL/RL", "AV", "Navigation" "Surreal Robotics Suite", "Linux, Mac OSX", "3.5, 3.7", "MuJoCo", "IL/RL", "Baxter/Sawyer", "Manipulation" "S-RL Toolbox", "Linux, Mac OSX, Windows", "3.5+", "PyBullet", "RL/SRL", "Kuka/OmniRobot", "Manipulation, Navigation" "RLBench", "Linux, Mac OSX, Windows", "3.5+", "PyRep", "IL/RL/ML/MTL", "Franka Emika Panda", "Manipulation", "few days ago" "gym-chrono", "Linux, Windows, OSX", "NS", "PyChrono", "RL", "Pendulum, Ant, Hexapod, Manipulator", "Manipulation, Locomotion, Control", "few days ago" "ROBEL", "NS", "3.5+", "MuJoCo", "RL", "D'Claw, D'Kitty", "Hardware, Manipulation, Locomotion", "few days ago" "PyRoboLearn", "Linux (Mac OSX*, Windows*)", "2.7, 3.5, 3.6", "Agnostic (PyBullet)", "IL/RL", "60+ robots", "Manipulation, Locomotion, Control", "few days ago" Note that except PRL none of these frameworks is modular nor flexible. PRL also has the advantage of being heavily documented. Full comparison with RLBench as it is the one that seems to be most similar to the proposed framework: - 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 (see following `link `__). Models & Algorithms ------------------- Models and algorithms depends on the use of a backend library (numpy, tensorflow, keras, pytorch, ...). Because PRL is using pytorch and numpy as backends, I will mostly focus on these. * 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 .. csv-table:: Learning models and algorithms :header: "Name", "Supported OS", "Python", "Backend", "Flexible" "rllab / garage", "Linux, Mac OSX", "3.5+", "TensorFlow", "No" "rllib", "Ubuntu 1[4,6,8], Mac OSX 10.1[1-4]", "2, 3", "TensorFlow, PyTorch", "No" "stable-baselines", "Linux, Mac OSX, Windows", "3.5", "TensorFlow", "No" "Catalyst", "NS", "3.6+", "PyTorch", "Yes" "rlpyt", "NS", "NS", "PyTorch", "Yes" "DRL with PyTorch", "NS", "NS", "PyTorch", "No" "PyRoboLearn", "Ubuntu 16.04/18.04", "2.7, 3.5, 3.6", "PyTorch", "Yes"