From 2598e973abdc8caf023063dd9e7f7b9678705001 Mon Sep 17 00:00:00 2001 From: Brian Delhaisse Date: Fri, 21 Jun 2019 03:30:03 +0200 Subject: [PATCH] started to add docs using sphinx for readthedocs (ongoing) --- .gitignore | 2 + docs/Makefile | 19 ++++ docs/UML/pyrobolearn-uml.dia | Bin 8718 -> 8718 bytes docs/UML/pyrobolearn_uml.png | Bin 0 -> 117978 bytes docs/make.bat | 35 +++++++ docs/make_docs.sh | 10 ++ docs/source/conf.py | 187 +++++++++++++++++++++++++++++++++++ docs/source/examples.rst | 2 + docs/source/index.rst | 38 +++++++ docs/source/indices.rst | 6 ++ docs/source/installation.rst | 145 +++++++++++++++++++++++++++ docs/source/readme.rst | 22 +++++ examples/README.md | 21 ---- examples/README.rst | 20 ++++ 14 files changed, 486 insertions(+), 21 deletions(-) create mode 100644 docs/Makefile create mode 100644 docs/UML/pyrobolearn_uml.png create mode 100644 docs/make.bat create mode 100755 docs/make_docs.sh create mode 100644 docs/source/conf.py create mode 100644 docs/source/examples.rst create mode 100644 docs/source/index.rst create mode 100644 docs/source/indices.rst create mode 100644 docs/source/installation.rst create mode 100644 docs/source/readme.rst delete mode 100644 examples/README.md create mode 100644 examples/README.rst diff --git a/.gitignore b/.gitignore index 63c4b3f..cb9095b 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,8 @@ instance/ # Sphinx documentation docs/_build/ +docs/build/ +docs/source/docstring/ # PyBuilder target/ diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..69fe55e --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/UML/pyrobolearn-uml.dia b/docs/UML/pyrobolearn-uml.dia index b516d1bad7ade029b4eb3c6e6c23fe9147880b30..52ded9a183681e2ac720b49010a12ddf00369ee9 100644 GIT binary patch literal 8718 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 LolObsM`-^CeaoM9 diff --git a/docs/UML/pyrobolearn_uml.png b/docs/UML/pyrobolearn_uml.png new file mode 100644 index 0000000000000000000000000000000000000000..272c3d2daeb1909930c2b6ae3ec3438b45153641 GIT binary patch literal 117978 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⪚ruJcF4Ey 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 z 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

5W}5n-x%uN=H+UQspvQ|ZztCWe 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 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/make_docs.sh b/docs/make_docs.sh new file mode 100755 index 0000000..2b63980 --- /dev/null +++ b/docs/make_docs.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# . venv/bin/activate + +rm -Rf build +rm -Rf source/docstring + +sphinx-apidoc -f -o source/docstring/ ../pyrobolearn +make html + diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..56d12d6 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('../..')) + + +# -- Project information ----------------------------------------------------- + +project = u'PyRoboLearn' +copyright = u'2019, Brian Delhaisse' +author = u'Brian Delhaisse' + +# The short X.Y version +version = u'' +# The full version, including alpha/beta/rc tags +release = u'0.0.1' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' # 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'PyRoboLearndoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'PyRoboLearn.tex', u'PyRoboLearn Documentation', + u'Brian Delhaisse', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'pyrobolearn', u'PyRoboLearn Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'PyRoboLearn', u'PyRoboLearn Documentation', + author, 'PyRoboLearn', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} diff --git a/docs/source/examples.rst b/docs/source/examples.rst new file mode 100644 index 0000000..0e1d223 --- /dev/null +++ b/docs/source/examples.rst @@ -0,0 +1,2 @@ +.. include:: ../../examples/README.rst + diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..be750f3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,38 @@ +.. PyRoboLearn documentation master file, created by + sphinx-quickstart on Thu Jun 20 20:28:11 2019. + You can adapt this file completely to your liking, but it should at least + contain the root toctree directive. + +Welcome to PyRoboLearn's documentation! +======================================= + +.. toctree:: + :maxdepth: 2 + :caption: PyRoboLearn + + readme + +.. toctree:: + :maxdepth: 3 + :caption: Installation + + installation + +.. toctree:: + :maxdepth: 2 + :caption: Examples + + examples + +.. toctree:: + :maxdepth: 3 + :caption: Package Reference + + docstring/modules + +.. toctree:: + :maxdepth: 2 + :caption: Index + + indices + diff --git a/docs/source/indices.rst b/docs/source/indices.rst new file mode 100644 index 0000000..0dcc748 --- /dev/null +++ b/docs/source/indices.rst @@ -0,0 +1,6 @@ +Indices and tables +================== +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/docs/source/installation.rst b/docs/source/installation.rst new file mode 100644 index 0000000..99bd765 --- /dev/null +++ b/docs/source/installation.rst @@ -0,0 +1,145 @@ +Installation +============ + +There are 2 ways to install the PyRoboLearn framework. + +1. via :ref:`Docker` +2. using a :ref:`Virtual Environment` + + +.. _Docker: + +Docker +------- + +At the moment the docker is a self contained Ubuntu image with all the libraries installed. When launched we have access to a Python3.6 interpreter and we can import pyrobolearn directly. +In the future, ROS may be splitted in another container and linked to this one. + +1. Install Docker and nvidia-docker + +.. code-block:: bash + + sudo apt-get update + sudo apt install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable # you should replace bionic by your version + sudo apt update + sudo apt install docker-ce + sudo systemctl status docker # check that docker is active + +2. Build the image + +.. code-block:: bash + + docker build -t pyrobolearn . + +3. You can now start the python interpreter with every library already installed + +.. code-block:: bash + + docker run -p 11311:11311 -v catkin_ws:/pyrobolearn/catkin_ws/ -ti pyrobolearn python3 + + +To open an interactive terminal in the docker image use: + +.. code-block:: bash + + docker run -p 11311:11311 -v catkin_ws:/pyrobolearn/catkin_ws/ -ti pyrobolearn /bin/bash + + +4. If the GPU is not recognized in the interpreter, you can install ``nvidia-docker`` + +.. code-block:: bash + + curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - + distribution=$(. /etc/os-release;echo $ID$VERSION_ID) + curl -sL https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list + sudo apt-get update + sudo apt-get install nvidia-docker2 + sudo pkill -SIGHUP dockerd + +And use: + +.. code-block:: bash + + nvidia-docker run -p 11311:11311 -v catkin_ws:/pyrobolearn/catkin_ws/ -ti pyrobolearn + + +.. _Virtual Environment: + +Virtual Environment +------------------- + +0. Prerequisites: install the following packages on your Ubuntu system + +.. code-block:: bash + + sudo apt-get install cmake gfortran + + +1. First download the ``pip`` Python package manager and create a virtual environment for Python as described in the following link: https://packaging.python.org/guides/installing-using-pip-and-virtualenv/ + +On Ubuntu, you can install ``pip`` and ``virtualenv`` by typing in the terminal: + +- In Python 2.7: + +.. code-block:: bash + + sudo apt install python-pip + sudo pip install virtualenv + +- In Python 3.5: + +.. code-block:: bash + + sudo apt install python3-pip + sudo pip install virtualenv + + +You can then create the virtual environment by typing: + +.. code-block:: bash + + virtualenv -p /usr/bin/python + # activate the virtual environment + source /bin/activate + +where ```` is the python version you want to use (select between ``2.7`` or ``3.5``), and ```` is a name of your choice for the virtual environment. For instance, it can be ``py2.7`` or ``py3.5``. + +To deactivate the virtual environment, just type: + +.. code-block:: bash + + deactivate + + +2. clone this repository and install the requirements by executing the ``setup.py`` + +In Python 2.7: + +.. code-block:: bash + + git clone https://github.com/robotlearn/pyrobolearn + cd pyrobolearn + pip install numpy cython + pip install http://github.com/cornellius-gp/gpytorch/archive/alpha.zip # this is for Python 2.7 + pip install -e . # this will install pyrobolearn as well as the required packages (so no need for: pip install -r requirements.txt) + +In Python 3.5: + +.. code-block:: bash + + git clone https://github.com/robotlearn/pyrobolearn + cd pyrobolearn + pip install numpy cython + pip install gpytorch # this is for Python 3.5 + pip install -e . # this will install pyrobolearn as well as the required packages (so no need for: pip install -r requirements.txt) + + +Depending on your computer configuration and the python version you use, you might need to install also the following packages through ``apt-get``: + +.. code-block:: bash + + sudo apt install python-tk # if python 2.7 + sudo apt install python3-tk # if python 3.5 + diff --git a/docs/source/readme.rst b/docs/source/readme.rst new file mode 100644 index 0000000..7868920 --- /dev/null +++ b/docs/source/readme.rst @@ -0,0 +1,22 @@ +PyRoboLearn +=========== + +.. include:: ../../README.md + +Design Decisions +================ + +.. image:: ../UML/pyrobolearn_uml.png + +Citation +======== + +.. code-block:: latex + + @misc{delhaisse2019pyrobolearn, + author = {Delhaisse, Brian and Xin, Songyan and Rozo, Leonel, and Caldwell, Darwin}, + title = {PyRoboLearn: A Python Framework for Robot Learning Practitioners}, + howpublished = {\url{https://github.com/robotlearn/pyrobolearn}}, + year=2019, + } + diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 8684c1a..0000000 --- a/examples/README.md +++ /dev/null @@ -1,21 +0,0 @@ -## Examples - -In this folder, you will find different examples on how to use the framework. - -Warning: this folder is currently being updated; few files might still have some bugs or not -implemented completely. Some other folders will be added in the upcoming days. - -You can check the following folders: -- `worlds`: how to create a world in the simulator, load various objects inside and interact with -them, use the camera, and load or generate terrains. -- `robots`: check how to load a specific robot (biped, quadruped, wheeled, etc) into the world. -- `interfaces`: the various interfaces (game controllers, webcam, etc) and bridges that you can use. -- `kinematics`: check how to use forward and inverse kinematics as well as position and velocity control. -- `manipulability`: check how to use the velocity and dynamic manipulability ellipsoids. - -- `states`: how to query the states / observations. -- `models`: the different learning models that you can use. - -- `imitation`: how to use imitation learning with the framework. -- `gym/cartpole`: policies are trained with different algorithms on the gym Cartpole environment. - diff --git a/examples/README.rst b/examples/README.rst new file mode 100644 index 0000000..37a233a --- /dev/null +++ b/examples/README.rst @@ -0,0 +1,20 @@ +Examples +======== + +In this folder, you will find different examples on how to use the framework. + +Warning: this folder is currently being updated; few files might still have some bugs or not +implemented completely. Some other folders will be added in the upcoming days. + +You can check the following folders: + +- ``worlds``: how to create a world in the simulator, load various objects inside and interact with them, use the camera, and load or generate terrains. +- ``robots``: check how to load a specific robot (biped, quadruped, wheeled, etc) into the world. +- ``interfaces``: the various interfaces (game controllers, webcam, etc) and bridges that you can use. +- ``kinematics``: check how to use forward and inverse kinematics as well as position and velocity control. +- ``manipulability``: check how to use the velocity and dynamic manipulability ellipsoids. +- ``states``: how to query the states / observations. +- ``models``: the different learning models that you can use. +- ``imitation``: how to use imitation learning with the framework. +- ``gym/cartpole``: policies are trained with different algorithms on the gym Cartpole environment. +