[Eigen](http://eigen.tuxfamily.org). Linear algebra, header library. Eigen 3.2 is also a depencency of ROS-Hydro. In case you don't have ROS in your machine, you can install Eigen by typing:
[Eigen](http://eigen.tuxfamily.org). Linear algebra, header library. Eigen 3.2 is also a depencency of ROS-Hydro. In case you don't have ROS in your machine, you can install Eigen by typing:
```terminal
$ sudo apt-get install libeigen3-dev
$ sudo apt-get install libeigen3-dev
```
#### Ceres (5 steps)
#### Ceres (5 steps)
[Ceres](http://www.ceres-solver.org/) is an optimization library. Currently, this dependency is optional, so the build procedure of Wolf skips part of compilation in case this dependency is not found on the system. **Installation** is desctibed at [Ceres site](http://www.ceres-solver.org/building.html). However we report here an alternative step by step procedure to install Ceres.
[Ceres](http://www.ceres-solver.org/) is an optimization library. Currently, this dependency is optional, so the build procedure of Wolf skips part of compilation in case this dependency is not found on the system. **Installation** is desctibed at [Ceres site](http://www.ceres-solver.org/building.html). However we report here an alternative step by step procedure to install Ceres.
**(1)** Skip this step if Cmake 2.8.0+ and Eigen3.0+ are already installed. Otherwise install them with *apt-get*.
**(1)** Skip this step if Cmake 2.8.0+ and Eigen3.0+ are already installed. Otherwise install them with *apt-get*.
$ sudo make install //optional in case you want to install wolf library
$ sudo make install //optional in case you want to install wolf library
```
**Set the WOLF_ROOT environment variable**
**Set the WOLF_ROOT environment variable**
We need a platform-independent way to specify where is the WOLF project, so that code can locate relevant files at run-time.
We need a platform-independent way to specify where is the WOLF project, so that code can locate relevant files at run-time.
For example, if we want to use YAML files for configuring sensors, `YAML::LoadFile(filename)` needs an absolute path to a `filename`. This name is platform-specific, and many times user-specific.
For example, if we want to use YAML files for configuring sensors, `YAML::LoadFile(filename)` needs an absolute path to a `filename`. This name is platform-specific, and many times user-specific.
Usually, these files are out of the WOLF project. But for testing purposes, some of these files exist within the WOLF directories.
Usually, these files are out of the WOLF project. But for testing purposes, some of these files exist within the WOLF directories.
Proceed as follows:
Proceed as follows:
1. To run from __Terminal__ (the default), you need to create an environment variable WOLF_ROOT pointing to where the wolf project is.
**(1)** To run from __Terminal__ (the default), you need to create an environment variable WOLF_ROOT pointing to where the wolf project is.
Edit file `~/.bashrc`, or `~/.bash_profile`, and add these lines:
Edit file `~/.bashrc`, or `~/.bash_profile`, and add this line: `export WOLF_ROOT="/abs/path/to/wolf" `
```
export WOLF_ROOT="/abs/path/to/wolf"
```
Then you need to source the file to get effect,
Then you need to source the file to get effect,
```
source ~/.bash_profile // or ~/.bashrc, of course
source ~/.bash_profile // or ~/.bashrc, of course
```
2. If you are using Eclipse or other __GUIs__ and you want this environment variable to be accessed by them, edit the file `/etc/environment` (you need to use `sudo`) and add this line:
**(2)** If you are using Eclipse or other __GUIs__ and you want this environment variable to be accessed by them, edit the file `/etc/environment` (you need to use `sudo`) and add this line:`WOLF_ROOT="/abs/path/to/wolf"`
```
Then reboot your machine.
WOLF_ROOT="/abs/path/to/wolf"
```
Then reboot your machine.
Alternatively, you can set up the environment variables in your GUIs only. Follow these guidelines:
Alternatively, you can set up the environment variables in your GUIs only. Follow these guidelines:
- If you run your application from __eclipse__, do:
- If you run your application from __eclipse__, do:
- Menu Run > Run configurations...
- Menu Run > Run configurations...
- Add, or edit, a run configuration for the executable you want to run
- Add, or edit, a run configuration for the executable you want to run
- Click on tab 'Environment'
- Click on tab 'Environment'
- Add a variable named `WOLF_ROOT`, with value `/abs/path/to/wolf`
- Add a variable named `WOLF_ROOT`, with value `/abs/path/to/wolf`
- If you run from __QtCreator__
- If you run from __QtCreator__
- Click on Left bar > Projects > Tab 'Build'
- Click on Left bar > Projects > Tab 'Build'
- Under 'Build Environment', click 'Details'
- Under 'Build Environment', click 'Details'
- Add variable `WOLF_ROOT` with value `/abs/path/to/wolf`
- Add variable `WOLF_ROOT` with value `/abs/path/to/wolf`
- Click on Tab 'Run'
- Click on Tab 'Run'
- Select your Run configuration
- Select your Run configuration
- Under 'Run Environment', make sure it says 'Use Build Environment'
- Under 'Run Environment', make sure it says 'Use Build Environment'
- If not, click on 'Details'
- If not, click on 'Details'
- Under 'Base environment for this run configuration', select 'Build Environment'
- Under 'Base environment for this run configuration', select 'Build Environment'
#### Wolf ROS Node
#### Wolf ROS Node
- Git clone the source (inside your ROS workspace):
- Git clone the source (inside your ROS workspace):