@@ -16,7 +16,7 @@ The basic Wolf structure is a tree of base classes reproducing the elements of t
...
@@ -16,7 +16,7 @@ The basic Wolf structure is a tree of base classes reproducing the elements of t
Wolf can be used within ROS for an easy integration. We provide examples of ROS nodes using Wolf. Wolf can also be used in other robotics frameworks.
Wolf can be used within ROS for an easy integration. We provide examples of ROS nodes using Wolf. Wolf can also be used in other robotics frameworks.
### Features
#### Features
- Keyframe based
- Keyframe based
- Multi-sensor
- Multi-sensor
...
@@ -26,7 +26,7 @@ Wolf can be used within ROS for an easy integration. We provide examples of ROS
...
@@ -26,7 +26,7 @@ Wolf can be used within ROS for an easy integration. We provide examples of ROS
- Built with polymorphic classes using virtual inheritance and templates.
- Built with polymorphic classes using virtual inheritance and templates.
- Solver agnostic: choose your solver and build your wrapper to Wolf.
- Solver agnostic: choose your solver and build your wrapper to Wolf.
### Some preliminary documentation
#### Some preliminary documentation
- You can visit this [Wolf inspiring document](https://docs.google.com/document/d/1_kBtvCIo33pdP59M3Ib4iEBleDDLcN6yCbmwJDBLtcA). Contact [Joan](mailto:jsola@iri.upc.edu) if you need permissions for the link.
- You can visit this [Wolf inspiring document](https://docs.google.com/document/d/1_kBtvCIo33pdP59M3Ib4iEBleDDLcN6yCbmwJDBLtcA). Contact [Joan](mailto:jsola@iri.upc.edu) if you need permissions for the link.
- You can also have a look at the [Wolf tree](https://docs.google.com/drawings/d/1jj5VVjQThddswpTPMLG2xv87vtT3o1jiMJo3Mk1Utjg), showing the organization of the main elements in the Wolf project. Contact [Andreu](mailto:acorominas@iri.upc.edu) if you need permissions for the link.
- You can also have a look at the [Wolf tree](https://docs.google.com/drawings/d/1jj5VVjQThddswpTPMLG2xv87vtT3o1jiMJo3Mk1Utjg), showing the organization of the main elements in the Wolf project. Contact [Andreu](mailto:acorominas@iri.upc.edu) if you need permissions for the link.
...
@@ -37,250 +37,301 @@ Dependencies
...
@@ -37,250 +37,301 @@ Dependencies
! Please notice that we are detailing two installation procedures below. If you are familiar with `ROS` and more especially the [`catkin_tools`](https://catkin-tools.readthedocs.io/en/latest/index.html) package then you may jump directly to the 'Using the `catkin_tools` package' section.
! Please notice that we are detailing two installation procedures below. If you are familiar with `ROS` and more especially the [`catkin_tools`](https://catkin-tools.readthedocs.io/en/latest/index.html) package then you may jump directly to the 'Using the `catkin_tools` package' section.
### Eigen
#### Eigen
[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:
$ sudo apt-get install libeigen3-dev
```terminal
$ 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 these lines:
export WOLF_ROOT="/abs/path/to/wolf"
```
```
export WOLF_ROOT="/abs/path/to/wolf"
* Then you need to source the file to get effect,
```
```
source ~/.bash_profile // or ~/.bashrc, of course
Then you need to source the file to get effect,
```
```
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:
source ~/.bash_profile // or ~/.bashrc, of course
```
```
WOLF_ROOT="/abs/path/to/wolf"
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:
```
Then reboot your machine.
```
Alternatively, you can set up the environment variables in your GUIs only. Follow these guidelines:
WOLF_ROOT="/abs/path/to/wolf"
- If you run your application from __eclipse__, do:
```
- Menu Run > Run configurations...
Then reboot your machine.
- Add, or edit, a run configuration for the executable you want to run
- Click on tab 'Environment'
Alternatively, you can set up the environment variables in your GUIs only. Follow these guidelines:
- Add a variable named `WOLF_ROOT`, with value `/abs/path/to/wolf`
- If you run from __QtCreator__
- If you run your application from __eclipse__, do:
- Click on Left bar > Projects > Tab 'Build'
- Menu Run > Run configurations...
- Under 'Build Environment', click 'Details'
- Add, or edit, a run configuration for the executable you want to run
- Add variable `WOLF_ROOT` with value `/abs/path/to/wolf`
- Click on tab 'Environment'
- Click on Tab 'Run'
- Add a variable named `WOLF_ROOT`, with value `/abs/path/to/wolf`
- Select your Run configuration
- Under 'Run Environment', make sure it says 'Use Build Environment'
- If you run from __QtCreator__
- If not, click on 'Details'
- Click on Left bar > Projects > Tab 'Build'
- Under 'Build Environment', click 'Details'
- Add variable `WOLF_ROOT` with value `/abs/path/to/wolf`
- Click on Tab 'Run'
- Select your Run configuration
- Under 'Run Environment', make sure it says 'Use Build Environment'
- 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'