> For the complete documentation index, see [llms.txt](https://vecihi.gitbook.io/vecihi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vecihi.gitbook.io/vecihi/algorithms-and-simulation/dependencies.md).

# Dependencies

What does project depends to build and run?

## Python 2.7+

In this project implementation we used Python 2.7 and it's packages to create a stable and flexible work environment. In order to install [Python 2.7](https://www.python.org/download/releases/2.7/), one of the POSIX systems or Windows is required. To install scientific Python packages, *pip* or *virtualenv* is needed or Python distribution Anaconda may be used.

to install *pip*:

```bash
python -mpip install -U pip
```

#### Numpy

[NumPy](http://www.numpy.org/) is a Python package for scientific computing. It's useful for variety of computations such as linear algebra, Fourier transform, and random number capabilities.

{% hint style="info" %}
NumPy is usually inside Python distrubitions. If your Python version doesn't include NumPy, you can run ***pip install numpy*** command.&#x20;
{% endhint %}

#### Matplotlib

[Matplotlib](https://matplotlib.org/) is a library for Python to plot 2D figures in a variety of hard copy formats and interactive environments across platforms. We used Matplotlib to produce our outputs from path planning algorithm.

to install Matplotlib:

```bash
python -mpip install -U matplotlib
```

#### Shapely

[Shapely](https://pypi.org/project/Shapely/) is a Python package for manipulation and analysis of planar geometric objects. It brings great set of instances for geometric objects such as Point, LineString, or Polygons. Shapely find predicates and relationships within instances which we commonly used to find intersections or containers.

```bash
pip install Shapely
```

### Director

[Director](https://github.com/RobotLocomotion/director) is robotics interface and visualization framework developed with C++ and Python libraries and applications. Tool supports an easy integration with outsource algorithms and serves a viable environment for visualization. We used director to visualize application of our algorithm to our monitoring scenario.

Dependencies of director is as follows:&#x20;

* **Python 2.7** and **NumPy**
* **Qt4** or **Qt5**. Qt is a cross-platform application development framework.
* **VTK 6.2+,** VTK or Visualization Toolkit is an open-source software system for 3D computer graphics, image processing, and visualization.&#x20;

Additionally, we used [PythonQt](http://pythonqt.sourceforge.net/) package to bind Qt framework to our Python app.

To install director in **Ubuntu**:

```bash
// Download source files
git clone https://github.com/RobotLocomotion/director.git

cd director

// Install dependencies
sudo apt-get install build-essential cmake libglib2.0-dev libqt4-dev \
  libx11-dev libxext-dev libxt-dev python-dev python-lxml python-numpy \
  python-scipy python-yaml
  
// Build Python package
mkdir build && cd build
cmake ../distro/superbuild
make
```
