Installation

MARV Robotics is implemented in Python using the MARV framework. Most of its Python dependencies will be installed via Python’s package management tools. Apart from these, ROS and some system libraries need to be installed, as outline in the following section.

Prerequisites

EE:

$ ls -1
marvee  # checkout of your MARV Robotics EE
$ ln -s marvee/requirements.txt .
$ ln -s marvee/code/marv/docs/tutorial .
$ ls -1
marvee
requirements.txt
tutorial

CE

$ ls -1
marv  # checkout of marv community edition
$ curl -LO https://raw.githubusercontent.com/ternaris/marv-robotics/master/requirements.txt
$ ln -s marv/docs/tutorial .
$ ls -1
marv
requirements.txt
tutorial

Robot Operating System

We assume you have working installation of ROS installed. MARV Robotics is meant to support all alive ROS releases (starting with kinetic). If you encounter difficulties with these, please report back!

We dropped support for Indigo due to outdated system dependencies that cannot be easily upgraded. If you need indigo support please let us know.

On an Ubuntu system the following are needed (as root). In case you succeeded installing ROS on anything else than Ubuntu, we trust you’ll also succeed to transfer the following lines to the system you are installing to.

Kinetic

# apt-get install capnproto \
                  curl \
                  ffmpeg \
                  libcapnp-dev \
                  libjpeg-dev \
                  libz-dev \
                  python-cv-bridge \
                  python2.7-dev \
                  python-opencv \
                  python-virtualenv \
                  ros-kinetic-laser-geometry \
                  ros-kinetic-ros-base
...
# rosdep init

Make sure ROS is set-up correctly for your user (not as root):

$ rosdep update
$ source /opt/ros/kinetic/setup.bash

MARV Robotics

MARV Robotics is a Python application. For increased reproducability of installations we use a virtual python environment and a set of frozen requirements for installation.

Create virtualenv

Create a Python virtual environment, activate it and update its package management tools:

$ virtualenv -p python2.7 --system-site-packages venv
$ source venv/bin/activate
$ pip install -U pip setuptools pip-tools

Test whether ROS is available from within the activated virtualenv, as a result of the --system-site-packages option. The (venv) prefix indicates the activated virtualenv:

(venv) $ python -c 'import rosbag; print("rosbag available")'
rosbag available

For more information see Virtual Environments.

Install requirements

Let’s synchronize the virtual environment to exactly those packages we want.

(venv) $ pip-sync requirements.txt

Warning

pip-sync will remove everything from the virtual environment that is not mentioned in requirements.txt! That is not an issue if you use it only for marv as outlined in this installation manual.

Install MARV Robotics

EE:

(venv) $ pip install --no-index --find-links='' marvee/code/*

CE:

(venv) $ pip install marv-robotics

Verify MARV Robotics is successfully installed:

(venv) $ marv --help

marv --help should print marv’s usage instructions. In the following sections we assume that your virtualenv is activated. If marv cannot be found, chances are that the virtualenv containing MARV Robotics is not activated.

Serve documentation

Let’s dedicate a terminal to start a small webserver to serve the documentation. Actually, to serve MARV Robotics EE already, which contains the documenation.

(venv) $ uwsgi --ini tutorial/docs-only-site/uwsgi-dev.conf

Now you have an instance of MARV running at: http://localhost:8000.

It’s documentation is linked in the footer and served at: http://localhost:8000/docs/

If you are running marv inside a container, make sure port 8000 is forwarded to outside the container.

Let’s switch to your locally served documentation.

Summary

Based on an existing ROS installation, you installed some system dependencies, created a virtual python environment, installed MARV Robotics EE into it, and started a webserver with marv and its documentation:

$ ls -1
...
tutorial  # link to tutorial directory
venv      # python virtualenv

Now your are ready to setup a basic site.